Software Maintenance and Evolution

Software maintenance is a substantial part in the life-cycle of a software system. Typical studies show that more than 2/3 of the efforts are invested into modifications after delivery to correct faults, to improve performance, or to adapt to various other requirements such as platform or business changes. It seems obvious, therefore, that we need effective techniques and tools to support these activities to save costs and personnel resources in development and testing.

In this course, students will learn the foundations of software evolution and maintenance. This includes successful but aged software systems (i.e. legacy software), object-oriented reengineering, refactoring, change patterns, empirical analysis of software, classification/prediction models, software quality analysis. We will also discuss analysis platforms and tools, test case generation and continuous delivery technologies in the context of autonomous systems development (e.g., drones and self-driving cars). 




Learning Goals

Learn theories, models, tools, and processes for the maintenance and evolution of large software systems and cloud applications.

Course mode in summary (considering the Corona teaching restrictions). The lecture is done regularly in mixed mode: the subset of students that are interested to participate in the lecture room, while the other can join digitally over Microsoft Teams. In case of a problem (Covid-19 cases grow in the fall semester), the online mode will be likely applied (all students joining via MS-teams). The slides and material of each lecture are shared upfront in both OLAT and the webpage of the course. Questions can be made during the lectures. Projects and exercises related meetings are in general done on a weekly basis via MS-Teams. The time slots for them are discussed between the lecturer and the students. On request, other channels (e.g., Slack) can be created for running the projects, but the default way is to use sub-channels of the MS-teams dedicated to the course. We encourage students to contact the lecturer via MS-teams and/or email for any doubt about the projects, exercises, and the exam.


This course offers a combination of lectures and exercises. The exercises are required for the course as they will provide a better understanding of how the theory (published in research works) can be applied in practice. This way the students actively learn during the lecture and through preparation before and after the lecture based on concrete examples. There will be exercises for the students to do individually and a project that will be done in groups of 3-4 students. 

Sometimes, successful projects lead to the publication of relevant conferences or journals.

Consider for example the

1) Ticket Tagger project  (the source repository available at accepted to the ICSME conference to one of our previous students (Rafael Kallis) in 2019:

2) And the project on " the use of Web Assembly in a Serverless Context". It was accepted recently as a research paper at ESSCA: 

S. Murphy, L. Persaud, W. Martini, and B. Bosshard "On the use of Web Assembly in a Serverless Context," Second European Symposium on Serverless Computing and Applications (ESSCA), organized with XP2020, June  2020.

Final Evaluation

Grading will be based on (i) the written exam, Friday, 18 December 2020 at 12.00h (40% of the grade),  the (ii) exercises by the students during the course (15% of the grade),  and (iii) the group project (45% of the grade).

The topics of the written exam are (i) the required reading list and (ii) the content of the slides of each lecture, and (iii) questions related to the exercises and group project.

The additional/optional reading list is not required for the written examination.

Important, the written exam needs to be passed with a minimum of >=3.75 (otherwise it will be considered as a fail). This means that the points for the exercises and the group works are added only if the exam is passed with a reasonable grade. This to avoid cases in which good results are reached in the project and exercises, but too low grades in the written exam are achieved (concerning the theory behind the practical exercises).

Topics covered

  • Motivation, challenges and definitions in the field of software evolution
  • Variants of software maintenance, relations to software engineering life-cycle
  • Techniques of software evolution and testing
  • Quantitative analyses, empirical analyses, qualitative analyses of software
  • Evolution dynamics
  • Case studies and assignments

Support for this course is provided by:

AWS educate


Type: Vorlesung mit integrierter Übung

Dr. Sebastiano Panichella



Schedule: Fri, 12:15-13:45, BIN-1.D.29 or 2.A.01 / Binzmühlestrasse 14 
Language: Lecture in English, Materials in English
ECTS credits: 3.0
Prerequisites: BSc Informatik: Assessmentstufe, Module Software Engineering und Software-Praktikum
Target audience: Students in BSc Informatics (4+ Semester) and in MSc Informatics
Link to Online Course Catalogue: Obligatory course information
OLAT-Resource: OLAT for Software Maintenance and Evolution

Course Materials and OLAT Course

All complementary material will be made available in the OLAT-Resource for Software Maintenance and Evolution. All course materials, for example, slides, exercises, tools, etc., can be found there. It also contains a forum, where we will post announcements and answer questions related to the lecture in a timely fashion. Since, for technical reasons sometimes it is not possibile to update/upload data in the OLAT platform we provide all the essential materials (slides, exercises, tools) in this web page of the course.


The list of weekly topics may be subject to change. The slides will be updated on a week by week basis. NOTE: Please check back to this table, as lecture units may change on short notice!

Date Topics Notes

- Introduction to the course.

- Lecture of  "Foundations of Software Evolution (Leman Laws + Reengineering I)":
Challenges of software maintenance, software evolution, Laws of Software Evolution, Reverse engineering and Reengineering

Self-study of the following papers:

The following are seminal papers that constitute the foundation of software evolution dating back into the 80s and the influential works of Manny Lehman.
M.M. Lehman, "Programs,Life Cycles, and Laws of Software Evolution", 1980 - required reading 
D.L. Parnas, "Software Aging", 1994 - recommended reading 
M.M. Lehman et al., "Metrics and Laws of Software Evolution", 1997 - required reading 

(Optional supporting material for the projects) on CD/CI

made in collaboration with Omar Mahdi:

  - Slides

  - Github


Dr. Panichella 



Empirical Software Engineering  

A change is requested by users/customers of a mobile application. They should be translated into software changes by the Product Owner.

Is it possible to automate this process?

Learning goals: We will learn how software engineering researchers conduct empirical investigations aimed at learning new concepts and/or conceiving novel tools/prototypes to support developers evolve their (mobile) applications.


Required reading:

How can I improve my app? Classifying user reviews for software maintenance and evolution. ICSME 2015: 281-290

(Optional, but not required) reading:

What would users change in my app? Summarizing app reviews for recommending software changes. SIGSOFT FSE 2016: 499-510

Exploring the integration of user feedback in automated testing of Android applications.SANER 2018: 72-83

An Empirical Investigation on Documentation Usage Patterns in Maintenance Tasks. ICSM 2013: 210-219


Dr. Panichella



Lecture on "Change Type Analysis and Defect Prediction"

For this lecture is recommended a self-study of the following papers/books:

Change Distilling: Tree Differencing for Fine-Grained Source Code Change Extraction.- required reading.

Cross-project defect prediction: a large scale experiment on data vs. domain vs. process - required reading.


Dr. Panichella



Mining (un)Structured Data (1) 

Learning goals: We will learn what types of "unstructured software data" software engineering researchers analyze to conceiving novel tools/prototypes aimed at

- supporting developers during maintenance and evolution tasks;

- profiling developers/experts to help newcomers interested to perform such maintenance and evolution tasks.

Required reading: 

 On the role of the nouns in IR-based traceability recovery" (ICPC 2009). [already part of the previous lecture]

(Optional) Recommended (but not required) reading:

On the Equivalence of Information Retrieval Methods for Automated Traceability Link Recovery. ICPC 2010: 68-71

Reducing the effort of bug report triage: Recommenders for development-oriented decisions. ACM Trans. Softw. Eng. Methodol. 20(3): 10:1-10:35 (2011)

Who is going to mentor newcomers in open source projects? SIGSOFT FSE 2012: 44

How Developers' Collaborations Identified from Different Sources Tell Us about Code Changes. ICSME 2014: 251-260


Dr. Panichella



Mining (un)Structured Data (2) 

Learning goals: We will learn what types of "unstructured software data" software engineering researchers analyze to conceiving novel tools/prototypes aimed at

- distilling important information from different type of developers' communication means (issue tracking systems, e-mails, etc.);

- detecting defects/inconsistencies between APIs documentation and code of software projects.

Required reading:

Development Emails Content Analyzer: Intention Mining in Developer Discussions (T). ASE 2015: 12-23

(Optional, but not required) reading:

Choosing your weapons: On sentiment analysis tools for software engineering research. ICSME 2015: 531-535

Analyzing APIs documentation and code to detect directive defects. ICSE 2017: 27-37

Data Mining: Practical Machine Learning Tools and Techniques, Third Edition 



Dr. Panichella


  Project Intermediary Presentations


Dr. Panichella


Classroom Exercises (EX1) on IR-based Traceability Recovery – not included in the exam grading

The students will perform the following exercise during the lecture:

“IR-based Traceability Recovery" (Theory explained in the lecture "Mining (un)Structured Data  for Supporting the  Software Evolution (1)")


Dr. Panichella



Lecture on "Search-based Software Testing".

Learning goals: We will learn about the contemporary Challenges of Test Case Generation in the Real World.

Required reading:

• Gordon Fraser, Andrea Arcuri: EvoSuite: Automatic test suite generation for object-oriented software. SIGSOFT FSE 2011: 416-419

(Optional) Reading (not required for the final exam):
• Gordon Fraser, Andrea Arcuri: EvoSuite: On the Challenges of Test Case Generation in the Real World. ICST 2013: 362-369
• Giovanni Grano, Christoph Laaber, Annibale Panichella, and Sebastiano Panichella:  Testing with Fewer Resources: An Adaptive Approach to Performance-Aware Test Case Generation  Transactions on Software Engineering (TSE) Journal


Dr. Panichella



Lecture on "Summarization Techniques for Code, Changes, and Testing".

Required reading:

JSummarizer: An automatic generator of natural language summaries for Java classes.  

Automatic generation of release notes. 

(Optional, but not required) reading:

The impact of test case summaries on bug fixing performance: An empirical investigation. 

Summarization techniques for code, change, testing, and user feedback 



Dr. Panichella



Classroom Exercises (EX2) on Search-based Software Testing and Testing of Autonomous Driving Systems (ADSs) – not included in the exam grading

The students will perform the following exercise during the lecture:

““SBST and Automated Testing of ADSs" (Theory explained in the lecture " Search-based Software Testing") ")


Dr. Panichella



Lecture on "Peer Code Review: Theory and Practise"

For this lecture is recommended a self-study of the following papers/books:

Fagan, M. E. , Advances in Software Inspections, IEEE Transactions on Software Engineering, Vol. 12(7):744-751, July 1986.  - required reading.

Sebastiano Panichella, Nik Zaugg: An Empirical Investigation of Relevant Changes and Automation Needs in Modern Code Review. Empir. Softw. Eng. 25(6): 4833-4872 (2020) -  - required reading.

Lecturer: Dr. Panichella


Classroom Exercise (EX3) on Code Review " – included in the exam grading


a) Advance reading:
In order to perform this exercise, it is required to read the papers included in the reading list of the lecture of the course “Peer Code Review: Theory and Practise”.

b) Project:
To perform the exercise each student should select a Java project implemented during his/her past academic/professional experience.

- Deadline for the exercise TBA.
- Submit the report via e-mail to

Lecturer: Dr. Panichella



  Final Project Presentations


Dr. Panichella


  Written Exam.
Dr. Panichella


At the end of the course there will be a written exam (in the usual lecture slot). In case of only few participants, there will be an oral exam (with individual exam dates).