Interface de génération de blason
Projet STLProjet STL M.GIBERT / M.LIPPMANNM.GIBERT / M.LIPPMANN
Sommaire1. L’héraldique
A. DéfinitionsB. Présentation
2. Le projetA. NaissanceB. Grammaire ?C. FonctionnalitésD. Architecture
3. La réalisationA. ReprésentationB. Design PatternsC. Communication
4. BilanA. MétriquesB. Conclusion Interface de génération de blason
M.GIBERT / M.LIPPMANN2
L’héraldique ?
• Science du blason :– Identification d’un chevalier– Identification de la généalogie
• Intérêt :– Langage universel permettant une
identification de l’origine de la personne entre plusieurs pays
Interface de génération de blason M.GIBERT / M.LIPPMANN
3
Création d’un blason
Interface de génération de blason M.GIBERT / M.LIPPMANN
4
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.LIPPMANN5
Grammaire : Blason
Pavage
Réduit
Brochant
Interface de génération de blason M.GIBERT / M.LIPPMANN
6
Plain
Simple
Partition
Grammaire :Figure• Position :
• Accompagner :
• Charger :Interface de génération de blason
M.GIBERT / M.LIPPMANN7
Dextre Senestre
Pointe
Chef
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
8
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 »– Non-duplication du travail– Mise au point du protocole de communication
• Débouche sur :– 2 projets indépendants– 1 interface de communication
Interface de génération de blason M.GIBERT / M.LIPPMANN
9
Représentation• 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
10
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 concretsInterface de génération de blason
M.GIBERT / M.LIPPMANN11
Communication• 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– Subsitutabilité des composants
• Inconvénients :– Pas de souplesse, fichiers non paramétrables– Ecritures sur disque inutilesInterface de génération de blason
M.GIBERT / M.LIPPMANN12
Métriques• Utilisation de métriques
– Indicateurs de qualité (conception/réalisation)– Outils statistiques utilisés pour évaluer le coût de
maintenance d’un projet (ou repartir de zéro).
• Mesures à l’aide d’outils spécialisés pour Java– Plugin Metrics pour Eclipse– Analyseur PMD
• Mise en évidence des sections « délicates »– Interprétation des données– Normalisation du code
Interface de génération de blason M.GIBERT / M.LIPPMANN
13
Bilan• Projet formateur
– Métier inconnu auparavant– Cahier des charges inexistant– Premières versions demandées rapidement
• Travail en amont– Découpage fonctionnel– Identification de composants utilisables (moteur
graphique)
• Travail en aval– Intégration– Mesures de qualité
Interface de génération de blason M.GIBERT / M.LIPPMANN
14
Interface de génération de blason M.GIBERT / M.LIPPMANN
15