|
Frontiers of Information Technology & Electronic Engineering
ISSN 2095-9184 (print), ISSN 2095-9230 (online)
2022 Vol.23 No.5 P.664-677
An incremental software architecture recovery technique driven by code changes
Abstract: It is difficult to keep software architecture up to date with code changes during software evolution. Inconsistency is caused by the limitations of standard development specifications and human power resources, which may impact software maintenance. To solve this problem, we propose an incremental software architecture recovery (ISAR) technique. Our technique obtains dependency information from changed code blocks and identifies different strength-level dependencies. Then, we use double classifiers to recover the architecture based on the method of mapping code-level changes to architecture-level updates. ISAR is evaluated on 10 open-source projects, and the results show that it performs more effectively and efficiently than the compared techniques. We also find that the impact of low-quality architectural documentation on effectiveness remains stable during software evolution.
Key words: Architecture recovery; Software evolution; Code change
机构:1浙江大学,计算机辅助设计与图形学国家重点实验室,中国杭州,310027;2浙江大学,宁波研究院,中国宁波,315100;3浙江大学,机械工程学院,中国杭州,310027;4浙江大学,工程师学院,中国杭州,310027
目的:在制造和装配的公差设计阶段,应用灵敏度分析方法可以帮助设计人员优化分配公差。然而,不同的灵敏度分析方法得出的灵敏度指标往往导致结果相互矛盾。因此,需要通过对比找到一种适合传动机构公差分配的灵敏度指标,使灵敏度结果能够真实反映传动机构公差对运动学和动力学性能的影响。
创新点:1.建立了一种传动机构的混合仿真模型,既降低了试验成本,也保证了实验精度;2.提出了一种基于传动机构混合仿真模型的灵敏度指标对比方法。
方法:1.建立曲柄滑块机构的混合仿真模型;2.获得含有铰间隙误差和连杆长度误差机构的运动学和动力学响应样本,并使用多项式混沌展开(PCE)法建立其结构参数与动力学响应的代理模型;3.基于PCE模型计算不同的灵敏度指标,并进一步评估铰间隙和连杆长度误差对输出响应的影响;4.结合公差-成本函数,根据不同的灵敏度分析结果得到相应的公差分配方案;5.对采用不同公差分配方案机构的运动学和动力学响应进行模拟,确定最优响应对应的灵敏度指标为最合适的指标。
结论:1.基于曲柄滑块实验平台的实验数据建立了混合仿真模型,并在降低实验成本和自由控制输入变量的情况下,保证了仿真数据的准确性和可靠性。2.基于混合仿真模型的实验数据,建立了基于PCE法的代理模型进行灵敏度计算,从而显著简化了计算。3.根据灵敏度计算结果和成本-公差函数分配公差,得到了每个灵敏度指标对应的公差方案;通过对各公差方案下机构的运动学和动力学性能进行对比,提出了一种具有工程价值的灵敏度评价新方法。4.与本文其他灵敏度指标相比,Sobol指标可以通过公差分配更好地优化传动机构的运动学和动力学性能。
关键词组:
References:
[1]Akthar S, Rafi S, 2010. Recovery of software architecture using partitioning approach by Fiedler vector and clustering. Comput Inform Sci, 3(1):72-75.
[2]Ali S, Maqbool O, 2009. Monitoring software evolution using multiple types of changes. Int Conf on Emerging Technologies, p.410-415.
[3]Andritsos P, Tzerpos V, 2005. Information-theoretic software clustering. IEEE Trans Softw Eng, 31(2):150-165.
[4]Anquetil N, Lethbridge TC, 2003. Comparative study of clustering algorithms and abstract representations for software remodularisation. IEE Proc Softw, 150(3):185-201.
[5]Bazylevych R, Burtnyk R, 2015. Algorithms for software clustering and modularization. Xth Int Scientific and Technical Conf “Computer Sciences and Information Technologies”, p.30-33.
[6]Bittencourt RA, Guerrero DDS, 2009. Comparison of graph clustering algorithms for recovering software architecture module views. 13th European Conf on Software Maintenance and Reengineering, p.251-254.
[7]Campo M, Amandi A, Biset JC, 2021. A software architecture perspective about Moodle flexibility for supporting empirical research of teaching theories. Educ Inform Technol, 26(1):817-842.
[8]Cho C, Lee KS, Lee M, et al., 2019. Software architecture module-view recovery using cluster ensembles. IEEE Access, 7:72872-72884.
[9]Garcia J, Ivkovic I, Medvidovic N, 2013a. A comparative analysis of software architecture recovery techniques. 28th IEEE/ACM Int Conf on Automated Software Engineering, p.486-496.
[10]Garcia J, Krka I, Mattmann C, et al., 2013b. Obtaining ground-truth software architectures. 35th Int Conf on Software Engineering, p.901-910.
[11]Glukhikh MI, Itsykson VM, Tsesko VA, 2012. Using dependencies to improve precision of code analysis. Autom Contr Comput Sci, 46(7):338-344.
[12]Jia XY, Chen SQ, Zhou XQ, et al., 2021. Where to handle an exception? Recommending exception handling locations from a global perspective. IEEE/ACM 29th Int Conf on Program Comprehension, p.369-380.
[13]Kobayashi K, Kamimura M, Kato K, et al., 2012. Feature-gathering dependency-based software clustering using Dedication and Modularity. 28th IEEE Int Conf on Software Maintenance, p.462-471.
[14]Kong XL, Li BX, Wang LL, et al., 2018. Directory-based dependency processing for software architecture recovery. IEEE Access, 6:52321-52335.
[15]Kong XL, Han WN, Liao L, et al., 2020. An analysis of correctness for API recommendation: are the unmatched results useless? Sci China Inform Sci, 63(9):190103.
[16]Lee KS, Lee CG, 2020. Identifying semantic outliers of source code artifacts and their application to software architecture recovery. IEEE Access, 8:212467-212477.
[17]Lehman MM, 1996. Laws of software evolution revisited. 5th European Workshop Software Process Technology, p.108-124.
[18]Lima C, Assunção WK, Martinez J, et al., 2019. Product line architecture recovery with outlier filtering in software families: the Apo-Games case study. J Braz Comput Soc, 25(1):7.
[19]Link D, Behnamghader P, Moazeni R, et al., 2019. The value of software architecture recovery for maintenance. Proc 12th Innovations on Software Engineering Conf (formerly known as India Software Engineering Conf), Article 17.
[20]Link D, Srisopha K, Boehm B, 2021. Study of the utility of text classification based software architecture recovery method RELAX for maintenance. Proc 15th ACM/IEEE Int Symp on Empirical Software Engineering and Measurement, Article 33.
[21]Liu X, Wang HD, Ma HY, et al., 2021. The architecture design and implementation of aircraft structural fault assistant decision system based on data analysis. J Phys Conf Ser, 1813:012032.
[22]Lutellier T, Chollak D, Garcia J, et al., 2015. Comparing software architecture recovery techniques using accurate dependencies. IEEE/ACM 37th IEEE Int Conf on Software Engineering, p.69-78.
[23]Lutellier T, Chollak D, Garcia J, et al., 2018. Measuring the impact of code dependencies on software architecture recovery techniques. IEEE Trans Softw Eng, 44(2):159-181.
[24]Mancoridis S, Mitchell BS, Rorres C, et al., 1998. Using automatic clustering to produce high-level system organizations of source code. Proc 6th Int Workshop on Program Comprehension, p.45-52.
[25]Mancoridis S, Mitchell BS, Chen Y, et al., 1999. Bunch: a clustering tool for the recovery and maintenance of software system structures. Proc IEEE Int Conf on Software Maintenance, p.50-59.
[26]Maqbool O, Babri HA, 2004. The weighted combined algorithm: a linkage algorithm for software clustering. 8th European Conf on Software Maintenance and Reengineering, p.15-24.
[27]Maqbool O, Babri HA, 2007. Bayesian learning for software architecture recovery. Int Conf on Electrical Engineering, p.1-6.
[28]Mendonça NC, Kramer J, 1998. An experiment in distributed software architecture recovery. 2nd Int ESPRIT ARES Workshop on Development and Evolution of Software Architectures for Product Families, p.106-114.
[29]Mens T, Tourwe T, 2004. A survey of software refactoring. IEEE Trans Softw Eng, 30(2):126-139.
[30]Mitchell BS, 2003. A heuristic approach to solving the software clustering problem. Int Conf on Software Maintenance, p.285-288.
[31]Mitchell BS, Mancoridis S, 2006. On the automatic modularization of software systems using the Bunch tool. IEEE Trans Softw Eng, 32(3):193-208.
[32]Monroy M, Pinzger M, 2021. ARCo: architecture recovery in context. J Xi'an Univ Arch Technol, XIII(2):128.
[33]Naseem R, Maqbool O, Muhammad S, 2013. Cooperative clustering for software modularization. J Syst Softw, 86(8):2045-2062.
[34]Pourasghar B, Izadkhah H, Isazadeh A, et al., 2021. A graph-based clustering algorithm for software systems modularization. Inform Softw Technol, 133:106469.
[35]Sartipi K, 2003. Software architecture recovery based on pattern matching. Int Conf on Software Maintenance, p.293-296.
[36]Schmitt Laser M, Medvidovic N, Le DM, et al., 2020. ARCADE: an extensible workbench for architecture recovery, change, and decay evaluation. Proc 28th ACM Joint Meeting on European Software Engineering Conf and Symp on the Foundations of Software Engineering, p.1546-1550.
[37]Sievi-Korte O, Richardson I, Beecham S, 2019. Software architecture design in global software development: an empirical study. J Syst Softw, 158:110400.
[38]Silva DEU, Bittencourt RA, Calumby RT, 2019. Clustering similarity measures for architecture recovery of evolving software. Anais do VII Workshop de Visualização, Evolução E Manutenção de Software, p.45-52.
[39]Sözer H, 2019. Evaluating the effectiveness of multi-level greedy modularity clustering for software architecture recovery. 13th European Conf on Software Architecture, p.71-87.
[40]Tamburri DA, Kazman R, 2018. General methods for software architecture recovery: a potential approach and its evaluation. Empir Softw Eng, 23(3):1457-1489.
[41]Teymourian N, Izadkhah H, Isazadeh A, 2020. A fast clustering algorithm for modularization of large-scale software systems. IEEE Trans Softw Eng, early access.
[42]Tufano M, Sajnani H, Herzig K, 2019. Towards predicting the impact of software changes on building activities. IEEE/ACM 41st Int Conf on Software Engineering, p.49-52.
[43]Tzerpos V, Holt RC, 2000. ACCD: an algorithm for comprehension-driven clustering. Proc 7th Working Conf on Reverse Engineering, p.258-267.
[44]Wu J, Hassan AE, Holt RC, 2005. Comparison of clustering algorithms in the context of software evolution. 21st IEEE Int Conf on Software Maintenance, p.525-535.
[45]Yang TF, Jiang ZY, Shang YH, et al., 2021. Systematic review on next-generation web-based software architecture clustering models. Comput Commun, 167:63-74.
[46]Zhang PL, Jiang YJ, Wei AJ, et al., 2021. Domain-specific fixes for flaky tests with wrong assumptions on underdetermined specifications. IEEE/ACM 43rd Int Conf on Software Engineering, p.50-61.
[47]Zhao JF, Zhou JT, Yang HJ, et al., 2015. An orthogonal approach to reusable component discovery in cloud migration. China Commun, 12(5):134-151.
Open peer comments: Debate/Discuss/Question/Opinion
<1>
DOI:
10.1631/FITEE.2100461
CLC number:
TP311
Download Full Text:
Downloaded:
3632
Download summary:
<Click Here>Downloaded:
495Clicked:
3859
Cited:
0
On-line Access:
2024-08-27
Received:
2023-10-17
Revision Accepted:
2024-05-08
Crosschecked:
2021-12-29