22

十年前,当我第一次遇到软件 CMM时,我想我和许多人一样,被它准确地描述了许多企业中软件开发的混乱“一级”状态所震惊,特别是它提到了对英雄的依赖。它似乎也为组织提供了现实的指导,以提高其流程的水平。

但是,虽然它似乎为改进提供了一个很好的模型和现实的指导,但我从未真正目睹过对 CMM 的坚持对我曾经工作过或合作过的任何组织产生重大的积极影响。我知道一家大型软件咨询公司声称 CMM 5 级 - 最高级别 - 当我亲眼看到他们的流程和其他非 CMM 业务一样混乱,他们的软件产品的质量也多种多样。

所以我想知道,有没有人看到根据 CMM 坚持流程改进带来的真正、切实的好处?

如果您看到了改进,您认为改进是否特别归因于 CMM,或者替代方法(例如六西格玛)是否同样或更多有益?

还有人相信吗?

顺便说一句,对于那些还没有看过的人,看看这个有趣的,因为它的真实模仿

4

22 回答 22

15

问题的核心在于这个问题,CMM 指南本身巧妙地描述了这个问题......

“<em>...正确的判断对于正确和有洞察力地使用 CMM 是必要的。智慧、经验和知识必须在特定环境中形成对 CMM 的适当解释。这种解释应该基于组织和项目的业务需求和目标。CMM 的死记硬背、以清单为导向的应用程序有可能损害组织而不是帮助它......”</p>

从第 14 页,能力成熟度模型的第 1.6 节,卡内基梅隆大学软件工程研究所改进软件过程的指南,ISBN 0-201-54664-7。

于 2008-09-15T18:25:17.673 回答
13

我发现它很臃肿,主要用作合同获取/维护工具的文档练习。一旦我们签订了合同,那就是绕开流程的练习。

作为一名开发人员,我一无所获,只是浪费了几个月的职业生涯——在 CMMI 上胡闹。

6 Sigma 也是如此,我将其命名为“盒子中的常识”。我不需要接受培训如何找出流程的问题——这通常很明显。

对我来说,小团队和敏捷机制工作得更好。周期短,沟通多。这可能不适用于所有环境,但它绝对适用于我的环境。

只是我的两分钱。

于 2008-09-15T18:31:17.283 回答
10

如果您看到 CMM 运行。并且跑得快。

于 2008-09-15T18:27:48.603 回答
10

对于典型的 CMM 1 级编程车间,努力达到 2 级是值得的;这意味着您需要考虑您的流程并将其写下来。当然,这会遇到牛仔程序员的抵制,他们觉得受到标准、文档和测试用例的限制。

从 2 级(“有一个过程”)到 3 级(“每个人都有相同的过程”)的努力通常会陷入部门间的战争,因此可能不值得开始。

于 2008-09-15T19:29:04.370 回答
7

如果您的组织将其试图教授的课程放在心上,CMM 和 CMMI 都会提供一些好处。问题是达到更高的水平非常困难和昂贵,而我唯一一次看到一个组织通过努力是因为他们的客户在合同达到一定水平之前不会让他们投标。

这具有组织尽其所能“只获得数字”的效果,而实际上并不关心改进他们的流程。

于 2008-09-15T18:18:34.443 回答
5

更高端?不,CMM-5 商店没有给我留下深刻印象。

低端?是的。CMM-1 组织吓到我了。

CMM 可以帮助新/新手团队衡量自己并进行自我改进。

于 2008-09-15T18:21:10.913 回答
4

CMMI 并不是真的要改进您的软件,而是要记录您所做的事情。您几乎可以通过公司生成的文档的权重来估计公司的 CMMI 级别。

背景:我在我的软件工程研究生课程中学习了 CMMI,并且在一个遵循其指导方针的团队中工作。

于 2008-09-15T18:20:02.367 回答
4

我的经验是 CMM 非常模糊,很容易实现。此外,当他们来认证您时,他们会查看您的组织选择的项目。我以前工作的地方,这个项目没有真正的截止日期,有很多钱,还有很多时间可以花在过程的每一个角落和缝隙上。许多其他项目在没有版本控制软件的情况下继续进行,几乎没有代码/设计审查。

我认为对 CMM 认证的强调是不幸的。公司知道如何运作系统,并且做到。他们没有专注于满足其底线的实际流程改进,而是专注于获得认证和运行系统。老实说,我认为大多数组织宁愿花时间在前者上,也不愿在后者上浪费太多时间。

真正重要的是让有责任心的人想要做出良好的开发决策,并且知道他们在做出这些决定时需要帮助。没有什么可以替代高素质的程序员,他们知道编程是一项持续的集体活动,他们和其他人一样容易犯错误。

于 2008-09-15T18:25:48.780 回答
4

我一直在为做迭代开发的小团队做很多面试。就个人而言,如果我在简历上看到 CMM,这是一个很大的危险信号,表明对过程的兴趣高于结果。

于 2008-09-15T18:39:08.887 回答
3

存在所有正式的方法来销售书籍/培训课程/认证,并且没有其他原因。这就是为什么有这么多形式化方法的原因。一旦你意识到这一点,你就自由了:-)

于 2008-09-15T19:31:57.780 回答
2

Yourdon仍然相信。但他也可能仍然相信世界将因千年虫而终结。

这不是我个人会非常相信或希望在未来被束缚的事情。但通常我们的理由不是……

于 2008-09-15T18:20:55.420 回答
2

PS 虽然有点跑题,但我想提一下,伪造的 CMMI 认证以及通过贿赂获得的真实认证非常普遍。

于 2008-09-15T18:22:44.183 回答
2

CMM 并没有真正谈论软件的质量,而是更多地谈论过程的文档和可重复性。换句话说,有可能有一个有序且可重复的开发过程,但仍然会创建蹩脚的软件。只要过程被正确记录,就有可能达到 CMM 5 级。

归根结底,CMM 是另一种可以使用或误用的工具。如果最终目标是提高软件质量,则可以使用 CMM 来改进开发过程并提高软件质量。如果目标是达到某个 CMM 级别,那么软件质量很可能会受到影响。

于 2008-09-15T18:28:54.670 回答
2

该模型正在失去它的可信度,首先是因为公司采用该模型不是为了寻找更成熟的软件开发模型,而是要被评估为 CCMI 级别。

另一个问题,我认为导致信誉丧失的问题是,作为承包商,您无法保证您的 CMMI 评估供应商向您出售的项目将使用模型实践开发。CMMi 标签仅表明该公司曾经开发过被评估为符合特定 CMMi 成熟度级别的项目。

问题不仅在于 CMMi,还在于公司开发的流程。CMMi 没有描述流程本身,而只是描述了流程应该做什么。PMBOK 也有同样的问题。实际上问题不仅在于 PMBOK,而主要的问题在于声称遵循 PMI 声明的糟糕项目经理。

于 2008-09-16T06:23:11.957 回答
1

在学校,我被教导:CMM 是一个好主意,但缺乏认证(任何人都可以说他们是 5 级 / 4 级)它最终成为离岸商店的营销工具。所以,是的,这个想法是合理的,但你如何证明坚持?

于 2008-09-15T18:18:50.933 回答
1

我曾经。但现在我发现 CMM 和 CMMI 并不太适合敏捷方法。

哦,当然,您可以挤压东西以将方形钉子放入圆孔中,但是当事关重大时,您的方法仍然基于预测所需一切的能力,并预测将遇到的一切,当构建一个软件系统。

我们都知道,这种方法在现实生活中的效果如何!(-:

干杯,

于 2008-09-15T18:22:28.553 回答
1

敏捷是下一个 CMM,两者都很脆弱。流程和质量咨询领域在任何行业都是一项很好的业务,就像工程人员一样,每个人都需要新的流行语来保持资金流动。

CMM 刚从 SEI 出来时是一个基于扎实学术工作的好概念,但很快就被流程顾问采纳,现在是一个毫无价值的认证,大多数 CIO 都用它来掩盖他们的屁股(没有人因为选择一家 CMM 5 级公司)

敏捷很快就会沿着这条路走下去,然后我们肯定会很快看到地平线上的下一个灵丹妙药:)

于 2008-09-15T18:25:43.693 回答
1

当我从事商业飞行软件工作时,我们使用了 CMM,并且随着我们的流程改进,我们准确预测完成时间的能力也提高了。但这是一个繁琐的过程,其他方法应该也可以。

于 2008-09-15T18:28:48.943 回答
1

较小的项目不太依赖成功的过程。关键指标是英雄与旁观者的比率。任何 HTBR 小于 0.2 的项目都会遇到严重的问题。

于 2008-09-15T19:21:49.893 回答
1

有很多好的想法可以很容易地被任何组织为了自己的利益而改编和采用,但是由于需要各种冗余文档,因此获得徽章是一件痛苦的事情。

问题是 CMMi 不是一个过程,而只是您可能选择拥有的任何过程的指南,而这本身就会引发不成熟的想法四处流传。

另一点是,当您开始迁移时,迁移是一个真正的痛苦,但我猜它与任何其他初期问题一样。

于 2008-10-16T06:30:11.780 回答
1

理解 CMMi 价值的主要问题是理解 CMMi 本身。

CMMi 是一种记录在案的软件生产持续改进方法。

在制造中理解 SPC 的持续改进已经够难了,但是加上无形的软件产品,难度是指数级的。

我会向任何不熟悉 CMMi 的人或组织推荐:记录他们当前的流程,然后查看可以独立于流程衡量的结果(成本/收益)。这样,如果任何过程,标准程序被改变,它会产生一个“更好”的结果。本练习的先决条件是一个记录在案的、稳定的可重复过程,因为在临时环境中无法衡量任何更改的好处,因为您不是在比较“同类”。

通过最初关注上述概念,组织将开始理解并接受 CMMi 的基本价值。

于 2013-04-01T16:51:34.127 回答
1

相传,做了大量承包工作的美国国防部发现,其许多项目都面临时间和成本超支,甚至在交付时,这些项目也与订单不符。

因此,他们想要一种方法来确保承包商能够按时、在预算范围内并接近要求的交付。于是能力成熟度模型诞生了。

论点是,如果事情被写下来,那么它们就会在消耗中幸存下来。但是说写下所有内容是不够的,必须检查它们是否正确写下。除其他事项外。

在所有这一切中,他们从未想过要考虑这样做的成本。因为从国防部的角度来看,如果它以 100 万美元的价格在一年内获得一些东西,但最终在 10 年内支付 1000 万美元却没有得到他们想要的东西,那么现在如果他们有为同样的东西支付 500 万美元,以在两年内得到他们真正想要的东西,他们仍然节省了 500 万美元,更不用说他们实际上得到了一些东西。

因此,如果您是美国国防部或类似机构的承包商,请继续获得 CMM,因为这是一项要求。但是,如果您要在 elance 上与 1000 家软件开发商店竞争,以获取预算有限、时间有限等的项目...... CMM 不是一个好的选择。

也就是说,请随意阅读 CMMI Dev pdf(在撰写本文时为 1.3 版)。它有很多好处。它很好地解构了组织。如果你看到任何让你去的点'啊哈!我有这个问题',那么一定要用这种智慧来解决你的问题。在我们的案例中,我们所做的一个小改动是确保我们列出了所有被允许向我们提出要求的人。如果有不止一个人被允许向我们提出要求,那么来自一个来源的任何要求都会传给其他人,他们必须在我们将其添加到积压工作之前说“好的”。这个小小的改变对我们的工作和返工产生了很大的影响。

简而言之,查看过程区域并将它们与您的痛点进行比较,并接受 CMM 给出的建议。你实现它的方式是你自己的。而且您始终可以以不花费太多时间或花费太多金钱的方式实施它。但我想这同样适用于相关的 ISO/IEC 标准。

于 2015-02-27T13:05:23.020 回答