| 研究生: |
陳盈宏 Ying-Hong Chen |
|---|---|
| 論文名稱: |
利用程式重組技術合併兩個具部份重疊函式之程式專案案例研究 A Case Study on Merging Two Projects with Partial Overlapping Functions Using Restructuring Techniques |
| 指導教授: |
梁德容
De-Rong Liang 王尉任 Wei-Jen Wang |
| 口試委員: | |
| 學位類別: |
碩士 Master |
| 系所名稱: |
資訊電機學院 - 資訊工程學系 Department of Computer Science & Information Engineering |
| 論文出版年: | 2018 |
| 畢業學年度: | 106 |
| 語文別: | 中文 |
| 論文頁數: | 49 |
| 中文關鍵詞: | KVM 、虛擬機器 、容錯 、程式重組 、軟體工程 |
| 外文關鍵詞: | KVM, Virtual Machine, Fault Tolerance, Restructuring, Software Engineering |
| 相關次數: | 點閱:23 下載:0 |
| 分享至: |
| 查詢本校圖書館目錄 查詢臺灣博碩士論文知識加值系統 勘誤回報 |
在軟體專案管理中,訂製軟體需求規格是很重要的關鍵,實務中便是根據需求規格進行設計和開發。然而,如果在完成實作後才發生改變需求的狀況,其所需的代價端看要如何選擇什麼樣的解決策略。如果是在現有架構下進行重組重構、或是整體重新設計軟體架構,所需要的人力時間成本是各不相同的。
M-FTVM是中央大學資訊工程研究所平行與分散式運算實驗室提出針對網路服務的容錯系統架構。在進行相關研究時發現,商用虛擬化軟體VMware可以在虛擬機失效轉移後,無痛地繼續對虛擬機進行容錯保護。但M-FTVM在設計之初,便已分歧為主要端和備援端不同的需求,依各自的需求進行開發。因此在現行設計下,無法在失效轉移後繼續對虛擬機提供容錯保護。如果要重新開啟容錯,必須關閉再重啟虛擬機,而虛擬機上的網路服務勢必會中斷。為了解決這樣新的需求,將主要端和備援端程式合併會是必要條件。儘管主要端和備援端是基於同一份開源專案,雖然它們功能相異但當中仍具有部分重疊函式,這樣特殊狀況對於合併可能會造成未知的衝突。因此,本研究基於已知的重組方法,提出了一個有系統地合併方法得保證行為和正確性,並應用此方法成功合併了M-FTVM主要端和備援端,並添加無痛重啟容錯的功能。
Regarding software project management, defining software requirement specifica-tion(SRS) is the most important step, that’s what programmers’ implementation de-pending on during the development practice. But what if the requirement was modified after implementation completed, and what’s the cost of corresponding strategy? It takes different man-month cost if refactoring/restructuring under current architecture or re-designing the entire software architecture.
M-FTVM is a virtual machine fault-tolerance mechanism based on KVM pro-posed by NCU PDC-Lab. However, when surveying the fault tolerance related works, we found the commercial virtualization software VMware can re-active the fault toler-ance mechanism with less penalty after VM failover. On the other hand, M-FTVM had branched into Primary and Backup from the initial design because different requirement. Which means, under current designed architecture, M-FTVM cannot re-active fault-tolerance mechanism directly after failover. if we would like to re-active fault-tolerance mechanism, it has to re-create VM, then the service on the VM must in-terrupt. To solve this new requirement for M-FTVM, merging Primary and Backup program would be necessary. In spite of Primary/Backup is based on the same open-source project and different functionality, but there are still partial-overlapped functions in each other, these cases might cause unknown conflict during mergence. Therefore, this paper proposed a systematically merging methodology based on known restructuring techniques to preserve the behavior and correctness. By applying this method, we merged M-FTVM successfully, added the function of re-active fault-tolerance mechanism directly after failover.
[1] T. C. Bressoud and F. B. Schneider, "Hypervisor-based Fault Tolerance," ACM Transactions on Computer Systems (TOCS), vol. 14, no. 1, pp. 80-107, 1996.
[2] C. H. Chen, "基於KVM的網路服務高可靠性容錯同步架構," Department of Computer Science, National Central University, 2014.
[3] S. M. Lyu, "基於KVM的網路服務高可靠性容錯同步架構," Department of Computer Science, National Central University, 2015.
[4] W. L. Fang, "基於KVM虛擬機器的記憶體層級同步之網路服務容錯架構技術深化," Department of Computer Science, National Central University, 2017.
[5] T. Mens and T. Tourwé, "A Survey of Software Refactoring," IEEE Transactions on Software Engineering, vol. 30, no. 2, pp. 126-139, June 2004.
[6] M. Weiser, "Program slicing," in Proceedings of The 5th International Conference on Software Engineering, San Diego, California, USA, 1981, pp. 439-449: IEEE Press Piscataway, NJ, USA.
[7] N. Wirth, "Program Development by Stepwise Refinement," Communications of The ACM, vol. 14, no. 4, pp. 221-227, 1971.
[8] M. W. Godfrey and L. Zou, "Using Origin Analysis to Detect Merging And Splitting of Source Code Entities," IEEE Transactions on Software Engineering, vol. 31, no. 2, pp. 166-181, March 2005.
[9] T. Hirt, "Kvm-the kernel-based virtual machine," Red Hat Inc, 2010.
[10] KVM - Kernel-based Virtual Machine [Online]. Available: www.linux-kvm.org
[11] M. Zabaljáuregui, "Hardware Assisted Virtualization Intel Virtualization Technology," June 2008, Available: http://lettieri.iet.unipi.it/virtualization/Vtx.pdf.
[12] AMD. Putting Server Virtualization to Work [Online]. Available: static.redhat.com/legacy/f/pdf/virtualization/amd_Virtualization_WP.pdf
[13] F. Bellard, "QEMU, a Fast And Portable Dynamic Translator," in USENIX Annual Technical Conference, FREENIX Track, 2005, vol. 41, p. 46.
[14] B. Cully, G. Lefebvre, D. Meyer, M. Feeley, N. Hutchinson, and A. Warfield, "Remus: High availability via Asynchronous Virtual Machine Replication," in Proceedings of The 5th USENIX Symposium on Networked Systems Design and Implementation, 2008, pp. 161-174: San Francisco.
[15] QEMU. Features/MicroCheckpointing. Available: wiki.qemu.org/Features/MicroCheckpointing
[16] C. Clark et al., "Live Migration of Virtual Machines," in Proceedings of The 2nd Conference on Symposium on Networked Systems Design & Implementation, 2005, vol. 2, pp. 273-286: USENIX Association.
[17] Y. Tamura, K. Sato, S. Kihara, and S. Moriai, "Kemari: Virtual Machine Synchronization for Fault Tolerance," in Proc. USENIX Annu. Tech. Conf.(Poster Session), Boston, USA, 2008: Citeseer.
[18] E. N. Elnozahy, L. Alvisi, Y.-M. Wang, and D. B. Johnson, "A Survey of Rollback-Recovery Protocols in Message-Passing Systems," ACM Computing Surveys (CSUR), vol. 34, no. 3, pp. 375-408, September 2002.
[19] M. Xu, V. Malyugin, J. Sheldon, G. Venkitachalam, and B. Weissman, "Retrace: Collecting Execution Trace With Virtual Machine Deterministic Replay," in Proceedings of The 3rd Annual Workshop on Modeling, Benchmarking and Simulation, MoBS, 2007, vol. 3: Citeseer.
[20] VMware. VMware vSphere 6 Fault Tolerance Architecture and Performance, TECHNICAL WHITE PAPER [Online]. Available: www.vmware.com/files/pdf/techpaper/VMware-vSphere6-FT-arch-perf.pdf
[21] P. J. Tsao, Y. F. Sun, L. H. Chen, and C. Y. Cho, "Efficient Virtualization-Based Fault Tolerance," in International Computer Symposium (ICS), 2016, pp. 114-119: IEEE.
[22] R. Jhawar, V. Piuri, and M. Santambrogio, "Fault tolerance Management in Cloud Computing: A System-level Perspective," IEEE Systems Journal, vol. 7, no. 2, pp. 288-297, June 2013.
[23] Y. Dong et al., "COLO: COarse-grained LOck-stepping Virtual Machines for Non-stop Service," in Proceedings of The 4th Annual Symposium on Cloud Computing, Santa Clara, California, 2013, no. 3: ACM New York, NY, USA.
[24] QEMU. Features/COLO. Available: wiki.qemu.org/Features/COLO