Interface de génération de blason Projet STL M.GIBERT / M.LIPPMANN
Interface de génération de blason M.GIBERT / M.LIPPMANN Sommaire L’héraldique Le projet Naissance Grammaire ? Fonctionnalités Architecture La réalisation Représentation Design Patterns Communication Bilan Métriques Conclusion Interface de génération de blason M.GIBERT / M.LIPPMANN
Interface de génération de blason M.GIBERT / M.LIPPMANN L’héraldique ? Science du blason : Identification d’un chevalier Identification de la généalogie / faits d’armes, etc… Intérêt : Langage universel permettant une identification « rapide » de la personne Interface de génération de blason M.GIBERT / M.LIPPMANN
Interface de génération de blason M.GIBERT / M.LIPPMANN Naissance du projet Projet précédent Création d’une armoirie à partir de la description sous forme de S-expression Ecrit en ML Objectif du nouveau logiciel Ecrit en JAVA Créer une armoirie par opérations successives sur une IHM Générer la S-expression correspondant (possibilité de s’interfacer avec l’application ML) Créer un moteur graphique plus riche Interface de génération de blason M.GIBERT / M.LIPPMANN
Interface de génération de blason M.GIBERT / M.LIPPMANN Grammaire : Blason Plain Simple Partition Pavage Brochant Interface de génération de blason M.GIBERT / M.LIPPMANN
Interface de génération de blason M.GIBERT / M.LIPPMANN Grammaire :Figure Position : Nombre : Chef Dextre Senestre Pointe Interface de génération de blason M.GIBERT / M.LIPPMANN
Interface de génération de blason M.GIBERT / M.LIPPMANN Grammaire :Figure Accompagner : Charger : Interface de génération de blason M.GIBERT / M.LIPPMANN
Processus de création d’un blason Interface de génération de blason M.GIBERT / M.LIPPMANN
Interface de génération de blason M.GIBERT / M.LIPPMANN S-Expression (Or ( Accompagné (charge ( fasce sable ) (molette gueules )) ( en Chef Senestre ( molette argent )))) Interface de génération de blason M.GIBERT / M.LIPPMANN
Interface de génération de blason M.GIBERT / M.LIPPMANN Fonctionnalités Fonctionnalités sur le blason Création Edition Import / Export Transformation en S-expression Fonctionnalités sur les figures Chargement Accompagnement Agrandissement / Réduction Décalage horizontal et / ou vertical Fonctionnalités sur l’armoirie Prévisualisation Export Jpeg ou SVG Interface de génération de blason M.GIBERT / M.LIPPMANN
Interface de génération de blason M.GIBERT / M.LIPPMANN Aperçu Interface de génération de blason M.GIBERT / M.LIPPMANN
Interface de génération de blason M.GIBERT / M.LIPPMANN Architecture Découpage fonctionnel Un composant pour l’IHM Un composant pour le moteur graphique Un composant pour la description sous forme de S-expression. Réutilisation de composants PSTL n°31 : « Réalisation SVG du blason » Partage de composants Mise au point du protocole de communication (travail collaboratif) Débouche sur : 2 projets indépendants 1 interface de communication Interface de génération de blason M.GIBERT / M.LIPPMANN
Représentation du blason Nécessité d’une représentation : Proche de la grammaire pré-établie Exprimable en XML Exprimable en S-expression Utilisable dans une interface graphique Choix d’une représentation arborescente Copie conforme de la grammaire Traductible directement en S-expression et en XML Prédéfini dans SWING (JTree) Définition des entités de base : les nœuds de l’arbre Rapprochement du cours d’ILP Réutilisation de concepts (design pattern, « compilation », explicitation) Interface de génération de blason M.GIBERT / M.LIPPMANN
Interface de génération de blason M.GIBERT / M.LIPPMANN Design pattern Application de divers motifs de conception Fabrique (Blason, Figure) Visiteurs Traduction d’un blason en XML Traduction d’un blason en S-expression Edition de nœuds du blason Représentation graphique d’un blason (JTree) Observateurs (IHM) Singleton (Journalisation des opérations successives) Utilisation combinée de visiteurs et de fabriques Fabrication de Blasons et Figure abstraits via l’IHM Un visiteur remplace des bouts de l’arbre Indépendance entre l’IHM et les types concrets Interface de génération de blason M.GIBERT / M.LIPPMANN
Communication entre les composants Projet composé de deux sous-projets indépendants IHM Moteur graphique Nécessité d’une interface entre les deux modules Communication IHM / Moteur Graphique via un fichier XML Communication Moteur Graphique / IHM via un fichier SVG Avantages : Formats indépendants du langage et de la plate-forme Substituabilité des composants Interface de génération de blason M.GIBERT / M.LIPPMANN
Interface de génération de blason M.GIBERT / M.LIPPMANN Métriques Utilisation de métriques Indicateurs de qualité (conception/réalisation) Outils statistiques Evaluation du coût de maitenance Mesures à l’aide d’outils spécialisés pour Java Plugin Metrics pour Eclipse Analyseur PMD Améliorations Normalisation du code Interface de génération de blason M.GIBERT / M.LIPPMANN
Résultats obtenus Deux métriques « dans le rouge » Complexité cyclomatique de Mc Cobe Exprime le nombre de chemins possibles dans une méthode Négative presque exclusivement sur des méthodes générées Nombre de paramètres Exprime la complexité d’une méthode via son nombre de paramètres Négative sur des méthodes surchargées de SWING Résultats satisfaisants
Interface de génération de blason M.GIBERT / M.LIPPMANN Bilan Projet formateur Découverte du métier (héraldique) Ecriture d’un cahier des charges Premières versions demandées rapidement Travail en amont Découpage fonctionnel Identification de composants utilisables Travail en aval Intégration Mesures de qualité Interface de génération de blason M.GIBERT / M.LIPPMANN
Interface de génération de blason M.GIBERT / M.LIPPMANN