Effective and efficient reuse with software libraries

This thesis empirically analyzes the extent and nature of third-party code reuse in practice. Motivated by the findings, a dynamic approach for detecting functionally similar code is evaluated. An API recommendation system is introduced that assists developers during programming with software libraries by providing context-specific suggestions for API methods within the development environment. This principle is transferred to model-based development.

[1]  Florian Deissenboeck,et al.  Clone Detection Beyond Copy & Paste , 2009 .

[2]  M.L. Griss,et al.  Software reuse architecture, process, and organization for business success , 1997, Proceedings of the Eighth Israeli Conference on Computer Systems and Software Engineering.

[3]  Don S. Batory,et al.  Feature Models, Grammars, and Propositional Formulas , 2005, SPLC.

[4]  Andy Podgurski,et al.  Retrieving reusable software by sampling behavior , 1993, TSEM.

[5]  Martin P. Robillard,et al.  Asking and answering questions about unfamiliar APIs: An exploratory study , 2012, 2012 34th International Conference on Software Engineering (ICSE).

[6]  Walid Maalej,et al.  Potentials and challenges of recommendation systems for software development , 2008, RSSE '08.

[7]  Sebastian Spaeth,et al.  Code Reuse in Open Source Software , 2008, Manag. Sci..

[8]  Jonathan L. Herlocker,et al.  Evaluating collaborative filtering recommender systems , 2004, TOIS.

[9]  R. Hill,et al.  Automatic method completion , 2004 .

[10]  Claes Wohlin,et al.  Experimentation in software engineering: an introduction , 2000 .

[11]  Robin Milner,et al.  An Algebraic Definition of Simulation Between Programs , 1971, IJCAI.

[12]  Andreas Zeller,et al.  Mining API Popularity , 2010, TAIC PART.

[13]  Nam-Yong Lee,et al.  An Empirical Study of Software Reuse with Special Attention to Ada , 1997, IEEE Trans. Software Eng..

[14]  Rainer Koschke,et al.  Survey of Research on Software Clones , 2006, Duplication, Redundancy, and Similarity in Software.

[15]  Daniel T. Larose,et al.  Discovering Knowledge in Data: An Introduction to Data Mining , 2005 .

[16]  Ronald J. Leach,et al.  Software Reuse: Methods, Models, and Costs , 1997 .

[17]  Martin P. Robillard,et al.  Recommendation Systems for Software Engineering , 2010, IEEE Software.

[18]  Wayne C. Lim,et al.  Effects of reuse on quality, productivity, and economics , 1994, IEEE Software.

[19]  C. Spearman The proof and measurement of association between two things. , 2015, International journal of epidemiology.

[20]  Sushil Krishna Bajracharya,et al.  Leveraging usage similarity for effective retrieval of examples in code repositories , 2010, FSE '10.

[21]  B. Fischer,et al.  Reuse by Contract , 1997 .

[22]  Iu. I. Ianov,et al.  On the equivalence and transformation of program schemes , 1958, CACM.

[23]  Victor R. Basili,et al.  How reuse influences productivity in object-oriented systems , 1996, CACM.

[24]  J. Craig Cleaveland,et al.  Building application generators , 1988, IEEE Software.

[25]  Jonathan I. Maletic,et al.  Journal of Software Maintenance and Evolution: Research and Practice Survey a Survey and Taxonomy of Approaches for Mining Software Repositories in the Context of Software Evolution , 2022 .

[26]  Heikki Mannila,et al.  Principles of Data Mining , 2001, Undergraduate Topics in Computer Science.

[27]  Mario Gleirscher,et al.  On the Extent and Nature of Software Reuse in Open Source Java Projects , 2011, ICSR.

[28]  A. Mockus,et al.  Large-Scale Code Reuse in Open Source Software , 2007, First International Workshop on Emerging Trends in FLOSS Research and Development (FLOSS'07: ICSE Workshops 2007).

[29]  Jean-Claude Raoult,et al.  Operational and Semantic Equivalence Between Recursive Programs , 1980, JACM.

[30]  Vladimir A. Zakharov To the Functional Equivalence of Turing Machines , 1987, FCT.

[31]  Gerhard Friedrich,et al.  Recommender Systems - An Introduction , 2010 .

[32]  Zhiyi Ma,et al.  Detecting Duplications in Sequence Diagrams Based on Suffix Trees , 2006, 2006 13th Asia Pacific Software Engineering Conference (APSEC'06).

[33]  Steven P. Reiss,et al.  Semantics-based code search , 2009, 2009 IEEE 31st International Conference on Software Engineering.

[34]  Jeannette M. Wing,et al.  Signature matching: a tool for using software libraries , 1995, TSEM.

[35]  Benjamin Hummel,et al.  Recommending API methods based on identifier contexts , 2011, SUITE '11.

[36]  Eric Bodden,et al.  Effective API navigation and reuse , 2010, 2010 IEEE International Conference on Information Reuse & Integration.

[37]  Collin McMillan,et al.  Detecting similar software applications , 2012, 2012 34th International Conference on Software Engineering (ICSE).

[38]  William B. Frakes,et al.  Software reuse research: status and future , 2005, IEEE Transactions on Software Engineering.

[39]  Heejung Kim,et al.  Clone Detection by Comparing Abstract Memory States , 2010 .

[40]  Hidehiko Masuhara,et al.  A spontaneous code recommendation tool based on associative search , 2011, SUITE '11.

[41]  Remco M. Dijkman,et al.  Graph Matching Algorithms for Business Process Model Similarity Search , 2009, BPM.

[42]  Barry W. Boehm,et al.  Software Engineering Economics , 1993, IEEE Transactions on Software Engineering.

[43]  Krzysztof Czarnecki,et al.  Recommending Refactorings to Reverse Software Architecture Erosion , 2012, 2012 16th European Conference on Software Maintenance and Reengineering.

[44]  Lars Heinemann,et al.  Facilitating reuse in model-based development with context-dependent model element recommendations , 2012, 2012 Third International Workshop on Recommendation Systems for Software Engineering (RSSE).

[45]  Zhendong Su,et al.  Automatic mining of functionally equivalent code fragments via random testing , 2009, ISSTA.

[46]  Donald J. Reifer,et al.  Practical software reuse , 1997 .

[47]  Taghi M. Khoshgoftaar,et al.  A Survey of Collaborative Filtering Techniques , 2009, Adv. Artif. Intell..

[48]  Zhaofang Wen,et al.  Automatic Algorithm Recognition and Replacement: A New Approach to Program Optimization , 2000 .

[49]  Colin Atkinson,et al.  Using the Web as a Reuse Repository , 2006, ICSR.

[50]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[51]  Susan T. Dumais,et al.  The vocabulary problem in human-system communication , 1987, CACM.

[52]  Elmar Jürgens,et al.  Code Similarities Beyond Copy & Paste , 2010, 2010 14th European Conference on Software Maintenance and Reengineering.

[53]  Gail C. Murphy,et al.  Who should fix this bug? , 2006, ICSE.

[54]  Ralph E. Johnson,et al.  Design Patterns: Abstraction and Reuse of Object-Oriented Design , 1993, ECOOP.

[55]  Mel Ó Cinnéide,et al.  Rascal: A Recommender Agent for Agile Reuse , 2005, Artificial Intelligence Review.

[56]  Ralf Lämmel,et al.  Large-scale, AST-based API-usage analysis of open-source Java projects , 2011, SAC.

[57]  Ewan D. Tempero,et al.  Usage Patterns of the Java Standard API , 2006, 2006 13th Asia Pacific Software Engineering Conference (APSEC'06).

[58]  Martin P. Robillard,et al.  Improving API Usage through Automatic Detection of Redundant Code , 2009, 2009 IEEE/ACM International Conference on Automated Software Engineering.

[59]  Tao Xie,et al.  Parseweb: a programmer assistant for reusing open source code on the web , 2007, ASE.

[60]  Koushik Sen,et al.  SNIFF: A Search Engine for Java Using Free-Form Queries , 2009, FASE.

[61]  Heinz Pozewaunig,et al.  Classifying Components by Behavioral Abstraction , 2007 .

[62]  Chaomei Chen,et al.  Mining the Web: Discovering knowledge from hypertext data , 2004, J. Assoc. Inf. Sci. Technol..

[63]  Andreas Zeller,et al.  Mining version histories to guide software changes , 2005, Proceedings. 26th International Conference on Software Engineering.

[64]  William E. Perry,et al.  Effective methods for software testing , 1995 .

[65]  August Climent,et al.  An Input/Output Semantics for Distributed Program Equivalence Reasoning , 2005, PROLE.

[66]  A. Viera,et al.  Understanding interobserver agreement: the kappa statistic. , 2005, Family medicine.

[67]  Joseph D. Rutledge On Ianov's Program Schemata , 1964, JACM.

[68]  Thomas L. Harman,et al.  Mastering Simulink , 2003 .

[69]  Even-André Karlsson,et al.  Software reuse: a holistic approach , 1995 .

[70]  Stefan Wagner,et al.  Challenges of the Dynamic Detection of Functionally Similar Code Fragments , 2012, 2012 16th European Conference on Software Maintenance and Reengineering.

[71]  Elmar Jürgens,et al.  Index-based code clone detection: incremental, distributed, scalable , 2010, 2010 IEEE International Conference on Software Maintenance.

[72]  Chanchal K. Roy,et al.  A Survey on Software Clone Detection Research , 2007 .

[73]  Rainer Koschke,et al.  Clone Detection Using Abstract Syntax Suffix Trees , 2006, 2006 13th Working Conference on Reverse Engineering.

[74]  Rastislav Bodík,et al.  Jungloid mining: helping to navigate the API jungle , 2005, PLDI '05.

[75]  R. Armstrong The Long Tail: Why the Future of Business Is Selling Less of More , 2008 .

[76]  Geoffrey I. Webb,et al.  Encyclopedia of Machine Learning , 2011, Encyclopedia of Machine Learning.

[77]  Martin P. Robillard,et al.  What Makes APIs Hard to Learn? Answers from Developers , 2009, IEEE Software.

[78]  Joachim Henkel,et al.  Code Reuse in Open Source Software Development: Quantitative Evidence, Drivers, and Impediments , 2010, J. Assoc. Inf. Syst..

[79]  Shinji Kusumoto,et al.  CCFinder: A Multilinguistic Token-Based Code Clone Detection System for Large Scale Source Code , 2002, IEEE Trans. Software Eng..

[80]  Chanchal Kumar Roy,et al.  Comparison and evaluation of code clone detection techniques and tools: A qualitative approach , 2009, Sci. Comput. Program..

[81]  Robert J. Walker,et al.  Informing Eclipse API production and consumption , 2007, eclipse '07.

[82]  Jian Pei,et al.  MAPO: Mining and Recommending API Usage Patterns , 2009, ECOOP.

[83]  Brad A. Myers,et al.  Apatite: a new interface for exploring APIs , 2010, CHI.

[84]  Yi Zhang,et al.  Automatic parameter recommendation for practical API usage , 2012, 2012 34th International Conference on Software Engineering (ICSE).

[85]  Emily Hill,et al.  Automatically capturing source code context of NL-queries for software maintenance and reuse , 2009, 2009 IEEE 31st International Conference on Software Engineering.

[86]  Markus Herrmannsdoerfer,et al.  Identifier-Based Context-Dependent API Method Recommendation , 2012, 2012 16th European Conference on Software Maintenance and Reengineering.

[87]  Elmar Jürgens,et al.  CloneDetective - A workbench for clone detection research , 2009, 2009 IEEE 31st International Conference on Software Engineering.

[88]  Zhendong Su,et al.  DECKARD: Scalable and Accurate Tree-Based Detection of Code Clones , 2007, 29th International Conference on Software Engineering (ICSE'07).

[89]  Romain Robbes,et al.  Improving code completion with program history , 2010, Automated Software Engineering.

[90]  Michael D. Ernst,et al.  Feedback-Directed Random Test Generation , 2007, 29th International Conference on Software Engineering (ICSE'07).

[91]  Mira Mezini,et al.  Learning from examples to improve code completion systems , 2009, ESEC/SIGSOFT FSE.

[92]  Sebastian Spaeth,et al.  Knowledge Reuse in Open Source Software: An Exploratory Study of 15 Open Source Projects , 2005, Proceedings of the 38th Annual Hawaii International Conference on System Sciences.

[93]  Klaus Pohl,et al.  Software Product Line Engineering - Foundations, Principles, and Techniques , 2005 .

[94]  Gail C. Murphy,et al.  Using structural context to recommend source code examples , 2005, Proceedings. 27th International Conference on Software Engineering, 2005. ICSE 2005..

[95]  Colin Atkinson,et al.  Code Conjurer: Pulling Reusable Software out of Thin Air , 2008, IEEE Software.

[96]  Abraham Bernstein,et al.  Detecting similar Java classes using tree algorithms , 2006, MSR '06.

[97]  James B. Dabney,et al.  Mastering Simulink 4 , 2001 .

[98]  Gerhard Fischer,et al.  Cognitive View of Reuse and Redesign , 1987, IEEE Software.

[99]  Elmar Jürgens,et al.  Do code clones matter? , 2009, 2009 IEEE 31st International Conference on Software Engineering.

[100]  Bernhard Schätz,et al.  Clone detection in automotive model-based development , 2008, 2008 ACM/IEEE 30th International Conference on Software Engineering.

[101]  Frank Yellin,et al.  The Java Virtual Machine Specification , 1996 .

[102]  David W. Corne,et al.  Reuse-based software engineering: techniques, organizations, and controls [Book Review] , 2002, Computer.

[103]  Andrew M. Pitts,et al.  Operational Semantics and Program Equivalence , 2000, APPSEM.

[104]  Gerhard Fischer,et al.  Information delivery in support of learning reusable software components on demand , 2002, IUI '02.

[105]  Vladimir A. Zakharov,et al.  The Equivalence Problem for Computational Models: Decidable and Undecidable Cases , 2001, MCU.

[106]  Charles W. Krueger,et al.  Software reuse , 1992, CSUR.

[107]  Marcus A. Rothenberger,et al.  Software reuse strategies and component markets , 2003, CACM.

[108]  Alessandro Bozzon,et al.  Content-based search of model repositories with graph matching techniques , 2011, SUITE '11.

[109]  Michael R. Lyu,et al.  Cross-library API recommendation using web search engines , 2011, ESEC/FSE '11.

[110]  Stéphane Ducasse,et al.  Semantic clustering: Identifying topics in source code , 2007, Inf. Softw. Technol..

[111]  D. Spinellis,et al.  How is open source affecting software development? , 2004, IEEE Software.

[112]  Roland Mittermeir,et al.  A survey of software reuse libraries , 1998, Ann. Softw. Eng..

[113]  Douglas C. Schmidt,et al.  Object-oriented application frameworks , 1997, CACM.

[114]  Martin P. Robillard,et al.  Using Structure-Based Recommendations to Facilitate Discoverability in APIs , 2011, ECOOP.

[115]  A.E. Hassan,et al.  The road ahead for Mining Software Repositories , 2008, 2008 Frontiers of Software Maintenance.

[116]  Akito Monden,et al.  Javawock: A Java Class Recommender System Based on Collaborative Filtering , 2005, SEKE.

[117]  Ramakrishnan Srikant,et al.  Fast algorithms for mining association rules , 1998, VLDB 1998.