Seminar Software Evolution (WS2009)

Course Organization

Update: Cancellation notice
Due to the insufficient participant count, this seminar will unfortunately have to be cancelled this semester. Students interested in the subject matter may want to inquire about other possibilities to get involved, such as practical and project participation. We plan to offer the seminar again next semester.

Time, Place, ECTS, etc.:
Weekly, Fridays, 10:15 - 11:45, Room 2.101 (Goldschmidtstr. 7), 2 SWH (SWS), 4 ECTS Points

Language, Participation, Attendance, etc.:
The language in this course will be English. Due to the nature of the course and the available materials, it is not feasible to carry out the course in German.

The number of participants is limited, therefore early registration is recommended. Please contact Philip Makedonski (via e-Mail, or personally) for preliminary registration.

Since this is a seminar-type course, regular attendance is mandatory. Participants are required to attend at least 80% of the sessions.

Kick-off Session:
An introductory session will take place on Friday, 23.10.2009. Course topics will be discussed and assigned to the participants at the end of the session.

Further organization details will be discussed during the kick-off session

Course Description

The age of one-off and static pieces of software is coming to an end. Software has come to be omnipresent and basically indispensable in today's society. Increasing need to keep software in tact with ever changing requirements and environments gave rise to a new field in software engineering, focusing on the evolutionary aspects of software. With the complexity of current systems, it is no longer feasible to completely substitute systems to accommodate new demands. Systems have to be more flexible and adaptable in order to meet the changing needs of their users and the changing contexts they operate in.


In this course, we will have a look into the ways to adapt software to the constant changes in requirements and environments, but also into the ways of making software more adaptable. To achieve that however, a better understanding of the evolutionary processes themselves is necessary. We will thus survey the state of the art and provide an overview of novel trends and future concepts that will likely form parts of the next generation software engineering research and practices.

On a more general level, this course is intended to introduce the participants to the basics of conducting independent research and self-studies on a given topic. Participants will have to gather and process (a subset of) the available information and present it in a suitable form, respecting a number of guidelines (see below). The accumulated knowledge can then serve them both in subsequent research in this or other related fields, and / or in the participants' software engineering and development practices.

Target Audience

In general, the subject area of software evolution is relevant to everyone (looking to be) involved in the field of software engineering. This course is primarily intended for advanced Master's students interested in the subject matter and possible further research in this area (Master's theses, PhD projects), but also for dedicated students looking to extend their knowledge in software engineering and learn about useful practices they can later apply in their professional lives.

It is possible to attend the course during the Bachelor's course of studies, however, Bachelor's students interested in the course are encouraged to seek individual advice whether the course can be suitable for them by contacting Philip Makedonski prior to registration.


The current topics in this course can be summarized in three major areas:

  • Understanding and Analyzing Software Evolution
  • Reengineering of Legacy Systems
  • Novel Trends in Software Evolution

More specific topics include:

  • Code clones - meaning, reasons, detection, removal
  • Analysis of software repositories and bug databases for better understanding of software evolution
  • Predicting bugs and other properties by mining bug databases
  • Refactoring, reverse and re-engineering
  • Migration of large legacy systems
  • Migration towards service oriented architectures and web services
  • Interrelation of software evolution and software testing
  • Aspect-oriented development and software evolution
  • Architectural evolution
  • Empirical studies in the field
  • Runtime evolution

Further areas and topics may be covered during course as well.




Please note that this is a preliminary session schedule overview, it will evolve during the semester. Changes will be announced in during the sessions and published on this page. Therefore, it is best to check back the page regularly (no RSS available yet).

23.10.2009: Kick-off session (Introduction to Software Evolution, Philip Makedonski)
30.10.2009: TBA
06.11.2009: TBA
13.11.2009: TBA
20.11.2009: TBA
27.11.2009: TBA
04.12.2009: TBA
11.12.2009: TBA
18.12.2009: (to be rescheduled or canceled)
08.01.2010: (to be rescheduled or canceled)
15.01.2010: TBA
22.01.2010: TBA
29.01.2010: TBA
05.02.2010: Final Session


The course will be largely based on the Software Evolution book by Tom Mens and Serge Demeyer (Springer, 2008, ISBN 978-3-540-76439-7). A few copies will be made available from the students' library at the institute. There is a number of further resources in the book itself, below is a brief list of other resources where relevant information can be found.

Main menu 2

2011 © Software Engineering For Distributed Systems Group