写点什么

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

  • 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:49764
用户头像

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

关注

评论

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

没有了可用Task slot,Flink新增任务会怎样?

程序员欣宸

Java flink 7月月更

Java中的设计模式

Java学术趴

7月日更

qt 实现日历美化

小肉球

qt 7月月更

KUDU1.11 环境安装

怀瑾握瑜的嘉与嘉

7月月更 kudu

Prometheus 发布 LTS 长期支持版本啦

耳东@Erdong

release Prometheus 7月月更

C# DataGridView数据导出Excel文件

IC00

C# 7月月更

一篇文章带你快速学会Flex布局

bo

CSS 前端 Flex 7月月更

试着换个角度理解低代码平台设计的本质

Geek_z9ygea

Vue 前端 React 低代码平台

QT|QLabel显示多行文本过多后显示省略号

中国好公民st

qt 7月月更

strcat() - 连接字符串

謓泽

7月月更

读书笔记之数据密集型应用的可维护性

宇宙之一粟

设计数据密集型应用 7月月更

系统刷JavaScripit 构建前端体系(语法篇)

程序员海军

JavaScript 7月月更

【MySql 实战】高度聚合的数据项拆分为多行多列

安逸的咸鱼

MySQL 实战 7月月更

【愚公系列】2022年7月 Go教学课程 013-常量、指针

愚公搬代码

7月月更

VLAN再见,我选择用QinQ!1000字带你详细了解QinQ技术

wljslmz

VLAN 网络技术 7月月更 QinQ

zookeeper-集群和zab协议

zarmnosaj

7月月更

数据平台的发展历程

奔向架构师

大数据 7月月更

python小知识-什么是上下文管理

AIWeker

Python python小知识 7月月更

LeetCode-数组中数字出现的次数(单身狗问题)

芒果酱

c++ C语言 数据结构算法 Leet Code 7月月更

分享 15 个 Vue3 全家桶开发的避坑经验

Geek_z9ygea

Vue Vue3

Kubernetes网络插件详解- Flannel篇

巨子嘉

云计算 容器 云原生

Envoy监听管理

阿泽🧸

envoy 7月月更

王者荣耀商城异地多活架构

Pengfei

使用Flutter开发小程序+App)的一种组合思路

Geek_99967b

小程序

Flink实战:消费Wikipedia实时消息

程序员欣宸

Java flink 7月月更

STM32+DHT11读取温湿度数据显示

DS小龙哥

7月月更

Qt | QWidget的一些总结

YOLO.

qt 7月月更

Java核心技术之泛型详解

小明Java问道之路

Java 后端 泛型 Java泛型 7月月更

汽车电子行业开发者的内功心法:汽车软件开发V模型(瀑布模型)

不脱发的程序猿

嵌入式开发 瀑布模型 汽车软件开发 V模型

jQuery 请求

Jason199

jquery js post GET 7月月更

C#入门系列(二十五) -- 接口

陈言必行

7月月更

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