软件工程与实践(第4版 新形态) 练习与实践1
软件工程与实践(第4版 新形态) 练习与实践1
1.填空题
(1)程序,文档
(2)系统软件,支撑软件,应用软件
(3)系统方法
(4)软件开发和维护
(5)工程的概念、原理、技术和方法
(6)实现软件的优质高产
(7)软件开发技术和软件工程管理
2.选择题
(1)B
(2)D
(3)A
(4)C
(5)B
3.简答题
(1)什么是软件?软件和程序的区别是什么?
答:软件(Software)是计算机及手机等终端设备运行的程序、数据、文档和服务的集合,包括指令程序、数据、相关文档和完善的售后服务的完整集合。即:软件=程序 + 数据 + 文档 + 服务。
软件和程序的区别是:
软件 | 程序 |
---|---|
软件主要依赖于操作系统。 | 程序主要依赖于编译器。 |
软件的各种类别包括应用软件、系统软件、计算机编程工具等。 | 没有这样的程序类别。 |
软件的大小一般从兆字节(Mb)到千兆字节(Gb)。 | 程序的大小一般从千字节(Kb)到兆字节(Mb)。 |
软件通常由具有专业知识和经验的人开发,并且在开发软件方面受过培训,也被称为软件开发人员。 | 程序通常是由初学者开发的,没有任何经验。 |
软件可以是一个通常在计算机上运行的程序。 | 程序不能是一个软件。 |
如果计算机中不存在软件,那么计算机就没有用处。 | 如果计算机中没有程序,那么由于操作系统的存在,计算机也可以很好地运行。 |
软件可以通过互联网下载到电脑上,不需要任何程序。 | 如果计算机中没有任何软件,程序就不能在计算机上运行。 |
软件的特点包括安全、可靠、正确等。 | 程序的特点包括可靠、成本效益、可维护性、盈利性等。 |
创建软件比创建程序需要更多时间。 | 创建程序所需的时间比软件少。 |
(2)什么是软件危机?软件危机的主要表现是什么?怎样消除软件危机?
答:软件危机是指落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。
软件危机的主要表现:
- 软件的发展跟不上硬件的发展和用户的需求,软件成本高;
- 软件的成本和开发进度不能预先估计,用户不满意;
- 软件产品质量差,可靠性不能保证;
- 软件产品可维护性差;
- 软件没有合适的文档资料。
消除软件危机:
- 使用好的软件开发技术和方法
- 使用好的软件开发工具,提高软件生产率
- 有良好的组织、严密的管理,各方面人员相互配合共同完成任务
(3)什么是软件工程?什么是软件过程?软件过程与软件工程方法学有何关系?
答:软件工程:软件工程是计算机科学的一个重要分支。软件工程是指导计算机软件开发和维护的学科。软件工程采用工程的概念、原理、技术和方法来开发与维护软件。软件工程的目标是实现软件的优质高产,目的是在经费的预算范围内按期交付出用户满意的、质量合格的软件产品。
软件过程:软件过程(software process)ISO9000定义为:将输入转化为输出的一组彼此相关的资源和活动。
软件过程与软件工程方法学的关系:软件过程是软件工程方法学的一部分,它是软件工程方法学中的一个重要组成部分,是软件工程方法学的实施过程。
(4)软件工程学的主要内容是什么?
软件工程原理 | 软件目标、原则、学科基础 |
---|---|
软件工程过程 | 开发过程、运作过程、维护过程,如获取、供应、管理、开发、运作、维护、支持、剪裁 |
软件工程技术 | 开发技术、管理技术、度量技术、维护技术、应用技术 |
软件工程方法 | 开发方法、管理方法、度量方法、维护方法、应用方法、环境方法 |
软件工程模型 | 领域模型、需求模型、设计模型、实现模型、测试模型 |
软件工程管理 | 项目管理、质量管理、文档管理 |
软件工程度量 | 规模、复杂度、进度、费用、工作量 |
软件工程环境 | 硬件、网络、支撑软件 |
软件工程应用 | 应用软件工程基本原理、方法、技术解决特定领域问题 |
(5)软件工程学的基本原理是什么?
答:
(1)开发小组的人员应该优化组合且少而精。
(2)用分阶段的生存周期计划进行严格管理。
(3)坚持进行阶段评审。软件的质量保证工作不能等到编码阶段结束之后再进行。
(4)实行严格的软件产品控制。
(5)采用现代程序设计技术。
(6)软件工程结果应能清楚地审查。
(7)承认不断改进软件工程实践的必要性。
(6)什么是软件生存周期?软件生存周期为什么要划分阶段?划分阶段的原则是什么?
**软件生存周期:**软件生命周期(Software Life Cycle)是从设计软件产品开始,到产品不能使用为止的时间周期。软件生命周期通常包括软件计划阶段、需求分析阶段、设计阶段、实现阶段、测试阶段、安装阶段和验收阶段以及使用和维护阶段,有时还包括软件引退阶段。
软件生存周期为什么要划分阶段:
阶段划分是软件工程的核心实践,通过降低复杂度、明确目标、控制风险、优化资源、保障质量,确保软件开发过程可控、高效且可预测。不同项目可根据需求选择适合的模型(如瀑布、敏捷、螺旋模型),但阶段化管理的核心理念始终贯穿其中。
划分阶段的原则是:
- 各阶段的任务彼此间尽可能相对独立。这样便于逐步完成每个阶段的任务,能够简化每个阶段的工作,容易确立系统开发计划。
- 同一阶段的工作任务性质尽可能相同。这样有利于软件工程的开发和组织管理,明确系统各方面开发人员的分工与职责范围,以便协同工作,保证质量。
(7)什么是软件开发方法?软件开发方法有哪些主要方法?
答:软件开发方法是指系统化、规范化的流程和技术的集合,用于指导软件从需求分析到维护的全过程。
软件开发方法有瀑布模型、快速原型模型、增量模型、喷泉模型、统一过程模型。
(8)比较各种软件开发模型(模式)的特点。
模型 | 流程特点 | 核心优势 | 主要挑战 | 典型适用场景 |
---|---|---|---|---|
瀑布模型 | 线性不可逆 | 管理简单,文档完备 | 无法应对需求变化 | 需求明确的小型传统项目 |
快速原型模型 | 原型迭代验证需求 | 快速明确用户真实需求 | 原型可能误导开发方向 | 需求模糊的创新产品 |
增量模型 | 分阶段交付可用版本 | 用户早期参与,风险分散 | 架构设计需前瞻性 | 需快速占领市场的模块化系统 |
喷泉模型 | 面向对象阶段重叠 | 高灵活性,适应复杂系统 | 管理难度大 | 面向对象的分布式系统开发 |
统一过程模型 | 迭代分阶段风险优先 | 平衡灵活性与规范性 | 实施成本高 | 需求复杂的大型企业级项目 |