问题
原来问题是这么写的:“一家企业既要过CMMI,又要过ISO,还要实施敏捷,应该怎样做?”
之所以改成“哪个好”,是因为如果要多头并存,就要有主次关系。
那么,到底哪个好,应该以哪个为主呢?
分析
每次说到这个问题,都会有不同的角度可以分析。
一个常见的角度是说:CMMI比较完整“大气”,可以做整个公司的管理框架,而敏捷更适合团队级别的管理。
另外一个角度是说:两个是可以共存的,可以用敏捷开发的实践来满足CMMI的要求。
那么,到底哪个角度是优先考虑的呢?
商业目标是优先考虑的角度。
这是一个经常被廉价贩卖以至于不太引起重视的角度了,大致说的是:要理解自己的现状和目标,以便决策自己的研发方法。
有时候过程改进人员或质量人员也常常研究这个目标,但常常仅限于研究个别度量数据的目标,而极少有人有足够的高度来看整体框架的目标(本人当年也是如此)。
基于这一点,下面方案中分为几个场景一一描述。
方案
方案1:军工、航空航天——生命攸关和潜在重大损失的——CMMI为主
在敏捷与CMMI系列之一http://blog.csdn.net/cheny_com/article/details/6423463 中曾经提到,CMMI的本质是美国国防部(DOD)用于筛选供应商的标准,其核心价值观是利用需求、计划的可追溯性、一致性,来达成对生命攸关和潜在重大损失项目的保障。
这一要求可以令其基本忽略我们常常引以为豪的“创新”“激励”这些因素,或至少坚定地把这些因素排在一致性、可追溯性之后。
方案2:银行、证券——潜在重大损失的——CMMI为主,辅以RUP
IBM是CMMI的重要推手之一,此外他们还是军工和制造业软件研发管理工具的提供者——Rational系列产品及后来收购的Telelogic DOORs、SA等产品,广泛应用于军工、航空航天、制造业,但IBM最喜欢的,不是瀑布模型,而是RUP。
RUP可以理解为瀑布被迭代化了,允许业务的“不断精进”,而不是最初把需求就要一次定好。
RUP也可以理解为迭代被瀑布化了,允许迭代的目标不完全是“生产可运行软件”,或者虽然如此,但比重不同;比如开始做“可运行软件”的目的,不是交付,而是用作需求沟通的原型。
RUP是IBM这个与银行业打交道由来已久的老牌供应商的工作方式,无疑是这个行业的代表方法。
方案3:一般外包——CMMI为框架,辅以敏捷
为什么以CMMI为框架?
因为CMMI除了有军工、国防部这些标签外,还有几个标签:外包,供应商,供应商筛选。甚至可以说CMMI整体就是为外包双方准备的。而敏捷开发中,就无法直接看到有直接相关的内容。
方案4:互联网,网络游戏——Scrum为主
这个行业建议一点都不要看CMMI。
不是说CMMI完全无用,而是说有比CMMI适合地多的东西值得去做,比如产品创新,用户体验。
这就有点像多数人都学点英语,但不学日语,不是学日语无用,而是对自己的职业生涯影响不很直接。
方案5:创新产品,移动互联小程序,网络游戏的初期——XP,“原始的”原型法,乃至混沌
各种神奇的创业公司在初期的时候几乎都没有任何管理体系,然而其生产率估计到后来“正规化管理”后也无法超越,难道“管理”“开发方法”这些东西起的是反作用吗?
不是。
各种管理及方法,整体上有两个大的目标:
1. 保证正在做一个正确的产品,需求符合用户的需要。
2. 保证人员在正确地做事(包括正确的技术,被激励的工作态度等),确保产品被及时完成。
在创业团队中,虽然没有“正规管理”,但却有其他的方法在保证这两件事情。换言之,如果“正规管理”没有聚焦于这两点,或没有充分做到这两点,那么就显得用处不大。
在方案5涉及的语境中,“正规管理”能起到的作用是很小的,或者说无需正规管理,1和2应该也是能做到的(否则只能说找错了人,比如“我们用严格管理进行创新”就是错误的,应该是“我们找到一群激情的人进行创新”),因此过程应该尽量轻量化,去完成真正应该完成的创新工作。
方案6:随时随地按实际情况决策
并非所有行业都是一成不变的,也不是所有行业的所有产品都符合行业特征。
为什么CMMI中开始出现了敏捷的内容?很多人会想:“敏捷开发过于热火,CMMI不得不考虑一下广大程序员的心情。”其实不然,美国国防部是不会基于程序员的心情或业界的呼声而改变自己选择供应商的标准的,除非行业自身发生了变化。随着设备小型化,原来主要用于大型航空航天载具、指挥管控系统的软件已经逐渐走向单兵或单个小型器械,如果经常看《未来武器》系列纪录片,就会意识到这一点。这些产品很多对“一致的、可追溯的”需求没有太大的追求,反而是快速响应变化变成了一个看得见的价值。
为什么IBM也开始做RTC了呢?(RTC是IBM Rational开发的敏捷开发管理工具)因为原来银行业的业务一直变化很慢,就是存取款贷款之类,但最近大家应该能感受到,银行队伍的长度,和股市、基金、理财、黄金的关系更大,这些业务的需求变化很快,敏捷开发变得势在必行。
因此应该理解自己的行业,也要理解自己正在面对的具体产品,才能决定那种方法更适合,哪种方法为主。
ref:http://blog.csdn.net/cheny_com/article/details/7496322
分享到:
相关推荐
### Scrum敏捷项目管理 #### 敏捷的背景与动机 - **软件危机与软件工程的出现**:软件危机指的是由于软件开发过程中遇到的各种问题,如成本超支、时间延误等,导致软件产品无法满足用户需求的情况。为了解决这些...
在项目中,可能会遇到两种类型的工作:可确定的工作和高度不确定的工作。可确定的工作是指项目的范围和时间表已经确定的工作,而高度不确定的工作是指项目的范围和时间表不确定的工作。 2.2 《敏捷宣言》及思维模式...
此外,该指南可能会介绍一些敏捷框架和方法论,如Scrum、Kanban、Extreme Programming (XP)和Scaled Agile Framework (SAFe),以及它们在不同规模和类型项目中的应用。 文档中的版权声明部分强调了版权保护的重要性...
它起源于软件开发领域,但现在已经广泛应用于各种行业和项目类型。这种模式强调迭代开发、频繁反馈和团队协作,以提高项目效率和客户满意度。 **一、敏捷原则与价值观** 敏捷宣言是敏捷项目管理的核心,它由四条...
敏捷测试象限是书中介绍的一个重要工具,它帮助测试人员识别在敏捷开发过程中需要进行哪些类型的测试,以及由谁来执行这些测试。敏捷测试象限分为四个象限:技术专家质量关注、团队质量关注、支持开发过程的质量关注...
它主要针对那些需求频繁变化、不确定性高的项目,尤其适合小型、创新性强的项目。敏捷开发的核心价值观包括个体和互动高于流程和工具、可工作的软件高于详尽的文档、客户合作高于合同谈判以及响应变化高于遵循计划。...
- **灵活配置**:根据项目需求调整功能模块和工作流程,满足不同规模和类型的项目需求。 - **文件共享**:便捷的文件存储与分享功能,提高工作效率。 #### 二、快速进入工作区 **步骤详解**: 1. **接受邀请**: ...
精益-敏捷理论在产品开发项目中的应用 精益-敏捷理论是供应链管理中的一种思想原理,旨在平衡大规模生产的经济效益和客户化定制的快速响应,以达到既有效降低生产流通成本,又提升客户满意度。该理论的应用在产品...
在IT行业中,系统分析与设计是一项至关重要的技能,它涵盖了需求获取、系统规划、架构设计、详细设计、编码实现以及测试等多个阶段。...这些知识不仅适用于操作系统开发,同样适用于其他类型的软件工程项目。
- **Scrum应用**:Scrum不仅适用于软件开发领域,还可以应用于其他类型的项目管理和团队协作中。 #### 五、Scrum流程和工作产品 - **产品待办事项列表**:包含了所有已知的工作项,按照优先级排序,是Scrum团队...
这些原则不仅适用于软件开发领域,也适用于其他类型的项目管理和团队协作场景。 **实战应用**: 本书的一大亮点在于其贴近实战的特点。作者Jonathan Rasmusson通过分享自己多年来的实践经验,为读者提供了许多实用...
敏捷测试作为一种紧跟敏捷开发理念的测试方法论,其核心在于更高效、灵活地确保软件质量的同时,保持整个项目的快速迭代与交付能力。敏捷测试不仅继承了传统测试的基本原则——即通过执行被测系统以发现潜在问题并...
软件过程的重量级与轻量级是软件开发方法论的两种类型。重量级通常指对过程控制较为严格,文档要求全面的方法;轻量级则指更为灵活、效率更高、强调快速迭代和最小化文档的方法。选择合适的软件过程需要根据项目特性...
开发生命周期有多种类型,如预测型、迭代型、增量型、适应型(敏捷)和混合型。其中,敏捷方法在创新项目中尤其适用,强调频繁交付和快速适应变化。产品生命周期则描述了产品从诞生到衰退的各个阶段。 项目由一系列...
本文将详细阐述敏捷测试的核心概念、最佳实践以及如何在实际项目中应用这些策略。 #### 敏捷测试简介 敏捷测试是指在敏捷开发环境中进行的测试活动。它强调与开发团队的紧密合作,以便及时发现并修复缺陷。敏捷...
- 测试象限,测试级别和测试类型:敏捷测试不仅包括自动化测试,还包括手动测试,以及根据上下文选择适合的测试类型。 - 测试人员的角色:敏捷测试人员在团队中的角色不仅仅是执行测试,更多的是要参与讨论产品...
它起源于敏捷开发理念,旨在通过快速迭代和持续改进来提高软件项目的成功率。敏捷建模的核心原则包括只做必要的工作、及时反馈、尊重个体和交互以及持续学习。 在Java开发中,敏捷建模同样具有重要的应用价值。Java...
### U9项目敏捷实施仿真实战 #### 一、组织架构与设计 ##### 1.1 组织机构 在U9项目敏捷实施过程中,首先需要明确的是项目的组织架构。组织架构是整个项目管理和实施的基础,它定义了项目中的各个组成部分以及...