| 研究生: |
史家瑩 Jia-Ying Shih |
|---|---|
| 論文名稱: |
從版本庫的提交中提取維護耦合以進行系統知識轉移 Extracting Maintenance Couplings from Repository Commits for System Knowledge Transfer |
| 指導教授: |
鄭永斌
Yung-Pin Cheng |
| 口試委員: | |
| 學位類別: |
碩士 Master |
| 系所名稱: |
資訊電機學院 - 資訊工程學系 Department of Computer Science & Information Engineering |
| 論文出版年: | 2022 |
| 畢業學年度: | 110 |
| 語文別: | 中文 |
| 論文頁數: | 58 |
| 中文關鍵詞: | 耦合 、技術文件 |
| 相關次數: | 點閱:7 下載:0 |
| 分享至: |
| 查詢本校圖書館目錄 查詢臺灣博碩士論文知識加值系統 勘誤回報 |
在開發人員開發與維護的過程中,若修改某段程式碼時,須連帶修改另一部份程式碼,則這兩段程式碼之間存在的耦合關係,我們將其稱為維護耦合(maintenance coupling)。
現存的大多數專案中,其實都存在不少的維護耦合關係,但在技術文件內卻從不曾提起這些耦合情形,這也會導致其他剛接手的開發人員忽略了耦合的存在。開發人員在開發或維護的實作中,若是沒能發現潛藏的維護耦合關係,在改動程式碼時也沒有連帶修改與它耦合的程式碼片段,這很可能會導致其他原先正常的功能發生故障。
本實驗室正在開發一項嶄新的技術文件管理工具――GeekyNote,我們也開創了耦合技術文件的概念。使用者能夠使用耦合標籤,將彼此之間存在耦合關係的程式碼片段連結起來,再配合錄音或錄影解說,取代傳統用文字寫成的技術文件,傳承已知的耦合相關重要資訊。
為了提升耦合技術文件的正確性與完整性,以及製作文件的便利性。本論文使用Git提交(Commit)版本歷史,分析專案中存在的維護耦合關係。透過分析結果,使用者能夠要求GeekyNote自動標記耦合的程式碼區塊。除此之外, GeekyNote還能夠利用該分析,提供開發人員詳細的耦合資訊,讓開發人員在修改程式碼時無需再懼怕軟體故障的發生,並降低開發的風險性。
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]