上了IPD和CMMI,为什么还要搞敏捷?
文/资深顾问 杨学明
现在国内许多产品创新型企业一旦研发团队上了规模,就会进行IPD体系的变革或CMMI的认证,但现在还有一种更加流程的开发模式,就是敏捷,华为公司早在2009年正式发文在全公司现在流程IPD、CMMI的基础上,所有产品线的软件开发团队全面推行敏捷开发。除了华为之外,不仅是互联网企业,现在凡是涉及到软件开发的企业对敏捷都不陌生,那么IPD、CMMI和敏捷究竟是什么关系?为什么敏捷这么火?
首先,我们来看看三个名词的解释:
IPD(集成产品开发):IPD的核心内容是以市场为导向的产品开发,关注客户需求,另外IPD把产品开发在公司内部也作为一项投资来看待,建立了虚拟的投资决策委员会(IPMT),对产品开发团队(PDT)的活动在一些关键点上进行决策,此外IPD所建立的产品开发团是跨部门的,可以打破部门之间的沟通壁垒,并给出了跨部门业务流程指导跨部门团队运作。IPD的最佳实践如下:
个专业领域,即软件工程(SW)、系统工程(SE)、集成的产品和过程开发(IPPD)、采购(Supplier Sourcing)。CMMI一共分为五个级别和25个过程域(PA),国内的许多软件企业已通过CMMI L3 认证。以下是IPD和CMMI的关系:
敏捷:敏捷开发(Agile Development)是一种以人为核心、迭代、循序渐进的开发方法。首先,我们要理解它不是一门技术,它是一种开发方法,也就是一种软件开发的流程,它会指导我们用规定的环节去一步一步完成项目的开发,而不是一次性完成项目的交付;而这种开发方式的主要驱动核心是人;它采用的是迭代式开发或者可以理解为小步快跑的开发模式,一次只交付客户一部分的特性或功能,如下图:
以上是三种开发模式的解释,写到这里,有人会问,这三种开发模式有冲突吗?回答是否定的。我们来看看这三种开发模式的内在联系与区别:
1)敏捷开发更加关注在软件研发领域,IPD的思想则是产品运营领域,视角不同,着重点就不同,如果把敏捷比喻成导弹,那么IPD就是原子弹,如果把敏捷比喻为战投机,那么IPD就是航空母舰。
2)从整体上看,IPD更加注重流程,在概念、计划、开发、验证、发布、维护阶段设置阶段性决策点,通过决策点对产品做出调整、保证投资收益比。敏捷更加注重沟通,强调拥抱变化,强调与客户的紧密合作。当以市场为目标时,IPD更加实用。当以项目为目标时,敏捷更加实用。如下图:
3)敏捷的交付是持续的一个过程,软件更像一个活着的植物,软件开发是自底向上逐步有序的生长过程,类似于植物自然生长;敏捷开发遵循软件客观规律,不断的进行迭代增量开发,最终交付符合客户价值的产品。如下图:
因此由上图可见,敏捷开发更符合软件开发的规律。主要是以下几个原因:
1)客户需求是在慢慢体验的过程中反馈出来的。
2)一次只交付部分特性,有利于保证产品的进度和质量。
3)更加关注结果,而不是过程,IPD和CMMI更加强调过程。
4)减小浪费,尽可能以最快的速度得到用户反馈,减少了由于到最后客户验收不合格带来的不必要的成本。
5)随时随地保持一个可用的软件,对开发团队的协作和规范性提出更高的要求,便于过程的监控。
共创力咨询认为,纯软件产品开发、成熟的嵌入式硬件平台上的软件开发、风险较低的嵌入式软件开发(风险是指软件和硬件集成的风险)的过程控制,均可以采用敏捷的开发模式。那么IPD、CMMI、敏捷是否可以融合?答案是肯定的。如下图:
由上图所示IPD关注整个产品的开发管理,包括市场、开发(软件、硬件)、结构、生产、采购、财务等各个方面,CMMI/Agile流程关注其中的软件研发过程的管理,CMMI是在研发过程中走瀑布模型,而敏捷是走版本迭代的模式。CMMI的模式也可以借用敏捷的一些管理实践,如站立会议,结对编程等。
总结一下,这三种开发模式中,IPD的层级最高,既包括了“做正确的事”,又包括了“把事情做正确”,是公司级的运营级流程,CMMI和敏捷是同一个层级流程,是工程方面的实践级流程。CMMI和敏捷不具备高层决策能力,而一种“把事情做正确”的开发模式。在软件开发时,选用敏捷开发模式能提高版本质量和版本发布的效率,并能促进开发团队成员的协作,大大提高客户的满意度。
注:本文由资深研发管理专家杨学明先生提供。杨学明,清华大学MBA,资深研发管理专家,国内首席研发管理专家,曾服务于华为,阿里巴巴等知名企业,杨老师先后在国内开设研发类公开课100多场,服务内训客户1000多家,为数百家企业提供了研发咨询服务,典型的客户如深圳迈瑞、华立仪表、步步高、英威腾、雷赛智能、埃斯顿、华工科技、中国科学院、电力科学研究院、中国工商银行、重邮信科、从兴电子、浙大网新、联迪商用等。杨学明老师课程以实战为主,以行业标杆企业为牵引,结合国内中小企业研发及测试管理环节的典型案例,深入剖析各种管理疑难问题,深受学员好评!
上了IPD和CMMI,为什么还要搞敏捷?的更多相关文章
- 在电脑上操作手机屏幕scrcpy工具就搞定了
手机安卓版本:10 电脑:win64 使用步骤 电脑步骤 下载scrcpy scrcpy 是免费开源的投屏软件,支持将安卓手机屏幕投放在 Windows.macOS.GNU/Linux 上,并可直接借 ...
- 杨学明老师推出全新课程--《敏捷开发&IPD和敏捷开发结合的实践》
课时:13小时(2天) 敏捷开发&IPD和敏捷开发结合的实践 讲 师:杨学明 [课程背景] 集成产品开发(IPD).集成能力成熟度模型(CMMI).敏捷开发(Agile Developmen ...
- RecyclerView 下拉刷新上拉加载
步骤: 首先直接定义一个XRecyclerView继承RecyclerView,重写他的三个构造方法. init(Context mContext)方法用来初始化底部加载的view 回到XRecycl ...
- 让工程师爱上CMMI,实现管理于无形 --- 中标软件CMMI L5之路 (1/2)
操作系统市场被微软等国外的IT厂商垄断的大环境下,中标软件作为市场夹缝中发展起来的民族企业,致力于成为中国操作系统旗舰企业.系列核心产品已经在政府.金融.教育.财税.公安.审计.交通.医疗.制造等行业 ...
- IPD体系向敏捷开发模式转型实施成功的四个关键因素
文/杨学明 集成产品开发(IPD).集成能力成熟度模型(CMMI).敏捷开发(Agile Development)是当前国内外企业产品研发管理的最常用的3种模式.随着创新环境的快速发展,许多企业都会 ...
- 【硅谷问道】Chris Lattner 访谈录(上)
[硅谷问道]Chris Lattner 访谈录(上) 话题 Chris Lattner 是谁? Xcode 的编译器 LLVM 背后有怎样的故事? Swift 诞生的前世今生,封闭的苹果为何要拥抱开源 ...
- 搞懂分布式技术10:LVS实现负载均衡的原理与实践
搞懂分布式技术10:LVS实现负载均衡的原理与实践 浅析负载均衡及LVS实现 原创: fireflyc 写程序的康德 2017-09-19 负载均衡 负载均衡(Load Balance,缩写LB)是一 ...
- 使用CSDN CODE来存放OPENSTACK位于GITHUB上的源代码
use CSDN CODE to pull openstack codes 2014-11-20 Author:Hyphen 问题 直接从GITHUB上获代替码,常常是没保障,特别是用DEVSTACK ...
- 点开,看一段,你就会喜欢上学习pandas,你该这么学!No.3
身为一个啰嗦的博主,还是要说点啥,如果你不想学,直接拖拽到最后,发现彩蛋,然后3秒 我呢,有个小目标,就是把技术类的文章,写的有趣 编程呢,最难的是什么? 我投票给入门 其实,把一个人带进编程的大门是 ...
随机推荐
- Asp.Net Core Web Api图片上传(一)集成MongoDB存储实例教程
Asp.Net Core Web Api图片上传及MongoDB存储实例教程(一) 图片或者文件上传相信大家在开发中应该都会用到吧,有的时候还要对图片生成缩略图.那么如何在Asp.Net Core W ...
- [转]迄今为止最优的Eclipse运行性能调优 ,含eclipse.ini
最近,Eclipse(Eclipse-JEE3.5)运行十分缓慢(可能插件安装过多),因此,得到了个机会调优一下,以便提高工作效率 下图是未经任何调整eclipse的gc情况(使用jvisualvm命 ...
- python 备忘
import jsonu='''{ "maps": [ { "id": "blabla", "iscategorical" ...
- 使用Expression进行动态排序分页
Expression动态查询.分页 Expression,表达式树,以lamda表达式创建,就以表达式目录树的形式将强类型的lambda表达式标识为数据结构. 排序 /// <summary&g ...
- 使用docker部署flask遇到的问题
容器内能访问,但是外网映射了端口怎么也访问不了 解决方法: app.run() 添加参数host='0.0.0.0'
- win8 notepad++ 设置无法保存
前些天买了新笔记本.装的是win8 ,后来装了notepad++ ,最新版的,改了字体,下次从新打开之后,发现字体改动无效.后来试了一下“管理员身份运行”,再次打开,保存就有效.但总不能每次都那样去右 ...
- [PKUWC2018] 随机游走
Description 给定一棵 \(n\) 个结点的树,你从点 \(x\) 出发,每次等概率随机选择一条与所在点相邻的边走过去. 有 \(Q\) 次询问,每次询问给定一个集合 \(S\),求如果从 ...
- 动手实践Mybatis插件
前言 Mybatis的插件开发过程的前提是必须要对Mybatis整个SQL执行过程十分熟悉,这样才能正确覆盖源码保证插件运行,总的来说Mybatis的插件式一种侵入式插件,使用时应该十分注意. 在之前 ...
- iOS Runtime的消息转发机制
前面我们已经讲解Runtime的基本概念和基本使用,如果大家对Runtime机制不是很了解,可以先看一下以前的博客,会对理解这篇博客有所帮助!!! Runtime基本概念:https://www.cn ...
- [转]docker 部署 mysql + phpmyadmin 3种方法
本文转自:https://blog.csdn.net/Gekkoou/article/details/80897309 方法1: link # 创建容器 test-mysql (千万别用 mysql: ...