软件工程教程课后参考答案
第1章
一、选择题
(1)D (2)B (3)C (4)D (5)D (6)A (7)D
二、简答题
(1)什么是软件危机?软件危机表现在哪些方面?
答:具体来说,软件危机出现的原因可以概括如下。
忽视软件开发前期的需求分析。
开发过程缺乏统一的、规范化的方法论指导。
文档资料不齐全或不准确。
忽视与用户之间、开发组成员之间的交流。
忽视测试的重要性。
不重视维护或由于上述原因造成维护工作的困难。
从事软件开发的专业人员对这个产业的认识不充分,缺乏经验。
没有完善的质量保证体系。
具体地说,软件危机的表现形式可以概括如下。
① 软件开发费用和进度失控。
② 软件系统实现的功能与实际需求不符。
③ 软件的可靠性差。
④ 软件难以维护。
软件通常没有适当的文档资料。
⑥ 软件成本在计算机系统总成本中所占的比例居高不下,且逐年上升。
⑦ 软件生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。
(2)简述软件和软件工程的定义以及软件工程的形成过程。
答:软件是计算机系统中与硬件相对应的另一部分,是一系列程序、数据及其相关的文档集合。在这里,程序是按照特定顺序组织的计算机数据和指令的集合;数据是使程序能正常执行的数据结构;文档是是开发、使用和维护程序所需要的图文资料。
软件工程是应用计算机科学理论和技术以及工程管理原则和方法,按预算和进度,实现满足用户要求的软件产品的定义、开发、发布和维护的工程或进行研究的学科。
软件工程的发展经历了以下四个阶段。
① 20世纪70年代。为了解决软件项目失败率高、错误率高以及软件维护任务重等问题,人们提出了软件生产工程化的思想,希望使软件生产走上正规化的道路,并努力克服软件危机。人们发现将传统工程学的原理、技术和方法应用于软件开发,可以起到使软件生产规范化的作用。
② 20世纪80年代。面向对象的方法与技术受到了广泛的重视,maltalk-80的出现标志着面向对象的程序设计进入了实用和成熟阶段。20世纪80年代末,逐步发展起来的面向对象的分析与设计方法,已经形成了完整的面向对象技术体系,使系统的生存周期更长,适应更大规模、更广泛的应用。
③ 20世纪90年代末。出现了许多的敏捷方法,如自适应软件开发、水晶项目开发、动态系统开发、极限编程、特征驱动开发和Scrum等。这些主要的敏捷方法的创始人在2001年聚集一堂,并发表了敏捷开发宣言。
④ 21世纪。对快速应用开发(Rapid Application Development,RAD)追求的趋势仍在继续,在信息技术、组织、竞争对策及环境等方面的变革步伐也正在加快。云计算、大数据、物联网、人工智能和机器学习、移动互联网、三维打印、可穿戴式技术、虚拟现实、增强现实、社交媒体、无人驾驶汽车和飞机等技术不断涌现。“大规模计算”、“自治和生化计算机”、“模型驱动体系结构”和“构件化软件开发”等新领域都可能成为接下来软件工程发展的主要方向。
(3)软件工程的目标是什么?如何解决多目标之间的矛盾?
答:软件工程要达到的基本目标包括以下六方面。
① 达到要求的软件功能。
② 取得较好的软件性能。
③ 开发出高质量的软件。
④ 付出较低的开发成本。
⑤ 需要较低的维护费用。
⑥ 能按时完成开发工作,及时交付使用。
软件工程的首要问题是软件质量。软件工程的目的就是在以上目标的冲突之间取得一定程度的平衡。因此,在涉及平衡软件工程目标这个问题的时候,软件的质量应该摆在最重要的位置加以考虑。软件质量可用功能性、可靠性、可用性、效率、可维护性和可移植性等六个特性来评价。
(4)什么是软件生存周期?它分为几个时期?几个阶段?
答:软件生存周期是指从设计该产品的构想开始,到软件需求的确定、软件设计、软件实现、产品测试与验收、投入使用,以及产品版本的不断更新,到该产品最终被市场淘汰的全过程。软件生存周期由软件定义、软件开发和运行维护三个时期组成,划分为问题定义、可行性研究、需求分析、概要设计、详细设计、软件实现和单元测试、综合测试和运行维护八个阶段。
(5)什么是软件生存周期模型?有哪些主要软件过程模型?
答:软件生存期模型也称为软件过程模型,是从软件项目需求定义直至软件运行维护为止,跨越整个生命周期的系统开发、运行和维护所实施的全部过程、活动和任务的结构框架。典型的包括瀑布模型、快速原型模型、增量模型、螺旋模型、统一过程、敏捷过程等。
(6)在软件工程知识体系中,将软件工程划分为哪些知识域?
答:SWEBOK将软件工程知识体系划分为10个知识域,包含在两类过程中。一类过程是开发与维护过程,包括软件需求、软件设计、软件构造、软件测试和软件维护;另一类过程是支持过程,包括软件配置管理、软件工程管理,软件工程过程、软件工程工具写方法、软件
质量。每个知识域还可进一步分解为若干个论题,在论题描述中引用有关知识的参考文献,形成一个多级层次结构,以此确定软件工程知识体系的内容和边界。
第2章
一、填空题
1)用最小的代价在尽可能短的时间内确定问题是否能够解决
2)投资效益分析
3)值得去开发
4)需求分析,设计
 5)开发成本、比较和权衡
6)经济角度
7)编写可行性分析报告
8)技术可行性、经济可行性、社会可行因素方面的可行性、操作可行性
9)直接成本、间接成本、有形收益、无形收益
10)因使用新系统而增加的收入、使用新系统可以节省的运行费用
11)货币的时间价值、投资回收期、纯收入
12)经济效益、投资
13)最初投资
14)软件的工作范围、估算开发所需要资源、估算软件成本费用和进度安排
15)软件系统的功能、软件系统的性能、接口、可靠性
16)泡泡图
17)同时出现,只取其一
18)输入,输出
19)加工,名字
20)数据存储
二、选择题
    (1) A    (2) C    (3)C   (4) B    (5)D  (6) C    (7) B    (8) A    (9) D  (10) D
(11)B  (12)B    (13)D  (14) D  (15)A 
三、简答题
1 可行性研究主要研究哪些问题?试说明之。
解:可行性研究的任务是决定软件项目做还是不做。对技术可行性、经济可行性、社会可行性、开发方案的可行性及运行可行性等方面进行分析。
2)设计一个软件的开发成本为5万元,寿命为3年。未来3年的每年收益预计为:2200元,24000元,26620元。银行年利率为10%。试对此项目进行成本-效益分析,以决定其经济可行性。
解:进行投入产出分析时,未来的收益和现在消耗的成本不能直接进行比较,必须在考虑货币的时间价值后,才能进行准确的投、产出分析。
22 000/(1+ 10%)+24000/(1.1×1.1)+26 620/(1.1×1.1×1.1)-50 000=20 000+19834.71
 + 20 000- 50 000= 9834.71
经济可行性分析投资收益为: 9834.71元。
3)某软件公司统计发现该公司研发部门每一万行C语言源代码形成的源文件(.c.h文件)约为250K。某项目的源文件大小为3.75M
问该项目的规模是多少KLOC(源代码行数)?该公司研发部门的生产率是0.625KLOC/人月,人工价是10000/人月。
问工作量和总成本是多少?
每行代码的价值是多少?
解:①3.75M/250K=15万行=150KLOC
②工作量=规模/生产率=150KLOC/0.625KLOC=240人月
成本=工作量×人工价=240人月*10000/人月=240万元
240万元/15万行=16/
(4) 某计算机系统投入使用后每年可节约人民币20000元,设软件生存期为4年,系统投资额为50000元,若年利率5%,试计算效益。
解:表面上看4年共节约20000*4=80000元,扣除投资55000元可产生纯收入25000元。其实不然,因为投资在前,效益产生有一个时间过程所以需要把4年内每年预计节约的钱折合成当前价值才能比较。若按年利率5%计算,折合到当前值的数目如表1所示:
1每年效益折算的当前值
          效益()      利率(1+0.05)n       当前值(元)    预计当前值()
1            20000          1.05              19047          19047
2            20000          1.1025            18140          37187
3            20000          1.1576            17277          54464
4            20000          1.2155            16454          70918
根据表1可计算出以下经济指标:
纯收=4年累计的当前值-系统投资=70918-55000=15918()
投资回收期≈3+ (55000-54464)/16454-3.033
5)某旅馆的电话号码服务如下:
    可以拨分机号和外线号码。分机号是从7201~7299。外线号码先拨9,然后是市话号码或长话号码。长话号码是以区号和市话号码组成。区号是从100~300中任意的数字串。市话号码是以局号和分句号组成。局号可以是455466888汽车驾驶教程552中任意一个号码。分局号是是任意长度为4的数字串。
要求:写出在数据字典中,电话号码的数据条目的定义(即组成)
解:电话号码 = 分机号 | 外线号码
    分机号 = 7201…7299
    外线号码 = 9+[市话号码 | 长话号码]
    长话号码 = 区号+市话号码
    区号 = 100…300
    市话号码局号+分局号
    局号 = [455|466|888|552]
    分局号 = 4{数字}4
6)某工厂的采购部每天需要一张订货报表,报表按零件编号排序,表中列出所有需要再次订货的零件。对于每个需要再次订货的零件,应该列出下述数据:零件编号,零件名称,订货数量,目前价格,主要供应者,次要供应者。零件入库或出库称为事务,通过存放在库房的CRT终端把事务报告给定货系统。当零件库存量少于库存量临界值,决定再次订货,画出订货系统的数据流图。
解:问题分析:源点/终点,处理,数据存储,数据流
1)源点/终点:系统之外的实体(,,系统)
源点:仓库管理员
终点:采购员
2)处理:
需要报表->产生报表
处理日常事务->事务处理
3)数据存储:
订货信息
库存清单
4)数据流:
订货报表:零件编号、名称、数量……
事务:零件编号、事务类型、数量……
Step1:顶层数据流图——系统级
表1 订货系统顶层DFD图
构成:基本系统模型+源点+终点