1
Présentation du design
- Rappel des fondamentaux de la POO et d'UML.
- Les apports d'UML pour la conception.
- Les enjeux de la conception.
- L'utilisation de l'héritage. Avantages et inconvénients.
2
Principes fondamentaux en conception Objet
- Les principes d'ouverture/fermeture (OCP) et de substitution de Liskov (LSP).
- Concept de polymorphisme, de couplage faible et de forte cohésion.
- L'impact de la conception objet sur les projets.
Travaux pratiques
Découpage des responsabilités entre les classes.
3
Principes de construction des classes
- La gestion des dépendances avec l'inversion de dépendance (DIP).
- La réduction de la complexité apparente par la séparation des interfaces (ISP).
- La répartition des responsabilités avec le GRASP.
4
Principes d'organisation en packages
- Le package : une unité de conception livraison/réutilisation (REP) et la réutilisation commune (CRP).
- Le découpage des packages. Le CCP.
- L'organisation entre packages.
Travaux pratiques
Construction et hiérarchisation des packages.
5
Développements pilotés par les tests
- Approche Test Driven Development (TDD) versus approche Model Driven Engineering (MDE).
- Ecriture des cas et de suites de tests.
Travaux pratiques
Attribution des responsabilités aux composants logiciels via l'approche TDD.
6
Principes des Design Patterns
- Les Design Patterns pour réutiliser l'expérience.
- Périmètre, avantages et limites des Design Patterns.
- Répondre à des problèmes récurrents.
- Les patterns fondateurs de Gamma et GoF : les patterns de création, de comportement, de structure.
- La refactorisation. Pourquoi refactoriser ?
- Modification de la présentation du code et de l'algorithmique des classes. Refonte de la conception.
Travaux pratiques
Exemple de conception, refactorisation et programmation avec des patterns GoF.
7
Architecture logicielle et patterns architecturaux
- Des exigences à l'architecture.
- Styles architecturaux.
- Patterns de distribution (Client Serveur Style, Data Bus Pattern, Blackboard, Repository).
- Patterns de conception de systèmes (MVC, architecture en couches, Plug-in Style, Pipeline).
8
Processus de développement
- Concevoir dans un processus itératif et incrémental.
- Le manifeste Agile. XP, Scrum.