CMM/CMMI被认为是一种最成熟、最有效地提高软件工程化水平的方法和标准,用来评估和改进过程,它是一个描述在软件开发过程中有待改进的关键因素的框架,描述了一个能用渐进方式进行改进的途径。它为软件过程改进提供一个基础,将软件开发从一个相对来说随意、不成熟的过程变成非常成熟的、有规律的、可管理的过程。
然而,CMM/CMMI也有一些与身俱来的缺点不容忽视。比如,CMM/CMMI的评估耗资不菲,一个CMM2级评估就可能达到数百万之巨,而且耗时很长,过程十分复杂,常常导致效果不太理想。不少企业的认证流于形式,评估完成后就只留下一大堆文档,而真正的软件开发过程却依然故我。而且,CMM/CMMI只告诉我们应该怎么做,而没有具体地告诉如何做。比如说,它要求必须改进需求管理,那么到底该如何做需求管理?CMM/CMMI没有提供答案。
<o:p> </o:p>
还有最重要的一点是,不少软件企业陷入了一个误区,以为单单通过CMM/CMMI评估就可以解决软件质量不高的问题,而忽略了软件过程这一真正改善软件质量的环节。事实上,完全有可能出现这样的情况: 软件成熟度为CMM 1级或2级的企业开发出的软件是真正好用的,而有的企业即使通过了CMM 5级认证,也无法保证它交付好的软件。最糟糕的情形是,如果采用不好的软件过程,通过CMM/CMMI的成熟度级别越高,只会使软件企业生产差劲软件的过程变得更加有效率,而不是使企业开发出更好的软件。
<o:p> </o:p>
Ivar Jacobson认为,好的软件过程首先一定是基于组件的,在此基础之上,还要符合迭代开发、用例驱动开发和以架构为中心的这三个最佳实践。
合理的软件过程是软件质量的基础
为什么会是这样呢,Ivar Jacobson举了一个非常形象的例子。这是一个农夫和他的奶牛的故事。在奶牛喝水的途中(称为“牛路”)有一片庄稼地,牛会吃掉很多庄稼。农夫看到这种情况后,意识到必须对奶牛喝水的过程进行改进,所以他就在这条道路上铺上了沥青。结果,农夫得到了一个好的“牛路”,牛走得更快了,但是并没有真正解决牛吃庄稼的问题。它应该有更好的方式,就是为牛喝水寻找一条全新的道路。
<o:p> </o:p>
软件企业利用CMM框架进行软件质量控制的过程,就像是这个农夫为牛路铺沥青。对于软件企业来说,如果从一个错误的软件过程开始,即使你在这个上面再改进,得到的永远只是“牛路”。这里更应该考虑的是要选择一条更好的路,也就是从一开始时,就采用能够开发出好的软件的过程。然后在这个软件过程的基础上,对这个软件进行度量,改进这个软件的过程,也就是进行CMM/CMMI要求的改进。
<o:p> </o:p>
Ivar Jacobson博士认为,从一个不良的软件过程出发,在此基础上进行改进,实际上会把软件开发变得更糟糕,因为你把软件开发过程固化了,使日后再想对它进行改造,变得更加困难。正确的方法是,先要有一个好的软件过程,这是不容易的,但是值得做的事情。Ivar Jacobson 说,“把一个好的软件过程变得可度量非常容易,但是把一个可度量的软件过程变成一个好的软件过程却很难”。也就是说,只有把一个好的软件过程,即能够开发出好的软件的过程变得可度量才是有益的。而把一个已经经过CMMI改进的、可度量的过程变成一个真正的能够开发出好软件的过程,这是几乎不可能的事情。
<o:p> </o:p>
那么什么是一个好的软件过程?Ivar Jacobson建议从以下几个方面进行辨别: 第一,坏的过程关注文档上,而好的过程关注在可执行的程序或者系统上; 第二,坏的过程延误了揭露风险的时间,而好的过程一开始就把自己暴露在风险之下,并及时解决它; 第三,坏的过程在项目的最后才能够验证这个项目的质量,而好的过程其质量是每时每刻都能够得到验证的;第四,坏的过程有一个非常复杂的跟踪关系矩阵,从需求到代码需要一个非常复杂的矩阵,而好的过程,却是一个无缝链接; 第五,在面对变更时,坏的软件很脆弱,好的软件会很健壮。
<o:p> </o:p>
Ivar Jacobson提醒软件开发人员要做聪明的农夫,首先得到一个正确的软件过程; 然后,再考虑去度量它、定义它。因为软件项目管理的本质不是能否描述并度量软件过程以及过程到底怎么样,而是首先关注软件,你是否能很好地开发出合格软件。重点是得到结果,通过软件过程得到这个结果,也就是交付的软件产品。
敏捷开发企图终结软件危机(但也是很难的,敏捷开发适合小团队,不适合需求清楚的大项目、军工项目、...)
分享到:
相关推荐
CMM/CMMI/SPCA业务介绍: (1)背景介绍:CMM是“软件能力成熟度模型”的英文简写,该模型由美国卡内基-梅隆大学的软件工程研究所(简称SEI)受美国国防部委托,于1991年研究制定,初始的主要目的是为了评价美国国防...
CMM/CMMI是软件过程改进的权威指南,旨在提升产品质量、生产率并降低成本。虽然CMM等级评估一度受到重视,但现在更注重以较低代价提高过程能力。然而,CMM/CMMI不直接解决盈利问题,其改进效果显现需要较长时间,...
通过以上对**软件过程管理**及相关知识点的详细介绍,我们可以看出,有效的软件过程管理不仅能够提高软件产品的质量,还能够在很大程度上提升组织的竞争力和发展潜力。对于软件开发组织而言,掌握并应用这些关键概念...
常见的软件过程改进方法包括ISO 9000、SW-CMM和CMMI,它们为企业提供了一条从混乱无序到高度成熟和优化的软件开发过程的演进路径。 通过深入理解软件开发过程管理,以及CMM和ISO9000的相关知识,企业能够更好地控制...
在评价和改进软件过程时,常常会用到能力成熟度模型(CMM)或CMMI。这些模型提供了一个框架,帮助组织评估其软件开发过程的成熟度,并指导如何逐步改进。此外,软件过程评估模型(SPICE)也是一种国际标准,用于评估...
1. **软件过程评估与改进模型的比较研究.doc** - 这份文档可能对比了不同的软件过程改进模型,如CMMI(CMM的升级版)、六西格玛等,并探讨它们的优缺点和适用场景。 2. **软件工程文档规范系列** - 这些文档可能...
CMM/CMMI,全称为Capability Maturity Model Integration,是一种用于评估和改进组织在软件开发、服务或采购等业务过程中的成熟度和能力的模型。它由美国卡内基梅隆大学软件工程研究所(SEI)开发,旨在帮助组织提高...
- CMM(软件能力成熟度模型):评估和改进软件过程。 - CMMI(能力成熟度模型集成):整合多个模型,提高过程成熟度。 - RUP(统一软件开发过程):强调迭代和面向对象的开发。 - XP(极限编程):强调敏捷开发...
CMM/CMMI,全称为Capability Maturity Model Integration,是一种用于评估和改进组织在软件开发、服务提供或采购过程中的成熟度和能力的框架。它由卡内基梅隆大学软件工程研究所(SEI)开发,旨在提升组织的流程能力...
- **软件质量保证员**:确保软件质量。 - **实施细则**: - **CCB的成立**:描述了配置控制委员会的建立过程。 - **确定配置策略**:定义了配置管理的总体方向。 - **制定配置管理计划**:规划具体的配置管理...
- **个体软件过程**:旨在提高个人开发者的能力和效率。 - **群组软件过程**:侧重于提高整个团队的协作效率。 - **CMM/TSP/PSP一三者的结合**:通过综合运用这些模型和技术,全面提升软件开发组织的能力。 #### 第...
- **2.8.6 群组软件过程:** 团队层面的过程改进。 - **2.8.7 CMM/TSP/PSP 三者的结合:** 整合这些模型以实现全面的过程改进。 #### 三、软件构件与中间件 **3.1 构件模型及实现** - **外部接口:** 构件对外提供...
- **定义**: CMMI 是一种集成的软件过程成熟度模型,它不仅仅关注软件开发过程,还涵盖了系统工程、产品开发和服务管理等多个领域。 - **特点**: 采用了过程域和能力等级两个维度来描述过程,过程域定义了需要实现...
3. 重构:重构就是在不改变软件现有功能的基础上,通过调整程序代码改善软件的质量、性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性。 软件工程是一门复杂的学科,它涉及到软件的设计、开发、...
8. **质量管理**:这部分可能涵盖了质量保证和质量控制的概念,以及如何利用CMM(能力成熟度模型)或其他质量框架来提升软件开发的效率和效果。CMM介绍可能包含CMMI(能力成熟度模型集成)的五个级别及其目标。 9. ...
1. **CMM类论文**:能力成熟度模型(Capability Maturity Model,CMM)是评估软件开发组织过程成熟度的标准框架。CMM类论文主要探讨如何通过改进流程、管理质量和项目执行,提升软件开发的效率和质量。这些论文可能...
5. **软件工程思想**:CMM(Capability Maturity Model)和CMMI(Capability Maturity Model Integration)是过程改进模型,RUP(Rational Unified Process)是软件开发框架,XP(Extreme Programming)强调敏捷开发...
6. **标准与规范**:SEI CMM/CMMI和ISO9001等软件过程改进框架。 7. **协同工作模式**:支持异地团队协作和项目治理的工具和技术。 在毕业设计过程中,学生需要深入研究这些领域,结合文献综述,提出创新点或解决...
2. **软件开发的要素**:介绍瀑布模型、ISO9000、CMM(Capability Maturity Model)和CMMI(Capability Maturity Model Integration),讨论不同开发模型的优缺点,以及如何组建高效团队,包括团队结构、文化和角色...