Software Maintenance and Evolution

lingi2252  2018-2019  Louvain-la-Neuve

Software Maintenance and Evolution
5 credits
30.0 h + 15.0 h
Q1
Teacher(s)
Mens Kim;
Language
English
Main themes
Whereas many software engineering courses focus on building new systems from scratch, in industrial practice software developers are often confronted with already existing software systems that need to be maintained, reused or evolved. This requires specific skills to understand the design and implementation of an existing system and which parts need to be modified, to build software systems that are easier to maintain, and to design systems with reuse and evolution in mind from the very start. 
This course will thus study a variety of techniques, tools and methodologies to help building software systems that are easier to understand, maintain, reuse and evolve:
  • Software development in the context of an existing code base as opposed to 'green field' development
o   Software comprehension and concern location
o   Change impact analysis
o   Reverse engineering
  • Software Maintenance
o   Best programming practices
o   Coding standards
o   Design principles and heuristics
o   Design patterns
o   Refactoring
o   Reengineering
  • Software Reuse and Evolution
o   The laws of software evolution
o   Reuse techniques and design for reuse
o   Libraries vs. application frameworks
  • Software product lines
Aims

At the end of this learning unit, the student is able to :

1

Given the learning outcomes of the "Master in Computer Science and Engineering" program, this course contributes to the development, acquisition and evaluation of the following learning outcomes:

  • INFO1.1 , INFO1.3
  • INFO2.5
  • INFO5.5

Given the learning outcomes of the "Master [120] in Computer Science" program, this course contributes to the development, acquisition and evaluation of the following learning outcomes:

  • SINF1.M3
  • SINF2.5
  • SINF5.5

Students completing successfully this course will be able to

  • Understand the difficulties of developing code in a change context as opposed to ¿green field¿ development
  • Assess the impact of a change request to an existing product of medium size.
  • Describe techniques, coding idioms and other mechanisms for implementing designs that are more maintainable.
  • Understand how design patterns can improve the design of a software system.
  • Refactor an existing software implementation to improve some aspect of its design.
  • Identify the principal issues associated with software evolution and explain their impact on the software lifecycle.¿
  • Discuss the advantages and disadvantages of different types of software reuse.
 

The contribution of this Teaching Unit to the development and command of the skills and learning outcomes of the programme(s) can be accessed at the end of this sheet, in the section entitled “Programmes/courses offering this Teaching Unit”.
Content
The course will be organized in 3 different modules that address a variety of techniques, tools and methodologies to help  building software systems that are easier to understand, maintain, reuse and evolve: 
1.      Software understanding : how to understand existing systems
2.      Software maintenance : how to build software that is more maintainable, or how to improve existing software to make it more maintainable
3.      Software reuse and evolution : how to build reusable software and how to reuse existing software
Other information
Even though good quality software may be easier to maintain and evolve, software quality assurance techniques will not be addressed explicitly in this course as they are the topic of a separate course on Software Quality Assurance [LINGI2251]
Background:
  • Having a good knowledge of and experience with object-oriented programming concepts, algorithms and data structures.
  • Having prior or simultaneous experience with the development of a medium- to large-scale software system.
Bibliography
Les références
Compte tenu de la variété des sujets abordés, ce cours ne suivra pas un seul manuel, mais sera basé sur du matériel provenant de nombreuses sources différentes. Les slides de cours seront le matériel de référence principale pour ce cours et des pointeurs vers des lectures supplémentaires seront fournis par la plate-forme de cours en ligne.
 
Supports
Les slides de cours ainsi que d'autres informations pertinentes et pratiques relatives au cours seront accessibles sur Moodle. La même plate-forme sera également le moyen de communication entre l'enseignant (s) et les étudiants.
Faculty or entity
INFO


Programmes / formations proposant cette unité d'enseignement (UE)

Title of the programme
Sigle
Credits
Prerequisites
Aims
Master [120] in Computer Science and Engineering

Master [120] in Computer Science