# 软件系统分析与设计作业1

# 软件工程的定义

根据IEEE Standard 610.12,软件工程是研究与应用可以系统地、有序地、可量化地进行计算机软件开发、操作及维护的方法的学科。在其他的定义中,还包括着对如何按时并符合预算地进行开发与维护的交付的技术与管理上的方法研究。

# 解释导致 software crisis 本质原因、表现,述说克服软件危机的方法

软件危机的本质原因是随着计算机硬件能力的不断上升,需要处理的问题复杂性上升但由于软件开发及维护中的低效率方法而导致在期望时间内无法产出有用且高效的软件产品。

软件危机的表现如下:

  • 软件项目超出预算
  • 软件项目超出预计时间
  • 软件效率低下
  • 软件质量不佳
  • 软件产品无法符合需求
  • 项目无法管理且代码可维护性差
  • 软件无法达到交付标准

这些问题的起因是程序员无法有效利用不断提升的计算性能,面向过程和面向对象编程等方法也被发展用于提升软件质量管理。然而软件危机由于在大型的软件项目中,由于其庞大、复杂性高且包含不熟悉的方面的特性,仍然难以被完全克服。

# 软件生命周期

软件生命周期指的是在时间维度对软件项目任务进行划分,划分为数个不同的阶段,以提升软件设计、产品管理以及项目管理。软件生命周期也被称为软件开发过程。软件生命周期常见的有瀑布模型,原型方法,迭代式开发,螺旋模型以及敏捷开发等。

# SWEBoK 的 15 个知识域(An Overview of the SWEBOK Guide (opens new window) 请中文翻译其名称与简短说明)

实践

  1. 软件需求(Software Requirement):涉及软件需求的获取、协商、分析、规范与认证。
  2. 软件设计(Software Design):对软件系统或组件的架构、组件、接口以及其他特征的定义过程以及过程的产出。
  3. 软件构建(Software Construction):通过细致的设计、编码、单元测试、集成测试、调试以及验证构建可用的软件的过程。
  4. 软件测试(Software Testing):对产品质量进行评估并通过识别软件存在的缺陷以提升其质量的过程。
  5. 软件维护(Software Maintenance):增强软件已有功能,修改软件以适应新的运行环境,以及修正缺陷的过程。
  6. 软件配置管理(Software Configuration Management):系统地控制在软件生命周期内对软件配置的变动以及维护配置的完整性与可追溯性。
  7. 软件工程管理(Software Engineering Management):通过对软件项目的计划、协调、测量、报告与控制来保证系统、有序、可量化的软件开发与维护。
  8. 软件工程过程(Software Engineering Process):对软件生命周期的定义、实现、评估、测量、管理以及提升。
  9. 软件工程模型与方法(Software Engineering Models and Methods):包含工程建模、模型类别、分析以及软件开发方法。
  10. 软件质量(Software Quality):包含软件质量基础,软件质量管理过程以及实用水平
  11. 软件工程职业实践(Software Engineering Professional Practice):包含软件工程师在职业环境下所需的知识、技巧以及态度。

教育

  1. 软件工程经济学(Software Engineering Economics):涉及到在商业环境下做出符合商业目标的技术决策,需要包含软件工程经济学基础、非盈利决策、经济学风险与不确定性。
  2. 计算基础(Computing Foundations):覆盖了软件工程中的计算背景基础,包括解决问题技巧、抽象、算法以及复杂度,编程基础,并行与分布式计算基础,计算机组成,操作系统以及网络通信。
  3. 数学基础(Mathematical Foundations):覆盖了软件工程的数学背景基础,包括集合、关系、函数、命题逻辑、证明方法、图与树、离散概率、语法与有限状态机,以及数论。
  4. 工程学基础(Engineering Foundations):覆盖了软件工程的工程系背景,包括基于经验与实验的方法、数理统计、工程设计、模拟与建模,以及根本原因分析。

# 简单解释 CMMI 的五个级别。例如:Level 1 - Initial:无序,自发生产模式。

  1. Level 1 - Initial: 目标得以实现,但是实现过程具有偶然性,对项目管理较弱
  2. Level 2 - Managed: 管理级,项目具有一定的计划、管理与控制,流程具有项目特征
  3. Level 3 - Defined: 定义级,项目能按照企业组织的标准制定生产流程,将管理体系制度化
  4. Level 4 - Quantitatively Managed: 可量化管理级,对项目流程可以进行数字化的测量与控制,
  5. Level 5 - Optimizing: 优化级,在前面的管理水平基础上主动地改善整体流程,实现流程优化。

# 用自己语言简述 SWEBok 或 CMMI

能力成熟度模型集合(CMMI)是一个对企业软件生产的功能规范的改进方法,目的是提升企业组织的绩效。由于企业自身规模不同,在软件生产中需要根据实际情况决定工程管理的方法。CMMI 中通过多个成熟度级别,设置了处于不同能力水平的企业组织的管理能力优先级与改进目标,对企业当前和未来发展的过程提供参考。成熟度模型考虑了企业实际能力可支持的成本,明确了在该阶段的企业管理的目标与重点,能够帮助企业在预定的成本与期限内完成所需要的项目,提升企业整体的效率与管理水平。