簡易檢索 / 詳目顯示

研究生: 魏子丹
Wei, Tzu­-Tan
論文名稱: 為應用程式介面遷移排程預測遷移成本
Forecasting API Migration Cost on Migration Scheduling
指導教授: 焦惠津
Jiau, Hewi-Jin Christine
學位類別: 碩士
Master
系所名稱: 電機資訊學院 - 電腦與通信工程研究所
Institute of Computer & Communication Engineering
論文出版年: 2019
畢業學年度: 107
語文別: 英文
論文頁數: 37
中文關鍵詞: 應用程式介面演進應用程式介面遷移應用程式介面遷移成本
外文關鍵詞: API Evolution, API Migration, API Migration Cost
相關次數: 點閱:47下載:0
分享至:
查詢本校圖書館目錄 查詢臺灣博碩士論文知識加值系統 勘誤回報
  • 客戶端開發者 (Client developers) 需要不斷升級框架/函式庫 (Framework/Library),此後簡稱為框架 (Framework),至最新版本以最大化使用框架的好處。
    由於升級框架需要花費應用程式介面遷移成本 (API migration cost),因此客戶端開發者只有在框架推出吸引他們的新版本時才會升級框架。
    由於應用程式介面遷移成本 (API migration cost) 會因為框架的演進而隨著時間增加,因此延遲升級框架可能阻礙日後客戶端版本的開發。
    此外,客戶端開發者缺乏框架何時會推出新引他們的新版本的相關知識。
    因此客戶端開發者難以規劃應該在開發哪一個新的客戶端版本時升級框架。

    在這篇論文中提出一個名叫做「應用程式介面遷移影響」的屬性,用於描述升級框架所需的成本占新客戶端版本的開發成本的百分比。
    為了使客戶端開發者能夠預測「應用程式介面遷移影響」的數值,此論文提出能夠影響該屬性數值的要素,又名「遷移影響要素」。
    此外,為了輔助客戶端開發者規劃升級框架的時機,此論文提出「客戶端與框架發布模型」。
    接著,此論文透過進行一個實證研究來評估「應用程式介面遷移影響」、「遷移影響要素」以及「客戶端與框架發布模型」。
    結果顯示,「應用程式介面遷移影響」的數值在有升級框架的客戶端版本開發過程中可能高過百分之二十。
    此外,「應用程式介面遷移影響」與「遷移影響要素」之間的相關性被用來建構一個流程圖用於預測潛在「應用程式介面遷移影響」的數值。
    之後,該流程圖與「客戶端與框架發布模型」被使用在 Spring Boot 這個客戶端專案上以示範如何使用它們來規劃升級框架。
    透過「應用程式介面遷移影響」以及「遷移影響要素」,客戶端開發者可以預測應用程式介面遷移成本是否會阻礙日後客戶端版本的開發。
    如果潛在「應用程式介面遷移影響」的數值過高,客戶端開發者可以使用「客戶端與框架發布模型」來規劃升級框架。

    Client developers need to keep updating frameworks/libraries , hereafter referred to as "frameworks", to the latest framework versions to take full advantage of reusing frameworks.
    Because of API migration cost, client developers only update frameworks when the new framework versions are attractive to them.
    Postponing updating frameworks may hinder the release of new client versions due to increasing API migration cost.
    Furthermore, client developers lack the knowledge of when will frameworks release new framework versions attractive to them.
    Therefore, it is difficult for client developers to schedule the updates of frameworks for new client releases.

    In this thesis, an attribute, API migration impact (AMI), to quantify the percentage of client version cost spent on API migration.
    Factors related to the value of AMI (AMI Factors) are proposed for client developers to forecast the value of potential AMI.
    Besides, client framework release model (CFR Model) is proposed to assist client developers to schedule the updates of frameworks for new client releases.
    An empirical study is conducted to evaluate AMI, AMI Factors and CFR Model.
    The results show that the value of AMI in a client release may be higher than 20% while updating frameworks.
    Besides, a flow chart is constructed with the relations between AMI and AMI Factors to forecast the value of potential AMI.
    After that, the flow chart and CFR Model are applied to Spring Boot to demonstrate how to schedule the updates of frameworks with them.
    With AMI and AMI Factors, client developers can forecast if API migration cost will hinder the development of the client.
    If the value of potential AMI is too high, client developers can schedule the updates of frameworks with CFR Model.

    Table of Contents 摘要 i Abstract ii Acknowledgements iii Table of Contents iv List of Tables vi List of Figures vii Chapter 1. Introduction 1 Chapter 2. Preliminary Analysis 4 2.1. API Migration Impact . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.1.1. Definition of API Migration Impact . . . . . . . . . . . . . . . . . 5 2.1.2. AMI Forecast Model: API Migration Impact Forecast Model . . . . 5 2.1.3. AMI Factors: Factors Influencing API Migration Impact . . . . . . 6 2.2. CFR Model: Client Framework Release Model . . . . . . . . . . . . . . . 8 Chapter 3. Empirical Study 11 3.1. Context Selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.2. Measurement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3.3. Data Collection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 3.4. Research Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.4.1. Research Question 1 . . . . . . . . . . . . . . . . . . . . . . . . . 16 3.4.2. Research Question 2 . . . . . . . . . . . . . . . . . . . . . . . . . 16 3.4.3. Research Question 3 . . . . . . . . . . . . . . . . . . . . . . . . . 19 3.4.4. Research Question 4 . . . . . . . . . . . . . . . . . . . . . . . . . 21 Chapter 4. Evaluation 23 4.1. Verification of Context Selection . . . . . . . . . . . . . . . . . . . . . . . 23 4.2. Verification of AMI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 4.3. Verification of Correlations between AMI and AMI Factors . . . . . . . . . 26 Chapter 5. Related Work 27 Chapter 6. Conclusion 30 References 32 Chapter 7. Appendix 34 7.1. Client Releases of Subject Projects . . . . . . . . . . . . . . . . . . . . . . 34

    References
    [1] Apache commons configuration. https://mvnrepository.com/artifact/commons-configuration/commons-configuration, 2019. [Online; accessed Feb. 2019].
    [2] Eclipse java development tools (jdt). https://www.eclipse.org/jdt/, 2019. [Online; accessed Feb. 2019].
    [3] Fastjson. https://mvnrepository.com/artifact/com.alibaba/fastjson, 2019. [Online; accessed Feb. 2019].
    [4] Javadoc.io. https://www.javadoc.io/, 2019. [Online; accessed Feb. 2019].
    [5] Jboss logging 3. https://mvnrepository.com/artifact/org.jboss.logging/jboss-logging, 2019. [Online; accessed Feb. 2019].
    [6] Pypl popularity of programming language. https://pypl.github.io/PYPL.html, 2019. [Online; accessed Feb. 2019].
    [7] Springframework boot. https://mvnrepository.com/artifact/org.springframework.boot, 2019. [Online; accessed Feb. 2019].
    [8] Veronika Bauer and Lars Heinemann. Understanding API Usage to Support Informed Decision Making in Software Maintenance. In 2012 16th European Conference on Software Maintenance and Reengineering, pages 435–440, 2012.
    [9] Gabriele Bavota, Mario Linares­Vásquez, Carlos Eduardo Bernal­Cárdenas, Massimiliano Di Penta, Rocco Oliveto, and Denys Poshyvanyk. The Impact of API Change­ and Fault­Proneness on the User Ratings of Android Apps. Journal of IEEE Transactions on Software Engineering, 41:384–407, Apr. 2015.
    [10] Fernando López de la Mora and Sarah Nadi. An Empirical Study of Metric­Based Comparisons of Software Libraries. In Proceedings of the 14th International Conference on Predictive Models and Data Analytics in Software Engineering, pages 22–31, 2018.
    [11] Danny Dig and Ralph Johnson. How Do APIs Evolve? A Story of Refactoring. Journal of Software Maintenance and Evolution: Research and Practice, 18:83–107, Mar./Apr. 2006.
    [12] Tiago Espinha, Andy Zaidman, and Hans­Gerhard Gross. Web API Growing Pains: Stories from Client Developers and Their Code. In Journal of 2014 Software Evolution Week­IEEE Conference on Software Maintenance, Reengineering, and Reverse Engineering, pages 84–93, 2014.
    [13] André Hora, Romain Robbes, Nicolas Anquetil, Anne Etien, Stéphane Ducasse, and Marco Tulio Valente. How Do Developers React to API Evolution? The Pharo Ecosystem Case. In Journal of IEEE International Conference on Software Maintenance and Evolution, pages 251–260, 2015.
    [14] André Hora, Romain Robbes, Marco Tulio Valente, Nicolas Anquetil, Anne Etien, and Stéphane Ducasse. How Do Developers React to API Evolution? A Large­Scale Empirical Study. Journal of Software Quality, 26:161–191, Mar. 2018.
    [15] Eirini Kalliamvakou, Georgios Gousios, Kelly Blincoe, Leif Singer, Daniel M. German, and Daniela Damian. The Promises and Perils of Mining GitHub. In Proceedings of the 11th Working Conference on Mining Software Repositories, pages 92–101, 2014.
    [16] Ekrem Kocaguneli, Ayse T. Misirli, Bora Caglayan, and Ayse Bener. Experiences on Developer Participation and Effort Estimation. In 2011 37th EUROMICRO Conference on Software Engineering and Advanced Applications, pages 419–422, 2011.
    [17] Raula Gaikovina Kula, Daniel M. German, Ali Ouni, Takashi Ishio, and Katsuro Inoue. Do Developers Update Their Library Dependencies? Empirical Software Engineering, 23:384–417, Feb. 2018.
    [18] Mario Linares­Vásquez, Gabriele Bavota, Carlos Bernal­Cárdenas, Massimiliano Di Penta, Rocco Oliveto, and Denys Poshyvanyk. API Change and Fault Proneness: A Threat to the Success of Android Apps. In Proceedings of the 2013 9th Joint Meeting on Foundations of Software Engineering, pages 477–487, 2013.
    [19] Dong Qiu, Bixin Li, and Hareton Leung. Understanding the API Usage in Java. Infor­
    mation and Software Technology, 73:81–100, May. 2016.
    [20] Romain Robbes, Mircea Lungu, and David Röthlisberger. How Do Developers React to API Deprecation?: the Case of a Smalltalk Ecosystem. In Proceedings of the ACM SIGSOFT 20th International Symposium on the Foundations of Software Engineering, pages 11 – 16, 2012.
    [21] Anand Ashok Sawant, Mauricio Aniche, Arie van Deursen, and Alberto Bacchelli. Understanding Developers’ Needs on Deprecation as a Language Feature. In Journal of 2018 IEEE/ACM 40th International Conference on Software Engineering, pages 561571, 2018.
    [22] Anand Ashok Sawant, Romain Robbes, and Alberto Bacchelli. On the Reaction to Deprecation of 25,357 Clients of 4+1 Popular Java APIs. In Journal of 2016 IEEE International Conference on Software Maintenance and Evolution, pages 400–410, 2016.
    [23] I. Sommerville. Software Engineering, volume Ninth Edition ed. Pearson Education Limited, 2010.
    [24] Wei Wu, Foutse Khomh, Bram Adams, Yann­Gaël Guéhéneuc, and Giuliano Antoniol. An Exploratory Study of API Changes and Usages Based on Apache and Eclipse Ecosystems. Empirical Software Engineering, 21:2366–2412, Dec. 2016.
    [25] Laerte Xavier, Aline Brito, Andre Hora, and Marco Tulio Valente. Historical and Impact Analysis of API Breaking Changes: A Large­Scale Study. In 2017 IEEE 24th International Conference on Software Analysis, Evolution and Reengineering (SANER), pages 138–147, 2017.

    無法下載圖示 校內:2024-08-30公開
    校外:不公開
    電子論文尚未授權公開,紙本請查館藏目錄
    QR CODE