Options de Design
La version 2 du BoardZ s'inscrit dans un projet de développement continu sur un temps long. Les règles de design tiennent compte de cet objectif et essaient de préparer ce cycle long, en posant les bases suffisantes pour assurer l'évolution du dispositif en minimisant les changement structurels majeurs.
Pour cela une “patternisation” de base du projet doit être mise en place, ainsi que des concepts de design forts et structurants.
Conception “Full Object” : Elle doit garantir, (aux librairies tierces open source) la portabilité du projet dans d'autres langages plus performants. Pour les librairies tierces qui ne peuvent garantir elles-mêmes le portage, le design pattern de Façade doit être utilisé.
Utilisation de design patterns classiques :
Toute fonctionnalité ou “aspect” de traitement à vocation unique doit être encapsulé dans un pattern Singleton et produire une classe statique ou quasi-statique.
Toute utilisation d'un principe étant potentiellement voué à une augmentation, évolution ou alternative future devrait utiliser le principe de Fabrique.
Le pattern d'Inversion de Contrôle (IOC) sera utilisé pour optimiser la répartition des responsabilités entre objets.
Le pattern Poids Mouche (flyweight) sera utilisé pour minimiser l'impact mémoire lors de l'appel à des définitions partielles de données.
Principes et orientations du design technique
Adaptabilité :
Abstraction maîtrisée : L'abstraction peut avoir de grandes qualité (factorisation importante du code, productivité importante de l'écriture), mais peut, si elle est poussée trop loin, peut avoir de gros inconvénients dans un projet (problème de performance dû à l'indirection d'accès aux données, opacité des données physiques relativement à leur destination, perte de maniabilité des données dans le modèle physique de données). Nous conserverons un “mi-chemin” permettant d'obtenir des gains “pragmatiques” de certaines décisions d'abstraction, en évitant une application dogmatique de la normalisation à outrance des structures de données.
Framework objet Boardz2
Revenir au sommaire de la conception - Revenir au sommaire général