{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,7,24]],"date-time":"2026-07-24T02:43:00Z","timestamp":1784860980295,"version":"3.55.0"},"reference-count":52,"publisher":"Springer Science and Business Media LLC","issue":"11","license":[{"start":{"date-parts":[[2020,7,10]],"date-time":"2020-07-10T00:00:00Z","timestamp":1594339200000},"content-version":"tdm","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0"},{"start":{"date-parts":[[2020,7,10]],"date-time":"2020-07-10T00:00:00Z","timestamp":1594339200000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0"}],"funder":[{"name":"University of Helsinki including Helsinki University Central Hospital"}],"content-domain":{"domain":["link.springer.com"],"crossmark-restriction":false},"short-container-title":["Computing"],"published-print":{"date-parts":[[2020,11]]},"abstract":"<jats:title>Abstract<\/jats:title><jats:p>The availability of open source assets for almost all imaginable domains has led the software industry to<jats:italic>opportunistic design<\/jats:italic>\u2014an approach in which people develop new software systems in an ad hoc fashion by reusing and combining components that were not designed to be used together. In this paper we investigate this emerging approach. We demonstrate the approach with an industrial example in which<jats:italic>Node.js<\/jats:italic>modules and various subsystems are used in an opportunistic way. Furthermore, to study opportunistic reuse as a phenomenon, we present the results of three contextual interviews and a survey with reuse practitioners to understand to what extent opportunistic reuse offers improvements over traditional systematic reuse approaches.<\/jats:p>","DOI":"10.1007\/s00607-020-00833-6","type":"journal-article","created":{"date-parts":[[2020,7,10]],"date-time":"2020-07-10T05:53:51Z","timestamp":1594360431000},"page":"2385-2408","update-policy":"https:\/\/doi.org\/10.1007\/springer_crossmark_policy","source":"Crossref","is-referenced-by-count":33,"title":["On opportunistic software reuse"],"prefix":"10.1007","volume":"102","author":[{"given":"Niko","family":"M\u00e4kitalo","sequence":"first","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Antero","family":"Taivalsaari","sequence":"additional","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Arto","family":"Kiviluoto","sequence":"additional","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Tommi","family":"Mikkonen","sequence":"additional","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Rafael","family":"Capilla","sequence":"additional","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"297","published-online":{"date-parts":[[2020,7,10]]},"reference":[{"key":"833_CR1","doi-asserted-by":"publisher","unstructured":"Ali N, Horn D, Hong JE (2020) A hybrid DevOps process supporting software reuse: a pilot project. J Softw Evol Process. https:\/\/doi.org\/10.1002\/smr.2248","DOI":"10.1002\/smr.2248"},{"issue":"2","key":"833_CR2","doi-asserted-by":"publisher","first-page":"41","DOI":"10.1109\/MS.1987.230095","volume":"4","author":"TJ Biggerstaff","year":"1987","unstructured":"Biggerstaff TJ, Richter C (1987) Reusability framework, assessment and directions. IEEE Softw 4(2):41\u201349","journal-title":"IEEE Softw"},{"key":"833_CR3","unstructured":"Bouzid A, Rennyson D (2015) The art of SaaS: a primer on the fundamentals of building and running a successful SaaS business. Xlibris"},{"issue":"8","key":"833_CR4","doi-asserted-by":"crossref","first-page":"e2221","DOI":"10.1002\/smr.2221","volume":"31","author":"R Capilla","year":"2019","unstructured":"Capilla R, Gallina B, Cetina Englada C (2019) The new era of software reuse. J Softw Evol Process 31(8):e2221","journal-title":"J Softw Evol Process"},{"issue":"8","key":"833_CR5","doi-asserted-by":"crossref","first-page":"e2217","DOI":"10.1002\/smr.2217","volume":"31","author":"R Capilla","year":"2019","unstructured":"Capilla R, Gallina B, Cetina Englada C, Favaro J (2019) Opportunities for software reuse in an uncertain world: from past to emerging trends. J Softw Evol Process 31(8):e2217","journal-title":"J Softw Evol Process"},{"key":"833_CR6","doi-asserted-by":"crossref","unstructured":"Carvalho L, Garcia A, Assun\u00e7\u00e3o WKG, Bonif\u00e1cio R, Tizzei LP, Colanzi TE (2019) Extraction of configurable and reusable microservices from legacy systems: an exploratory study. In: Proceedings of the 23rd international systems and software product line conference, SPLC 2019, volume A, Paris, France, September 9\u201313, 2019, ACM, pp 6:1\u20136:6","DOI":"10.1145\/3336294.3336319"},{"key":"833_CR7","doi-asserted-by":"crossref","unstructured":"Ciborowska A, Kraft NA, Damevski K (2018) Detecting and characterizing developer behavior following opportunistic reuse of code snippets from the web. In: Proceedings of the 15th international conference on mining software repositories, MSR 2018, Gothenburg, Sweden, May 28\u201329, 2018, ACM, pp 94\u201397","DOI":"10.1145\/3196398.3196467"},{"key":"833_CR8","volume-title":"Software product lines","author":"P Clements","year":"2002","unstructured":"Clements P, Northrop L (2002) Software product lines. Addison-Wesley, Boston"},{"issue":"8","key":"833_CR9","doi-asserted-by":"publisher","first-page":"49","DOI":"10.1109\/2.607064","volume":"30","author":"D Dikel","year":"1997","unstructured":"Dikel D, Kane D, Ornburn S, Loftus W, Wilson J (1997) Applying software product-line architecture. Computer 30(8):49\u201355","journal-title":"Computer"},{"key":"833_CR10","doi-asserted-by":"crossref","unstructured":"Easterbrook S, Singer J, Storey MD, Damian DE (2008) Selecting empirical methods for software engineering research. In: Guide to advanced empirical software engineering, pp 285\u2013311","DOI":"10.1007\/978-1-84800-044-5_11"},{"key":"833_CR11","doi-asserted-by":"publisher","first-page":"176","DOI":"10.1207\/s15327884mca0503_3","volume":"5","author":"KA Ericsson","year":"1998","unstructured":"Ericsson KA, Simon HA (1998) How to study thinking in everyday life: contrasting think-asloud protocols with descriptions and explanations of thinking. Mind Cult Act 5:176\u2013186","journal-title":"Mind Cult Act"},{"issue":"1","key":"833_CR12","doi-asserted-by":"publisher","first-page":"45","DOI":"10.1016\/S0164-1212(00)00116-3","volume":"57","author":"RG Fichman","year":"2001","unstructured":"Fichman RG, Kemerer CF (2001) Incentive compatibility and systematic software reuse. J Syst Softw 57(1):45\u201360","journal-title":"J Syst Softw"},{"key":"833_CR13","doi-asserted-by":"crossref","unstructured":"Fischer S, Linsbauer L, Lopez-Herrejon RE, Egyed A (2014) Enhancing clone-and-own with systematic reuse for developing software variants. In: 30th IEEE international conference on software maintenance and evolution, Victoria, BC, Canada, September 29\u2013October 3, 2014, pp 391\u2013400","DOI":"10.1109\/ICSME.2014.61"},{"issue":"5","key":"833_CR14","doi-asserted-by":"publisher","first-page":"14","DOI":"10.1109\/52.311045","volume":"11","author":"WB Frakes","year":"1994","unstructured":"Frakes WB, Isoda S (1994) Success factors of systematic reuse. IEEE Softw 11(5):14\u201319","journal-title":"IEEE Softw"},{"issue":"7","key":"833_CR15","doi-asserted-by":"publisher","first-page":"529","DOI":"10.1109\/TSE.2005.85","volume":"31","author":"WB Frakes","year":"2005","unstructured":"Frakes WB, Kang K (2005) Software reuse research: status and future. IEEE Trans Softw Eng 31(7):529\u2013536","journal-title":"IEEE Trans Softw Eng"},{"key":"833_CR16","unstructured":"Gao JZ, Tsao HS, Wu Y (2003) Testing and quality assurance for component-based software. Artech House Publishers"},{"key":"833_CR17","doi-asserted-by":"crossref","unstructured":"Hammouda I, Mikkonen T, Oksanen V, Jaaksi A (2010) Open source legality patterns: architectural design decisions motivated by legal concerns. In: Proceedings of the 14th international academic mindtrek conference: envisioning future media environments, ACM, pp 207\u2013214","DOI":"10.1145\/1930488.1930533"},{"issue":"3","key":"833_CR18","doi-asserted-by":"publisher","first-page":"46","DOI":"10.1109\/MPRV.2008.54","volume":"7","author":"B Hartmann","year":"2008","unstructured":"Hartmann B, Doorley S, Klemmer SR (2008) Hacking, mashing, gluing: understanding opportunistic design. IEEE Pervasive Comput 7(3):46\u201354","journal-title":"IEEE Pervasive Comput"},{"key":"833_CR19","doi-asserted-by":"crossref","unstructured":"Holtzblatt K, Joses S (1995) Conducting and analyzing a contextual interview. Human\u2013computer interaction, pp 241\u2013253","DOI":"10.1016\/B978-0-08-051574-8.50028-5"},{"key":"833_CR20","doi-asserted-by":"crossref","unstructured":"Hove S, Anda B (2005) Experiences from conducting semi-structured interviews in empirical software engineering research. In: 11th IEEE international symposium in software metrics, IEEE, pp 10\u201323","DOI":"10.1109\/METRICS.2005.24"},{"issue":"6","key":"833_CR21","doi-asserted-by":"publisher","first-page":"7291","DOI":"10.1016\/j.eswa.2010.12.021","volume":"38","author":"S Hsu","year":"2011","unstructured":"Hsu S, Lin S (2011) MACs: mining API code snippets for code reuse. Expert Syst Appl 38(6):7291\u20137301","journal-title":"Expert Syst Appl"},{"issue":"6","key":"833_CR22","doi-asserted-by":"publisher","first-page":"42","DOI":"10.1109\/MS.2008.155","volume":"25","author":"S Jansen","year":"2008","unstructured":"Jansen S, Brinkkemper S, Hunink I, Demir C (2008) Pragmatic and opportunistic reuse in innovative start-up companies. IEEE Softw 25(6):42\u201349","journal-title":"IEEE Softw"},{"issue":"5","key":"833_CR23","doi-asserted-by":"publisher","first-page":"488","DOI":"10.1109\/TSE.1984.5010271","volume":"10","author":"TC Jones","year":"1984","unstructured":"Jones TC (1984) Reusability in programming: a survey of the state of the art. IEEE Trans Softw Eng 10(5):488\u2013494","journal-title":"IEEE Trans Softw Eng"},{"key":"833_CR24","unstructured":"Kalnina E, Kalnins A, Celms E, Sostaks A, Iraids J (2010) Generation mechanisms in graphical template language. In: MDA & MTDD 2010\u2014proceedings of the 2nd international workshop on model-driven architecture and modeling theory-driven development, in conjunction with ENASE 2010, Athens, Greece, July 2010, SciTePress, pp 43\u201352"},{"issue":"4","key":"833_CR25","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\u2013147","journal-title":"J Manag Inf Syst"},{"key":"833_CR26","doi-asserted-by":"crossref","unstructured":"Kotonya G, Lock S, Mariani J (2008) opportunistic reuse: lessons from scrapheap software development. In: Proceedings of component-based software engineering, 11th international symposium, CBSE 2008, Karlsruhe, Germany, October 14\u201317, 2008, pp 302\u2013309","DOI":"10.1007\/978-3-540-87891-9_20"},{"issue":"2","key":"833_CR27","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":"833_CR28","doi-asserted-by":"crossref","unstructured":"Kulkarni N (2013) Systematically selecting a software module during opportunistic reuse. In: Notkin D, Cheng BHC, Pohl K (eds) 35th international conference on software engineering, ICSE\u201913, San Francisco, CA, USA, May 18\u201326, 2013, IEEE Computer Society, pp 1405\u20131406","DOI":"10.1109\/ICSE.2013.6606728"},{"issue":"7","key":"833_CR29","doi-asserted-by":"publisher","first-page":"971","DOI":"10.1002\/spe.2439","volume":"47","author":"N Kulkarni","year":"2017","unstructured":"Kulkarni N, Varma V (2017) Perils of opportunistically reusing software module. Softw Pract Exp 47(7):971\u2013984","journal-title":"Softw Pract Exp"},{"key":"833_CR30","doi-asserted-by":"crossref","unstructured":"Lampropoulos A, Ampatzoglou A, Bibi S, Chatzigeorgiou A, Stamelos I (2018) REACT\u2014a process for improving open-source software reuse. In: 11th international conference on the quality of information and communications technology, QUATIC 2018, Coimbra, Portugal, September 4\u20137, 2018, IEEE Computer Society, pp 251\u2013254","DOI":"10.1109\/QUATIC.2018.00044"},{"issue":"5","key":"833_CR31","doi-asserted-by":"publisher","first-page":"498","DOI":"10.1109\/TSE.1984.5010273","volume":"10","author":"RG Lanergan","year":"1984","unstructured":"Lanergan RG, Grasso CA (1984) Software engineering with reusable designs and code. IEEE Trans Softw Eng 10(5):498\u2013501","journal-title":"IEEE Trans Softw Eng"},{"issue":"4","key":"833_CR32","doi-asserted-by":"publisher","first-page":"34","DOI":"10.1109\/MS.1987.231062","volume":"4","author":"M Lentz","year":"1987","unstructured":"Lentz M, Schmid HA, Wolf PF (1987) Software reuse through building blocks. IEEE Softw 4(4):34\u201342","journal-title":"IEEE Softw"},{"key":"833_CR33","unstructured":"McIlroy MD (1968) Mass produced software components. In: Naur and Randell (eds) Software engineering: report of conference sponsored by the NATO science committee, Garmisch, Germany, Oct 7\u201311, 1968, pp 79\u201385"},{"issue":"3","key":"833_CR34","doi-asserted-by":"publisher","first-page":"105","DOI":"10.1109\/MS.2018.2884883","volume":"36","author":"T Mikkonen","year":"2019","unstructured":"Mikkonen T, Taivalsaari A (2019) Software reuse in the era of opportunistic design. IEEE Softw 36(3):105\u2013111","journal-title":"IEEE Softw"},{"key":"833_CR35","volume-title":"Software engineering: report of a conference sponsored by the NATO Science Committee (Garmisch, Germany, Oct 7\u201311, 1968)","author":"P Naur","year":"1969","unstructured":"Naur P, Randell B (1969) Software engineering: report of a conference sponsored by the NATO Science Committee (Garmisch, Germany, Oct 7\u201311, 1968). NATO Scientific Affairs Division, Brussels"},{"key":"833_CR36","unstructured":"Newman S (2015) Building microservices: designing fine-grained systems. O\u2019Reilly Media"},{"key":"833_CR37","doi-asserted-by":"publisher","first-page":"211","DOI":"10.1016\/j.jss.2017.09.009","volume":"134","author":"ME Paschali","year":"2017","unstructured":"Paschali ME, Ampatzoglou A, Bibi S, Chatzigeorgiou A, Stamelos I (2017) Reusability of open source software across domains: a case study. J Syst Softw 134:211\u2013227","journal-title":"J Syst Softw"},{"issue":"6","key":"833_CR38","doi-asserted-by":"publisher","first-page":"16","DOI":"10.1145\/505532.505535","volume":"26","author":"SL Pfleeger","year":"2001","unstructured":"Pfleeger SL, Kitchenham BA (2001) Principles of survey research: part 1: turning lemons into lemonade. ACM SIGSOFT Softw Eng Notes 26(6):16\u201318","journal-title":"ACM SIGSOFT Softw Eng Notes"},{"issue":"2","key":"833_CR39","doi-asserted-by":"publisher","first-page":"131","DOI":"10.1007\/s10664-008-9102-8","volume":"14","author":"P Runeson","year":"2009","unstructured":"Runeson P, H\u00f6st M (2009) Guidelines for conducting and reporting case study research in software engineering. Empir Softw Eng 14(2):131\u2013164","journal-title":"Empir Softw Eng"},{"key":"833_CR40","unstructured":"Schmidt DC (1999) Why software reuse has failed and how to make it work for you. C++ Report 11(1):1999"},{"key":"833_CR41","doi-asserted-by":"publisher","first-page":"3","DOI":"10.1145\/223427.211783","volume":"20","author":"M Shaw","year":"1995","unstructured":"Shaw M (1995) Architectural issues in software reuse: it\u2019s not just the functionality, it\u2019s the packaging. ACM ACM SIGSOFT Softw Eng Notes 20:3\u20136","journal-title":"ACM ACM SIGSOFT Softw Eng Notes"},{"key":"833_CR42","doi-asserted-by":"crossref","unstructured":"Steyaert P, Lucas C, Mens K (1997) Reuse contracts: making systematic reuse a standard practice. https:\/\/www.semanticscholar.org","DOI":"10.1145\/236337.236363"},{"key":"833_CR43","doi-asserted-by":"crossref","unstructured":"Taivalsaari A, Mikkonen T (2018) On the development of IoT systems. In: 2018 third international conference on fog and mobile edge computing (FMEC). IEEE, pp 13\u201319","DOI":"10.1109\/FMEC.2018.8364039"},{"key":"833_CR44","doi-asserted-by":"crossref","unstructured":"Taivalsaari A, M\u00e4kitalo N, Mikkonen T (2019) Programming the tip of the iceberg: software reuse in the 21st century. In: 2019 EUROMICRO conference on software engineering and advanced applications. IEEE","DOI":"10.1109\/SEAA.2019.00025"},{"issue":"8","key":"833_CR45","doi-asserted-by":"publisher","first-page":"761","DOI":"10.1145\/358198.358210","volume":"27","author":"K Thompson","year":"1984","unstructured":"Thompson K (1984) Reflections on trusting trust. Commun ACM 27(8):761\u2013763","journal-title":"Commun ACM"},{"key":"833_CR46","doi-asserted-by":"crossref","unstructured":"Tizzei LP, dos Santos MN, Segura VCVB, Cerqueira RFG (2017) Using microservices and software product line engineering to support reuse of evolving multi-tenant SaaS. In: Cohen MB, Acher M, Fuentes L, Schall D, Bosch J, Capilla R, Bagheri E, Xiong Y, Troya J, Cort\u00e9s AR, Benavides D (eds) Proceedings of the 21st international systems and software product line conference, SPLC 2017, volume A, Sevilla, Spain, September 25\u201329, 2017. ACM, pp 205\u2013214","DOI":"10.1145\/3106195.3106224"},{"key":"833_CR47","doi-asserted-by":"crossref","unstructured":"Tracz W (1995) Confessions of a used-program salesman: lessons learned. In: Samadzadeh MH, Kazerooni-Zand M (eds) Proceedings of the ACM SIGSOFT symposium on software reusability, SSR@ICSE 1995(April), pp 23\u201330 (1995) Seattle. WA, USA, ACM, pp 11\u201313","DOI":"10.1145\/223427.211785"},{"key":"833_CR48","unstructured":"Trendowicz A, Punter T et\u00a0al (2003) Quality modeling for software product lines. In: Proceedings of the 7th ECOOP workshop on quantitative approaches in object-oriented software engineering"},{"issue":"10","key":"833_CR49","doi-asserted-by":"publisher","first-page":"38","DOI":"10.1109\/MC.2003.1236470","volume":"36","author":"M Turner","year":"2003","unstructured":"Turner M, Budgen D, Brereton P (2003) Turning software into a service. Computer 36(10):38\u201344","journal-title":"Computer"},{"key":"833_CR50","volume-title":"Case study research design and methods","author":"RK Yin","year":"2014","unstructured":"Yin RK (2014) Case study research design and methods, 5th edn. Sage, Thousand Oaks","edition":"5"},{"key":"833_CR51","unstructured":"Zax D (2012) Many cars have a hundred million lines of code. MIT Technology Review"},{"key":"833_CR52","unstructured":"Zimmermann M, Staicu CA, Tenny C, Pradel M (2019) Small world with high risks: a study of security threats in the NPM Ecosystem. 28th USENIX security symposium. Santa Clara, CA, pp 995\u20131010"}],"container-title":["Computing"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/link.springer.com\/content\/pdf\/10.1007\/s00607-020-00833-6.pdf","content-type":"application\/pdf","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/link.springer.com\/article\/10.1007\/s00607-020-00833-6\/fulltext.html","content-type":"text\/html","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/link.springer.com\/content\/pdf\/10.1007\/s00607-020-00833-6.pdf","content-type":"application\/pdf","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2023,10,4]],"date-time":"2023-10-04T01:38:22Z","timestamp":1696383502000},"score":1,"resource":{"primary":{"URL":"https:\/\/link.springer.com\/10.1007\/s00607-020-00833-6"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2020,7,10]]},"references-count":52,"journal-issue":{"issue":"11","published-print":{"date-parts":[[2020,11]]}},"alternative-id":["833"],"URL":"https:\/\/doi.org\/10.1007\/s00607-020-00833-6","relation":{},"ISSN":["0010-485X","1436-5057"],"issn-type":[{"value":"0010-485X","type":"print"},{"value":"1436-5057","type":"electronic"}],"subject":[],"published":{"date-parts":[[2020,7,10]]},"assertion":[{"value":"27 February 2020","order":1,"name":"received","label":"Received","group":{"name":"ArticleHistory","label":"Article History"}},{"value":"2 July 2020","order":2,"name":"accepted","label":"Accepted","group":{"name":"ArticleHistory","label":"Article History"}},{"value":"10 July 2020","order":3,"name":"first_online","label":"First Online","group":{"name":"ArticleHistory","label":"Article History"}}]}}