软件考古学

软件考古学源代码考古学是对软件维护的一部分,研究未记录的遗留软件实现不佳或无证件的旧版软件实现。通过类比与考古学命名的软件考古学包括软件模块的反向工程,以及用于提取和理解程序结构和恢复设计信息的各种工具和过程的应用。软件考古学可能会揭示功能失调的团队流程,这些过程产生了设计较差甚至未使用的软件模块,在某些情况下可能会故意发现混淆的代码。该术语已经使用了数十年。

在最近的软件工程会议上,软件考古学继续成为讨论的话题。

技术

2001年OOPSLA (面向对象的编程,系统,语言和应用程序)的软件考古讲习班会议确定了以下软件考古技术,其中一些特定于对象面向对象的编程

更广泛地说,安迪·亨特(Andy Hunt)戴夫·托马斯(Dave Thomas)注意到版本控制依赖关系管理,诸如瞥见和swish-e之类的文本索引工具的重要性,以及“在开始探索时[绘制地图]。

像真正的考古学一样,软件考古学涉及调查工作,以了解前任的思维过程。在OOPSLA研讨会上,沃德·坎宁安(Ward Cunningham)提出了一种概要签名分析技术,该技术仅通过显示标点符号(例如半圆柱和卷曲括号)来为程序提供整体“感觉”。同样,坎宁安建议以2点字体查看程序,以了解整体结构。在研讨会上确定的另一种技术是使用面向方面的编程工具(例如AspectJ)系统地引入跟踪代码而无需直接编辑旧版程序。

网络和时间分析技术可以揭示传统软件开发人员的协作活动模式,进而可以阐明所产生的软件伪像的优势和劣势。

Embarcadero Technologies的Michael Rozlog将软件考古学描述为一个六步过程,使程序员能够回答诸如“我刚刚继承的内容?”之类的问题。和“代码的可怕部分在哪里?”这些步骤类似于OOPSLA研讨会所确定的步骤,包括使用可视化来获得该程序设计的可视化表示形式,使用软件指标来查找设计和样式违规行为,使用单元测试分析来寻找错误和性能瓶颈,以及性能瓶颈,以及组装设计信息是通过过程恢复的。软件考古学也可以是外部顾问向程序员提供的服务。

在流行文化中

程序员 - 工程师学家”的职业在Vernor Vinge的1999年科幻小说中突出了天空的深度

也可以看看