QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

如何对敏捷实践相关的实验性数据进行分析利用

  • 2007-10-10
  • 本文字数:1175 字

    阅读完需:约 4 分钟

在人们谈到敏捷开发实践的效果时,常常会听到有人这样引用说“在名校 Y 任职的 X 教授,曾经做过一个实验,证明了敏捷实践 Z 比传统的软件开发实践的效率要高 出 20%”。然后我们就会信以为真——因为——它确实是真实的。不幸的是,大多数进行并公布的试验,其结果都不应该被当作是真实世界中的开发项目的产出。 而幸运的是,要判断出你对实验性的结果(不)应该抱有多大的信心还不算太难。

下面是一些有效性标准,你可以用它来快速的判断一下你是否应该期待会得到和实验同样的结果:

外部有效性——也被称作

普遍性—— 可以帮助你判断实验结果是否可以适用于其他的条件。用学生来做结对编程,其结果适用于专业开发人员么?可以干净利落地回答一个字——不。如果你是在商业环 境中,那么用学生作的实验就不能当作参考,因为其应用环境,所构建的软件以及开发人员的经验是截然不同的。实验环境应该和真实世界的应用非常接近。

内部有效性—— 在条件变化的时候,其成因和结果还会是真实的么?例如,结对编程会提高代码质量么?如果一个团队在做结对编程,他们首先编写测试用例,然后用更长的时间来 构建应用——那么我们可以顺理成章的猜想是结对编程提高了质量么?还是会有其他的解释?比如他们花了更长的时间来构建应用这一事实会不会造成质量的差别?

结构有效性——你的度量方式和所研究的概念(结构)是否相一致。你所使用的度量方法,以环路复杂性(Cyclomatic Complexity)为例,它是不是确实能够表示出所评估的概念的质量?如果这里被评估的是设计的话,又会是什么结果呢?

统计有效性—— 样本的范围够不够大?其结果是不是做过大规模的统计分析?如果你看到一个调查报告,上面写着一些真正的开发人员用一星期的时间做了一个实验,结果表明使用 TDD 可以提高设计质量,我们真的能把它当真么?单从这个例子来看,肯定是不能的。一个星期所产出的数据是没法衡量在长达数月或是数年的项目中TDD 的效 用的。

这里可 以找到一个有关评估TDD 效用(在开发速度和设计质量方面)的实验,这个实验实际上就是一些资深开发人员编写了200 多行代码。如果读者意识到了不同类型 的有效性标准,那么这里就可以很容易的看出,如果我们想把实验结果照搬到成千上万(乃至百万)行代码的项目中,那可就彻头彻尾的错了。 在 hacknot 上还有一个非常严谨的实验报告,它对结对编程进行了研究,得出了结对编程比传统的开发方式要快上 15% 的结论。

实际上,如果想要让一个实验结果可以应用于真实世界的项目中,那代价势必是非常昂贵的。用学生做的实验,其结果就只能应用于其他学生身上。用专业 开发人员在有限的时间内做的实验,就不能照搬到长期的开发项目中。如果你从前引用过某些实验结果,请带着新的视角,重新迅速翻一遍那些文章,然后回来跟我 们分享一下你的想法。

查看英文原文 Analyzing Experimental Data Concerning Agile Practices

2007-10-10 00:49903
用户头像

发布了 197 篇内容, 共 57.3 次阅读, 收获喜欢 20 次。

关注

评论

发布
暂无评论
发现更多内容

[译] R8 优化:值假设

Antway

6月日更

电商微服务架构设计

俞嘉彬

架构实战营

揭秘MySQL的主从同步实现方案

架构精进之路

MySQL 6月日更

大型分布式 Web 系统的架构演进

xcbeyond

分布式 架构演进 6月日更

Flink State 和 Fault Tolerance(三)

Alex🐒

flink 翻译 flink1.13

优秀中层管理者所具备的特征

石云升

读书笔记 6月日更

聊聊 Redis 过期键删除策略

蘑菇睡不着

Java redis

模块6作业6

wade

#架构实战营

拆分电商系统为微服务

9527

架构实战营

Kubernetes手记(17)- 调度策略

雪雷

6月日更

☕【JVM技术探索】各种类型对象占用内存情况分析(上)

码界西柚

JVM java对象分析 6月日更 内存分配

Redis入门二:数据类型

打工人!

redis 6月日更

【21-13】PowerShell 运算符

耳东@Erdong

PowerShell 6月日更

Dajngo 网站开发 ---Task2(下)

IT蜗壳-Tango

6月日更

因女性而繁荣,适老化科技的钱景与挑战

脑极体

模块六-创业公司电商微服务

华仔架构训练营

架构训练营模块6作业

Geek_649372

架构训练营

同被指责「电力浪费」,如今的区块链会是 1999 年的互联网吗?

CECBC

架构训练营模块六作业

Geek_e0c25c

架构训练营

架构实战营模块6作业

冬天的树

HBase 介绍

Alex🐒

HBase

网络攻防学习笔记 Day50

穿过生命散发芬芳

网络攻防 6月日更

拆分电商系统为微服务——架构师训练营作业六

开拓纪

架构是训练营 作业六

推荐算法工程师需要的知识储备(十三)

Databri_AI

算法 推荐系统 成长路线

JavaScript学习(六)

空城机

JavaScript 大前端 6月日更

我国区块链产业发展面临的问题

CECBC

(鸡汤文)这一次我终于搞懂了 JavaScript 定时器的 this 指向!

编程三昧

JavaScript 编程 大前端 定时器

Flink Side Outputs

Alex🐒

flink flink1.13

你多久没有换手机了?

看山

闲聊 6月日更

Redis 五种数据结构以及三种高级数据结构解析

蘑菇睡不着

Java redis

OnceAgain

一个向往理想的现实主义者

个人总结

如何对敏捷实践相关的实验性数据进行分析利用_研发效能_Amr Elssamadisy_InfoQ精选文章