CMM123

  • 格式:doc
  • 大小:84.50 KB
  • 文档页数:20

1

第1章

软件开发过程包括软件需求、软件设计、软件实现、软件集成、软件测试、软件维护等各阶段的管理。

5、过程改进机会 : 过程的改进机会通过以下机构进行 1成本管理2计划管理3质量管理

6、过程改进的工作 以上机构独立于任何机构,完成改进机构 改进过程

改进各个开发人员的性能和能力

7、软件特殊性的需要: 软件的三个层次:

1个体层次:程序、数据及文档。2整体层次:特定系统中个体层次软件的总称。3学科层次:所涉及的理论、方法、技术所构成的学科。

8、软件过程评估的必要性

1软件成本的提高 2软件开发进度难于控制 3软件工作量的估计困难4软件质量难于保证 5软件的个性与维护困难6 软件应用中出现的问题7 软件特殊性的需要

9、软件开发的风险大的原因: 1改进软件过程的需要2过程能力低3软件过程管理水平低

缺乏工程实践和管理实践

10、软件用户或采购者 软件组织或提供商 降低软件风险的需要

11、软件成功的十条经验中的三要素:1 CMM对软件需求管理的需要 2 有效的用户参与

3明确的业务目标4稳定的基本需求

12、软件需求必须形成文档。软件需求必须能够控制,进而建立工程和管理的基线。

成员必须接受软件需求管理培训。建立衡量软件需求状态的信息。

CMM2级对软件需求管理的指导

13 、CMM3级对软件需求管理的指导

需求分析→确保需求的完整性、一致性、可测试性。

需求设计→编码、测试实例都能够回溯到相应的源头,需求发生实质变更之前,能够判别该变更所带来的潜在的影响。

需求修订→应遵从统一的流程,需求的变更应自始至终被跟踪;

需求文档→应当通过配置和变更管理工具进行管理。

14软件质量是捉摸不定的概念 提高软件产品质量的需要 某某软件好用, 不好用;

某某软件功能全、结构合理;某某软件功能单一、操作困难;

15 产品质量,包括软件质量,是人们实践产物的属性和行为,是可以认识,可以科学地描述的。可以通过一些方法和人类活动,来改进质量。

实施CMM是改进软件质量的有效方法:控制软件生产过程、提高软件生产者组织性和软件生产者个人能力的有效合理的方法

16 软件工程的相关领域和因素

需求工程(RE:REQUIREMENTS ENGINEERING)。理论上,需求工程是应用已被证明的原理、技术和工具,帮助系统分析人员理解问题或描述产品的外在行为。

软件复用(SR:SOFTWARE REUSE)。定义为利用工程知识或方法,由一已存在的系统,来建造一新系统。这种技术,可改进软件产品质量和生产率。

还有软件检查、软件计量、软件可靠性、软件可维修性、软件工具评估和选择等。

3、软件管理与机构 CMM的不同特征

刚 性:模型的表示和描述。

灵活性:解释与实现。

概念化:

定义机构行为,提供不同的保证级别,减少与软件开发过程相关联的风险和恶果。 2

22

CMM的观点

软件产品开发周期不是独立存在的,不是从编代码才开始的,包括完整项目计划、评估、和管理过程,是公司总体战略的一部分。

23现行机构存在的问题 响应性而不是前瞻性;缺乏规则与政策;没有估计和计划;没有明确定义责任;性能不一致;没有提前计划;管理层只响应危机;不断测试与改变承诺;

24连续过程改进有什么好处呢?

Joseph Juran博士指出:质量改进要每年完成40%。

25实现CMM的意义:能够改进过程和业务

26 CMM能提供什么样的改进呢?。可预测性、可控制性、有效性、竞争性

27改进什么呢?机构的竞争性

28对公司有什么意义呢?减少底线,提高生产率

29任何机构级别中,经理是否能验证与控制软件产品开发过程的进展?

大多数公司无法控制,完全凭运气和感觉。

30

4、CMM的诞生、用途与使用方法

CMM (Capability Maturity Model能力成熟度模型)的本质是软件管理工程的一个部分。它是对于软件组织在定义,实现,度量,控制和改善其软件过程的进程中各个发展阶段的描述。他通过5个不断进化的层次来评定软件生产的历史与现状。

32软件项目做不好的原因,发现70%的项目是因为管理不善而引起,而并不是因为技术实力不够,进而得出以上的结论。管理影响全局,技术影响局部

34软件项目失败的主要原因:

需求定义不明确;缺乏一个好的软件开发过程;没有一个统一领导的产品研发小组;子合同管理不严格;没有经常注意改善软件过程;对软件构架很不重视;软件界面定义不善且缺乏合适的控制;软件升级暴露了硬件的缺点;关心创新而不关心费用和风险;软件标准太少且不够完善等等。

36因为软件复杂和难以度量,软件管理工程的发展还很不成熟。

软件管理工程的特殊性

软件是知识产品,进度和质量都难以度量,生产效率也难以保证。

软件系统复杂程度也是超乎想象。

软件管理工程和其它工程管理相比有其特殊性。

37 结构化生产时代(70年代开始),过程为中心的时代(80年代末期) ,面向对象技术(90年代中期) ,构件技术(2000年代初期) ,软件工业化生产(2010年中期),软件管理工程的发展过程

43软件过程改善是管理的核心。

要高效率、高质量和低成本地开发软件,必须改善软件生产过程。

44工业化生产的特征

软件生产转向以改善软件过程为中心

软件工业已经或正在经历着"软件过程的成熟化“

规范的软件过程是软件工业化的必要条件。

44软件过程的三个流派: CMU-SEI的CMM/PSP/TSP;ISO 9000质量标准体系;ISO/IEC 15504(SPICE)。

45 CMM:软件能力成熟度模型;PSP:个体软件过程;TSP:群组软件过程;

1987年美国 Carnegie Mellon 大学软件工程研究所(CMU/SEI)以W.S.Humphrey为首的研究组3

发表的研究成果"承制软件工程能力的评估方法";

CMM/PSP/TSP

48 CMM和ISO 9000的主要区别:

CMM以实践为基础,CMM是一个渐进的有动态尺度的标准;驱使组织不断地改进和完善。

ISO 9000是静态的质量管理标准 ,提供一个良好的体系结构和实施基础。

49软件过程的工业标准

目前,学术界和工业界公认美国 Carnegie Mellon 大学软件工程研究所(CMU/SEI) 以W.S.Humphrey为首主持研究与开发的软件能力成熟度模型CMM是当前最好的软件过程,已成为业界事实上的软件过程的工业标准。

50 CMM的主要用途:软件过程评估SPA; 软件过程改进SPI;软件能力评价SCE;

51 CMM的使用方法

评估组用来识别软件组织的强处与弱点;

评价组用来识别选择不同软件商的风险和监督合同;

评估软件开发者用来开发其它基于CMM的评估方法,以针对一些特殊的需要;

高级管理者用来了解在软件组织中制定一个软件过程改进计划所必要的活动;

技术人员和过程改进组用来作为指南,指导他们在软件组织中定义和改进软件过程。

54 CMM的作用

对于CMM的作用归纳两个主要方面:

科学地评价软件开发单位的软件能力成熟等级; 帮助软件开发单位进行自检,了解自己的强项和弱项,从而不断完善和改进单位的软件开发过程,确保软件质量,提高软件开发效率。

55 个体软件过程PSP (Personal software process)

群组软件过程TSP(Team Software Process)

形成CMM/PSP/TSP体系。

62 CMM/PSP/TSP的关系

PSP能够指导软件工程师如何保证自己的工作质量,估计和规划自身的工作,度量和追踪个人的表现,管理自身的软件过程和产品质量。

经过PSP学习和实践的正规训练,软件工程师们能够在他们参与的项目工作之中充分运用PSP,从而有助于CMM目标的实现。

63TSP结合了CMM的管理方法和PSP的工程技能,通过告诉软件工程师如何将个体过程小组软件过程相结合,并将小组的软件过程与整个管理系统相联系;

通过告诉管理层如何支持和授权项目小组,坚持高质量的工作,并且依据数据进行项目的管理,向组织展示如何应用CMM的原则和PSP的技能去生产高质量的产品。

64

总之,单纯实施CMM,永远不能真正做到能力成熟度的升级,只有将实施CMM与实施PSP和TSP有机地结合起来,才能发挥最大的效力。因此,软件过程框架应该是CMM/PSP/TSP的有机集成。

第2章

软件能力成熟度模型概述

1 什么是软件组织?

软件企业内部的一个软件研发部门。组织内部有若干个项目和一个软件工程管理部门。

如:公司的研发中心、软件中心、软件事业部,它们均可称为 “软件组织”。

4 4

4、什么是软件产品? 软件承包方最终交付给客户方的软件工作产品。

5、什么是软件工作产品? 在CMM中每一道工作程序的输出。

7什么是软件过程?

人们从开发到维护软件及其相关产品所采取的一系列活动。其中:活动包括:

软件工程活动 软件管理活动 相关产品包括: 项目计划、 设计文档、 代码、

测试方法 用户指南等。

8什么是软件过程能力?

通过执行其软件过程能够实现预期结果的程度。

软件过程本身具有的按预定计划生产产品的固有能力。

一个软件开发组织的软件过程能力,为组织提供了预测软件项目开发的数据基础。

9什么是软件过程性能?

遵循一个软件过程后所得到的实际结果。

软件过程性能由内部子过程的执行状态所决定。只有每个子过程的性能得到改善,相应的成本、进度、功能和质量等性能目标才能得到控制。

10什么是软件过程成熟度?

一个具体的软件过程被明确的定义、管理、评价、度量、控制和产生实效的程度。

成熟度包含着能力的一种增长的潜力,同时也表明组织实施软件过程的水平。

随着成熟度的提高,软件组织可以明确定义有关管理的工程方法,建议工程的实践和规程。

11什么是软件能力成熟度等级?

软件开发组织在走向成熟的过程中几个具有明确定义的表征软件过程能力成熟度的平台。

每一个成熟度等级为过程的继续改进达到下一个等级提供一个基础。

每一个等级包含一组过程目标,其中一个目标达到时,表明一个重要成分得以实现,说明能力得以增长。

12 CMM模型将软件组织的管理水平划分为1-5的5个成熟度等级。即:

初始级(CMM1)、可重复级(CMM2)、已定义(CMM3)、已管理级(CMM4)、 优化级(CMM5)。

成熟度等级是软件过程改善中妥善定义的平台。

13、个成熟度等级提供了CMM的顶层结构。

每个等级都表明软件组织过程能力的一个级别。

13什么是关键过程域(KPA)?

互相关联的若干个软件实践活动和相关基础设施的集合。

每一个成熟度等级包含若干个对成熟度等级至关重要的过程域,它们的实施对达到该等级的目标起保证作用。这些过程域就称为该成熟度等级的关键过程域,

反之有非关键过程域是指对达到相应软件成熟度等级的目标不起关键作用。

14什么是关键实践(KP)?

对相应KPA的实施起关键作用的政策、资源、活动、测量、验证。

它们只描述“做什么”,不描述“怎么做”。

KP (Key Practices/关键实践)