计算机科学 ›› 2020, Vol. 47 ›› Issue (11A): 549-556.doi: 10.11896/jsjkx.200200067
钟林辉1, 扶丽娟1, 叶海涛1,2, 齐杰1, 徐静3
ZHONG Lin-hui1, FU Li-juan1, YE Hai-tao1,2, QI Jie1, XU Jing3
摘要: 为了更好地管理软件的演化,越来越多的软件演化管理模型被提出,然而现存的软件演化管理模型或版本管理系统中存储的软件大多是以文件或者项目为单位的,而这些模型中又缺乏软件体系结构及组成构件的演化历史信息,这就致使软件演化管理人员无法直观有效地了解以及管理软件体系结构及其构件的演化。为此,文中通过定义软件演化二叉树这一概念,表示一个软件及其组成构件的演化历史,并提出了一种基于软件体系结构逆向技术逆向出软件体系结构及其组成构件演化二叉树的方法,即利用软件源代码以及体系结构逆向技术逆向出软件系统的(原子)构件与软件体系结构(文中将软件体系结构看作一种特殊的复合构件),并度量相应的原子构件以及复合构件的多维属性,再利用这些属性通过提出的演化二叉树构造算法构造出软件的演化历史。最后设计了两组实验,用以分析演化二叉树构造的影响因素,分别利用Bunch以及ACDC体系结构逆向工具,在不同属性相似度阈值下生成演化二叉树和不同属性组合下生成演化二叉树。通过对8个开源软件(Cassandra,Hbase,Hive,OpenJpa,Zookeeper,RxJava,Groovy,Sqoop)的实验,可以发现属性相似度阈值以及构件属性对演化二叉树构造的影响,也可以看出逆向出的复合构件演化二叉树与真实的演化二叉树十分相似,并且可以得出使用体系结构逆向工具ACDC恢复演化二叉树的准确度更高。由此可见,提出的方法能够有效地逆向出这些开源软件及其组成构件的演化历史。
中图分类号:
[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 |
|