Software Maintenance and Evolution

Faculteit Science and Engineering
Jaar 2021/22
Vakcode WMCS013-05
Vaknaam Software Maintenance and Evolution
Niveau(s) master
Voertaal Engels
Periode semester I b

Uitgebreide vaknaam Software Maintenance and Evolution
Leerdoelen At the end of the course, the student is able to:
1) understand the steps of the lifecycle of typical large-scale software products in the industry, and differentiate the various phases, activities, and involved tools and techniques involved during these steps
2) Differentiate between different program comprehension models and strategies, regarding their elements, steps and usefulness to software analysis.
3) Apply top-down program comprehension approaches and use reverse engineering tools to capture the architecture of a large-scale software system (over a hundred thousand lines of code).
4) Explain common software quality metrics and different types of code and design anomalies, which threat the quality of a software system.
5) Judge the size and quality of large-scale software systems (over a hundred thousand lines of code) using standard software metrics and using quality assessment tools.
Omschrijving During the course, the following subjects are covered:
Basic principles:
  • causes, problems and challenges of software evolution
  • lifecycle of a software product (design, implementation, maintenance)
  • software maintenance (perfective, adaptive, preventive, corrective)
  • the laws of software evolution
  • steps of the maintenance process (change management, impact analysis, changes design/coding/testing, release planning)

Program comprehension:
  • program comprehension challenges
  • program comprehension strategies (top-down, bottom-up)
  • reverse engineering models and techniques (call graphs, class hierarchies, program slicing and clustering)

Software quality:
  • software quality indicators and metrics
  • how to interpret quality indicators and metrics
  • source code anomalies (code smells and design smells)
  • technical debt
Uren per week
Onderwijsvorm Hoorcollege (LC), Opdracht (ASM), Werkcollege (T)
Toetsvorm Opdracht (AST)
(Each assignment is divided into a number of steps. Grading is based on the maximum mark (10) divided by the number of steps to complete in the assignment. If an assignment has more sub-steps, the grade fraction is subdivided accordingly. Students must be able to completely finish more than 50% of steps of the assignment in order to pass the course.)
Vaksoort master
Coördinator prof. dr. A. Capiluppi
Docent(en) prof. dr. A. Capiluppi
Verplichte literatuur
Titel Auteur ISBN Prijs
Object-Oriented Metrics in Practice: Using Software Metrics to Characterize, Evaluate, and Improve the Design of Object-Oriented Systems Michele Lanza, Radu Marinescu 3540244298
Software Evolution Tom Mens, Serge Demeyer 3540764399
Effective Software Maintenance and Evolution: A Reuse-Based Approach Stanislaw Jarzabek 0849335922
Software Maintenance: Concepts and Practice (Second Edition) Penny Grubb, Armstrong Takang 981238426X
Entreevoorwaarden - familiarity with a mainstream programming language (e.g. C, C++, Java, C#/.NET, Python, or similar). Matlab and JavaScript would not qualify.
- having (co-)developed a sizeable application in a mainstream programming language (over 2000 lines or code)
- familiarity with object-oriented programming and software design (inheritance, encapsulation, polymorphism, design patterns)
- familiarity with using a mainstream source control management system (SVN, Git, CVS, or similar)
- basic calculus and statistics notions (univariate function analysis, derivatives, gradients, histograms, normal distribut
Opgenomen in
Opleiding Jaar Periode Type
MSc Astronomy: Quantum Universe  (Optional Courses in Data Science (DS)) - semester I b keuze
MSc Computing Science: Data Science and Systems Complexity  (Guided choice course units) - semester I b keuze
MSc Computing Science: Science Business and Policy  (Elective course units) 1 semester I b keuze
MSc Computing Science: Software Engineering and Distributed Systems  (Compulsory course units) 1 semester I b verplicht
MSc Courses for Exchange Students: AI - Computing Science - Mathematics - semester I b