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.
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. It is important to specify that for the final evaluation all of the required exercises are considered mandatory.
- 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
|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|
|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!
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!
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: