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:
o Change impact analysis
o Reverse engineering
o Coding standards
o Design principles and heuristics
o Design patterns
o Refactoring
o Reengineering
o Reuse techniques and design for reuse
o Libraries vs. application frameworks
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 Change impact analysis
o Reverse engineering
- Software Maintenance
o Coding standards
o Design principles and heuristics
o Design patterns
o Refactoring
o Reengineering
- Software Reuse and 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:
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:
Students completing successfully this course will be able to
|
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
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:
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.
Online resources
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