0% found this document useful (0 votes)
51 views

Software Evolution

This book provides an overview of software evolution as a field of research. It covers novel trends in software evolution and how it relates to other areas like model-driven engineering and service-oriented development. The book does not just focus on source code evolution, but also the evolution of other artifacts like databases and architectures. It presents representative topics in the field through examples of tools, case studies of open-source systems, empirical validations, and formal models. The goal is to give readers an introduction to the state of the art in software evolution research and to serve as a reference for future researchers. The book should be useful for PhD students looking for research topics as well as anyone interested in how software changes over time.

Uploaded by

Sohaib Amir
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
51 views

Software Evolution

This book provides an overview of software evolution as a field of research. It covers novel trends in software evolution and how it relates to other areas like model-driven engineering and service-oriented development. The book does not just focus on source code evolution, but also the evolution of other artifacts like databases and architectures. It presents representative topics in the field through examples of tools, case studies of open-source systems, empirical validations, and formal models. The goal is to give readers an introduction to the state of the art in software evolution research and to serve as a reference for future researchers. The book should be useful for PhD students looking for research topics as well as anyone interested in how software changes over time.

Uploaded by

Sohaib Amir
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 16

Software Evolution

Tom Mens · Serge Demeyer


Editors

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]

ISBN 978-3-540-76439-7 e-ISBN 978-3-540-76440-3


DOI 10.1007/978-3-540-76440-3
ACM Computing Classification (1998): D.2.7, D.2.9, K.6.3
Library of Congress Control Number: 2007938804

© Springer-Verlag Berlin Heidelberg 2008


This work is subject to copyright. All rights are reserved, whether the whole or part of the material is
concerned, specifically the rights of translation, reprinting, reuse of illustrations, recitation, broadcasting,
reproduction on microfilm or in any other way, and storage in data banks. Duplication of this publication
or parts thereof is permitted only under the provisions of the German Copyright Law of September 9,
1965, in its current version, and permission for use must always be obtained from Springer. Violations are
liable for prosecution under the German Copyright Law.
The use of general descriptive names, registered names, trademarks, etc. in this publication does not imply,
even in the absence of a specific statement, that such names are exempt from the relevant protective laws
and regulations and therefore free for general use.
Typesetting and Production: LE-TEX Jelonek, Schmidt & Vöckler GbR, Leipzig, Germany
Cover Design: KünkelLopka, Heidelberg
Printed on acid-free paper
987654321
springer.com
To Inge, Sara and Paulien,
for being there – Tom Mens

To Ann, Sara, Niels and Jens,


for illustrating the value of life – Serge Demeyer
Foreword

by Mehdi Jazayeri

Faculty of Informatics, University of Lugano, Switzerland


Distributed Systems Group, Technical University of Vienna

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.

September 2007 Mehdi Jazayeri


Preface

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.

What Is this Book About?


This book is a collection of chapters written and peer reviewed by renowned experts
in the field of software evolution. The book does not cover all research topics in soft-
ware evolution—given the wealth of information in this field that would be an im-
possible task. Instead, we focus on novel trends in software evolution research and its
relation with other emerging disciplines such as model-driven software engineering,
service-oriented software development, aspect-oriented software development. Also,
we do not restrict ourselves to the evolution of source code only, but address evolu-
tion of other equally important software artefacts such as databases and database
schemas, design models, software architectures, and so on. As such, this book pro-
vides a representative selection of the research topics under study in this field. Even
better, it also demonstrates the diverse ways on how to conduct research in this field,
so you will see various examples of tools, case studies (mainly open-source sys-
tems), empirical validation and formal models. All contributing authors did their
X Preface

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.

Who Should Read this Book?


This book is of interest to everyone working in the field of software engineering
and wishing to acquire more knowledge on the state-of-the-art in software evolu-
tion, software maintenance and re-engineering. In particular, we target this book to
researchers, teachers, students and practitioners that need up-to-date information on
this very important research field.
So, whether you are a PhD researcher exploring a research topic, a student writ-
ing a master’s thesis, a teacher in need of an overview, a practitioner looking for the
state-of-the-art, or if you are simply curious about what the field of software evolu-
tion has to offer, this should be the book for you.

Why this Book?


Software has become omnipresent and indispensable in our information-based soci-
ety. Almost all devices, machines and artefacts surrounding us incorporate software
to some extent. The numerous organisations, businesses and enterprises we face on
a daily basis could not function without software. As such, software is vital to our
society and consequently we—the software engineering community—should take
up our responsibility to produce reliable software. For a long, long time, reliable
software was seen as software “without bugs”. As a result, most of the software
engineering research effort has concentrated on preventing, detecting and repairing
mistakes in various stages of software development. However, more and more, re-
liable software has come to mean “easy to adapt”. Indeed today’s global society,
with its extreme complexity and diversity imposes constant pressure to change . . . to
adapt. Hence all the software that surrounds us is forced to keep pace or is bound to
be replaced by something else . . . something new.
Software evolution is the subdomain of the software engineering discipline that
investigates ways to adapt software to the ever-changing user requirements and op-
erating environment (i.e., it addresses the How? question). However, software evo-
lution also studies the change process itself, analysing remnants of the software (for
instance in version repositories) to extract trends, make predictions or understand the
very nature of the software evolution phenomenon itself (i.e., it explores the What
and Why? questions). With the recent interest in agile software development, finding
good answers for the How? question is necessary. On the other hand, the emergence
Preface XI

of open-source software development with its sheer unlimited access to a wealth of


data has provided an extra opportunity to address the What and Why? questions in
a scientific way. Consequently, research in software evolution has seen a recent boost,
and this book provides an up-to-date view on the ideas emerging from our research
labs.

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

• The German “Bauhaus” Project on Software Architecture, Software Reengineer-


ing, and Program Understanding (see www.bauhaus-stuttgart.de)
• The European Leg2Net project: “From Legacy Systems to Services in the Net”,
supported by Marie Curie Fellowships for the Transfer of Knowledge - Industry
Academia Partnership (MTK1-CT-2004-003169).
• The European SENSORIA project: “Software Engineering for Service-Oriented
Overlay Computers”, supported by the Information Society Technologies pro-
gramme - Future Emerging Technologies (IST-2005-16004).
• The Dutch “Reconstructor” project sponsored by the NWO Jacquard programme,
project number 638.001.408.
We hope you enjoy reading, and we welcome any comments you may have on the
contents, structure or quality of this book.

Mons and Antwerp, Tom Mens


September 2007 Serge Demeyer
Contents

Foreword
Mehdi Jazayeri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . VII

1 Introduction and Roadmap:


History and Challenges of Software Evolution
Tom Mens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

Part I Understanding and Analysing Software Evolution

2 Identifying and Removing Software Clones


Rainer Koschke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3 Analysing Software Repositories to Understand Software Evolution
Marco D’Ambros, Harald C. Gall, Michele Lanza, Martin Pinzger . . . . . . . . . . 37
4 Predicting Bugs from History
Thomas Zimmermann, Nachiappan Nagappan, Andreas Zeller . . . . . . . . . . . . . 69

Part II Reengineering of Legacy Systems

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

Part III Novel Trends in Software Evolution

8 On the Interplay Between Software Testing and Evolution


and its Effect on Program Comprehension
Leon Moonen, Arie van Deursen, Andy Zaidman, Magiel Bruntink . . . . . . . . . . 173
9 Evolution Issues in Aspect-Oriented Programming
Kim Mens, Tom Tourwé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
10 Software Architecture Evolution
Olivier Barais, Anne Françoise Le Meur, Laurence Duchien, Julia Lawall . . . . . 233
11 Empirical Studies of Open Source Evolution
Juan Fernandez-Ramil, Angela Lozano, Michel Wermelinger,
Andrea Capiluppi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263

Appendices

Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291

Glossary of Terms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295

List of Acronyms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307

References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309

Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
List of Contributors

Luis Andrade Andrea Capiluppi


ATX Software Department of Computing
and Informatics
Rua Saraiva de Carvalho 207C
Faculty of Technology
1350-300 Lisboa
University of Lincoln
Portugal Brayford Pool, Lincoln LN6 7TS
[email protected] United Kingdom
[email protected]

Olivier Barais Anthony Cleve


Université de Rennes 1 PReCISE Research Centre
IRIA/INRIA Triskell project Laboratory of Database Engineering
Campus de Beaulieu University of Namur
35042 Rennes Cédex Rue Grandgagnage 21, 5000 Namur
France Belgium
[email protected] [email protected]

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

Marco D’Ambros Jean-Luc Hainaut


Faculty of Informatics PReCISE Research Centre
University of Lugano Laboratory of Database Engineering
Via G. Buffi 13, 6904 Lugano University of Namur
Switzerland Rue Grandgagnage 21, 5000 Namur
[email protected] Belgium
[email protected]
Serge Demeyer
Lab on Re-Engineering (LORE) Reiko Heckel
Department of Mathematics Department of Computer Science
and Computer Science University of Leicester
Universiteit Antwerpen University Road LE1 7RH, Leicester
Middelheimlaan 1, 2020 Antwerpen United Kingdom
Belgium [email protected]
[email protected]
Jean Henrard
REVER s.a.
Laurence Duchien
Boulevard Tirou 130, 6000 Charleroi
Université de Lille 1
Belgium
LIFL/INRIA ADAM project
[email protected]
Cité Scientifique
59655 Villeneuve d’Ascq Cedex Jean-Marc Hick
France REVER s.a.
[email protected] Boulevard Tirou 130, 6000 Charleroi
Belgium
Mohammad El-Ramly [email protected]
Computer Science Department
Cairo University Rainer Koschke
Egypt Fachbereich 03
[email protected] Universität Bremen
Postfach 33 04 40, 28334 Bremen
Juan Fernandez-Ramil Germany
Computing Department [email protected]
and Centre for Research in Computing Georgios Koutsoukos
The Open University Department of Computer Science
Walton Hall, Milton Keynes MK7 6AA University of Leicester
United Kingdom University Road LE1 7RH, Leicester
[email protected]
United Kingdom
[email protected]
Harald Gall
Software Engineering Group Michele Lanza
Universität Zürich Faculty of Informatics
Binzmühlestrasse 14 University of Lugano
8050 Zürich Via G. Buffi 13, 6904 Lugano
Switzerland Switzerland
[email protected] [email protected]
List of Contributors XVII

Julia Lawall Tom Mens


DIKU Institut d’Informatique
University of Copenhagen Université de Mons-Hainaut
2100 Copenhagen Av. du Champ de Mars 6, 7000 Mons
Denmark Belgium
[email protected] [email protected]

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

Michel Wermelinger Andy Zaidman


Computing Department Software Engineering Research Group
and Centre for Research in Computing Technische Universiteit Delft
The Open University Mekelweg 4, 2628 CD, Delft
Walton Hall, Milton Keynes MK7 6AA The Netherlands
United Kingdom [email protected]
[email protected]

Andreas Zeller Thomas Zimmermann


Dept. of Informatics Department of Computer Science
Saarland University University of Calgary
Postfach 15 11 50, 66041 Saarbrücken 2500 University Drive NW Calgary
Germany Alberta, T2N 1N4 Canada
[email protected] [email protected]

You might also like