殷人昆《实用软件工程》复习资料

合集下载

清华大学殷仁昆教授讲授《软件工程》讲义

清华大学殷仁昆教授讲授《软件工程》讲义
e) 模块保护 将模块内出现异常情况的影响 范围限制在模块内部;
5) 设计应遵循信息隐蔽的原则。
✓ Patnas主张在开发时,将每个程序的成分隐 藏在模块内,定义每一个模块时尽可能少地 显露其内部的处理。
2020/5/4
软件工程
14
✓ 每个模块的实现细节对于其它模块是隐蔽的, 将来修改软件时偶然引入错误所造成的影响 就可以局限在一个或几个模块内部,不致波 及到软件的其它部分。
内聚性:内聚是一个模块内部各个元素彼此结 合的紧密程度的度量。
② 设计应当模块化。
2020/5/4
软件工程
8
③ 设计应当包含数据、体系结构、接口和构件 (模块)的清晰的视图。
④ 设计应当根据将要实现的对象和数据模式导出 合适的数据结构。
⑤ 设计应当建立具有独立功能特征的构件。 ⑥ 设计应当建立能够降低模块与外部环境之间复
杂连接的接口。 ⑦ 设计模型应当通过使用软件需求信息所驱动的
⑤ 设计结果应能适应未来可能的变更;
⑥ 设计不是编码,编码也不是设计。设计模型 的抽象级别比源代码高。在编码级别上唯一 的设计决策是补充一些实现细节。
2020/5/4
软件工程
10
⑦ 设计应具有容错性和异常处理能力。对于异 常数据、事件、操作条件等能够平滑处理。
⑧ 在建立设计方案时就应能评估设计质量,而 不是在系统编码之后。
求,必须满足用户希望的所有隐式需求。
2020/5/4
软件工程
7
① 对于开发者和未来的维护者而言,设计必须 是可读的、可理解的,使得将来易于编程、 易于测试、易于维护。
② 设计应该给出软件的全貌,包括从实现角度 可看到的数据、功能、行为。
衡量设计模型的技术原则 ① 设计模型应该是一个分层结构。该结构: ✓ 使用可识别的设计模式搭建系统结构。 ✓ 用显示良好设计特征的构件构成。 ✓ 可以用演化的方式实现。

实用软件工程(第二版)1、2章

实用软件工程(第二版)1、2章
“人月神化”现象——生产力与人数并不成正比。
1.3 软件工程
• 1.3.1 软件工程的概念
– IEEE对软件工程的定义为:
• 1)将系统化、严格约束的、可量化的方法应用于软件的开发、运行 和维护,即将工程化应用于软件
• 2)对1)中所述方法的研究
– 具体说来,软件工程是以借鉴传统工程的原则、方法, 以提高质量,降低成本为目的指导计算机软件开发和维 护的工程学科。它是一种层次化的技术
特点: 1)具有抽象性 2)无明显的制造过程 3)存在退化问题 4)对计算机系统有着不同程度的依赖性 5)尚未完全摆脱人工的开发方式 6)软件本身是复杂的 7)成本相当昂贵 8)相当多的软件工作涉及社会因素
1.1 软件
• 1.1.2 软件的分类
1.2 软件危机
• 1.2.1 软件危机的表现与原因
• 过程定义了运用方法的顺序,应该交付的文档资料,为保证软件质量和协调 变化所需要采取的管理措施,以及标志软件开发各个阶段任务完成的里程碑。 通常,使用生命周期模型简洁地描述软件过程。生命周期模型规定了把生命 周期划分为哪些阶段及各个阶段的执行顺序,因此也称为过程模型
2.2 软件生命周期
• 2.2.1 软件生命周期的概念
1.3 软件工程
• 1.3.4 软件工程知识体系
– IEEE在2014年发布的《软件工程知识体系指南》中将 软件工程知识体系划分为以下15个知识领域。
1.软件需求 2.软件设计 3.软件构建 4.软件测试 5.软件维护 6.软件配置管理 7.软件工程管理 8.软件工程过程
9.软件工程模型和方法 10.软件质量 11.软件工程职业实践 12.软件工程经济学 13.计算基础 14.数学基础 15.工程基础
– 软件工程要达到的基本目标包括:

(完整word版)殷人昆《实用软件工程》复习资料

(完整word版)殷人昆《实用软件工程》复习资料

1.软件工程目标:正确性、可用性、适合销售活动:需求、设计、实现、V&V(验证与确认)、支持原则:开发泛型、设计方法、支持工具、工程管理WW软件工程是开发,运行,维护和修复软件的系统方法,将系统化的,规范的,可度量的方法应用与软件的开发,运行维护的过程。

即将工程化应用于软件中。

2.软件过程中的基本活动(pdca)1.软件规格说明plan2.软件开发do3.软件确认check4.软件演进action3.瀑布模型:需求-》系统设计-》实现单元测试-》集成与系统测试-》运营维护。

他的显著特点是顺序性和依赖性。

4.演化模型:软件通过不断的演化才能完成和完善,其显著特点是迭代。

适合于业务和需求不断变更的开发过程,交付部分功能给客户,确认需求,逐步完善。

5.螺旋模型:将瀑布模型和演化模型结合起来,加入了风险分析。

6.增量模型:是将软件分解成一系列的增量的构件,在增量开发迭代中逐步加入,也叫极限程序设计。

7.软件工程原则:a)抽象自顶向下,逐层细化b)模块化的开发方法c)信息隐蔽和数据封装。

d)局部化e)一致性f)完备性g)可验证性8.软件工程基本原理:a)按软件生存期分阶段制定计划并认真实施b)坚持进行阶段评审c)坚持严格的产品控制d)使用现代程序设计技术e)明确责任f)用人少而精g)不断改进开发的过程9.识别用户要求,必须考虑的问题:a)功能和性能b)可靠性和质量c)总的系统目标d)成本与进度的把控e)制造需求f)市场竞争情况g)有效的技术h)将来可能的扩展10.可行性研究a)问题识别b)市场调查c)分析准备d)环境分析e)物理分析f)功能分析g)信息分析h)动态分析i)确立系统方案和成本估算j)模型评审k)成本可行性l)法律可行性11.面向对象设计面向对象=对象+分类+继承+消息通信,基本组成部分叫对象,计算是通过新对象的确立和对象之间的通信来执行。

相对于面向过程开发,核心:数据被封装在对象中,而不是全局变量中,数据流是通过消息传递,而不是面向过程解决办法。

816-实用软件工程

816-实用软件工程

Software Crisis !
问题出在哪里?
⑴ 项目没有被很好地理解;计划不周,最终导致进度拖 延。
例1. In the late 1960s, a bright-eyed young engineer* was
chosen to “write” a computer program for an automated manufacturing application. The reason for his selection was simple. He was the only person in his technical group who had attended a computer programming seminar. He knew the in’s and out’s of assembler language and Fortran, but nothing about software engineering and even less about project scheduling and tracking.
A week later the boss called the engineer into his office and asked, “Where are we?” “Everything’s going well,” said the youngster, “but I’ve run into a few small snags. I’ll get them ironed out and be back on track soon.” “How does the deadline look?” the boss asked. “No problem,” said the engineer. “I’m close to 90 percent complete.” If you’ve been working in the software world for more than a few years, you can finish the story. It’ll come as no surprise that the young engineer stayed 90 percent complete for the entire project duration and only finished (with the help of others) one month late.

软件工程期末考试重点

软件工程期末考试重点

《软件工程》期末复习重点第一章软件工程1.什么是软件工程。

A.把系统化的、规范的、可度量的途径应用于软件开发、运行和维护的过程,也就是把工程化应用于软件中;b.研究a中提到的途径。

2. 软件工程的三要素:方法、工具和过程。

第二章软件过程1.软件生命周期分为哪几个阶段?每个阶段的基本任务是什么?a.软件定义:确定软件开发工程必须完成的总目标问题定义:要解决的问题是什么可行性研究:上阶段所确定的问题是否有可行的解决办法?需求分析:目标系统必须做什么b.软件开发:具体设计和实现在前一个时期定义的软件。

概要设计:怎样宏观地解决问题详细设计:应如何具体地实现这个系统编码和单元测试:写出正确的、易理解、易维护的程序综合测试:通过各类型测试使达到预定要求。

c.运行维护:修正错误,使软件持久地满足用户需要。

改正性维护:诊断和改正使用中的错误适应性维护:修改以适应环境变化完善性维护:根据用户的要求改进和扩充以完善预防性维护:修改以为将来的维护作准备2.常用的过程模型有哪些?各自的特点及不足。

如:瀑布模型的不足是不能适应需求的动态变更。

A.瀑布模型特点:可强迫开发人员采用规范化的方法。

严格地规定了每个阶段必须提交的文档。

要求每个阶段交出的所有产品都必须是经过验证(评审)的。

缺点:太理想化,由于瀑布模型几乎完全依赖于书面的规格说明,很可能导致最终开发出的软件产品不能真正满足用户的需要。

如果需求规格与用户需求之间有差异,就会发生这种情况。

只适用于项目开始时需求已确定的情况。

B.快速原型模型特点:快速软件产品开发基本上是线性顺序进行。

降低了规格说明文档变化的可能性。

减少了后续阶段错误的可能性。

c.增量模型优点:人员分配灵活,刚开始不用投入大量人力资源。

当配备的人员不能在设定的期限内完成产品时,它提供了一种先推出核心产品的途径。

增量能够有计划地管理技术风险。

缺点:要求构件具备开放式的体系结构。

易退化为边做边改模型,从而使软件过程的控制失去整体性。

《软件工程》复习提纲

《软件工程》复习提纲

《软件工程》复习提纲一一、、 授授课课的的主主要要内内容容11.. 基基本本概概念念((11)) 有有关关““软软件件工工程程””的的基基本本概概念念11))软软件件工工程程的的诞诞生生那是1968……22))软软件件危危机机计计算算机机软软件件开开发发和和软软件件维维护护过过程程中中所所遇遇到到的的一一系系列列严严重重问问题题统统称称为为““软软件件危危机机””。

概括地说,软件危机包含两方面的问题:一是如何开发软件,怎样满足人们对软件日益增长的需求?二是如何维护软件,使它们持久地满足人们的要求。

33))软软件件包含与数据处理系统操作有关的程序、规程、规则以及相关文档的智力创作称为软件(计算机)。

文档是描述程序开发过程的,是智力创作的真实记录,是创作活动的历史档案和结晶。

软软件件由由计计算算机机程程序序,,数数据据结结构构和和文文档档组组成成。

计算机程序执行特定的功能;数据结构是程序运行所需的数据;文档是描述程序开发、使用和维护的资料。

44)) 软软件件工工程程的的概概念念采采用用工工程程学学的的原原理理来来管管理理和和从从事事软软件件的的开开发发和和软软件件维维护护,,称称为为软软件件工工程程。

(工程学:系统化、规范化、数量化)55))软软件件质质量量的的基基本本概概念念(a )软件质量的定义与软件产品满足规定的和隐含的需求能力有关的特征和特性的全体。

具体来说:1)软件产品中能满足给定需求的性质和特性的总体;2)软件具有所期望的各种属性的组合程度。

(b )软件质量特性(1)功能性:当软件在指定条件下使用时,软件产品提供满足明确和隐含要求的功能的能力。

(2)可靠性:在指定条件下使用时,软件产品维持规定的性能级别的能力。

(3)易用性:在指定条件下使用时,软件产品被理解、学习、使用和吸引用户的能力。

(4)效 率:在规定条件下,相对于所用资源的数量,软件产品可提供适当性能的能力。

(5)维护性:软件产品可被修改的能力。

常用的一些参考文献

常用的一些参考文献

计算机论文常用的一些参考文献学生根据自己选择的开发工具,来选择以下参考文献填写在任务书中要求阅读或检索的参考资料及文献那一栏。

主要参考文献[1]刘韬,楼兴华.SQL Server2000数据库系统开发实例导航.北京:人民邮电出版社,2004.[2]丁宝康,董健全.数据库实验教程.北京:清华大学出版社,2003[3]孙强.基于的专题网站的研究与设计.东北师范大学,2006.[4]Michele Leroux Bustamants.Secure your Apps and WCF services with Windows CardSpace.MSDN Magazine,April2007.[5]肖建编编程实例与技巧集粹.北京:北京希望电子出版社,2003.[6]巴兹拉等安全性高级编程.北京:清华大学出版社,2003.[7]Jesse Libert.Programming C#中文版.电子工业出版社,2006.[8]米切尔的等编著权威指南.北京:中国电力出版社,2003.[9]曾登高编著系统架构与开发.北京:电子工业出版社,2003.[10]Jeffrey Richter.Applied Framework programming.北京:清华大学出版社,2003.[11]张海藩.软件工程导论.北京:清华大学出版社,2003.[1]周佩德.数据库原理及应用〔M〕.北京:电子工业出版社,2004.[2]刘炳文等.VISUAL BASIC程序设计——数据库篇〔M〕.北京:人民邮电出版社,1999.[3]李光明.Visual Basic6.0编程实例大制作〔M〕.北京:冶金工业出版社,2002.[4]王兴晶,赵万军等.Visual Basic软件项目开发实例[M].北京:电子工业出版社,2004.[5]陈艳峰,高文姬等.Visual basic数据库项目案例导航[M].北京:清华大学出版社,2004.[6]李红等.管理信息系统开发与应用〔M〕.北京:电子工业出版社,2003.[7]周之英.现代软件工程〔M〕.北京:科学出版社,2000.[8]张红军,王红.Visual Basic6.0中文版高级应用与开发指南〔M〕.北京:人民邮电出版社,2001.[9]林立军,程斌,翁迪恩.Visual Basic6.0数据库开发指南〔M〕.西安:西安电子科技大学出版社,2000.[10]张宏林,孔艳,王哲.按实例学Visual Basic6.0〔M〕.北京:人民邮电出版社,2000.[11]宋伟,吴建国等.中文Visual Basic6.0编程基础〔M〕.北京:清华大学出版社,2000.[1]陶宏才.数据库原理与设计[M].北京,清华大学出版社.2005.[2]董翔英.Access基础教程[M].北京:科学出版社,2005.[3]王兴晶,赵万军等.Visual Basic软件项目开发实例[M].北京:电子工业出版社,2004.[4]陈艳峰,高文姬等.Visual basic数据库项目案例导航[M].北京:清华大学出版社,2004.[5]李红.管理信息系统开发与应用〔M〕.北京:电子工业出版社,2003.[6]周之英.现代软件工程〔M〕.北京:科学出版社,2000.[7]张红军,王红.Visual Basic6.0中文版高级应用与开发指南〔M〕.北京:人民邮电出版社,2001.[8]林立军,程斌,翁迪恩.Visual Basic6.0数据库开发指南〔M〕.西安:西安电子科技大学出版社,2000.[9]张宏林,孔艳,王哲.按实例学Visual Basic6.0〔M〕.北京:人民邮电出版社,2000.[10]宋伟,吴建国等.中文Visual Basic6.0编程基础〔M〕.北京:清华大学出版社,2000.[1]郑阿奇.SQL Server实用教程(第2版)[M].北京:电子工业出版社,2005.[2]王珊,萨师煊.数据库系统概论(第四版)[M].北京:高等教育出版社,2006.[3]金旭亮,吴彬.网站建设教程[M].北京:人民邮电出版社,2003.[4]李长林.+SQL Server动态网站开发与实例[M].北京:清华大学出版社,2006.[5]求是科技.数据库管理系统开发实例导航[M].北京:人民邮电出版社,2004.[6]张海藩.软件工程(第二版)[M].北京:人民邮电出版社,2006.[7]张欣.Microsoft SQL Server2000Reporting Services[M].北京:清华大学出版社,2005.[8]郑人杰,殷人昆,陶永雷.实用软件工程(第二版)[M].北京:清华大学出版社,1997.[9]刘小伟,王萍.与SQL Server网站开发实用教程[M].北京:电子工业出版社,2006.[10]龚赤兵.2.0网站开发实例教程[M].北京:人民邮电出版社,2005.[11]Darie,Cristian,Zak Ruvalcaba.Build your own 2.0web site using C#&VB2d ed.SciTech Book News,2006.[12]Michele Leroux Bustamants.Secure your Apps and WCF services with Windows CardSpace.MSDN Magazine,April2007.[1]万峰科技网站开发四[酷]全书[J].图书情报知识,2005,(5).[2]郭瑞军数据库开发实例精粹[M].北京:中国电子出版社,2002.[3]邓文渊网络数据库技术[M].西安:中国铁道出版社,2005.[4]刁仁宏.网络数据库原理及应用[J].情报理论与实践,2004,(1).[5]张莉,王强.SQL Server数据库原理及应用教程[M].清华:清华大学出版社出版,2003.[6]郭瑞军,李杰,初晓璐数据库开发实例精粹[M].西安:电子工业出版社出版,2003.[7]宋昕网络开发技术实用教程入门与提高[J].情报杂志,2005,(7).[8]顼宇峰+SQL Server典型网站建设案例[M].清华:清华大学出版社出版,2006.)1〕张桂珠,刘丽,陈爱国.Java面向对象程序设计(第2版)[M].北京:邮电大学出版社,2005.〔2〕毕广吉.Java程序设计实例教程[M].北京:冶金工业出版社,2007.〔3〕王保罗.Java面向对象程序设计[M].北京:清华大学出版社,2003.〔4〕高林,周海燕.管理信息系统与案例分析[M].北京:人民邮电出版社,2004.〔5〕刘腾红,孙细明.信息系统分析与设计[M].北京:科学出版社,2003.[6]马朝晖,陈美红译.Java语言学导论[M].北京:机械工业出版社,2003.[7]何玉洁,梁琦.数据库设计教程[M].北京:机械工业出版社,2003.〔1〕郑阿奇.SQL Server实用教程.北京:电子工业出版社,2007.7〔2〕戴志诚.SQL Server2005数据库系统开发与实例.北京:电子工业出版社,2007.3〔3〕陆力斌.企业管理学.哈尔滨:哈尔滨工业大学出版社,2005.〔4〕郑人杰、殷人昆.实用软件工程.北京:清华大学出版社,1997.4〔5〕王珊,萨师煊.数据库系统概论.北京:高等教育出版社,2006.5〔6〕孙更新,吕婕.Java毕业设计指南与项目实践.北京:科学出版社,2008.〔7〕陈俞.信息系统分析与设计.北京:高等教育出版社,2005.〔8〕刘志成.SQL Server2005实例教程.北京:电子工业出版社,2008.〔9〕光军,胡波.JSP应用开发高级教程.北京:北京航空航天出版社,2007.〔10〕吴葳,洪炳熔.JavaBean高级讲解.北京:上海人民出版社,1997.〔11〕杨飞辰.基于Web的人事管理系统.北京:科技情报开发与经济出版社,2005.〔12〕苗春义.Java项目开发全程实录.北京:清华大学出版社,2008.6〔13〕潘浩,李芙玲.Java程序设计.北京:北京交通大学出版社,2005.11[1]刘亚秋,梁心东,蒋力等.C#程序设计与应用[M].北京:电子工业出版社,2002.[2]王昊亮,李刚等.Visual C#程序设计教程[M].北京:清华大学出版社,2003.[3]明月创作室.Visual C#编程精彩百例[M].北京:人民邮电出版社,2001.[4]美国微软公司.Visual C#2005软件的帮助信息[M].2005.[5]孙永强等.Visual C#.NET入门与提高[M].北京:清华大学出版社,2002.[6]王要武.管理系统开发[M].北京:电子工业出版社,2003.[7]李红等编著,管理信息系统开发与应用[M].北京:电子工业出版社,2003.[8]郭胜等.C#.NET程序设计教程[M].北京:清华大学出版社,2002.[9]康博工作室,张红军,王红等缟著Microsoft Visual Studio20056.0中文版高级应用与开发指南[M].北京:人民邮电出版社,2001.[10]林立军,程斌,翁迪恩缟著Microsoft Visual Studio20056.0数据库开发指南[M].西安:西安电子科技大学出版社,2000.[11]张宏林,孔艳,王哲等编著.按实例学Microsoft Visual Studio20056.0[M].北京:人民邮电出版社,2000.[12]宋伟,吴建国等编著.中文Microsoft Visual Studio20056.0编程基础[M].北京:清华大学出版社,2005.------------------------------------------------LINUX-------------------------------------------------------------参考文献[1]林慧琛《Red hat Linux服务器配置与应用》人民邮电出版社2006.1[2]岳浩《Linux操作系统教程》机械工业出版社2005.4[3]刘志国《练就Linux系统高手教程》延边出版社2006.1[4]社大鹏《Red hat Linux因特网服务器》中国水利水电出版社2004.2[5]毛德操胡希明《Linux内核源代码情景分析》[6]《Linux内核设计与实现(第2版)》(Robert Love著,机械工业出版社出版译著)[7]骆耀祖,刘远东,骆珍仪.Linux网络服务器管理教程.北京:电子工业出版社,2007.166~167[8]李洋,汪虎松.Red Hat Linux9系统与网络管理教程.北京:电子工业出版社,2006.248~263[9]冉林仓.Red Hat Linux9编程开发与网络管理.北京:电子工业出版社,2006.171~192[10]李成大.操作系统—Linux篇.北京:人民邮电出版社,2005[11]柳青.Linux应用教程.北京:清华大学出版社,2008[12]邱世华.Linux操作系统之奥秘.北京:电子工业出版社,2008-----------------------------------------------JAV A---------------------------------------------------------参考文献:[1]Eric.Java编程思想[M].第4版.机械工业出版社,机械工业出版社.[2]杜波依斯.MySQL技术内幕[M].第4版.人民邮电出版社,2011年07月.[3]林信良.JSP&Servlet学习笔记[M].清华大学出版社,2012年05月.[4]张峋,杨三成.关键技术:JSP与JDBC应用详解[M].中国铁道出版社,2010年11月.[5]张银鹤.点石成金:JSP+Ajax网站开发典型实例[M].电子工业出版社,2009年01月.[6]Weiss,MA.数据结构与算法分析:Java语言描述[M].第2版.机械工业出版社,2009年01月.[7]Metsker S J.Java设计模式[M].第2版.电子工业出版社,2012年09月.[8]孙卫琴.Tomcat与Java Web开发技术详解[M].第2版.电子工业出版社,2009年01月.[9]刘京华等.Java Web整合开发王者归来[M].清华大学出版社,2010年01月.[10]贺松平.基于MVC模式的B/S架构的研究及应用[D].武汉:华中科技大学,2006年4月[11]毕建信.基于MVC设计模式的Web应用研究与实现[D].武汉:武汉理工大学,2006年5月.[10]陈刚.Eclipse从入门到精通[M].北京:清华大学出版社,2005年4月.[11]清宏计算机工作室.《JSP编程技巧》.机械工业出版社,2004年5月.[12]萨师煊,王珊.《数据库系统概论》.高等教育出版社,2002年2月.[13]温谦.HTML+CSS网页设计与布局从入门到精通[M].人民邮电出版社,2008年08月.[14]刘晓义.XML技术及应用[M].哈尔滨工程大学出版社,2011年06月.[15]赵俊峰等.Java Web应用开发案例教程:基于MVC模式的JSP+Servlet+JDBC和AJAX[M].清华大学出版社,2012年01月.[1]冯燕奎,赵德奎.JSP实用案例教程[M]清华大学出版社,2004,5:70-100[2]王家华软件工程[M]东北大学出版社2001年3月303页[3]王宜贵软件工程[M]北京:机械工业出版社,2002:20-79[4]孙卫琴精通struts[M]电子工业出版社2004年8月50-70[5]孙卫琴精通hibernate[M]电子工业出版社2005年4月100-120[6]张洪斌java2高级程序设计[M]中科多媒体出版社2001年11月85-90[7]Jim Arlow UML2.0and the Unified Process[M]机械工业出版社2006年6月30-40[9]熊节、林仪明、张凯峰、陈玉泉等主编[《CSDN社区电子杂志——Java杂志》创刊号][10]《程序员》杂志2007年第4期[11]耿祥义编著.JSP基础编程[M].清华大学出版社,2004.55-162[12]徐建波,周新莲.Web设计原理于编程技术[M].中南大学出版社,2005.185-193[13]孙鑫编著.Java Web开发详解[M].电子工业出版社,2006.189-274[14]林上杰,林康司编著.JSP2.0技术手册[M].电子工业出版社,2004.3-6[15]萨师煊,王珊.数据库系统概论(第三版)[M].北京:高等教育出版社,1998.[16]蔡剑,景楠.Java Web应用开发:J2EE和Tomcat[M].北京:清华大学出版社,2004.[1]王海涛,-贾宗璞.基于Struts和Hibernate的Web应用开发[J].计算机工程,2011,37(9):113.[2]傅鹏,殷旻昊.基于Structs+Spring+Hibernate+Ajax技术的科研管理系统设计[J].软件导刊,2009,8(1):135-136.[3]龚瑜江,红黄永.基于Struts的Web开发[J].计算机与数字工程,2009,37(232):58-62.[4]李峰,刘彦隆.基于SSH框架与jquery技术的Java Web开发应用[J].科技情报开发与经济,2010,20(6):106-109.[5]赵洋,张丽,王恩东,张素宁.基于Structs+Spring+Hibernate的J2EE的架构研究[J].现代电子技术,2009,2(289):107-110.[6]许川佩,张民,张婧.基于Ajax的J2EE安全应用框架[J].计算机工程,2010,36(4):110-111.[7]陈正举.基于HIRBERNATE的数据库访问优化[J].计算机应用与软件,2012,29(7):145-149.[8]李宁,李战怀.基于黑盒测试的软件测试策略研究与实现[J].计算机应用研究2009,26(3):924-926.[9]Zoya Ali.Designing Object Oriented Software Applications within the Context of Software Frameworks[D].Ohio State University,2011.[10]Rachit Mohan Garg,YaminiSood,Balaji Kottana,Pallavi Totlani.A Framework Based Appro ach for the Development of Web Based Applications Waknaghat[J].Jaypee University of Informat ion Technology,2011,1(1):1-4.[10]《程序员》杂志2007年第4期[1]飞思科技产品研发中心,《JSP应用开发详解(第二版)》,北京:电子工业出版社,2004。

《软件工程》复习材料

《软件工程》复习材料

一、写出下列缩写英文的中文涵义CFD DFD OOA SA SD SP CMM CMMI UML CASE XP C/S B/SATAM PDL SQA MVC CRC MBS CBSD GUI SQL MTTR MTTFMTBF FTR PERT SCM CPM RMMP二、概念[1] 在《计算机科学技术百科全书中》,对计算机软件作出如下定义:计算机软件指计算机系统中的程序和文档,前者是计算任务的处理对象和处理规则的描述;后者是为了便于了解程序所需的阐述性资料。

[2] 软件和硬件具有完成不同的特性,软件是设计开发的,而不是传统意义上生产制造的。

[3] 软件工程是一种层次化技术,是建立在以质量焦点为基础的,分过程、方法、工具三个研究层次的综合技术。

[4] 软件工程是应用计算机科学、数学及管理学等原理,开发软件的工程,其框架可概括为:目标、过程和原则。

[5] 结构化设计方法中,要把数据流图转换成软件结构,若某个加工将它的输入流分离成许多发散的数据流,形成许多加工路径,并根据输入的值选择其中一个路径来执行,这种特征的DFD称为事务型的数据流图。

[6] 数据流图仅反映系统必须完成的逻辑功能,所以它是一种功能模型。

[7]耦合性是定性度量模块独立性的标准之一,它根据模块的外部特征提出的,是对软件系统结构中各模块间相互联系紧密程度的一种度量,也称块间关系。

[8] 衡量软件的独立性有两个定性的度量标准,即耦合和内聚。

[9] 任何程序都可由选择结构、循环结构和顺序结构3种基本控制结构构造,其共同点是单入口、单出口。

[10] 统一过程(UP)是一种用例驱动的迭代式增量开发过程,每次迭代过程中主要的工作流包括捕获需求、分析、设计、实现和测试等,这种软件过程的用例图式通过分析得到。

[11] 软件开发是一个自顶向下逐步细化和求精过程,而软件测试是一个自底向上或相反顺序集成的过程。

[12] 软件测试的目的是尽可能多地发现软件中存在的错误,将测试结果作为纠错的依据。

实用软件工程第3版课后习题答案-IT168文库

实用软件工程第3版课后习题答案-IT168文库

《实用软件工程》第3版习题参考答案习题 11.1 开发文档都有哪些?用图示表示它们之间的关系。

开发文档包括目标程序、源程序、详细设计说明书、概要设计说明书、需求规格说明书、用户需求报告、软件合同,它们之间的关系如下图所示。

1.2 简述软件工程研究的内容。

软件工程研究的内容包括软件开发方法、软件开发模型、软件支持过程和软件管理过程。

其中软件开发方法的内容又涵盖市场调研、正式立项、需求分析、项目策划、概要设计、详细设计、编程、测试、试运行、产品发布、用户培训、产品复制、销售、实施、系统维护、版本升级。

常用的软件开发模型有瀑布模型、迭代模型、增量模型和原型模型。

软件支持过程由所支持的CASE工具组成,常用的CASE工具有Power Designer和Rational Rose。

软件管理过程主要有CMMI、ISO9000、微软企业文化和敏捷文化现象。

1.3 详细解释软件的定义、程序的定义及软件工程的定义。

软件的定义:软件=程序+数据+文档。

这里的程序是指程序系统。

这里的数据不仅包括初始化数据、测试数据,而且包括研发数据、运行数据、维护数据,也包括软件企业积累的项目工程数据和项目管理数据中的大量决策原始记录数据。

这里的文档指的是软件开发过程中的分析、设计、实现、测试、维护文档、管理文档。

现在有一种新提法正在引起关注,这种提法是:软件=知识+程序+数据+文档。

程序是计算机为完成特定任务而执行的指令的有序集合。

从应用的角度可理解为:面向过程的程序=算法+数据结构面向对象的程序=对象+信息面向构件的程序=构件+构架软件工程是研究软件开发和软件管理的一门工程学科。

1.4 软件工程的7+1条基本原理有什么现实意义?软件工程的7条基本原理是在面向过程的程序设计时代(结构化时代)提出来的,但在面向数据和面向对象的程序设计的今天,它仍然有效。

并且在军事上的实时跟踪监控系统中有很好的应用,而且随着软件的开发和管理的进步,它将不断完善和充实。

软件工程复习资料-完整版

软件工程复习资料-完整版

一、选择题:1、用例图中,用来表示用例的符号为( B ) 。

2、协作图中包含的元素包括(A ) 。

A. 对象 B. 链 C. 激活 D. 消息3、在类图中,哪种关系表达整体与部分的关系( D ) 。

A .泛化 B. 实现 C. 依赖 D. 聚合4、下列各种图形符号中,用来表示组成关系的符号为 (B )。

A. B. C. D.5 、(A )工具在软件的详细设计中不能使用。

A . DFD B. N-S 图 C. 流程图 D. PDL6 、 “软件危机”是指 (C )。

A. 计算机病毒的出现B. 利用计算机进行经济犯罪活动C. 软件开发和维护中出现的一系列问题D. 人们过分迷恋计算机系统7 、 快速原型是利用原型辅助软件开发的一种新思想,它是在研究 (A )的方法和技术中产生 的。

A. 需求阶段B. 设计阶段C. 测试阶段D. 软件开发的各个阶段8、从严格意义上讲,下列 4 个选项中属于顺序图的元素是(ABCD ) 。

A.对象B. 参与者C. 消息D. 激活9、下列 UML 图形中, (ABCD )属于 UML 的动态视图。

A. 协作图B. 状态图C. 活动图D. 顺序图10、数据字典是软件需求分析阶段的最重要的工具之一,其最基本的功能是( D ) 。

A. 数据库设计B. 数据通信C. 数据关系描述D. 数据定义11、详细设计与概要设计衔接的图形工具是 (D )。

A. DFD 图B. 程序图C. PAD 图D. SC 图12 、UML 中,大多数建模者把节点分为(AC )A . 设备 B. 构件 C. 处理器 D. 显示器13 、(C)是一种特殊形式的状态机,用于对计算流程和工作流程建模。

A .时间图 B. 流程图 C. 活动图 D. 状态图14 、(A )描述从状态到状态的控制流程,常用来对系统的动态特征进行建模。

A. 状态图B. 序列图C. 协作图D. 活动图15、下列特点属于描述用例的特点的是( D ) 。

软件工程复习题(《实用软件工程(第二版)陆慧恩 张成姝编著 清华大学出版社》)

软件工程复习题(《实用软件工程(第二版)陆慧恩 张成姝编著 清华大学出版社》)

1.什么叫文档?(P1)文档是确定软件生产各个阶段必须完成的有关计算机程序功能、设计和使用的文字或图形资料。

2.什么叫软件?软件和程序的区别是什么?(P4)软件是计算机程序及其有关数据和文档的完整集合。

程序是能够完成预定功能的可执行的指令序列。

而软件=程序+文档。

3.软件工程方法学的三个要素是什么?各个要素的作用是什么?(P4)三个要素:方法、工具和过程。

方法:完成软件开发任务的技术方法。

工具:为方法的运用提供自动或半自动的软件支撑环境。

过程:规定了完成任务的工作阶段、工作内容、产品、验收的步骤和完成准则。

4.瀑布模型把软件生命周期分为那几个时期?有分为那几个阶段?(P9)分为三个时期:计划时期、开发时期、运行时期计划时期可分为:问题定义、可行性研究、需求分析开发时期可分为:概要设计、详细设计、软件实现、软件测试运行时期:运行维护5.软件工程学的主要内容是什么?(P4)是软件开发技术和软件工程管理。

6.软件开发模型有哪些?(P9)总体来说包括传统的瀑布模型和后来兴起的快速原型模型具体分为瀑布模型、快速原型模型、增量模型、喷泉模型、螺旋模型和统一模型7.可行性研究包括哪几个方面?各包括那些内容?(P20)包括技术方面、经济方面、社会因素方面(1)技术可行性是指对设备条件、技术解决方案的实用性和技术资源的可用性的度量。

(2)经济可行性是指希望以最小的成本开发出具有最佳的经济效益的软件产品。

其内容如下:<1> 支出<2>收益<3>收益/投资比<4> 投资回收周期<5> 敏感度分析(3)社会因素方面的可行性主要从法律、用户等方面分析可行性。

8.需求分析有什么必要?在这一阶段常绘制那些图形?(P22)需求分析的基本任务是软件人员和用户一起完全弄清用户对系统的确切要求。

需求分析的结果是否正确,关系到软件开发的成败,正确的需求分析是整个系统开发的基础。

《实用软件工程方法》复习题及答案

《实用软件工程方法》复习题及答案

《实用软件工程方法》复习题及答案考试题型•不定项选择(有一个或者多个选项)20题,每个2分判断题 10题,每个1分•判断题•简答题5题,每题10分考试范围•MSF的小组模型图,每个角色簇的目标、功能域和相应的职责。

•MSF的过程模型图,并简单描述这些阶段的主要活动以及主要里程碑•MSF的风险管理过程图,并作简单阐述的风险管理过程图,并作简单阐述零缺点理念的指导原则和实施•零缺点理念的指导原则和实施•企业体系结构的模型图,并描述各个视角的相互关系•MSF的平衡三角形是变更控制有用的工具,它可以帮助在可控的方式下协调变更,平衡三角形模型并解释三个边之间的关系。

对缺陷是如何进行管理和跟踪的。

•MSF对缺陷是如何进行管理和跟踪的。

一、不定项选择(有一个或者多个选项)[20题,每个2分]1.以下哪些属于应用软件的开发活动以下哪些属于应用软件的开发活动 (P3)A. 软件构造B. 软件维护软件维护C. 软件需求D. 软件设计E. 软件测试2.小王所在的团队所负责的项目正处于软件的需求分析阶段,以下哪些是该团队小王所在的团队所负责的项目正处于软件的需求分析阶段,以下哪些是该团队在该阶段下的活动 (P5)在该阶段下的活动A. 通过UML 图、DFD 图、CFD 图,状态图、ER 图等进行系统建模B. 定义软件的范围,约束,以及功能概述C. 定义数据库的结构,编写触发器以及存储过程代码D. 进行软件接口设计进行软件接口设计3.以下哪些是软件开发的要素以下哪些是软件开发的要素 (P12)A. 开发人员的团队组织B. 项目资金筹备项目资金筹备C. 建模与实现的方法和技术D. 软件工程过程E. 开发工具和工作产品F. 基础设施4.关于CMMI 的5 个级别,以下哪些说法是错误的个级别,以下哪些说法是错误的 (P19)A. 1 级:可实施的,按CMMI 定义的所有特定目标均已满足,要求工作任务产生的工作产品均已产出。

务产生的工作产品均已产出。

清华大学郑人杰殷仁昆教授软件工程讲义2

清华大学郑人杰殷仁昆教授软件工程讲义2
集成与测试阶段 编程阶段 设计阶段 分析阶段
需求阶段
a
23
变换模型
变换模型是一种基于形式化规格说明语言及程 序变换的软件开发模型。
它采用形式化的软件开发方法,对形式化的软 件规格说明进行一系列自动的或半自动的程序 变换,最终映射成为计算机系统能够接受的程 序系统。
多步程序变换过程的重要性质是:每一步程序 变换的正确性仅与该步变换所依据的规范 Mi 以及对变换后的假设 Mi+1 有关。
编码
测试
增量3 交付
增量4 分析
设计
编码
测试
增量4 交付
日历时间
a
21
喷泉模型
体现了迭代和无间隙的特性。 系统某个部分常常重复工作多次,相关对象在
每次迭代中随之加入演进的软件成分。 无间隙是指在各项开发活动,即分析、设计和
编码之间不存在明显的边界。 喷泉模型是对象驱动的过程。
a
22
维护与演进阶段
软件工程原则有: 1) 抽象与自顶向下、逐层细化 采用分层抽象 的方法,有效控制软件开发的复杂性。
2) 模块化 把问题分解为若干较小的较易解决 的模块,有助于信息隐蔽和抽象。
3) 信息隐蔽和数据封装 将模块中的软件设计 决策封装在模块内部,使得模块实现与使用 分离,有助于控制修改局部化。抽象与自顶 向下、逐层细化
软件需求
软件设计
软件构造
软件测试
软件维护
软件配置管理
软件工程管理
软件工程过程
软件工程工具和方法 软件质量
a
9
软件工程过程与软件生存周期
ISO 9000定义:软件工程过程是把输入转化为 输出的一组彼此相关的资源和活动。
从软件开发的观点看,它就是使用适当的资源 (包括人员、硬软件工具、时间等),为开发 软件进行的一组开发活动,在过程结束时将输 入(用户要求)转化为输出(软件产品)。

《软件工程》复习提纲

《软件工程》复习提纲

《软件工程》复习提纲第一篇:《软件工程》复习提纲《软件工程》课程要点λ每章教学课件中的“本章小结”列出了需要掌握的内容λ教学过程中的例题和习题也是课程重点一、软件工程与软件过程概述1.概念:(1)软件的概念(组成成分、作用);答:计算机软件是程序、数据和相关文档的集合;用于实现计算机系统所需要的逻辑方法和控制过程(2)软件危机的含义、表现、产生原因(客观、主观)答:计算机软件开发和维护过程中遇到的一系列严重问题。

软件危机的表现:①对软件开发成本和进度的估计很不准确②已完成的软件不能满足用户需求③软件质量差④软件不可维护⑤软件没有开发文档⑥软件成本在计算机系统总成本中所占的比例逐年上升⑦软件生产率跟不上硬件的发展和计算机迅速普及的趋势与软件的特点有关(客观原因):①软件是计算机系统中的逻辑部件,缺乏“可见性”,管理和控制软件开发过程相当困难②软件在使用期间不存在机械磨损和老化问题,一旦发现错误,通常意味着修改原来的设计,因此软件难维护③软件规模庞大,程序复杂性增加,需多人分工合作(不能保证每个人完成的工作合在一起构成一个高质量的大型软件系统)与软件开发和维护的方法不正确有关(主观原因):① 开发无计划② 忽视软件需求分析的重要性③ 轻视软件维护④ 无过硬评测手段⑤ 缺乏有力的开发方法和工具⑥ 不重视开发文档等软件配置(3)软件工程学科包括的内容(三要素)、解决的主要问题答:(1)软件工程定义:1)软件工程是指导计算机软件开发和维护的工程学科2)采用工程化的概念、原理、技术和方法来开发和维护软件3)将经过时间考验而证明正确的管理技术和开发技术结合起来,以较经济的手段开发出高质量的软件并有效维护它2)软件工程方法学的三要素:①方法:完成软件开发各项任务的技术方法1 ②工具:为方法的高效运用,而提供的自动或半自动的软件支撑环境③过程:为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤(4)软件生命周期的含义、组成阶段及各阶段主要任务答:软件生命周期:一个软件从定义、开发、运行维护,直到最终被废弃要经历一个漫长的时期,这个时期称为软件生命周期。

(完整word版)软工复习材料

(完整word版)软工复习材料

2.1 软件工程&软件过程概述什么是软件,软件的特点软件是在计算机系统支持下,能够完成特定功能和性能的程序、数据和相关的文档。

(书本)软件是计算机程序、规程以及运行计算机系统可能需要的相关文档和数据。

(课件)软件=知识+程序+数据+文档(书本)软件=程序+规程+数据+文档(课件)软件的特点:软件是抽象的逻辑产品,而不是物理产品。

灵活性和不会磨损和老化。

1.软件开发更依赖于开发人员的业务素质、智力、人员的组织、合作和管理。

2.软件存在潜伏错误,硬件错误一般能排除。

3.软件开发成后,只需对原版进行复制。

4.软件在使用过程中维护复杂:(1)纠错性维护-改正运行期间发现的潜伏错误;(2)完善性维护-提高或完善软件的性能;(3)适应性维护-修改软件,以适应软硬件环境的变化;(4)预防性维护-改进软件未来的可维护性和可靠性。

(5)软件不会磨损和老化。

什么是软件危机,软件危机的表现软件危机是指在软件开发和维护中所遇到的一系列严重的问题。

软件危机的表现(1)对软件开发成本和进度的估计常常很不准确。

(2)用户对已完成的软件不满意的现象时有发生。

(3)软件产品的质量往往是靠不住的。

(4)软件常常是不可维护的。

(5)软件通常没有适当的文档资料。

软件工程的定义、目标及原则定义是:1 将系统化的、规范化的、可量化的的方法应用于软件的开发、运行和维护的过程;2对1中所述方法的研究目标:是在给定成本,进度的前提下,开发出满足用户或市场需求的高质量的软件产品。

原则:抽象、信息隐藏、模块化、局部化、一致性、完全性和可验证性。

软件质量要素产品转移:可移植性、可重用性、互操作性产品运行:正确性、可靠性、效率、完整性、实用性产品校正:可维护性、灵活性、可测试性8个质量要素:(1)正确性(2)可用性(3)可靠性(4)有效性(5)可维护性(6)可移植性(7)安全性(8)可复用性人月神话(1)缺乏合理的时间进度是造成项目滞后的最主要原因,它比其他所有因素加起来影响还大。

实用软件工程复习续

实用软件工程复习续

响应式设计
根据不同设备的屏幕尺寸和分辨率进 行自适应布局,提供良好的跨平台用 户体验。
实践案例
采用扁平化设计、卡片式设计等流行 的界面设计风格,同时结合用户反馈 进行持续优化。
03
编码实现与测试验证
编程语言选择及规范编写技巧
01
02
03
编程语言选择
根据项目需求、开发团队 技能栈和编程语言特性进 行选择,如Java、Python、 C等。
云计算资源调度和部署方案研究
弹性伸缩
根据应用负载的变化,自动调整云计算资源的配置,保证应用的 稳定性和性能。
容器化部署
采用容器技术,实现应用的快速部署和迁移,提高资源的利用率 和管理效率。
微服务架构
将应用拆分为多个独立的微服务,每个微服务独立部署和运行, 提高系统的可扩展性和可维护性。
大数据驱动下的软件创新思考
螺旋模型
螺旋模型是一种迭代式的软件开发过程模型,它结合了瀑布模型和原型模型的优点,通过不断迭代来逐步完善软件产 品。这种模型适用于需求不明确或经常变更的项目。
敏捷开发模型
敏捷开发模型是一种轻量级的软件开发过程模型,它强调快速响应变化、持续交付和团队协作。这种模 型适用于需求变化快、需要快速交付的项目。
风险管理
识别项目潜在风险,制定相应的应对措施,降低 项目风险对项目进度和质量的影响。
团队组建、角色分配和沟通技巧培训
团队组建
根据项目需求和成员特长,合理组建项目团队,确保团队具备完 成项目所需的各种能力。
角色分配
明确团队成员的角色和职责,确保每个成员都能够充分发挥自己的 优势,为项目的成功做出贡献。
关键知识点总结回顾
软件开发工具与环境
涉及集成开发环境(IDE)、版本 控制工具(如Git)、自动化构建 工具(如Maven、Gradle)等。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.软件工程目标:正确性、可用性、适合销售活动:需求、设计、实现、V&V(验证与确认)、支持原则:开发泛型、设计方法、支持工具、工程管理WW软件工程是开发,运行,维护和修复软件的系统方法,将系统化的,规范的,可度量的方法应用与软件的开发,运行维护的过程。

即将工程化应用于软件中。

2.软件过程中的基本活动(pdca)1.软件规格说明plan2.软件开发do3.软件确认check4.软件演进action3.瀑布模型:需求-》系统设计-》实现单元测试-》集成与系统测试-》运营维护。

他的显著特点是顺序性和依赖性。

4.演化模型:软件通过不断的演化才能完成和完善,其显著特点是迭代。

适合于业务和需求不断变更的开发过程,交付部分功能给客户,确认需求,逐步完善。

5.螺旋模型:将瀑布模型和演化模型结合起来,加入了风险分析。

6.增量模型:是将软件分解成一系列的增量的构件,在增量开发迭代中逐步加入,也叫极限程序设计。

7.软件工程原则:a)抽象自顶向下,逐层细化b)模块化的开发方法c)信息隐蔽和数据封装。

d)局部化e)一致性f)完备性g)可验证性8.软件工程基本原理:a)按软件生存期分阶段制定计划并认真实施b)坚持进行阶段评审c)坚持严格的产品控制d)使用现代程序设计技术e)明确责任f)用人少而精g)不断改进开发的过程9.识别用户要求,必须考虑的问题:a)功能和性能b)可靠性和质量c)总的系统目标d)成本与进度的把控e)制造需求f)市场竞争情况g)有效的技术h)将来可能的扩展10.可行性研究a)问题识别b)市场调查c)分析准备d)环境分析e)物理分析f)功能分析g)信息分析h)动态分析i)确立系统方案和成本估算j)模型评审k)成本可行性l)法律可行性11.面向对象设计面向对象=对象+分类+继承+消息通信,基本组成部分叫对象,计算是通过新对象的确立和对象之间的通信来执行。

相对于面向过程开发,核心:数据被封装在对象中,而不是全局变量中,数据流是通过消息传递,而不是面向过程解决办法。

算法被包裹在对象中,实现功能。

12.统一建模语言:UML概述Unified Modeling Language的缩写,他聚集了建模的精髓。

数据建模(实体关系图ERD)业务建模(工作流)对象建模构件建模13.UML图用例图:描述系统边界和主要功能;主要该系统在它的上下文环境所提供的服务。

1)上下文环境建模:主要指在位于系统之外并与系统进行交互的参与者以及他们扮演的角色的含义。

2)功能需求建模:说明系统想要的行为。

交互图(时序图,协作图):描述用例的实现,其主要描述了系统的外部视图,如何通过对象之间的交互实现用例。

包括顺序图和协作图,顺序图也叫时序图或序列图,他是按照时间顺序来的。

类图:标示系统的静态机构类图从系统的逻辑视图展现了一组类、接口、协作和它们之间的关系,类图给出系统的静态设计视图,主动类的类图给出了系统的静态进程视图。

其主要包括1)类及其结构和行为2)接口3)协作4)关联、依赖、泛化关系5)多重性和导航指示符6)角色名字类图的关系:父子关系实现关系关联关系(单向关联有箭头,多项无箭头)聚合:整体和部分关系组合关系(也是整体与部分,但是部分离开整体无法存活)依赖关系(动物无法离开氧气,为依赖关系)整体类图状态图:模型化对象的行为泳道图泳道图构件图和部署图:展现物理实现的体系结构衍型:扩展建模能力14.软件需求:a)为满足用户解决某一问题而达到某个目标所需要的条件或者能力,系统或系统部件为满足合同、规格、标准说明或其他正式的强制性文档所必须具有的条件和能力。

为满足以上条件和能力的文档化说明b)软件需求包括:业务需求、用户需求、功能需求、非功能性需求。

c)业务需求:描述了组织愿景,即为什么要开发一个系统;系统的业务范围、业务对象、客户特性、价值和各种特性的优先级别。

d)用户需求:描述了系统必须完成任务,即用户对系统的目标要求。

它只涉及到外部可见行为,不涉及内部特性。

是用户对自身需求的一种陈述。

这种陈述可能与实际需求不一致。

e)功能需求:定义了开发者应该提供的软件功能或服务,但不涉及这些功能和服务的实现。

f)非功能需求:对功能需求的补充,包括了对系统的各种限制和用户对系统的质量的要求。

如系统响应时间或截面。

i.包括产品必须遵从的标准、规范和合约ii.外部接口的具体细节iii.性能要求iv.设计实现的约束条件15.需求获取的过程需求获取包括以下活动:(a)发现和分析问题(b)获取需求(c)需求归档需求获取的主要步骤(a)理解业务领域,即目标软件的业务环境,如银行、电信,了解后可以建立自对业务理解后的数据模型。

通过结合实际业务,迭代完善业务模型(b)定义项目的视图和范围,定义项目范围是描述项目该做什么,不该做什么一般使用用例图。

(c)寻找软件的需求来源,客户、竞品、系统需求规格说明书、当前系统的问题报告和改进要求、市场调研报告、观察用户如何工作、用户工作场景分析、事件和响应。

(d)识别用户类和用户代表,确定系统的用户及其分类,与用户一块工作,确定系统的决策者。

(e)确定系统的业务流程和业务规则(f)访谈和记录(g)需求整理和描述16.面向对象的UML需求获取方法:a)用户模型视图:从用户角度来标示系统,通过用例图来标示b)结构模型视图:通过静态的数据模型图,类图、对象图来建模c)行为模型视图:描述系统的动态和行为,以及在上述两种视图中的各元素如何交互。

d)实现模型视图e)环境模型视图面向对象模型,分为三个独立模型a)有用例和场景组成功能视图b)用类和对象标示的分析对象模型c)用状态图和顺序图标示的动态模型17.对需求文档的要求:1)完整:要求必要的需求信息,必须进行完整的描述2)无歧义:每种需求只有一种解释。

3)一致性:对需求规格说明,必须保持一致。

4)可验证:可演示、测试、分析、审查、特殊的检查5)可修改6)可追踪:向前和向后的追踪性。

18.软件需求评审的主要内容:a)用例:是否清晰,用例规格。

b)功能:是否清楚,是否必须,是否满足,是否覆盖异常c)性能:是否精确描述,是否制定指标,是否制定使用环境d)接口:外部、内部描述是否清晰。

调用关系。

e)数据:是否确定系统的输入、输出f)硬件g)软件h)通信i)正确性完整性一致性,兼容性,安全性清晰性,健壮性,可扩展性。

19.需求管理:a)需求变更:建议变更---分析影响---作出决策---交流---合并b)版本控制:确定需求文档版本c)需求跟踪:d)需求状态跟踪20.需求变更的控制策略:a)需求变更原因:内部原因,外部原因i.内部原因:需求获取的不确切,需要发生变更,以适应真正的客户需求ii.外部原因:客户需求与之前发生了变化,如:客户的组织结构和工作流程发生了变化。

b)需求变更的策略i.认识到变更不可避免的时候,为变更指定计划ii.重新确定需求的基线iii.指定变更的唯一渠道,防止因为变更导致的需求扩散。

iv.指定合理的需求变更管理过程:如必须经过变更管理委员会确定的变更,才能真正进入需求文档,而不是开发人员擅自做主变更需求。

21.软件设计a)传统结构化软件设计:数据设计,体系结构设计,接口设计,过程设计。

b)面向对象的软件设计:体系结构设计、类设计、接口设计、构件设计i.体系结构设计:软件的主要结构元素其之间的关系ii.类设计:转化为设计类的实现及软件实现所要求的数据结构iii.数据设计:主要是关系数据库中的E-R实体关系图iv.构件级设计:构件级设计22.软件设计原则:a)设计应遵循:过程抽象,数据抽象。

b)过程应遵循模块化的原则i.模块可分解ii.模块可组装iii.模块可被理解iv.模块连续性v.模块保护c)应遵循信息屏蔽的原则d)模块独立性:高内聚,低耦合。

e)模块设计原则:先把该模块下的所有下层模块看成黑盒23.极限编程a)极限编程是一种原型设计方法,是基于实践的设计方法。

b)极限编程的原则:交流、简单、反馈、勇气。

i.交流:鼓励开发人员与客户直接沟通,用沟通代替文档。

ii.XP不建议过分构建系统设计,反对杞人忧天的做法。

简单最好,实现为前提。

iii.反馈要迅速,反馈越快越好,进行结对编程,测试优先,现场客户。

iv.拥抱变化,不变是变化,要有坚持XP设计的勇气,同时有放弃勇气。

c)XP的重要方法:i.放弃包袱,轻装上阵。

ii.结对编程iii.测试优先,以测试用例为驱动,单元测试。

iv.重构v.持续集成vi.小版本vii.现场客户24.软件体系结构软件体系结构风格反映了领域中众多系统所共有的结构和语义特性,并指导如何将各个子模块和子系统有效的组织起来,组织成一个完整的系统。

25.常见的风格:管道过滤器风格:26.面向对象的设计风格27.层次结构的风格(每一层定义一个抽相机,为上一层提供服务,并作为下一次层的客户)28.数据仓库风格(共享系统单元,所有人可以访问这些数据,此系统常见于专家系统中)专家黑板系统29.设计模式:设计模式分为三类:1)创建型模式:与对象的创建有关2)结构型模式:处理类与对象的组合,将一组对象组合成一个大的结构3)行为型模式:描述类与对象交互和职责分配。

按照使用范围,又分为对象和类两种类型其中23中设计模式,主要创建型:描述怎么创建一个对象,他隐藏对象创建的具体细节,实用程序可不依赖具体的对象,因此当增加一个新对象时几乎不需要修改代码。

其隐藏了这些类的实例如何创建、如何放在一起。

创建型类模式有:工厂模式创建型对象模式有:抽象工厂,构造模式,原型模式,单例模式重点1:抽象工厂模式:以同一接口建立一整组相关或相互依赖的对象,而不用指明个对象真正所属的具体类。

抽象工厂的特点:1.封装性:都是接口,不关心细节。

只需知道工厂类即可,就能创建出一个对象,省时省力。

2.约束性:产品约束在产品内部,外部不需要关心。

缺点:1.扩展性困难,增加一个新产品,需要抽象类,抽象类实现工厂都要修改,改动太大。

抽象工厂是一种契约关系,一种契约修改,所有的代码都要修改。

使用场景:1.使用对象组,这类对象有相同约束,如:文本编辑器,在Linux下的和Windows下的因为底层API不同,代码实现不同。

但是功能是相同的,有共同的约束条件,可以用抽象工厂,还有DB的操作,不同数据库的实例化。

2.一个模式在什么情况下才能够使用,是很多读者比较困惑的地方,抽象工厂模式是一个简单的模式,使用的场景非常多,大家在软件产品开发过程中,涉及到不同操作系统的时候,都可以考虑使用抽象工厂模式,例如一个应用,需要在三个不同平台上运行:Windows、Linux、Android(Google 发布的智能终端操作系统)上运行,你会怎么设计?分别设计三套不同的应用?非也非也,通过抽象工厂模式屏蔽掉操作系统对应用的影响。

相关文档
最新文档