以作者查詢圖書館館藏 、以作者查詢臺灣博碩士 、以作者查詢全國書目 、勘誤回報 、線上人數:89 、訪客IP:3.144.43.194
姓名 鄧又晨(You-Chen Deng) 查詢紙本館藏 畢業系所 軟體工程研究所 論文名稱 基於物件導向與 Clean Code 概念進行 xDiva 重構與優化 相關論文 檔案 [Endnote RIS 格式] [Bibtex 格式] [相關文章] [文章引用] [完整記錄] [館藏目錄] [檢視] [下載]
- 本電子論文使用權限為同意立即開放。
- 已達開放權限電子全文僅授權使用者為學術研究之目的,進行個人非營利性質之檢索、閱讀、列印。
- 請遵守中華民國著作權法之相關規定,切勿任意重製、散佈、改作、轉貼、播送,以免觸法。
摘要(中) xDIVA(extreme Debugging Information Visualization Assistant) 為過去本實驗室持續開發的3D 視覺化程式除錯工具,該工具的主要目的是在除錯階段,根據使用者對資料結構的的理解,以直觀的方式將其進行視覺化,以提供使用者更快速理解現有的資料結構,進而進行後續的除錯或程式碼解釋工作。尤其在EDA(電子設計自動化)產業中,該工具為自動編排電路提供強大的視覺化輔助除錯功能。
然而,在EDA產業中,需要同時視覺化數以千計甚至萬計的電路元件,這對先前版本的xDIVA來說是一項巨大挑戰。主要原因是先前版本的xDIVA存在嚴重的效能問題,即使只是視覺化一百個物件,也會出現卡頓等問題,從而無法滿足EDA產業的應用需求。
為了解決這個問題,本論文對xDIVA效能的幾個關鍵點進行了分析,並根據軟體工程的原則進行了設計上的調整和重構。這些改進使xDIVA 能夠支援更大量的視覺化需求,同時提高了xDIVA的可讀性、可擴展性和可維護性。摘要(英) xDIVA (extreme Debugging Information Visualization Assistant) is a 3D visualization program developed by our laboratory for debugging purposes. The main objective of this tool is to provide users with an intuitive visualization of data structures during the debugging phase, based on their understanding. This visualization helps users quickly comprehend existing data structures, facilitating subsequent debugging and code interpretation tasks. Particularly in the Electronic Design Automation (EDA) industry, xDIVA offers powerful visual assistance for debugging automated circuit layouts.
However, in the EDA industry, visualizing thousands or even tens of thousands of circuit components simultaneously poses a significant challenge for previous versions of xDIVA. The main issue lies in the severe performance problems of previous versions. Even visualizing just a hundred objects would result in lag and other problems, making it inadequate to meet the application requirements of the EDA industry.
To address this problem, this paper analyzes several key performance points of xDIVA and applies design adjustments and refactoring based on software engineering principles. These improvements enable xDIVA to support larger-scale visualization demands while enhancing its readability, scalability, and maintainability.關鍵字(中) ★ 軟體重構
★ 效能優化
★ xDiva關鍵字(英) ★ xDiva
★ refactor論文目次 摘要 i
Abstract ii
目錄 iii
圖目錄 vi
表目錄 x
一、緒論 1
二、研究背景 5
2-1 xDIVA 5
2-1-1 Viewer 7
2-1-2 Message 與 Message Manager 8
2-1-3 Loading Center 9
2-2 Demo Driven Development (DDD) 11
2-3 技術債 12
2-3 Unity Profiler 13
三、問題描述與分析 15
3-1 缺乏文件 16
3-2 違反GitLab Flow 17
3-3 Bug 17
3-4 違反 Unity 撰寫原則 18
3-6 違反Clean Code 原則 21
3-7 演算法時間複雜度 23
3-8 xDiva 四大痛點 23
3-8-1 Message 24
3-8-2 Message Manage 25
3-8-3 Loading Center 27
3-8-4 Vm 29
3-9 光照與陰影的運算 30
四、系統重構與設計 31
4-1 重構步驟 31
4-1-1 釐清基本功能與職責 31
4-1-1 抽象化並改寫 32
4-2 重構Message與 Message Manager 33
4-3 重構 Vm 與Loading Center 38
五、效能測試與評估 41
5-1 FPS 效能測試 42
5-1-1 FPS 測試 2D Array 44
5-1-2 FPS 測試 Layers 45
5-2 Loading Time效能測試 46
5-2-1 Loading Time 2D Array 47
5-2-2 Loading Time Layers 48
5-3 Each Parse Time 50
5-4 可讀性、可維護性、可擴展性評估 51
六、結論與未來展望 54
七、參考資料 55參考文獻 [1] Cheng, Y. P., Chen, J. F., Chiu, M. C., Lai, N. W., & Tseng, C. C. (2008, October). xDIVA: a debugging visualization system with composable visualization metaphors. In Companion to the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications.
[2] Cheng, Y. P., Ku, C. Y., Pan, W. C., Yang, C., & Lin, T. S. (2016, May). Toward arbitrary mapping for debugging visualizations. In Proceedings of the 38th International Conference on Software Engineering Companion.
[3] Lieberherr, K., Holland, I., & Riel, A. (1988). Object-oriented programming: An objective sense of style. ACM Sigplan Notices.
[4] Hutton, D. M. (2009). Clean code: a handbook of agile software craftsmanship. Kybernetes.書籍:Working Effectively with Legacy Code
[5] Feathers, M. (2002). Working effectively with legacy code. Object Mentor, Inc. Available online at http://www. objectmentor. com. [Accessed 6 Jun. 2023].
[6] Manning, J. (2018). Unity行動開發實務(Mobile Game Developement with Unity) (1st ed.). 碁峰資訊股份有限公司.
[7] 賴祐吉. (2020). Unity 3D 遊戲設計實力講堂: 人氣遊戲這樣做! (第二版). 旗標科技股份有限公司.
[8] "Unity" [Online]. Available: https://unity.com/ [Accessed 6 Jun. 2023].
[9] "Unity的坑——避免用New來創建繼承於MonoBehaviour腳本的對象."CSDN. [Online]. Available: https://blog.csdn.net/alexhu2010q/article/details/106695166 [Accessed 6 Jun. 2023].
[10] ”Clean Code 無瑕的程式碼 | 閱讀筆記” [Online]. Available: https://medium.com/%E6%89%8B%E5%AF%AB%E7%AD%86%E8%A8%98/clean-code-index-51e209cc47db [Accessed 6 Jun. 2023].
[11] “Working Effectively with Legacy Code 讀後心得: 基礎知識篇” [Online]. Available: https://medium.com/fcamels-notes/working-effectively-with-legacy-code-%E8%AE%80%E5%BE%8C%E5%BF%83%E5%BE%97-1-a737ae32f69d [Accessed 6 Jun. 2023].
[12] Martin, R. C. (2000). Design principles and design patterns. Object Mentor, 1(34), 597.
[13] Griswold, W. G. (1992). Program restructuring as an aid to software maintenance.
[14] Singh, N. P., Sharma, B., & Sharma, A. (2022, October). Performance Analysis and Optimization Techniques in Unity 3D. In 2022 3rd International Conference on Smart Electronics and Communication (ICOSEC). IEEE.
[15] Hall, T., Beecham, S., Bowes, D., Gray, D., & Counsell, S. (2011). A systematic literature review on fault prediction performance in software engineering. IEEE Transactions on Software Engineering.
[16] Williams, L. G., & Smith, C. U. (1998, October). Performance evaluation of software architectures. In Proceedings of the 1st international workshop on Software and performance.
[17] Brown, N., Cai, Y., Guo, Y., Kazman, R., Kim, M., Kruchten, P., ... & Zazworka, N. (2010, November). Managing technical debt in software-reliant systems. In Proceedings of the FSE/SDP workshop on Future of software engineering research.
[18] Li, Z., Avgeriou, P., & Liang, P. (2015). A systematic mapping study on technical debt and its management. Journal of Systems and Software, 101, 193-220.
[19] “System Design: 系統架構基礎 - 可靠、可擴展、可維護” [Online]. Available: https://medium.com/bucketing/system-design-%E7%B3%BB%E7%B5%B1%E6%9E%B6%E6%A7%8B%E5%9F%BA%E7%A4%8E-%E5%8F%AF%E9%9D%A0-%E5%8F%AF%E6%93%B4%E5%B1%95-%E5%8F%AF%E7%B6%AD%E8%AD%B7-77903e2ce16a [Accessed 6 Jun. 2023].指導教授 鄭永斌 審核日期 2023-8-2 推文 facebook plurk twitter funp google live udn HD myshare reddit netvibes friend youpush delicious baidu 網路書籤 Google bookmarks del.icio.us hemidemi myshare