软件工程期末复习指导软件工程课程是计算机科学与技术专业本科生的一门选修课程。主要讨论如何运用科学的概念、理论、方法和技术来进行软件的开发、维护和管理。课程主要内容有:软件工程概述;系统分析;需求分析;软件设计;Jackson系统开发方法;用户界面设计;程序编码;软件测试;面向对象技术;软件质量保证;软件维护;软件工程标准和软件文档;软件项目管理与计划。本课程选用的教材是由郑人杰主编清华大学出版社出版的《实用软件工程》第一部分各章复习要求下面按照主教材中各章次序给出每章的具体复习要求,以便指导同学们更好地进行期末复习。第一章软件工程概述1.1软件的概念、特点和分类(熟练掌握)1.2软件的发展和软件危机(掌握)1.3软件工程过程和软件生存期(掌握)1.4软件生存期模型(了解)1.5软件工程的基本目标(了解)第二章系统分析2.1基于计算机的系统(了解)2.3系统需求识别(了解)2.4可行性研究(掌握)2.5成本效益分析(掌握)2.6技术分析(了解)2.7分配与权衡(了解)2.8系统结构的模型化(了解)2.9系统定义与评审(了解)第三章软件需求分析3.1软件需求分析的任务(掌握)3.2需求分析的过程(掌握)3.3软件需求分析的原则(了解)3.4分析员和用户的责任(了解)3.5软件需求分析方法(了解)3.6原型化方法(掌握)3.7结构化分析方法(熟练掌握)第四章软件设计4.1软件设计的目标和任务(掌握)4.2软件设计基础(掌握)4.3模块的独立性(掌握)4.4结构化设计方法(StructureDesign,SD)(掌握)4.6过程设计(熟练掌握)第五章Jackson系统开发(JSD)方法5.1进程模型(了解)5.2JSD方法的步骤(了解)5.3实体动作分析(掌握)5.4实体结构分析(掌握)5.5定义初始模型(了解)5.6功能描述(了解)第六章用户界面设计6.1用户界面应具备的特性(掌握)6.2用户界面设计的任务分析(了解)6.4界面设计的基本类型(了解)6.5数据输入界面(了解)6.6数据显示界面设计(了解)第七章程序编码7.1对软件的质量要求(掌握)7.2结构化程序设计(StructureProgramming)(掌握)7.3程序设计风格(了解)7.4程序效率(了解)第八章软件测试8.1软件测试的基础(掌握)8.2测试用例设计(熟练掌握)8.3白盒测试的测试用例设计(熟练掌握)8.4黑盒测试的测试用例设计(了解)8.5软件测试的策略(掌握)8.7调试(了解)第九章面向对象技术9.1面向对象的概念(了解)9.3面向对象分析(Object-OrientedAnalysis)(了解)第十章软件的质量保证10.1软件质量的概念(掌握)10.2软件质量的度量和评价(掌握)10.3软件质量保证(掌握)10.5质量保证的实施(了解)10.7技术评审(掌握)10.8软件可靠性(掌握)10.10软件容错技术(了解)第十一章软件维护11.1软件维护的概念(掌握)11.2软件维护活动(了解)11.3程序修改的步骤及修改的副作用(了解)11.4软件可维护性(了解)11.8软件配置管理(SoftwareConfigurationManagement)(了解)第十二章软件工程标准化与软件文档12.1什么是软件工程标准(掌握)12.2软件工程标准化的意义(了解)12.4软件工程标准的层次(了解)12.8文档的作用与分类(了解)第十三章软件项目管理与计划13.1项目的管理过程(了解)13.2软件生产率和质量的度量(了解)13.4软件项目估算(掌握)13.5软件开发成本估算(了解)13.6风险分析(了解)13.7进度安排(了解)13.8软件项目的组织与计划(了解)13.9软件过程成熟度模型(了解)第二部分期末复习题示例1.名词解释1)模块独立性:是指软件系统中每个模块只涉及软件要求的具体子功能,而和软件系统中其他的模块接口是简单的。2)程序效率:程序的执行速度和程序占用的存储空间。3)继承:是使用已存在的(现存)定义作为基础建立新定义的技术。4)软件可靠性:表明了一个程序按照用户的要求和设计的目标,执行其功能的正确程度。5)数据字典:对在数据流图中每一个命名的图形元素均给予定义,其内容有图形元素的名字、别名或编号、分类、描述、定义、位置等。6)文档:是指某种数据媒体和其中所记录的数据。7)软件复用:就是利用某些早先开发的对建立新系统有用的信息来生产新系统。8)质量保证:它是为保证产品和服务充分满足消费者要求的质量而进行的有计划、有组织的活动。2.单选题1.软件生产过程中,需求信息由()给出。A)程序员B)项目管理者C)软件分析设计人员D)软件用户2.开发的结构化设计(SD)方法,全面指导模块划分的重要原则应该是()A)模块高内聚B)模块低耦合C)模块独立性D)程序模块化3.在下列基本成分中,哪个不是数据流程图的基本成分?()A)信息处理B)信息存储C)外部实体D)系统状态4.结构化程序设计主要强调程序的()。A)效率B)速度C)可读性D)大小5.分层数据流图是一种比较严格有利于理解的描述方式,它的顶层描述了系统的()。A)总貌B)细节C)抽象D)软件的作用6.几种度量效益的方法包括()。A)自顶向下估计法B)货币的时间价值法C)投资回收期法D)纯收入法7.两个模块之间出现()情况,则称为内容耦合。A)一个模块访问另一个模块的内部B)一个模块通过正常人口而转到另一个模块的内部C)两个模块有一部分程序代码重叠D)一个模块有多个人口8.需求分析的实现步骤包括()。A)获得当前系统的逻辑模型B)抽象当前系统的逻辑模型C)建立目标系统的逻辑模型D)对得到的逻辑模型进行补充9.与设计测试数据无关的文档是()。A)需求说明书B)设计说明书C)源程序D)项目开发设计10.下列()可能导致软件维护困难。A)开发人员经常调动,缺少原开发人员对软件的解释B)缺少开发文档或文档严重不足C)无法追踪软件的版本演化D)对于其他开发人员编写的程序理解困难参考答案1D2C3D4C5A6A7B8B9D10C3.填空1)计算机软件的发展经历了_________、__________、___________三个阶段。2)软件工程过程是为获得___________,在软件工具支持下由___________完成的一系列软件工程活动。3)软件工程包括三个要素:_______、________和________。4)可行性研究主要几种在以下四个方面__________、____________、__________和____________。其中,______________是最难决断的方面。5)成本-效益分析的目的,是从___________评价开发一个新的软件项目是否可行。6)需求分析阶段研究的对象是软件项目的___________。7)需求分析阶段的工作,可以分成以下四个方面:_____________、分析与综合、___________和评审。8)需求分析方法由对软件的________和_________的系统分析过程及其表示方法组成。9)软件开发阶段由________、_______和________三个互相关联的步骤组成。10)从工程管理的角度来看,软件设计分两步来完成。首先是__________,然后是_________。11)软件的结构包括两部分,其一为__________________,其二为________________。12)将整个软件划分成若干单独命名和__________的部分,称之为模块。参考答案1)程序设计阶段、程序系统阶段、软件工程阶段2)软件产品、软件工程师3)方法、工具、过程4)经济可行性、技术可行性、法律可行性、抉择、技术可行性5)经济角度6)软件项目的用户要求7)对问题的识别、制定规格说明8)数据域、功能域9)设计、实现、测试10)概要设计、详细设计11)程序模块的层次结构、数据的结构12)可编址4.判断题1、类是面向对象开发模式的基本成分。()t2、只要对软件进行严格的技术评审,都能发现软件所有的错误。()f3、需求分析阶段研究的对象是软件项目的硬件需求。()f4、需求分析的任务就是借助当前系统的逻辑模型导出目标系统的物理模型。()f5、传统软件生存期模型的典型代表是“瀑布模型”。()t6、对建立软件目标系统而言,复用就是利用某些早先开发的对建立新系统有用的信息来产生新系统。()t7、数据字典中的定义允许有二义性。()f8、结构化的程序设计一般不提倡使用Goto语句。()t9、软件设计的最终目标是要取得最佳方案。()t10、在开发软件的实践中,人们通常采用网状结构,而不采用树状结构。()f11、模块的个数越多,开发的成本越低。()f12、如果一组模块通过参数表传递记录信息,就是控制耦合。()f13、在程序结构中各模块的内聚程度越高,模块间的耦合程序就越低。()t14、软件概要设计的目标是力求增加模块间的耦合,尽量减少模块的内聚。()f15、N—S图是一种符合结构化程序设计原则的图形描述工具。()t16、PAD所表达的程序,结构清晰且结构化程度高。()t17、程序设计中应大量使用GOTO语句。()f18、语句构造应避免过多的循环嵌套和条件嵌套。()t19、对递归定义的数据结构尽量使用递归过程。()t20、源程序的效率与概要设计阶段确定的算法的效率直接有关。()f21、编码与单元测试属于软件生存期中的同一阶段。()t22、程序中错误隐藏得越久,查找和修改花费的代价就越大。()t23、人力资源在软件开发资源中最重要。()t24、ISO专门负责与计算机有关的标准化工作。()f5.简答题1.软件工程项目的基本目标。1)付出较低的开发成本2)达到要求的软件功能3)取得较好的软件性能4)开发的软件易于移植5)需要较低的维护费用6)能按时完成开发工作,及时交付使用2.软件需求分析的原则。1)必须能够表达和理解问题的数据域和功能域2)必须按自顶向下、逐层分解的方式对问题进行分解和不断细化3)要给出系统的逻辑视图和物理视图3.内聚有哪些类型?内聚:度量一个模块内部各个元素彼此结合的紧密程度1)偶然内聚(巧合内聚)2)逻辑内聚3)时间内聚(经典内聚)4)过程内聚5)通信内聚6)信息内聚7)功能内聚4.程序设计风格包括几个方面?1)源程序文档化2)数据说明3)语句结构4)输入和输出5.什么是白盒测试?白盒测试(结构测试或逻辑测试)就是在知道产品内部工作过程或程序内部逻辑结构和内部特性的前提下,检验产品内部动作是否按照规格说明书的规定正常进行或按照程序内部的逻辑测试程序;检验程序中的每条通路是否都能按照预定要求正确工作的测试方法6.软件测试过程的四个步骤。单元测试组装(集成)测试确认测试系统测试7.结构化程序设计有哪些主要原则?1)使用语言中的顺序、选择、重复等有限的基本控制结构表示程序逻辑2)选用的控制结构必须是单入口和单出口3)程序语句要组成容易识别的块,每块只能有一个入口和一个出口4)复杂结构应该用基本控制结构进行组合嵌套来实现5)语言中没有的控制结构,可用一段等价的程序段模拟,但要求该程序段在整个系统中应前后一致6)严格控制GOTO语句,仅在下列情形才可使用