软件工程习题答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《软件工程》习题参考答案
周兵
1.1教材:《软件工程》方木云主编,清华大学出版社,2016 1.2参考书目:
1.《Software engineering》8th Edition Ian Sommervile,Pearson
Education, 机械工业出版社,2006
2. 《软件工程》,王忠群主编,中国科学技术大学出版社,2009
3. 《软件工程导论》(第4版), 张海藩编著, 清华大学出版社, 2007
4、《Software engineering : a practitioner's approach》 Roger
S. Pressman. 6th ed. Pressman, Roger S. China Machine
Press, 2008
1.3说明:
斜体部分是可选讲授内容, 带星号的习题为可选。
第1章软件工程学概述
1.1习题
A.1什么是软件?软件可以分为哪些类?p11
答:软件是程序、数据及相关文档的完整集合。软件可分为通用软件和定制软件。
A.2 *什么是软件危机及其表现?p11
答:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。软件危机包含下述两方面的问题:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。
具体地说,软件危机主要有以下一些典型表现。
(1) 对软件开发成本和进度的估计常常很不准确。
(2) 用户对“已完成的”软件系统不满意的现象经常发生。
(3) 软件产品的质量往往靠不住。
(4) 软件常常是不可维护的。
(5) 软件通常没有适当的文档资料。
(6) 软件成本在计算机系统总成本中所占的比例逐年上升。
(7) 软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。
A.3什么是软件工程?p11
答:软件工程是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。
A.4什么是软件过程?p20
答:软件过程由软件定义、软件开发和运行维护(也称为软件维护)3个时期组成,每个时期又进一步划分成若干个阶段。
第2章软件过程模型
2.1习题
A.1什么是瀑布型方法?p20
答:按照时间顺序依次进行可行性分析、项目计划、需求分析、概要设计、详细设计、编码与单元测试、集成测试、确认验证、运行与维护等几个阶段进行软件开发。
A.2什么是快速原型方法?p28
答:所谓快速原型是快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成的功能的一个子集。强调过程的多次反复,对文档的要求不高。
A.3什么是增量方法?说说它产生的原因和适用的范围。P43
答:增量模型也称为渐增模型,是快速原型法的一种;使用增量模型开发软件时,把软件产品作为一系列的增量构件来设计、编码、集成和测试。
使用增量模型可以:在较短时间内向用户提交可完成部分工作的产品;客户可以将早期的增量作为原型,从中获得对后面系统增量的需求经验;项目总体性失败的风险比较低。
A.4什么是面向复用方法?说说它产生的原因和适用的范围。P43
答:面向复用的方法使用可复用软件组件以及能集成这些组件的框架来构建和开发新的软件;有时,这些组件本身就是一个独立的能满足某种需要的系统。
使用这种方法可以节省大量的重复劳动,加快开发速度。存在大量可以重用的构件的时候,可以使用这种方法。
A.5什么是形式化方法?说说它产生的原因和适用的范围。P43
答:形式化系统开发是一个类似瀑布模型的软件开发方法,但其开发过程基于的是用形式化数学转换来将系统描述转换成一个可执行程序。
因为使用这种方法可以大大提高软件的可靠性,以及节省测试成本;这种方法主要用于可靠性要求很高的软件。
第3章可行性研究
第4章需求分析
4.1习题
A.1为什么要进行软件需求分析?请叙述软件需求分析的主要过
程。P66
答:软件需求分析在软件开发过程中具有举足轻重的地位,它是开发出正确的、高质量的软件系统的重要保证。有数据表明,更正需求分析阶段的一个错误所花费的工作量是更正测试阶段的一个错误的一百倍。
软件需求分析的主要过程: 获取用户需求、分析用户需求、编写需求文档、进行需求评审
A.2软件需求规格说明书由哪些部分组成?p66
答:软件需求规格说明书由引言、任务概述、需求规定、运行环境规定四个部分组成。
第5章概要设计(总体)
5.1习题
A.1什么是模块?什么是模块化?。P75
答:模块是由边界元素限定的相邻程序元素(例如,数据说明,可执行的语句)的序列,而且有一个总体标识符代表它。过程、函数、子程序和宏等,都可作为模块。面向对象方法学中的对象是模块,对象内的方法(或称为服务)也是模块。模块是构成程序的基本构件。
模块化就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。模块化是为了使一个复杂的大型程序能被人的智力所管理。
A.2衡量模块独立性的两个标准是什么?它们各表示什么含义?
P75
答:模块的独立程度可以由两个定性标准度量,这两个标准分别称为内聚和耦合。耦合是对一个软件结构内不同模块之间互连程度的度量。内聚标志一个模块内各个元素彼此结合的紧密程度,它是信息隐藏和局部化概念的自然扩展。