Software Evolution
Software Evolution
Software Evolution
123
Tom Mens Serge Demeyer
Université de Mons-Hainaut Universiteit Antwerpen
Institut d’Informatique Dept. Mathematics and Computer Science
Avenue du champ de Mars 6 Middelheimlaan 1
7000 Mons 2020 Antwerpen
Belgium Belgium
[email protected] [email protected]
by Mehdi Jazayeri
The phenomenon of software evolution was observed back in the 1970s when the
first large software systems were being developed, and it attracted renewed attention
in the 1990s. Software evolution is now a common phrase and an accepted research
area in software engineering. There are conferences and workshops devoted to the
topic, and evolution papers appear frequently in the traditional software engineering
conferences and journals. The 2004 ACM/IEEE Software Engineering Curriculum
Guidelines list software evolution as one of ten key areas of software engineering
education. And there are several research groups and international networks working
on software evolution. As perhaps may be expected, there are diverging research
efforts in sub-areas of software evolution, spanning theoretical studies, empirical
studies, tools, visualization, and so on.
Since the classic and insightful work of Lehman and Belady [320], “software
evolution” has been accepted as a phenomenon worth studying and one that we ac-
knowledge poses serious problems to software projects. The problems are complex
because they involve many dimensions, affecting, among others, all phases of the
software process, managerial and economic aspects, and programming languages
and environments. Further, as software engineering advances and new technologies
(e.g., Web applications) and processes (e.g., open source) are introduced, software
evolution faces different problems and challenges. At the same time, some new ad-
vances (e.g. agile and model-driven processes) enable novel solutions to software
evolution.
Evolution in general parlance implies that something has changed for the bet-
ter. The Merriam-Webster Dictionary defines evolution as “a process of continuous
change from a lower, simpler, or worse to a higher, more complex, or better state,”
which captures our intuitive notion of something improving. With software, evolu-
tion is multi-faceted because certainly according to some metric the software gets
better, for example it acquires a new feature or its performance improves or it is
ported to a new platform. Unfortunately, most improvements come with some dete-
rioration in some other dimension, for example, size of software or its performance
or its structure.
VIII M. Jazayeri
In biology, the traditional area of evolution, evolution deals with species. Is there
something analogous to “species” when we talk about software? The answer is defi-
nitely yes. The species are the high-level models that we use to describe (aspects of)
software. An architectural description, in fact, describes a whole species of software
systems. The family architecture (or product line) approach to software development
makes this explicit by capturing a whole family (species) of systems in terms of their
commonalities and differences. If evolution does take place in software, we can hope
that it occurs at these meta-levels, where new architectures are created as improve-
ments to previous architectures, leading to evolved species. Individual elements in
the family certainly change over time but this change is hardly evolutionary in the
sense that it leads to long-term improvement. What we do know about software and
even Lehman’s laws of evolution is that any individual software system will eventu-
ally reach an old age when it is no longer cost-effective to modify it and it is better
to retire it. But even when we retire a software product, the associated knowledge
about that product, captured in higher level models such as requirements and specifi-
cations lives on and influences the evolution of the species. Thus, understanding and
capturing the way software evolves offers a fascinating and rich area of study.
With this wide range of issues involved in software evolution, where would a re-
searcher new to the field turn to for an introduction and comprehensive overview of
the state of the art? This book attempts to be that source. For example, this book
is a good starting point for a PhD student looking for a research topic. It can also
form the basis for a seminar course on software evolution. The book covers most
areas of software evolution and many current problems and representative research
approaches. I recommend the book to any researcher interested in software evolution.
The book, however, has value beyond the world of research. Because of the key
role that evolution plays in software engineering, knowledge of the problems, ap-
proaches and solutions in software evolution is useful to anyone involved in software
engineering. Thus, if you are a software engineer, or software engineering researcher,
interested or just curious about what happens to software once it is developed, or how
to develop software that is evolvable, this book offers you plenty of insights.
In October 2002, on a cold wintery Monday in Antwerp, we kicked off the RELEASE
network, a research network aiming to establish “Research Links to Explore and Ad-
vance Software Evolution”. This research network (funded by the European Science
Foundation) was an attempt to intensify the collaboration between a number of Euro-
pean research groups active in the field of software evolution. At that time, software
evolution was steadily becoming a subject of serious academic study, because more
and more researchers started to recognise that building software that lasts is one of
the key challenges for our society in general and for the software engineering com-
munity in particular. The RELEASE network succeeded in fostering a community
of European researchers who continue to meet on a regular basis, despite ceasing of
funding in 2005. The book you are holding right now is one of the products of this
continued activity and we sincerely hope that it will inspire you to become part of
the active software evolution community as well.
very best to provide a broad overview of the related work, contribute to a compre-
hensive glossary and a list of acronyms used within the community, and—last but
not least—collect a list of books, journals, web-sites, standards and conferences that
together represent the community. So reading this book should give you a head start
when diving into the field of software evolution.
As such, we hope that this book will become a key reference in the field, provid-
ing a basis for the next generation of software evolution researchers.
Acknowledgements
We would like to thank all persons that have contributed to this book, either directly
or indirectly. There are many people that we are indebted to:
• The contributors of the chapters of this book;
• The Springer staff (in particular, Ralf Gerstner and Ulrike Stricker);
• Mehdi Jazayeri, who was so kind to write a very nice foreword for this book;
• David Notkin, Michael Godfrey, Václav Rajlich and Anne Keller, who spent
their precious time to review this book in its entirety, and provided numerous
suggestions for improvement;
• Joris Van Geet, Pieter Van Gorp, Filip Van Rysselberghe, Bart Van Rompaey,
Bart Du Bois, Matthias Rieger and Hans Schippers, who provided valuable feed-
back on several chapters of this book;
• Last but not least, we would like to thank you, reader of this book.
Many of the results that are published in this book have been achieved in the con-
text of research projects or research collaborations. In particular we would like to
mention:
• The Scientific Network “Research Links to Explore and Advance Software Evo-
lution” (RELEASE), financed by the European Science Foundation (ESF) from
July 2002 to December 2005.
• The ongoing ERCIM Working Group on Software Evolution, a network of re-
search institutes from all over the world working on the topic of software evolu-
tion, supported by the European Research Consortium on Informatics and Math-
ematics (ERCIM) since December 2004.
• The Interuniversity Attraction Poles Programme (IUAP) on “Modelling, Verifi-
cation and Evolution of Software” (MOVES), financed by the Belgian State -
Belgian Science Policy from January 2007 to December 2011.
• The Belgian FRFC project “Research Centre on Structural Software Improve-
ment”, financed by the Fondation Nationale de Recherche Scientifique (FNRS -
Belgium) from January 2005 to December 2008.
• The Swiss joint research project “Controlling Software Evolution” (COSE), fi-
nanced by the Swiss National Science Foundation from July 2005 to September
2007
• The Swiss joint research project “Multi-dimensional Navigation Spaces for Soft-
ware Evolution” (EvoSpaces), financed by the Hasler Foundation from January
2006 to December 2007.
XII Preface
Foreword
Mehdi Jazayeri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . VII
5 Object-Oriented Reengineering
Serge Demeyer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
6 Migration of Legacy Information Systems
Jean-Luc Hainaut, Anthony Cleve, Jean Henrard, Jean-Marc Hick . . . . . . . . . . 105
7 Architectural Transformations:
From Legacy to Three-Tier and Services
Reiko Heckel, Rui Correia, Carlos Matos, Mohammad El-Ramly,
Georgios Koutsoukos, Luís Andrade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
XIV Contents
Appendices
Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
List of Contributors
Rui Correia
Department of Computer Science
Magiel Bruntink
University of Leicester
CWI
University Road LE1 7RH
P.O. Box 94079 Leicester
1090 GB, Amsterdam United Kingdom
and and
Software Engineering Research Group ATX Software
Technische Universiteit Delft Rua Saraiva de Carvalho 207C
Mekelweg 4, 2628 CD, Delft 1350-300 Lisboa
The Netherlands Portugal
[email protected] [email protected]
XVI List of Contributors
Leon Moonen
Anne Françoise Le Meur
Software Engineering Research Group
Université de Lille 1
Technische Universiteit Delft
LIFL/INRIA ADAM project
Mekelweg 4, 2628 CD, Delft
Cité Scientifique
The Netherlands
59655 Villeneuve d’Ascq Cedex
[email protected]
France
[email protected]
Nachiappan Nagappan
Microsoft Research
Angela Lozano Redmond, Washington
Computing Department USA
and Centre for Research in Computing [email protected]
The Open University
Walton Hall, Milton Keynes MK7 6AA Martin Pinzger
United Kingdom Department of Informatics
[email protected] Universität Zürich
Winterthurerstrasse 190, 8057 Zürich
Switzerland
Carlos Matos
[email protected]
Department of Computer Science
University of Leicester
University Road LE1 7RH, Leicester Tom Tourwé
United Kingdom Department of Software Engineering
and and Technology
Eindhoven University of Technology
ATX Software
P.O. Box 513, 5600 MB Eindhoven
Rua Saraiva de Carvalho 207C
The Netherlands
1350-300 Lisboa
[email protected]
Portugal
[email protected]
Arie van Deursen
Software Engineering Research Group
Kim Mens Technische Universiteit Delft
Département d’Ingénierie Informatique Mekelweg 4, 2628 CD, Delft
Université catholique de Louvain and
Place Sainte Barbe 2 CWI
1348 Louvain-la-Neuve P.O. Box 94079, 1090 GB, Amsterdam
Belgium The Netherlands
[email protected] [email protected]
XVIII List of Contributors