Skip navigation

DSpace

機構典藏 DSpace 系統致力於保存各式數位資料(如:文字、圖片、PDF)並使其易於取用。

點此認識 DSpace
DSpace logo
English
中文
  • 瀏覽論文
    • 校院系所
    • 出版年
    • 作者
    • 標題
    • 關鍵字
    • 指導教授
  • 搜尋 TDR
  • 授權 Q&A
    • 我的頁面
    • 接受 E-mail 通知
    • 編輯個人資料
  1. NTU Theses and Dissertations Repository
  2. 電機資訊學院
  3. 資訊工程學系
請用此 Handle URI 來引用此文件: http://tdr.lib.ntu.edu.tw/jspui/handle/123456789/89069
完整後設資料紀錄
DC 欄位值語言
dc.contributor.advisor李允中zh_TW
dc.contributor.advisorJonathan Leeen
dc.contributor.author梁峻瑞zh_TW
dc.contributor.authorChun-Jui Liangen
dc.date.accessioned2023-08-16T17:00:02Z-
dc.date.available2023-11-09-
dc.date.copyright2023-08-16-
dc.date.issued2023-
dc.date.submitted2023-08-08-
dc.identifier.citation[1] Clang. https://clang.llvm.org/.
[2] Cmake. https://cmake.org/.
[3] Crow. https://crowcpp.org/master/.
[4] Llvm. https://llvm.org/.
[5] Soot. http://soot-oss.github.io/soot/.
[6] S.-W. Huang. Towards a solution to iot interoperability through reverse engineering. Master’s thesis, National Taiwan University, 2017.
[7] W.-L. Shih. Construct service components from java-based open source projects. Mas-ter’s thesis, National Taiwan University, 2022.
-
dc.identifier.urihttp://tdr.lib.ntu.edu.tw/jspui/handle/123456789/89069-
dc.description.abstract在現今的系統開發中,單體式架構(Monolithic)一直是主流的開發方法,但以 單體式方式來開發系統,相對也會產生許多缺點,例如:後期開發成本高、程式 碼依賴性高...等。然而在系統完成後,我們也會需要對系統長期的維護及持續會 有新需求的開發,在新的需求一直進來時,也會導致系統變得更大也更複雜,所 以在面臨這些後續開發上的問題,我們必須有個方法來防止或降低以上單體式架 構所可能產生的問題。
因此在本研究中,我們提出了一個流程能夠自動化將開源 C++ 專案轉變成為 服務元件,目的是讓單體式的架構能切分到以方法為單位,讓整個系統可以更有 效維護及重組服務,此流程包含以下步驟:辨識程式間的相依關係;從原始碼解析方 法資訊;切分程式主體架構;重新組裝服務元件。
zh_TW
dc.description.abstractIn modern system development, monolithic architecture has been the mainstream approach. However, developing systems using a monolithic architecture can lead to several drawbacks, such as higher post-development costs and increased code dependencies. As the system reaches completion, long-term maintenance and continuous development to meet new requirements become necessary. As new requirements keep coming in, the system can become larger and more complex, posing challenges for subsequent development. Therefore, in the face of these challenges, we need a method to prevent or reduce the potential issues arising from a monolithic architecture.
Therefore, in this research, we propose a process that can automatically transform open-source C++ projects into service components. The goal is to break down the monolithic architecture into individual methods, allowing the entire system to be more efficiently maintained and reassembled as services. This process includes the following steps: identifying interdependencies between the code, parsing method information from the source code, partitioning the program’s main structure, and reassembling the service components.
en
dc.description.provenanceSubmitted by admin ntu (admin@lib.ntu.edu.tw) on 2023-08-16T17:00:02Z
No. of bitstreams: 0
en
dc.description.provenanceMade available in DSpace on 2023-08-16T17:00:02Z (GMT). No. of bitstreams: 0en
dc.description.tableofcontentsContents
口試委員審定書 i
誌謝 ii
摘要 iii
Abstracts iv
List of Figures ix
List of Tables xi
Chapter 1 Introduction 1
Chapter 2 Related Work 3
2.1 BackgroundWork............................. 3
2.1.1 ClangAST ............................ 3
2.1.2 Dependency............................ 3
2.1.3 WebFramework.......................... 4
2.2 RelatedWork............................... 4
2.2.1 Soot................................ 4
2.2.2 Reveal............................... 5
2.2.3 Repack............................... 5
Chapter 3 Service Component from C++ Open Source .......... 6
3.1 SystemArchitecture ........................... 7
3.2 GenerateDependencyGraph....................... 8
3.2.1 Clang-CreateASTTree..................... 8
3.2.2 CSoot-CPPCodeParser .................... 9
3.2.3 CReveal-MappingRelation................... 11
3.3 CodeSplitting............................... 14
3.3.1 CodeStrutureFromAST .................... 16
3.3.2 CodeSplite ............................ 19
3.4 CodeBodyDatabase........................... 20
Chapter 4 Repack Service Components .......... 25
4.1 WebFramework.............................. 25
4.2 InvokerTracing .............................. 27
4.3 MethodDependencyCollection ..................... 29
4.4 CodeBodyCombination......................... 30
4.5 Output................................... 32
Chapter 5 Demonstration ............. 33
5.1 ControllerRepackDemonstration .................... 35
5.2 UserServiceRepackDemonstration ................... 37
5.3 ItemServiceRepackDemonstration ................... 38
Chapter 6 Conclusion ............. 39
6.0.1 Benefits .............................. 39
6.0.2 FutureWork............................ 40
Bibliography ............... 41

List of Figures
3.1 SystemArchitecture ........................... 7
3.2 ClangAST ................................ 9
3.3 CSootStructure.............................. 10
3.4 CSootDump ............................... 11
3.5 DependencyMapping........................... 13
3.6 DependencyGraph ............................ 14
3.7 CodeBodyAST ............................. 16
3.8 CodeSplittingClassDiagram ...................... 18
3.9 CodeBodySplitting ........................... 19
3.10 CodeBodyIntoDB ........................... 21 3.11CodeBodySchema............................ 23
4.1 RepackControllerDependency ..................... 26
4.2 RepackController............................. 27
4.3 RepackInvokerExample......................... 28
4.4 RepackAdjacencyList .......................... 29
4.5 RepackDFS................................ 30
4.6 RepackAscending............................. 31
4.7 RepackOutput .............................. 32
5.1 DemoExampleCodeStructure ..................... 34
5.2 RepackDemoOutput .......................... 35
5.3 RepackController............................. 36
5.4 RepackUserService............................ 37
5.5 RepackItemService............................ 38

List of Tables
3.1 DependencyTable ............................ 12
3.2 CodeBodySturcture........................... 15
-
dc.language.isoen-
dc.subject程式碼生成zh_TW
dc.subject網路應用程式架構zh_TW
dc.subject服務元件zh_TW
dc.subjectCode generationen
dc.subjectweb application frameworken
dc.subjectService componenten
dc.title基於開源 C++ 專案的服務元件建構zh_TW
dc.titleConstructing C++ -Based Service Components From Open Source Projectsen
dc.typeThesis-
dc.date.schoolyear111-2-
dc.description.degree碩士-
dc.contributor.oralexamcommittee郭忠義;劉建宏;薛念林;李文廷zh_TW
dc.contributor.oralexamcommitteeJong-Yih Kuo;Chien-Hung Liu;Nien-Lin Hsueh;Wen-Tin Leeen
dc.subject.keyword服務元件,程式碼生成,網路應用程式架構,zh_TW
dc.subject.keywordService component,Code generation,web application framework,en
dc.relation.page41-
dc.identifier.doi10.6342/NTU202303414-
dc.rights.note同意授權(全球公開)-
dc.date.accepted2023-08-10-
dc.contributor.author-college電機資訊學院-
dc.contributor.author-dept資訊工程學系-
顯示於系所單位:資訊工程學系

文件中的檔案:
檔案 大小格式 
ntu-111-2.pdf4.49 MBAdobe PDF檢視/開啟
顯示文件簡單紀錄


系統中的文件,除了特別指名其著作權條款之外,均受到著作權保護,並且保留所有的權利。

社群連結
聯絡資訊
10617臺北市大安區羅斯福路四段1號
No.1 Sec.4, Roosevelt Rd., Taipei, Taiwan, R.O.C. 106
Tel: (02)33662353
Email: ntuetds@ntu.edu.tw
意見箱
相關連結
館藏目錄
國內圖書館整合查詢 MetaCat
臺大學術典藏 NTU Scholars
臺大圖書館數位典藏館
本站聲明
© NTU Library All Rights Reserved