软件工程导论课后习题答案(第五版) 下载本文

1-1

1.什么是软件危机?

软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。这 些问题表现在以下几个方面:

(1)用户对开发出的软件很难满意。 (2)软件产品的质量往往靠不住。 (3)一般软件很难维护。 (4)软件生产效率很低。

(5)软件开发成本越来越大。

(6)软件成本与开发进度难以估计。

(7)软件技术的发展远远满足不了计算机应用的普及与深入的需要。

2.软件危机有那些典型表现?

(1) 对软件开发成本和进度的估计常常很不准确。 (2) 用户对“已完成的”软件系统不满意的现象经常发生。 (3) 软件产品的质量往往靠不住。 (4) 软件常常是不可维护的。 (5) 软件通常没有适当的文档资料。

(6) 软件成本在计算机系统总成本中所占的比例逐年上升。

(7) 软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。

《软件工程导论》课后习题答案

第一章 软件工程概论

3.为什么会产生软件危机?

(1) 开发人员方面,对软件产品缺乏正确认识,没有真正理解软件产品是一个 完整的配置组成。造成开发中制定计划盲目、编程草率,不考虑维护工作的必要性。

(2) 软件本身方面,对于计算机系统来说,软件是逻辑部件,软件开发过程没 有统一的、公认的方法论和规范指导,造成软件维护困难。

(3) 尤其是随着软件规模越来越大,复杂程度越来越高,原有软件开发方式效率 不高、质量不能保证、成本过高、研制周期不易估计、维护困难等一系列问题更为 突出,技术的发展已经远远不能适应社会需求。

4.怎样克服软件危机?

(1) 充分吸收和借鉴人类长期以来从事各种工程项目中积累的行之有效的有效 原理、概念、技术与方法,特别是吸取几十年来人类从事计算机硬件研究和开发的 经验教训。在开发软件的过程中努力作到良好的组织,严格的管理,相互友好的协 作。

(2) 推广在实践中总结出来的开发软件的成功的技术和方法,并研究更好、更 有效的技术和方法,尽快克服在计算机系统早期发展阶段形成的一些错误概念和作 法。

(3) 根据不同的应用领域,开发更好的软件工具并使用这些工具。将软件开发

各个阶段使用的软件工具集合成一个整体,形成一个很好的软件开发支环环境。 总之为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措 施。 1-3、

1-5、根据历史数据可以做出如下的假设 :

对计算机存储容量的需求大致按下面公式描述的趋势逐年增加: M=4080e0.28(Y-1960)

存储器的价格按下面公式描述的趋势逐年下降:P1=0.3×0.72Y-1974(美分/位) 如果计算机字长为 16 位,则存储器价格下降的趋势为:P2=0.048×0.72Y-1974(美 元/字)

在上列公式中 Y 代表年份,M 是存储容量(字数),P1 和 P2 代表价格。 基于上述假设可以比较计算机硬件和软件成本的变化趋势。要求计算:

(1) 在 1985 年对计算机存储容量的需求估计是多少?如果字长为 16 位,这个存储 器的价格是多少?

(2) 假设在 1985 年一名程序员每天可开发出 10 条指令,程序员的平均工资是每月 4000 美元。如果一条指令为一个字长,计算使存储器装满程序所需用的成本。

(3) 假设在 1995 年存储器字长为 32 位,一名程序员每天可开发出 30 条指令,程序 员的月平均工资为 6000 美元,重复(1)、(2)题。

1-6 什么是软件过程?它与软件工程方法学有何关系?

软件过程是为了开发出高质量的软件产品所需完成的一系列任务的框架,它规定了完成各项 任务的工作步骤。

软件过程定义了运用技术方法的顺序、应该交付的文档资料、为保证软件质量和协调软件变 化必须采取的管理措施,以及标志完成了相应开发活动的里程碑。 软件过程是软件工程方法学的 3 个重要组成部分之一。

4.构成软件项目的最终产品:

应用程序、系统程序、面向用户的文档资料和面向开发者的文档资料。

5.什么是软件生存周期?

软件生存周期是指从软件定义、开发、使用、维护到淘汰的全过程。

6.软件生存周期为什么划分成阶段?

(1) 任何一个阶段的具体任务不仅独立,而且简单,便于不同人员分工协作, 从而降低整个软件开发工作的困难程度。

(2) 可以降低每个阶段任务的复杂程度,简化不同阶段的联系,有利于工程的 组织管理,也便于采用良好的技术方法。

(3) 使软件开发的全过程以一种有条不紊的方式进行,保证软件的质量,特别 是提高了软件的可维护性。

7.应该怎样来划分阶段?

(1)每一个阶段的任务尽可能独立; (2)同一阶段内的任务性质尽可能相同;

(3)每一个阶段任务的开始和结束有严格的标准。

8.软件开发模型有几种?它们的开发方法有可特点?

软件开发模型有瀑布型、渐增型和变换型。

瀑布型开发方法是按照软件生存周期的划分依次实施,每一个阶段有明确规定 的任务。它的特点:

(1)各个阶段的顺序性和依赖性;

(2)划分逻辑设计与物理设计,尽可能推迟程序的物理实现;

(3)每个阶段必须完成规定的文档,对其中问题通过复审及早发现,及早解决。 渐增型开发方法及特点:

(1) 从部分需求出发,先建立一个不完全的系统,通过测试运行该系统取得

经验和信息反馈,加深对软件需求的理解,进一步使系统扩充和完善。如此反复, 直至软件人员和用户对所设计完成的软件系统满意为止。

(2) 在渐增型开发下的软件是随软件开发的过程而逐渐形成的。

(3) 渐增型开发方法适合于知识型软件的开发,设计系统时对用户需求的认

识开始不是很清楚的,需要在开发过程中不断认识、不断获得新的知识去丰富和完 善系统。多数研究性质的试验软件,一般采用此方法。

变换型开发方法及特点:

(1)从软件需求的形式化规格说明出发,经过一系列的程序变换,得到最终的

程序系统。

(2)该方法必须有严格的数学理论和形式化技术的支持。

9.什么是软件工程?

软件工程是指导计算机软件开发和维护的工程学科。

(1) 它采用工程的概念、原理、技术和方法来开发和维护软件;

(2) 它将管理技术与当前经过时间考验的而证明是正确的技术方法结合起

来;

(3) 它强调使用生存周期方法学和结构分析和结构技术;

(4) 经过人们长期的努力和探索,围绕着实现软件优质高产这个目标,从技术

到管理两个方面做了大量的努力,逐渐形成了\软件工程学\这一新的学科。

10.什么是软件工程环境:

方法与工具的结合,加上配套的软、硬件支持称为软件工程环境。它能支持开 发者按照软件工程的方法,全面完成生存周期中的各项任务。

第二章 可行性研究 习题答案

1. 问题定义的任务和主要工作?

问题定义的任务:将用户提出的要求具体化、定量化;确定研制系统的范

围,明确研制的边界。

问题定义阶段的工作:

(1) 通过调查研究,了解系统需求;

(2) 确定系统的功能需求、性能需求、可靠性需求、安全及保密性、资源、

开发费用及开发进度等的需求;

(3) 问题定义阶段的产品--系统目标与范围说明书。