Unifying Software Similarity Patterns with a Meta-level Generative Technique: A Case Study and Evaluation1

msra(2005)

引用 24|浏览5
暂无评分
摘要
In a previous study, we analyzed similarity patterns in the Java Buffer library, JDK 1.5. We observed many similar classes, methods and yet smaller fragments - elements of class design. We argued that, given the design goals, it was difficult to avoid those repetitions with conventional design techniques. We also argued that the reasons why the problem arises and its symptoms are common. In this paper, we describe a possible solution to the problem: We apply a meta-level method of XVCL on top of Java code, to unify differences among similar buffer classes. In a meta-level Java-XVCL solution, we represent each of the important similarity patterns in a unique generic, but adaptable, form, along with information necessary to obtain its instances - specific classes or class methods. We believe such explication of similarity patterns reduces program complexity as perceived by developers. Non-redundancy achieved in that way also reduces the risk of update anomalies which helps in maintenance. As the meta-level solution does not come for free, we evaluate its strengths and weaknesses in quantitative and qualitative way, and also by conducting a controlled experiment. The presented method is based on synergistic use of a programming language (e.g., Java) and meta-level parameterization and manipulation supported by XVCL, to achieve a non-redundancy of the Java-XVCL meta-level solution. The idea of the solution and the method itself is general, can be applied to any program, independently of an application domain or a programming language. We believe some of the observations from this case study apply to other class libraries, as well as application programs. In the previous study (21)(22), we analyzed similarity patterns in the Java Buffer library, JDK 1.5. We observed many similar classes, methods and yet smaller fragments - elements of class design. We analyzed the reasons why similar structures were spreading through buffer classes, in many variant forms. We argued that, given the design goals, it was difficult to avoid those repetitions with conventional OO design techniques and generics. We also argued that the causes and symptoms of the problem were common.
更多
查看译文
关键词
index terms: design techniques,static meta-programming,object-oriented techniques,generative programming,generic design,maintainability,reusability
AI 理解论文
溯源树
样例
生成溯源树,研究论文发展脉络
Chat Paper
正在生成论文摘要