摘自
CMM流程为改善华为的软件开发带来了明显的效果,实施CMM是华为提高开发管理的重要阶段。但是CMM流程却有很多自身的局限性不利于应用软件的开发。
技术人员都知道,应用软件的新需求变化不断,尤其是电信行业的软件,大家也都知道中国的运营商是非常强势的,动不动就给你提出新的需求,而且华为的很多软件周期长,多达四五年。这些特点就要华为的软件系统必须能够面对、拥抱层出不穷的变化。
CMM流程是典型瀑布式开发流程,所谓瀑布式流程就是整个流程从需求、设计、开发、测试像瀑布一样按部就班一泻而下,不能回头。这就导致了它不易于面对变化。CMM流程的最初目的是为了那种超大行的项目,比如超过1000人年的航天项目,这种项目的特点就是先开发出硬件,然后再开发相应的软件,软件的需求很少改变。采用瀑布流程的CMM无疑是适合这种的超大型项目的,用一套完整的文档来规范开发的流程,控制整个项目的进度和风险。但是商业应用软件和这种软件项目有很的不同,他要面对不断变化的新需求。
CMM的另一个特点就是它能控制整个项目的进度、减少缺陷率、控制风险,却对提高软件的架构和设计质量鞭长莫及。CMM文档众多,却没有规范软件设计结构的。
CMM过多的文档也成为开发过程的累赘,如果你在第一个版本完成所有的文档,在后续版本开发增加新功能的时候,就要从上到下又更新从需求、设计、开发、测试的所有文档,相当繁琐。所以虽然华为的CMM最多的已经达到CMMI或5级,但是大量的项目的文档都没有及时更新和当前软件的版本相对应,越往后这些文档越是形同虚设。研发人员加班加点连编码的时间都不够,还有谁来得及管这些文档。
CMM的以上几个特点导致它很不适应商业应用软件的开发。
个人认为近几年逐渐流行的敏捷软件开发非常适合华为的电信应用软件开发,敏捷开发是目前最能面对变化、拥抱变化的开发流程。
首先,它采用了不断迭代的开发流程,有助于不断增加新的功能。
其次,敏捷开发是唯一把面向对象开发原则做为开发指导的流程,这可以让你很好地提高软件的架构和设计的质量,达到能够拥抱变化,易于维护、扩展,这个优点是大多数软件工程流程所没有的。
再次,敏捷开发没有过多的文档,只有在代码不能说明问题的时候才回去写文档,这就为研发人员减少很多的负担。
还有,敏捷开发非常适合中小型规模的商业应用软件的开发,相比CMM的全套流程对开发中小型规模的应用软件来说非常繁琐。
另外,敏捷开发主张每周高效地工作40小时,不搞疲劳战,所有的程序员可能都喜欢这一点,但是这点估计不会为华为的主管们所接受。
CMM流程有很多优点,采用了CMM比以前没有流程的时候是个很大的进步,但是其众多的缺点让他不适合应用软件(尤其是中小型的)的开发,最好能借鉴、引入敏捷开发的优点,加以改造,形成更适合应用软件开发的流程。
name 写道
4、打破CMM神话 CMM流程为改善华为的软件开发带来了明显的效果,实施CMM是华为提高开发管理的重要阶段。但是CMM流程却有很多自身的局限性不利于应用软件的开发。
技术人员都知道,应用软件的新需求变化不断,尤其是电信行业的软件,大家也都知道中国的运营商是非常强势的,动不动就给你提出新的需求,而且华为的很多软件周期长,多达四五年。这些特点就要华为的软件系统必须能够面对、拥抱层出不穷的变化。
CMM流程是典型瀑布式开发流程,所谓瀑布式流程就是整个流程从需求、设计、开发、测试像瀑布一样按部就班一泻而下,不能回头。这就导致了它不易于面对变化。CMM流程的最初目的是为了那种超大行的项目,比如超过1000人年的航天项目,这种项目的特点就是先开发出硬件,然后再开发相应的软件,软件的需求很少改变。采用瀑布流程的CMM无疑是适合这种的超大型项目的,用一套完整的文档来规范开发的流程,控制整个项目的进度和风险。但是商业应用软件和这种软件项目有很的不同,他要面对不断变化的新需求。
CMM的另一个特点就是它能控制整个项目的进度、减少缺陷率、控制风险,却对提高软件的架构和设计质量鞭长莫及。CMM文档众多,却没有规范软件设计结构的。
CMM过多的文档也成为开发过程的累赘,如果你在第一个版本完成所有的文档,在后续版本开发增加新功能的时候,就要从上到下又更新从需求、设计、开发、测试的所有文档,相当繁琐。所以虽然华为的CMM最多的已经达到CMMI或5级,但是大量的项目的文档都没有及时更新和当前软件的版本相对应,越往后这些文档越是形同虚设。研发人员加班加点连编码的时间都不够,还有谁来得及管这些文档。
CMM的以上几个特点导致它很不适应商业应用软件的开发。
个人认为近几年逐渐流行的敏捷软件开发非常适合华为的电信应用软件开发,敏捷开发是目前最能面对变化、拥抱变化的开发流程。
首先,它采用了不断迭代的开发流程,有助于不断增加新的功能。
其次,敏捷开发是唯一把面向对象开发原则做为开发指导的流程,这可以让你很好地提高软件的架构和设计的质量,达到能够拥抱变化,易于维护、扩展,这个优点是大多数软件工程流程所没有的。
再次,敏捷开发没有过多的文档,只有在代码不能说明问题的时候才回去写文档,这就为研发人员减少很多的负担。
还有,敏捷开发非常适合中小型规模的商业应用软件的开发,相比CMM的全套流程对开发中小型规模的应用软件来说非常繁琐。
另外,敏捷开发主张每周高效地工作40小时,不搞疲劳战,所有的程序员可能都喜欢这一点,但是这点估计不会为华为的主管们所接受。
CMM流程有很多优点,采用了CMM比以前没有流程的时候是个很大的进步,但是其众多的缺点让他不适合应用软件(尤其是中小型的)的开发,最好能借鉴、引入敏捷开发的优点,加以改造,形成更适合应用软件开发的流程。

2919

被折叠的 条评论
为什么被折叠?



