Scrum 与CMM/CMMI 与ISO9001冲突吗

    公司去年下半年刚刚通过CMM5 认证,对于国内企业来说,通过这个认证需要相当的实力和软件管理水平。当然,从软件管理上来讲,我们采用的是传统的瀑布模式,但是目前我们也想在公司的一些部门推广使用敏捷的办法,尤其是Scrum。公司现有的规章制度不能改变,还是要严格遵守CMM/CMMI 的一些要求,我不是特别清楚Scrum 与CMM/CMMI 的关系,另外还有ISO9001的这样的质量标准,他们之间有冲突吗?
    ISO9001 是一个国际标准,即《ISO9001:2000 质量管理体系——要求》ISO9001标准起源于制造业,其标准结构、质量体系特点都与制造业非常吻合。随着市场经济的发展和市场竞争的愈加激烈,除了机械、电子、汽车、建筑等传统产业的企业认为ISO9001 质量体系认证必不可少外,其他行业,如IT、通信、服务业(酒店、物业管理等)等也在如火如荼地推行ISO9001 认证。而CMM 是由美国卡内基·梅隆大学的软件工程研究所(SEI)开发的软件成熟度模型,美国的软件企业往往选择取得CMM 等级证书。
    在形式上,CMM 分为5 个等级(第1 级级别最低,第5 级级别最高),与ISO 9000审核后只有“通过”和“不通过”两个结论相比,CMM 是一个动态的过程,企业在取得低级别的证书后,可根据高级别的要求确定下一步的改进方向。在基本原理方面,ISO9001 和CMM 都十分关注软件产品质量和过程改进。尤其是在ISO 9001 标准增加了持续改进、质量目标的量化等方面的要求后,在基本思路上和CMM 更加接近。而所谓的CMMI 是在CMM 的基础上相继开发出了系统工程、软件采购等各方面的能力成熟度模型,并整合而成的一种更为复杂、宏大的模型系统,但基本思想和CMM是没有很大区别的⋯⋯
    ISO9001 以及CMM 或者CMMI,这些都是比较接近或者类似的软件管理模型方法,而这些方法相对于Scrum 这种敏捷的软件开发管理方式而言,还是有比较大的差别的。比如,CMM 等强调过程的可观测性,Agile 则强调可观测的结果(可运行软件),CMM 等方法比较强调文档,而Agile 方法却不是那么在乎文档等。
    总体而言,CMM/CMMI 与Agile 是两种不同的软件研发管理和过程体系,前者比较重量级,后者更为轻量一些。Agile 包含了更多具体、实用的软件工程技术方法,而CMM/CMMI 提供了更多以数学统计为基础的过程管理和质量控制技术方法。但是这并不是说Scrum 在一个CMM 管理的企业中一定会带来冲突。
    我认为,合理、恰当的结合运用Scrum 以及CMM 的一些管理理念是不会有太大问题的。因为在很多软件过程中,使用Scrum 能够在一些专门的领域大大减少工作量,比如修改Bug、软件设计等方面。也就是说,可以在大的、更为宏观的层面上使用CMM 来控制质量和管理流程,而在一些小团队的具体分工中采取Scrum 这样的敏捷方法。所以,从总体上说,在实施层面上Scrum 与CMM/CMMI 应该是兼容的。但是从价值观来看,敏捷和CMM/CMMI 又是冲突的。CMMI 的价值观是过程重于人,文档重于可运行的软件。敏捷则正好相反。敏捷是要消除一切阻碍创造价值的浪费。而在CMMI 的大量关键过程域中,只有很少的东西和开发有关,大多数CMMI 的实施都会带来很大的浪费。另一方面,CMM/CMMI 不关心团队协作,不关心是否能招到合适的人,更不关心你的代码是否应该重构⋯⋯
    在以后的时间里更深入地研究、实践这个问题,甚至是一些更为细节的管理问题,比如CMM 要求的文档的问题Scrum 团队应该如何应对等。我想应该可以找到一个很好的平衡点。

猜你喜欢

转载自wengge.iteye.com/blog/1076228
CMM
今日推荐