跳到主要內容

簡易檢索 / 詳目顯示

研究生: 蔡侑儒
Yu-Ju Tsai
論文名稱: Design a Pluggable Architecture for Layout Algorithms in xDIVA
指導教授: 鄭永斌
口試委員:
學位類別: 碩士
Master
系所名稱: 資訊電機學院 - 資訊工程學系
Department of Computer Science & Information Engineering
論文出版年: 2015
畢業學年度: 103
語文別: 中文
論文頁數: 57
中文關鍵詞: 插件化
相關次數: 點閱:7下載:0
分享至:
查詢本校圖書館目錄 查詢臺灣博碩士論文知識加值系統 勘誤回報
  • 當軟體開發到後期,程式架構達到一定的成熟度,為了支援更多元的功能與更高的擴充性,開發者往往會讓某些功能插件化(Pluggable),以便讓更多的開發者可以貢獻其智慧。插件化是軟體工程的最高境界,讓第三方的開發者可以獨立開發擴充元件而無須了解主系統的相關細節,顯著的例子包誇各種知名遊戲或是IDE(Eclipse、Visual Studio)。
    本篇論文針對本實驗室開發多年的xDIVA 3D視覺化除錯軟體進行功能擴充與架構改善,此套軟體可協助使用者停在中斷點時將各種資料結構視覺化成3D物件,供使用者藉由觀察此3D物件的變化來進行除錯。為了觀察物件之間的關係與變化,使用者需要利用適合的Layout將這些物件排列。市面上已經存在許多成熟且針對不同領域的Layout演算法或是函式庫,設計ㄧ套適合各個領域Layout皆可使用的架構是本篇論文所要努力的目標。
    但要將這些演算法程式加入xDIVA中會衍生許多問題,包括擴充性不佳、程式耦合性過高和開發成本過高…等等,以至於過去的xDIVA Layout功能未完善。本論文我分析了Model-View架構下我們所會遇到的困難,並提供了API來協助演算法插件化的開發,讓第三方(Layout 開發者)可獨立分別開發適用的Layout演算法在xDIVA上。藉由本論文的研究成果,現有的演算法不需更改太多的程式碼,便可套用至xDIVA中使用。使用者的安裝步驟也因此簡單許多,只需複製檔案至資料夾中,便可套用。此舉大幅降低了xDIVA開發者在Layout擴充及維護上的困難度和複雜度。


    When a software product survives the harsh test of real world, providing easy extensions and attracting developers to contribute often become the next goals to pursuit in software evolution. One major approach to achieve such a goal is to provide pluggable interface/API/SDK/framework so that components can be contributed from people not limited to the development team. Pluggable software is an ultimate dream of software engineering; the third-party developers can develop the plugin to enhance and enrich the features of the products. Some notable examples are games and IDEs like Eclipse and Visual Studio.
    xDIVA is a 3D Debugging visualization tool developed by our lab for years. xDiva can visualize any data structures to 3D objects at debugging break points. One important part of visualization is layout which arranges the 3D objects in the scene to fit the visualization need for different domains. There are too many domains that requires layout to arrange the visualization objects. Designing a pluggable framework for different layout algorithms is the goal of this thesis. However, designing such a pluggable framework for arbitrary layout algorithms from so many different domains is not easy and straightforward. In this thesis, we analyze the difficulties of the problem from model-view perspectives and then provide a pluggable framework that allows different layout algorithms to be easily added to xDIVA. In principle, third party developers can contribute their algorithms to xDiva without changing too many codes.

    內容 一. 緒論 1 二. 研究背景與相關研究 3 2.1 xDiva 3 2.1.1. 簡介 3 2.1.2. IDE端Plugin 4 2.1.3. xDIVA操作 5 2.2. 可插件化軟體(Pluggable Software) 7 2.3. iGraph 9 2.3.1. 簡介 9 2.3.2. iGraph演算法函式呼叫格式 9 2.4. Graphviz 11 2.4.1. 簡介 11 2.4.2. DOT圖形描述語言 11 三. 視覺化 layout 的多樣性與複雜性 13 3.1. Model - View架構 13 3.2. 舊版Layout演算法實作 16 3.3. 針對資料結構設計演算法 18 3.4. 舊結構下存在的問題 21 四. 研究方法 23 4.1. 問題分析與解決 23 4.1.1. xDIVA軟體架構設計 23 4.1.2. Model-View架構限制 24 4.1.3. 充足的xDIVA資訊 25 4.1.4. xDIVA上Layout操作流程 28 4.2. 系統實作 32 4.2.1. xDIVA系統架構 32 4.2.2. Layout設定檔 33 4.2.3. Layout演算法程式架構 36 4.2.4. xDIVA Layout API 37 4.3. 程式碼改善 40 五. 結論與討論 43 六. 參考文獻 45  

    [1-33]

    [1] "xDIVA," http://oolab.csie.ncu.edu.tw/xDIVA/.
    [2] 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,” 2008, pp. 807-810.
    [3] Y.-P. Cheng, H.-Y. Tsai, C.-S. Wang, and C.-H. Hsueh, “xDIVA: automatic animation between debugging break points,” 2010, pp. 221-222.
    [4] H.-W. Liou, "Support Visual Debugging in Electronic Design Automation Software by xDIVA," 2013.
    [5] "igraph–The network analysis package," http://igraph.org/redirect.html.
    [6] "Graphviz - Graph Visualization Software," http://www.graphviz.org/Home.php.
    [7] Q. Wang, W. Wang, R. Brown, K. Driesen, B. Dufour, L. Hendren, and C. Verbrugge, “EVolve: an open extensible software visualization framework,” in Proceedings of the 2003 ACM symposium on Software visualization, San Diego, California, 2003, pp. 37-ff.
    [8] E. Gamma, R. Helm, R. Johnson, and J. Vlissides, Design patterns: elements of reusable object-oriented software: Pearson Education, 1994.
    [9] D. Kharrat, and S. S. Quadri, "Self-registering plug-ins: an architecture for extensible software." pp. 1324-1327.
    [10] J. Mayer, I. Melzer, and F. Schweiggert, "Lightweight plug-in-based application development," Objects, Components, Architectures, Services, and Applications for a Networked World, pp. 87-102: Springer, 2003.
    [11] M. S. El-Nasr, and B. K. Smith, “Learning through game modding,” Computers in Entertainment (CIE), vol. 4, no. 1, pp. 7, 2006.
    [12] D. Nieborg, "Am I mod or not?—An analysis of first person shooter modification culture."
    [13] T. M. J. Fruchterman, and E. M. Reingold, “Graph drawing by force-directed placement,” Softw. Pract. Exper., vol. 21, no. 11, pp. 1129-1164, 1991.
    [14] E. Gansner, E. Koutsofios, and S. North, Drawing graphs with dot, Technical report, AT&T Research. URL http://www. graphviz. org/Documentation/dotguide. pdf, 2006.
    [15] T. Panas, R. Lincke, and W. Löwe, "Online-configuration of software visualizations with Vizz3D." pp. 173-182.
    [16] J. Mackinlay, “Automating the design of graphical presentations of relational information,” ACM Trans. Graph., vol. 5, no. 2, pp. 110-141, 1986.
    [17] J. J. van Wijk, “Views on Visualization,” Visualization and Computer Graphics, IEEE Transactions on, vol. 12, no. 4, pp. 421-432, 2006.
    [18] "OGRE – Open Source 3D Graphics Engine," http://www.ogre3d.org/.
    [19] "Qt | Cross-platform application & UI development framework," http://www.qt.io/.
    [20] M. Tory, and T. Möller, “Human factors in visualization research,” Visualization and Computer Graphics, IEEE Transactions on, vol. 10, no. 1, pp. 72-84, 2004.
    [21] "JsonCpp - JSON data format manipulation library," https://github.com/open-source-parsers/jsoncpp.
    [22] "DOT (graph description language) "; https://en.wikipedia.org/wiki/DOT_%28graph_description_language%29.
    [23] N. Akhtar, "Social Network Analysis Tools." pp. 388-392.
    [24] R. Chatley, S. Eisenbach, and J. Magee, “Modelling a framework for plugins,” SAVCBS 2003 Specification and Verification of Component-Based Systems, pp. 49, 2003.
    [25] G. Csardi, and T. Nepusz, “The igraph software package for complex network research,” InterJournal, Complex Systems, vol. 1695, no. 5, pp. 1-9, 2006.
    [26] J. Ellson, E. R. Gansner, E. Koutsofios, S. C. North, and G. Woodhull, “Graphviz - Open Source Graph Drawing Tools,” 2001, pp. 483-484.
    [27] J. Ellson, E. R. Gansner, E. Koutsofios, S. C. North, and G. Woodhull, "Graphviz and Dynagraph -- Static and Dynamic Graph Drawing Tools," Graph Drawing Software, Mathematics and Visualization M. Junger and P. Mutzel, eds., pp. 127--148, Berlin/Heidelberg: Springer-Verlag, 2004.
    [28] I. Herman, G. Melançon, and M. S. Marshall, “Graph visualization and navigation in information visualization: A survey,” Visualization and Computer Graphics, IEEE Transactions on, vol. 6, no. 1, pp. 24-43, 2000.
    [29] T. Kamada, and S. Kawai, “An Algorithm for Drawing General Undirected Graphs,” Inf. Process. Lett., vol. 31, no. 1, pp. 7-15, /, 1989.
    [30] S. C. North, and E. Koutsofios, "Applications of graph visualization." pp. 235-235.
    [31] N. Paspallis, R. Rouvoy, P. Barone, G. A. Papadopoulos, F. Eliassen, and A. Mamelli, "A pluggable and reconfigurable architecture for a context-aware enabling middleware system," On the Move to Meaningful Internet Systems: OTM 2008, pp. 553-570: Springer, 2008.
    [32] J. B. Rosenberg, How debuggers work: algorithms, data structures, and architecture: John Wiley & Sons, Inc., 1996.
    [33] K. Sugiyama, S. Tagawa, and M. Toda, “Methods for visual understanding of hierarchical system structures,” Systems, Man and Cybernetics, IEEE Transactions on, vol. 11, no. 2, pp. 109-125, 1981.

    QR CODE
    :::