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, 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).
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
https://github.com/rafaelkallis/ticket-tagger) accepted to the ICSME conference to one of our previous students (Rafael Kallis) in 2019:
https://icsme2019.github.io/accepted_papers.html
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.
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).
Support for this course is provided by:
Type: | Vorlesung mit integrierter Übung |
Lecturer: | |
|
|
Schedule: | Fri, 14:00-15:45, BIN-2.A.10, AND-4-06, or AND-3-02/06- please check regularly Obligatory course information |
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 |
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)": 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. (Optional supporting material for the projects) on CD/CI made in collaboration with Omar Mahdi: - Slides - Github |
Lecturer: Dr. Panichella (slides)
|
|
|
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: (Optional, but not required) reading: An Empirical Investigation on Documentation Usage Patterns in Maintenance Tasks. ICSM 2013: 210-219 |
Lecturer: Dr. Panichella (slides)
|
|
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. |
Lecturer: Dr. Panichella (slides)
|
|
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: Who is going to mentor newcomers in open source projects? SIGSOFT FSE 2012: 44 |
Lecturer: Dr. Panichella (slides)
|
|
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: Analyzing APIs documentation and code to detect directive defects. ICSE 2017: 27-37 Data Mining: Practical Machine Learning Tools and Techniques, Third Edition
|
Lecturer: Dr. Panichella (slides) |
Project Intermediary Presentations |
Lecturer: 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)") |
Lecturer: Dr. Panichella (slides)
|
|
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
|
Lecturer: Dr. Panichella (slides) |
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. Alberto Bacchelli, Christian Bird: Expectations, outcomes, and challenges of modern code review. ICSE 2013: 712-72 - required reading. (Optional, but not required) reading: |
Lecturer: Dr. Panichella (slides) |
|
Classroom Exercise (EX2) on Code Review " – included in the exam grading Preparation:a) Advance reading: b) Project: - Deadline for the exercise TBA. |
Lecturer: Dr. Panichella (slides)
|
|
|
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
|
Lecturer: Dr. Panichella (slides) |
|
Classroom Exercises (EX3) 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") ") |
Lecturer: Dr. Panichella (slides) |
Final Project Presentations |
Lecturer: 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).