The past, present, and future of software evolution

Change is an essential characteristic of software development, as software systems must respond to evolving requirements, platforms, and other environmental pressures. In this paper, we discuss the concept of software evolution from several perspectives. We examine how it relates to and differs from software maintenance. We discuss insights about software evolution arising from Lehmanpsilas laws of software evolution and the staged lifecycle model of Bennett and Rajlich. We compare software evolution to other kinds of evolution, from science and social sciences, and we examine the forces that shape change. Finally, we discuss the changing nature of software in general as it relates to evolution, and we propose open challenges and future directions for software evolution research.

[1]  J. Weiner The Beak of the Finch: A Story of Evolution in Our Time , 1994 .

[2]  Janice Singer,et al.  Towards an ontology of software maintenance , 1999, J. Softw. Maintenance Res. Pract..

[3]  A. Alland,et al.  Darwin's Ghost: The Origin of Species Updated , 2000, Nature Medicine.

[4]  Ivar Jacobson,et al.  The Unified Software Development Process , 1999 .

[5]  Karim R. Lakhani,et al.  Perspectives on Free and Open Source Software , 2005 .

[6]  Michael W. Godfrey,et al.  Evolution in open source software: a case study , 2000, Proceedings 2000 International Conference on Software Maintenance.

[7]  E. Burton Swanson,et al.  The dimensions of maintenance , 1976, ICSE '76.

[8]  David Lorge Parnas,et al.  Software aging , 1994, Proceedings of 16th International Conference on Software Engineering.

[9]  Daniel M. Germán,et al.  Macro-level software evolution: a case study of a large software compilation , 2009, Empirical Software Engineering.

[10]  Robert C. Martin Agile Software Development, Principles, Patterns, and Practices , 2002 .

[11]  E. Mayr What Evolution Is , 2001 .

[12]  E. K. Gannett,et al.  THE INSTITUTE OF ELECTRICAL AND ELECTRONICS ENGINEERS , 1965 .

[13]  R. Lewontin ‘The Selfish Gene’ , 1977, Nature.

[14]  Meir M. Lehman,et al.  Program evolution: processes of software change , 1985 .

[15]  Steve Riddle,et al.  Overcoming the traceability benefit problem , 2005, 13th IEEE International Conference on Requirements Engineering (RE'05).

[16]  J. Herbsleb,et al.  Two case studies of open source software development: Apache and Mozilla , 2002, TSEM.

[17]  Steve McConnell,et al.  Rapid Development: Taming Wild Software Schedules , 1996 .

[18]  Jonathan I. Maletic,et al.  A survey and taxonomy of approaches for mining software repositories in the context of software evolution , 2007, J. Softw. Maintenance Res. Pract..

[19]  Dewayne E. Perry,et al.  Metrics and laws of software evolution-the nineties view , 1997, Proceedings Fourth International Software Metrics Symposium.

[20]  Tom Mens,et al.  Towards a taxonomy of software change , 2005, J. Softw. Maintenance Res. Pract..

[21]  Giancarlo Succi,et al.  An empirical study of open-source and closed-source software products , 2004, IEEE Transactions on Software Engineering.

[22]  Barry W. Boehm,et al.  A spiral model of software development and enhancement , 1986, Computer.

[23]  Karim R. Lakhani,et al.  Why Hackers Do What They Do: Understanding Motivation and Effort in Free/Open Source Software Projects , 2003 .

[24]  James R. Cordy,et al.  Comprehending reality - practical barriers to industrial adoption of software maintenance automation , 2003, 11th IEEE International Workshop on Program Comprehension, 2003..

[25]  Guido Hertel,et al.  Motivation of software developers in Open Source projects: an Internet-based survey of contributors to the Linux kernel , 2003 .

[26]  S. Boissinot,et al.  Evolutionary Biology , 2000, Evolutionary Biology.

[27]  Michael W. Godfrey,et al.  "Cloning Considered Harmful" Considered Harmful , 2006, 2006 13th Working Conference on Reverse Engineering.

[28]  Oscar Nierstrasz,et al.  Object-oriented reengineering patterns , 2004, Proceedings. 26th International Conference on Software Engineering.

[29]  W. W. Royce,et al.  Managing the development of large software systems: concepts and techniques , 1987, ICSE '87.

[30]  J. Jacobs The Nature of Economies , 2000 .

[31]  Dewayne E. Perry,et al.  Implications of evolution metrics on software maintenance , 1998, Proceedings. International Conference on Software Maintenance (Cat. No. 98CB36272).

[32]  M A Branch,et al.  Software maintenance management , 1986 .

[33]  E. Burton Swanson,et al.  Characteristics of application software maintenance , 1978, CACM.

[34]  Michael W. Godfrey,et al.  “Cloning considered harmful” considered harmful: patterns of cloning in software , 2008, Empirical Software Engineering.

[35]  Audris Mockus,et al.  Does Code Decay? Assessing the Evidence from Change Management Data , 2001, IEEE Trans. Software Eng..

[36]  Ned Chapin,et al.  Do we know what preventive maintenance is? , 2000, Proceedings 2000 International Conference on Software Maintenance.

[37]  M M Lehman,et al.  Software Evolution , 2002 .

[38]  Dewayne E. Perry,et al.  Software Evolution and Feedback: Theory and Practice , 2006 .

[39]  Ned Chapin,et al.  Types of software evolution and software maintenance , 2001, J. Softw. Maintenance Res. Pract..

[40]  S. Carroll Endless forms most beautiful : the new science of evo devo and the making of the animal kingdom , 2005 .

[41]  Keith H. Bennett,et al.  Software maintenance and evolution: a roadmap , 2000, ICSE '00.

[42]  Risto Vehvilainen What is preventive software maintenance? , 2000, Proceedings 2000 International Conference on Software Maintenance.

[43]  Jesús M. González-Barahona,et al.  Evolution and growth in large libre software projects , 2005, Eighth International Workshop on Principles of Software Evolution (IWPSE'05).