Software Maintenance and Evolution - FS 15

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 SOFAS, ChangeDistiller, or Software Evolution Facets.

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.

Final Evaluation

Grading will be based on the oral exam. Object of the oral exam are the required reading list. It is important to specify that for the final evaluation all of the required exercises are considered mandatory.

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
Schedule: Fri, 13:00-14:45, BIN 2.A.01
Language: Lecture in German and/or 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
20.02.2015 No lecture! Instead, self-study of the required reading list

Foundations of Software Evolution
Challenges of software maintenance, software evolution, Laws of Software Evoluiton, Reverse engineering and Reengineering
Required Reading:
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
D.L. Parnas, "Software Aging", 1994
M.M. Lehman et al., "Metrics and Laws of Software Evolution", 1997
Lecturer: Gall

27.02.2015

Reengineering I Lecturer: Panichella
Slides

06.03.2015

Exercise: IR-based Traceability Recovery
Self-study of the required reading list and required exercise (related to the reading list).

IR-based traceability recovery is a key software maintenance activity in which software engineers extract the relationships among software artifacts.

Required Reading:
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.
Giuliano Antoniol, Gerardo Canfora, Andrea De Lucia, Ettore Merlo, "Recovering Code to Documentation Links in OO Systems", In: Proceedings of the Working Conference on Reverse Engineering (WCRE), 1999.
Link to the Exercise:
Traceability Recovery Exercise

Submit via OLAT (or alternatively, send an e-mail to panichella@ifi.uzh.ch) by March 15 (extended to) 18, 2015

Lecturer: Panichella

13.03.2015

No lecture due to sickness!!! Thus, self-study of the required reading list

Software Analysis Visualization: Required reading:

Martin Pinzger, Harald Gall, Michael Fischer, Michele Lanza, Visualizing multiple evolution metrics, In: Proceedings of the ACM Symposium on Software Visualization (SoftVis), ACM, 2005.

Michele Lanza, Stephane Ducasse, "Polymetric Views-A Lightweight Visual Approach to Reverse Engineering," IEEE Transactions on Software Engineering, vol. 29, no. 9, pp. 782-795, September, 2003.

Lecturer: Gall
Slides

20.03.2015

Peer Code Review: Theory and Practise.
Required Reading:

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

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.

Lecturer: Panichella
Slides

27.03.2015

Empirical Software Engineering

Papers required to read:

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

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.

Lecturer: Gall
Slides
03.04. and 10.4.2015 No lecture due to Easter break
17.04.2015

Classroom Exercise on Code Review:

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 “Peer Code Review: Theory and Practise” (held on 20-03-2015).

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

Submit via OLAT (or alternatively, send an e-mail to panichella@ifi.uzh.ch) by April 24, 2015

Lecturer: Panichella
Slides
24.04.2015

Change Type Analysis with ChangeDistiller

Papers to read:

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.

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.

Lecturer: Gall
08.05.2015 Research Talk: Annibale Panichella (Delft University of Technology) - "Test data generation"
Slides
15.05.2015 Code Change Summarization

Laura Moreno, Gabriele Bavota, Massimiliano Di Penta, Rocco Oliveto, Andrian Marcus, Gerardo Canfora' Automatic generation of release notes. In Proceedings of the 22nd ACM SIGSOFT International Symposium on Foundations of software engineering (SIGSOFT '08/FSE-22). ACM, pp. 484-495, 2014.

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.

Lecturer: Panichella
Slides
22.05.2015 No lecture! Instead, self-study of the required reading list:
SOFAS - Software Analysis as a Service
Giacomo Ghezzi, Harald C. Gall, A framework for semi-automated software evolution analysis composition, Automated Software Engineering, Vol. 20 (3), 2013.
29.05.2015 Practical exercise on SOFAS Platform and Facets Lecturer: Gall
Slides
05.06.2015 Exam:

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

Update: There will be an oral exam (with individual exam slots). A request for registration will be sent out via OLAT in due time.

Dates for the oral exam are June 5, 22, and 23.
Register for exam here!

Literature

In addition to the papers mentioned as required reading, you may check additional materials for the course that can be found in the following book: