310 likes | 431 Views
实用软件工程概论. ---- IT 企业软件的开发与管理 赵池龙. 第 12 章 软件过程管理 (*). 本章导读 软件管理是面向过程的,即面向开发过程、配置过程、维护过程、质量保证过程、软件组织内部管理改善过程。软件过程管理的主要框架就是 SW-CMM ,或者说就是 CMM 。 本章首先简述 CMM 的几个基本概念,随后再介绍 CMM 的过程资源、实施思路、文档样例、成熟度提问单和 CMM 的发展方向,重点是对关键过程域 KPA 的理解,只要对 CMM 的关键过程域看懂了,吃透了,用好了,您就学会了 CMM 。. 本章导读. 12.1 CMM 基本概念.
E N D
实用软件工程概论 ----IT企业软件的开发与管理 赵池龙
第12章 软件过程管理(*) • 本章导读 • 软件管理是面向过程的,即面向开发过程、配置过程、维护过程、质量保证过程、软件组织内部管理改善过程。软件过程管理的主要框架就是SW-CMM,或者说就是CMM。 • 本章首先简述CMM的几个基本概念,随后再介绍CMM的过程资源、实施思路、文档样例、成熟度提问单和CMM的发展方向,重点是对关键过程域KPA的理解,只要对CMM的关键过程域看懂了,吃透了,用好了,您就学会了CMM。
12.1 CMM基本概念 • 1. 组织 组织与组不同,组织与单位也不一样。 CMM中的“组织”或“软件组织”,是指软件企业(或软件公司)自己,或者企业内部的一个软件研发部门。但是,该组织内部应有若干个项目和一个软件工程管理部门。如公司的研发中心、软件中心、软件事业部,它们均可称为“组织”或“软件组织”。 CMM的实施和评估,不在整个软件企业的所有部门进行,而只需在软件企业中的某个软件组织范围内进行,例如,它的软件研发中心。
CMM基本概念 • 2. 软件过程 这里的软件过程,既指软件开发过程,又指软件管理过程。过程是指为了实现某一目标而采取的一系列步骤。一个软件过程,是指人们从开发到维护软件相关产品所采取的一系列活动。其中,软件相关产品包括项目计划、设计文档、源代码、测试报告和用户指南等。软件产品的质量主要取决于产品开发和维护的软件过程质量。一个有效的、可视的软件过程能够将人力资源、物理设备和实施方法结合成一个有机的整体,并为软件工程师和高级管理者提供实际项目的状态和性能,从而可以监督和控制软件过程的进行。
CMM基本概念 • 3. 软件产品和软件工作产品 在软件开发过程中,上一道工作程序的输出,就是下一道工作程序的输入。在CMM中,每一道工作程序的输出均称为软件工作产品,里程碑上的软件工作产品通过评审和审计之后称为基线,如用户需求报告、概要设计说明书、详细设计说明书、源代码、测试报告、用户指南等等。评审报告、跟踪记录等软件管理文档,也叫软件工作产品。 软件承包方最终交给客户方的软件工作产品,称为软件产品。在UML中,将软件工作产品称为“制品”,其中管理文档叫管理制品,技术文档叫技术制品。
CMM基本概念 • 4. 软件过程能力与性能 软件过程能力,是软件过程本身具有的按预定计划生产产品的固有能力。组织的软件过程能力,为组织提供了预测项目开发的数据基础。 软件过程性能,是软件过程执行的实际结果。一个项目的软件过程性能,决定于内部子过程的执行状态,只有每个子过程的性能得到改善,相应的成本、进度、功能和质量等性能目标才能得到控制。成熟的软件过程能力与性能,可弱化和预见不可控制的过程因素(如客户需求变化或技术变革等)。
CMM基本概念 • 5. 软件过程成熟度及其五个等级 • 软件过程成熟度,是指一个软件过程被明确定义、管理、度量和控制的有效程度。成熟意味着软件过程能力持续改善的过程,成熟度代表软件过程能力改善的潜力。 • CMM模型将软件组织的管理水平划分为一至五的五个级别,共计十八个关键过程域KPA,五十二个具体目标,三百一个六个关键实践KP。
CMM基本概念 • 7. 关键实践KP 所谓关键实践KP,是指对相应KPA的实施起关键作用的政策、资源、活动、测量、验证。KP只描述“做什么”,不描述“怎么做”。因为:怎么做的问题只能由软件组织自己解决。 目前,CMM共有52个具体目标,316个关键实践KP,它们分布在CMM2至CMM5的各个KPA中。
CMM基本概念 • 8. 目标(Goals) • 目标概括某个关键过程域中的所有关键实践应该达到的总体要求,可用来确定是否一个组织或一个项目已有效地实现关键过程域。 • 目标表明每个关键过程域的范围、边界和意图。目标用于检验关键实践的实施情况,确定关键实践的替代方法是否满足关键过程域的意图等。 • 如果一个级别的所有的目标都已实现,则表明这个组织已经达到了这个级别,可以进行下一个级别的软件过程改善。
CMM基本概念 • 9. 体系结构 ( 内部结构 ) • CMM的体系结构既简单,又复杂。说它简单,是因为目前它由5个级别、18个过程域、52个目标、5个共同特性、316个关键实践所组成,如图12-1所示。 • 由于关键过程域KPA是CMM的中心内容,一个KPA由多个目标和五个共同特性组成,每个共同特性中又包含多个关键实践KP。我们用图12-2来表述KPA与目标、共同特性、关键实践之间的关系 。 • 说它复杂的第一个原因,,是因为它的内部结构很难用一张图形来说清楚。这里不再详述,留给读者思考。说它复杂的第二个原因,,是因为软件组织实施它时,其文档体系结构也较复杂,后面的章节将详述之。
CMM基本概念 • 10. 成熟度提问单 • 成熟度提问单是SW-CMM中的另外一个问题。顾名思义,成熟度提问单就是一大堆关于CMM某个级别是否成熟的问题。这堆问题的具体内容是什么?它是谁向谁提问题呢?提问题的目的和作用是什么?有兴趣的读者,可以思考这些问题。
12.2 CMM软件过程资源 • 1. 软件过程资源定义 • 软件组织在进行软件过程改善(SPI:Software Process Improvement)时,其核心工作之一就是建立和维护组织的软件过程资源。所谓软件过程资源,就是组织在SPI过程中通过积累而得到的,用于指导软件项目过程的文档和数据等重要信息。 • 软件过程资源能够为软件项目在制定、裁剪、维护和实施软件过程时,提供全面的决策指导。组织的软件过程资源包括以下五个方面内容: (1) 组织批准的软件生命周期; (2) 组织的标准软件过程; (3) 裁剪指南; (4) 组织的软件过程数据库; (5) 组织的软件过程有关的文档库。
CMM软件过程资源 • 2. 软件生命周期 • 软件生命周期是指从某软件产品开始研发,到软件不再使用为止的时间间隔。生命周期一般包括:需求阶段、概念阶段、设计阶段、实现阶段、测试阶段、安装和调整阶段、运行和维护阶段,有时还包括退役阶段。 • 在组织的程序文件中详细描述了每个软件生命周期,包括原理、优缺点、适合哪些类型的项目等,通过这些描述可帮助项目人员,很好地理解和运用组织已批准的软件生命周期。另外,如果在实际工作中,基于特定项目的经验积累和总结,可能需要形成新的软件生命周期,此时可依照一定的流程,将其定义和描述加入到组织的软件过程资源中。
CMM软件过程资源 • 3. 标准软件过程和裁剪指南 • 组织标准软件过程,是组织中所有软件开发和维护项目共用的软件过程,是项目定义软件过程的基础。它保证组织过程活动的连续性,是组织软件过程的测量和长期改进的依据。 • 裁剪指南则用来指导项目对组织标准软件过程进行裁剪,以形成适合项目特征的定义软件过程。
CMM软件过程资源 • 4. 软件过程数据库 • 软件过程数据库(又称为项目工程数据库、测量数据库或项目管理数据库) ,是软件企业实施CMM的巨大收获和巨大财富。 • 组织的软件过程数据库,是为了收集有关软件过程和它所生成的软件工作产品的相关数据,并用来建立数据库。软件过程数据库包含或引用估计和实际度量数据。如,生产率数据,工作量、规模、成本、进度、关键计算机资源(估计值与测量值),同行评审的数据,需求数与变更数,测试范围和效率等。
CMM软件过程资源 • 5. 软件过程有关的文档库 • 建立组织的软件过程有关的文档库(以下简称文档库),主要出于两方面考虑:一是存储对组织内的项目可能有用的过程文档,特别是与组织标准软件过程相关的文档;二是在全组织范围内共享所存储的文档信息。 • 该库中包含一些实例文档和文档片断,对未来项目在裁剪组织标准软件过程时可能有用。由于能提供成功项目的例子作为起步点,该库可以帮助组织减小启动一个新项目所要求的工作量,因而该库是组织的一个重要资源。
12.3 CMM实施思路 • 第一步,要进行CMM 基本知识的培训 • 任何培训工作都需要解决两个基本问题:一是教师问题,二是教材问题。CMM培训也不例外。CMM的培训对象是:第一,对所有员工(包括总经理在内),进行最基本的软件工程和CMM知识培训;第二,对CMM的各个工作组的有关人员,提供专业领域知识等方面的培训;第三,在每次开发过程中,还要对项目组成员进行软件过程方面的培训。 • 培训的教师有很多。第一,与CMM有关专业培训咨询机构。第二,利用互联网资源进行咨询和培训。第三,聘请有关CMM专家到企业实地指导CMM的实施。
CMM实施思路 • 第二步,成立CMM的工作小组 • 在CMM的实施过程中,必须成立专业化的工作组。例如: 软件工程过程组SEPG 软件工程组SWEG 系统测试组STG 软件项目跟踪与监督组SPTO 软件配置管理组SCMG 软件质量保证组SQAG 评估领导组或评估成员团队ATM(Assessment Team Member)。
CMM实施思路 • 第三步,建立CMM文档体系 • (1) 软件组织文档 它包括:软件工程规范、软件生命周期及裁剪指南、软件质量标准、名词和术语定义。 • (2) 关键过程域文档 对应每个KPA,都有一个过程文件和一个程序文件与之对应:过程文件描述干什么,程序文件描述怎么干。 • (3) 软件项目文档 它包括三方面的内容:工作产品文档:如配置项、基线;工作日记文档:如日报、周报、里程碑报;软件产品文档:如用户需求报告、设计说明书、源程序、用户手册。
CMM实施思路 • 第四步,进行内部模拟评审 • 软件组织在进行正式评估之前,先进行内部评审或评估。这种内部评审包含两层含义。 (1). 软件组织自己内部成员,严格、认真地按照CMM规范评估过程,对自己的软件过程进行评审,找出其中的强项和弱项,并进行改进。 (2). 在全国范围内,由有关软件工程和CMM专家组成一个专门的“内部评审”机构,负责指导协调实施CMM的活动,推进活动的深入开展,对国内软件组织CMM评估进行“预先评估”。
CMM实施思路 • 第五步,确定CMM正式评估的工作步骤 • (1) 软件公司与主任评估师(或评估中介公司)签订评估合同; • (2) 软件公司选定4-5个工作量大、工期6个月以上的大中型软件项目作为评估对象,并且准备好文档; • (3) 软件公司选4-10人组成评估小组; • (4) 由主任评估师组织评估培训; • (5) 由ATM评估小组制订正式评估工作计划; • (6) 正式评估,ATM评估小组对每个KP打分(必须在7分以上,满分为10分) ; • (7) ATM评估小组指出被评估组织的强项和弱项,协商产生评估结果,若评估通过,则由主任评估师签字,报CMU/SEI组织审批和备案。
CMM实施思路 • 第六步,进行正式评估 • 评估工作的可以在软件企业的会议室进行,也可以在同一城市的某宾馆内进行。 • CMM正式评估由CMU/SEI授权的一个主任评估师,领导ATM评审小组进行。 • 评估过程包括员工培训(企业的高层领导也要参加)、与选定的项目经理座谈、问卷调查和统计、文档审查、数据分析、与企业的高层领导讨论和撰写评估报告等,评估结果由主任评估师签字生效。
CMM实施思路 • 第七步,根据评估结果改进软件过程 • 一般来说,应该在评估之后根据ATM小组所指出的强项和弱项,很快地做出软件过程改进计划,因为这时大家对评估结果和存在的问题仍有一个深刻的认识。 • 计划在软件过程改进中是一个非常必要的阶段,只有有效的计划,才能确保软件过程得到有效地改进。
12.4 KPA文档样例分析 • CMM本身是一个软件过程改善框架体系,它并未规定统一的实施文档结构。CMM本身又是一所软件过程管理大学校,它授课的内容深含在体系机构、关键过程域KPA、关键实践KP之中。软件组织在实施过程中,最重要的任务,就是首先要看懂CMM的内容(往往似懂非懂),理解其精神实质(往往很难深入),做到实事求是(常常心中无数),活学活用(常常生搬硬套),并将这种本质上的“理解”转化为实施文档,然后在软件组织内部执行。 • 关键过程域“软件质量保证”样例分析
12.5 CMM发展方向 • 1991年CMU/SEI发布了CMM 1.0 • 1993年CMU/SEI发布了CMM 1.1,该版本应用最为广泛 • 1997年CMU/SEI虽然发布了CMM 2.0,该版本还未推广就被终止了。此时CMU/SEI的主要精力已投入到CMMI(Capability Maturity Model Integration)的研究,在2002年正式发布了CMMI 1.1,宣称它是CMM 2.0的新版本。此后,CMU/SEI还宣布:到2005年之后,CMMI就可能完全代替CMM。 • CMMI是从三个源模型 (三个学科模型) 集成得来的,这三个不同学科的源模型是: (1) 软件能力成熟度模型SW-CMM 2.0版C稿; (2) 电子行业协会临时标准SECM(EIA/IS 731); (3) 集成产品开发能力成熟度模型IPD-CMM v0.98。
12.6 本章小结 • “关键过程域是个纲,纲举目张”的办法。以十八个关键过程域为纲(主线),以目标、共同特性、关键实践为目,分级别(CMM2-CMM5)去熟悉每个级别中的内容,从内容中去发现内涵。作为第一步,先熟CMM2中的六个KPA,规划每个KPA对应的过程文件和程序文件,然后在您的组织内实施,以改善软件管理过程。 • 软件工程是基础,只有具备了这个基础,您才能真正学好CMM,用好CMM,使CMM为您所在的软件组织服务。
思考题 12 • 12.1 怎样理解“软件组织、工作产品、软件过程、软件过程资源、软件过程财富”的概念? • 12.2 软件文档分哪几种类型?请您举例说明。 • 12.3 CMM本身内容丰富,是一所软件管理大学校,您同意吗?为什么? • 12.4 请从多个不同方面(或角度、或视图)来描述CMM框架体系。 • 12.5 CMM的五个级别各有哪些特征? • 12.6 CMM的KPA和KP在各个级别中如何分布? • 12.7 CMM的实施步骤有哪些? • 12.8 您是怎样理解“CMM的文档体系不能过于繁琐,而必须简单、明快、实用”? • 12.9 CMM本身为什么不规定统一的实施文档结构?