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.
Similar content being viewed by others
References
Abdel-Hamid, T.K. and S.E. Madnick (1991), Software Project Dynamics - An Integrated Approach, Prentice-Hall, Englewood Cliffs, NJ, 264 pp.
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.
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.
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.
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.
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.
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.
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.
Dijkstra, E.W. (1968b), “GOTO Statement Considered Harmful, ” Letter to the Editor, Communications of the ACM 11, 11, 147–148.
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.
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.
Fowler, M. (1999), Refactoring: Improving the Design of Code, Addison-Wesley, New York.
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.
Gilb, T. (1981), “Evolutionary Development, ” ACM Software Engineering Notes 6, 2, April.
Gilb, T. (1988), Principles of Software Engineering Management, Addison-Wesley, Wokingham, England.
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.
Hoare, C.A.R. (1969), “An Axiomatic Basis for Computer Programming, ” Communications of the ACM 12, 10, October, 576–583.
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.
Humphrey, W.S. (1997), Introduction to the Personal Software Process (SM), Addison-Wesley, Reading, MA.
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.
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.
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.
*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]).
*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.
*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.
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.
Lehman, M.M. (1990), “Uncertainty in Computer Application, ” Technical Letter, Communications of the ACM 33, 5, May, 584.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Turski, W.M. (1996), “A Reference Model for the Smooth Growth of Software Systems, ” IEEE Transactions on Software Engineering 22, 8, 599–600.
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.
Turski, W.M. and T.S.E. Maibaum (1987), The Specification of Computer Programs, Addison-Wesley, Wokingham.
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.
*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.
Wirth, W. (1971), “Program Development by Stepwise Refinement, ” Communications of the ACM 14, 4, April, 221–22.
*Woodside, C.M. (1980), “A Mathematical Model for the Evolution of Software, ” Journal of Systems and Software 2, 4.
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.
Author information
Authors and Affiliations
Rights 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
Issue Date:
DOI: https://doi.org/10.1023/A:1020557525901