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

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

关注

评论

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

One Switch:Mac上一个集合一键切换系统各项功能的神奇菜单

Rose

Mac软件 苹果软件下载 One Switch Mac资源站

生成式AI已形成全球性“AI再造业务”趋势

百度开发者中心

#人工智能 文心一言 文心一格

MarsEdit for Mac 快速方便的博客编辑器

Rose

mac软件下载 MarsEdit下载 博客写作软件

架构师日记-如何写的一手好代码

京东科技开发者

代码质量 代码 京东云 企业号 4 月 PK 榜

Spring Boot+Nacos+gRPC,一个区别于 OpenFeign 的微服务通信方案!

江南一点雨

gRPC nacos springboot

微前端架构:将应用拆分为多个小型模块,实现模块化设计

没有用户名丶

小程序容器

适用于所有 Mac 的温度监控、风扇控制和诊断:TG Pro

Rose

Mac硬件温度检测 TG Pro for mac 苹果软件资源站 macw软件站

面试官:聊一聊Spring中Bean的作用域

Java spring bean

NCH Switch Plus mac版:音频转换工具

Rose

全能音频格式转换 Switch Plus NCH 软件 NCH Switch Plus mac版

2023年郑州市等级保护测评机构名单汇总

行云管家

等保 郑州 等保测评机构

Alfred 教程:如何在 Mac 之间同步 Alfred 设置?

Rose

Alfred 5 苹果效率工具 Alfred 教程 Mac 之间同步 Alfred

高新技术产业包括哪些?拥有高新企业证书说明什么?

行云管家

高新企业 高新技术 高新

肝完阿里最新Java并发编程全优笔记,我成功晋升公司架构组

程序员小毕

Java 源码 程序员 面试 并发编程

云计算时代前端如何保证开源代码的安全性

京东科技开发者

前端 安全 京东云 京东科技 企业号 4 月 PK 榜

深入理解MySQL索引底层数据结构

京东科技开发者

MySQL 京东云 京东技术 企业号 4 月 PK 榜

Meetup 回顾|Data Infra 研究社第十期(含资料发布)

Databend

基于ArkUI框架开发-ImageKnife渲染层重构

OpenHarmony开发者

MySQL 索引常见问题汇总,一次性梳理

Java MySQL 数据库 索引

首届“兴智杯”产业赛收官,文心大模型助推产业创新

飞桨PaddlePaddle

人工智能 深度学习 飞桨 产业赋能

GPT会上网了,ChatGPT插件的原理揭秘

Apifox

人工智能 程序员 OpenAPI openai ChatGPT

新一代分布式任务调度框架

程序员大彬

Java 面试

好用的图片管理器:ImageRanger Pro Edition激活版

真大的脸盆

图片管理器 图片管理 管理图片 图片处理工具

限失真信源编码

timerring

限失真信源编码

大咖直播专场 | 当人工智能遇到数据库

KaiwuDB

KaiwuDB DB4AI AI4DB

火山引擎DataLeap:3小时分享,体系化讲透企业数据治理如何做?

字节跳动数据平台

活动 数据治理 论坛 数据研发 企业号 4 月 PK 榜

生物计算大模型技术在药物研发领域的应用

百度开发者中心

人工智能 文心 ERNIE 生物医药

JSF预热功能的实践与探索

京东科技开发者

京东云 jsf 企业号 4 月 PK 榜

单机最快的队列Disruptor解析和使用

小小怪下士

MySQL 驱动中虚引用 GC 耗时优化与源码分析

PPPHUANG

MySQL 性能优化 JVM

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