IPD、CMMI、敏捷
华为公司早在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体系向敏捷开发模式转型已顺利落地。
参考资料
- https://www.cnblogs.com/mikeyond/p/6792798.html
- https://www.cnblogs.com/mikeyond/p/9110300.html
- 名词:https://www.cnblogs.com/mojies/p/14877144.html
IPD、CMMI、敏捷的更多相关文章
- 杨学明老师推出全新课程--《敏捷开发&IPD和敏捷开发结合的实践》
课时:13小时(2天) 敏捷开发&IPD和敏捷开发结合的实践 讲 师:杨学明 [课程背景] 集成产品开发(IPD).集成能力成熟度模型(CMMI).敏捷开发(Agile Developmen ...
- 如何理解IPD+CMMI+Scrum一体化研发管理解决方案之Scrum篇
如何快速响应市场的变化,如何推出更有竞争力的产品,如何在竞争中脱颖而出,是国内研发企业普遍面临的核心问题,为了解决这些问题,越来越多的企业开始重视创新与研发管理,加强研发过程的规范化,集成产品开发(I ...
- 如何理解IPD+CMMI+Scrum一体化研发管理解决方案之CMMI篇
如何快速响应市场的变化,如何推出更有竞争力的产品,如何在竞争中脱颖而出,是国内研发企业普遍面临的核心问题,为了解决这些问题,越来越多的企业开始重视创新与研发管理,加强研发过程的规范化,集成产品开发(I ...
- 如何理解IPD+CMMI+Scrum一体化研发管理解决方案之IPD篇
如何快速响应市场的变化,如何推出更有竞争力的产品,如何在竞争中脱颖而出,是国内研发企业普遍面临的核心问题,为了解决这些问题,越来越多的企业开始重视创新与研发管理,加强研发过程的规范化,集成产品开发(I ...
- IPD体系向敏捷开发模式转型实施成功的四个关键因素
文/杨学明 集成产品开发(IPD).集成能力成熟度模型(CMMI).敏捷开发(Agile Development)是当前国内外企业产品研发管理的最常用的3种模式.随着创新环境的快速发展,许多企业都会 ...
- Atitit s2018.2 s2 doc list on home ntpc.docx \Atiitt uke制度体系 法律 法规 规章 条例 国王诏书.docx \Atiitt 手写文字识别 讯飞科大 语音云.docx \Atitit 代码托管与虚拟主机.docx \Atitit 企业文化 每日心灵 鸡汤 值班 发布.docx \Atitit 几大研发体系对比 Stage-Gat
Atitit s2018.2 s2 doc list on home ntpc.docx \Atiitt uke制度体系 法律 法规 规章 条例 国王诏书.docx \Atiitt 手写文字识别 ...
- 深圳共创力“研发管理&知识管理”高端研讨交流会在深圳举办!
2017/4/8,由深圳市共创力企业管理咨询公司举办的“研发管理&知识管理”高端研讨会在深圳市南山区圣淘沙国际酒店(翡翠店)隆重召开.此次研讨会由共创力总经理.首席顾问杨学明先生主持.研讨会先 ...
- 上了IPD和CMMI,为什么还要搞敏捷?
文/资深顾问 杨学明 现在国内许多产品创新型企业一旦研发团队上了规模,就会进行IPD体系的变革或CMMI的认证,但现在还有一种更加流程的开发模式,就是敏捷,华为公司早在2009年正式发文在全公司现在流 ...
- CMMI V2.0丨如何通过CMMI真正在企业中的实施规模化敏捷开发
在过去的几年中,敏捷开发已经从一个利基概念(利基是指针对企业的优势细分出来的市场,这个市场不大,而且没有得到令人满意的服务.产品推进这个市场,有盈利的基础.)转变为全球许多大公司采用的标准实践. 通过 ...
- IPD模式下开展敏捷开发的一些问题汇总
1. 我们现在普遍用的是老系统情况下,什么时候把软件和硬件在敏捷项目里面集成? 答:有两种场景:第一种场景是把软件分几个迭代,最后把软件和硬件一起集成:第二种场景是更好的一种场景,每几个迭代 ...
随机推荐
- 花了100块大洋搞懂 ipv6的用户如何访问ipv4 服务器
大家好,今天蓝胖子花了100多块搞懂了 ipv6的用户如何访问ipv4 服务器,将收获与大家分享下. ipv4和ipv6的协议栈不同,这意味着,其对应的ip包的封装和解析不同,那么只支持ipv4的机器 ...
- SqlServer的实用且高级玩法.md
1.常见表表达式(CTEs) 如果您想要查询子查询,那就是CTEs施展身手的时候 - CTEs基本上创建了一个临时表. 使用常用表表达式(CTEs)是模块化和分解代码的好方法,与您将文章分解为几个段落 ...
- 区别对比 Python、Perl、VB、Ruby、C/C++、C# .Net、PHP、Java… 等多编程语言
1. 编程语言类型:首先,Python.C/C++.Java 都是强类型的编程语言.强类型的编程语言定义如下: 强类型的编程语言是一种强制类型定义的编程语言,即一旦某一个变量被定义类型,如果不经强制转 ...
- #线段树合并#洛谷 3224 [HNOI2012]永无乡
题目 分析 和主席树不同的是,线段树合并后原树的信息不会保留, 这样就保证空间和常数都比较小,这题比较裸,直接上代码 代码 #include <cstdio> #include <c ...
- 深入理解 C# 编程:枚举、文件处理、异常处理和数字相加
C# 枚举 枚举是一个特殊的"类",表示一组常量(不可更改/只读变量). 要创建枚举,请使用 enum 关键字(而不是 class 或 interface),并用逗号分隔枚举项: ...
- std::thread 二:互斥量(多个互斥量的解决方法)
// *:这里的lock是函数模板,最少传两个互斥量 // 第一种,使用 lock 和 unlock std::mutex m_mutex1; std::mutex m_mutex2; std::lo ...
- 开始学习web-sql注入
web内容多且杂,不知道怎么下手开始学,那就先从sql注入开始学吧 目前只在b站上找了一些课程,还有ctfwiki作为参考 链接贴在下面: ctfwiki https://www.bilibili.c ...
- K8S 性能优化-K8S Node 参数调优
前言 K8S 性能优化系列文章,本文为第四篇:Kubernetes Node 性能优化参数最佳实践. 系列文章: <K8S 性能优化 - OS sysctl 调优> <K8S 性能优 ...
- HDC 2022精彩继续,多重亮点进来看!
原文:https://mp.weixin.qq.com/s/YX5vD4cxM8dA4v2ukFooyA,点击链接查看更多技术内容.
- nginx重新整理——————静态服务[四]
前言 简单介绍一下nginx的静态服务. 正文 一般静态服务一般是alias 和 root. 就是上面这个哈. 那么root和alias 的区别是啥呢? 比如root: 然后修改一下就是: 如果这样配 ...