在这个概念爆炸的时代,CMM/CMMI在中国软件这片特殊的土壤上,曾经创造了并不完美的辉煌,也面对着诸多质疑和否定,一路走来,它会最终将被证明是一个伟大的经典还是一个因水土不服而彻底失败的理论呢?后CMM时代的软件过程改进又将如何演绎呢?以下,笔者尝试从CMM/CMMI以外的三个方面来探讨这个问题.....
有效的行为模式
据说中国第一个宇航员杨利伟是穿戴着一片成人尿不湿(俗称尿片)飞上太空的。诚然,这片尿片必将随着杨利伟的一飞冲天而永垂不朽,但这毕竟是中国航天人初试啼声时的权宜之计, 据说神六上天的时候已经没有这种令人多少有点尴尬的玩意了——这说明一个问题,有时为了一时的需要采取一些临时性的措施是无可厚非的,但这些临时性的措施应该尽可能的被及时的抛弃,但在我们日常的软件开发实践中,这片临时的尿片却往往远比我们航天员身上的来的顽固:
当已经定义的过程告诉你需要做某些记录或编写某些文档时,因为某些原因(比如永远落后的项目进度),将这些规范“暂时”搁置一边,“留待下一次再来遵循”——当然,下一次依然还有下一次......
那些因为一时的方便而被程序员“临时”设置的全局变量,在发布时却被发现依旧赫然存在......
当一段代码被拷贝粘贴了数次后,因为种种原因(例如今天心情不爽,懒得....),依然被“临时性”的继续被拷贝粘贴,而不是去设计一个可重用的类或者方法。最终,这段代码被N次的拷贝到程序的各个角落......
当发现一个有待改进但尚未构成即时的致命影响的缺陷时,不是立刻修复或者记录下来,而是“暂时”放在一边:“回头再说”——而这一回头,往往已是万水千山了
将“临时性”的行为永久化只是我们开发过程中诸多不良行为模式中较有代表性的一种,无论我们采用什么样的软件过程,首先必须从根本上杜绝这些不良的行为模式而建立有效的行为模式。建立有效行为模式的途径,首先是要让行为受到约束,行为的约束需要靠有效的方法和手段以及有效的机制来实现的,例如:静态代码检查和走读等等。其次,量化的管理也能为我们的行为约束提供有效的帮助,我们未必都要将我们的量化管理达到CMMI4级那样的标准,但几个不多但有效的度量指标往往会给企业的管理带来意想不到的效果,如可以进行各种分类统计的缺陷率指标等....。最后,非技术层面上的管理,如有效的惩罚和激励机制等都可以帮助团队最终将良好的行为习惯固化为一种良好的行为模式 。
有效的技术支撑平台
CMM/CMMI在为我们带来了先进理念的同时也为我们提供了实现这些理念所需的各种方法,诸如被告知我们需要根据项目的进展更新项目计划;又如我们被告知需要从需求到设计、实现及测试建立双向的可追溯性等等。然而这些方法在纯手工的情况下往往不具有可操作性,有时既便是在借助于部分工具的前提下仍然难以操作,本人曾经多少次看到软件企业的QA或PM们埋头于Project编制的计划和团队成员提交的工作日志间,辛勤而痛苦的根据工作日志所提交的任务完成情况更新项目的进展,然而不幸的是,这样做的结果往往并不理想——理由非常简单,因为MS Project(大多采用的是Pro而非Server版)并不足以提供项目跟踪所需的完整技术支撑。
因此,所谓“工欲善其事,必先利其器”,要想有效的完成已定义的软件过程,必须首先建立有效的技术支撑平台,同时,技术平台的选择应该遵循以下原则:
针对性——没有最好的工具,只有最合适的工具,不同的企业有不同的需求,应该根据自己特定的需求选择最具有针对性的技术支撑平台。
整合性——软件过程是一个整体,因此在选择工具的时候应注重这些工具的整合性,若干游离的数据孤岛所带来的后果往往是严重的。
成本——成本是每一个企业都会考虑的因素,然而这里所说的成本并不完全是指采购成本,而是全生命周期的成本,这里面除了采购成本还包括了部署和使用成本
依赖自我而不是外力构建的持续改进机制
CMM/CMMI的导入很大程度上都是依赖于外部力量——咨询 公司,当功德圆满,咨询方和公司成员喜气洋洋的拍完全家福照后,一切回归平静,软件企业中的软件过程在大多数情况下并不是持续改进而是渐渐衰退,甚至有些企业的CMMI软件过程最终只是成为某个文件柜中一堆尘封的故纸......。
当然CMMI评审功利性的出发点(拿证)是造成上述这种现象的一个重要原因,然而另一个重要的原因则是CMM/CMMI的导入大多数情况下其驱动力来自外部而不是来自企业本身,当这个外力消失以后,其软件过程改进往往就裹足不前甚至不进反退,因此构建基于内力而不是外力的持续改进机制是保证企业软件过程持续改进的关键。要想做到这一点,建议从以下几个方面入手:
人力资源的培养——毋庸置疑,首先应该强调的当然是企业内部人力资源的培养,实际上一个踏踏实实的CMMI导入过程可以培养出一个合格的过程改进团队,这也许是CMMI评审 除了拿证以外另一个最为重要的意义所在了,不过,日常的团队建设也是不可或缺的,当今软件行业处于知识爆炸的时代,身处其中犹如逆水行舟,不进则退。
完善内部培训机制——内部培训是一种非常有效且经济的提升团队整体能力的手段,曾经接触过一个坚持“每日培训”的企业,着实让人佩服。但一般建议 至少做到“每周培训”,通常可以作为周例会的一个组成部分。
介入式的咨询服务——外部的力量也可以作为一种必要的补充,但从长远来说,突击式的拿证并不能为企业带来多少收益,因此,对于企业来说,介入式的咨询服务(而不是君子动口不动手 ,隔岸观火式的咨询服务)——如QA外包则可以为企业带来一些真正的获益。
分享到:
相关推荐
本文将深入探讨这一主题,基于“中小型软件企业的软件项目管理及软件过程改进”课程设计文档和答辩PPT,提炼出一系列核心知识点。 一、软件项目管理基础 1. 项目生命周期:从项目的启动、规划、执行、监控到收尾,...
CMMI(Capability Maturity Model Integration)能力成熟度模型集成是一个全球广泛接受的框架,用于提升组织在项目管理和过程改进方面的能力。CMMI V2.0是该模型的最新版本,由CMMI研究院及其业界合作伙伴共同开发,...
为了提高软件开发组织的能力,确保软件产品的质量,国际上出现了多种软件过程改进模型,其中最为著名的包括CMMI(能力成熟度模型集成)和本文件所提及的SJT 11234-2001《软件过程能力评估模型》。 #### 二、软件...
CMMI(Capability Maturity Model Integration,能力成熟度模型集成)是一种评估和改进组织软件开发能力的框架,它为软件开发过程提供了标准化和结构化的模型。CMMI软件项目管理的核心在于提高软件开发效率和产品...
这要求企业根据自身的产品开发经验和管理实践,构建和完善项目管理规章制度,建立全生命周期一站式管理的管理框架,同时配置相应的业务管控工作流和软件过程管理标准。 总的来说,CMMI软件项目管理与实践是针对现代...
综上所述,CMMI不仅是对CMM的继承和发展,更是对系统与软件工程领域过程改进理论的一次重大革新。它通过提供更加灵活、全面的评估框架和细致的过程指导,帮助组织识别和解决质量管理中的核心问题,从而促进其在复杂...
综上所述,CMMI作为一种全面的过程改进框架,不仅能够帮助组织提高软件开发和其他领域的过程管理能力,还能够促进整个组织的文化变革和发展。通过持续地应用CMMI模型,组织可以在市场竞争中保持领先地位。
CMMI(Capability Maturity Model Integration,能力成熟度模型集成)是一种评估和改进组织在软件开发和服务提供过程中能力水平的框架。CMMI 2.0版本是该模型的一个重要更新,旨在帮助组织提高其业务流程的有效性和...
在信息化时代,项目管理和过程改进成为了企业提升效率、保障质量的关键因素。PMP(Project Management Professional)和CMMI(Capability Maturity Model Integration)是两种在全球范围内广泛认可的专业体系,它们...
论文作者基于软件过程改进的理念,结合软件工程学和系统学等相关理论,针对国内软件企业面临的质量管理实际问题和成本效益的平衡困境,提出了一个四步法:问题归纳、文献分析、方案设计、验证实施。在全面质量管理的...
软件过程包括了诸如CMMI、SPICE等过程改进模型,而不包括IDEAL,它是一个组织改进模型。软件开发方法中,CMMI和SPICE属于过程改进框架,XP和SCRUM是敏捷开发方法,而Cleanroom、Gate和TSP则代表不同的过程改进实践。...
软件工程的 7 条基本原理是在面向过程的程序设计时代提出来的,但在面向数据和面向对象的程序设计的今天,它仍然有效。第 8 条基本原理是软件工程中的二八定律,是对基本原理的补充与发展。 6. “4 种开发方法”和...
软件项目管理受到广泛关注,特别是CMM和CMMI的出现,为软件过程改进提供了指导框架。CMMI模型强调过程改进,旨在提高软件组织的成熟度,提升软件质量和生产效率。国外大型软件公司普遍采用此类模型来提升项目管理...
而能力成熟度模型集成(CMMI)则为软件开发过程的改进提供了指导,通过五个等级的评估,逐步提升组织的软件开发能力。 三、需求管理 需求管理是质量管理的起点,包括需求获取、分析、定义、验证和管理。明确、完整...
- **阶段式模型**:将成熟度分为不同的等级,每个等级代表了一组过程改进的目标。 5. **列举三种耦合**: - **内容耦合**:一个模块直接访问另一个模块的内部数据或代码。 - **公共耦合**:多个模块通过共同引用...
软件工程学科的研究涵盖了多种领域,如软件开发范型(如敏捷开发、瀑布模型等)、开发方法(结构化、面向对象等)、软件过程(如敏捷过程、CMMI等)、软件工具和环境、CASE技术,以及软件经济学,这些都是确保软件...
在文档中,AC+和B1级别可能指的是CMMI(Capability Maturity Model Integration)中的成熟度级别,CMMI用于指导组织改进其软件开发、系统工程以及采购过程的能力。 文档中的百分比数字(如10%、30%、60%)可能是与...
ISO/IEC 12207等国际标准为软件开发过程提供了指导原则,而CMMI(能力成熟度模型集成)则帮助组织评估和改进其软件开发过程的能力。 ### 结论 2005年下半年软件设计师上午试题及其答案不仅反映了当时对软件设计与...
质量管理软件系统是专门为了提升这个过程效率和效果而设计的工具。 质量管理软件系统通常包括以下关键组件: 1. **需求管理**:确保产品功能和性能的需求清晰、准确,可以通过需求跟踪矩阵(RTM)来管理需求变更,...