软件考古学

软件考古学或者源代码考古学是对未记录或未记录不佳的研究旧软件实施,作为软件维护.[1][2]软件考古学,以类比为命名考古学[3]包括逆向工程软件模块的应用以及各种工具和流程用于提取和理解程序结构和恢复设计信息。[1][4]软件考古学可能会揭示功能失调的团队流程,这些过程产生了设计较差甚至未使用的软件模块,在某些情况下可能会故意发现混淆的代码。[5]该术语已经使用了数十年。[6]

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

技术

2001年软件考古学研讨会OOPSLA(面向对象的编程,系统,语言和应用)会议确定了以下软件考古技术,其中一些特定于面向对象的编程[8]

更普遍,安迪·亨特戴夫·托马斯(Dave Thomas)注意的重要性版本控制依赖管理,文本索引工具,例如瞥见和swish-e,和“在您开始探索时[图]地图。”[8]

像真正的考古学一样,软件考古学涉及调查工作,以了解前任的思维过程。[8]在OOPSLA研讨会上,沃德·坎宁安提出了一种概要签名分析技术,该技术仅显示标点符号,例如半柱和半洛统,为程序提供了总体的“感觉”大括号.[9]同样,坎宁安建议以2点字体查看程序,以了解整体结构。[10]在研讨会上确定的另一种技术是使用面向方面的编程工具,例如expactj系统介绍跟踪无直接编辑旧程序的代码。[8]

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

迈克尔·罗兹洛格(Michael Rozlog)Embarcadero技术已经将软件考古学描述为一个六步过程,使程序员能够回答诸如“我刚刚继承的内容?”之类的问题。和“代码的可怕部分在哪里?”[12]这些步骤类似于OOPSLA研讨会所确定的步骤,包括使用可视化来获得程序设计的可视化表示,并使用软件指标寻找违规设计和风格的行为,使用单位测试分析寻找错误和性能瓶颈,以及由过程恢复的设计信息。[12]软件考古学也可以是外部顾问向程序员提供的服务。[13]

Infoventions.net,Inc。的Mitch Rosenberg声称,软件考古法(他称其为代码或数据考古学)是:

那里的一切都是有原因的,有3个可能的原因:

  1. 它曾经需要在那里,但不再
  2. 它永远不需要在那里,编写代码的人不知道
  3. 它仍然需要在那里,您没有任何线索

该“法律”的推论是,直到您知道哪个原因,您不应修改代码(或数据)。

在流行文化中

专业程序员 - 工程师学家功能突出Vernor Vinge1999年的科幻小说天空中的深度.[14]

也可以看看

参考

  1. ^一个bRobles,Gregorio;Gonzalez-Barahona,耶稣M。赫雷兹(Herraiz),以色列(2005)。“软件考古学的经验方法”(PDF).国际软件维护会议的海报论文集.
  2. ^Ambler,Scott W.“敏捷遗产系统分析和集成建模”。 agileModeling.com。检索2010-08-20.如果没有准确的文档或对知识渊博的人的访问,您的最后一个手段可能是分析传统系统的源代码……这项工作通常称为软件考古学。
  3. ^Moyer,Bryon(2009年3月4日)。“软件考古学:现代化旧系统”(PDF).嵌入式技术杂志.
  4. ^霍普金斯,理查德;詹金斯(Jenkins),凯文(Kevin)(2008)。“ 5.神话元”.吃掉IT大象:从格林菲尔德开发转移到布朗菲尔德。 Addison-Wesley。 p。 93。ISBN 978-0-13-713012-2.
  5. ^Spinellis,Diomidis; Goosios,Georgios(2009)。“ 2.两个系统的故事§缺乏凝聚力”.美丽的建筑。奥莱利。 p。 29。ISBN 978-0-596-51798-4.
  6. ^早期讨论是Grass,Judith E.(1992年冬季)。“带有CIA ++的面向对象的设计考古”(PDF).计算系统.5(1)。
  7. ^例如,“第32 ACM/IEEE国际软件工程会议”。 2010年5月。.
  8. ^一个bcd亨特,安迪托马斯,戴夫(2002年3月至4月)。“软件考古学”(PDF).IEEE软件.19(2):20–22。doi10.1109/52.991327.
  9. ^坎宁安,沃德(2001)。“签名调查:浏览陌生代码的方法”.研讨会职位声明,软件考古学:了解大型系统,OOPSLA 2001.
  10. ^库克,约翰·D。(2009年11月10日)。“软件考古学”.努力.
  11. ^de Souza,Cleidson;乔恩(Froehlich),乔恩(Jon);Dourish,Paul(2005)。“寻求来源:软件源代码作为社会和技术人工制品”(PDF).2005年国际ACM Siggroup支持小组工作会议论文集。 pp。197–206。doi10.1145/1099203.1099239.ISBN 1595932232.
  12. ^一个bRozlog,Michael(2008年1月28日)。“软件考古学:这是什么,爪哇开发人员为什么要照顾?”。 java.sys-con.com。
  13. ^Sharwood,西蒙(2004年11月3日)。“损失代码的突袭者”.ZDNET.
  14. ^里斯,加雷斯(2013-06-12)。“软件考古和技术债务”.

外部链接