一、集成产品开发(IPD)
IPD集成产品开发(Integrated Product Development):
IPD的核心内容是以市场为导向的产品开发,关注客户需求,另外IPD把产品开发在公司内部也作为一项投资来看待,建立了虚拟的投资决策委员会(IPMT),对产品开发团队(PDT)的活动在一些关键点上进行决策。 此外IPD所建立的产品开发团是跨部门的,可以打破部门之间的沟通壁垒,并给出了跨部门业务流程指导跨部门团队运作。
二、’集成能力成熟度模型(CMMI)
CMMI(能力成熟度模型集成):
CMMI是SEI针对软件质量保证制定的能力成熟度模型,与ISO9000系列标准一样,均属于过程质量模型。 CMMI覆盖4个专业领域,即软件工程(SW)、系统工程(SE)、集成的产品和过程开发(IPPD)、采购(Supplier Sourcing)。 CMMI一共分为五个级别和25个过程域(PA),国内的许多软件企业已通过CMMI L3 认证
三、敏捷开发(Agile Development)
敏捷开发(Agile Development):
是一种以人为核心、迭代、循序渐进的开发方法。 首先,我们要理解它不是一门技术,它是一种开发方法,也就是一种软件开发的流程,它会指导我们用规定的环节去一步一步完成项目的开发,而不是一次性完成项目的交付;而这种开发方式的主要驱动核心是人;它采用的是迭代式开发或者可以理解为小步快跑的开发模式,一次只交付客户一部分的特性或功能。
四、三种开发模式的内在联系与区别:
1)敏捷开发更加关注在软件研发领域,IPD的思想则是产品运营领域,视角不同,着重点就不同,如果把敏捷比喻成导弹,那么IPD就是原子弹,如果把敏捷比喻为战投机,那么IPD就是航空母舰。
2)从整体上看,IPD更加注重流程,在概念、计划、开发、验证、发布、维护阶段设置阶段性决策点,通过决策点对产品做出调整、保证投资收益比。敏捷更加注重沟通,强调拥抱变化,强调与客户的紧密合作。当以市场为目标时,IPD更加实用。当以项目为目标时,敏捷更加实用。
3)敏捷的交付是持续的一个过程,软件更像一个活着的植物,软件开发是自底向上逐步有序的生长过程,类似于植物自然生长;敏捷开发遵循软件客观规律,不断的进行迭代增量开发,最终交付符合客户价值的产品。
因此可见,敏捷开发更符合软件开发的规律。主要是以下几个原因:
1)客户需求是在慢慢体验的过程中反馈出来的。
2)一次只交付部分特性,有利于保证产品的进度和质量。
3)更加关注结果,而不是过程,IPD和CMMI更加强调过程。
4)减小浪费,尽可能以最快的速度得到用户反馈,减少了由于到最后客户验收不合格带来的不必要的成本。
5)随时随地保持一个可用的软件,对开发团队的协作和规范性提出更高的要求,便于过程的监控。
总结一下,这三种开发模式中:
IPD的层级最高,既包括了“做正确的事”,又包括了“把事情做正确”,是公司级的运营级流程。
CMMI和敏捷是同一个层级流程,是工程方面的实践级流程。CMMI和敏捷不具备高层决策能力,而是一种“把事情做正确”的开发模式。
在软件开发时,选用敏捷开发模式能提高版本质量和版本发布的效率,并能促进开发团队成员的协作,大大提高客户的满意度。
五、IPD的核心思想
1)产品开发是一项投资决策:需要严谨的阶段性评审。在开发各个节点评估是否要启动、暂停、终止、改方向。
2)基于市场开发:充分了解市场需求、竞争产品的情况下,进行产品定位。
3)跨部门、跨系统协同:利用一切可利用资源,并进行有效、及时地沟通。
4)异步开发模式,也称并行工程:通过严密的计划,把接口定义完善,把在时间上后续的开发任务提前,并行开发,缩短开发周期。
5)重用性:不管是硬件还是软件,一些可以重用的模块,进行公司技术积累,当然也可以包括工作总结、FAQ等。
6)结构化的流程:开发是一件不确定性的工作,需要在结构化和非结构化之间找到平衡,灵活运用管理模式。
六、 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体系向敏捷开发模式转型已顺利落地。