博客园  :: 首页  :: 联系 :: 管理

IPD、CMMI、敏捷

Posted on 2022-09-28 10:00  天戈朱  阅读(1219)  评论(0编辑  收藏  举报

华为公司早在2009年正式发文在全公司现在流程IPD、CMMI的基础上,所有产品线的软件开发团队全面推行敏捷开发。除了华为之外,不仅是互联网企业,现在凡是涉及到软件开发的企业对敏捷都不陌生,那么IPD、CMMI和敏捷究竟是什么关系?

集成产品开发(IPD)、集成能力成熟度模型(CMMI)、敏捷开发(Agile Development)是当前国内外企业产品研发管理的最常用的3种模式。随着创新环境的快速发展,许多企业都会面临这样的问题:如何快速响应市场的变化?如何推出更有竞争力的产品?如何在竞争中脱颖而出?……是大部分研发型企业普遍面临的核心问题。另外,软件项目在产品开发中位置越来越重要,逐渐占领主导地位,这时传统的IPD流程和CMMI流程就显得有些繁锁,不能快速响应市场的变化和客户需求,敏捷开发(Agile Development)应运而生。2001年,一批美国专家聚集在一起概括出了一些可以让软件开发团队具有快速工作、响应变化能力的价值观和原则,他们称自己为敏捷(Agile)联盟。并创建出了一份价值观声明,也就是敏捷联盟宣言。敏捷开发模式已应用于Microsoft、Google, Amazon,IBM等大型软件公司中,在中国,从2006年开始,华为、腾讯、阿里巴巴、百度等大型软件公司也陆续引进敏捷开发和测试的先进理念,并进行了成功的实践。 

  • IPD集成产品开发(Integrated Product Development):IPD的核心内容是以市场为导向的产品开发,关注客户需求,另外IPD把产品开发在公司内部也作为一项投资来看待,建立了虚拟的投资决策委员会(IPMT),对产品开发团队(PDT)的活动在一些关键点上进行决策,此外IPD所建立的产品开发团是跨部门的,可以打破部门之间的沟通壁垒,并给出了跨部门业务流程指导跨部门团队运作。
  • CMMI(能力成熟度模型集成):CMMI是SEI针对软件质量保证制定的能力成熟度模型,与ISO9000系列标准一样,均属于过程质量模型。CMMI覆盖4个专业领域,即软件工程(SW)、系统工程(SE)、集成的产品和过程开发(IPPD)、采购(Supplier Sourcing)。CMMI一共分为五个级别和25个过程域(PA),国内的许多软件企业已通过CMMI L3 认证。
  • 敏捷:敏捷开发(Agile Development)是一种以人为核心、迭代、循序渐进的开发方法。首先,我们要理解它不是一门技术,它是一种开发方法,也就是一种软件开发的流程,它会指导我们用规定的环节去一步一步完成项目的开发,而不是一次性完成项目的交付;而这种开发方式的主要驱动核心是人;它采用的是迭代式开发或者可以理解为小步快跑的开发模式,一次只交付客户一部分的特性或功能

 以上是三种开发模式的解释,写到这里,有人会问,这三种开发模式有冲突吗?回答是否定的。我们来看看这三种开发模式的内在联系与区别:

  • 1)敏捷开发更加关注在软件研发领域IPD的思想则是产品运营领域视角不同,着重点就不同,如果把敏捷比喻成导弹,那么IPD就是原子弹,如果把敏捷比喻为战投机,那么IPD就是航空母舰。
  • 2)从整体上看,IPD注重流程在概念、计划、开发、验证、发布、维护阶段设置阶段性决策点,通过决策点对产品做出调整、保证投资收益比敏捷更加注重沟通,强调拥抱变化,强调与客户的紧密合作。当以市场为目标时,IPD更加实用。当以项目为目标时,敏捷更加实用
  • 3)敏捷的交付持续的一个过程,软件更像一个活着的植物,软件开发是自底向上逐步有序的生长过程,类似于植物自然生长;敏捷开发遵循软件客观规律,不断的进行迭代增量开发,最终交付符合客户价值的产品

因此可见,敏捷开发更符合软件开发的规律。主要是以下几个原因:

  • 1)客户需求是在慢慢体验的过程中反馈出来的。
  • 2)一次只交付部分特性,有利于保证产品的进度和质量。
  • 3)更加关注结果,而不是过程,IPD和CMMI更加强调过程。
  • 4)减小浪费,尽可能以最快的速度得到用户反馈,减少了由于到最后客户验收不合格带来的不必要的成本。
  • 5)随时随地保持一个可用的软件,对开发团队的协作和规范性提出更高的要求,便于过程的监控。

 总结一下,这三种开发模式中:

  • IPD的层级最高,既包括了“做正确的事”,又包括了“把事情做正确”,是公司级的运营级流程
  • CMMI敏捷是同一个层级流程,是工程方面的实践级流程。CMMI和敏捷不具备高层决策能力,而一种“把事情做正确”的开发模式。
  • 在软件开发时,选用敏捷开发模式能提高版本质量和版本发布的效率,并能促进开发团队成员的协作,大大提高客户的满意度

IPD的核心思想

  • 产品开发是一项投资决策:需要严谨的阶段性评审。在开发各个节点评估是否要启动、暂停、终止、改方向。
  • 基于市场开发:充分了解市场需求、竞争产品的情况下,进行产品定位
  • 跨部门、跨系统协同:利用一切可利用资源,并进行有效、及时地沟通。
  • 异步开发模式,也称并行工程:通过严密的计划,把接口定义完善,把在时间上后续的开发任务提前,并行开发,缩短开发周期
  • 重用性:不管是硬件还是软件,一些可以重用的模块,进行公司技术积累,当然也可以包括工作总结、FAQ等。
  • 结构化的流程:开发是一件不确定性的工作,需要在结构化和非结构化之间找到平衡,灵活运用管理模式。

投资决策的参考标准

  •  

通过上述的这些要素,对产品立项的指导还是具有一定的意义。毕竟,开发一款产品最终是为了创造利润,当然新产品也要符合公司的战略方向,例如小米公司这几年会投资一些电源插板、空气净化器等零碎的家具产品,那是小米在部署家庭物联网生态圈的战略中一分子。公司制定的产品战略方向,也还是根据市场决定的。 

 

IPD和敏捷融合的经验,总结出以下四个关键因素:

1、组织方面的变革

  • 1)  IPD组织与敏捷组织的差异,IPD体系比较偏向于矩阵式管理,但敏捷更加偏向于扁平化,领导和员工共同为交付负责;
  • 2)  管理者思维的转变,以人和交流为中心,而非以流程和制度为中心;
  • 3)  开发人员思维的转变,需要多次提交在本地构建成功的版本进行与其它模块进行集成测试,原来是周期性提交,现在需要每日提交;
  • 4)  测试人员思维的转变,测试活动需要前移,测试人员需要参与开发过程的测试.
  • 5)  质量保持人员从警察到复合型人才的转变(医生、牧师、教练、警察四个角色)

2、流程方面的变革

  • 1)  在IPD流程中嵌入敏捷开发流程,IPD依然是公司级流程,敏捷更偏重实践
  • 2)  IPD重量级流程和敏捷轻量级流程的融合,做到互不冲突。
  • 3)  敏捷需求管理流程,需求的迭代管理比以前更加快捷,需求的反馈需要短平快。
  • 4)  流程裁剪,一切以客户价值为核心只交付刚刚好的软件产品。
  • 5) IPD中瀑布开发模型和迭代开发的差异,IPD需要做好所有的功能之后再交付,而敏捷可以分特性进行迭代交付
  • 6)  IPD重流程,敏捷更加重视结果,IPD比较重视开发过程的质量保证,而敏捷更加重视可见的结果,一切以结果为导向。

3、 绩效管理方面的变革

  • 1)  构建敏捷的自运作团队,敏捷强调自驱性团队,即由原来的流程驱动变为团队自我驱动,自我的激励和运作。
  • 2)  从KPI到OKR,原来的KPI是由上到下,强调“按需分配”,现在需要团队自我管理,每个人自已编写自已的OKI,鼓励“能者多劳”。
  • 3)  敏捷考核与IPD考核的差异,敏捷团队考核强调团队共同挑战困难,共同承担责任,在考核方面以激励为主,以客户满意为最终结果指标,事后再来分析绩效结果。
  • 4)  扁平化的绩效管理模式(敏捷团队,人人平等),在敏捷团队中,绩效高度可视化,付出的努力能以公平、公正、公开的方法进行管理,更能激励团队成员积极性。

4、IT工具方面的变革

   传统的项目管理工具已不能适应快速响应的团队管理, 需要选择开放、兼容、可扩展的工具的平台,如:

  • 1) 项目管理工具(禅道,TAPD,MANTIS等)
  • 2) 持续集成工具(CruiseControl、Jenkins、IncrediBuild、InstallShield等)
  • 3) 单元测试工具(JUnit、CUnit、CppUnit、google/gtest、google/gmock等)
  • 4) 代码检查工具(PCLINT、checkStyle、FindBugs 、codecheck、Cppcheck、PMD代码分析工具等)

  以上四点,便是IPD向敏捷开发模式转型实施成功的四个关键因素,目前在国内几家企业试点成功,在共创力咨询顾问的辅导下,IPD体系向敏捷开发模式转型已顺利落地。

参考资料