第一章 绪论
- 软件的定义及特征
- 软件的定义:是使计算机能够工作的指令集合和相应的数据结构和文档,是一种产品,将计算机的硬件能力发挥出来的一种工具,是传递信息的一种工具,对信息的处理手段。
- 软件的特征:
- 1.软件是一种逻辑元素,而不是物理元素;
- 2.软件是开发出来的,而不是用传统的方法制造出来的;
- 3.软件不会被用坏,一般产品的失败概率都遵循浴盆曲线;
- 4.工业界已经是标准化装配时代,但软件还是定制时代;
- 5.创新性和人为因素更高。
- 软件危机产生的原因
- 1.用户不易准确描述对软件的需求,经常存在二义性,遗漏甚至错误 ;
- 2.大型软件往往需要成百上千人的合作,由于软件系统结构复杂,如何有效组织管理、充分发挥团队作用就成为软件开发成功的关键;
- 3.缺乏有效的软件开发方法和工具的支持,过分依靠程序设计在开发中的技巧和创造性,加剧了软件产品的个性化。开发过程没有统一、规范的方法论指导,文档资料不齐全;
- 4.缺乏软件开发经验及相关数据积累,无法准确估计经费和进度,导致经费严重超支,完成期限一拖再拖;
- 5.忽视测试阶段的工作,提交的产品质量差。
- 软件过程
- 人们用于开发和维护软件及其相关过程的一系列活动,包括软件工程活动和软件管理活动。
- 软件过程能力
- 描述(开发组织或项目组)遵循其软件过程能够实现预期结果的程度,它既可对整个软件开发组织而言,也可对一个软件项目而言。
- 软件过程性能
- 表示(开发组织或项目组)遵循其软件过程所得到的实际结果,软件过程性能描述的是已得到的实际结果,而软件过程能力则描述的是最可能的预期结果,它既可对整个软件开发组织而言,也可对一个特定项目而言。
- 能力成熟度模型
- SEI给CMM下的定义是:对于软件组织在定义,实现,度量,控制和改善其软件过程的进程中各个发展阶段的描述。
- 能力成熟度模型不同级别成熟度的主要特征
- 1级 初始级 (Initial):软件过程的特点是无秩序的,偶尔甚至是混乱的,几乎没有什么过程是经过定义的,成功依赖于个人努力。
- 2级 可重复级 (Repeatable):已建立基本的项目管理过程去跟踪成本进度和功能,必要的过程纪律已经就位,使具有类似应用的项目能重复以前的成功。
- 3级 已定义级 (Defined):管理活动和工程活动两方面的软件过程均已文档化、标准化,并集成到组织的标准软件过程中,全部项目均采用供开发和维护软件用的组织标准软件过程的一个经批准的普及剪裁版本。
- 4级 已管理级 (Managed):已采集详细的有关软件过程和产品质量的度量,无论软件过程还是产品均得到定量了解和控制。
- 5级 优化级 (Optimizing):利用来自过程和来自新思想、新技术的先导性实验的定量反馈信息,使持续过程的改进成为可能。
- 软件过程的可视性、过程能力和性能预测与成熟度之间的关系
- 软件过程的可视性
- 等级1―――一个黑盒
- 等级2――― 项目里程碑处具有管理可视性
- 等级3―――盒子的内部结构可视
- 等级4―――软件过程被配备上度量,并得到定量地控制
- 等级5―――对过程不断改进
- 过程能力和性能预测与成熟度之间的关系
- 随着成熟度增长,实际结果相对预定目标结果的偏差范围减小
- 随着成熟度增加,预定目标结果得到改善
- 软件过程的可视性
- KPA定义及结构
- KPA定义
- 关键过程区域(Key Process Area,KPA),每个关键过程区域识别出一串相关活动,当这些活动全部完成时,能达到一组对增强过程能力至关重要的目标。
- KPA的结构
- 目标
- 共同特点
- 执行约定
- 执行能力
- 执行活动
- 度量和分析
- 验证实施
- KPA定义
- KPA的共同特点包含5点内容
- 执行约定(Commitment to Perform) :企业为了建立和实施相应KPA所必须采取的行动;
- 执行能力(Ability to Perform) :描述了为了某软件过程得以始终如一地执行必须在项目或企业中存在的先决条件,是企业实施KPA的前提条件;
- 执行活动(Activities Performed) :描述了执行KPA所需求的必要行动、任务和步骤;其是唯一一项与项目执行相关的属性。
- 度量和分析(Measurement and Analysis) :关注于这个关键过程域的活动需要做的度量和度量分析要求。
- 验证实施(Verifying Implementation) :是验证执行活动是否与建立的过程一致,核实以确保所实施的过程是按照原定的计划以及达到其目标,着眼于保证过程的实现要通过独立的个人和高级管理人员验证。
- CMM每个成熟度等级的KPA及其子目标
- 等级2的KPA:
- 需求管理 RM(Requirements Management)
- 软件项目计划SPP(Software Project Planning)
- 软件项目跟踪和监督SPTO(Software Project Tracking and Oversight)
- 软件子合同管理SSM (Software Subcontract Management)
- 软件质量保证SQA(Software Quality Assurance)
- 软件配置管理SCM(Software Configuration Management)
- 等级3的KPA:
- 组织过程焦点OPF (organization processfocus)
- 组织过程定义OPD(organization processdefinition)
- 培训大纲TP(training program)
- 集成软件管理ISM (integrated softwaremanagement )
- 软件产品工程SPE(software productengineering)
- 组间协调IC(intergroup coordination)
- 同行评审PR( peer reviews)
- 等级4的KPA:
- 定量过程管理QPM (quantitative processmanagement)
- 软件质量管理SQM (software qualitymanagement)
- 等级5的KPA:
- 缺陷预防DP(defect prevention)
- 技术改革管理TCM(technologychange management )
- 过程更改管理PCM(process change management )
- 等级2的KPA: