1
3
敏捷是面向业务的,敏捷是关于 客户价值最大化 同时尽量减少浪费 提供最佳的投资回报率 . 这是应该衡量的。为了做到这一点,我使用了Mary Poppendieck的系统 recommends . 该系统基于三个整体测量,必须作为一个整体:
当然,在团队级别,您可以跟踪测试覆盖率、圈复杂度、与编码标准的一致性等,但高质量本身并不是目的,它只是一种手段。别误解我,我不是说高质量无关紧要,高质量是实现可持续发展的必由之路(我们在“完成”的定义中包括“不增加技术债务”),但目标仍然是以快速和盈利的方式为客户提供价值。 |
2
2
不管方法论如何,都有一些基本的度量标准可以也应该使用。
如果这些都是你跟踪的,至少有五种方法可以使用:
虽然读书不一定有趣, Metrics and Models of Software Quality Engineering 提供了一个优秀的深入的软件工程和度量概述。 |
3
1
1.1)位置容易回答
1.2)代码覆盖范围
2)从(1)您刚才提到的代码度量,但是从您关于速度的问题来看,您对所有创建过程的度量都很感兴趣,因此我将列出一些:
|
4
0
至于问题1,我不认为这些指标在敏捷过程中有任何不好的原因。 loc为您提供了一个相对大小的度量。虽然在项目之间比较数字并不总是有用的,但它可以为您提供项目内的增长率。如果您可以得到它,那么在sprint中更改的行数对于跟踪速率或重构也很有用。 代码覆盖率(代码行数)让您大致了解您的团队是否满足项目中自动化测试的最低标准。 关于问题2,保留上面的项目,这里还有一些:
|
5
0
只是为了增加 为什么测试的loc和代码覆盖率不理想: 敏捷强调结果,而不是输出(见敏捷宣言)。这两个只是跟踪输出。此外,他们没有正确地度量重构,重构是敏捷过程的一个重要方面。 另一个需要考虑的指标是运行经过测试的特性。我无法形容比这更好的: http://xprogramming.com/articles/jatrtsmetric/ |
6
0
我要回答这个老问题… 在我看来,loc和test coverage是很好的度量标准,但它们有一个大问题:如果你推动它们,你可以使它们快速增长,但结果会很可怕:大量的无意义代码,或者在测试覆盖率中,你可以将所有代码都包含在try-catch块中,而不是只编写一个asse。RT…或者更糟的是,只需要写一个“遵从”的理由,但没有任何面向业务或代码的含义… 因此,如果这些指标能够帮助团队诚实地评估其结果,那么它们是非常好的,但是如果它们构成了一些“遵从性”规则的一部分,那么它们就是一个邪恶的工具,因为以这种方式使用它们会造成更多的伤害(死代码,糟糕的测试!)比你最初想要的要多。 所以,对于每一个指标,想想如果你被迫实现某个值,你会如何欺骗它,然后想想结果……这不是loc或测试覆盖率的问题,许多其他度量可以有类似的结果,甚至圈复杂度…如果以错误的方式划分代码,可以降低圈复杂度,但这并不意味着可以获得更好或更可读的代码! 所以,这些指标很好地反映了团队内部的情况,但是你采取的任何措施都应该基于具体的目标,而不是指标本身……例如: 测试覆盖率很低:每月实现一次dojo编码,以帮助培训人们编写可测试代码,找出测试覆盖率最差的代码,并尝试实现更好/更可测试的体系结构,以帮助/激励开发人员编写测试,等等。 正如您所看到的,您从来没有告诉团队实现某个测试覆盖率值,您只是使用度量来查看您可以改进的地方,然后寻找有利于您的过程的度量,在一段时间后,您会期望测试覆盖率增加,但您并没有强迫人们这样做!您正在评估更改,以查看这些措施是否有帮助。如果一段时间后你发现测试覆盖率并没有随着你的度量而改变,那么是时候寻找其他的想法了,等等…… |
CalculusLover · 在本例中,fork()是如何工作的? 2 年前 |
jjmerelo · 使用Proc::Async从绑定管道读取 6 年前 |
jatinBatra · 编译后生成的二进制文件会发生什么情况[关闭] 6 年前 |
Jacobo · 从Java调用具有输入和输出重定向的C可执行文件 6 年前 |
Ran · 每当我尝试执行命令行提示符时,Unity就会阻塞 6 年前 |
Hatshepsut · 使用命令行参数使用region调用子流程 6 年前 |