Afin de bien comprendre et d'appliquer la matière des sujets avancés présentés dans ce cours, les personnes inscrites dans le cours doivent avoir une bonne expérience en programmation dans un environnement moderne, de préférence avec un langage orienté objet (Java, C#, C++, TypeScript, etc.). Par exemple, il y a des travaux à réaliser individuellement où il faut appliquer des principes dans un code source de langage orienté objet.
Une personne ayant réussi ce cours sera en mesure :
- de comprendre et de distinguer entre les différentes sources de complexité dans un logiciel;
- de comprendre et de 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 critiquer et de corriger quelques antipatrons de conception orientée objet;
- de concevoir et appliquer une étude empirique sur la 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;
- de connaître les notions de fiabilité essentielles pour concevoir un logiciel tolérant aux fautes;
- d’utiliser une notation telle que le langage UML pour modéliser, décrire et communiquer les éléments d’une conception.