`
- 浏览:
98469 次
- 性别:
- 来自:
长沙
-
摘自
name 写道
4、打破CMM神话
CMM流程为改善华为的软件开发带来了明显的效果,实施CMM是华为提高开发管理的重要阶段。但是CMM流程却有很多自身的局限性不利于应用软件的开发。
技术人员都知道,应用软件的新需求变化不断,尤其是电信行业的软件,大家也都知道中国的运营商是非常强势的,动不动就给你提出新的需求,而且华为的很多软件周期长,多达四五年。这些特点就要华为的软件系统必须能够面对、拥抱层出不穷的变化。
CMM流程是典型瀑布式开发流程,所谓瀑布式流程就是整个流程从需求、设计、开发、测试像瀑布一样按部就班一泻而下,不能回头。这就导致了它不易于面对变化。CMM流程的最初目的是为了那种超大行的项目,比如超过1000人年的航天项目,这种项目的特点就是先开发出硬件,然后再开发相应的软件,软件的需求很少改变。采用瀑布流程的CMM无疑是适合这种的超大型项目的,用一套完整的文档来规范开发的流程,控制整个项目的进度和风险。但是商业应用软件和这种软件项目有很的不同,他要面对不断变化的新需求。
CMM的另一个特点就是它能控制整个项目的进度、减少缺陷率、控制风险,却对提高软件的架构和设计质量鞭长莫及。CMM文档众多,却没有规范软件设计结构的。
CMM过多的文档也成为开发过程的累赘,如果你在第一个版本完成所有的文档,在后续版本开发增加新功能的时候,就要从上到下又更新从需求、设计、开发、测试的所有文档,相当繁琐。所以虽然华为的CMM最多的已经达到CMMI或5级,但是大量的项目的文档都没有及时更新和当前软件的版本相对应,越往后这些文档越是形同虚设。研发人员加班加点连编码的时间都不够,还有谁来得及管这些文档。
CMM的以上几个特点导致它很不适应商业应用软件的开发。
个人认为近几年逐渐流行的敏捷软件开发非常适合华为的电信应用软件开发,敏捷开发是目前最能面对变化、拥抱变化的开发流程。
首先,它采用了不断迭代的开发流程,有助于不断增加新的功能。
其次,敏捷开发是唯一把面向对象开发原则做为开发指导的流程,这可以让你很好地提高软件的架构和设计的质量,达到能够拥抱变化,易于维护、扩展,这个优点是大多数软件工程流程所没有的。
再次,敏捷开发没有过多的文档,只有在代码不能说明问题的时候才回去写文档,这就为研发人员减少很多的负担。
还有,敏捷开发非常适合中小型规模的商业应用软件的开发,相比CMM的全套流程对开发中小型规模的应用软件来说非常繁琐。
另外,敏捷开发主张每周高效地工作40小时,不搞疲劳战,所有的程序员可能都喜欢这一点,但是这点估计不会为华为的主管们所接受。
CMM流程有很多优点,采用了CMM比以前没有流程的时候是个很大的进步,但是其众多的缺点让他不适合应用软件(尤其是中小型的)的开发,最好能借鉴、引入敏捷开发的优点,加以改造,形成更适合应用软件开发的流程。
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
**CMM(Capability Maturity Model,能力成熟度模型)**是一种评估软件开发组织或项目团队在软件工程过程管理上的成熟度和系统性方法。CMM由美国卡内基梅隆大学软件工程研究所(SEI)开发,最初目的是提高国防系统的...
CMM-manager
在IT领域,CMM(Context-Free Grammar Modeling Machine)是一种用于处理和分析上下文无关语言的工具,常用于编译器设计或解析器的构建。它通过解析输入的语法规则来生成相应的语法树,这是一种直观地表示语言结构的...
**CMM语言与C语言的关系** CMM,全称可能是"Compact Managed Model"或"Controlled Managed Model",是基于C语言的一种简化版本。它的设计目的是为了提供一个更简洁、更易于理解和实现的编程语法,可能针对初学者或...
《全面解析浙江大学CMM课程:基于CMM的软件过程改进与管理》 CMM,全称为Capability Maturity Model,即能力成熟度模型,是衡量软件开发组织在软件工程过程能力的一种框架,由美国卡内基梅隆大学软件工程研究所...
CMMI 和 CMM 的主要区别 CMMI(Capability Maturity Model Integration,能力成熟度模型集成)和 CMM(Capability Maturity Model,能力成熟度模型)都是软件过程改进的模型,但它们之间存在着一些关键的区别。 1....
很多时候,人们提到CMM,其实指的是SW-CMM,即软件CMM。除了SW-CMM以外,还有P-CMM,SE-CMM,SA-CMM和CMMI等,这些CMM都是美国Carnegie Mellon大学软件工程研究所(SEI)的产品。每个CMM都是独立的产品,有各自不同...
本实验的实验目的为构建一个CMM语言解释器,该解释器分为三部分:词法分析器,语法分析器,语义分析器,三者为拓扑关系,即后一个部件建立在前一个部件的基础之上。 实验内容主要包括:CMM语言的词法分析,语法分析...
CMM(Control Maintenance Model,控制维护模型)是一种用于软件工程中的编程语言,它主要用于系统级的编程,尤其是在航空航天、国防和工业控制等领域。CMM语言的解析是编译器或解释器开发的重要部分,其中词法分析...
《CMM和PMP教材》 本压缩包包含两份重要的IT管理领域的教材:PMP官方教材(PMBOK第五版中文电子版)和CMM教材。这两份教材是项目管理和软件过程改进领域的核心参考资料,对于提升个人在IT行业的专业素养具有极大的...
在本项目中,"cmm解释器大作业"是一个典型的计算机科学课程作业,涉及到了编译原理中的核心概念。这个作业旨在让学生通过实践理解并掌握词法分析、语法分析以及语义分析等编译器设计的关键步骤。武汉大学的这个实践...
**CMM语言解释器**是一种专门用于执行CMM(一种假设的编程语言)程序的软件。解释器的主要任务是读取CMM源代码,通过词法分析、语法解析和语义分析来理解和执行代码,而无需先将其编译成机器码。在本项目中,我们将...
### SSE-CMM浅析 #### 一、系统安全工程—能力成熟度模型(SSE-CMM)简介 系统安全工程—能力成熟度模型(System Security Engineering Capability Maturity Model, SSE-CMM)是一种评估和改进组织内系统安全工程过程...
"CMM manager 学习文档" CMM manager 是一種工作導向、非常直覺的測量套裝軟件,主要用在坐標測量機(CMM Coordinate Measuring Machine)上。它提供了輕而易舉的測量方式、單鍵式 CAD 測量、防碰撞測量路徑產生、...
【CMM与项目管理】 CMM,全称为Capability Maturity Model,中文译为能力成熟度模型,是一个评估软件开发组织过程能力的阶梯式模型。它由美国卡内基梅隆大学软件工程研究所(SEI)开发,旨在帮助软件企业提高其软件...
【哈工大CMM课程课件】是哈工大软件学院提供的一套全面介绍能力成熟度模型(Capability Maturity Model,简称CMM)的教育资源,旨在帮助学生和专业人士深入理解和应用这一模型。CMM是一种评估和改进软件开发组织过程...
CMM语言解释器是一种专为CMM编程语言设计的软件工具,它的主要任务是读取CMM源代码并执行相应的操作。CMM语言可能是一种类似于C或C++的低级编程语言,或者是某个特定领域定制的语法。这个简易的解释器包含了语言的...
《CMM》新课件是一套全面介绍软件能力成熟度模型(CMM)的课程资料,旨在深入解析CMM的基本概念及其未来发展趋势。这个压缩包包含了一系列关于CMM的PPT文件,每个章节都详细探讨了CMM的不同方面,帮助学习者系统地...
**CMM解释器完整代码**是一个实现了从源代码到执行的全过程的软件系统,主要针对名为"CMM"的编程语言。这个解释器包含了四个关键模块:词法分析、语法语义分析、中间代码生成和解释执行。下面将详细介绍这些模块以及...