{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,2,21]],"date-time":"2025-02-21T07:20:50Z","timestamp":1740122450732,"version":"3.37.3"},"reference-count":23,"publisher":"Springer Science and Business Media LLC","issue":"2","license":[{"start":{"date-parts":[[2021,2,27]],"date-time":"2021-02-27T00:00:00Z","timestamp":1614384000000},"content-version":"tdm","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0"},{"start":{"date-parts":[[2021,2,27]],"date-time":"2021-02-27T00:00:00Z","timestamp":1614384000000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0"}],"funder":[{"DOI":"10.13039\/501100001659","name":"Deutsche Forschungsgemeinschaft","doi-asserted-by":"publisher","award":["206\/7-1"],"award-info":[{"award-number":["206\/7-1"]}],"id":[{"id":"10.13039\/501100001659","id-type":"DOI","asserted-by":"publisher"}]},{"DOI":"10.13039\/501100001659","name":"Deutsche Forschungsgemeinschaft","doi-asserted-by":"publisher","award":["206\/4-1"],"award-info":[{"award-number":["206\/4-1"]}],"id":[{"id":"10.13039\/501100001659","id-type":"DOI","asserted-by":"publisher"}]},{"DOI":"10.13039\/501100001659","name":"Deutsche Forschungsgemeinschaft","doi-asserted-by":"publisher","award":["206\/6-1"],"award-info":[{"award-number":["206\/6-1"]}],"id":[{"id":"10.13039\/501100001659","id-type":"DOI","asserted-by":"publisher"}]}],"content-domain":{"domain":["link.springer.com"],"crossmark-restriction":false},"short-container-title":["Empir Software Eng"],"published-print":{"date-parts":[[2021,3]]},"abstract":"<jats:title>Abstract<\/jats:title><jats:p>In scientific computing, researchers often use feature-rich software frameworks to simulate physical, chemical, and biological processes. Commonly, researchers follow a <jats:italic>clone-and-own approach<\/jats:italic>: Copying the code of an existing, similar simulation and adapting it to the new simulation scenario. In this process, a user has to select suitable artifacts (e.g., classes) from the given framework and replaces the existing artifacts from the cloned simulation. This manual process incurs substantial effort and cost as scientific frameworks are complex and provide large numbers of artifacts. To support researchers in this area, we propose a lightweight API-based analysis approach, called VORM, that recommends appropriate artifacts as possible alternatives for replacing given artifacts. Such alternative artifacts can speed up performance of the simulation or make it amenable to other use cases, without modifying the overall structure of the simulation. We evaluate the practicality of VORM\u2014especially, as it is very lightweight but possibly imprecise\u2014by means of a case study on the DUNE numerics framework and two simulations from the realm of physical simulations. Specifically, we compare the recommendations by VORM with recommendations by a domain expert (a developer of DUNE). VORM recommended 34 out of the 37 artifacts proposed by the expert. In addition, it recommended 2 artifacts that are applicable but have been missed by the expert and 32 artifacts not recommended by the expert, which however are still applicable in the simulation scenario with slight modifications. Diving deeper into the results, we identified an undiscovered bug and an inconsistency in DUNE, which corroborates the usefulness of VORM.<\/jats:p>","DOI":"10.1007\/s10664-020-09922-8","type":"journal-article","created":{"date-parts":[[2021,2,27]],"date-time":"2021-02-27T17:03:11Z","timestamp":1614445391000},"update-policy":"https:\/\/doi.org\/10.1007\/springer_crossmark_policy","source":"Crossref","is-referenced-by-count":0,"title":["Lightweight, semi-automatic variability extraction: a case study on scientific computing"],"prefix":"10.1007","volume":"26","author":[{"ORCID":"https:\/\/orcid.org\/0000-0002-4740-2440","authenticated-orcid":false,"given":"Alexander","family":"Grebhahn","sequence":"first","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Christian","family":"Kaltenecker","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Christian","family":"Engwer","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Norbert","family":"Siegmund","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Sven","family":"Apel","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"297","published-online":{"date-parts":[[2021,2,27]]},"reference":[{"unstructured":"Aln\u00e6s M, Blechta J, Hake J, Johansson A, Kehlet B, Logg A, Richardson C, Ring J, Rognes M, Wells G (2015) The FEniCS project version 1.5. Archive of Numerical Software 3(100)","key":"9922_CR1"},{"issue":"2\u20133","key":"9922_CR2","doi-asserted-by":"publisher","first-page":"121","DOI":"10.1007\/s00607-008-0004-9","volume":"82","author":"P Bastian","year":"2008","unstructured":"Bastian P, Blatt M, Dedner A, Engwer C, Kl\u00f6fkorn R, Kornhuber R, Ohlberger M, Sander O (2008a) A generic grid interface for parallel and adaptive scientific computing. Part II: implementation and tests in DUNE. Computing 82(2\u20133):121\u2013138","journal-title":"Computing"},{"issue":"2\u20133","key":"9922_CR3","doi-asserted-by":"publisher","first-page":"103","DOI":"10.1007\/s00607-008-0003-x","volume":"82","author":"P Bastian","year":"2008","unstructured":"Bastian P, Blatt M, Dedner A, Engwer C, Kl\u00f6fkorn R, Ohlberger M, Sander O (2008b) A generic grid interface for parallel and adaptive scientific computing. Part I: abstract framework. Computing 82(2\u20133):103\u2013119","journal-title":"Computing"},{"key":"9922_CR4","first-page":"294","volume":"46","author":"P Bastian","year":"2010","unstructured":"Bastian P, Heimann F, Marnach S (2010) Generic implementation of finite element methods in the distributed and unified numerics environment (DUNE). Kybernetika 46:294\u2013315","journal-title":"Kybernetika"},{"key":"9922_CR5","doi-asserted-by":"publisher","DOI":"10.1017\/CBO9780511618635","volume-title":"Finite elements: theory, fast solvers and applications in solid mechanics","author":"D Braess","year":"2007","unstructured":"Braess D (2007) Finite elements: theory, fast solvers and applications in solid mechanics. Cambridge University Press, Cambridge"},{"doi-asserted-by":"crossref","unstructured":"Dietrich C, Tartler R, Schr\u00f6der-Preikschat W, Lohmann D (2012) A robust approach for variability extraction from the linux build system. In: Proceedings of the international software product line conference, ACM, SPLC, pp 21\u201330","key":"9922_CR6","DOI":"10.1145\/2362536.2362544"},{"doi-asserted-by":"crossref","unstructured":"Falgout RD, Yang UM (2002) Hypre: a library of high performance preconditioners. In: Proceedings of the international conference on computational science-part III, Springer, ICCS, pp 632\u2013641","key":"9922_CR7","DOI":"10.1007\/3-540-47789-6_66"},{"issue":"17","key":"9922_CR8","first-page":"4119:1","volume":"29","author":"A Grebhahn","year":"2017","unstructured":"Grebhahn A, Engwer C, Bolten M, Apel S (2017) Variability of stencil computations for porous media. Concurrency and Computation: Practice and Experience 29(17):4119:1\u20134119:14","journal-title":"Concurrency and Computation: Practice and Experience"},{"doi-asserted-by":"crossref","unstructured":"Kawrykow D, Robillard MP (2009) Improving API usage through automatic detection of redundant code. In: Proceedings of the international conference on automated software engineering, IEEE, ASE, pp 111\u2013122","key":"9922_CR9","DOI":"10.1109\/ASE.2009.62"},{"unstructured":"Knabner P, Angerman L (2003) Numerical methods for elliptic and parabolic partial differential equations. Texts in Applied Mathematics, Springer","key":"9922_CR10"},{"doi-asserted-by":"crossref","unstructured":"Lengauer C, Apel S, Bolten M, Chiba S, R\u00fcde U, Teich J, Gr\u00f6\u00dflinger A, Hannig F, K\u00f6stler H, Claus L, Grebhahn A, Groth S, Kronawitter S, Kuckuk S, Rittich H, Schmitt C, Schmitt J (2020) Exastencils\u2013advanced multigrid solver generation. In: Software for exascale computing \u2013 SPPEXA 2016\u20132019, lecture notes in computer science and engineering, Springer","key":"9922_CR11","DOI":"10.1007\/978-3-030-47956-5_14"},{"doi-asserted-by":"crossref","unstructured":"Li Y, Schulze S, Saake G (2017) Reverse engineering variability from natural language documents: a systematic literature review. In: Proceedings of the international systems and software product line conference, ACM, SPLC, pp 133\u2013142","key":"9922_CR12","DOI":"10.1145\/3106195.3106207"},{"doi-asserted-by":"crossref","unstructured":"Li Y, Schulze S, Xu J (2020) Feature terms prediction: a feasible way to indicate the notion of features in software product line. In: Proceedings of the evaluation and assessment in software engineering, ACM, EASE, pp 90\u201399","key":"9922_CR13","DOI":"10.1145\/3383219.3383229"},{"issue":"12","key":"9922_CR14","doi-asserted-by":"publisher","first-page":"1784","DOI":"10.1093\/comjnl\/bxw027","volume":"59","author":"M Mefteh","year":"2016","unstructured":"Mefteh M, Bouassida N, Ben-Abdallah H (2016) Mining feature models from functional requirements. Comput J 59(12):1784\u20131804","journal-title":"Comput J"},{"doi-asserted-by":"crossref","unstructured":"Negara S, Codoban M, Dig D, Johnson RE (2014) Mining fine-grained code changes to detect unknown change patterns. In: Proceedings of the international conference on software engineering, ACM, ICSE, pp 803\u2013813","key":"9922_CR15","DOI":"10.1145\/2568225.2568317"},{"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: Proceedings of the international symposium on foundations of software engineering, ACM, FSE, pp 511\u2013522","key":"9922_CR16","DOI":"10.1145\/2950290.2950333"},{"issue":"1","key":"9922_CR17","doi-asserted-by":"publisher","first-page":"21","DOI":"10.1177\/1094342004041291","volume":"18","author":"M P\u00fcschel","year":"2004","unstructured":"P\u00fcschel M, Moura JMF, Singer B, Xiong J, Johnson J, Padua D, Veloso M, Johnson RW (2004) Spiral: a generator for platform-adapted libraries of signal processing alogorithms. The International Journal of High Performance Computing Applications 18(1):21\u201345","journal-title":"The International Journal of High Performance Computing Applications"},{"unstructured":"Remmel H (2014) Supporting the quality assurance of a scientific framework. Dissertation, Ruperto-Carola University of Heidelberg","key":"9922_CR18"},{"doi-asserted-by":"crossref","unstructured":"Shull F, Singer J, Sj\u00f8berg DI (2007) Guide to advanced empirical software engineering. Springer","key":"9922_CR19","DOI":"10.1007\/978-1-84800-044-5"},{"doi-asserted-by":"crossref","unstructured":"Thung F, Lo D, Lawall J (2013) Automated library recommendation. In: Proceedings of the working conference on reverse engineering, IEEE, WCRE, pp 182\u2013191","key":"9922_CR20","DOI":"10.1109\/WCRE.2013.6671293"},{"issue":"4","key":"9922_CR21","doi-asserted-by":"publisher","first-page":"165","DOI":"10.1007\/s00791-014-0232-9","volume":"16","author":"A Vogel","year":"2013","unstructured":"Vogel A, Reiter S, Rupp M, N\u00e4gel A, Wittum G (2013) UG 4: a novel flexible software system for simulating PDE based models on high performance computers. Comput Vis Sci 16(4):165\u2013179","journal-title":"Comput Vis Sci"},{"doi-asserted-by":"crossref","unstructured":"Zhang B, Becker M (2012) Code-based variability model extraction for software product line improvement. In: Proceedings of the international software product line conference, ACM, SPLC, pp 91\u201398","key":"9922_CR22","DOI":"10.1145\/2364412.2364428"},{"doi-asserted-by":"crossref","unstructured":"Zhang C, Yang J, Zhang Y, Fan J, Zhang X, Zhao J, Ou P (2012) Automatic parameter recommendation for practical API usage. In: Proceedings of the international conference on software engineering, IEEE, ICSE, pp 826\u2013836","key":"9922_CR23","DOI":"10.1109\/ICSE.2012.6227136"}],"container-title":["Empirical Software Engineering"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/link.springer.com\/content\/pdf\/10.1007\/s10664-020-09922-8.pdf","content-type":"application\/pdf","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/link.springer.com\/article\/10.1007\/s10664-020-09922-8\/fulltext.html","content-type":"text\/html","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/link.springer.com\/content\/pdf\/10.1007\/s10664-020-09922-8.pdf","content-type":"application\/pdf","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2021,5,25]],"date-time":"2021-05-25T17:10:14Z","timestamp":1621962614000},"score":1,"resource":{"primary":{"URL":"https:\/\/link.springer.com\/10.1007\/s10664-020-09922-8"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2021,2,27]]},"references-count":23,"journal-issue":{"issue":"2","published-print":{"date-parts":[[2021,3]]}},"alternative-id":["9922"],"URL":"https:\/\/doi.org\/10.1007\/s10664-020-09922-8","relation":{},"ISSN":["1382-3256","1573-7616"],"issn-type":[{"type":"print","value":"1382-3256"},{"type":"electronic","value":"1573-7616"}],"subject":[],"published":{"date-parts":[[2021,2,27]]},"assertion":[{"value":"4 December 2020","order":1,"name":"accepted","label":"Accepted","group":{"name":"ArticleHistory","label":"Article History"}},{"value":"27 February 2021","order":2,"name":"first_online","label":"First Online","group":{"name":"ArticleHistory","label":"Article History"}}],"article-number":"23"}}