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 we 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, defect prediction models, software quality analysis, or software evolution visualization. We will also present platforms and tools such as ChangeDistiller, Software Evolution Facets, TestDescriber.

Our group is among the international leading research groups in the areas of Mining Software Repositories(MSR), Software Maintenance, and Software Engineering.

Learning Goals

Learn theories, models, tools, and processes for the maintenance and evolution of large software sytems.

Format

This course offers a combination of lectures and practical exercises. Practical exercises are required during the course because they allow to better understand how the theory (published in research works) can be applied in practice. This allows the students to actively learn during the lecture and in preparation before and after the lecture based on concrete examples. There will be simple and practical exercises for the students to do individually, then a bigger project that will be done in groups of students formed by at least 3-4 people. The group project will be about one of the main topics of the course itself.

Final Evaluation

Grading will be based on (i) the  written exam (50% of the grade), the (ii) practical exercises performed by the students during the course  (30% of the grade), and the (bigger) project that will be done in groups of students formed by at least 3-4 people  (20% of the grade).

Thus, for the final evaluation all of the required exercises/projects are considered mandatory.

Object of the written exam are the required reading list, the content of the slides specified and used for each lecture. Some questions or exercises of the final exam will be related to the practical exercises performed during the course (i.e., EX1, EX2 and EX3).

The recommended reading list are not required for the written examination.

 

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
  • Quantitative analyses, empirical analyses, qualitative analyses of software
  • Evolution dynamics
  • Case studies and assignments

Organization

Type: Vorlesung mit integrierter Übung
Lecturer:

Prof. Dr. Harald Gall
Dr. Sebastiano Panichella

Assistant:

Giovanni Grano
Carmine Vassallo

Schedule: Fri, 12:15-13:45, AND-4-02
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.

Timetable

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
22.09

- Introduction to the course.

- Lecture on  "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 

Lecturer:

Gall / Panichella

Slides (PDF)

29.09

(1/2) Lecture  on "IR-based Traceability Recovery":
IR-based traceability recovery is a key software maintenance activity in which software engineers extract the relationships among software artifacts.

(1/2) Classroom Exercise (EX1):

- Description of the exercise available OLAT "Materials/Lecture-2/Traceability-Classroom-Exercise/TraceabilityRecoveryExercise.pdf"

- all material needed for the exercise is available in OLAT under  "Materials/Lecture-2/Traceability-Classroom-Exercise/"


Results of the individual exercise to submit via OLAT (or alternatively, send an e-mail to panichella@ifi.uzh.ch)

 

Self-study of the following papers:
O.C.Z. Gotel, Anthony Finkelstein, "An analysis of the requirements traceability problem", In: Proceedings of the First IEEE International Conference on Requirements Engineering (ICRE), 1994. - recommended reading
Giovanni Capobianco, Andrea De Lucia, Rocco Oliveto, Annibale Panichella, Sebastiano Panichella, " On the role of the nouns in IR-based traceability recovery", In: Proceedings of the IEEE 17th International Conference on Program Comprehension (ICPC 2009). required reading.

Lecturer:

Panichella

Slides (PDF)

 

06.10

The Software Change Process: How to deal with a Change Request

A change is requested by stakeholders, then translated in software changes by the Product Owner. Which is the process to implement those changes?

 

(1/2) The Software Change Process

Description of the phases constituting the process, focusing on the Software Change Design: concept location techniques and impact analysis.

(2/2) Implement a Software Change. Case Study: jEdit (http://www.jedit.org)

Illustration of the four software changes to implement in jEdit. Introduction to the tools used to support the changes of the exercise.

 

Learning goals: The objective of the exercise is gaining a rigorous  methodology when implementing a change request suggested by the project manager adopting the appropriate tools during this activity.  

Concepts and tasks involving the exercise:

- program comprehension;  

- concept location;  

- impact analysis;  

- prefactoring;  

- Updating;

- post factoring.

 

[NEW] Results of the individual exercise must be sent to vassallo@ifi.uzh.ch by 09/11/2017.

 

Recommended (but not required) reading:

- Václav Rajlich, Software Engineering: The Current Practice, CRC Press, Boca Raton, FL (2012)

Lecturer:

Vassallo

Slides

Slides (Printable Version)

 

 

13.10

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

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

Laura Moreno, Andrian Marcus, Lori L. Pollock, K. Vijay-Shanker' JSummarizer: An automatic generator of natural language summaries for Java classes. In Proceedings of the 35th International Conference on Program Comprehension (ICPC), IEEE, 2013.: pp. 230-232, 2014. required reading.

Laura Moreno, Gabriel Bavota, Massimiliano Di Penta, Rocco Oliveto, Andrian Marcus, Gerardo Canfora 'Automatic generation of release notes. In Proceedings of the ACM Sigsoft 22nd International Symposium on Foundations of Software Engineering (Sigsoft '08 / ESF-22). ACM, pp. 484-495, 2014. required reading.

Sebastiano Panichella, Annibale Panichella, Mauritz Bella, Andy Zaidman, and Harald Gall: The impact of test case summaries on bug fixing performance: An empirical investigation. In Proceedings of the 38th International Conference on Software Engineering (ICSE 2016) - recommended reading.

 

Lecturer: Panichella

20.10

Lecture on "Change Type Analysis with ChangeDistiller"


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

Beat Fluri, Michael Wuersch, Martin Pinzger, and Harald Gall. Change Distilling: Tree Differencing for Fine-Grained Source Code Change Extraction. IEEE Transactions on Software Engineering, Vol. 33(11):725-743, November 2007.required reading.

Christian Bird, David Pattison, Raissa D'Souza, Vladimir Filkov, and Premkumar Devanbu. Latent social structure in open source projects. In Proceedings of the 16th ACM SIGSOFT International Symposium on Foundations of software engineering (SIGSOFT '08/FSE-16). ACM, New York, pp. 24-35, 2008.required reading.

Lecturer:

Gall

Slides (PDF)

27.10 Project Intermediary Presentations Lecturer: Panichella

03.11

Lecture on "Software Code Review" moved to 24.11 for  sickness of the lecturer.

 

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.

Alberto Bacchelli, Christian Bird, "Expectations, outcomes, and challenges of modern code review," In: Proceedings 35th International Conference on Software Engineering (ICSE), IEEE, 2013.: 712-721. required reading.

Lecturer: Bacchelli 

Slides (PDF)

10.11

Classroom Exercise (EX3) 

Preparation:

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 “Software Code Review”.

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 24 November.
- Submit the report via e-mail to panichella@ifi.uzh.ch.

Lecturer: Panichella

Core-Review-exercise

Slides (PDF)

17.11

The lecture of 17.11 consists on a  self-study by the students on "Empirical Software Engineering". In particular, for the self-study we suggest to read the following papers:

, Thomas Zimmermann, Nachiappan Nagappan, Harald Gall, Emanuel Giger, Brendan Murphy: "Cross-project defect prediction: a large scale experiment on data vs. domain vs. process", In: Proceedings of the International Symposium on the Foundations of Software Engineering (FSE), 2009.  required reading.

Christian Bird, Nachiappan Nagappan, Premkumar Devanbu, Harald Gall, Brendan Murphy, Does distributed development affect software quality? An empirical case study of Windows Vista, In: Proceedings 31st International Conference on Software Engineering (ICSE), IEEE, 2009.  - required reading.

Lecturer: Gall
24.11

Lecture on "Software Code Review"

 

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.

Alberto Bacchelli, Christian Bird, "Expectations, outcomes, and challenges of modern code review," In: Proceedings 35th International Conference on Software Engineering (ICSE), IEEE, 2013.: 712-721. - required reading.

Lecturer: Prof. Bacchelli/Panichella
01.12

Lecture on "Overview on Software Testing" 

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

Mauro Pezzè, Michael Young - Software Testing and Analysis: Process, Principles and Techniques - recommended reading

Lecturer: Grano

Slides (PDF)

 
08.12

Lecture on "Search-based Software Testing (SBST)"

 

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

Phil McMinn - Search-based software test data generation: a survey  - recommended reading

Gordon Fraser, Andrea Arcuri - Whole Test Suite Generation  - required reading.

Annibale Panichella, Fitsum Meshesha Kifetew, Paolo Tonella - Reformulating Branch Coverage as a Many-Objective Optiimization Problem  - recommended reading.

Lecturer: Grano

Slides (PDF)

15.12 Final Project Presentations

Lecturer: 

Panichella

22.12 Written Exam. Gall/
Panichella
     

Exam

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).