chap01 软件与软件工程
1.软件、软件危机、软件工程的基本概念
- (计算机)软件是计算机系统中与硬件相互依存的另一部分,它是包括程序、数据及其相关文档的完整集合。 逻辑产品
- 软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。即包含两方面的问题: (1)如何开发软件 (2)如何维护软件
- 软件工程:是用工程、科学和数学的原则与方法研制、维护计算机软件的有关技术和管理方法
2.软件生存周期的相关知识


软件开发与测试的V型关系 【重点】
3.瀑布模型、螺旋模型以及快速原型模型的主要思想以及特点
瀑布模型(生存周期模型)
就是传统的生命周期方法学(既自顶向下结构化开发模型方法)。


1.阶段间具有顺序性和依赖性
这个特点有两重含义: ①必须等前一阶段的工作完成之后,才能开始后一阶段的工作; ②前一阶段的输出文档就是后一阶段的输入文档,因此,相邻两个阶段具有因果关系,只有前一阶段的输出文档正确,后一阶段的工作才能获得正确的结果。
2.尽可能推迟软件的编码
对于规模较大的软件项目来说,往往编码开始得越早最终完成开发工作所需要的时间反而越长。这是因为,前面阶段的工作没做或做得不扎实,过早地考虑进行程序实现,往往导致大量返工,有时甚至发生无法弥补的问题,带来灾难性后果。
3.文档驱动性
在瀑布模型的每个阶段都应坚持两个重要做法:
(1) 每个阶段都必须完成规定的文档,没有交出合格的文档就是没有完成该阶段的任务。
(2) 每个阶段结束前都要对所完成的文档进行评审,以便尽早发现问题,改正错误。
严格文档审查保证了软件的质量。
1. 强迫开发人员采用规范的技术方法。
2. 严格地规定了每个阶段必须提交的文档。
3. 每个阶段结束前必须正式进行严格的技术审查和管理复审。
从而使软件过程易于管理和控制,有利于质量的保证
1.无法解决软件需求不明确或不准确的问题,要求软件开发初期就要给出软件系统全部需求。不适合需求模糊的系统
2.模型是一种理想的线性开发模型,必须等前一阶段的工作完成之后,才能开始后一阶段的工作。缺乏灵活性而且开发周期比较长,承担的风险也比较大。
瀑布模型适合于功能和性能需求明确、完整、无重大变化的软件开发。例如,编译系统、数据库系统和操作系统等。
•适用范围
1.结构化方法,面向过程的软件开发方法
2.需求变化少
3.开发人员熟悉应用领域
4.低风险项目
5.使用环境稳定
原型模型(Prototyping Model)

快速开发原型的途径
原型模型的特点
优点
用户参与
快速
缺点
快速
对开发环境要求高
|
• 适用范围
已有产品(原型)
简单而熟悉的领域
有快速原型开发工具
进行产品移植或升级
|
螺旋模型(Spiral Model)
螺旋模型的特点
习题练习
一、单项选择
1. 软件生命周期一般包括:软件开发期和软件运行期,下述( )不是软件开发期所应包含的内容。
A 需求分析 B 结构设计 C 程序编制 D 软件维护
答案:D 软件维护
软件维护发生在软件部署后的运行阶段,不属于开发期所含内容。
2. 软件是一种逻辑产品,它的开发主要是( )。
A 研制 B 拷贝 C 再生产 D 复制
答案:A 研制
软件开发是通过设计和编写代码来创建一个新系统的过程。
3.以文档作为驱动,适合于软件需求很明确的软件项目的生存周期模型是( )。
A 喷泉模型 B 增量模型 C 瀑布模型 D 螺旋模型
答案:C 瀑布模型
瀑布模型是一个线性和顺序的软件开发过程模型,适合于需求明确的项目。
4. 在软件生存周期中, ( )阶段必须要回答的问题是“要解决的问题是做什么?” 。
A 详细设计 B 可行性分析和项目开发计划 C 概要设计 D 软件测试
答案:B 可⾏性分析和项⽬开发计划
这一阶段确定项目的目标和要求,回答“要解决的问题是做什么”。
详细设计、概要设计关注设计实现
软件测试验证软件质量
5. 软件产品与物质产品有很大区别,软件产品是一种( )产品
A 有形 B 消耗 C 逻辑 D 文档
答案:C 逻辑
软件产品是逻辑性的,它不像物质产品那样有形。
6. ( )把瀑布模型和专家系统结合在一起,在开发的各个阶段上都利用相应的专家系统来帮助软件人员完成开发工作。
A 原型模型 B 螺旋模型 C 基于知识的智能模型 D 喷泉模型
答案:C 基于知识的智能模型
这个模型结合瀑布模型和知识系统,利用专家系统帮助开发。
7. ()阶段是为每个模块完成的功能进行具体的描述, 要把功能描述转变为精确的、结构化的过程描述。
A 概要设计 B 详细设计 C 编码 D 测试
答案:B 详细设计
在详细设计阶段,对每个模块的功能进行具体化描述。
8. 下列软件开发模型中,适合于那些不能预先确切定义需求的软件系统的开发的模型是( )。
A 原型模型 B 瀑布模型 C 基于知识的智能模型 D 变换模型
答案:A 原型模型
原型模型适合于需求不明确的软件开发,通过不断的反馈来明确需求。
9.下列软件开发模型中,以面向对象的软件开发方法为基础,以用户的需求为动力,以对象来驱动的模型是( )。
A 原型模型 B 瀑布模型 C 喷泉模型 D 螺旋模型
答案:C 喷泉模型
喷泉模型强调面向对象的方法,需求由对象驱动。
10.下列软件开发模型中,支持需求不明确,特别是大型软件系统的开发,并支持多种软件开发方法的模型是( )。
A 原型模型 B 瀑布模型 C 喷泉模型 D 螺旋模型
答案:D 螺旋模型
螺旋模型支持大型系统开发,通过迭代处理不明确的需求。
11. 软件特性中,使软件在不同的系统约束条件下,使用户需求得到满足的难易程度称为( )。
A 可修改性 B 可靠性 C 可适应性 D 可重用性
答案:C 可适应性
可适应性指软件在不同条件下满足用户需求的能力。
12. 软件特性中,一个软件能再次用于其他相关应用的程度称为( )。
A 可移植性 B 可重用性 C 容错性 D 可适应性
答案:B 可重⽤性
可重用性指一个软件能用于其他相关应用的程度。
13. 软件特性中,( )是指系统具有清晰的结构,能直接反映问题的需求的程度。
A 可理解性 B 可靠性 C 可适应性 D 可重用性
答案:A 可理解性
可理解性指系统结构清晰,能反映问题需求的程度。
14.软件特性中,软件产品交付使用后,在实现改正潜伏的错误、改进性能、适应环境变化等方面工作的难易程度称为( )。
A 可理解性 B 可维护性 C 可适应性 D 可重用性
答案:B 可维护性
可维护性涉及在软件交付后修正错误或进行改进的容易程度。
15.软件特性中,软件从一个计算机系统或环境移植到另一个上去的难易程度指的是( ) .
A 可理解性 B 可修改性 C 可移植性 D 可重用性
答案:C 可移植性
可移植性指软件从一个环境转移到另一个环境的难易程度。
16.软件特性中,在给定的时间间隔内,程序成功运行的概率指的是( )。
A 有效性 B 可适应性 C 正确性 D 可靠性
答案:D 可靠性
可靠性是在给定的时间内软件成功运行的概率。
17.软件特性中,允许对软件进行修改而不增加其复杂性指的是( )。
A 可修改性 B 可适应性 C 可维护性 D 可移植性
答案:A 可修改性
可修改性允许对软件进行更改而不增加复杂性。
18. 软件特性中,多个软件元素相互通讯并协同完成任务的能力指的是( )。
A 可理解性 B 可互操作性 C 可维护性 D 可追踪性
答案:B 可互操作性
可互操作性指多个软件元素之间相互通讯和协同工作的能力。
19. 软件特性中,根据软件需求对软件设计、程序进行正向追踪,或根据程序、软件设计对软件需求进行逆向追踪的能力指的是( )。
A 可理解性 B 可互操作性 C 可追踪性 D 可维护性
答案:C 可追踪性
可追踪性指正向和逆向追踪软件需求与软件设计的能力。
20. 软件的可修改性支持软件的( )。
A 有效性 B 可互操作性 C 可追踪性 D 可维护性
答案:D 可维护性
可修改性支持软件的可维护性,便于后续的修改和维护。
21. 软件的可移植性支持软件的( )。
A 可适应性 B 可互操作性 C 可追踪性 D 有效性
答案:A 可适应性
可移植性支持软件的可适应性,使软件在不同环境中运行。
22.软件的可理解性支持软件的( )。
A 有效性 B 可移植性 C 可追踪性 D 可靠性
答案:B 可移植性
23.在软件工程的原则中,抽象、信息隐藏、模块化和局部化的原则支持软件的( )。
A 有效性 B 可互操作性 C 可靠性 D 可追踪性
答案:C 可靠性
软件工程原则中的模块化等有助于提高软件的可靠性。
24.下列选项中,属于需求分析阶段的任务的是( )。
A 组装测试计划 B 单元测试计划 C 软件总体设计 D 验收测试计划
答案:D 验收测试计划解析:
- 需求分析阶段:主要是明确软件需做什么,包括功能、性能等要求。
- A. 组装测试计划属测试阶段,非需求分析。
- B. 单元测试计划同样属测试,非需求分析任务。
- C. 软件总体设计是设计阶段任务,非需求分析。
- D. 验收测试计划在需求分析时制定,以确保软件满足用户需求,属需求分析阶段任务。
25.下列选项中,属于概要设计阶段的任务的是( )。
A 组装测试计划 B 单元测试计划 C 初步用户手册 D 验收测试计划
答案:A 组装测试计划
26.下列选项中,属于详细设计阶段的任务的是( )。
A 组装测试计划 B 单元测试计划 C 初步用户手册 D 验收测试计划
答案:B 单元测试计划
详细设计需要对每个模块的实现进行具体规划,包括单元测试计划。
27.下列选项中,属于实现阶段的任务的是( )。
A 组装测试计划 B 绘制程序流程图 C 单元测试 D 验收测试计划
答案:C 单元测试
实现阶段包括程序编码和单元测试。
28.下列选项中,在验收测试结束时,必须提交给用户的是( )。
A 项目开发总结报告 B 验收测试计划 C 需求规格说明书 D 最终用户手册
答案:D 最终⽤户⼿册
验收测试结束后,最终用户手册必须提交给用户以指导使用。
二、填空
1.计算机软件是指与计算机系统操作有关的 以及任何与之有关的文档资料。
答案:程序、数据
2. 是将软件生存周期各个活动规定为依线性顺序连接的若干阶段的模型。
答案:瀑布模型
3. 是软件生存周期中时间最长的阶段。
答案:维护阶段
4. 是一种以用户需求为动力,以对象作为驱动的模型,适合于面向对象的开发方法。
答案:喷泉模型
5.软件生存周期是指一个软件从 开始直到该软件最终退役为止的整个时期。
答案:定义
6.在软件的生产过程中,总是有大量各种信息要记录,因此, 在产品的开发过程中起着重要的作用。
答案:文档
7.在软件生存周期中,软件定义过程的基本任务是确定软件系统的 。
答案:工程需求
8.在软件生存周期中,软件定义过程可以通过软件系统的 两个阶段来完成。
答案:可行性研究和需求分析
9.在软件生存周期中,软件开发过程可以通过 、 、实现、组装测试、验收测试共5 个阶段组成。
答案:概要设计、详细设计
10.我们把支持软件项目的 的软件叫做软件开发的工具软件。
答案:开发、管理、维护活动
11. 软件工程由 三部分组成,称为软件工程的三要素。
答案:方法、过程和工具
三、简答题
1.软件产品的特点是什么
①软件开发与硬件研制相比,更依赖于开发人员的业务素质、智力、人员的组织、合作和管理。
②大型软件仍然存在着潜伏的错误。
③软件产品开发成功后,只需对原版软件进行复制,即可生产出任意多的同样的产品。
④还有,软件在使用过程中的维护工作比硬件要复杂得多。
⑤由于软件不是物理产品,所以它不会磨损和老化。
2.软件危机的表现有哪些?
1)对软件开发成本和进度的估计常常很不准确。
2)用户对已完成的软件不满意的现象时有发生。
3)软件产品的质量往往是靠不住的。
4)软件常常是不可维护的。
5)软件通常没有适当的文档资料。
6)软件成本在计算机系统总成本中所占比例逐年上升。
7)软件开发生产率提高的速度远跟不上日益增长的软件需求。
3.产生软件危机的原因主要有哪些?
1)用户对软件需求的描述不精确。
2)软件开发人员对用户需求的理解有偏差。
3)缺乏处理大型软件项目的经验。
4)开发大型软件易产生疏漏和错误。
5)缺乏有力的方法学的指导和有效的开发工具的支持。
6)面对日益增长的软件需求,人们显得力不从心。
4.软件工程的7 条基本原理是什么?
1)用分阶段的生存周期计划严格管理
2)坚持进行阶段评审
3)实行严格的产品控制
4)采用现代程序设计技术
5)结果应能清楚地审查
6)开发小组的人员应少而精
7)承认不断改进软件工程实践的必要性
5.软件生存周期如何划分?
可将软件生存周期划分为3 个过程共9 个阶段。
软件定义过程:由可行性研究和需求分析2 个阶段组成;
软件开发过程:由概要设计、详细设计、实现、组装测试、验收测试5 个阶段组成;
软件使用与维护过程:由使用与维护和退役2 个阶段组成。
6.瀑布模型适合于哪类软件系统的开发?
瀑布模型一般适用于功能、性能明确、完整、无重大变化的软件系统的开发。例如操作系统、编译系统、数据库管理系统等系统软件的开发。
7.瀑布模型的缺点主要有哪些?
1)在软件开发的初期阶段就要求做出正确、全面、完整的需求分析对许多应用软件来说是极其困难的。
2)在需求分析阶段,当需求确定后,无法及时验证需求是否正确、完整。
3)不支持产品的演化,缺乏灵活性,使软件产品难以维护。
8.实现快速原型的开发途径有哪三种?
1)仅模拟软件系统的人机界面和人机交互方式。
2)开发一个工作模型,实现软件系统中重要的或容易产生误解的功能。
3)利用一个或几个类似的正在运行的软件向用户展示软件需求中的部分或全部功能。
9.螺旋模型的优点有哪些?
螺旋模型的主要优点有:
1)支持用户需求的动态变化。
2)原型可看作形式的可执行的需求规格说明,易于为用户和开发人员共同理解,还可作为继续开发的基础,并为用户参与所有关键决策提供了方便。
3)螺旋模型特别强调原型的可扩充性和可修改性,原型的进化贯穿整个软件生存周期,这将有助于目标软件的适应能力。
4)为项目管理人员及时调整管理决策提供了方便,进而可降低开发风险。
10.螺旋模型适于哪种情况的软件开发?
螺旋模型支持需求不明确、特别是大型软件系统的开发,并支持面向规格说明、面向过程、面向对象等多种软件开发方法,是一种具有广阔前景的模型。