简答题
软件工程的定义
软件工程是(1)将系统化、规范化、可度量的方法应用于软件开发、运行和维护,即将工程化方法应用于软件;(2)对(1)中所述方法的研究。
解释导致 software crisis 本质原因、表现,述说克服软件危机的方法
- 本质原因:软件的大量需求与软件生产力效果之间的矛盾和软件系统的复杂性与软件开发方法之间的矛盾。
- 表现:软件开发进度难以预测、软件开发成本难以控制、用户对产品功能难以满足、软件产品质量难以保证、软件产品难以维护、软件缺少适当的文档资料
- 克服软件危机的方法:用现代工程的概念、原理、技术和方法进行计算机软件的开发、管理和维护
软件生命周期
- 在时间维度,对软件项目任务进行划分,又称为为软件开发过程。常见有瀑布模型、螺旋模型、敏捷的模型等。
- 软件生命周期一般包括可行性分析与计划、需求分析、设计 (概要设计和详细设计)、编码实现、测试、运行与维护等活动。这些活动应当以适当的方式分配到不同的阶段去完成。
SWEBoK 的 15 个知识域
11个软件工程实践知识域
- 软件需求:用来描述解决现实世界某个问题的软件产品及对产品的约束
- 软件设计:是软件工程的最核心的内容,由软件体系结构设计、软件详细设计两种活动组成。
- 软件构造:软件构造要求符合设计功能外,还要求控制和降低程序的复杂性、预计变更、进行程序验证和指定软件构造标准。
- 软件测试:用有限的测试用例集合对照预期指定的行为对程序实际的行为进行动态证明的过程。测试用例通常是从无限执行域中适当挑选的。
- 软件维护:软件生存周期的组成部分,要支持系统快速地、便捷地满足新的需求。
- 软件配置管理:一种标识、组织和控制修改的技术,维护整个系统生命周期中软件配置地一致性和可追踪性。
- 软件工程管理:运用管理活动,确保软件开发和维护是系统的、规范的、可度量的。
- 软件工程过程:生产一个最终能够满足用户需求且达到工程目标的软件产品所需要的步骤。
- 软件工程模型和方法:方法分为启发式方法、形式化方法以及原型方法。
- 软件质量:软件质量涉及软件质量需求、软件质量度量、软件属性检测、软件质量管理技术和过程
- 软件工程职业实践:涉及软件工程师以专业、负责和道德的方式实践软件工程所必须具备的知识、技能和态度。
4个软件工程教育基础知识域
- 软件工程经济学:关于在业务环境中做出决策,以使得技术决策与组织的业务目标保持一致。
- 计算基础:提供计算机背景支持
- 数学基础:提供数学背景支持
- 工程基础:提供工程背景支持
简单解释 CMMI 的五个级别
- Level 1 - Initial:无序,自发生产模式。
- Level 2 - Managed:建立了基本的项目管理过程来跟踪费用、进度和功能特性。制定了必要的过程纪律,能重复早先类似应用项目取得的成功经验。
- Level 3 - Defined:已将软件管理和工程两方面的过程文档化、标准化,并综合成该组织的标准软件过程。
- Level 4 – Quantitatively Managed:分析对软件过程和产品质量的详细度量数据,对软件过程和产品都有定量的理解与控制。
- Level 5 - Optimizing:过程的量化反馈和先进的新思想、新技术促使过程持续不断改进。
用自己语言简述 SWEBok 或 CMMI
SWEBok(Software Engineering Body of Knowledge,软件工程知识体系)是 IEEE Computer Society 为了克服软件危机而构建的软件生产的最佳实践与相关知识的框架,用于指导软件工程人才的培养与学科建设。2014 V3 版的 SWEBoK 将知识分为软件工程实践和基础教育两个部分,共15个知识领域,其中软件需求和软件设计是最重要的两个领域。
建立 SWEBok 指南有5个目的:
- 促进世界范围内对软件工程的一致观点;
- 阐明软件工程相对其它学科的位置并确立它们的分界;
- 刻画软件工程学科的内容;
- 提供使用知识体系的主题;
- 为开发课程表和个人认证与许可材料提供一个基础。