当前位置: 首页 > 科技观察

有趣的是,如何将代码视为犯罪现场

时间:2023-03-20 22:24:21 科技观察

从近年来出现的工具和相关文献的数量来看,衡量软件的复杂性是软件开发社区中一项流行且普遍的活动。AdamTornhill凭借他在工程和心理学方面的背景,在伦敦QCon大会上建议借助版本控制工具将代码视为犯罪现场。Tornhill认为,目前对软件复杂性的衡量并不完美。于是他转向心理学知识寻找答案。地理罪犯侧写是基于这样的原则,即罪犯的家乡通常在他或她犯罪地点的边界内。在CodeCity等工具的帮助下,Tornhill将这一原则应用于代码。它背后的想法是为代码创建地理表示。区域和建筑映射代码的结构,作为包或类。代码行数或方法数等代码属性决定了面积和建筑物的大小。然后,在版本控制工具的帮助下,Tornhill将这些代码结构信息与他所谓的代码中的空间移动结合起来。版本控制工具提供了大量关于谁、何时以及在存储库中的何处进行了更改的取证详细信息。将此空间信息与代码结构结合起来突出热点。Tornhill声称在一个案例研究中(400,000行代码,89名开发人员,18,000+次提交)有8个缺陷集中区域,72%的缺陷集中在4%的代码中,其中7个被确定为热点区域.一个代码城市,热点突出显示。可以使用版本控制信息来进行时空耦合分析。如果同时更改了两个代码文件,则意味着这些文件是物理耦合的,例如:一个类调用另一个。但是,它们可能只是以逻辑形式耦合,这是普通复制粘贴的结果。如果没有时空耦合分析,很容易忽略这些问题。时空耦合分析在其他方面也很有用。当来自不同团队的人同时更改不同组件时,它可以指出更改模式。此模式可以指示系统架构和团队结构之间的不一致,这可能导致更改请求和部署之间的周期时间更长。版本控制信息也可用于挖掘有关组件所有者和所有权的知识。如果开发人员是给定代码文件或组件的主要提交者,那么我们可以安全地假设他是该组件的知识所有者,即使他不在负责该组件的团队中。这也意味着将跟踪和缓解“崩溃”。在更极端的情况下,知识所有者不再在公司工作,可能会出现知识鸿沟。这些技术有助于发现并弥合这些差距。版本控制取证揭示了组件的有效所有权。Tornhill正在写一本关于这个主题的书,目前处于Beta阶段。PragmaticBookshelf即将出版该书,预计出版日期为2015年3月10日。