凭借近 30 年的积极开发,BRL-CAD 被认为是世界上第二个仍在积极开发的最古老的开源代码库(最古老的是退伍军人事务部的 EHR VistA)。它也是美国军方用于武器系统建模以进行脆弱性和杀伤力分析的主要三军通用实体建模 CAD 系统。
BRL-CAD 是一个功能强大的跨平台开源组合构造实体几何 (CSG) 实体建模系统,包括交互式 3D 实体几何编辑、用于渲染和几何分析的高性能光线跟踪支持、网络分布式帧缓冲区支持、图像和信号处理工具、用于真实图像合成的路径跟踪和光子映射支持、系统性能分析基准测试套件、嵌入式脚本接口以及用于稳健高性能几何表示和分析的库。
BRL-CAD 使用 C/C++ 代码编写,代码行数刚刚超过 100 万行,并拥有一个开发者社区,包括大约 12 名核心开发者和 20 名提交者,他们为源代码仓库做出贡献。
由于代码的使用方式和使用地点至关重要,BRL-CAD 长期致力于代码质量,并在代码中实施严格的合规性。BRL-CAD 团队花费了大量时间维护和清理代码库,包括频繁的重构,并在开发过程中实施了各种质量措施,包括 Coverity Scan。
该实体建模系统 经常用于军事、学术和工业领域的各种应用,包括车辆、机械零件和建筑的设计和分析。该软件包还被用于放射剂量计划、医学可视化、计算机图形学教育、CSG 概念和建模教育以及系统性能基准测试等用途。
2011 年 4 月,BRL-CAD 源代码通过了 Coverity 静态分析,作为其参与 Coverity Scan 的一部分,评估了大约 840,000 行代码(实际代码库大小为 120 万行,包括注释和空格)。Coverity Scan 标记了 1,800 多个缺陷。据项目负责人称,Coverity 向 BRL-CAD 展示了“与他们过去采用的其他测试和质量措施不同的级别或类别的问题”。项目负责人对 Coverity Scan 提供的结果“非常满意”,但随后需要一种方法来解决这些新发现的缺陷。
2011 年 11 月,BRL-CAD 的主要贡献者 Christopher Sean Morrison 向开发者社区发布了参与实体聚会的号召,以分享有关缺陷的知识并帮助解决检测到的问题。参与号召可以在此处找到
上周,我们终于能够获得 BRL-CAD 源代码的完整有效 Coverity 扫描!如果您有兴趣帮助解决检测到的问题,请加入我们在 brlcad-devel 邮件列表或 IRC 频道上的开发讨论,并介绍您自己。
这项工作的成果发表在 Coverity Scan:《2011 年开源完整性报告》中
BRL-CAD 项目社区异地会议于 2012 年 1 月在巴尔的摩郊外举行。一半的核心开发团队亲自参与,另外两人在五天的时间里每天远程贡献八个小时。BRL-CAD 开发团队首先概述了整个缺陷管理工作流程。
异地会议的目标是修复所有未解决的缺陷,而不是多轮“优先排序然后修复”方法。具体来说:
- 检查并修复 Coverity 发现的所有问题
- 同行评审、验证和确认所有更改
- 分类并记录所有更改
- 教育关于常见缺陷模式
那么团队做得怎么样呢?
- 检查并修复 Coverity 发现的所有问题 – 90%
- 同行评审、验证和确认所有更改 – 10%
- 分类并记录所有更改 – 100%
- 教育关于常见缺陷模式 – 100%
该小组能够减少未解决的缺陷
- 从五天后的 1,840 个减少到 186 个,初始缺陷密度为 0.0022,降低到 0.00022(每千行代码的缺陷数)
- 这相当于每天大约修复 330 个缺陷
- 每小时 42 个修复
- 团队每 87 秒修复一个错误
- 对于每位开发者,这大约相当于
- 每天修复 55 个缺陷
- 每小时 6.9 个修复
- 每 8.7 分钟修复一个错误
这个过程说明了开源敏捷实践的无与伦比的效率。
即使只有 10% 的修复开始了代码审查过程,但在一个星期集中努力的情况下,能够解决项目中 90% 的缺陷(在本例中约为 1,700 个缺陷)是一项传统软件开发方法只能梦想的壮举。
在开源中,这可能只是“又一天的工作”。
祝贺 BRL-CAD 团队取得如此令人瞩目的成就。有关该过程的更多详细信息,请参见《Coverity 报告》。
评论已关闭。