我开始学习CMMI
开始深入学习CMMI模型,关于CMMI 模型中的问题,我是如何学习CMMI ?就事论事,学会一个的知识点,不如去掌握方法,可以解决很多的问题,学习到无限的知识。
那么,究竟如何学习CMMI 呢?
( 1) 通读模型
模型是众多的专家总结的经验教训,历时多年,讨论了N 多遍才编著成的,模型里包含的信息量很大,描述的很完备,需要全面的通读模型。
比如,有朋友问我,开发工具是否要识别为配置项?其实这个问题在模型里有明确的答案,只要去读CM SP1.1 的描述就可以了,模型的原文如下:
Configuration identification is the selection, creation, and specification of the following:
• Products that are delivered to the customer
• Designated internal work products
• Acquired products
• Tools and other capital assets of the projects work environment
• Other items that are used in creating and describing these work products
再比如对于CM sp1.2 建立配置管理系统,有的企业在填写PIIDS 表时就仅把实际应用的配置管理工具视为了直接证据,其实仔细去读模型的原文(A configuration management system includes the storage media, the procedures, and the tools for accessing the configuration system )就会发现:存储的介质、规程与工具三者结合起来构成了配置管理系统,因此物理的配置项、配置管理工具及配置管理规程都是该实践的直接证据。
要注意应尽可能的去读模型原文,尽管有繁体中文的模型可以下载,也有其他简体中文的CMMI 方面的书籍可以阅读,但是翻译后的资料与原文还是有些差异,可能丢掉了原文里的很多含义,甚至有翻译错误的内容。
( 2) 咀嚼模型
模型不但描述的完备,而且简练,很多思想蕴含在平淡的叙述之中,因此需要仔细体会模型里的每句话。如对DAR SG1 :评价候选方案,对于该目标的概述,模型的原文如下:
Issues requiring a formal evaluation process may be identified at any time. The objective should be to identify issues as early as possible to maximize the time available to resolve them.
仔细体会这段话,传达了这样几个含义:
在任何时候可以采用DAR ,比如项目的初期、中期、后期。项目的初期会有哪些决策呢?开发方法的选择、技术路线的选择、开发工具的选择、需求的裁剪,供应商的选择等等;中期呢?后期呢?
·应该尽可能早的识别出需要执行DAR 的问题,以留出足够的时间解决问题。在项目进展的早期应该尽可能多的识别出需要执行DAR 的问题,这样能够考虑的更加完备。
再比如:
对于PP SP1.1 估计项目的范围。模型中该实践的正文为:Establish a top-level work breakdown structure (WBS) to estimate the scope of the project.
top-level 是第几层呢?仔细读该实践的第2 条子实践:
Identify the work packages in sufficient detail to specify estimates of project tasks, responsibilities, and schedule.
据此可以推理出:这里所说的top-level 的WBS 就是分解到工作包级,基于工作包去做估计、分配责任及安排进度。如果仅仅从字面的含义认为top-level 就是第1 层的WBS 分解,那就是笑话了。第1 层只有1 个节点,没有实质性的意义。
( 3) 参考其他模型
CMMI 是融合SW-CMM 、SE-CMM 、IPD-CMM 等几个模型而来,为了保证能够适合于多种学科,在术语上往往比较抽象,因此当对于某些实践无法读懂时,就要相应地去参考其他模型。比如,对于PI SP1.1 确定集成顺序,对于软件系统的集成,当系统的规模不大时,其实开发顺序在很大程度上决定了集成顺序。
为了加深理解该实践,在实际执行过程中很好的裁剪该实践,可以参考SE-CMM 的BP05.08 等实践,在SE-CMM 的BP05.08 中有如下的描述:
The larger or more complex the system or the more delicate its elements, the more critical the proper sequence becomes, as small changes can cause large impacts on project results.
The optimal sequence of assembly is built from the bottom up as components become subelements, elements, and subsystems, each of which must be checked prior to fitting into the next higher assembly. The sequence will encompass any effort needed to establish and equip the assembly facilities (e.g., raised floor, hoists, jigs, test equipment, I/O, and power connections). Once established, the sequence must be periodically reviewed to ensure that variations in production and delivery schedules have not had an adverse impact on the sequence or compromised the factors on which earlier decisions were made.
在阅读CMMI 时可以参考的资料包括:SW-CMM 、SE-CMM 、IPD-CMM 、PMBOK 、ISO15504 、TSP 、PSP 等。
( 4) 映射到本企业的实际
CMMI 模型既适合于软件开发企业,也适合于硬件生产企业,既适合于软件产品的开发,也适合于外包类的软件企业,不同类型的企业对于模型的每条实践解释是不同的。需要结合企业自己的实际情况进行解释模型。
CMMI 模型是基于实践提出的,不是理论推导出来的。模型里的实践或多或少的都可以在本企业的实践中找到映射。“做没做”,“做的好不好”是在和企业的实践进行映射时必须考虑的问题,通过这种映射可以加深对模型的理解。
比如,对于TS SP1.1 开 发候选解决方案与选择准则,在企业里候选方案的开发与选择可能发生于投标阶段、立项阶段、设计阶段,企业的这些不同阶段的实践都可以映射过来,在投标时或 立项时可能是涉及对总体方案的选择,在设计阶段是涉及对具体某个产品构件的解决方案的选择,当然,有时在前期阶段也可能需要选择不同的解决方案。通过与企 业的实践进行映射就可以发现,这里提到的解决方案实际上是泛泛而言,并非仅仅针对总体技术路线的选择,某个具体的构件的解决方案的选择也适合。
判断“做没做”仅仅是最基本的映射,判断“好不好”才是更高层次的映射。在CMMI 模型里,只要达成了模型里每个PA 的目标的实践都被认可,模型里的实践是可以替换的。
(5) 与多个人讨论模型
一 个人的视角是有局限的,通过与其他人的沟通,可以从不同的人员那里获得不同的信息,从而对实践可以理解的更加全面与深入。即使别人的观点未必是正确的,也 可以在讨论中受到启发,也可能激发你自己的更多的想法。组织应该建立定期讨论的制度,通过一种制度化的沟通来确保大家关注过程改进工作,真正地投入时间去 考虑如何改进。在我咨询的一个客户中,有一个项目组每周都定期抽出一定的时间大家一起来研读模型,这种沟通与讨论对理解模型、识别组织的优势与劣势很有帮 助。不要仅仅限于与组织内部的同事进行讨论,与其他组织的同行进行沟通帮助可能更大。
学习CMMI 还有很多其他方法,希望能找到适合自己的方法去学习CMMI。