軟件構件 API 在不同版本間的兼容性——讀FSE 2012 best paper有感

本文是我閱讀以下論文時所作的筆記:

Bradley E. Cossette and Robert J. Walker, Seeking the Ground Truth:A Retroactive Study on the Evolution and Migration of Software Libraries

先沾點光,原來這篇文章是由我們卡大(U of Calgary)計算機系的Robert  Walker 教授和他的phd學生Bradley  Cossette共同寫的,該paper 獲了FSE最佳論文獎。

本項研究是關於軟件不同版本的API接口演化的一個經驗研究,研究方法就是拿幾個開源軟件來分析一下,看看它們的接口是如何演化的。他們分析的開源軟件包括:Structs, log4j, jDOM.

他們做得比較牛的是,他們用了一個自動化的工具,叫做Clirr,用來查兩個發佈版本間的API是否可以有Binary incompatibilities(BI)。

這裏就要提一提,這個研究利用的巧力了,那就是Binary incompatibility, 這是在 這本書

 Gosling, Joy, Steele, and Bracha, The Java Language Specification, Third Edition, Addison-Wesley, 2005; chapter 13 Binary Compatibility

裏明確定義了的,在這個站:http://wiki.eclipse.org/Evolving_Java-based_APIs_2 裏 給出一個詳細的BI分類列表。

本文做的,就是根據這些BI分類,寫了一個自動化的工具,來自動檢測兩個發佈版本間是否有BI. 這是他們文章取巧的地方,也是智能化的地方。

另外,他們的經驗研究發現,有近20%的BI是無法找到合適代替的。例如,在第一個版本里有一個方法1:method1(), 演化到第2個版本後,這個方法method1() 已經不存在了,那麼爲了讓我們的舊系統兼容新的API, 就要找到method1()的替代品。Robert的這篇文章發現,有20%
的方法/數據成員,無論用哪種推薦方法(recommendation technique),都是無法找到替代品(replacement)的。

總結:

1. 軟件工程的科研還是從比較細的地方入手,例如本文的API在新舊版本的兼容性問題。找到合適的問題,然後做得細緻,做得精深。

2. Empirical study 的重要性,給人以數據,尤其是軟件工程裏,經過實踐的檢驗,那樣的結論纔會讓人信服。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章