CMM 与 Agile
CMM更注重管理问题(组织过程的有效性和过程的系统化改进);CMM提供了一个高度抽象的框架,有广泛的适用范围.CMM着重"应该做什么".
Agile更注重技术和效率;Agile主要适用于小组织和需求不定,有用户紧密参与的情况(在高可靠性要求和大型项目组中不宜采用).Agile则侧重于"如何做".
系统工程
进行一个项目,首先要进行系统工程,计算机系统工程是一个问题求解的活动,其目的是分析基于计算机的系统的功能,性能等要求,并把它们分配到基于计算机系统的各个系统元素中,确定它们的约束条件和接口.
系统工程主要包括以下任务:
1. 识别用户的要求
2. 系统建模和模拟(硬件系统模型,软件系统模型,人机接口模型,数据模型)
3. 成本估算及进度安排
4. 可行性分析
5. 生成系统规格说明
需求工程
需求工程细分为:需求获取,需求分析与协商,系统建模,需求规约,需求验证以及需求管理。
判断软件设计的好坏的3条特征,也就是软件设计过程的目标:
1. 设计必须实现分析模型中描述的所有显式需求,必须满足用户希望的所有隐式需求。
2. 设计必须是可读的,可理解的,使得将易于编程,易于测试,易于维护。
3. 设计应从实现角度出发,给出与数据,功能,行为相关的软件全貌。