计算机科学 ›› 2020, Vol. 47 ›› Issue (11A): 549-556.doi: 10.11896/jsjkx.200200067

• 软件工程&数据库 • 上一篇    下一篇

软件演化历史的逆向工程生成方法研究

钟林辉1, 扶丽娟1, 叶海涛1,2, 齐杰1, 徐静3   

  1. 1 江西师范大学计算机信息工程学院 南昌 330022
    2 南昌大学第一附属医院 南昌 330000
    3 江西师范大学文学院 南昌 330022
  • 出版日期:2020-11-15 发布日期:2020-11-17
  • 通讯作者: 钟林辉(shiningto@jxnu.edu.cn)
  • 基金资助:
    国家自然科学基金(61462040,61662032,61662035,61966017,61762049,61262015);江西省教育厅科学技术项目(GJJ170207)

Study on Reverse Engineering Generation Method of Software Evolution History

ZHONG Lin-hui1, FU Li-juan1, YE Hai-tao1,2, QI Jie1, XU Jing3   

  1. 1 College of Computer and Information Engineering,Jiangxi Normal University,Nanchang 330022,China
    2 The First Affiliated Hospital of Nanchang University,Nanchang 330000,China
    3 School of Chinese Language and Literature,Jiangxi Normal University,Nanchang 330022,China
  • Online:2020-11-15 Published:2020-11-17
  • About author:ZHONG Lin-hui,born in 1974,Ph.D,professor,is a member of China Computer Federation.His main research interests include software architecture,software evolution and maintenance.
  • Supported by:
    This work was supported by the National Natural Science Foundation of China(61462040,61662032,61662035,61966017,61762049,61262015) and Science and Technology Project of Jiangxi Provincial Education Department (GJJ170207).

摘要: 为了更好地管理软件的演化,越来越多的软件演化管理模型被提出,然而现存的软件演化管理模型或版本管理系统中存储的软件大多是以文件或者项目为单位的,而这些模型中又缺乏软件体系结构及组成构件的演化历史信息,这就致使软件演化管理人员无法直观有效地了解以及管理软件体系结构及其构件的演化。为此,文中通过定义软件演化二叉树这一概念,表示一个软件及其组成构件的演化历史,并提出了一种基于软件体系结构逆向技术逆向出软件体系结构及其组成构件演化二叉树的方法,即利用软件源代码以及体系结构逆向技术逆向出软件系统的(原子)构件与软件体系结构(文中将软件体系结构看作一种特殊的复合构件),并度量相应的原子构件以及复合构件的多维属性,再利用这些属性通过提出的演化二叉树构造算法构造出软件的演化历史。最后设计了两组实验,用以分析演化二叉树构造的影响因素,分别利用Bunch以及ACDC体系结构逆向工具,在不同属性相似度阈值下生成演化二叉树和不同属性组合下生成演化二叉树。通过对8个开源软件(Cassandra,Hbase,Hive,OpenJpa,Zookeeper,RxJava,Groovy,Sqoop)的实验,可以发现属性相似度阈值以及构件属性对演化二叉树构造的影响,也可以看出逆向出的复合构件演化二叉树与真实的演化二叉树十分相似,并且可以得出使用体系结构逆向工具ACDC恢复演化二叉树的准确度更高。由此可见,提出的方法能够有效地逆向出这些开源软件及其组成构件的演化历史。

关键词: 软件体系结构, 软件演化, 演化二叉树, 演化历史逆向

Abstract: 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.

Key words: Evolution binary tree, Evolution history reverse, Software architecture, Software evolution

中图分类号: 

  • TP311
[1] WESTFECHTEL B,CONRADI R.Software architecture andsoftware configuration management[M].Software Configuration Management.Springer,Berlin,Heidelberg,2003:24-39.
[2] VAN DER HOEK A,HEIMBIGNER D,WOLF A L.Software Architecture,Configuration Management,and Configurable Distributed Systems:A Ménage a Trois.Technical Report CU-CS-862-98[R].University of Colorado,1998.
[3] MOKNI A,HUCHARD M,URTADO C,et al.An evolutionmanagement model for multi-level component-based software architectures[C]//27th International Conference on Software Engineering and Knowledge Engineering.2015:674-679.
[4] GERGIC J.Towards a versioning model for component-basedsoftware assembly[C]//International Conference on Software Maintenance(ICSM 2003).IEEE,2003:138-147.
[5] MITCHELL,BRIAN S,SPIROS M.On the automatic modularization of software systems using the bunchtool[J].IEEE Transactions on Software Engineering,2006,32(3):193-208.
[6] TZERPOS V,HOLT R C.Accd:an algorithm forcomprehension-driven clustering[C]//Proceedings Seventh Working Conference on Reverse Engineering.IEEE,2000:258-267.
[7] MOKNI A,HUCHARD M,URTADO C,et al.An evolutionmanagement model for multi-level component-based software ar-chitectures[C]//27th International Conference on Software Engineering and Knowledge Engineering.2015:674-679.
[8] MOKNI A,URTADO C,VAUTTIER S,et al.A formal approach for managing component-based architecture evolution[J].Science of Computer Programming,2016,127:24-49.
[9] GÎRBA T,DUCASSE S.Modeling history to analyze software evolution[J].Journal of Software:Evolution and Process,2006,18(3):207-236.
[10] GÎRBA T.Modeling history to understand software evolution[D].Bern:University of Bern,2005:13-19.
[11] ZHONG L H,XIE B,SHAO W Z.Supporting Component-based Software Development by Extending the CDL with Software Configuration Information [J].Journal of Computer Research and Development,2002,39(10):1361-1365.
[12] ZHONG L H,HUANG X M,XUE L B,et al.Research on automatic detection technology of multiple software reconstruction based on version [J].Journal of Jiangxi Normal University (Natural Science Edition),2018,42(5):28-33,36.
[13] HATA H,MIZUNO O,KIKUNO T.Historage:fine-grained- version control system for java[C]//Proceedings of the 12th International Workshop on Principles of Software Evolution and the 7th annual ERCIM Workshop on Software Evolution.2011:96-100.
[14] HAMMAD M.Design Observer:A Framework to Monitor Design Evolution[M]//Information Technology-New Generations.Springer,Cham,2018:635-640.
[15] HASSAN A,OUSSALAH M.Evolution Styles:Multi-View/Multi-Level Model for Software Architecture Evolution[J].Journal of Software,2018,13(3):146-155.
[16] WANG J S,AI W,PENG X,et al.Recovering TraceabilityLinks among Multi-level Software Evolution Information [J].Computer Science,2012,39(7):135-139.
[17] JIANG Q,PENG X,WANG H,et al.Summarizing evolutionarytrajectory by grouping and aggregating relevant code changes[C]//2015 IEEE 22nd International Conference on Software Analysis,Evolution and Reengineering.IEEE,2015:361-370.
[18] PAN W,LI B,MA Y,et al.Multi-granularity evolution analysis of software using complex network theory[J].Journal of Systems Science and Complexity,2011,24(6):1068-1082.
[19] SERVANT F,JONES J A.Fuzzyfine-grained code-historyanalysis[C]//Proceedings of the 39th International Conferenceon Software Engineering.IEEE Press,2017:746-757.
[20] SERVANT F,JONES J A.History slicing:assistingcode-evolution tasks[C]//Proceedings of the ACMSIGSOFT 20th International Symposium on the Foundations of Software Engineering.ACM,2012:43.
[21] WEN W,CHEN J,YUAN J,et al.Evolution slicing-basedchange impact analysis[C]//2017 IEEE Third International Conference on Big Data Computing Service and Applications (Big Data Service).IEEE,2017:293-298.
[22] GUAN H,YANG H,WEN Z,et al.A dynamic model slicing approach for system comprehension during software evolution[J].Multiagent and Grid Systems,2018,14(1):1-29.
[23] AGHAJANI E,MOCCI A,BAVOTA G,et al.The code timemachine[C]//Proceedings of the 25th International Conference on Program Comprehension.IEEE Press,2017:356-359.
[24] SCHNEIDER T,TYMCHUK Y,SALGADO R,et al.CuboidMatrix:Exploring Dynamic Structural Connections in Software Components using Space-Time Cube[C]//2016 IEEE Working Conference on Software Visualization.IEEE,2016:116-125.
[25] NAM D,LEE Y K,MEDVIDOVIC N.EVA:a tool for visualizing software architectural evolution[C]//Proceedings of the 40th International Conference on Software Engineering:Companion Proceeedings.ACM,2018:53-56.
[26] LANZA M,DUCASSE S.Understanding software evolutionusing a combination of software visualization and software metrics[C]//Proceedings of LMO 2002.2002.
[27] WANG W,LI T,HE Y,et al.A Hybird Approach for Ripple Effect Analysis of Software Evolution Activities [J].Journal of Computer Research and Development,2016,53(3):503-516.
[28] ZHONG L H,XIA J,PENG Y,et al.Research on a Method of Software Architecture Change Measure with Graph Edit Distance and Its Application[J].Journal of Chinese Computer Systems,2018,39(3):425-432.
[1] 张久杰, 陈超, 聂宏轩, 夏玉芹, 张丽萍, 马占飞.
基于类粒度的克隆代码群稳定性实证研究
Empirical Study on Stability of Clone Code Sets Based on Class Granularity
计算机科学, 2021, 48(5): 75-85. https://doi.org/10.11896/jsjkx.200900062
[2] 蒋慧敏, 蒋哲远.
企业云服务体系结构的参考模型与开发方法
Reference Model and Development Methodology for Enterprise Cloud Service Architecture
计算机科学, 2021, 48(2): 13-22. https://doi.org/10.11896/jsjkx.200300044
[3] 王继文, 吴毅坚, 彭鑫.
基于演化和语义特征的上帝类检测方法
Approach of God Class Detection Based on Evolutionary and Semantic Features
计算机科学, 2021, 48(12): 59-66. https://doi.org/10.11896/jsjkx.210100077
[4] 何鹏, 喻绿君.
面向群体协作开发的开源软件峭壁分析
Analysis of Open Source Software Cliff Walls for Group Collaborative Development
计算机科学, 2020, 47(6): 51-58. https://doi.org/10.11896/jsjkx.190300140
[5] 张静宣, 江贺.
代码标识符归一化研究现状及发展趋势
Research Status and Development Trend of Identifier Normalization
计算机科学, 2020, 47(3): 1-4. https://doi.org/10.11896/jsjkx.200200009
[6] 潘浩, 郑巍, 张紫枫, 芦超群.
软件网络分形结构特征研究
Study on Fractal Features of Software Networks
计算机科学, 2019, 46(2): 166-170. https://doi.org/10.11896/j.issn.1002-137X.2019.02.026
[7] 唐倩文, 陈良育.
基于复杂网络理论的Java开源系统演化分析
Analysis of Java Open Source System Evolution Based on Complex Network Theory
计算机科学, 2018, 45(8): 166-173. https://doi.org/10.11896/j.issn.1002-137X.2018.08.030
[8] 刘凯, 梁欣, 张俊萍.
基于软硬系统综合方法的软件失效问题分析
Analysis on Technical Support Equipments’ Software Invalidation Based on Soft and Hard Integrated System Methodology
计算机科学, 2018, 45(11A): 494-496.
[9] 郑交交, 李彤, 林英, 谢仲文, 王晓芳, 成蕾, 刘妙.
构件系统演化一致性的判定方法
Judgement Method of Evolution Consistency of Component System
计算机科学, 2018, 45(10): 189-195. https://doi.org/10.11896/j.issn.1002-137X.2018.10.035
[10] 赵会群,黄榆涵.
软件模型代数性质的程序化验证
Program Verification of Software Model’s Algebraic Properties
计算机科学, 2017, 44(11): 240-245. https://doi.org/10.11896/j.issn.1002-137X.2017.11.036
[11] 倪友聪,李松,叶鹏,杜欣.
基于随机搜索规则的软件体系结构层性能演化优化方法
Random Search Rule Based Performance Evolutionary Optimization Method at Software Architecture Level
计算机科学, 2017, 44(11): 156-163. https://doi.org/10.11896/j.issn.1002-137X.2017.11.023
[12] 钟林辉,李俊杰,夏鲸,薛良波.
基于多维属性的构件化软件演化相似性度量方法研究
Research on Evolution Similarity Measurement of Component-based Software Based on Multi-dimensional Evolution Properties
计算机科学, 2016, 43(Z11): 499-505. https://doi.org/10.11896/j.issn.1002-137X.2016.11A.112
[13] 钱晔,李彤,郁涌,孙吉红,于倩,彭琳.
一种面向同步交互的软件演化过程建模方法
Approach to Modeling Software Evolution Process for Synchronous Interaction
计算机科学, 2016, 43(8): 154-158. https://doi.org/10.11896/j.issn.1002-137X.2016.08.032
[14] 王珣,王轶辰.
软件系统故障传播模型研究进展
Research Progress on Error Propagation Model in Software System
计算机科学, 2016, 43(6): 1-9. https://doi.org/10.11896/j.issn.1002-137X.2016.06.001
[15] 谢仲文,明利,林英,秦江龙,莫启,李彤.
基于Petri网的软件动态演化的一致性分析
Consistency Analysis of Software Dynamic Evolution Based on Petri Net
计算机科学, 2016, 43(11): 234-241. https://doi.org/10.11896/j.issn.1002-137X.2016.11.046
Viewed
Full text


Abstract

Cited

  Shared   
  Discussed   
No Suggested Reading articles found!