软件构件 API 在不同版本间的兼容性——读FSE 2012 best paper有感
来源:互联网 发布:jvm垃圾收集算法有哪些 编辑:程序博客网 时间:2024/05/18 03:24
本文是我阅读以下论文时所作的笔记:
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 的重要性,给人以数据,尤其是软件工程里,经过实践的检验,那样的结论才会让人信服。
- 软件构件 API 在不同版本间的兼容性——读FSE 2012 best paper有感
- 读ICCV Best Student Paper有感
- 从社会文化角度看软件从业者——读ESEM 2012 paper 有感
- Data Pump在不同数据库版本间的兼容性
- Android 不同版本间的兼容性
- Jquery不同版本的兼容性
- Android应用在不同版本间兼容性处理
- Android应用在不同版本间兼容性处理
- Android应用在不同版本间兼容性处理 .
- Android应用在不同版本间兼容性处理 .
- Android应用在不同版本间兼容性处理
- Android应用在不同版本间兼容性处理
- Android应用在不同版本间兼容性处理
- Android应用在不同版本间兼容性处理
- Android应用在不同版本间兼容性处理
- Android进阶之在不同版本间兼容性处理
- Android应用在不同版本间兼容性处理
- Android应用在不同版本间兼容性处理
- C++ Prime学习过程中的细节摘记(一)
- 烟台大学举办首届ACM程序设计大赛
- JSON 入门笔记
- Servlet规范简介——web框架是如何注入到Servlet中的
- [易飞]批量导出易飞ERP系统目前所有BOM(含本币未税单位成本)
- 软件构件 API 在不同版本间的兼容性——读FSE 2012 best paper有感
- Eclipse 快捷键
- 解决ASP.NET中的各种乱码问题
- 计算计算机字节顺序
- ZZ: Apache 虚拟主机 VirtualHost 配置
- Hibernate与各种数据库连接的配置
- 高可用集群 heartbeatv1实例
- 有关T-SQL的10个好习惯
- 我想好好谈一次恋爱