摘要
为了更好地管理软件的演化,越来越多的软件演化管理模型被提出,然而现存的软件演化管理模型或版本管理系统中存储的软件大多是以文件或者项目为单位的,而这些模型中又缺乏软件体系结构及组成构件的演化历史信息,这就致使软件演化管理人员无法直观有效地了解以及管理软件体系结构及其构件的演化。为此,文中通过定义软件演化二叉树这一概念,表示一个软件及其组成构件的演化历史,并提出了一种基于软件体系结构逆向技术逆向出软件体系结构及其组成构件演化二叉树的方法,即利用软件源代码以及体系结构逆向技术逆向出软件系统的(原子)构件与软件体系结构(文中将软件体系结构看作一种特殊的复合构件),并度量相应的原子构件以及复合构件的多维属性,再利用这些属性通过提出的演化二叉树构造算法构造出软件的演化历史。最后设计了两组实验,用以分析演化二叉树构造的影响因素,分别利用Bunch以及ACDC体系结构逆向工具,在不同属性相似度阈值下生成演化二叉树和不同属性组合下生成演化二叉树。通过对8个开源软件(Cassandra,Hbase,Hive,OpenJpa,Zookeeper,RxJava,Groovy,Sqoop)的实验,可以发现属性相似度阈值以及构件属性对演化二叉树构造的影响,也可以看出逆向出的复合构件演化二叉树与真实的演化二叉树十分相似,并且可以得出使用体系结构逆向工具ACDC恢复演化二叉树的准确度更高。由此可见,提出的方法能够有效地逆向出这些开源软件及其组成构件的演化历史。
For the better management of software evolution,more and more software evolution management models have been proposed.However,most of the software are stored in the models in the unit of files or projects,and the models lack of the evolution history information of those software components,which make the evolution process hard to be intuitively and effectively understood and managed.In this paper,software evolution binary tree is defined to express the evolution history of software and its components.And a method to recover the evolution binary tree of software and its components by software architecture reverse technology is proposed as well.First of all,the(atomic)components of software system and software architecture(taken as a special composite component here)are recovered by software source codes and architecture reverse technology,and the multi-dimensional attributes of the corresponding atomic components and that of the composite components are measured,based on which the software evolution histories are constructed by the evolution binary tree construction algorithm.Finally,after analyzing the main factors that affect the construction of evolution binary trees according to two groups of experiment,some evolution binary trees are generated according to similarity thresholds with different attributes and some are generated in the basis of the combinations of different attributes by Bunch and ACDC(architecture reverse tools)respectively.Through the experiments of four open source software(Cassandra,Hbase,Hive,Openjpa,Zookeeper,RxJava,Groovy,Sqoop),the best similarity thresholds affecting the construction of evolution binary trees and the best attribute combinations suitable for the software are realized.And it’s also can be seen that the evolution binary trees of composite components recovered are extremely similar to their corresponding real trees in framework.And using the architecture reverse tool ACDC to restore the evolutionary binary tree has higher accuracy.Consequently,the proposed method is effective to recover the evolution histories of these open source software and that of their components.
作者
钟林辉
扶丽娟
叶海涛
齐杰
徐静
ZHONG Lin-hui;FU Li-juan;YE Hai-tao;QI Jie;XU Jing(College of Computer and Information Engineering,Jiangxi Normal University,Nanchang 330022,China;The First Affiliated Hospital of Nanchang University,Nanchang 330000,China;School of Chinese Language and Literature,Jiangxi Normal University,Nanchang 330022,China)
出处
《计算机科学》
CSCD
北大核心
2020年第S02期549-556,共8页
Computer Science
基金
国家自然科学基金(61462040,61662032,61662035,61966017,61762049,61262015)
江西省教育厅科学技术项目(GJJ170207)。
关键词
软件演化
演化历史逆向
软件体系结构
演化二叉树
Software evolution
Evolution history reverse
Software architecture
Evolution binary tree