{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,4,12]],"date-time":"2025-04-12T05:10:43Z","timestamp":1744434643797},"reference-count":66,"publisher":"Springer Science and Business Media LLC","issue":"2","license":[{"start":{"date-parts":[[2021,2,3]],"date-time":"2021-02-03T00:00:00Z","timestamp":1612310400000},"content-version":"tdm","delay-in-days":0,"URL":"https:\/\/www.springer.com\/tdm"},{"start":{"date-parts":[[2021,2,3]],"date-time":"2021-02-03T00:00:00Z","timestamp":1612310400000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.springer.com\/tdm"}],"content-domain":{"domain":["link.springer.com"],"crossmark-restriction":false},"short-container-title":["Requirements Eng"],"published-print":{"date-parts":[[2021,6]]},"DOI":"10.1007\/s00766-020-00342-0","type":"journal-article","created":{"date-parts":[[2021,2,3]],"date-time":"2021-02-03T04:53:28Z","timestamp":1612328008000},"page":"185-236","update-policy":"http:\/\/dx.doi.org\/10.1007\/springer_crossmark_policy","source":"Crossref","is-referenced-by-count":5,"title":["RAPID: a knowledge-based assistant for designing web APIs"],"prefix":"10.1007","volume":"26","author":[{"given":"Mahsa H.","family":"Sadi","sequence":"first","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Eric","family":"Yu","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"297","published-online":{"date-parts":[[2021,2,3]]},"reference":[{"key":"342_CR1","doi-asserted-by":"crossref","unstructured":"Jansen S, Finkelstein A, Brinkkemper S (2009) A sense of community: a research agenda for software ecosystems. In: Proceedings of 31st international conference on software engineering-companion volume, pp 187\u2013190. IEEE","DOI":"10.1109\/ICSE-COMPANION.2009.5070978"},{"key":"342_CR2","doi-asserted-by":"crossref","unstructured":"Sadi MH, Yu E (2014) Analyzing the evolution of software development: From creative chaos to software ecosystems. In: 2014 IEEE eighth international conference on research challenges in information science (RCIS), pp 1\u201311. IEEE","DOI":"10.1109\/RCIS.2014.6861055"},{"key":"342_CR3","unstructured":"Tan L, Wang N (2010) Future internet: the internet of things. In: 2010 3rd international conference on advanced computer theory and engineering (ICACTE), vol 5, pp V5\u2013376. IEEE"},{"key":"342_CR4","doi-asserted-by":"crossref","unstructured":"Bosch J (2010) Architecture challenges for software ecosystems. In: Proceedings of the fourth European conference on software architecture: companion volume, pp 93\u201395. ACM","DOI":"10.1145\/1842752.1842776"},{"issue":"1","key":"342_CR5","doi-asserted-by":"publisher","first-page":"23","DOI":"10.1016\/j.clsr.2009.11.008","volume":"26","author":"RH Weber","year":"2010","unstructured":"Weber RH (2010) Internet of things-new security and privacy challenges. Comput Law Secur Rev 26(1):23\u201330","journal-title":"Comput Law Secur Rev"},{"key":"342_CR6","doi-asserted-by":"publisher","first-page":"146","DOI":"10.1016\/j.comnet.2014.11.008","volume":"76","author":"S Sicari","year":"2015","unstructured":"Sicari S, Rizzardi A, Grieco LA, Coen-Porisini A (2015) Security, privacy, and trust in Internet of Things: the road ahead. Comput Netw 76:146\u2013164","journal-title":"Comput Netw"},{"issue":"6","key":"342_CR7","doi-asserted-by":"publisher","first-page":"62","DOI":"10.1145\/2896587","volume":"59","author":"BA Myers","year":"2016","unstructured":"Myers BA, Stylos J (2016) Improving API usability. Commun ACM 59(6):62\u201369","journal-title":"Commun ACM"},{"key":"342_CR8","doi-asserted-by":"crossref","unstructured":"Siriwardena P (2014) Advanced API security: securing APIs with OAuth 2.0, OpenID Connect, JWS, and JWE. Apress: Berkeley","DOI":"10.1007\/978-1-4302-6817-8_7"},{"key":"342_CR9","doi-asserted-by":"publisher","DOI":"10.1007\/978-1-4842-1305-6","volume-title":"API management: An architect\u2019s guide to developing and managing APIs for your organization","author":"B De","year":"2017","unstructured":"De B (2017) API management: An architect\u2019s guide to developing and managing APIs for your organization, 1st edn. Apress, Berkeley","edition":"1"},{"key":"342_CR10","doi-asserted-by":"publisher","DOI":"10.1007\/978-1-4842-3555-3","volume-title":"Practical API architecture and development with azure and AWS","author":"T Vijayakumar","year":"2018","unstructured":"Vijayakumar T (2018) Practical API architecture and development with azure and AWS. Apress, Berkeley"},{"key":"342_CR11","unstructured":"Akamai White Paper 1 (xxxx) Strategies for API protection. https:\/\/www.akamai.com\/us\/en\/multimedia\/documents\/white-paper\/akamai-strategies-for-api-security-white-aper.pdf?utm_source=twitter&utm_medium=social_organic&utm_campaign=api"},{"key":"342_CR12","unstructured":"Akamai White Paper 2 (xxxx) Solving API performance, reliability, and security challenges. https:\/\/www.akamai.com\/uk\/en\/multimedia\/documents\/product-brief\/akamai-solving-api-security-performance-for-enterprise-applications-focus-sheet.pdf"},{"key":"342_CR13","unstructured":"RFC 6749 (2012) The OAuth 2.0 authorization framework. https:\/\/tools.ietf.org\/html\/rfc6749"},{"key":"342_CR14","unstructured":"Sakimura N, Bradley J, Jones M, de Medeiros B, Mortimore C (2014) OpenID connect core 1.0 incorporating errata set 1. The OpenID Foundation, specification"},{"key":"342_CR15","unstructured":"Sakimura N, Bradley D, de Mederiso B, Jones M, Jay E (2012) OpenID connect standard 1.0-draft 09"},{"key":"342_CR16","doi-asserted-by":"crossref","unstructured":"Sun ST, Beznosov K (2012) The devil is in the (implementation) details: an empirical analysis of OAuth SSO systems. In: Proceedings of the 2012 ACM conference on computer and communications security, pp 378\u2013390. ACM","DOI":"10.1145\/2382196.2382238"},{"key":"342_CR17","doi-asserted-by":"crossref","unstructured":"Li W, Mitchell CJ (2016) Analyzing the security of Google\u2019s implementation of OpenID connect. In: International conference on detection of intrusions and malware, and vulnerability assessment. Springer, Cham, pp 357\u2013376","DOI":"10.1007\/978-3-319-40667-1_18"},{"key":"342_CR18","doi-asserted-by":"crossref","unstructured":"Cataldo M, Herbsleb JD (2010) Architecting in software ecosystems: interface translucence as an enabler for scalable collaboration. In: Proceedings of the fourth European conference on software architecture: companion volume, pp 65\u201372. ACM","DOI":"10.1145\/1842752.1842772"},{"key":"342_CR19","doi-asserted-by":"crossref","unstructured":"Stylos J, Myers B (2007) Mapping the space of API design decisions. In: IEEE symposium on visual languages and human-centric computing, 2007. VL\/HCC 2007, pp 50\u201360. IEEE","DOI":"10.1109\/VLHCC.2007.44"},{"key":"342_CR20","doi-asserted-by":"crossref","unstructured":"Bloch J (2006) How to design a good API and why it matters. In: Companion to the 21st ACM SIGPLAN symposium on Object-oriented programming systems, languages, and applications, pp 506\u2013507. ACM","DOI":"10.1145\/1176617.1176622"},{"issue":"5","key":"342_CR21","doi-asserted-by":"publisher","first-page":"46","DOI":"10.1145\/1506409.1506424","volume":"52","author":"M Henning","year":"2009","unstructured":"Henning M (2009) API design matters. Commun ACM 52(5):46\u201356","journal-title":"Commun ACM"},{"key":"342_CR22","unstructured":"Richardson C (2015) Pattern: API gateway. Backend for front-end, pp 37\u201340. http:\/\/microservices.io\/patterns\/apigateway.html"},{"issue":"2004","key":"342_CR23","first-page":"1","volume":"33","author":"B Kitchenham","year":"2004","unstructured":"Kitchenham B (2004) Procedures for performing systematic reviews. Keele UK Keele Univ 33(2004):1\u201326","journal-title":"Keele UK Keele Univ"},{"issue":"1","key":"342_CR24","doi-asserted-by":"publisher","first-page":"58","DOI":"10.1109\/MS.2005.6","volume":"22","author":"T Dyba","year":"2005","unstructured":"Dyba T, Kitchenham BA, Jorgensen M (2005) Evidence-based software engineering for practitioners. IEEE Softw 22(1):58\u201365","journal-title":"IEEE Softw"},{"key":"342_CR25","doi-asserted-by":"crossref","unstructured":"Wohlin C (2014) Guidelines for snowballing in systematic literature studies and a replication in software engineering. In: Proceedings of the 18th international conference on evaluation and assessment in software engineering, p 38. ACM","DOI":"10.1145\/2601248.2601268"},{"key":"342_CR26","unstructured":"ISO\/IEC TS 25011 (2017) Information technology-systems and software quality requirements and evaluation (SQuaRE)\u2013service quality models. https:\/\/www.iso.org\/obp\/ui#iso:std:iso-iec:ts:25011:ed-1:v2:en"},{"issue":"3","key":"342_CR27","doi-asserted-by":"publisher","first-page":"78","DOI":"10.1109\/52.676963","volume":"15","author":"SG McLellan","year":"1998","unstructured":"McLellan SG, Roesler AW, Tempest JT, Spinuzzi CI (1998) Building more usable APIs. IEEE Softw 15(3):78\u201386","journal-title":"IEEE Softw"},{"issue":"6","key":"342_CR28","doi-asserted-by":"publisher","first-page":"27","DOI":"10.1109\/MS.2009.193","volume":"26","author":"MP Robillard","year":"2009","unstructured":"Robillard MP (2009) What makes APIs hard to learn? Answers from developers. IEEE Softw 26(6):27\u201334","journal-title":"IEEE Softw"},{"issue":"6","key":"342_CR29","doi-asserted-by":"publisher","first-page":"703","DOI":"10.1007\/s10664-010-9150-8","volume":"16","author":"MP Robillard","year":"2011","unstructured":"Robillard MP, Deline R (2011) A field study of API learning obstacles. Empir Softw Eng 16(6):703\u2013732","journal-title":"Empir Softw Eng"},{"key":"342_CR30","doi-asserted-by":"crossref","unstructured":"Piccioni M, Furia CA, Meyer B (2013) An empirical study of API usability. In: 2013 ACM\/IEEE international symposium on empirical software engineering and measurement, pp 5\u201314. IEEE","DOI":"10.1109\/ESEM.2013.14"},{"key":"342_CR31","doi-asserted-by":"crossref","unstructured":"Gamma E, Helm R, Johnson R, Vlissides J (1993) Design patterns: abstraction and reuse of object-oriented design. In: European conference on object-oriented programming. Springer, Berlin, pp 406\u2013431","DOI":"10.1007\/3-540-47910-4_21"},{"key":"342_CR32","unstructured":"Hogan A, Blomqvist E, Cochez M, d\u2019Amato C, de Melo G, Gutierrez C, Navigli R (2020) Knowledge graphs. arXiv preprint arXiv:2003.02320"},{"key":"342_CR33","doi-asserted-by":"crossref","unstructured":"Chung L, Nixon BA, Yu E, Mylopoulos J (2000) Non-functional requirements in software engineering, vol 5. Springer","DOI":"10.1007\/978-1-4615-5269-7"},{"key":"342_CR34","doi-asserted-by":"crossref","DOI":"10.4135\/9781452231389","volume-title":"The consensus building handbook: a comprehensive guide to reaching agreement","author":"LE Susskind","year":"1999","unstructured":"Susskind LE, McKearnen S, Thomas-Lamar J (1999) The consensus building handbook: a comprehensive guide to reaching agreement. Sage Publications, Oxford"},{"issue":"7","key":"342_CR35","doi-asserted-by":"publisher","first-page":"992","DOI":"10.1016\/j.is.2011.04.003","volume":"36","author":"M Jarke","year":"2011","unstructured":"Jarke M, Loucopoulos P, Lyytinen K, Mylopoulos J, Robinson W (2011) The brave new world of design requirements. Inf Syst 36(7):992\u20131008","journal-title":"Inf Syst"},{"key":"342_CR36","unstructured":"Sadi MH (2020) Assisting with API design through reusing design knowledge. Doctoral dissertation, University of Toronto, Canada"},{"issue":"2","key":"342_CR37","doi-asserted-by":"publisher","first-page":"237","DOI":"10.1177\/1098214005283748","volume":"27","author":"DR Thomas","year":"2006","unstructured":"Thomas DR (2006) A general inductive approach for analyzing qualitative evaluation data. Am J Eval 27(2):237\u2013246","journal-title":"Am J Eval"},{"key":"342_CR38","volume-title":"The coding manual for qualitative researchers","author":"J Salda\u00f1a","year":"2009","unstructured":"Salda\u00f1a J (2009) The coding manual for qualitative researchers. Sage, Oxford"},{"key":"342_CR39","volume-title":"An introduction to qualitative research","author":"U Flick","year":"2009","unstructured":"Flick U (2009) An introduction to qualitative research. Sage Publications Limited, Oxford"},{"issue":"1\u20132","key":"342_CR40","first-page":"1","volume":"4","author":"S Gulwani","year":"2017","unstructured":"Gulwani S, Polozov O, Singh R (2017) Program synthesis. Found Trends Program Lang 4(1\u20132):1\u2013119","journal-title":"Program synthesis. Found Trends Program Lang"},{"issue":"12","key":"342_CR41","doi-asserted-by":"publisher","first-page":"84","DOI":"10.1145\/3208071","volume":"61","author":"R Alur","year":"2018","unstructured":"Alur R, Singh R, Fisman D, Solar-Lezama A (2018) Search-based program synthesis. Commun ACM 61(12):84\u201393","journal-title":"Commun ACM"},{"issue":"4","key":"342_CR42","doi-asserted-by":"publisher","first-page":"80","DOI":"10.1109\/MS.2009.161","volume":"27","author":"M Robillard","year":"2009","unstructured":"Robillard M, Walker R, Zimmermann T (2009) Recommendation systems for software engineering. IEEE Softw 27(4):80\u201386","journal-title":"IEEE Softw"},{"key":"342_CR43","unstructured":"Green C (1976) The design of the PSI program synthesis system. In: Proceedings of the 2nd international conference on Soft-ware engineering. IEEE Computer Society Press, pp 4\u201318"},{"issue":"11","key":"342_CR44","doi-asserted-by":"publisher","first-page":"10","DOI":"10.1109\/2.86782","volume":"21","author":"C Rich","year":"1988","unstructured":"Rich C, Waters RC (1988) The Programmer\u2019s apprentice: a research overview. Computer 21(11):10\u201325","journal-title":"Computer"},{"key":"342_CR45","unstructured":"Holmes R, Murphy GC (2005) Using structural context to recommend source code examples. In: Proceedings of the 27th international conference on Software engineering, pp 117\u2013125"},{"key":"342_CR46","doi-asserted-by":"crossref","unstructured":"Holmes R, Walker RJ, Murphy GC (2005) Strathcona example recommendation tool. In: Proceedings of the 10th European software engineering conference held jointly with 13th ACM SIGSOFT international symposium on Foundations of software engineering, pp 237\u2013240","DOI":"10.1145\/1081706.1081744"},{"issue":"6","key":"342_CR47","doi-asserted-by":"publisher","first-page":"48","DOI":"10.1145\/1064978.1065018","volume":"40","author":"D Mandelin","year":"2005","unstructured":"Mandelin D, Xu L, Bod\u00edk R, Kimelman D (2005) Jungloid mining: helping to navigate the API jungle. ACM Sigplan Notices 40(6):48\u201361","journal-title":"ACM Sigplan Notices"},{"key":"342_CR48","doi-asserted-by":"crossref","unstructured":"Thummalapenta S, Xie T (2007) Parseweb: a programmer assistant for reusing open source code on the web. In: Proceedings of the twenty-second IEEE\/ACM international conference on Automated software engineering, pp 204\u2013213","DOI":"10.1145\/1321631.1321663"},{"key":"342_CR49","doi-asserted-by":"crossref","unstructured":"Zhong H, Xie T, Zhang L, Pei J, Mei H (2009) MAPO: mining and recommending API usage patterns. In: European conference on object-oriented programming. Springer, Berlin, pp 318\u2013343","DOI":"10.1007\/978-3-642-03013-0_15"},{"key":"342_CR50","doi-asserted-by":"crossref","unstructured":"Hindle A, Barr ET, Su Z, Gabel M, Devanbu P (2012) On the naturalness of software. In: 2012 34th international conference on software engineering (ICSE), pp 837\u2013847 IEEE","DOI":"10.1109\/ICSE.2012.6227135"},{"key":"342_CR51","doi-asserted-by":"crossref","unstructured":"Raychev V, Vechev M, Yahav E (2014) Code completion with statistical language models. In: Proceedings of the 35th ACM SIGPLAN conference on programming language design and implementation, pp 419\u2013428","DOI":"10.1145\/2594291.2594321"},{"key":"342_CR52","doi-asserted-by":"crossref","unstructured":"Zhang H, Jain A, Khandelwal G, Kaushik C, Ge S, Hu W (2016) Bing developer assistant: improving developer productivity by recommending sample code. In: Proceedings of the 2016 24th ACM SIGSOFT international symposium on foun-dations of software engineering, pp 956\u2013961","DOI":"10.1145\/2950290.2983955"},{"key":"342_CR53","unstructured":"Wei Y, Chandrasekaran N, Gulwani S, Hamadi Y (2015) Building bing developer assistant. Technical Report. MSR-TR-2015-36, Microsoft Research"},{"key":"342_CR54","doi-asserted-by":"crossref","unstructured":"Shrobe H, Katz B, Davis R (2015) Towards a programmer\u2019s apprentice (again). Center for Brains, Minds and Machines (CBMM)","DOI":"10.1609\/aaai.v29i1.9765"},{"key":"342_CR55","unstructured":"Dean T, Chiang M, Gomez M, Gruver N, Hindy Y, Lam M, Wang L (2018) Amanuensis: the programmer\u2019s apprentice. arXiv:1807.00082"},{"issue":"1","key":"342_CR56","doi-asserted-by":"publisher","first-page":"438","DOI":"10.1109\/TVCG.2018.2865240","volume":"25","author":"D Moritz","year":"2019","unstructured":"Moritz D, Wang C, Nelson GL, Lin H, Smith AM, Howe B, Heer J (2019) Formalizing visualization design knowledge as constraints: actionable and extensible models in Draco. IEEE Trans Visual Comput Graphics 25(1):438\u2013448","journal-title":"IEEE Trans Visual Comput Graphics"},{"key":"342_CR57","doi-asserted-by":"crossref","unstructured":"Green C, Luckham D, Balzer R, Cheatham T, Rich C (1986) Kestrel Institute: report on knowledge-based software assistant. In: Readings in artificial intelligence and software engineering. Morgan Kaufmann, pp 377\u2013428","DOI":"10.1016\/B978-0-934613-12-5.50034-3"},{"issue":"2","key":"342_CR58","doi-asserted-by":"publisher","first-page":"25","DOI":"10.1109\/52.506460","volume":"13","author":"B Boehm","year":"1996","unstructured":"Boehm B, In H (1996) Identifying quality-requirement conflicts. IEEE Softw 13(2):25\u201335","journal-title":"IEEE Softw"},{"key":"342_CR59","doi-asserted-by":"crossref","unstructured":"Kruchten P (2010) Where did all this good architectural knowledge go?. In: European conference on software architecture. Springer, Berlin, pp 5\u20136","DOI":"10.1007\/978-3-642-15114-9_2"},{"key":"342_CR60","unstructured":"Kazman R, Klein M, Barbacci M, Longstaff T, Lipson H, Carriere J (1998) The architecture trade-off analysis method. In: Fourth IEEE international conference on engineering of complex computer systems, ICECCS\u201998. Proceedings, pp 68\u201378. IEEE"},{"issue":"6","key":"342_CR61","doi-asserted-by":"publisher","first-page":"918","DOI":"10.1016\/j.jss.2006.08.040","volume":"80","author":"A Tang","year":"2007","unstructured":"Tang A, Jin Y, Han J (2007) A rationale-based architecture model for design traceability and reasoning. J Syst Softw 80(6):918\u2013934","journal-title":"J Syst Softw"},{"key":"342_CR62","doi-asserted-by":"crossref","unstructured":"D\u00fcrschmid T, Kang E, Garlan D (2019) Trade-off-oriented development: making quality attribute trade-offs first-class. In: 2019 IEEE\/ACM 41st international conference on software engineering: new ideas and emerging results (ICSE-NIER), pp 109\u2013112. IEEE","DOI":"10.1109\/ICSE-NIER.2019.00036"},{"key":"342_CR63","doi-asserted-by":"crossref","unstructured":"Sadi MH, Yu E (2017a) Modeling and analyzing openness trade-offs in software platforms: a goal-oriented approach. In: International working conference on requirements engineering: foundation for software quality. Springer, Cham, pp 33\u201349","DOI":"10.1007\/978-3-319-54045-0_3"},{"key":"342_CR64","doi-asserted-by":"crossref","unstructured":"Sadi MH, Yu E (2017b) Accommodating openness requirements in software platforms: a goal-oriented approach. In: International conference on advanced information systems engineering. Springer, Cham, pp 44\u201359","DOI":"10.1007\/978-3-319-59536-8_4"},{"key":"342_CR65","volume-title":"Software abstractions: logic, language, and analysis","author":"D Jackson","year":"2012","unstructured":"Jackson D (2012) Software abstractions: logic, language, and analysis. MIT press, New York"},{"issue":"2","key":"342_CR66","doi-asserted-by":"publisher","first-page":"189","DOI":"10.1007\/s00766-016-0263-5","volume":"23","author":"MC Nguyen","year":"2018","unstructured":"Nguyen MC, Sebastiani R, Giorgini P, Mylopoulos J (2018) Multi-objective reasoning with constraint goal models requirements engineering. Requir Eng 23(2):189\u2013225","journal-title":"Requir Eng"}],"container-title":["Requirements Engineering"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/link.springer.com\/content\/pdf\/10.1007\/s00766-020-00342-0.pdf","content-type":"application\/pdf","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/link.springer.com\/article\/10.1007\/s00766-020-00342-0\/fulltext.html","content-type":"text\/html","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/link.springer.com\/content\/pdf\/10.1007\/s00766-020-00342-0.pdf","content-type":"application\/pdf","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2022,12,14]],"date-time":"2022-12-14T13:19:51Z","timestamp":1671023991000},"score":1,"resource":{"primary":{"URL":"https:\/\/link.springer.com\/10.1007\/s00766-020-00342-0"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2021,2,3]]},"references-count":66,"journal-issue":{"issue":"2","published-print":{"date-parts":[[2021,6]]}},"alternative-id":["342"],"URL":"https:\/\/doi.org\/10.1007\/s00766-020-00342-0","relation":{},"ISSN":["0947-3602","1432-010X"],"issn-type":[{"value":"0947-3602","type":"print"},{"value":"1432-010X","type":"electronic"}],"subject":[],"published":{"date-parts":[[2021,2,3]]},"assertion":[{"value":"27 April 2020","order":1,"name":"received","label":"Received","group":{"name":"ArticleHistory","label":"Article History"}},{"value":"9 November 2020","order":2,"name":"accepted","label":"Accepted","group":{"name":"ArticleHistory","label":"Article History"}},{"value":"3 February 2021","order":3,"name":"first_online","label":"First Online","group":{"name":"ArticleHistory","label":"Article History"}}]}}