什么是软件考古
编辑作为软件维护的一部分,软件考古学是研究记录不佳或未记录的遗留软件实现。软件考古学,与考古学类比命名,包括软件模块的逆向工程,以及用于提取和理解程序结构和恢复设计信息的各种工具和过程的应用。软件考古学可能会揭示功能失调的团队流程,这些流程产生了设计不良甚至未使用的软件模块,并且在某些情况下可能会发现故意混淆的代码。这个术语已经使用了几十年,反映了一个相当自然的比喻:阅读遗留代码的程序员可能会觉得他或她处于与考古学家探索古代文明废墟相同的境地。
软件考古技术
编辑2001年OOPSLA(面向对象编程、系统、语言和应用程序)会议上的软件考古学研讨会确定了以下软件考古学技术,其中一些特定于面向对象编程:
- 用于构建静态报告和过滤诊断输出的脚本语言
- HTML页面或Wiki中的持续文档
- 天气特征分析、统计分析和软件可视化工具
- 逆向工程工具
- 通过truss或strace进行操作系统级跟踪
- 用于在源文件中搜索关键字的搜索引擎和工具
- IDE文件浏览
- 单元测试框架,例如JUnit和CppUnit
- 使用Javadoc和doxygen等工具生成API文档
- 调试器
更一般地说,AndyHunt和DaveThomas注意到版本控制、依赖管理、文本索引工具(如GLIMPSE和SWISH-E)以及“在您开始探索时地图”的重要性。
与真正的考古学一样,软件考古学涉及调查工作,以了解前人的思维过程。在OOPSLA研讨会上,WardCunningham提出了一种天气特征分析技术,该技术通过仅显示标点符号(例如分号和花括号)为程序提供整体“感觉”。同样,Cunningham建议以2点字体观看节目,以了解整体结构。研讨会上确定的另一项技术是使用面向方面的编程工具(如AspectJ)系统地引入跟踪无需直接编辑遗留程序的代码。
网络和时间分析技术可以揭示遗留软件开发人员的协作活动模式,这反过来可以揭示所产生的软件工件的优势和劣势。
EmbarcaderoTechnologies的MichaelRozlog将软件考古学描述为一个六步过程,使程序员能够回答诸如“我刚刚继承了什么?”之类的问题。和“代码的可怕部分在哪里?”这些步骤与OOPSLA研讨会确定的步骤类似,包括使用可视化来获得程序设计的可视化表示,使用软件度量来查找设计和样式违规,使用单元测试和分析来查找错误和性能瓶颈,并组装由流程恢复的设计信息。软件考古也可以是外部顾问向程序员提供的一项服务。
内容由匿名用户提供,本内容不代表vibaike.com立场,内容投诉举报请联系vibaike.com客服。如若转载,请注明出处:https://vibaike.com/131798/