记录督促学习97

cmmi落地实施

CMMI和敏捷是两种流派,CMMI注重过程和文档,敏捷注重代码本身、程序员的能力和团队沟通协作。CMMI比较适合于软件外包,起源于美国国防部给软件公司下订单时,为了保证交付质量和进度,需要对软件公司进行一个摸底评估,因此卡梅隆大学就做了一个CMM用来评估软件公司的成熟度模型,后来演化为CMMI。

在国内,因为软件外包的兴起,有些外包采购方也要求软件公司过CMMI,所以国内软件公司兴起了一股过CMMI的高潮。有些大型软件公司也通过CMMI来衡量自己的软件开发能力。

而敏捷起源于一些国外黑客和NB程序员群体,在2001年这些牛人们搞了一个聚会,发布了有名的四句敏捷宣言。除了敏捷宣言,还有11条敏捷实践原则。CMMI的开发模型,一般以瀑布为主,也有螺旋和快速原型等经典的软件工程开发模式。

敏捷开发模型基本都是迭代,迭代周期一般从1周到1个月。不是迭代,你都不好意思说你用的是敏捷开发。工具方面,CMMI和敏捷的工具很多是共通的,不过敏捷相对更“极端”一点(参考极限编程,XP,这是敏捷主要的技术实践基础)。

比如CMMI有同行评审,而敏捷提倡结对编程,实际上是时刻都在做同行评审。CMMI有版本配置管理,敏捷提倡持续集成,即每一次代码checkin都会引发一次构建、代码检查、自动测试、看板更新、邮件推送甚至是版本自动部署。

CMMI有版本发布里程碑,而敏捷提倡持续交付,即每时每刻,在服务器上的版本都是可交付的。从应用范围来说,CMMI适合于外包和大规模团队的分工协作,是一种重量级的过程,属于集团军作战;敏捷适合一个完整的小团队,属于特种部队作战。现在国内外互联网公司采用敏捷开发模式很多,因为用户需求变更频繁,版本更新换代快,必须快速响应。有很多大型软件公司也尝试使用敏捷开发方式,毕竟现在都在搞项目化运作,大公司小团队是趋势。发布于 2013-10-13​赞同 50​​8 条评论​分享​收藏​喜欢张理良追求多元思维10 人赞同了该回答关于CMMI、RUP、Agile的区别,个人当前的浅见:CMMI,Capability Maturity Model Integration,偏向于组织级协作的过程框架,强调组织内所有项目应该遵从的相关协定和标准。而底层工作人员很少感觉到CMMI的存在,是因为这些CMMI的规则与约定是驾凌于单个项目管理与实现之上的,在执行具体项目的时候容易(常)被模糊稀释化(这里不论效果好坏或是管理责任的问题)。

RUP,Ratianal Unified Process,统一软件开发过程,是面向对象分析设计的软件工程方法论,逻辑上可以理解为一个贯穿软件项目生命周期的过程框架。个人认为它相对与组织级别的CMMI,RUP更偏向于项目级。书上把CMMI和RUP做为并列关系看待的两种重型软件工程方法,但个人认为RUP更聚焦,聚焦于具体开发项目,例如执行哪种开发流程模型是RUP的讨论点,而CMMI则默认瀑布模型。Agile,敏捷开发,其实是一个过程家族(方法集合),而FDD、XP、Scrum等等则是敏捷家族的具体方法论和过程子集。所以说,CMMI和Agile不是一个层面的事物,拿CMMI和RUP会更有可比性。另外说明,它们拥有一点重要而相同的地方在于它们的核心思想都是演进evolution,即持续改进。

摘自知乎

发布了131 篇原创文章 · 获赞 9 · 访问量 1933

猜你喜欢

转载自blog.csdn.net/jiganbz/article/details/104066792
今日推荐