Skip to main content

Software Evolution and Software Evolution Processes

Abstract

Most of the software in regular use in businesses and organisations all over the world cannot be completely specified. It cannot be implemented, once and for all. Both the original implementation and the inevitable subsequent evolution (maintenance) are a continual learning experience driven, inter alia, by feedback from the results of the behaviour under execution of the software, as perceived by various stakeholders, by advances and growth in the user organisations and by adaptation to changes in the external world, both independent and as a result of installation and use of the software. Real world, termed type-E, software is essentially evolutionary in nature. The study of the processes of evolution of such software is of considerable interest, as is that of the domains that co-evolve with the software. After briefly discussing the meaning of the term evolution in the context of software, its technology, the software process and related domains, this paper describes some of the facets of the evolution phenomenon and implications to the evolution process as identified during many years of active interest in the topic.

This is a preview of subscription content, access via your institution.

References

  • Abdel-Hamid, T.K. and S.E. Madnick (1991), Software Project Dynamics - An Integrated Approach, Prentice-Hall, Englewood Cliffs, NJ, 264 pp.

    Google Scholar 

  • Antó n, A. and C. Potts (2001), “Functional Paleontology: System Evolution as the User Sees It, ” In Proceedings of the 23rd International Conference on Software Engineering, Toronto, 12- 19 May, IEEE Computer Society Press, Los Alamitos, CA, pp. 421–430.

    Google Scholar 

  • Apt, K.R. and D. Kozen (1986), “Limits for Automatic Program Verification of Finite-State Concurrent Systems, ” Information Processing Letters 22, 6.

  • Basili, V.R. et al. (1996), “Understanding and Predicting the Process of Software Maintenance Releases, ” Proceedings of the 18th International Conference on Software Engineering, Berlin, March 25- 29, IEEE Computer Society Press, Los Alamitos, CA.

    Google Scholar 

  • Belady, L.A. and M.M. Lehman (1972), “An Introduction to Program Growth Dynamics, ” In Statistical Computer Performance Evaluation, W. Freiburger, Ed., Academic Press, New York, pp. 503–511.

    Google Scholar 

  • Bennett, K.H. and V.T. Rajlich (2000), “Software Maintenance and Evolution: a Roadmap, ” In The Future of Software Engineering, ICSE 2000, A. Finkelstein, Ed., June 4- 11, Limerick, Ireland, ACM Press, pp. 75–87.

    Google Scholar 

  • Bersoff, E.H., V.D. Henderson, and S.G. Siegel (1980), Software Configuration Management, Prentice-Hall.

  • Boehm, B.W. (1976), “Software Engineering, ” IEEE Transactions on Computers C-25, 12, 1226–1241.

    Google Scholar 

  • Boehm, B.W. (1988), “A Spiral Model of Software Development and Enhancement, ” Computer 21, May, 61- 72.

  • Chatters, B.W. et al. (2000), “Modelling a Long Term Software Evolution Process, ” Journal of Software Process - Improvement and Practice 5, 2/3, June/September, 91–102.

    Google Scholar 

  • Chong-Hok-Yuen, C.K.S. (1981), “Phenomenology of Program Maintenance and Evolution, ” PhD thesis, Department of Computing, Imperial College.

  • Dijkstra, E.W. (1968a), “A Constructive Approach to the Problem of Program Correctness, ” BIT 8, 3, 174–186.

    Google Scholar 

  • Dijkstra, E.W. (1968b), “GOTO Statement Considered Harmful, ” Letter to the Editor, Communications of the ACM 11, 11, 147–148.

    Google Scholar 

  • Dijkstra, E.W. (1972a), “Notes on Structured Programming, ” In Structured Programming, O.J. Dahl, E.W. Dijkstra, and C.A.R. Hoare, Eds., Academic Press, pp. 1- 82.

  • Dijkstra, E.W. (1972b), “The Humble Programmer, ” ACM Turing Award Lecture, Communications of the ACM 15, 10, October, 859–866.

    Google Scholar 

  • El Eman, K. et al. (1998), SPICE: The Theory and Practice of Software Process Improvement and Capability Determination, IEEE CS Press.

  • FFSE (2001), “International Session on Formal Foundations of Software Evolution, ” 13 March, Lisbon, Portugal, http://prog.vub.ac.be/poolresearch/FFSE/FFSE-Workshop.html

  • Forrester, J.W. (1961), Industrial Dynamics, MIT Press, Cambridge, MA.

    Google Scholar 

  • Fowler, M. (1999), Refactoring: Improving the Design of Code, Addison-Wesley, New York.

    Google Scholar 

  • Godfrey, M.W. and Q. Tu (2000), “Evolution in Open Source Software: A Case Study, ” In Proceedings of the International Conference on Software Maintenance, 11- 14 October, San Jose, CA, pp. 131- 142.

  • Gries, D., Ed. (1978), Programming Methodology - A Collection of Articles by Members of IFIP WG2.3, Springer Verlag, New York, 437 pp.

    Google Scholar 

  • Gilb, T. (1981), “Evolutionary Development, ” ACM Software Engineering Notes 6, 2, April.

  • Gilb, T. (1988), Principles of Software Engineering Management, Addison-Wesley, Wokingham, England.

    Google Scholar 

  • Hartswood, M. et al. (2002), “Cunning Plans: Some Notes on Plans, Procedures and CSCW, ” RQ - Newsletter of The Requirements Engineering Specialist Group, BCS, issue 25, January, http://www.resg.org.uk

  • Henderson, P., Ed. (2000), Systems Engineering for Business Process Change - Collected Papers from the EPSRC Research Programme, Springer, London, 315 pp.

    Google Scholar 

  • Hoare, C.A.R. (1969), “An Axiomatic Basis for Computer Programming, ” Communications of the ACM 12, 10, October, 576–583.

    Google Scholar 

  • Hoare, C.A.R. (1971), “Proof of a Program FIND, ” Communications of the ACM 14, 1, January.

  • Humphrey, W.S. (1989), Managing the Software Process, Addison-Wesley, Reading, MA.

    Google Scholar 

  • Humphrey, W.S. (1997), Introduction to the Personal Software Process (SM), Addison-Wesley, Reading, MA.

    Google Scholar 

  • Ince, D. (1994), ISO 9001 and Software Quality Assurance, McGraw-Hill.

  • IWPSE (1998- 2002), International Workshops on Principles of Software Evolution, 1998, 1999, 2000 (Symp.), 2001, and 2002, IEEE Computer Society Press/ACM Press.

  • Kahen, G. et al. (2001), “System Dynamics Modelling of Software Evolution Processes for Policy Investigation: Approach and Example, ” Journal of Systems and Software 59, 3, December, 271–281.

    Google Scholar 

  • Kemerer, C.F. and S. Slaughter (1999), “An Empirical Approach to Studying Software Evolution, ” IEEE Transactions on Software Engineering 25, 4, July/August, 493–509.

    Google Scholar 

  • Kuvaja, P. et al. (1994), Software Process Assessment and Improvement - The Bootstrap Approach, Blackwell.

  • *Lehman, M.M. (1969), “The Programming Process, ” IBM Research Report RC2722M, IBM Research Center, Yorktown Heights, New York, September.

    Google Scholar 

  • *Lehman, M.M. (1974), “Programs, Cities, Students - Limits to Growth, ” Imperial College, Inaugural Lectures Series, Vol. 9, 1970- 1974, pp. 211–229 (also in [Gries 1978]).

    Google Scholar 

  • *Lehman, M.M. (1978), “Laws of Program Evolution - Rules and Tools for Programming Management, ” In Proc. Infotech State of the Art Conference, Why Software Projects Fail, April 9- 11, pp. IV1- IV25.

  • Lehman, M.M. (1979), “The Environment of Design Methodology, ” In Proc. Symp. on Formal Design Methodology, T.A. Cox, Ed., Cambridge, UK, 9- 12 April, STL Ltd., Harlow, Essex, UK, 1980, pp. 17–38.

    Google Scholar 

  • *Lehman, M.M. (1980), “Program Life Cycles and Laws of Software Evolution, ” Proceedings of IEEE, Special Issue on Software Engineering, September, 1060- 1076.

  • Lehman, M.M. (1987), “Process Models, Process Programs, Programming Support, ” Invited Response to a Keynote Address by L. Osterweil, In Proceedings of the 9th International Conference on Software Engineering, Monterey, CA, March 30- April 2, IEEE Computer Society Press, Los Alamitos, CA, pp. 14–16.

    Google Scholar 

  • Lehman, M.M. (1989), “Uncertainty in Computer Application and Its Control Through the Engineering of Software, ” Journal of Software Maintenance: Research and Practice 1, 1 September, 3–27.

    Google Scholar 

  • Lehman, M.M. (1990), “Uncertainty in Computer Application, ” Technical Letter, Communications of the ACM 33, 5, May, 584.

    Google Scholar 

  • Lehman, M.M. (1991), “Software Engineering, the Software Process and Their Support, ” IEE Software Engineering Journal 6, Special Issue on Software Environments and Factories, 5, September, 243–258.

    Google Scholar 

  • Lehman, M.M. (1994), “Feedback in the Software Evolution Process, ” Keynote Address, In CSR Eleventh Annual Workshop on Software Evolution: Models and Metrics, Dublin, 7- 9 September, Information and Software Technology 38, Special Issue on Software Maintenance, 11, 1996, 681–686.

    Google Scholar 

  • Lehman, M.M. (1996), “Laws of Software Evolution Revisited, ” In Proceedings of the European Workshop on Software Process Technology, October, Lecture Notes in Computer Science, Vol. 1149, Springer Verlag, 1997, pp. 108–124.

    Google Scholar 

  • Lehman, M.M. (2000), “An Approach to a Theory of Software Evolution, ” EPSRC Proposal, Case for Support Part 2, Department of Computing, Imperial College, London, December (revised version September 2001).

  • Lehman, M.M. and L.A. Belady, Eds. (1985), Program Evolution - Processes of Software Change, Academic Press, London, 538 pp.

    Google Scholar 

  • Lehman, M.M. and J.F. Ramil (2000a), “Towards a Theory of Software Evolution - And Its Practical Impact, ” In Proceedings of the International Symposium on Principles of Software Evolution, Kanazawa, Japan, November 1- 2, T. Katayama et al., Eds., IEEE Computer Society Press, Los Alamitos, CA, pp. 2–11.

    Google Scholar 

  • Lehman, M.M. and J.F. Ramil (2000b), “Software Evolution in the Age of Component Based Software Engineering, ” IEE Proceedings Software 147, Special Issue on Component Based Software Engineering, 6, December, 249- 255 (earlier version Technical Report 98/8, Imp. Col., London, June 1998).

  • Lehman, M.M. and J.F. Ramil (2001a), “Rules and Tools of Software Evolution Planning, Management and Control, ” Annals of Software Engineering 11, Special Issue on Software Management, 15–44.

    Google Scholar 

  • Lehman, M.M. and J.F. Ramil (2001b), “An Approach to a Theory of Software Evolution, ” In Proceedings of the International Workshop on Principles of Software Evolution, Vienna, 10- 11 September, ACM Press, forthcoming.

  • Lehman, M.M. and J.F. Ramil (2002), “Software Uncertainty” In Proceedings of Soft-Ware 2002: First International Conference on Computing in an Imperfect World, Belfast, North Ireland, 8- 10 April, D. Bustard, W. Liu, and R. Sterritt, Eds., Lecture Notes in Computer Science, Vol. 2311, Springer-Verlag, Heidelberg, pp. 174–190.

    Google Scholar 

  • Lehman, M.M., J.F. Ramil, and U. Sandler (2001), “An Approach to Modelling Long-Term Growth Trends in Software Systems, ” In Proceedings of the International Conference on Software Maintenance, 6- 10 November, Florence, Italy, pp. 219- 228.

  • Lehman, M.M., V. Stenning, and W.M. Turski (1984), “Another Look at Software Design Methodology, ” ACM SigSoft Software Engineering Notes 9, 2, April, 38- 53.

  • Lehman, M.M. et al. (1997), “Metrics and Laws of Software Evolution - The Nineties View, ” In Proc. Fourth Int. Symp. on Software Metrics, Metrics 97, Albuquerque, NM, 5- 7 November, pp. 20- 32. Also in Elements of Software Process Assessment and Improvement, K. El Eman and N.H. Madhavji, Eds., IEEE Computer Society Press, 1999, pp. 343- 368.

  • Luqi (1989), “Software Evolution through Rapid Prototyping, ” IEEE Computer 22, 5, May, 13–25.

    Google Scholar 

  • Marciniak, J., Ed. (2002), Encyclopaedia of Software Engineering, 2nd ed., Wiley.

  • Mittermeir, R.T. (2001), “Software Evolution - Let's Sharpen the Terminology Before Sharpening (Outof-Scope) Tools, ” In Proceedings of the International Workshop on Principles of Software Evolution, Vienna, 10- 11 September, ACM Press, forthcoming.

  • Naur, P. and B. Randell, Eds. (1968), “Software Engineering, ” In Conf. Sponsored by the NATO Sc. Comm., Garmisch, Germany, 7- 11 October, Brussels, Sc. Aff. Div., NATO, 1969, 231 p., http://www.cs.ncl.ac.uk/people/brian.randell/home.formal/NATO/

  • Osterweil, L. (1987), “Software Processes Are Software Too, ” In Proc. of the 9th International Conference on Software Engineering, Monterey, CA, March 30- April 2, IEEE Computer Society Press, pp. 2- 13.

  • Osterweil, L. (1997), “Software Processes Are Software Too - Revisited: An Invited Talk on the Most Influential Paper of ICSE 9, ” In Proceedings of the 19th International Conference on Software Engineering, Boston, May 17- 23, ACM Press, pp. 540- 548.

  • Paulk, M.C. et al. (1993), “Capability Maturity Model, ver. 1.1, ” IEEE Software 10, 4, 18–27.

    Google Scholar 

  • Pigoski, T.M. (1996), Practical Software Maintenance, Wiley, 384 pp.

  • Pirzada, S.S. (1988), “A Statistical Examination of the Evolution of the UNIX System”, PhD Thesis, Imperial College, London.

    Google Scholar 

  • Pfleeger, S.L. (1998a), Software Engineering - Theory and Practice, Prentice Hall.

  • Pfleeger, S.L. (1998b), “The Nature of System Change, ” IEEE Software 15, 3, May- June, 87- 90. Potts, C., Ed. (1984), Proceedings of the Software Process Workshop, Egham, Surrey, February.

  • Rajlich, V.T. and K.H. Bennett (2000), “A Staged Model for the Software Life Cycle, ” IEEE Computer, July, 66- 71.

  • Royce, W.W. (1970), “Managing the Development of Large Software Systems, ” In Proceedings of Wescon, August, pp. 1- 9. Also in Proceedings of the 9th International Conference on Software Engineering, IEEE Computer Society Press, Los Alamitos, CA, 1987.

    Google Scholar 

  • SEEC (2002), Symposium on Software Evolution and Evolutionary Computation, University of Hertfordshire, UK, 7- 8 February, http://homepages.feis.herts.ac.uk/~nehaniv/EN/seec/program.html

  • Succi, G., J. Paulson, and A. Eberlein (2001), “Preliminary Results from an Empirical Study on the Growth of Open Source and Commercial Software Products, ” In Proceedings of the Third Workshop on Economics-Driven Software Engineering Research EDSER-3, ICSE 2001, May 14- 15, Toronto.

  • Taylor, R.N. et al. (1989), “Foundations for the Arcadia Environment Architecture, ” In Proceedings of the ACM SIGSOFT/SIGPLAN Software Engineering Symposium on Practical Software Development Environments, November, pp. 1- 13.

  • Thagard, P. (1992), Conceptual Revolutions, Princeton University Press, Princeton, NJ, 285 pp.

    Google Scholar 

  • Tully, C. (1989), “Representing and Enacting the Software Process, ” Proceedings 4th International Workshop on the Software Process, January, Also in ACM SIGSOFT Software Engineering Notes, June.

  • Turski, W.M. (1981), “Specification as a Theory with Models in the Computer World and in the Real World, ” Infotech State of the Art Report 9, 6, 363–377.

    Google Scholar 

  • Turski, W.M. (1996), “A Reference Model for the Smooth Growth of Software Systems, ” IEEE Transactions on Software Engineering 22, 8, 599–600.

    Google Scholar 

  • Turski, W.M. (2000), “An Essay on Software Engineering at the Turn of the Century, ” In Fundamental Approaches to Software Engineering, Proceedings of the Third International Conference FASE 2000, March/April, T. Maibaum, Ed., Lecture Notes in Computer Science, Vol. 1783, Springer-Verlag, Berlin, pp. 1–20.

    Google Scholar 

  • Turski, W.M. and T.S.E. Maibaum (1987), The Specification of Computer Programs, Addison-Wesley, Wokingham.

    Google Scholar 

  • Van Lamsweerde, A. (2000), “Formal Specification: A Roadmap, ” In The Future of Software Engineering, 22nd ICSE, Limerick, Ireland, A. Finkelstein, Ed., ACM Press, pp. 149- 159.

  • VENSIM (1999), “VENSIM© 4 Reference Manual, ” Ventana System Inc., Harvard, MA.

    Google Scholar 

  • *Weinberg, G.M. (1970), “Natural Selection as Applied to Computers and Programs, ” General Systems 15.

  • Wernick, P. and M.M. Lehman (1999), “Software Process Dynamic Modelling for FEAST/1, ” Journal of Systems and Software 46, 2/3, April, 193–201.

    Google Scholar 

  • Wirth, W. (1971), “Program Development by Stepwise Refinement, ” Communications of the ACM 14, 4, April, 221–22.

    Google Scholar 

  • *Woodside, C.M. (1980), “A Mathematical Model for the Evolution of Software, ” Journal of Systems and Software 2, 4.

    Google Scholar 

  • WWW (2001), “Feedback, Evolution And Software Technology, FEAST Projects Web Site, ” Department of Computing, Imperial College, http://www.doc.ic.ac.uk/~mml/feast

  • Zahran, S. (1997), Software Process Improvement - Practical Guidelines for Business Success, SEI Series in Software Engineering, Addison-Wesley, Harlow, England.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Rights and permissions

Reprints and Permissions

About this article

Cite this article

Lehman, M.M., Ramil, J.F. Software Evolution and Software Evolution Processes. Annals of Software Engineering 14, 275–309 (2002). https://doi.org/10.1023/A:1020557525901

Download citation

  • Issue Date:

  • DOI: https://doi.org/10.1023/A:1020557525901

  • areas of software evolution
  • empirical studies
  • feedback
  • laws of software evolution
  • process modelling
  • process improvement
  • SPE program classification
  • software evolution theory