50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

一个结对 / 代码检查过程的学习案例

  • 2007-08-08
  • 本文字数:1302 字

    阅读完需:约 4 分钟

维多利亚大学软件工程组的 Peter C. Rigby 和 Daniel M. German 在 Margaret-Anne Storey 的指导下发布了一个 Apache 结对检查的学习案例,同时也将此文提交到了 FSE2007。这篇文章是 Peter 和 Daniel 发布于 2006 年的、对 Linux、GCC、Mozilla 和 Apache 的代码检查过程进行分析的“开源项目代码检查过程的一个初步检测 ”一文的姊妹篇。

新的案例学习对象是 Apache,目的是找出下面这些问题的答案:

  • 过程:都是在执行哪些检查?是由哪些过程指导这些检查的?
  • 频率和活动:检查的频率是多少?检查的频率是否与开发活动相关?
  • 参与:有多少开发人员参与检查?在一次检查中有多少讨论?
  • 尺寸:多大的构件才应该进行检查?
  • 间隔:多长时间执行一次检查?
  • 缺陷:有多少检查发现了缺陷?

在文章的答案里有两个在 Apache 项目使用并在 Apache 术语表中进行了定义的过程:CRT 和 RTC 的检查过程:

提交后检查**CTR,Commit-Then-Review):一个管理代码变化的策略,允许开发者随意更改代码,但允许后期否决。C-T-R 是一种在延迟决策(lazy consensus)中得出决定的方案,此模型在快速原型开发环境中很有效,但由于缺乏强制检查,可能会导致比 R-T-C 更多的问题。
检查后提交
(**RTC,Review-Then-Commit):提交策略,要求所有的改变得到一致性同意后方能被提交。

“一致性同意”表示要对某个做法进行投票,在结果中至少要有来自项目管理委员会(PMC)的三票赞成票,而且不能有反对票。

在分析检查过程时有一个关于两种检查过程各自优弱点的讨论。与 Apache 不同的是,在商业开发环境中倾向于使用 RTC 过程处理代码检查(这常常都是和风险管理的一个基本思想联系在一起的:宁可丢掉变化,也比让坏的变化进入你的代码库好得多)。这种讨论可以为增加 CTR 在商业开发环境中的生存能力提供令人信服的证据。在目前缺少 CTR 过程相关数据的情况下,对该过程进行的讨论分析也非常重要。

关于在多大的范围内进行分析检查,Apache(以及其它项目)使用“尽早检查、频繁检查”来表达,Apache 尤其以强调“尽可能高频率地执行检查,更短的间隔,更小的构件尺寸”与 Porter et al 的发现形成对比。针对较小的构件对不同的检查方式进行权衡,这也是文中一个重要的讨论主题。

另一个关键性的讨论是主要围绕着调解缺陷进行的:

对于常规的检查来说,讨论的主题就是缺陷。一个好的仲裁人是不会允许参与检查的人讨论任何缺陷以外的事情的。开发者必须修复这些缺陷并向仲裁人报告。

相比之下 Apache 的方法则是这样的:

检查者对缺陷本身并不感兴趣,而是对是什么导致缺陷以及如何修复感兴趣。讨论的中心马上由“发现缺陷”转到“如何修改缺陷”上来了。

文章的结论是“理想的时间是:当一个缺陷被发现时再去寻找解决办法,因为所有的参与者都要明白这个问题从何而来”,从中还发现“传统检查是不受时间约束的”与 Edward F. Weller 的“从三年数据检查中得到的启示 ”中示例的具体对比。

虽然文中数据收集的方法有些问题,与Apache 团队成员之间也缺乏互动,文章还是通过一些有趣的讨论来对照比较各种不同的检查方法,以说明无论是开源还是商业环境都需要建立一个检查方法。

查看英文原文: A case study of Apache peer/code review processes

2007-08-08 02:161255
用户头像

发布了 90 篇内容, 共 16.7 次阅读, 收获喜欢 11 次。

关注

评论

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

开启软件架构设计之门:初识软件架构设计的奥秘

灸哥漫谈

架构师 软件架构设计 系统架构师 系统架构设计

OpenAI 视频生成模型发布,创作者如何利用 AI 工具最大化提升创作效率?

算法的秘密

AI板块的火热,现在参与Gensyn来得及吗?

币离海

AI Gensyn

释放心中的野兽

一跃皑皑

专家+教授联手打造,带你快速掌握人工智能测试开发技术,快速提升竞争力

霍格沃兹测试开发学社

Java 包和 API 深度解析:组织代码,避免命名冲突

小万哥

Java 程序人生 编程语言 软件工程 后端开发

基于 Amazon S3 Express One Zone 和 Amazon SageMaker 的图像分类模型实战—深析新旧产品突显 Express One Zone 在性能上的优势

亚马逊云科技 (Amazon Web Services)

软件质效领航者!思码逸荣获中国信通院2023“软件质效领航者”优秀案例

思码逸研发效能

容器化环境中,JVM最佳参数配置实践

华为云开发者联盟

Java 开发 华为云 华为云开发者联盟

PDF怎么转换成PPT文件?用这个AI在线转换工具,轻松搞定!

彭宏豪95

效率 职场 在线白板 办公软件 AIGC

预算有限,资源冗余?DWS集群缩容如何帮你解决烦劳

华为云开发者联盟

数据库 华为云 华为云开发者联盟 华为云GaussDB(DWS)

探秘软件公司开发各种小程序、APP、网站、应用程序的开发方案及优惠报价

天津汇柏科技有限公司

创业 软件定制 定制开发 定制软件开发 软件开发定制

揭秘百度数仓融合计算引擎

百度Geek说

百度 数据引擎

Adjustable Precision Shunt Regulator

芯动大师

CQ 社区版 2.9.0 | 新增告警配置、GaussDB-DWS、脱敏数据可明文查询等

BinTools图尔兹

告警 数据脱敏 数据库管控 SQLite编辑器

研发效能是不是一个伪命题:关于研发效能的思考

思码逸研发效能

强大好用的shell:shell命令

小魏写代码

数据驱动的实验文化:字节跳动产品优化之路

字节跳动数据平台

大数据 AB实验 企业号 2 月 PK 榜 对比实验 数字化增长

一个结对/代码检查过程的学习案例_架构_Greg Young_InfoQ精选文章