博碩士論文 103525006 詳細資訊




以作者查詢圖書館館藏 以作者查詢臺灣博碩士 以作者查詢全國書目 勘誤回報 、線上人數:20 、訪客IP:18.223.32.230
姓名 林書緯(Shu-Wei Lin)  查詢紙本館藏   畢業系所 軟體工程研究所
論文名稱
(Visualize Ripple Effect with Analyzing Object-Oriented Design Relationship)
相關論文
★ CRUnit - Capture / Replay Based Unit Testing★ Locating Interested Code by Program Execution Paths with Debugger
★ An OpenStack Based Testing as a Service Platform★ Change History Tracing Tool for Arbitrary Programming Language
★ Virtual Objects for Program Visualization in xDIVA★ Enhance Stress Testing Power by Synchronizing JMeter Test Scripts
★ 以 GDB 實作 XThreadDebugger-Linux(XTD-Linux)提供 Linux 平台之多執行緒除錯★ 支援版本控制系統之文件撰寫工具
★ Korat: An O.S.-independent Capture/Replay Test Automation System★ GUI Component Detection for Cross-Platform Applications–Using Input Device and Image Change Synergistic Detection Method
★ 應用設計模式於 RPA 軟體 實作低維護成本的屬性面板自動修正功能★ 使用靜態分析偵測 JavaScript 應用程式中的 Race Condition
★ 基於物件導向與 Clean Code 概念進行 xDiva 重構與優化★ 基於xDIVA之利用關鍵影格將3D物件動畫化與即時保存的視覺化工具
★ CoolPCB:以控制點為主的電路板切割成形繪製自動化方法★ 利用軟體 UI 實現擴充功能 突破原始碼限制的工具
檔案 [Endnote RIS 格式]    [Bibtex 格式]    [相關文章]   [文章引用]   [完整記錄]   [館藏目錄]   [檢視]  [下載]
  1. 本電子論文使用權限為同意立即開放。
  2. 已達開放權限電子全文僅授權使用者為學術研究之目的,進行個人非營利性質之檢索、閱讀、列印。
  3. 請遵守中華民國著作權法之相關規定,切勿任意重製、散佈、改作、轉貼、播送,以免觸法。

摘要(中) 當軟體的開發起步時,也就等於軟體維護的開始。
軟體維護已經是開發者的日常了,而在軟體維護上最令開發者頭痛的就是接手前人遺留的程式碼 (Legacy Code),因為開發者對於遺留的程式碼的理解有如在秘境探險一般,不熟悉且難以窺探程式的全貌。在這種情況裡無論是新增功能、重構或是除錯都有著改變程式預期行為的風險,開發者很容易在修改程式碼時,遺漏掉原本應該連帶修改的部分導致程式出錯。而這種因為修改某處程式碼,導致其他處程式碼也需要連動修改的擴散現象,在軟體工程裡稱為漣漪效應。
漣漪效應是在描述一個事物造成的影響漸漸擴散的情形,就像是物體掉到水面上所產生的漣漪逐漸擴大一般,而軟體工程的漣漪效應起自於程式設計上相依關係的不良或是某種職責過於分散導致。在軟體維護時,開發者也常因為漣漪效應的關係錯估開發成本導致開發時程的延誤,或是埋下了不知何時會爆炸的臭蟲, 讓軟體日後的維護更加困難。所以如何預判漣漪效應的可能性以及將影響範圍展示出來,已經是開發者在軟體維護上迫切想要解決的問題。
而在以往漣漪效應的相關研究多著重在軟體度量指標 (Software Measurement) 的計算上,但是軟體度量指標所能呈現資訊有限,儘管在程序導向設計上能有顯著的指標性,在物件導向設計上提供的幫助仍有所侷限。尤其是在相依性表現上難以提供開發者實質的幫助,更遑論以此解決耦合力和內聚力為成因的漣漪效應所構成的困境。
為了解決漣漪效應帶給開發者的困擾,本論文提出物件導向程式分析視覺化工具Tetrapod,有別於過去以軟體度量為焦點的方式,嘗試透過物件導向程式設計核心概念「關係」去做漣漪效應的研究,利用物件導向設計中的各種關係剖析漣漪效應並將其視覺化,讓開發者可以透過Tetrapod了解漣漪效應的可能性以及影像擴散的範圍,解決它們在以往遇到漣漪效應的困境。
摘要(英) When development begin, the maintenance start.
Software maintenance is the daily life of developer. The most difficult job on maintenance is take over legacy code which need to discover and hard to know whole view of program. In the situation, whatever to add new feature, refactoring, debug, all of them may have risk to change expect behavior of program. Developer may accidentally lose the code need to be modify together and cause error of program when modify code. The observations that developer need to modify code which not the target together when modify code in somewhere in software engineering called ripple effect.
Ripple effect is described in the case of the impact caused by something gradually diffused which like ripple that caused by something fall in water. The ripple effect on software engineering is caused by bad design of dependency relationship or some responsibility too fragmented. Developers often misjudged development costs led because of ripple effect, then cause development process delay or leaving bugs as time bomb make future maintenance be more difficult. This is why develop need tools to predict possibility affected range caused by ripple effect.
In the past, most researches of ripple effect are focus on computing software metrics. But the information that software metric could display are limit, especially to display dependency relationship to aim developers. Not even talk to resolved ripple effect issue cause by awful coupling and cohesion.
To resolve trouble that ripple effect bring to developers, in this thesis, develop the tool call “Tetrapod”. To be different from the past that focused on software metrics, try to focus core concept of object-oriented design relationship. Analyze relationship of ripple effect and visualize it to help develop to know possibility affected range caused by ripple effect.  
關鍵字(中) ★ 視覺化
★ 物件導向
★ 漣漪效應
★ 程式理解
關鍵字(英)
論文目次 目錄
摘要 i
Abstract ii
誌謝 iii
目錄 iv
圖目錄 vi
表目錄 viii

第 1 章、 緒論 1
1-1 研究動機 1
1-2 問題描述 2
1-3 論文架構 3

第 2 章、 背景與相關研究 5
2-1 物件導向設計 5
2-2 設計原則 (DESIGN PRINCIPLES) 6
2-3 設計模式 (DESIGN PATTERN) 8
2-4 壞味道與重構 9
2-4-1 壞味道 9
2-4-2 重構方法 10
2-5 軟體度量 11
2-5-1 耦合力 11
2-5-2 內聚力 12
2-5-3 軟體度量指標 12
2-6 視覺化 15

第 3 章、 漣漪效應 17
3-1 修改漣漪 18
3-2 學習漣漪 20
3-2-1 假定 21
3-3 行為異動漣漪 24
3-4 總結 25

第 4 章、 系統實作 26
4-1 架構 26
4-2 視覺化原型 28
4-3 類別概念 29
4-4 基本設計原型 29
4-5 基礎視覺化實作 32
4-6 關係演算法 34
4-6-1 類別內部結構演算法 34
4-6-2 類別間職責關係演算法 34

第 5 章、 評估 38
5-1 評估方法 38
5-2 效能評估 38
5-3 實用案例 39
5-3-1 Tetrapod 39
5-3-2 KORAT 41

第 6 章、 結論與未來展望 46
6-1 結論 46
6-2 未來展望 46

參考文獻 48
參考文獻 [1] M. Lavall, x00E, and P. N. Robillard, "Why Good Developers Write Bad Code: An Observational Case Study of the Impacts of Organizational Factors on Software Quality," in 2015 IEEE/ACM 37th IEEE International Conference on Software Engineering, 2015, pp. 677-687.
[2] M. Tufano, F. Palomba, G. Bavota, R. Oliveto, M. Di Penta, A. De Lucia, et al., "When and why your code starts to smell bad," in Proceedings of the 37th International Conference on Software Engineering-Volume 1, 2015, pp. 403-414.
[3] R. C. Martin. (2003). The Principles of OOD. Available: http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod
[4] B. Meyer, Object-oriented software construction vol. 2: Prentice hall New York, 1988.
[5] B. H. Liskov and J. M. Wing, "A behavioral notion of subtyping," ACM Transactions on Programming Languages and Systems (TOPLAS), vol. 16, pp. 1811-1841, 1994.
[6] R. C. Martin, Agile software development: principles, patterns, and practices: Prentice Hall PTR, 2003.
[7] R. Martin, "OO design quality metrics," An analysis of dependencies, vol. 12, pp. 151-170, 1994.
[8] R. C. Martin, "The dependency inversion principle," C++ Report, vol. 8, pp. 61-66, 1996.
[9] K. Lieberherr. (1987 ). Law of Demeter (LoD). Available: http://www.ccs.neu.edu/research/demeter/demeter-method/LawOfDemeter/general-formulation.html
[10] E. Gamma, J. H. Vlissides, Richard, and R. Johnson, Design patterns: elements of reusable object-oriented software: Pearson Education India, 1995.
[11] D. Belcham and K. Baley, Brownfield application development in. NET: Manning Publications Co., 2010.
[12] M. Fowler, K. Beck, J. Brant, W. Opdyke, and D. Roberts, Refactoring - Improving the Design of Existing Code, 1999.
[13] W. F. Opdyke, "Refactoring: An aid in designing application frameworks and evolving object-oriented systems," in Proc. of 1990 Symposium on Object-Oriented Programming Emphasizing Practical Applications (SOOPPA), 1990.
[14] W. F. Opdyke, "Refactoring object-oriented frameworks," University of Illinois at Urbana-Champaign, 1992.
[15] E. Murphy-Hill and A. P. Black, "Refactoring tools: Fitness for purpose," Software, IEEE, vol. 25, pp. 38-44, 2008.
[16] E. R. Murphy-Hill and A. P. Black, "Why Don′t People Use Refactoring Tools?," in WRT, 2007, pp. 60-61.
[17] E. Murphy-Hill, C. Parnin, and A. P. Black, "How we refactor, and how we know it," Software Engineering, IEEE Transactions on, vol. 38, pp. 5-18, 2012.
[18] Y. Kataoka, T. Imai, H. Andou, and T. Fukaya, "A quantitative evaluation of maintainability enhancement by refactoring," in Software Maintenance, 2002. Proceedings. International Conference on, 2002, pp. 576-585.
[19] H. Gall, K. Hajek, and M. Jazayeri, "Detection of logical coupling based on product release history," in Software Maintenance, 1998. Proceedings., International Conference on, 1998, pp. 190-198.
[20] L. C. Briand, J. Wust, and H. Lounis, "Using coupling measurement for impact analysis in object-oriented systems," in Software Maintenance, 1999.(ICSM′99) Proceedings. IEEE International Conference on, 1999, pp. 475-482.
[21] S. R. Chidamber and C. F. Kemerer, "A metrics suite for object oriented design," Software Engineering, IEEE Transactions on, vol. 20, pp. 476-493, 1994.
[22] L. C. Briand, S. Morasca, and V. R. Basili, "Property-based software engineering measurement," Software Engineering, IEEE Transactions on, vol. 22, pp. 68-86, 1996.
[23] D. Spinellis, "Tool writing: a forgotten art?(software tools)," Software, IEEE, vol. 22, pp. 9-11, 2005.
[24] C. Marinescu, R. Marinescu, P. F. Mihancea, and R. Wettel, "iPlasma: An integrated platform for quality assessment of object-oriented design," in In ICSM (Industrial and Tool Volume, 2005.
[25] J. Rumbaugh, I. Jacobson, and G. Booch, Unified Modeling Language Reference Manual, The: Pearson Higher Education, 2004.
[26] Source Insight Available: http://www.sourceinsight.com/
[27] V. Winter, C. Reinke, and J. Guerrero, "Sextant: A tool to specify and visualize software metrics for Java source-code," in Emerging Trends in Software Metrics (WETSoM), 2013 4th International Workshop on, 2013, pp. 49-55.
[28] U. Erdemir, U. Tekin, and F. Buzluca, "E-Quality: A graph based object oriented software quality visualization tool," in Visualizing Software for Understanding and Analysis (VISSOFT), 2011 6th IEEE International Workshop on, 2011, pp. 1-8.
[29] R.-j. Li, "Modeling Ripple Effect of Coupling in Code Refactoring," National Central University, 2015.
指導教授 鄭永斌(Yung-Pin Cheng) 審核日期 2016-8-24
推文 facebook   plurk   twitter   funp   google   live   udn   HD   myshare   reddit   netvibes   friend   youpush   delicious   baidu   
網路書籤 Google bookmarks   del.icio.us   hemidemi   myshare   

若有論文相關問題,請聯絡國立中央大學圖書館推廣服務組 TEL:(03)422-7151轉57407,或E-mail聯絡  - 隱私權政策聲明