第1章 软件工程概述 课后习题参考答案
一、选择题
(1)在下列选项中,( D )不是软件的特征
A.系统性与复制性
B.可靠性与一致性
C.抽象性与智能型
D.有形性与可控性
(2)与计算机科学的理论研究不同,软件工程是一门( B )学科。
A.理论性
B.工程性
C.原理性
D.心理性
(3)下列选项中,( C )不是软件生存周期模型
A.螺旋模型
B.增量模型
C.功能模型
D.瀑布模型
(4)软件生存周期中时间最长的阶段是( D )
A.需求分析阶段
B.总体设计阶段
C.测试阶段
D.维护阶段
(5)瀑布模型是一种( D )
A.软件开发方法
B.软件生存周期
C.程序设计方法学
D.软件生存周期模型
(6)软件开发中常采用结构化生存周期方法,由于其特征而一般称其为( A )。
A.瀑布模型
B.对象模型
C.螺旋模型
D.层次模型
(7)在结构性的瀑布模型中,( D )阶段定义的标准将成为软件测试中系统测试阶段的目标。
A.详细设计阶段
B.总体设计阶段
C.可行性研究阶段
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个知识域,包含在两类过程中。一类过程是开发与维护过程,包括软件需求、软件设计、软件构造、软件测试和软件维护;另一类过程是支持过程,包括软件配置管理、软件工程管理,软件工程过程、软件工程工具写方法、软件质量。每个知识域还可进一步分解为若干个论题,在论题描述中引用有关知识的参考文献,形成一个多级层次结构,以此确定软件工程知识体系的内容和边界。