摘要(英) |
During the development and maintenance, if one code block is modified, another part of code must be modified together, then the coupling between the two code blocks is called maintenance coupling.
There are lots of maintenance couplings in most existing projects, but these couplings are not mentioned in the technical documents, which will also let other developers ignore the existence of coupling. During the development or maintenance, if developers fail to find the hidden maintenance couplings, and does not modify the code blocks with couplings together, it is likely to cause other bugs.
GeekyNote is a novel tool developed in our laboratory to address the major challenges in technical documentation, and we have also created the concept of coupling technical documents. Users can use coupling labels to link code blocks that have a coupling relationship with each other, and then cooperate with audio or video explanations to replace traditional technical documents written in texts and pass on known important information.
In order to improve the correctness and integrity of the coupling documents, as well as the convenience of making documents. This paper uses the Git commit history to analyze the maintenance coupling relationship existing in the project. Based on this analysis, users can automatically mark coupled code blocks. In addition, GeekyNote can also provide developers with detailed coupling information, so that developers no longer worry about software failures when modifying code, and reduce the risk of development. |
參考文獻 |
[1] Gall, Harald, Karin Hajek, and Mehdi Jazayeri. "Detection of logical coupling based on product release history." Proceedings. International Conference on Software Maintenance (Cat. No. 98CB36272). IEEE, 1998.
[2] Cheng, Yung-Pin, et al. "GeekyNote: a technical documentation tool with coverage, backtracking, traces, and couplings." 2020 IEEE/ACM 42nd International Conference on Software Engineering: Companion Proceedings (ICSE-Companion). IEEE, 2020.
[3] Steff, Maximilian, and Barbara Russo. "Co-evolution of logical couplings and commits for defect estimation." 2012 9th IEEE Working Conference on Mining Software Repositories (MSR). IEEE, 2012.
[4] D′Ambros, Marco, Michele Lanza, and Romain Robbes. "On the relationship between change coupling and software defects." 2009 16th Working Conference on Reverse Engineering. IEEE, 2009.
[5] Zimmermann, Thomas, et al. "Mining version histories to guide software changes." IEEE Transactions on Software Engineering 31.6 (2005): 429-445.
[6] Falcone, Jean-Luc, Bastien Chopard, and Alfons Hoekstra. "MML: towards a multiscale modeling language." Procedia Computer Science 1.1 (2010): 819-826.
[7] “Git” [online]. Available: https://git-scm.com/. [Accessed 6 Jun. 2022].
[8] “Subversion” [online]. Available: https://subversion.apache.org/. [Accessed 6 Jun. 2022].
[9] “CVS” [online]. Available: https://www.cvs.com/. [Accessed 6 Jun. 2022].
[10] “GitLab” [online]. Available: https://about.gitlab.com/. [Accessed 6 Jun. 2022]
[11] “GitHub” [online]. Available: https://github.com/. [Accessed 6 Jun. 2022]
[12] ZHOU, Daihong, et al. Understanding evolutionary coupling by fine-grained co-change relationship analysis. In: 2019 IEEE/ACM 27th International Conference on Program Comprehension (ICPC). IEEE, 2019. p. 271-282.
[13] ZIMMERMANN, Thomas, et al. Mining version histories to guide software changes. IEEE Transactions on Software Engineering, 2005, 31.6: 429-445.
[14] ROLFSNES, Thomas, et al. Generalizing the analysis of evolutionary coupling for software change impact analysis. In: 2016 IEEE 23rd International Conference on Software Analysis, Evolution, and Reengineering (SANER). IEEE, 2016. p. 201-212.
[15] MOONEN, Leon, et al. Practical guidelines for change recommendation using association rule mining. In: Proceedings of the 31st IEEE/ACM International Conference on Automated Software Engineering. 2016. p. 732-743.
[16] SILVA, Luciana L., et al. Developers′ perception of co-change patterns: An empirical study. In: 2015 IEEE International Conference on Software Maintenance and Evolution (ICSME). IEEE, 2015. p. 21-30.
[17] KIM, Miryung; ZIMMERMANN, Thomas; NAGAPPAN, Nachiappan. A field study of refactoring challenges and benefits. In: Proceedings of the ACM SIGSOFT 20th International Symposium on the Foundations of Software Engineering. 2012. p. 1-11.
[18] “How Video Will Take Over The World” [online]. Available: https://www.forrester.com/report/How-video-Will-Take-Over-The-World/RES44199. [Accessed 6 Jun. 2022]
[19] “Humans Process Visual Data Better” [online]. Available: https://www.t-sciences.com/news/humans-process-visual-data-better. [Accessed 6 Jun. 2022]
[20] 技術文件版型範例[online]. Available: https://www.smartsheet.com/free-technical-specification-templates [Accessed 6 Jun. 2022]
[21] WIESE, Igor Scaliante, et al. An empirical study of the relation between strong change coupling and defects using history and social metrics in the apache aries project. In: IFIP International Conference on Open Source Systems. Springer, Cham, 2015. p. 3-12.
[22] KIRBAS, Serkan, et al. The relationship between evolutionary coupling and defects in large industrial software. Journal of Software: Evolution and Process, 2017, 29.4: e1842.
[23] KIRBAS, Serkan, et al. The effect of evolutionary coupling on software defects: an industrial case study on a legacy system. In: Proceedings of the 8th ACM/IEEE International Symposium on Empirical Software Engineering and Measurement. 2014. p. 1-7.
[24] R. Schwanke, L. Xiao and Y. Cai, "Measuring architecture quality by structure plus history analysis," 2013 35th International Conference on Software Engineering (ICSE), 2013, pp. 891-900, doi: 10.1109/ICSE.2013.6606638.
[25] WONG, Sunny, et al. Detecting software modularity violations. In: Proceedings of the 33rd International Conference on Software Engineering. 2011. p. 411-420.
[26] PALOMBA, Fabio, et al. Detecting bad smells in source code using change history information. In: 2013 28th IEEE/ACM International Conference on Automated Software Engineering (ASE). IEEE, 2013. p. 268-278.
[27] BECK, Fabian; DIEHL, Stephan. On the congruence of modularity and code coupling. In: Proceedings of the 19th ACM SIGSOFT symposium and the 13th European conference on Foundations of software engineering. 2011. p. 354-364.
[28] H. Gall, M. Jazayeri and J. Krajewski, "CVS release history data for detecting logical couplings," Sixth International Workshop on Principles of Software Evolution, 2003. Proceedings., 2003, pp. 13-23, doi: 10.1109/IWPSE.2003.1231205.
[29] XIAO, Lu, et al. Identifying and quantifying architectural debt. In: 2016 IEEE/ACM 38th International Conference on Software Engineering (ICSE). IEEE, 2016. p. 488-498.
[30] “Perforce” [online]. Available: https://www.perforce.com/. [Accessed 30 Jun. 2022] |