1、软件工程的定义?
软件工程是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来的学科。
当然了软件工程的概念十分宽泛,不可能有一个严格的定义,各个不同的组织机构都有着自己认为恰当的定义。
2、解释导致 software crisis 本质原因、表现,述说克服软件危机的方法
本质原因:计算机性能的快速增加和难以解决的问题复杂度,随着软件复杂度的提升,落后的软件生产方式无法满足计算机的迅速发展。
表现:
- 软件开发进度难以控制
- 软件开发超出预算
- 用户对开发出的产品满意度低
- 软件产品质量低下
- 产品难以进行管理和维护
- 无法按时交付
解决方法:
- 使用系统化、与时俱进的软件工程方法,如过程式编程、面向对象编程方法。
- 充分吸收和借鉴人类长期以来从事各种工程项目中积累的行之有效的有效原理、概念、技术与方法。
- 建立与系统化软件生产有关的概念、原则、方法、技术和工具,指导和支持软件系统的生产活动,以期达到降低软件生产成本 、改进软件产品质量、提高软件生产率水平的目标。
- 在软件开发过程中人们开始研制和使用软件工具,用以辅助进行软件项目管理与技术生产。
3、软件生命周期
软件生命周期(Software Life Cycle,SLC)是软件的产生直到报废或停止使用的生命周期。旧的解释是周期内有问题定义、可行性分析、总体描述、系统设计、编码、调试和测试、验收与运行、维护升级到废弃等阶段,这种按时间分程的思想方法是软件工程中的一种思想原则,即按部就班、逐步推进,每个阶段都要有定义、工作、审查、形成文档以供交流或备查,以提高软件的质量。
4、SWEBoK 的 15 个知识域
- 软件需求:关于软件需求的启发、协商、分析、规范和验证。表达了用于解决实际问题的软件产品的需要和约束。
- 软件设计:被定义为定义系统、组件、和其他系统特性的过程及其结果,并涵盖了设计过程和最终产品。软件设计知识域涵盖了设计过程和最终产品。
- 软件构建:通过详细的设计、编码、单元测试、继承测试、调试和验证的组合来详细地创建工作软件。这个知识域涉及软件构建基础、软件管理基础、构建技术、实际考虑以及软件构建工具。
- 软件测试: 是一项评估产品质量并通过识别缺陷来改进产品质量的活动。软件测试涉及根据有限的测试用例集上的预期行为对程序行为进行动态验证。这些测试用例是从执行域中选择的。软件测试知识领域包括软件测试的基础知识、测试技术、人机界面测试和评估、测试相关措施和实际考虑。
- 软件维护:软件维修知识域包括软件维护的基础、软件维护中的关键问题、维护过程、软件维护技术、灾难恢复技术和软件维护工具。
- 软件配置管理:系统的配置是硬件、固件、软件的功能和物理特性的组合。软件配置管理是为了系统地控制配置的变化,在不同时间点识别系统配置的规程,也是在整个软件生命周期中维护配置的完整性和可追溯性的规程。
- 软件工程管理:包含计划、协调、测量、报告和控制项目或程序,以确保软件的开发和维护是系统的、规范的和量化的
- 软件工程进程:涉及软件生命周期过程的定义、实现、评估、测量、管理和改进。
- 软件工程模型和方法:涉及包含多个生命周期阶段的方法,特定生命周期阶段的方法由其他知识域涵盖。
- 软件质量:软件质量知识域包括软件质量基础;软件质量管理过程;以及实用性考量。
- 软件工程专业实践:软件工程师必须拥有知识、技能和态度来以专业、负责和道德的方式来实践软件工程。
- 软件工程经济学:软件工程经济学知识域涉及在业务环境中做出决策,以使技术决策与组织的业务目标保持一致。所涵盖的主题包括软件工程经济学基础;非营利决策;评估、经济风险和不确定性;以及多属性决策。
- 计算基础:涵盖为软件工程实践提供必要的计算背景的基本主题。
- 数学基础:数学基础知识域涵盖了为软件工程实践提供必要数学背景的基本主题。包括集合、关系和函数;基本命题逻辑和谓词逻辑;证明技术;图表和树;离散概率;语法和有限状态机;数论。
- 工程基础:工程基础知识域涵盖了为软件工程实践提供必要的工程背景的基本主题。所涵盖的主题包括经验上的方法和实验技术;统计分析;测量和度量;工程设计;仿真和建模;根本原因分析。
5、简单解释 CMMI 的五个级别
- Level 1 - Initial:软件过程是无序的,有时甚至是混乱的,对过程几乎没有定义,成功取决于个人努力。管理是反应式的。
- Level 2 - Managed:建立了基本的项目管理过程来跟踪费用、进度和功能特性。制定了必要的过程纪律,能重复早先类似应用项目取得的成功经验。
- Level 3 - Defined:已将软件工程和工程两方面的过程文档化、标准化,并综合成该组织的标准软件过程。所有项目均使用经批准、剪裁的标准软件过程来开发和维护软件,软件产品的生产在整个软件过程是可见的。
- Level 4 - Quantitatively Managed:分析对软件过程和产品质量的详细度量数据,对软件过程和产品都有定量的理解与控制。管理有一个作出结论的客观依据,管理能够在定量的范围内预测性能。
- Level 5 - Optimizing:过程的量化反馈和先进的新思想、新技术促使过程持续不断改进。
6、用自己语言简述 CMMI
CMMI(Capability Maturity Model Integration),即能力成熟度模型集成,由卡耐基梅隆大学开发,并由国际信息系统审计协会下的CMMI研究所管理。CMMI即能力成熟度模型集成,是一个过程级别的改进模型,集成了各种现存实施的与将被发展出来的能力成熟度模型,本质是软件管理工程的一部分。CMMI 为过程定义了如下几个成熟度级别: 初始级, 可管理级, 已定义级, 量化管理级, 优化管理级。CMMI的主要关注点在成本效益、明确重点、过程集中和灵活性四个方面。