{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,3,19]],"date-time":"2026-03-19T01:18:18Z","timestamp":1773883098311,"version":"3.50.1"},"reference-count":34,"publisher":"Springer Science and Business Media LLC","issue":"1","license":[{"start":{"date-parts":[[2019,9,5]],"date-time":"2019-09-05T00:00:00Z","timestamp":1567641600000},"content-version":"tdm","delay-in-days":0,"URL":"http:\/\/www.springer.com\/tdm"},{"start":{"date-parts":[[2019,9,5]],"date-time":"2019-09-05T00:00:00Z","timestamp":1567641600000},"content-version":"vor","delay-in-days":0,"URL":"http:\/\/www.springer.com\/tdm"}],"funder":[{"DOI":"10.13039\/501100000038","name":"Natural Sciences and Engineering Research Council of Canada","doi-asserted-by":"crossref","id":[{"id":"10.13039\/501100000038","id-type":"DOI","asserted-by":"crossref"}]},{"name":"Singapore Ministry of Education (MOE) Academic Research Fund (AcRF) Tier 1"},{"name":"Singapore Ministry of Education (MOE) Academic Research Fund (AcRF) Tier 1"},{"name":"Singapore Ministry of Education (MOE) Academic Research Fund (AcRF) Tier 1"}],"content-domain":{"domain":["link.springer.com"],"crossmark-restriction":false},"short-container-title":["Empir Software Eng"],"published-print":{"date-parts":[[2020,1]]},"DOI":"10.1007\/s10664-019-09771-0","type":"journal-article","created":{"date-parts":[[2019,9,5]],"date-time":"2019-09-05T06:03:32Z","timestamp":1567663412000},"page":"755-789","update-policy":"https:\/\/doi.org\/10.1007\/springer_crossmark_policy","source":"Crossref","is-referenced-by-count":40,"title":["Why reinventing the wheels? An empirical study on library reuse and re-implementation"],"prefix":"10.1007","volume":"25","author":[{"given":"Bowen","family":"Xu","sequence":"first","affiliation":[]},{"ORCID":"https:\/\/orcid.org\/0000-0003-1246-864X","authenticated-orcid":false,"given":"Le","family":"An","sequence":"additional","affiliation":[]},{"given":"Ferdian","family":"Thung","sequence":"additional","affiliation":[]},{"given":"Foutse","family":"Khomh","sequence":"additional","affiliation":[]},{"given":"David","family":"Lo","sequence":"additional","affiliation":[]}],"member":"297","published-online":{"date-parts":[[2019,9,5]]},"reference":[{"key":"9771_CR1","doi-asserted-by":"crossref","unstructured":"Abdalkareem R, Nourry O, Wehaibi S, Mujahid S, Shihab E (2017) Why do developers use trivial packages? an empirical case study on npm. In: 11th joint meeting on foundations of software engineering. ACM, pp 385\u2013395","DOI":"10.1145\/3106237.3106267"},{"issue":"10","key":"9771_CR2","doi-asserted-by":"publisher","first-page":"104","DOI":"10.1145\/236156.236184","volume":"39","author":"VR Basili","year":"1996","unstructured":"Basili VR, Briand LC, Melo WL (1996) How reuse influences productivity in object-oriented systems. Commun ACM 39(10):104\u2013116","journal-title":"Commun ACM"},{"key":"9771_CR3","unstructured":"Blog of Jos de Jong (2017) The art of creating simple but flexible APIs. \nhttp:\/\/josdejong.com\/blog\/2014\/10\/18\/the-art-of-creating-simple-but-flexible-apis\/\n\n, online. Accessed 14 Nov 2017"},{"key":"9771_CR4","doi-asserted-by":"crossref","unstructured":"Gao W, Chen L, Wu J, Gao H (2015) Manifold-learning based api recommendation for mashup creation. In: 22nd IEEE international conference on web services. IEEE, pp 432\u2013439","DOI":"10.1109\/ICWS.2015.64"},{"key":"9771_CR5","unstructured":"GNU (2017) Unified diff format. \nhttp:\/\/www.gnu.org\/software\/diffutils\/manual\/html_node\/Unified-Format.html\n\n, online. Accessed 14 Sept 2017"},{"issue":"4","key":"9771_CR6","doi-asserted-by":"publisher","first-page":"548","DOI":"10.1147\/sj.324.0548","volume":"32","author":"ML Griss","year":"1993","unstructured":"Griss ML (1993) Software reuse: From library to factory. IBM Syst J 32 (4):548\u2013566","journal-title":"IBM Syst J"},{"key":"9771_CR7","doi-asserted-by":"crossref","unstructured":"Gu X, Zhang H, Zhang D, Kim S (2016) Deep api learning. In: 24th international symposium on foundations of software engineering. ACM, pp 631\u2013642","DOI":"10.1145\/2950290.2950334"},{"key":"9771_CR8","doi-asserted-by":"crossref","unstructured":"Heinemann L, Deissenboeck F, Gleirscher M, Hummel B, Irlbeck M (2011) On the extent and nature of software reuse in open source java projects. In: 13th international conference on software reuse. Springer, pp 207\u2013222","DOI":"10.1007\/978-3-642-21347-2_16"},{"issue":"10","key":"9771_CR9","doi-asserted-by":"publisher","first-page":"94","DOI":"10.1145\/236156.236183","volume":"39","author":"J Iivari","year":"1996","unstructured":"Iivari J (1996) Why are case tools not used? Commun ACM 39(10):94\u2013103","journal-title":"Commun ACM"},{"key":"9771_CR10","doi-asserted-by":"crossref","unstructured":"Kawrykow D, Robillard MP (2009) Improving api usage through automatic detection of redundant code. In: 24th international conference on automated software engineering. IEEE, pp 111\u2013122","DOI":"10.1109\/ASE.2009.62"},{"issue":"4","key":"9771_CR11","doi-asserted-by":"publisher","first-page":"113","DOI":"10.1080\/07421222.1998.11518188","volume":"14","author":"Y Kim","year":"1998","unstructured":"Kim Y, Stohr EA (1998) Software reuse: survey and research directions. J Manag Inf Syst 14(4):113\u2013 147","journal-title":"J Manag Inf Syst"},{"issue":"2","key":"9771_CR12","doi-asserted-by":"publisher","first-page":"131","DOI":"10.1145\/130844.130856","volume":"24","author":"CW Krueger","year":"1992","unstructured":"Krueger CW (1992) Software reuse. ACM Comput Surv 24(2):131\u2013183","journal-title":"ACM Comput Surv"},{"key":"9771_CR13","doi-asserted-by":"crossref","unstructured":"Krutz DE, Mirakhorli M, Malachowsky SA, Ruiz A, Peterson J, Filipski A, Smith J (2015) A dataset of open-source android applications. In: 12th working conference on mining software repositories. IEEE, pp 522\u2013525","DOI":"10.1109\/MSR.2015.79"},{"issue":"1","key":"9771_CR14","doi-asserted-by":"publisher","first-page":"53","DOI":"10.1016\/S0164-1212(00)00009-1","volume":"53","author":"TC Lethbridge","year":"2000","unstructured":"Lethbridge TC (2000) Priorities for the education and training of software engineers. J Syst Softw 53(1): 53\u201371","journal-title":"J Syst Softw"},{"key":"9771_CR15","doi-asserted-by":"crossref","unstructured":"Lv F, Zhang H, Lou JQ, Wang S, Zhang D, Zhao J (2015) Codehow: Effective code search based on api understanding and extended boolean model (e). In: 30th international conference on automated software engineering. IEEE, pp 260\u2013270","DOI":"10.1109\/ASE.2015.42"},{"key":"9771_CR16","doi-asserted-by":"crossref","unstructured":"McMillan C, Grechanik M, Poshyvanyk D, Xie Q, Fu C (2011) Portfolio: finding relevant functions and their usage. In: 33rd international conference on software engineering. ACM, pp 111\u2013120","DOI":"10.1145\/1985793.1985809"},{"key":"9771_CR17","unstructured":"Mohagheghi P, Conradi R, Killi OM, Schwarz H (2004) An empirical study of software reuse vs. defect-density and stability. In: 26th international conference on software engineering. IEEE Computer Society, pp 282\u2013292"},{"issue":"2","key":"9771_CR18","doi-asserted-by":"publisher","first-page":"78","DOI":"10.1109\/MS.2013.142","volume":"31","author":"IJ Mojica","year":"2014","unstructured":"Mojica IJ, Adams B, Nagappan M, Dienst S, Berger T, Hassan AE (2014) A large-scale empirical study on software reuse in mobile apps. IEEE Softw 31(2):78\u201386","journal-title":"IEEE Softw"},{"key":"9771_CR19","doi-asserted-by":"crossref","unstructured":"Nguyen AT, Hilton M, Codoban M, Nguyen HA, Mast L, Rademacher E, Nguyen TN, Dig D (2016) Api code recommendation using statistical learning from fine-grained changes. In: 24th international symposium on foundations of software engineering. ACM, pp 511\u2013522","DOI":"10.1145\/2950290.2950333"},{"key":"9771_CR20","doi-asserted-by":"publisher","first-page":"55","DOI":"10.1016\/j.infsof.2016.11.007","volume":"83","author":"A Ouni","year":"2017","unstructured":"Ouni A, Kula RG, Kessentini M, Ishio T, German DM, Inoue K (2017) Search-based software library recommendation using multi-objective optimization. Inf Softw Technol 83:55\u201375","journal-title":"Inf Softw Technol"},{"key":"9771_CR21","doi-asserted-by":"crossref","unstructured":"Piccioni M, Furia CA, Meyer B (2013) An empirical study of api usability. In: 7th international symposium on empirical software engineering and measurement. IEEE, pp 5\u201314","DOI":"10.1109\/ESEM.2013.14"},{"key":"9771_CR22","unstructured":"PythonModule (2018) Python official documentation on modules. \nhttps:\/\/docs.python.org\/2\/tutorial\/modules.html\n\n, online. Accessed 29 March 2018"},{"key":"9771_CR23","doi-asserted-by":"crossref","unstructured":"Rahman MM, Roy CK, Lo D (2016) Rack: Automatic api recommendation using crowdsourced knowledge. In: 23rd international conference on software analysis, evolution, and reengineering, vol 1. IEEE, pp 349\u2013359","DOI":"10.1109\/SANER.2016.80"},{"key":"9771_CR24","doi-asserted-by":"crossref","unstructured":"Ruiz IJM, Nagappan M, Adams B, Hassan AE (2012) Understanding reuse in the android market. In: 20th international conference on program comprehension. IEEE, pp 113\u2013122","DOI":"10.1109\/ICPC.2012.6240477"},{"key":"9771_CR25","doi-asserted-by":"crossref","unstructured":"Singer J, Sim SE, Lethbridge TC (2008) Software engineering data collection for field studies. In: Guide to advanced empirical software engineering. Springer, pp 9\u201334","DOI":"10.1007\/978-1-84800-044-5_1"},{"key":"9771_CR26","doi-asserted-by":"crossref","unstructured":"Sun C, Khoo SC, Zhang SJ (2011) Graph-based detection of library api imitations. In: 27th IEEE international conference on software maintenance. IEEE, pp 183\u2013192","DOI":"10.1109\/ICSM.2011.6080785"},{"key":"9771_CR27","doi-asserted-by":"crossref","unstructured":"Thung F (2016) Api recommendation system for software development. In: 31st international conference on automated software engineering, pp 896\u2013899","DOI":"10.1145\/2970276.2975940"},{"key":"9771_CR28","doi-asserted-by":"crossref","unstructured":"Thung F, Lo D, Lawall J (2013a) Automated library recommendation. In: 20th working conference on reverse engineering. IEEE, pp 182\u2013191","DOI":"10.1109\/WCRE.2013.6671293"},{"key":"9771_CR29","doi-asserted-by":"crossref","unstructured":"Thung F, Wang S, Lo D, Lawall J (2013b) Automatic recommendation of api methods from feature requests. In: 28th international conference on automated software engineering. IEEE Press, pp 290\u2013300","DOI":"10.1109\/ASE.2013.6693088"},{"key":"9771_CR30","doi-asserted-by":"crossref","unstructured":"Uddin G, Khomh F (2017) Automatic summarization of api reviews. In: 2017 32nd IEEE\/ACM international conference on automated software engineering (ASE). IEEE, pp 159\u2013170","DOI":"10.1109\/ASE.2017.8115629"},{"key":"9771_CR31","doi-asserted-by":"crossref","unstructured":"Wei H, Li M (2017) Supervised deep features for software functional clone detection by exploiting lexical and syntactical information in source code. In: 26th international joint conference on artificial intelligence, pp 3034\u20133040","DOI":"10.24963\/ijcai.2017\/423"},{"key":"9771_CR32","unstructured":"Yin RK (2002) Case study research: design and methods - Third Edition, 3rd edn. SAGE Publications"},{"key":"9771_CR33","unstructured":"YouTube video (2004) Designing and evaluating reusable components. \nhttps:\/\/www.youtube.com\/watch?v=ZQ5_u8Lgvyk\n\n, online. Accessed 29 March 2018"},{"key":"9771_CR34","doi-asserted-by":"crossref","unstructured":"Zaimi A, Ampatzoglou A, Triantafyllidou N, Chatzigeorgiou A, Mavridis A, Chaikalis T, Deligiannis I, Sfetsos P, Stamelos I (2015) An empirical study on the reuse of third-party libraries in open-source software development. In: 7th Balkan conference on informatics conference. ACM, p 4","DOI":"10.1145\/2801081.2801087"}],"container-title":["Empirical Software Engineering"],"original-title":[],"language":"en","link":[{"URL":"http:\/\/link.springer.com\/content\/pdf\/10.1007\/s10664-019-09771-0.pdf","content-type":"application\/pdf","content-version":"vor","intended-application":"text-mining"},{"URL":"http:\/\/link.springer.com\/article\/10.1007\/s10664-019-09771-0\/fulltext.html","content-type":"text\/html","content-version":"vor","intended-application":"text-mining"},{"URL":"http:\/\/link.springer.com\/content\/pdf\/10.1007\/s10664-019-09771-0.pdf","content-type":"application\/pdf","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2020,9,3]],"date-time":"2020-09-03T23:50:27Z","timestamp":1599177027000},"score":1,"resource":{"primary":{"URL":"http:\/\/link.springer.com\/10.1007\/s10664-019-09771-0"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2019,9,5]]},"references-count":34,"journal-issue":{"issue":"1","published-print":{"date-parts":[[2020,1]]}},"alternative-id":["9771"],"URL":"https:\/\/doi.org\/10.1007\/s10664-019-09771-0","relation":{},"ISSN":["1382-3256","1573-7616"],"issn-type":[{"value":"1382-3256","type":"print"},{"value":"1573-7616","type":"electronic"}],"subject":[],"published":{"date-parts":[[2019,9,5]]},"assertion":[{"value":"5 September 2019","order":1,"name":"first_online","label":"First Online","group":{"name":"ArticleHistory","label":"Article History"}}]}}