Navigation auf uzh.ch
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.
Learn theories, models, tools, and processes for the maintenance and evolution of large software sytems.
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.
Grading will be based on the oral exam. Object of the oral exam are the required reading list. For the final evaluation all of the required exercises are considered mandatory.
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 |
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 |
---|---|---|
22.09 |
Lecture on "Foundations of Software Evolution (Leman Laws + Reengineering I)": For this lecture is recommended a self-study of the required reading (for the final exam): The following are seminal papers that constitute the foundation of software evolution dating back into the 80s and the influential works of Manny Lehman. |
Lecturer: Gall / Panichella |
29.09 |
(1/2) Lecture on "IR-based Traceability Recovery": (1/2) Classroom Exercise (EX1): Link to the Exercise will be provided before the lecture: "Traceability Recovery Exercise"
For this lecture is recommended a self-study of the required reading (for the final exam): |
Lecturer: Panichella / Vassallo |
06.10 |
Classroom Exercise (EX2) Project subject of the exercise is: JEdit. 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. |
Lecturer: Panichella / Vassallo |
13.10 |
Lecture on "Change Type Analysis with ChangeDistiller" For this lecture is recommended a self-study of the required reading (for the final exam): |
Lecturer: Gall |
20.10 |
Lecture on "Summarization Techniques for Code, Changes, and Testing". For this lecture is recommended a self-study of the required reading (for the final exam):
|
Lecturer: Panichella
|
27.10 | Classroom Exercise (EX3) on "Summarization Techniques for Code, Changes, and Testing" | Lecturer: Panichella / Vassallo |
03.11 |
Lecture on "Peer Code Review: Theory and Practice".
For this lecture is recommended a self-study of the required reading (for the final exam): |
Lecturer: Panichella |
10.11 |
Classroom Exercise (EX4) Preparation:a) Advance reading: b) Project: |
Lecturer: Panichella |
17.11 |
Lecture on "Empirical Software Engineering" For this lecture is recommended a self-study of the required reading (for the final exam): |
Lecturer: Gall
|
24.11 |
Lecture on "Overview on Software Testing"
Mauro Pezzè, Michael Young - Software Testing and Analysis: Process, Principles and Techniques |
Lecturer: Grano
|
01.12 |
Lecture on "Search-based Software Testing (SBST)"
For this lecture is recommended a self-study of the required reading (for the final exam):
Phil McMinn - Search-based software test data generation: a survey |
Lecturer: Grano |
08.12 |
Guest Lecture: “Code Smells: Relevance of the Problem and Novel Detection Techniques” |
Lecturer: Dr. Palomba
|
15.12 | Workshop with presentations of the students about the following papers (such papers will be not considered as part of the readinglist for the final evaluation)": - Sebastiano Panichella, Andrea Di Sorbo, Emitza Guzman, Corrado Aaron Visaggio, Gerardo Canfora, Harald C. Gall: How can i improve my app? Classifying user reviews for software maintenance and evolution . ICSME 2015. - 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). - Gabriele Bavota, Gerardo Canfora, Massimiliano Di Penta, Rocco Oliveto, Sebastiano Panichella: The Evolution of Project Inter-dependencies in a Software Ecosystem: The Case of Apache. ICSM 2013. - Sebastiano Panichella, Jairo Aponte, Massimiliano Di Penta, Andrian Marcus, Gerardo Canfora: Mining source code descriptions from developer communications. ICPC 2012. - Gabriele Bavota, Gerardo Canfora, Massimiliano Di Penta, Rocco Oliveto, Sebastiano Panichella: An Empirical Investigation on Documentation Usage Patterns in Maintenance Tasks. ICSM 2013. - Sebastiano Panichella, Gabriele Bavota, Massimiliano Di Penta, Gerardo Canfora, Giuliano Antoniol: How Developers' Collaborations Identified from Different Sources Tell Us about Code Changes. ICSME 2014 - Sebastiano Panichella, Venera Arnaoudova, Massimiliano Di Penta, Giuliano Antoniol: Would static analysis tools help developers with code reviews? SANER 2015 |
Lecturer: Panichella |
22.12 | 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).
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: