题目复习
单选题
软件产品的核心特性是什么?
A. 物质性
B. 逻辑性
C. 可复制性
D. 消耗性
正确答案:B
单选题
在软件开发过程中,哪个环节最接近于传统制造业中的“生产”过程?
A. 需求分析
B. 编码
C. 测试
D. 研制(研发)
正确答案:D(虽然编码也是生产的一部分,但研制更全面地涵盖了从需求到实现的整个过程)
单选题
软件工程学的出现主要是为了应对什么问题?
A. 程序设计方法的落后
B. 计算机硬件的快速发展
C. 软件危机
D. 信息安全问题
正确答案:C
单选题
软件工程的核心目标是什么?
A. 引入新技术提高软件性能
B. 用较少的投资获得高质量的软件
C. 缩短软件开发周期
D. 使软件与硬件完美结合
正确答案:B
单选题
以下哪一项不是软件危机的典型表现?
A. 软件开发成本不断攀升
B. 软件生产效率低下
C. 软件更新频繁导致兼容性问题
D. 软件质量难以保证
正确答案:C(虽然软件更新是常态,但兼容性问题不是软件危机的直接表现)
单选题
软件开发中,高成本与低质量之间的矛盾被称为什么?
A. 软件矛盾
B. 软件危机
C. 技术瓶颈
D. 经济问题
正确答案:B
单选题
为了解决软件开发中的高成本与低质量矛盾,人们提出了哪种方法?
A. 引入自动化测试工具
B. 采用工程学原理设计软件
C. 提高程序员薪资
D. 加强软件安全培训
正确答案:B
单选题
软件工程学强调将什么原则应用于软件开发中?
A. 最大化利润
B. 最小化成本
C. 系统化、规范化、文档化
D. 快速迭代
正确答案:C
单选题
以下哪项是软件工程学的核心思想之一?
A. 以用户为中心
B. 以技术为中心
C. 以管理为中心
D. 以质量为中心
正确答案:D(虽然用户、技术和管理都很重要,但质量是软件工程学的核心关注点)
单选题
软件工程中的“软件工程”一词,主要强调的是什么?
A. 软件的技术性
B. 软件的工程化方法
C. 软件的经济性
D. 软件的创新性
正确答案:B
单选题
在软件开发过程中,哪个阶段通常用于确定软件的功能和性能需求?
A. 编码
B. 测试
C. 需求分析
D. 维护
正确答案:C
多选题
以下哪些属于软件生命周期的主要阶段?
A. 需求分析
B. 编码
C. 测试
D. 部署
E. 维护
正确答案:A, B, C, D, E
单选题
哪种软件开发模型强调逐步细化需求和增量式开发?
A. 瀑布模型
B. 原型模型
C. 螺旋模型
D. 敏捷开发模型
正确答案:D(虽然螺旋模型也涉及增量式开发,但敏捷开发模型更强调逐步细化和快速迭代)
填空题
软件工程的核心目标是利用有限的资源和时间,开发出满足用户需求的、高质量、可维护的______。
正确答案:软件产品
在软件开发过程中,______阶段是将用户需求转化为具体的设计规格说明的过程。
正确答案:需求分析
______模型是一种迭代式的软件开发模型,它强调快速反馈和持续改进。
正确答案:敏捷开发
简答题
- 简述软件工程的基本原则。
参考答案:
软件工程的基本原则包括:
- 采用适宜的开发模型;
- 采用规范的开发过程;
- 严格进行阶段评审;
- 实行严格的产品控制;
- 采用现代程序设计技术;
- 结果应能清楚地审查;
- 开发小组的人员应该少而精;
- 承认不断改进软件工程实践的必要性。
- 解释什么是软件危机,并列出至少两种解决软件危机的方法。
参考答案:
软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题,这些问题可能包括软件开发成本超出预算、开发进度延误、软件质量无法满足用户需求等。
解决软件危机的方法包括:
- 采用工程化的开发方法,如瀑布模型、原型模型、螺旋模型或敏捷开发等,以确保软件开发过程的规范性和可控性;
- 加强软件需求分析,确保软件需求明确、完整、一致,从而减少因需求变更导致的开发成本和进度的增加;
- 采用先进的软件开发工具和技术,如自动化测试工具、持续集成工具等,以提高软件开发效率和质量;
- 加强软件项目管理,包括制定合理的项目计划、进行有效的项目监控和风险管理等,以确保软件项目的顺利进行。
知识回顾
1.1 软件与软件危机
软件:
软件是计算机系统中与硬件相互依存的另一部分,包括程序、数据及其相关文档的完整集合。其中,程序是能够完成预定功能和性能的可执行指令序列;数据是使程序能够适当地处理信息的数据结构;文档是开发、使用和维护过程中所需要的图文资料。软件具有复杂性、成本高昂、未摆脱手工开发方式、维护与硬件维护有本质区别且维护难度高等特点。
软件危机:
软件危机是指在计算机软件开发和维护过程中所遇到的一系列严重问题。它主要包含两个方面:如何开发软件以满足日益增长的软件需求,以及如何维护数量不断膨胀的已有软件。软件危机的主要表现形式包括实际成本比估计成本高出很多、实际进度比预期进度严重拖延、软件产品质量不可靠等。
1.2 软件工程学的范畴
软件工程学是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及到程序设计语言、数据库、软件开发工具、系统平台、标准、设计模式等多个方面。软件工程的方法有很多方面的意义,包括项目管理、分析、设计、程序的编写、测试和质量控制等。软件工程学的范畴还包括对软件开发过程和软件过程改进的研究,以及探索更好更有效的管理措施和手段对开发过程进行控制和管理。
1.3 传统软件工程和面向对象软件工程
传统软件工程:
传统软件工程是以结构化程序设计为基础,采用结构化分析、结构化设计和结构化实现来完成软件开发的各项任务。它把软件生存周期划分成若干个阶段,然后顺序完成各个阶段的任务。传统软件工程的特点是每一个阶段的开始和结束都有严格标准,前一阶段结束的标准是后一阶段工作开始的标准。
面向对象软件工程:
面向对象软件工程是以面向对象程序设计为基础,其开发方法的重点是放在软件生存周期的分析阶段。因为面向对象方法在开发的早期就定义了一系列面向问题领域的对象,即建立了对象模型,整个开发过程统一使用这些对象,并不过分充实和扩展对象模型。面向对象软件工程的特点是开发阶段界限模糊,开发过程逐步求精,开发活动反复迭代。
1.4 软件工程的应用
软件工程的应用广泛,它结合了工程学的原则、实践和工具,以确保软件产品的高质量、可靠性、可维护性和满足用户需求。软件工程的应用包括需求分析、设计、实现、测试、部署和维护等多个阶段。
在需求分析阶段,软件工程师与项目干系人合作,收集、分析、规范和记录软件系统的功能性和非功能性需求。在设计阶段,创建系统架构和详细设计,包括模块划分、接口定义和数据结构等。在实现阶段,编写代码和实现设计中的各个模块和功能。在测试阶段,验证软件系统是否符合需求。在部署阶段,将软件产品发布到生产环境。在维护阶段,进行软件的更新、修复和改进。
此外,软件工程还涉及项目管理、版本控制、文档管理、质量保证等多个领域,以支持整个软件开发过程的顺利进行。通过应用软件工程的方法学和最佳实践,可以提高软件开发的效率,降低风险和成本,并最终交付高质量的软件产品。