| 研究生: |
王彥閔 Yan-Ming Wang |
|---|---|
| 論文名稱: |
程式碼中的壞氣味之視覺化設計與實作 Design and Implementation of Bad Smells Visualization |
| 指導教授: |
李允中
Jonathan Lee |
| 口試委員: | |
| 學位類別: |
碩士 Master |
| 系所名稱: |
資訊電機學院 - 資訊工程學系在職專班 Executive Master of Computer Science & Information Engineering |
| 論文出版年: | 2015 |
| 畢業學年度: | 103 |
| 語文別: | 中文 |
| 論文頁數: | 54 |
| 中文關鍵詞: | 程式碼壞味道 |
| 外文關鍵詞: | Code Bad Smell |
| 相關次數: | 點閱:10 下載:0 |
| 分享至: |
| 查詢本校圖書館目錄 查詢臺灣博碩士論文知識加值系統 勘誤回報 |
軟體在其生命週期裡,必定會經過多次改版來新增軟體功能、修正bug…等因素而進行軟體更新,但每次程式改版有可能會造成嚴重的副作用(Side Effects)。影響軟體品質的要素非常多[1][2],如程式設計人員的不熟練、專案設計考慮不周全、商業利益而保留對委託開發人的隱瞞,或難以解釋替代解法(Workaround),而讓軟體的模組化越來越鬆散,即軟體工程的期望的高聚合力(High Cohesion)與低耦合力(Low Coupling)的理念漸行漸遠,進而衍生出多種管理上/Bug增生的問題。
另一方面一般軟體經過長時間演化,越是功能豐富的軟體它所使用的模組或引用第三方的函式庫(Library)越多,因此其軟體階層的深/廣度也越來越錯綜複雜,所以適時的重構程式碼對於專案往後的運行是非常有幫助的,但該如何從抽象的程式碼中發掘這些隱藏的問題,並具體化程式碼間的相互關係。
因此本論文替程式之開發者、管理者提供此途徑,利用三項Code of Bad Smell Detection(1.Long Method、2.Large Class、3.ParaList)測量方式,偵測出Java Project裡程式碼中的壞氣味,再藉由Eclipse可開發plug-in特性,把Cytoscape製作成Eclipse Plug-in,可提供給程式之開發者、管理者使用一份圖表式演進的依據,經由Java Compiler(Java 編譯器),所產生出來的資訊建立網路圖形連接圖,一方面可以解決軟體改版時需要同步更新UML的麻煩,一方面可以使開發者、管理者再次重視程式的品質文題進而找出可能蘊藏的Bug。
During software development life cycle, it will definitely be updated many times for new function implements, fixed bugs and other factors. But each software revision sometimes may cause side effects. Effect of software quality[1][2], such as unskilled programmer, project design considerations not comprehensive, business interest and relevant technologies, or difficult to explain alternative solution, and then make the software modular to more loose, that software engineering desired high cohesion and low coupling force concept lopsided, thus derived from a variety of management issues.
On the other hand the general software after a long evolution, the more feature-rich software modules it uses third-party libraries more and more, so depth of its software are increasingly complex, therefore, it is very helpful to refactoring your code, but the problem is how to find out these hidden issue in abstract code.
This paper uses of the three code of Bad Smell (1.Long Method, 2.Large Class, 3.ParaList) measurements for the programmers, and then find out the bad smells in Java project, it let programmers establish relationship information by Java Compiler. Finally system uses Cytoscape as a Eclipse plug-in to make graphics via relationship information. It is no longer need to synchronize UML when the software revision. It can make programmers and project managers pay attention to the quality of the program and then find out possible hidden Bug.
[1] Michele Tufano, Fabio Palomba, Gabriele Bavota,Rocco Oliveto, Massimiliano Di Penta, Andrea De Lucia, Denys Poshyvanyk, “When and Why Your Code Starts to Smell Bad, ”, 2015.
[2] E. Van Emden and L. Moonen, “Java Quality Assurance by Detecting Code Smells, ”, In Proceedings of the Ninth Working Conference on Reverse Engineering (WCRE'02), pp.97-106, 2002.
[3] Francesca Arcelli Fontana, Pietro Braione and Marco Zanoni. “Automatic detection of bad smells in code: An experimental assessment, ” In Journal of Object Technology, Vol. 11, No. 2, pp. 5:1–38, 2012.
[4] Almas Hamid, Muhammad Ilyas, Muhammad Hummayun and Asad Nawaz. “A Comparative Study on Code Smell Detection Tools, ” In A Comparative Study on Code Smell Detection Tools, Vol.60, pp.25-32, 2013.
[5] Tiago Pessoa, Fernando Brito e Abreu, Miguel Pessoa Monteiro, and Sergio Bryton. “An Eclipse Plugin to Support Code Smells Detection, ”, In CoRR, April 2012.
[6] Matthew James Munro, “Product Metrics for Automatic Identification of “Bad Smell, ” Design Problems in Java Source-Code, ”, 2005.
[7] P. Suresh and S. MuthuKumaran, “Refactoring and Detection of Bad Smells of Coding Using Larger Scale and Critical Incident Technique, ”In International Journal of Science and Research, ISSN (Online): 2319-7064, 2013.
[8] Jiang Dexun, Ma Peijun, Su Xiaohong and Wang Tiantian, “DETECTION AND REFACTORING OF BAD SMELL CAUSED BY LARGE SCALE, ”, In International Journal of Software Engineering & Applications (IJSEA), Vol.4, No.5, September 2013.
[9] Emerson Murphy-Hil and Andrew P. Black, “An Interactive Ambient Visualization for Code Smells, ” 2010.
[10] Chris Parnin, Carsten Gorg and Ogechi Nnadi, “A Catalogue of Lightweight Visualizations to Support Code Smell Inspection, ”, September 2004.
[11] Anshu Rani and Harpreet Kaur, “Product Metrics for Automatic Identification of Bad Smell, ”, In International Journal For Technological Research In Engineering, Vol.1, Issue 10, June 2014.
[12] “OSGi Wiki” ,[Online]. Available: https://en.wikipedia.org/wiki/OSGi
[13] “Developing enterprise OSGi applications for WebSphere Application Server”
” ,[Online].Available: http://www.ibm.com/developerworks/websphere/techjournal/1007_robinson/1007_robinson.html
[14] “Cytoscape Wiki” ,[Online]. Available:
http://wiki.cytoscape.org/Cytoscape_3/UserManual
[15] “Apache’s Maven Tutorial” ,[Online]. Available:
http://www.tutorialspoint.com/maven/maven_tutorial.pdf
[16] “Eclipse Equinox Bunldes” ,[Online]. Available: http://www.eclipse.org/equinox/bundles/
[17] “OSGi Runtime Coparision” ,[Online]. Available:
http://blog.jetztgrad.net/osgi-stuff/osgi-runtime-comparison/
[18] “What are the extension and extension points” ,[Online]. Available:
https://wiki.eclipse.org/FAQ_What_are_extensions_and_extension_points%3F
[19] “A Comparison of Eclipse Extensions and OSGi Services” ,[Online]. Available:
http://www.eclipsezone.com/articles/extensions-vs-services/
[20] “Extending the Eclipse IDE - Plug-in development - Tutorial”
,[Online]. Available: http://www.vogella.com/tutorials/EclipsePlugIn/article.html
[21] “Developing Eclipse plug-ins” ,[Online]. Available:
http://www.ibm.com/developerworks/library/os-ecplug/
[22] “Eclipse PDE” ,[Online]. Available: https://eclipse.org/pde/
[23] “Cytoscape 3.0 App Development”,[Online]. Available:
http://wiki.cytoscape.org/Cytoscape_3/AppDeveloper
[24] “Eclipse Java Development Tools Git Address”,[Online]. Available:
http://git.eclipse.org/c/jdt/eclipse.jdt.core.git/refs/tags