Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
research-article

Mapping APIs in Dynamic-typed Programs by Leveraging Transfer Learning

Published: 18 April 2024 Publication History

Abstract

Application Programming Interface (API) migration is a common task for adapting software across different programming languages and platforms, where manually constructing the mapping relations between APIs is indeed time-consuming and error-prone. To facilitate this process, many automated API mapping approaches have been proposed. However, existing approaches were mainly designed and evaluated for mapping APIs of statically-typed languages, while their performance on dynamically-typed languages remains unexplored.
In this article, we conduct the first extensive study to explore existing API mapping approaches’ performance for mapping APIs in dynamically-typed languages, for which we have manually constructed a high-quality dataset. According to the empirical results, we have summarized several insights. In particular, the source code implementations of APIs can significantly improve the effectiveness of API mapping. However, due to the confidentiality policy, they may not be available in practice. To overcome this, we propose a novel API mapping approach, named Matl, which leverages the transfer learning technique to learn the semantic embeddings of source code implementations from large-scale open-source repositories and then transfers the learned model to facilitate the mapping of APIs. In this way, Matl can produce more accurate API embedding of its functionality for more effective mapping without knowing the source code of the APIs. To evaluate the performance of Matl, we have conducted an extensive study by comparing Matl with state-of-the-art approaches. The results demonstrate that Matl is indeed effective as it improves the state-of-the-art approach by at least 18.36% for mapping APIs of dynamically-typed language and by 30.77% for mapping APIs of the statically-typed language.

References

[2]
Accessed: May 2, 2023. CNTK. Retrieved from https://cntk.azurewebsites.net/pythondocs/
[3]
Accessed: May 2, 2023. GitHub. Retrieved from https://github.com/
[5]
Accessed: May 2, 2023. MXNet. Retrieved from https://mxnet.apache.org/
[6]
Accessed: May 2, 2023. PyTorch. Retrieved from https://pytorch.org/tutorials/
[7]
Accessed: May 2, 2023. TensorFlow. Retrieved from https://tensorflow.google.cn/
[8]
Accessed: May 2, 2023. Wordninja. Retrieved from https://github.com/keredson/wordninja/
[9]
Karan Aggarwal, Mohammad Salameh, and Abram Hindle. 2015. Using machine translation for converting Python2 to Python3 code. PeerJ Prepr. 3 (2015), e1459v1.
[10]
Wasi Uddin Ahmad, Saikat Chakraborty, Baishakhi Ray, and Kai-Wei Chang. 2023. Summarize and generate to back-translate: Unsupervised translation of programming languages. In Proceedings of the 17th Conference of the European Chapter of the Association for Computational Linguistics, EACL 2023, Dubrovnik, Croatia, May 2-6, 2023, Andreas Vlachos and Isabelle Augenstein (Eds.). Association for Computational Linguistics, 1520–1534.
[11]
Haya Brama, Lihi Dery, and Tal Grinshpoun. 2023. Evaluation of neural networks defenses and attacks using NDCG and reciprocal rank metrics. International Journal of Information Security 22, 2 (2023), 525–540.
[12]
Martin Bravenboer, Karl Trygve Kalleberg, Rob Vermaas, and Eelco Visser. 2008. Stratego/XT 0.17. A language and toolset for program transformation. Science of Computer Programming 72, 1–2 (2008), 52–70.
[13]
Nghi D. Q. Bui and Lingxiao Jiang. 2018. Hierarchical learning of cross-language mappings through distributed vector representations for code. In Proceedings of the 40th International Conference on Software Engineering: New Ideas and Emerging Results. ACM, 33–36.
[14]
Nghi D. Q. Bui, Yijun Yu, and Lingxiao Jiang. 2019. SAR: Learning cross-language API mappings with little knowledge. In Proceedings of the 2019 27th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering. ACM, 796–806.
[15]
Olivier Chapelle, Donald Metlzer, Ya Zhang, and Pierre Grinspan. 2009. Expected reciprocal rank for graded relevance. In Proceedings of the 18th ACM Conference on Information and Knowledge Management. ACM, 621–630.
[16]
Chunyang Chen, Zhenchang Xing, Yang Liu, and Kent Ong Long Xiong. 2021. Mining likely analogical APIs across third-party libraries via large-scale unsupervised API semantics embedding. IEEE Transactions on Software Engineering 47, 3 (2021), 432–447.
[17]
Xinyun Chen, Chang Liu, and Dawn Song. 2018. Tree-to-tree neural networks for program translation. In Proceedings of the Advances in Neural Information Processing Systems. OpenReview.net.
[18]
Yen-Chun Chen, Zhe Gan, Yu Cheng, Jingzhou Liu, and Jingjing Liu. 2020. Distilling knowledge learned in BERT for text generation. In Proceedings of the 58th Annual Meeting of the Association for Computational Linguistics, ACL 2020, Online, July 5-10, 2020, Dan Jurafsky, Joyce Chai, Natalie Schluter, and Joel R. Tetreault (Eds.). Association for Computational Linguistics, 7893–7905.
[19]
Bruce Collie, Philip Ginsbach, Jackson Woodruff, Ajitha Rajan, and Michael F. P. O’Boyle. 2020. M3: Semantic API migrations. In 35th IEEE/ACM International Conference on Automated Software Engineering, (ASE’20), Melbourne, Australia, September 21-25, 2020. IEEE, 90–102.
[20]
James R. Cordy. 2006. The TXL source transformation language. Science of Computer Programming 61, 3 (2006), 190–210.
[21]
Jacob Devlin, Ming-Wei Chang, Kenton Lee, and Kristina Toutanova. 2019. BERT: Pre-training of deep bidirectional transformers for language understanding. In Proceedings of the 2019 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies, NAACL-HLT 2019, Minneapolis, MN, USA, June 2-7, 2019, Volume 1 (Long and Short Papers), Jill Burstein, Christy Doran, and Thamar Solorio (Eds.). Association for Computational Linguistics, 4171–4186.
[22]
Jens Dietrich, Kamil Jezek, and Premek Brada. 2014. Broken promises: An empirical study into evolution problems in Java programs caused by library upgrades. In Proceedings of the 2014 Software Evolution Week-IEEE Conference on Software Maintenance, Reengineering, and Reverse Engineering. IEEE Computer Society, 64–73.
[23]
Danny Dig and Ralph E. Johnson. 2005. The role of refactorings in API evolution. In Proceedings of the 21st IEEE International Conference on Software Maintenance. IEEE Computer Society, 389–398.
[24]
Joost Engelfriet. 1972. Translation of simple program schemes. In Automata, Languages and Programming, Colloquium, Paris, France, July 3-7, 1972, Maurice Nivat (Ed.). North-Holland, Amsterdam, 215–223.
[25]
Zhangyin Feng, Daya Guo, Duyu Tang, Nan Duan, Xiaocheng Feng, Ming Gong, Linjun Shou, Bing Qin, Ting Liu, Daxin Jiang, and Ming Zhou. 2020. CodeBERT: A pre-trained model for programming and natural languages. In Findings of the Association for Computational Linguistics: EMNLP 2020, Online Event, 16-20 November 2020 (Findings of ACL, Vol. EMNLP 2020), Trevor Cohn, Yulan He, and Yang Liu (Eds.). Association for Computational Linguistics, 1536–1547.
[26]
Xiaodong Gu, Hongyu Zhang, and Sunghun Kim. 2018. Deep code search. In Proceedings of the Proceedings of the 40th International Conference on Software Engineering. ACM, 933–944.
[27]
Xiaodong Gu, Hongyu Zhang, Dongmei Zhang, and Sunghun Kim. 2017. DeepAM: Migrate APIs with multi-modal sequence to sequence learning. In Proceedings of the Twenty-Sixth International Joint Conference on Artificial Intelligence, IJCAI 2017, Melbourne, Australia, August 19-25, 2017, Carles Sierra (Ed.). ijcai.org, 3675–3681.
[28]
Daya Guo, Shuai Lu, Nan Duan, Yanlin Wang, Ming Zhou, and Jian Yin. 2022. UniXcoder: Unified cross-modal pre-training for code representation. In Proceedings of the 60th Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers), ACL 2022, Dublin, Ireland, May 22-27, 2022, Smaranda Muresan, Preslav Nakov, and Aline Villavicencio (Eds.). Association for Computational Linguistics, 7212–7225.
[29]
Daya Guo, Shuo Ren, Shuai Lu, Zhangyin Feng, Duyu Tang, Shujie Liu, Long Zhou, Nan Duan, Alexey Svyatkovskiy, Shengyu Fu, Michele Tufano, Shao Kun Deng, Colin B. Clement, Dawn Drain, Neel Sundaresan, Jian Yin, Daxin Jiang, and Ming Zhou. 2021. GraphCodeBERT: Pre-training code representations with data flow. In 9th International Conference on Learning Representations (ICLR’21), Virtual Event, Austria, May 3-7, 2021. OpenReview.net.
[30]
Qianyu Guo, Sen Chen, Xiaofei Xie, Lei Ma, Qiang Hu, Hongtao Liu, Yang Liu, Jianjun Zhao, and Xiaohong Li. 2019. An empirical study towards characterizing deep learning development and deployment across different frameworks and platforms. In Proceedings of the 2019 34th IEEE/ACM International Conference on Automated Software Engineering. IEEE, 810–822.
[31]
Stefanus A. Haryono, Ferdian Thung, David Lo, Lingxiao Jiang, Julia Lawall, Hong Jin Kang, Lucas Serrano, and Gilles Muller. 2022. AndroEvolve: Automated Android API update with data flow analysis and variable denormalization. Empirical Software Engineering 27, 3 (2022), 73.
[32]
André C. Hora, Romain Robbes, Marco Túlio Valente, Nicolas Anquetil, Anne Etien, and Stéphane Ducasse. 2018. How do developers react to API evolution? A large-scale empirical study. Software Quality Journal 26, 1 (2018), 161–191.
[33]
Mingzhe Hu and Yu Zhang. 2023. An empirical study of the Python/C API on evolution and bug patterns. Journal of Software: Evolution and Process 35, 2 (2023), e2507.
[34]
Qiao Huang, Xin Xia, Zhenchang Xing, David Lo, and Xinyu Wang. 2018. API method recommendation without worrying about the task-API knowledge gap. In Proceedings of the 33rd ACM/IEEE International Conference on Automated Software Engineering. ACM, 293–304.
[35]
Aditya Kanade, Petros Maniatis, Gogul Balakrishnan, and Kensen Shi. 2020. Learning and evaluating contextual embedding of source code. In Proceeedings of the International Conference on Machine Learning. PMLR, 5110–5121.
[36]
Yuning Kang, Zan Wang, Hongyu Zhang, Junjie Chen, and Hanmo You. 2021. APIRecX: Cross-library API recommendation via pre-trained language model. In Proceedings of the 2021 Conference on Empirical Methods in Natural Language Processing. Association for Computational Linguistics, 3425–3436.
[37]
Svetoslav Karaivanov, Veselin Raychev, and Martin T. Vechev. 2014. Phrase-based statistical translation of programming languages. In Proceedings of the 2014 ACM International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software.ACM, 173–184.
[38]
Holger Knoche and Wilhelm Hasselbring. 2022. Continuous API evolution in heterogenous enterprise software systems. In Proceedings of the 2021 IEEE 18th International Conference on Software Architecture. Gesellschaft für Informatik e.V., 49–50.
[39]
Rediana Koçi, Xavier Franch, Petar Jovanovic, and Alberto Abelló. 2023. Web API evolution patterns: A usage-driven approach. Journal of Systems and Software 198 (2023), 111609.
[40]
Philipp Koehn. 2010. Statistical Machine Translation. Cambridge University Press.
[41]
Hobum Kwon, Juwon Ahn, Sunggyu Choi, Jakub Siewierski, Piotr Kosko, and Piotr Szydelko. 2018. An experience report of the API evolution and maintenance for software platforms. In Proceedings of the 2018 IEEE International Conference on Software Maintenance and Evolution. IEEE Computer Society, 587–590.
[42]
Sunjae Kwon, Jong-In Jang, Sungu Lee, Duksan Ryu, and Jongmoon Baik. 2022. CodeBERT based software defect prediction for edge-cloud systems. In Proceedings of the International Conference on Web Engineering. Springer, 11–21.
[43]
Maxime Lamothe, Yann-Gaël Guéhéneuc, and Weiyi Shang. 2022. A systematic review of API evolution literature. ACM Computing Surveys 54, 8 (2022), 171:1–171:36.
[44]
Maxime Lamothe, Weiyi Shang, and Tse-Hsun Peter Chen. 2022. A3: Assisting Android API migrations using code examples. IEEE Transactions on Software Engineering 48, 2 (2022), 417–431.
[45]
Fabio Di Lauro, Souhaila Serbout, and Cesare Pautasso. 2022. A large-scale empirical assessment of web API size evolution. Journal of Web Engineering 21, 6 (2022), 1937–1980.
[46]
M. M. Lehman. 1996. Laws of software evolution revisited. In Proceedings of the European Workshop on Software Process Technology. Springer, 108–124.
[47]
Jun Li, Chenglong Wang, Yingfei Xiong, and Zhenjiang Hu. 2015. SWIN: Towards type-safe Java program adaptation between APIs. In Proceedings of the 2015 Workshop on Partial Evaluation and Program Manipulation. ACM, 91–102.
[48]
Fang Liu, Ge Li, Yunfei Zhao, and Zhi Jin. 2020. Multi-task learning based pre-trained language model for code completion. In Proceedings of the 35th IEEE/ACM International Conference on Automated Software Engineering. IEEE, 473–485.
[49]
X. Liu and P. Gontey. 1987. Program translation by manipulating abstract syntax trees. In Proceedings of the C++ Workshop. USENIX Association, 345–360.
[50]
Qun Luo, Weiran Xu, and Jun Guo. 2014. A study on the CBOW model’s overfitting and stability. In Proceedings of the 5th International Workshop on Web-scale Knowledge Representation Retrieval and Reasoning. ACM, 9–12.
[51]
Tarek Mahmud, Meiru Che, and Guowei Yang. 2022. Android API field evolution and its induced compatibility issues. In Proceedings of the 16th ACM/IEEE International Symposium on Empirical Software Engineering and Measurement. ACM, 34–44.
[52]
Muazzam Maqsood, Faria Nazir, Umair Khan, Farhan Aadil, Habibullah Jamal, Irfan Mehmood, and Oh-Young Song. 2019. Transfer learning assisted classification and detection of alzheimer’s disease stages using 3D MRI scans. Sensors 19, 11 (2019), 2645.
[53]
Antonio Mastropaolo, Nathan Cooper, David Nader-Palacio, Simone Scalabrino, Denys Poshyvanyk, Rocco Oliveto, and Gabriele Bavota. 2022. Using transfer learning for code-related tasks. arXiv:2206.08574. Retrieved from https://arxiv.org/abs/2206.08574
[54]
Anderson S. Matos, João Bosco Ferreira Filho, and Lincoln S. Rocha. 2019. Splitting APIs: An exploratory study of software unbundling. In Proceedings of the 2019 IEEE/ACM 16th International Conference on Mining Software Repositories. IEEE/ACM, 360–370.
[55]
Sichen Meng, Xiaoyin Wang, Lu Zhang, and Hong Mei. 2012. A history-based matching approach to identification of framework evolution. In Proceedings of the 2012 34th International Conference on Software Engineering. IEEE Computer Society, 353–363.
[56]
Romulo Nascimento, André C. Hora, and Eduardo Figueiredo. 2022. Exploring API deprecation evolution in JavaScript. In Proceedings of the 2022 IEEE International Conference on Software Analysis, Evolution and Reengineering. IEEE, 169–173.
[57]
Anh Tuan Nguyen, Hoan Anh Nguyen, Tung Thanh Nguyen, and Tien N. Nguyen. 2014. Statistical learning approach for mining API usage mappings for code migration. In Proceedings of the 29th ACM/IEEE International Conference on Automated Software Engineering. ACM, 457–468.
[58]
Anh Tuan Nguyen, Tung Thanh Nguyen, and Tien N. Nguyen. 2013. Lexical statistical machine translation for language migration. In Proceedings of the 2013 9th Joint Meeting on Foundations of Software Engineering. ACM, 651–654.
[59]
Anh Tuan Nguyen, Tung Thanh Nguyen, and Tien N. Nguyen. 2015. Divide-and-conquer approach for multi-phase statistical migration for source code (T). In Proceedings of the 2015 30th IEEE/ACM International Conference on Automated Software Engineering. IEEE Computer Society, 585–596.
[60]
Trong Duc Nguyen, Anh Tuan Nguyen, Hung Dang Phan, and Tien N. Nguyen. 2017. Exploring API embedding for API usages and applications. In Proceedings of the 2017 IEEE/ACM 39th International Conference on Software Engineering. IEEE/ACM, 438–449.
[61]
Douglas Niehaus. 1991. Program representation and translation for predictable real-time systems. In Proceedings 12th Real-Time Systems Symposium. IEEE Computer Society, 53–63.
[62]
Marius Nita and David Notkin. 2010. Using twinning to adapt programs to alternative APIs. In Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering. ACM, 205–214.
[63]
Changan Niu, Chuanyi Li, Bin Luo, and Vincent Ng. 2022. Deep learning meets software engineering: A survey on pre-trained models of source code. In Proceedings of the Thirty-First International Joint Conference on Artificial Intelligence, IJCAI 2022, Vienna, Austria, 23-29 July 2022, Luc De Raedt (Ed.). ijcai.org, 5546–5555.
[64]
Koki Ogasawara, Tetsuya Kanda, and Katsuro Inoue. 2020. On the variations and evolutions of API usage patterns: Case study on Android applications. In Proceedings of the IEEE/ACM 42nd International Conference on Software Engineering Workshops. ACM, 746–753.
[65]
Yoann Padioleau, Julia Lawall, René Rydhof Hansen, and Gilles Muller. 2008. Documenting and automating collateral evolutions in linux device drivers. In ACM SIGOPS Operating Systems Review. 42, 4 (2008), 247–260.
[66]
Rahul Pandita, Raoul Praful Jetley, Sithu D. Sudarsan, and Laurie A. Williams. 2015. Discovering likely mappings between APIs using text mining. In Proceedings of the 2015 IEEE 15th International Working Conference on Source Code Analysis and Manipulation. IEEE Computer Society, 231–240.
[67]
Hung Dang Phan, Anh Tuan Nguyen, Trong Duc Nguyen, and Tien N. Nguyen. 2017. Statistical migration of API usages. In Proceedings of the 2017 IEEE/ACM 39th International Conference on Software Engineering Companion. IEEE Computer Society, 47–50.
[68]
Mark Pilgrim and Simon Willison. 2009. Dive into Python 3. Springer.
[69]
Mohammad Masudur Rahman, Chanchal K. Roy, and David Lo. 2016. RACK: Automatic API recommendation using crowdsourced knowledge. In IEEE 23rd International Conference on Software Analysis, Evolution, and Reengineering, SANER 2016, Suita, Osaka, Japan, March 14-18, 2016 - Volume 1. IEEE Computer Society, 349–359.
[70]
Denise Rey and Markus Neuhäuser. 2011. Wilcoxon-signed-rank test. In International Encyclopedia of Statistical Science. Springer, 1658–1659.
[71]
Baptiste Rozière, Marie-Anne Lachaux, Lowik Chanussot, and Guillaume Lample. 2020. Unsupervised translation of programming languages. In Advances in Neural Information Processing Systems 33: Annual Conference on Neural Information Processing Systems 2020, NeurIPS 2020, December 6-12, 2020, virtual, Hugo Larochelle, Marc’Aurelio Ranzato, Raia Hadsell, Maria-Florina Balcan, and Hsuan-Tien Lin (Eds.).
[72]
Paul Schmiedmayer, Andreas Bauer, and Bernd Bruegge. 2023. Reducing the impact of breaking changes to web service clients during web API evolution. In Proceedings of the 2023 IEEE/ACM 10th International Conference on Mobile Software Engineering and Systems. IEEE, 1–11.
[73]
Yang Song, Ziming Zhuang, Huajing Li, Qiankun Zhao, Jia Li, Wang-Chien Lee, and C. Lee Giles. 2008. Real-time automatic tag recommendation. In Proceedings of the 31st Annual International ACM SIGIR Conference on Research and Development in Information Retrieval. ACM, 515–522.
[74]
Tim Sonnekalb, Bernd Gruner, Clemens-Alexander Brust, and Patrick Mäder. 2022. Generalizability of code clone detection on CodeBERT. In Proceedings of the 37th IEEE/ACM International Conference on Automated Software Engineering. ACM, 143:1–143:3.
[75]
Ellen M. Voorhees and Dawn M. Tice. 1999. The TREC-8 question answering track evaluation. In Proceedings of the TREC.National Institute of Standards and Technology (NIST).
[76]
Chenglong Wang, Jiajun Jiang, Jun Li, Yingfei Xiong, Xiangyu Luo, Lu Zhang, and Zhenjiang Hu. 2016. Transforming programs between APIs with many-to-many mappings. In Proceedings of the 30th European Conference on Object-Oriented Programming. Schloss Dagstuhl - Leibniz-Zentrum für Informatik, 25:1–25:26.
[77]
Deze Wang, Zhouyang Jia, Shanshan Li, Yue Yu, Yun Xiong, Wei Dong, and Xiangke Liao. 2022. Bridging pre-trained models and downstream tasks for source code understanding. In Proceedings of the 44th International Conference on Software Engineering. ACM, 287–298.
[78]
Richard C. Waters. 1988. Program translation via abstraction and reimplementation. IEEE Transactions on Software Engineering 14, 8 (1988), 1207–1228.
[79]
Lili Wei, Yepang Liu, and Shing-Chi Cheung. 2016. Taming Android fragmentation: Characterizing and detecting compatibility issues for Android apps. In Proceedings of the 31st IEEE/ACM International Conference on Automated Software Engineering. ACM, 226–237.
[80]
Karl R. Weiss, Taghi M. Khoshgoftaar, and Dingding Wang. 2016. A survey of transfer learning. Journal of Big Data 3 (2016), 9.
[81]
Wei Wu, Yann-Gaël Guéhéneuc, Giuliano Antoniol, and Miryung Kim. 2010. AURA: A hybrid approach to identify framework evolution. In Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering. ACM, 325–334.
[82]
Hao Xia, Yuan Zhang, Yingtian Zhou, Xiaoting Chen, Yang Wang, Xiangyu Zhang, Shuaishuai Cui, Geng Hong, Xiaohan Zhang, Min Yang, and Zhemin Yang. 2020. How Android developers handle evolution-induced API compatibility issues: A large-scale study. In Proceedings of the ACM/IEEE 42nd International Conference on Software Engineering. ACM, 886–898.
[83]
Ping Yu, Fei Yang, Chun Cao, Hao Hu, and Xiaoxing Ma. 2018. Mining API usage change rules for software framework evolution. Science China Information Sciences 61, 5 (2018), 050108:1–050108:3.
[84]
Jingxuan Zhang, He Jiang, Zhilei Ren, and Xin Chen. 2018. Recommending APIs for API related questions in stack overflow. IEEE Access 6 (2018), 6205–6219.
[85]
Zejun Zhang, Minxue Pan, Tian Zhang, Xinyu Zhou, and Xuandong Li. 2020. Deep-Diving into documentation to develop improved Java-to-Swift API mapping. In Proceedings of the 28th International Conference on Program Comprehension. ACM, 106–116.
[86]
Zejun Zhang, Yanming Yang, Xin Xia, David Lo, Xiaoxue Ren, and John C. Grundy. 2021. Unveiling the mystery of API evolution in deep learning frameworks: A case study of tensorflow 2. In Proceedings of the 2021 IEEE/ACM 43rd International Conference on Software Engineering: Software Engineering in Practice. IEEE, 238–247.
[87]
Zhaoxu Zhang, Hengcheng Zhu, Ming Wen, Yida Tao, Yepang Liu, and Yingfei Xiong. 2020. How do Python framework APIs evolve? An exploratory study. In Proceedings of the 2020 IEEE 27th International Conference on Software Analysis, Evolution and Reengineering. IEEE, 81–92.
[88]
Hao Zhong, Suresh Thummalapenta, Tao Xie, Lu Zhang, and Qing Wang. 2010. Mining API mapping for language migration. In Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering. ACM, 195–204.
[89]
Fuzhen Zhuang, Zhiyuan Qi, Keyu Duan, Dongbo Xi, Yongchun Zhu, Hengshu Zhu, Hui Xiong, and Qing He. 2021. A comprehensive survey on transfer learning. Proc. IEEE 109, 1 (2021), 43–76.

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Transactions on Software Engineering and Methodology
ACM Transactions on Software Engineering and Methodology  Volume 33, Issue 4
May 2024
940 pages
EISSN:1557-7392
DOI:10.1145/3613665
  • Editor:
  • Mauro Pezzè
Issue’s Table of Contents

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 18 April 2024
Online AM: 22 January 2024
Accepted: 03 January 2024
Revised: 03 November 2023
Received: 19 June 2023
Published in TOSEM Volume 33, Issue 4

Check for updates

Author Tags

  1. API mapping
  2. program transformation
  3. transfer learning

Qualifiers

  • Research-article

Funding Sources

  • National Natural Science Foundation of China

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • 0
    Total Citations
  • 226
    Total Downloads
  • Downloads (Last 12 months)226
  • Downloads (Last 6 weeks)26
Reflects downloads up to 17 Oct 2024

Other Metrics

Citations

View Options

Get Access

Login options

Full Access

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Full Text

View this article in Full Text.

Full Text

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media