软件工程简答题 第一章 绪论
1. 什么是软件危机?软件危机有什么表现?软件危机产生的原因是什么?
答:所谓软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。 指如何开发软件,怎样满足对软件日益增长的需求,如何维护数量不断膨胀的先有软件。 表现:(1)对于软件开发的成本和进度的估计很不准确。
(2)开发的软件产品不能完全满足
(3)开发的软件可靠性差。 (4)
主要是
用户要求, 用户对已完成的软件系统不满意的现象常常发生。
软件通常没有适当的文档资料。 (5)软件的可维护性差。 (6)软件开发生产率提高的速度, 远远跟不上计算机应用普及深入的趋势。
原因:软件开发中遇到的问题因找不到解决的办法,使问题积累起来,形成了尖锐的矛盾, 导致了软件危机。
2. 简述软件的发展过程。
答:软件生产的发展划分为三个年代: (1)程序设计时代:这一时期,软件的生产主要是个 体手工劳动的生产方式。 (2)程序系统时代: 由于计算机的应用领域不断扩大,软件的需求 也不断增长, 软件由于处理的问题域扩大而使程序变得复杂,
设计者不得不由个体手工劳动
(3)软件工程时代:
组成小集团合作, 形成作坊式生产方式小集团合作生产的程序系统时代。
软件工程时代的生产方式是采用工程的概念、原理、技术和方法,使用数据库、开发工具、 开发环境、网络、分布式、面向对象技术来开发软件。
3. 什么叫软件工程?软件工程是如何克服软件危机的? 答:软件工程是将系统的、规范的、
可度量的工程化方法应用于软件开发、
运行和维护的全
采用
过程及上述方法的研究。 为了克服软件危机, 人们从其他产业的工程化生产得到启示, 工程的概念、原理、技术和方法来开发和维护软件。
4. 软件工程的目标是什么?软件工程有哪些原则?
答:软件工程的目标是:在给定成本、进度的前提下,开发出具有可修改性、有效性、可靠 性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性并满足 用户需求的软件产品。原则如下:抽象、模块化、信息隐藏、局部化、完整性、一致性和可 验证性。
5. 为什么说软件工程是一门综合性的交叉学科?
答:因为软件工程涉及哲学、计算机科学、工程科学、管理科学、数学和应用领域知识。
6. 软件工程方法学的基本内容包括哪些?
答:基本内容包括: (1)结构化理论和方法。 (2)模块技术与数据抽象。 (3)软件测试与程 序正确性证明。 (4)软件分析与设计方法、工具和环境。
(5)软件工程管理与质量评价。
7. 软件产品具有哪些特殊性质? 答:Not found.
8. 软件工程学研究的对象是什么?
答:软件工程研究的主要内容包括软件开发技术和软件开发管理两个方面。
在软件开发技术
中,它主要研究软件开发方法、软件开发过程、软件开发工具和环境。在软件开发管理中, 它主要研究软件管理学、软件经济学和软件心理学等。
第二章 基本理论
1. 什么是软件的生命周期模型?它主要有那些模型?
答:软件生命周期模型是描述软件开发过程中各种活动如何执行的模型。 原型模型、增量模型、螺旋模型、喷泉模型、基于知识的模型和变换模型。
主要有:瀑布模型、
2. 什么是软件开发方法?有那些主要开发方法?
答:软件开发方法是一种使用早已定义好的技术集及符号表示习惯组织软件生产过程的方法。 主要有:结构化方法、 Jackson方法、维也纳开发方法和面向对象的开发方法。
3. 开发软件为什么首先要确定软件生命周期模型?
答:一个强有力的软件生命周期模型对软件开发提供了强有力的支持, 有活动提供了统一的政策保证,
为软件开发过程中所
它提示了如
为参与软件开发的所有成员提供了帮助和指导。
何演绎软件过程的思想, 是软件生命周期模型化技术的基础, 也是建立软件开发环境的核心。
4. 软件工程过程包括那些过程?
答:包括如下 7 个过程:(1)开发过程( 2)管理过程( 3)供应过程( 4)获取过程( 5)操 作过程( 6)维护过程( 7)支持过程
5. 软件生命周期内阶段的划分为什么要受软件的规模、性质、种类、开发方法等影响? 答:因为软件在其生存期内的每个阶段都有较明显的特征, 方法和工具。
有相对独立的任务, 有其专门的
6. 软件定义与分析时期主要解决什么问题?
答:通俗地讲,主要解决以下问题: (1)要做的是什么软件?( 2)没有有可行性?( 3)软 件的具体需求是什么?( 4)验收标准是什么?
7. 瀑布模型的主要开发过程和优缺点有哪些?
答:开发过程有 6 个阶段:系统需求分析、软件需求分析、系统设计、软件编码、系统测试 和软件维护。优缺点:
8. 简述原型模型的特点,它与瀑布模型的关键区别是什么?
答:原型模型的最大特点是: 利用原型法技术能够快速实现系统的初步模型, 用户进行交流, 以便较准确地获得用户的需求; 一种在新的层次上不断反复推进的过程。
供开发人员和
这是
采用逐步求精的方法使原型逐步完善,
它与瀑布模型的关键区别是它可以大大避免在瀑布
模型冗长的开发过程中看不见产品雏形的现象。
9. 简述喷泉模型的基本思想。
答:喷泉模型以面向对象的软件开发方法为基础, 型。它适合面向对象的开发方法。
以用户需求为动力, 以对象作为驱动的模
第三章 可行性研究
1. 可行性研究论证主要集中在那些领域? 答:Not found.
2. 如何进行软件的成本估算? 答:首先可以用代码行定量估算方法,
把开发软件中实现每一个功能所需要的源代码行数与
成本联系起来。其次可以用任务分解技术估算成本。
3. 可行性研究的任务是什么?
答:一般从以下四个方面研究系统方案的可行性。
(1)技术可行性研究( 2)经济可行性研
究(3)法律可行性研究( 4)开发方案的选择性研究
4. 简述可行性研究的步骤。
答:研究步骤: (1)系统定义( 2)对于现行系统进行分析研究( (4)设计方案( 5)推荐可行的方案( 6)编写可行性研究报告
3)导出新系统的逻辑模型
5. 在软件的系统分析之前,为什么要制订一个系统的标准? 答:Not found.
6. 可行性研究报告的主要内容有哪些?
答:(1)引言( 2)可行性研究前提( 3)对现行系统的分析( 4)所建议系统的技术可行性 分析( 5)所建议系统的经济可行性分析( (8)结论意见
6)社会因素可行性分析( 7)其他可供选择方案
7. 你认为在成本估算中,货币的时间价值在可行性中的作用是什么? 答:由于经济效益与软件的生命周期的长度有关, 维护成本,从而直接影响软件的经济效益。
货币的时间价值就直接影响软件的开发和
8. 经过可行性研究后,一个项目如果值得开发,为什么要制定项目开发计划? 答:因为软件开发项目的计划涉及实施项目的各个环节, 准确性往往关系着项目的成败。
带有全局的性质。 计划的合理性和
第四章 需求分析与系统结构
1. 需求分析的目的是什么?
答:需求分析是软件定义时期的最后一个阶段,其基本任务是回答
“系统必须做什么” 这个
问题,确定系统必须完成哪些工作。对目标系统提出完整、准确的要求。
2. 怎样建立目标系统的逻辑模型?要经过哪些步骤? 答:分析人员根据前面获取的需求资料,
要进行一致性的分析检查,在分析、综合种逐步细
化软件功能,划分成各个子功能。同时对数据域进行分解,并分配到各个之功能上,以确定 系统的构成及主要成分。最后要用图文结合的形式,建立起系统的逻辑模型。
3. 什么是结构化分析?
答:结构化方法是分析、 设计到实现都使用结构化思想的软件开发方法,
实际上它由三部分
组成:结构化分析、结构化设计和结构化程序设计。它也是一种实用的软件开发方法。
4. 需求分析由哪些部分组成?
答:(1)问题明确定义( 2)导出软件的逻辑模型( 3)编写文档
5. 需求分析为什么要研究问题域? 答:Not found.
6. 良好的软件体系结构设计有什么好处? 答:体系结构的设计对于一个大型系统的设计、
开发的成败起着至关重要的作用。
体系结构
对于系统的非功能属性如系统性能、可扩展性、可靠性、安全性、精确度、可复用性、互操 作性等的影响尤为深刻。 因而一个良好的软件体系结构设计保证了软件系统的性能和生命周 期。
7. 消除包之间的循环依赖性有哪两种主要方法?
答:(1) PackageA 将 PackageA 中的循环依赖元素提取到 PackageC 中 PackageA PackageB
PackageB PackageC (2)PackageA PackageA
将 PackageC 中的循环依赖元素提取到
PackageD
中 PackageB PackageB PackageC PackageC PackageD
8. 简述 UML 和 Z 结合的求精方法。
答:和目前工程界的常规方法相比, 基于 UML 和 Z 的软件体系结构求精方法有明显的不同。 首先,开发原则不同,基于
UML 和 Z 的软件体系结构求精方法通常希望能够直接构造出尽
UML 和 Z 的软件系统结构求精方法
60% ~ 70%,
可能正确的系统。其次,开发模式也不同,在使用基于
开发过程中,需求分析和设计阶段需求投入大量的工作通常占到全部工作量的 而编码和测试工作只占
30% ~ 40%。
第五章 总体设计
1. 结构化设计方法的基本思想是什么?它怎样与结构化分析衔接? 答:结构化设计是以结构化分析产生的数据流图为基础,
将数据流图按一定的步骤映射成软
是目前最广泛的软件设
件结构。 与结构化分析衔接, 构成了完整的结构化分析与设计技术, 计方法之一。
2. 简述软件总体设计阶段的基本任务。
答:软件总体设计阶段的任务是概要地回答系统应该如何实现,
因此要把握与详细设计的区
别。要完成如下任务: (1)软件系统结构设计( 2)数据结构及数据库设计( 3)网络系统设 计(4)软件总体设计文档( 5)评审
3. 举例说明各种类型的模块耦合。
答:(1)数据耦合:两个模块彼此间通过参数交换信息,而且交换的信息仅仅是数据。
(2)