Sommaire1. L’héraldique2. Le projet
A. 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.LIPPMANN
2
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
3
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.LIPPMANN4
Grammaire : Blason
Pavage
Brochant
Interface de génération de blason M.GIBERT / M.LIPPMANN
5
Plain
Simple
Partition
Grammaire :Figure• Position :
• Nombre :
Interface de génération de blason M.GIBERT / M.LIPPMANN
6
Dextre Senestre
Pointe
Chef
Grammaire :Figure• Accompagner :
• Charger :
Interface de génération de blason M.GIBERT / M.LIPPMANN
7
S-Expression
Interface de génération de blason M.GIBERT / M.LIPPMANN
9
(Or ( Accompagné (charge ( fasce sable ) (molette gueules ))( en Chef Senestre ( molette argent ))))
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
10
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
12
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
13
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.LIPPMANN14
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– Substituabilité des composants
Interface de génération de blason M.GIBERT / M.LIPPMANN
15
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
• 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
16
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
17