1. 软件工程的定义
将系统化的、规范的、可度量的方法用于软件的开发、运行和维护的过程,即将工程化应用于软件开发中
2. 解释导致 software crisis 本质原因、表现,述说克服软件危机的方法
本质原因:计算机的计算能力指数级增长。
表现:
- 项目运行超出运算
- 项目运行超时
- 软件效率很低
- 软件质量很低
- 软件不匹配需求
- 项目难以管理、代码难以维护
- 软件从未交付。
克服软件危机的方法:构建软件生产的最佳实践与相关知识的框架。
3. 软件生命周期
软件生命周期指软件的产生直到成熟的全部过程。
在瀑布模型中,指的是软件从计划、需求开始,经历分析设计、实现、部署、维护,直到最后逐渐消亡。后来出现了原型模型、螺旋模型、迭代模型后,软件生命周期定义修改成:
- 软件生命周期是指软件的产生直到成熟的全部过程
- 软件生命周期模型是指人们为开发更好的软件而归纳总结的软件生命周期的典型实践参考
4. SWEBoK 的 15 个知识域
- 软件需求:关注软件需求的启发、协商、分析、规范和验证。
- 软件设计:软件体系结构、组件、接口,以及其他的系统或部件的特性的过程中
- 软件构建:通过结合详细设计、编码、单元测试、集成测试、调试和验证来详细创建工作软件
- 软件测试:评估产品质量并通过识别缺陷来改进产品质量的活动,包括软件测试的基础知识、测试技术、人机界面测试与评估、测试方法和实际考虑
- 软件维护:包括增强现有功能、调整软件以在新的和修改的操作环境中运行,以及纠正缺陷。包括软件维护的基础知识(维护的性质和需求,维护类别,维护成本); 软件维护中的关键问题(技术问题,管理问题,维护成本估算,软件维护测量); 维护过程; 软件维护技术(程序理解,重新设计,逆向工程,重构,软件退役); 灾难恢复技术和软件维护工具。
- 软件配置管理:硬件,固件,软件或这些的组合的功能和/或物理特征。它还可以被视为根据特定构建过程组合的特定版本的硬件,固件或软件项的集合,以满足特定目的。涵盖SCM过程的管理;软件配置识别,控制,状态核算,审计;软件发布管理和交付。
- 软件工程过程:关注软件生命周期过程的定义,实施,评估,测量,管理和改进。涵盖的主题包括流程实施和变更(流程基础架构,流程实施和变更模型以及软件流程管理); 流程定义(软件生命周期模型和流程,流程定义,流程适应和流程自动化的符号); 过程评估模型和方法; 测量(过程测量,产品测量,测量技术和测量结果的质量); 和软件处理工具。
- 软件工程模型和方法:涵盖的主题包括建模(软件工程模型的原理和属性;语法与语义与不变量;前置条件,后置条件和不变量); 模型类型(信息,结构和行为模型); 分析(分析正确性,完整性,一致性,质量和相互作用;可追溯性;以及权衡分析); 和软件开发方法(启发式方法,形式方法,原型方法和敏捷方法)。
- 软件质量:包括软件质量的基础知识(软件工程文化,软件质量特性,软件质量的价值和成本以及软件质量改进); 软件质量管理流程(软件质量保证,验证和确认,审核和审核); 和实际考虑(缺陷表征,软件质量测量和软件质量工具)。
- 软件工程专业实践:关注软件工程师必须具备的专业,负责和道德的软件工程知识,技能和态度。涵盖专业性(专业行为,专业协会,软件工程标准,雇佣合同和法律问题); 道德准则; 小组动态(团队合作,认知问题复杂性,与利益相关者互动,处理不确定性和模糊性,处理多元文化环境); 和沟通技巧。
- 软件工程经济学:关注的是在业务环境中做出决策,以使技术决策与组织的业务目标保持一致。涵盖的主题包括软件工程经济学的基本原理(提案,现金流量,货币时间价值,计划视野,通货膨胀,折旧,替代和退休决策); 非营利性决策(成本效益分析,优化分析); 估计,经济风险和不确定性(估算技术,风险决策和不确定性); 和多属性决策(价值和衡量尺度,补偿和非补偿技术)。
- 计算基础:涵盖了提供软件工程实践所需的计算背景的基础主题。涵盖的主题包括问题解决技术,抽象,算法和复杂性,编程基础,并行和分布式计算的基础知识,计算机组织,操作系统和网络通信。
- 数学基础:涵盖了提供软件工程实践所必需的数学背景的基础主题。涵盖的主题包括集合,关系和功能; 基本命题和谓词逻辑; 证明技术; 图形和树木; 离散概率; 语法和有限状态机; 和数论。
- 工程基础:涵盖了提供软件工程实践所必需的工程背景的基础主题。涵盖的主题包括经验方法和实验技术; 统计分析; 测量和指标; 工程设计; 仿真与建模; 和根本原因分析。
5. 简单解释 CMMI 的五个级别。
- Initial: 不可预测的过程。控制和反应性差
- Managed: 以项目为特征的流程,通常是被动的。
- Defined: 以组织为特征的流程,并且是主动的(项目根据组织的标准定制流程)
- Quantitatively Managed: 过程可测量可控制
- Optimizing:关注在过程的改善
6. 用自己语言简述 SWEBok 或 CMMI
CMMI是软件能力成熟度模型集成,是美国国防部的一个设想,后来与卡内基梅隆大学、美国国防工业协会共同开发。这个模型将软件能力成熟度分成五个级别,分别是初始级别、已管理级、已定义级、已量化管理和优化级。这个模型又将核心过程分成了十六个过程集合,分别是因果分析和解决、配置管理、决策分析和解决、集成的项目管理、度量和分析、组织上的过程定义、组织上的过程聚焦、组织上的绩效管理、组织上的过程绩效、组织上的培训、项目监控、项目计划、过程和产质量量保证、量化的项目管理、需求管理和风险管理。