|
La première phase est de concevoir le modèle cible pour le système. Décomposez le périmètre choisi en composants et définissez précisément les interfaces qu'ils exposent et au travers desquelles ils interagissent avec leur environnement. Appuyez-vous sur votre connaissance fonctionnelle de l'existant mais ne faite à ce stade aucun compromis par rapport à l'implémentation actuelle. Cette étape est cruciale car il s'agit de définir la future structure du système. Celle-ci doit permettre la maintenance et l'évolution de l'application.
Essayez ensuite de répartir les classes existantes dans les futurs composants. Les classes cumulant des rôles appartenant à plusieurs composants se retrouvent "à cheval" et devront être scindées plus tard ; définissez les interfaces de chacun des rôles qu'elles implémentent. Si certaines classes ne trouvent pas leur place, posez-vous la question de leur utilité.
A l'intérieur de chaque composant, descendez ensuite au niveau classe en prenant cette fois en compte l'existant afin de minimiser l'effort de transformation vers le nouveau modèle. Identifiez les malfaçons réellement pénalisantes et les anti-patterns et proposez un design corrigé.
A nouveau, définissez les interfaces au travers desquelles vos classes devront interagir et répertoriez les décalages avec l'implémentation actuelle, ils seront traités dans la phase suivante. Vous devez avoir à ce stade une vision claire de ce que sera le système une fois rénové.
Cette phase de conception est faite à iso-périmètre fonctionnel ; tenter "d'en profiter" pour apporter des "améliorations" à l'application.
|