在与企业进行交流时,研发人员常常问道:集成产品开发(IPD)与CMMI到底有何区别?大家知道CMM是软件(SW)的成熟度模型,与IPD肯定不是一回事。而CMMI在CMM的基础上增加了集成的产品和过程开发(IPPD)等专业领域,不再局限于软件。于是,对IPD不了解的人士可能认为CMMI比IPD范围更大,是包括IPD的。这完全是一种误解。
先看一下CMMI与CMM的区别。CMMI与SW-CMM的主要区别在三个方面:专业领域、成熟度等级和过程域、模型结构。与CMM相比,CMMI覆盖4个专业领域,即软件工程(SW)、系统工程(SE)、集成的产品和过程开发(IPPD)、采购(Supplier Sourcing)。在成熟度等级和过程域、模型结构方面的区别在此不详述。
IPD与CMMI起源和出发点的不同,决定了两者具有很大的区别。CMM是SEI针对软件质量保证制定的能力成熟度模型,与ISO9000系列标准和MIL标准一样,均属于过程质量模型。CMMI是在CMM的基础上发展起来的,与CMM一样,本质上关注的是过程质量。而IPD着眼于产品开发获得市场成功,是在PACE(产品及周期优化法)等产品开发模式的基础上,经过一些领先企业(如IBM)的实践发展起来的。IPD关注的是将影响产品成功的关键要素(如结构化流程、产品决策评审、产品开发团队等)有机地整合起来,形成集成的产品开发模式,推动产品和业务的成功。
具体而言,IPD与CMMI在以下方面具有明显的区别:
一、两者的层面不一样
IPD是企业层面的一套产品开发管理的思想、模式和方法,本质上是一种产品经营管理的模式。CMMI是面向研发实现的,而且更多是面向软件开发的。
二、思想高度不一样
两者目的的不同也导致了思想的不同。IPD的核心思想集中体现为8个方面,即产品开发是一项投资、基于市场的创新、基于平台异步开发、技术开发与产品开发分离、跨部门的协同、结构化流程、产品线经营、人才梯队建设。而CMMI主要倡导通过过程和活动来保证质量。可见,IPD是从更高和更加全面的角度来看待和管理产品开发的。
三、对流程的结构化不一样
就产品开发活动而言,IPD首先把产品开发看作一个端到端的流程,包括概念、计划、开发、验证、发布、生命周期管理6个阶段,在此基础上,IPD建立一个涵盖了流程概览、阶段流程、子流程和模板的分层结构框架,对涉及到的产品开发活动进行合理的结构化。CMMI把开发流程分解为一个个关键过程域(KPA),是相对离散地来定义流程的,这决定了在CMMI体系下,产品开发流程的结构化不够。
四、管理的范围不一样
IPD需要对所有的产品开发活动进行管理,横向上涉及市场、研发、测试、试制、制造、采购、服务、销售、财务各功能部门在产品开发中的活动,纵向上涉及决策、管理、执行三个层面。而CMMI主要是面向研发部门的活动,如软件开发、系统集成、项目管理等。对于一些软硬件相结合的高科技产品而言,软件开发的工作量往往占整个开发工作量的50-60%,而硬件开发又可能占到15-20%,所以CMM可以管到50-60%的开发活动,而CMMI可以管到65-80%的开发活动。
五、关注重点不一样
IPD不仅关注把事情做正确(do the things right),同时也关注做正确的事情(do the right things),所以IPD既强调执行的重要,也强调决策的重要。CMMI主要关注执行,即把事情做正确(do the things right),而且CMMI对如何执行好开发活动要求更规范、更详细。
六、人员管理不一样
IPD包括了对团队和个人的考评,如对集成组合管理团队(IPMT)和产品开发团队(PDT)的评估。CMMI则不包括人员管理的内容。当然,SEI开发了主要针对软件开发人力资源管理的P-CMM。
尽管,IPD与CMMI有这么多的不同,但就对具体流程和活动进行管理而言,两者所依据的原则、方法和实践是相通的和一致的,所以企业在优化产品开发体系时,完全可以将两者融合,实施IPD+ CMMI的解决方案。事实上,很多企业(如华为、中兴通信、海康威视、用友软件、卡斯柯系统软件、英威腾、三维通信等)在融合IPD和CMMI方面已经取得了大量成功的经验。