Afin de bien comprendre et d'appliquer la matière des sujets avancés présentés dans ce cours, les étudiants doivent avoir une bonne expérience en programmation dans un environnement moderne, de préférence avec un langage orienté objet (Java, C#, C++, etc.). Par exemple, il y a des travaux à réaliser individuellement où les étudiants doivent appliquer des principes dans un code source de langage orienté objet.
À la suite de ce cours, l'étudiant sera en mesure :
- de comprendre et de distinguer entre les différentes sources de complexité dans un logiciel;
- Comprendre et distinguer les bonnes et mauvaises pratiques de conception.
- de comprendre et d’appliquer de différentes pratiques de réusinage (refactoring) de logiciel orienté objet.
- d'identifier, de crtitiquer, et corriger quelqules antipatrons de conception orienté objet;
- de concevoir et appliquer une étude empirique sur la conception orienté objet;
- d’appliquer une méthode d’analyse et de conception orientée objet;
- de comprendre et de distinguer entre les différentes métriques de qualité de conception, telles que le couplage, la cohésion et la stabilité;
- de comprendre l’impact de ces métriques de qualité sur la conception de logiciels;
- d’utiliser une notation telle que le langage UML pour modéliser, décrire et communiquer les éléments d’une conception.