Theoretical Background and State-of-the-Art

This chapter provides an overview of the background knowledge that is relevant to the main areas of application of this book. The areas of software engineering, software reuse, and software quality are discussed in the context of taking advantage of useful data in order to improve the software development process. Upon providing the relevant definitions and outlining the data and metrics provided as part of software development, we discuss how data mining techniques can be applied to software engineering data and illustrate the reuse potential that is provided in an integrated manner.

[1]  R. Holmes,et al.  Using structural context to recommend source code examples , 2005, Proceedings. 27th International Conference on Software Engineering, 2005. ICSE 2005..

[2]  David W. Binkley,et al.  Source Code Analysis: A Road Map , 2007, Future of Software Engineering (FOSE '07).

[3]  Hany H. Ammar,et al.  Dynamic metrics for object oriented designs , 1999, Proceedings Sixth International Software Metrics Symposium (Cat. No.PR00403).

[4]  S. Ghaisas,et al.  Knowledge-Assisted Ontology-Based Requirements Evolution , 2013, Managing Requirements Knowledge.

[5]  Roel Vertegaal,et al.  SnipMatch: using source code context to enhance snippet retrieval and parameterization , 2012, UIST.

[6]  Philip J. Guo,et al.  Two studies of opportunistic programming: interleaving web foraging, learning, and writing code , 2009, CHI.

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

[8]  David Hovemeyer,et al.  Using Static Analysis to Find Bugs , 2008, IEEE Software.

[9]  Vipin Kumar,et al.  Introduction to Data Mining , 2022, Data Mining and Machine Learning Applications.

[10]  Alberto Sillitti,et al.  Service Oriented Programming: A New Paradigm of Software Reuse , 2002, ICSR.

[11]  Francesco Ricci,et al.  Recommendation and decision technologies for requirements engineering , 2010, RSSE '10.

[12]  Peter Freeman,et al.  Domain engineering for software reuse , 1988 .

[13]  Christoph Pohl,et al.  An Exploratory Study of Information Retrieval Techniques in Domain Analysis , 2008, 2008 12th International Software Product Line Conference.

[14]  Colin Atkinson,et al.  Extreme Harvesting: test driven discovery and reuse of software components , 2004, Proceedings of the 2004 IEEE International Conference on Information Reuse and Integration, 2004. IRI 2004..

[15]  Kent L. Beck,et al.  Extreme programming explained - embrace change , 1990 .

[16]  Manish Kumar,et al.  Towards knowledge assisted agile requirements evolution , 2010, RSSE '10.

[17]  Claire Le Goues,et al.  Measuring Code Quality to Improve Specification Mining , 2012, IEEE Transactions on Software Engineering.

[18]  Hironori Washizaki,et al.  A Framework for Measuring and Evaluating Program Source Code Quality , 2007, PROFES.

[19]  Haiyan Zhao,et al.  An approach to constructing feature models based on requirements clustering , 2005, 13th IEEE International Conference on Requirements Engineering (RE'05).

[20]  T. Capers Jones,et al.  Estimating software costs , 1998 .

[21]  Amiram Yehudai,et al.  Example Overflow: Using social media for code recommendation , 2012, 2012 Third International Workshop on Recommendation Systems for Software Engineering (RSSE).

[22]  Sushil Krishna Bajracharya,et al.  CodeGenie:: a tool for test-driven source code search , 2007, OOPSLA '07.

[23]  Diomidis Spinellis,et al.  Data mining in software engineering , 2011, Intell. Data Anal..

[24]  Diomidis Spinellis Code Quality: The Open Source Perspective (Effective Software Development Series) , 2006 .

[25]  John Favaro,et al.  Opportunities for software reuse in an uncertain world: From past to emerging trends , 2019, J. Softw. Evol. Process..

[26]  Maurice H. Halstead,et al.  Elements of software science (Operating and programming systems series) , 1977 .

[27]  G. Myers,et al.  The Art of Software Testing: Myers/Art , 2012 .

[28]  Mark Lorenz,et al.  Object-oriented software metrics - a practical guide , 1994 .

[29]  Sushil Krishna Bajracharya,et al.  Sourcerer: a search engine for open source code supporting structure-based search , 2006, OOPSLA '06.

[30]  Rubén Prieto-Díaz,et al.  DARE: Domain analysis and reuse environment , 1998, Ann. Softw. Eng..

[31]  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 .

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

[33]  Chao Liu,et al.  Data Mining for Software Engineering , 2009, Computer.

[34]  Lionel C. Briand,et al.  Dynamic coupling measurement for object-oriented software , 2004, IEEE Transactions on Software Engineering.

[35]  Ian H. Witten,et al.  Data mining: practical machine learning tools and techniques, 3rd Edition , 1999 .

[36]  Rosalva E. Gallardo-Valencia,et al.  Finding Source Code on the Web for Remix and Reuse , 2013, Springer New York.

[37]  James M. Bieman,et al.  Software Metrics: A Rigorous and Practical Approach, Third Edition , 2014 .

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

[39]  Robert M. Pirsig Man and Machine. (Book Reviews: Zen and the Art of Motorcycle Maintenance. An Inquiry into Values) , 1974 .

[40]  Shari Lawrence Pfleeger,et al.  Software Quality: The Elusive Target , 1996, IEEE Softw..

[41]  Jan van Katwijk,et al.  Reuse dimensions , 1995, SSR '95.

[42]  Guillermo Arango,et al.  Domain Analysis and Software Systems Modeling , 1991 .

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

[44]  Kent L. Beck,et al.  Test-driven Development - by example , 2002, The Addison-Wesley signature series.

[45]  Brian Henderson-Sellers,et al.  Object-Oriented Metrics , 1995, TOOLS.

[46]  Anil Kumar Thurimella,et al.  Towards a Research Agenda for Recommendation Systems in Requirements Engineering , 2009, 2009 Second International Workshop on Managing Requirements Knowledge.

[47]  Kajal T. Claypool,et al.  XSnippet: mining For sample code , 2006, OOPSLA '06.

[48]  Dursun Delen,et al.  Data, information and analytics as services , 2013, Decis. Support Syst..

[49]  Sumit Gulwani,et al.  Building Bing Developer Assistant , 2015 .

[50]  Hinrich Schütze,et al.  Introduction to information retrieval , 2008 .

[51]  Ahmed E. Hassan,et al.  Predicting faults using the complexity of code changes , 2009, 2009 IEEE 31st International Conference on Software Engineering.

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

[53]  Sushil Krishna Bajracharya,et al.  Sourcerer: mining and searching internet-scale software repositories , 2008, Data Mining and Knowledge Discovery.

[54]  Fernando Brito e Abreu,et al.  Candidate metrics for object-oriented software within a taxonomy framework , 1994, J. Syst. Softw..

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

[56]  Zhenchang Xing,et al.  What help do developers seek, when and how? , 2013, 2013 20th Working Conference on Reverse Engineering (WCRE).

[57]  Nasser M. Nasrabadi,et al.  Pattern Recognition and Machine Learning , 2006, Technometrics.

[58]  Steve Mcconnel,et al.  Code complete, 2nd ed. , 2014 .

[59]  Tiago L. Alves,et al.  Deriving metric thresholds from benchmark data , 2010, 2010 IEEE International Conference on Software Maintenance.

[60]  Roberto da Silva Bigonha,et al.  Identifying thresholds for object-oriented software metrics , 2012, J. Syst. Softw..

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

[62]  Jian Pei,et al.  MAPO: mining API usages from open source repositories , 2006, MSR '06.

[63]  Roger S. Pressman,et al.  Software Engineering: A Practitioner's Approach , 1982 .

[64]  Witold Pedrycz,et al.  A comparative analysis of the efficiency of change metrics and static code attributes for defect prediction , 2008, 2008 ACM/IEEE 30th International Conference on Software Engineering.

[65]  Rachel K. E. Bellamy,et al.  Moving into a new software project landscape , 2010, 2010 ACM/IEEE 32nd International Conference on Software Engineering.

[66]  Taghi M. Khoshgoftaar,et al.  Unsupervised learning for expert-based software quality estimation , 2004, Eighth IEEE International Symposium on High Assurance Systems Engineering, 2004. Proceedings..

[67]  Andrew R. Webb,et al.  Statistical Pattern Recognition , 1999 .

[68]  Chris F. Kemerer,et al.  A Metrics Suite for Object Oriented Design , 2015, IEEE Trans. Software Eng..

[69]  Frank Maurer,et al.  An Assessment of Test-Driven Reuse: Promises and Pitfalls , 2013, ICSR.

[70]  Johannes Sametinger,et al.  Software Engineering with Reusable Components , 1997, Springer Berlin Heidelberg.

[71]  Jiawei Han,et al.  Data Mining: Concepts and Techniques , 2000 .

[72]  Jitender Kumar Chhabra,et al.  A survey of dynamic software metrics , 2010 .

[73]  Colin Atkinson,et al.  An unabridged source code dataset for research in software reuse , 2013, 2013 10th Working Conference on Mining Software Repositories (MSR).

[74]  Boris Beizer,et al.  Software testing techniques (2. ed.) , 1990 .

[75]  David Hovemeyer,et al.  Evaluating and tuning a static analysis to find null pointer bugs , 2005, PASTE '05.

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