第1章软件与软件工程
1.选择题
(1)下列说法中正确的是(
)o
A.20世纪50年代提出了软件工程的概念
B.20世纪60年代提出了软件工程的概念
C.20世纪70年代出现了客户机/服务器技术
D.20世纪80年代软件工程学科达到成熟
(2)软件危机的主要原因是(
Do
B.软件生产能力不足
A.软件工具落后
D.软件本身的特点及开发方法
C.实行严格的产品控制
(3)软件工程的3个要素是(
B.方法、对象和类
A.技术、方法和工具
D.过程、模型和方法
C.方法、工具和过程
)不属于软件工程学科研究的基本内容。
(4)在下列选项中,(
D.软件工程过程
C.软件工程原理
A.软件工程材料B.软件工程方法
2.判断题
(1)软件就是程序,编写软件就是编写程序。
(2)软件危机的主要表现是软件需求增加,软件价格上升。
(3)软件工程学科出现的主要原因是软件危机出现。
(4)软件工具的作用是延长软件产品的寿命。
3.简答题
(1)与计算机硬件相比,计算机软件有哪些特点?
(2)为什么说软件工程的发展可以在一定程度上解决软件危机的各种弊端?
(3)简述软件工程的基本原则。
(4)简述软件工程研究的内容。
(5)简述软件工程的三要素。
(6)简述软件工程的目标。
(7)通常有哪几种软件开发方法?
(8)列举你所知道的软件工程工具。
一、选择题
1. (1)答案:C
解析:20世纪60年代末,“软件工程”概念被首次提出,A、B错误;20世纪70年代出现客户机/服务器技术 ;软件工程学科至今仍在不断发展完善,尚未达到绝对成熟状态,D错误。
2. (2)答案:D
解析:软件危机产生的主要原因是软件本身具有复杂性、易变性等特点,且开发方法不够科学合理,并非单纯因为工具落后、生产能力不足或产品控制问题。
3. (3)答案:C
解析:软件工程三要素是方法、工具和过程。方法是完成软件开发各项任务的技术手段;工具支持软件的开发、管理等活动;过程是为了获得高质量软件所需要完成的一系列任务的框架。
4. (4)答案:A
解析:软件工程学科研究基本内容包括软件工程方法、原理、过程等,“软件工程材料”不属于其研究范畴。
二、判断题
1. (1)答案:×
解析:软件是程序、数据和相关文档的集合,编写软件不仅要编写程序,还要考虑数据组织和文档撰写等工作 。
2. (2)答案:×
解析:软件危机主要表现为软件开发成本和进度失控、软件质量难以保证、软件维护困难等,并非简单的需求增加和价格上升。
3. (3)答案:√
解析:正是因为软件危机暴露出传统软件开发方式的诸多问题,才促使人们研究并提出软件工程学科,以规范和改进软件开发。
4. (4)答案:×
解析:软件工具主要用于辅助软件开发、调试、维护等过程,提高开发效率和质量等,而非延长软件产品寿命。
三、简答题
1. (1)答案
- 抽象性:软件是逻辑实体,没有物理形态,不像硬件有具体物理结构。
- 易修改性:软件修改相对硬件更改物理部件等操作更容易,但也可能带来新问题。
- 复杂性:软件规模和逻辑复杂,涉及大量代码和算法,开发和维护难度大。
- 无磨损性:软件不会像硬件那样因使用产生物理磨损,但会因环境、需求变化等出现老化(如兼容性问题)。
- 生产方式独特:软件生产主要是脑力劳动,通过编程、设计等方式,不同于硬件的工业化生产。
2. (2)答案
软件工程通过采用科学的开发方法(如结构化方法、面向对象方法等)、合理的开发过程(如瀑布模型、敏捷开发等)和有效的工具支持,对软件开发进行规范化管理。可以合理安排开发进度、控制成本、提高软件质量、增强软件可维护性等,从而在一定程度上解决软件危机中成本失控、质量低下、维护困难等弊端。
3. (3)答案
- 抽象:对复杂问题进行高层次描述,提取本质特征,便于理解和处理。
- 信息隐蔽:将模块内信息(数据和过程)隐蔽,只提供对外接口,提高模块独立性和安全性。
- 模块化:把软件划分为独立功能模块,降低软件复杂度,便于开发、维护和管理。
- 局部化:将相关功能和数据集中在特定模块或区域,减少模块间联系,增强内聚性。
- 一致性:软件各部分在功能、接口、风格等方面保持一致,便于理解和维护。
- 完整性:确保软件功能完整,满足用户需求,且具备合理架构和文档。
- 可验证性:软件设计和实现要便于测试和验证,保证软件质量。
4. (4)答案
- 软件工程方法:研究软件开发的技术手段,如结构化方法、面向对象方法、敏捷开发方法等。
- 软件工程过程:涵盖软件生命周期各阶段活动,如需求分析、设计、编码、测试、维护等过程模型和管理。
- 软件工程工具:辅助软件开发各阶段工作的工具,如需求分析工具、代码编辑器、测试工具等。
- 软件工程管理:对软件开发项目的人员、进度、成本、质量等进行管理。
- 软件工程标准与规范:制定统一标准和规范,保障软件开发的一致性和兼容性。
- 软件工程经济学:研究软件开发成本 - 效益分析、投资决策等经济问题。
5. (5)答案
- 方法:完成软件开发各项任务的技术手段,为软件开发提供技术支持,指导如何进行分析、设计、编码等工作。
- 工具:辅助软件开发、管理、维护等活动的软件或硬件,可提高开发效率、保证质量,如编译器、调试器、项目管理工具等。
- 过程:为获得高质量软件需完成的一系列任务框架,规定各阶段活动、输入输出和任务顺序等。
6. (6)答案
- 高质量:确保软件功能正确、性能良好、可靠性高,满足用户需求和期望。
- 低成本:在开发过程中合理控制人力、物力等成本,提高经济效益。
- 按时交付:按照预定计划完成软件开发并交付使用,保证项目进度。
- 易维护:软件结构清晰,便于修改、扩充和完善,降低维护成本。
- 可移植:使软件能在不同硬件平台和操作系统上正常运行,扩大使用范围。
- 可复用:提高软件模块或组件的复用性,减少重复开发工作。
7. (7)答案
- 结构化方法:包括结构化分析(SA)、结构化设计(SD)和结构化编程(SP),自顶向下、逐步求精进行软件设计开发。
- 面向对象方法:以对象为核心,强调封装、继承、多态特性,提高软件可维护性、可复用性。
- 敏捷开发方法:强调团队协作、客户参与、快速迭代,适应需求变化,如Scrum、极限编程(XP)等。
- 原型法:先快速构建软件原型,获取用户反馈后不断改进完善。
- 瀑布模型法:按线性顺序依次进行需求分析、设计、编码、测试、维护等阶段,如同瀑布流水。
8. (8)答案
- 需求分析工具:如Axure(用于创建软件原型,辅助需求分析和展示)、Visio(绘制流程图等需求相关图形) 。
- 设计工具:如Rose(面向对象设计建模工具) 。
- 编程工具:如Visual Studio(集成开发环境,支持多种编程语言开发)、Eclipse(Java等语言开发常用工具) 。
- 测试工具:如JUnit(Java单元测试工具)、Selenium(Web应用自动化测试工具) 。
- 项目管理工具:如Jira(用于任务管理、进度跟踪等)、Trello(以看板形式进行项目管理) 。