能力成熟度模型介绍 PPT
CMM理论基础
过程决定质量!
CMM的目的
• 避免软件产品开发的随意性 • 将其从艺术性、创造性的活动转变为规范化、
可重复的软件开发工艺过程,不是每个人都是 艺术家 • 可类比传统产品的制造:生产线上的工人按照 规程操作就可以生产出合格的产品。同理,软 件开发人员按规程编程,就可以开发出合格的 软件产品。
软件项目成功关键
人员方面 –在人力资源管理方面的强大投入,有优秀的员工才 会有优秀的企业。 –发展高素质的项目管理人员,让软件项目管理人员 具有专业的技能。 –发展并把握顶尖技术人才,一个有才华的软件开发 者的创造性可以是一个普通者的十倍。 –软件开发项目应该配备有创造力的人员。最好是找 到一个有创造力的程序员,而不是指望某一个程序 员会变得有创造力。 –可以让程序员发挥他们的专长:编写代码。 –建立合理的组织结构。
软件开发的本质
• 软件开发的本质就是基于人类思考的一种 心智活动
• 计算机及运行其上的软件就是人类大脑活 动的一面镜子
• 软件与心理学的关系要比工程学、技术及 数学的关系要近的多
• 软件永久只能是软件开发人员的心理模仿 ,程序员永远也不可能让计算机做出超过 他自己想像力的事
• 需求具有不确定性,是逐步澄清的
软件项目失败深层次原因
• 对软件的误解是问题的根源。 • 现有的方法是由那些有良好愿望但忘记了软件
中的“软”的那些聪明人所创建的。他们假定 开发软件就象造桥。 • 方法不正确。没有人打算失败,但是为使失败 最小化而使用的方法却是失败的。 • 开发人员士气不高,不主动。 • 管理人员、开发人员能力不够。 • 只重过程,不重人,没有良好的沟通。
提供新方法和新工具来提高软件开发效率和 质量的尝试失败,发现问题的实质在于软件 机构缺乏管理软件过程的能力。
软件工程研究所(Software Engineering Institute, SEI) 领导改进软件工程实践的当前状况,提高以 软件为主的系统的质量。
CMM由SEI提出,它描述了从混乱的、不成 熟的软件过程向成熟的、有纪律的软件过程 改进的一条途径,包含五个成熟度级别。
软件过程成熟度:针对具体的软件过程进行目前定义、 管理、测量、控制以及有效的程度。他表明软件工程 能力增长的潜力。
全面质量管理和CMM
不了解产品
成熟的软件机构:
• 具有在机构范围内管理软件开发 和维护过程的能力,所管理的过 程已形成文档,可使用,必要时 可修改过程定义
• 管理人员监督软件产品的质量以 及生产这些产品的过程
• 在分析软件产品的质量和开发过 程方面有客观而定量的依据
• 进度计划和预算基于以前的效能 数据,是非常实际的
• 成本、进度要求、产品功能与质 量能达到预期要求
• 整个机构广泛、积极地参与改进 活动,有相应的基础实施支持各 软件过程
软件项目失败原因
• 客户需求不确定 • 最终产品的设计和特色只有在过程中才能变得
清晰,而不是开始时 • 很难制定准确的计划 • 估计不够,低估需要的时间和成本 • 来自营销、客户和管理者的压力 • 沟通失败是项目失败的最大的威胁 • 软件过程不可见
软件项目成功关键(续)
项目利益相关者广泛参与 – 最终用户参与 – 开发与营销紧密结合 – 高级管理者强大的支持 – 项目组内部有效沟通
向不确定性挑战 – 日常建构,关注真正的最终结果 – 立足于灵活 – 在项目前期阶段充分沟通,充分交流,鼓励 创新
引入软件成熟度
软件危机:无法开发出符合预算和进度要求 的高可靠性和可用性软件。
软件过程成熟度涉及的基本概念
CMM强调的是软件过程 能一致地、可预测地 生产高质量软件产品 的能力。
过程:为了达到给定目 标所实施的一系列步 骤。过程把人、工具 和规程集成在一起。 如下图所示:
有技能、受过 训练的、有积 极性的人员
定义任务间关联关 系的规程和方法
过程
工具和设备
软件过程成熟度涉及的基本概念(续)
• 质量低劣 • 延期或者失败 • 软件成本超出预算 • 不按要求工作给自己和客户带来麻烦
不成熟的和成熟的软件机构对比
不成熟的软件机构: • 软件过程:由具体工作人员及
其管理人员临时组成 ຫໍສະໝຸດ 被动,常常强调解决燃眉之急 • 常常超出进度计划和经费预算 • 缺少评判产品质量或解决产品
或过程问题的客观基础 • 在正式提交之前,客户基本上
大家学习辛苦了,还是要坚持
继续保持安静
软件开发的探索
• 技术 –CASE,UML –Object Oriented
• 过程控制 –ISO9001,ISO9000-3,ISO15504,ISO12207 –CMM,TickIT
以上措施并没有真正解决软件危机 –“质量是制造出来的,不是检验出来”, 在制造业适用,在软件行业作用并不大(软 件过程不可见) –项目失败率还是很高
能力成熟度模型介绍
Agenda
简介和CMM背景知识
CMM 框架 CMM 2级 CMM 3级 CMM 4级5级 小结 Q&A
Introduction
CMM的背景、概念、结构和应用 软件过程成熟度框架 能力成熟度模型的结构和相关说明 CMM的关键过程域
外人看软件开发过程
Customer
Coder
“Build me Software for my Widget”
Then a Miracle Happens
Done.
这种过程可能会有什么问题?
初学者看软件开发过程
FIGURE IT OUT.
CODE IT.
SEE IF IT WORKS.
需求、设计薄弱,测试被挤
不成熟组织软件项目的结果
• 缺乏既定过程,开发团队角色没有定义,没有 协调,重复工作,管理混乱
• 管理者/用户对过程和产品质量缺乏洞察力, 过程和产品质量不透明
软件过程:开发和维护软件及相关产品(如项目计划、 设计文档、代码、测试用例和用户手册等)的一套行 为、方法、实践及变换过程。
软件过程能力:描述了遵循某软件过程可能达到的预期 结果的范围。它为机构承担下一个软件项目时可能达 到的最大期望结果提供了预测手段。
软件过程效能:对遵循一个过程所达到的实践结果的一 种度量。它关注实际结果,而软件过程能力关注预期 结果。