什么是軟件考古
編輯作為軟件維護的一部分,軟件考古學是研究記錄不佳或未記錄的遺留軟件實現。軟件考古學,與考古學類比命名,包括軟件模塊的逆向工程,以及用于提取和理解程序結構和恢復設計信息的各種工具和過程的應用。軟件考古學可能會揭示功能失調的團隊流程,這些流程產生了設計不良甚至未使用的軟件模塊,并且在某些情況下可能會發現故意混淆的代碼。這個術語已經使用了幾十年,反映了一個相當自然的比喻:閱讀遺留代碼的程序員可能會覺得他或她處于與考古學家探索古代文明廢墟相同的境地。
軟件考古技術
編輯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研討會確定的步驟類似,包括使用可視化來獲得程序設計的可視化表示,使用軟件度量來查找設計和樣式違規,使用單元測試和分析來查找錯誤和性能瓶頸,并組裝由流程恢復的設計信息。軟件考古也可以是外部顧問向程序員提供的一項服務。
內容由匿名用戶提供,本內容不代表www.gelinmeiz.com立場,內容投訴舉報請聯系www.gelinmeiz.com客服。如若轉載,請注明出處:http://www.gelinmeiz.com/131798/