| 研究生: |
陳致豪 Jhih-hao Chen |
|---|---|
| 論文名稱: |
使用PolyTraceAid進行程式文件覆蓋率計算與分群 Program Documentation Coverage and Clusteringby PolyTraceAid |
| 指導教授: |
鄭永斌
Yung-Pin Cheng |
| 口試委員: | |
| 學位類別: |
碩士 Master |
| 系所名稱: |
資訊電機學院 - 資訊工程學系 Department of Computer Science & Information Engineering |
| 畢業學年度: | 100 |
| 語文別: | 中文 |
| 論文頁數: | 47 |
| 中文關鍵詞: | 文件覆蓋率 、覆蓋率 、分群 、程式碼理解 、程式碼文件 |
| 外文關鍵詞: | Documentation Coverage, Coverage, Clustering, Program Documentation, Program comprehension |
| 相關次數: | 點閱:14 下載:0 |
| 分享至: |
| 查詢本校圖書館目錄 查詢臺灣博碩士論文知識加值系統 勘誤回報 |
軟體系統隨著時間不斷演進的過程中,程式開發人員的來去不可避免。要讓不同階段的開發人員都明瞭軟體系統的架構與系統設計者最原始的的設計理念,是一個困難且具挑戰性的軟體工程問題。通常具備一定規模的軟體開發專案,都會以文件作為開發團隊成員間溝通的媒介。針對程式碼的說明文件,我們於先前提出了PolyTraceAid這套以Tracecase為文件基礎的工具幫助開發人員快速理解程式以及減輕文件撰寫的負擔。使用者能以PolyTraceAid製作Tracecase與閱讀Tracecase,當使用PolyTraceAid來閱讀Tracecase時,能夠以使用者追蹤程式認知模型(program model)的方式來進行。
本論文分別針對製作與閱讀這兩個使用面向,各提出一套方式來強化PolyTraceAid。第一套方式將軟體測試中Test Coverage的概念引進至PolyTraceAid的Tracecase文件。覆蓋率提供我們一個全新的文件品質自動化度量方法。第二套方式利用Needleman-Wunsch Algorithm (NWA) 與 Hierarchical Agglomerative Clustering (HAC) 演算法針對PolyTraceAid的Tracecase做分群( Clustering )。讓Tracecase能夠依其所說明的功能進行分群,提供文件彼此的關聯性,幫助程式設計師探索系統。最後實際將PolyTraceAid應用於xDIVA[5]系統。
In a software life cycle, maintenance is a big challenge due to the turnover of programmers. Making developers who join a project at different time understand the original design concept is always a challenging problem. In a big software project, developers often communicate with each other by documentations. For internal program documentation, we have proposed a Tracecase based tool called PolyTraceAid. We can use PolyTraceAid to create and read Tracecase document. Tracecase can help us understand program model[1] of a program. It is not only a new but also an useful way for programmer to understand a program.
This paper proposes two ways respectively to enhance PolyTraceAid on creating Tracecase and reading Tracecase. First, we apply the concept of code coverage from software testing. So Tracecase document can also be with code coverage. The coverage provides us a new way to automatically measure the quality of program document. Second, we adopt Needleman-Wunsch Algorithm(NWA) and Hierarchical Agglomerative Clustering(HAC) to cluster Tracecases in PolyTraceAid. Then we are able to cluster Tracecases through the function they describe. It will provide us the relationship between Tracecase documents and help programmer to explorer the system.
[1] N. Pennington, “Stimulus structures and mental representations in expert comprehension of computer programs,” Cognitive Psychology, vol. 19, pp. 295–341, 1987.
[2] F. D′etienne, Software design cognitive aspects. Practitioner series, Springer, 2001.
[3] Thomas D. LaToza, “Answering common questions about code”, ICSE Companion ''08, Companion of the 30th international conference on Software engineering Pages 983-986
[4] K. Mehner, “Javis: A uml-based visualization and debugging environment for concurrent java programs,” in Software Visualization, pp. 163–175, 2001.
[5] Y.-P. Cheng, J.-F. Chen, M.-C. Chiu, N.-W. Lai, and C.-C. Tseng, “xdiva: a debugging visualization system with composable visualization metaphors,” in OOPSLA Companion (G. E. Harris, ed.), pp. 807–810, ACM, 2008.
[6] A. M. Vans, A. von Mayrhauser, and G. Somlo, “Program understanding behavior during corrective maintenance of largescale software,” Int. J. Hum.-Comput. Stud., vol. 51, no. 1, pp. 31–70, 1999.
[7] I. Vessey, “Expertise in debugging computer programs: A process analysis,” International Journal of Man-Machine Studies, vol. 23, no. 5, pp. 459–494, 1985.
[8] Source Dynamics, “Source insight.” Available as http://www.sourceinsight.com
[9] Dimitri van Heesch, “Doxygen.” Available as http://www.doxygen.org/.
[10] Sun Microsystems, “Javadoc tool home page.” Available as http://www.oracle.com/technetwork/java/javase/documentation/index-jsp-135444.html
[11] Lewis I. Berman, “Using sound to understand software architecture”, SIGDOC ''09 Proceedings of the 27th ACM international conference on Design of communication Pages 127-134
[12] M.-A. D. Storey, “Theories, tools and research methods in program comprehension: past, present and future,” Software Quality Journal, vol. 14, no. 3, pp. 187–208, 2006.
[13] M.-A. D. Storey, “Invited talk,” in The 19th IEEE International Conference on Program Comprehension, ICPC 2011, Kingston, ON, Canada, June 22-24, 2011, IEEE Computer Society, 2011.
[14] S. Letovsky, “Cognitive processes in program comprehension,” Journal of Systems and Software, vol. 7, no. 4, pp. 325–339, 1987.
[15] D. C. Littman, J. Pinto, S. Letovsky, and E. Soloway, “Mental models and software maintenance,” Journal of Systems and Software, vol. 7, no. 4, pp. 341–355, 1987.
[16] A. von Mayrhauser and A. M. Vans, “From code comprehension model to tool capabilities,” in Computing and Information - ICCI’93, Fifth International Conference on Computing and Information, Sudbury, Ontario, Canada, May 27-29, 1993, Proceedings (O. Abou-Rabia, C. K. Chang, and W. W. Koczkodaj, eds.), pp. 469–473, IEEE Computer Society, 1993.
[17] M.-A. D. Storey, K. Wong, and H. A. M‥uller, “How do program understanding tools affect how programmers understand programs?,” Sci. Comput. Program., vol. 36, no. 2-3, pp. 183–207, 2000.
[18] Chris Parnin, “Measuring API documentation on the web”, Web2SE ''11 Proceedings of the 2nd International Workshop on Web 2.0 for Software Engineering, Pages 25-30
[19] Data mining, see http://en.wikipedia.org/wiki/Data_mining
[20] Nucleotide figure is from: http://www.daviddarling.info/encyclopedia/N/nucleotide.html