文档介绍:第 2 章软件工程
软件工程的基本概念
本节的学习目标:了解软件危机及其形成原因;掌握软件工程的基本原则;了解软件工程的
基本内容。
本节的知识要点:软件危机的特征;软件工程的概念;软件工程的七条基本原则。
一、课后部分习题答案
2-1“软件危机”有哪些特征?是有什么原因导致的?
答:“软件危机”的主要特征是:(1)软件不符合用户的实际需要。(2)软件价格昂贵。(3)
软件开发项目超支和延期。(4)软件质量低,可靠性差。(5)软件缺少适当的文档资料。(6)
难于修改和维护软件。
导致“软件危机”的原因:(1)软件本身是逻辑部件,是无形的产品,看不见摸不着,质量
往往难以评价,潜在的错误在所难免,并且质量检测非常复杂,往往不能在交付使用之前检
查出所有错误。(2)软件规模越来越大,软件结构越来越复杂。(3)忽视需求分析的重要性,
急于开始编程,往往造成开发出来的软件不能满自用户的要求而导致返工甚至作废。(4)轻
视软件测试和软件维护。(5)软件开发技术落后,生产方式落后,开发工具落后。
软件开发过程
本节的学习目标:掌握软件生命周期模型的基本概念;掌握软件生命期及其瀑布模型;了解
软件生命快速原型模型;了解软件生存周期各阶段的主要任务;掌握模块化软件开发原理。
本节的知识要点:软件生命周期;瀑布模型;原型模型;软件模块化开发原则包含的 4 个方
面;信息隐蔽和局部化的概念;耦合和内聚的概念。
一、课后部分习题答案
2-2 软件生命周期为什么将软件开发过程划分几个阶段?
答:人类在长期的社会实践中早已学会了“各个击破”的思想来解决复杂问题,大型复杂软
件的开发也不例外。根据这一思想,我们可以把软件开发过程的基本活动进一步展开,将软
件开发过程分解为三个时期:软件定义、软件开发、软件维护。然后进一步将每一时期分为
几个阶段:软件定义时期包含软件系统的可行性分析、需求分析等阶段,软件开发时期包含
总体设计、详细设计、实现、测试等阶段,软件维护时期包含软件的使用、修改维护、退役
等阶段。
2-4 简述软件生命周期的瀑布模型与原型模型的优缺点。
答:瀑布模型:
优点:有利于大型软件开发过程中人员的组织、管理,有利于软件开发方法和工具的研究与
9
使用,从而提高了大型软件项目开发的质量和效率。
缺点:(1)在软件开发的初始阶段指明软件系统的全部需求是困难的,有时甚至是不现实的。
而瀑布模型在需求分析阶段要求用户和系统分析员必须做到这一点才能开展后续阶段的工
作。(2)需求确定后,用户和软件项目负责人要等相当长的时间才能得到一份软件的最初版
本。如果用户对这个软件提出比较大的修改意见,那么整个软件项目将会蒙受巨大的人力、
财力和时间方面的损失。
原型模型:
优点:采用主动的、正常的迭代避免了瀑布模型被迫的、不正常的返工,因而可以降低总的
开发费用和开发时间,并且使系统更易于维护、对用户更友好。
缺点:存在迭代可能不收敛于开发者预定目标,资源规划和管理较为困难以及更新文档麻烦
等不足。
2-5 什么是模块的内聚和耦合?为什么要遵循“高内聚低耦合”原则?
答:内聚:模块内部各个元素彼此结合的紧密程度的度量。
耦合:软件结构中各个模块之间相互关联程度的度量。
为提高模块的独立性,要尽量遵循“高内聚低耦合”原则。
2-6 信息隐藏和局部化有什么好处?
答:信息隐蔽可以提高软件的可维护性,而且也可以避免错误的蔓延,改善软件的可靠性。
局部化是指把一些关系密切的软件元素尽可能放在一起。当需要理解或修改某个软件元素
时,可以把修改所产生的影响局限在较小的范围。
二、部分例题题及解题思路
,下列( )是实施原型化的最基本步骤?
a. 获得基本需求 b. 开发工作模型
c. 严格仔细说明 d. 模型验证
A、全部都是 B、 a,b 和 d
C、 d D、 a和 b
答案:B
2. 对软件进行分解,是为了( )
A、降低模块的复杂程度
B、降低模块间接口的复杂程度
C、降低模块的复杂程度,并降低模块间接口的复杂程度
D、降低模块的复杂程度,并提高模块间接口的复杂程度
答案:A 模块化的目的是为了降低软件的复杂性。对软件进行适当的分解,不但可以降低
复杂性,而且可减少开发工作量,从而降低软件开发成本,提高软件生产率。但是,划分模
块并不是越多越好,因为这会增加模块之间接口的工作量,所以划分模块的层次和数量应该
避免过多或过少。
( )。
A、瀑布模型上一阶段的