DE50 — Vincent Hilaire — UTBM
Hugo Charcot · Benjamin Groisne · Antoine Laurant · Arnaud Michel · Guillaume Retter
Le problème, les sources et l'objectif du projet
IBM Rhapsody
Le problème actuel
Un Stakeholder Value Network est un graphe orienté pondéré modélisant les flux de valeur entre un système et ses parties prenantes.
Concept : Cameron (2007) | Application SysML : Sease et al., INCOSE 2018
| Critère | Sans plugin | Avec RhapsodySVN |
|---|---|---|
| Modélisation SVN | Outil externe, déconnecté | Natif dans Rhapsody |
| Calcul des scores | Manuel, source d'erreurs | Automatique (Cameron Eq. 2) |
| Mise à jour | Ressaisie complète | Dynamique (event-driven) |
| Visualisation | Aucune priorisation visuelle | Colorisation par rang automatique |
| Intégration modèle | Copie manuelle des résultats | Tag values dans le modèle SysML |
Développer un plugin Java pour IBM Rhapsody 9.0 permettant de :
Profil utilisateur cible
Phase d'utilisation
| Domaine | Niveau requis | Remarque |
|---|---|---|
| IBM Rhapsody | Intermédiaire | Navigation, diagrammes BDD/IBD |
| SysML | Intermédiaire | Blocs, stéréotypes, tag values |
| SVN / valeur perçue | Aucun prérequis | Pris en charge par le plugin |
| Développement / scripting | Non requis | Interface graphique uniquement |
| Rôle | Élève |
|---|---|
| Product Owner | Guillaume Retter |
| Scrum Master | Arnaud Michel |
| Développeurs |
|
Jalons : Conseil prof / Pivot architectural 25 mai · Rendu final 16 juin
| Phase | Activité | Résultat |
|---|---|---|
| Semaines 1–2 | Recherche bibliographique, étude API Rhapsody, rédaction CdC et User Stories | Bases conceptuelles posées |
| Semaines 2–3 | Spike technique : Création du plugin entièrement via code Java | Limitations API identifiées — création de nouveaux types de diagrammes impossible depuis Java seul |
| Tâche | Description | Statut |
|---|---|---|
| SVNProfile (Java) | Création programmatique des stéréotypes, énumérations et tag values via l'API Java | Livré (v1) |
| UC1 — Config | Initialisation du profil SVN dans le projet courant | Livré (v1) |
| UC2 — Create Arc | Création d'un arc de valeur (IRPDependency) entre deux éléments | Livré (v1) |
| UC3 — Edit Arc | Édition BenefitRanking et SupplyImportance | Livré (v1) |
| UC4 — Calcul | Détection DFS des boucles de valeur + calcul | Livré (v1) |
| Conseil professeur | Retour en fin de sprint : créer le profil depuis l'interface Rhapsody, pas via Java — compatibilité et maintenabilité meilleures | Pivot décidé |
| Tâche | Description | Statut |
|---|---|---|
| Refacto majeure | Suppression de la création programmatique du profil — intégration avec le profil créé depuis l'UI Rhapsody | Livré |
| UC1–UC5, UC7, UC8 | Réimplémentation sur la base du profil Rhapsody UI (stéréotypes, tag values, enums) | Livré |
| Listener | Architecture événementielle — recalcul automatique à chaque modification du modèle | Livré |
| Strategy pattern | ValueLoopStrategy (Cameron) + ArcSumStrategy (fallback sans nœud système) | Livré |
| Tests unitaires | Couverture model (Stakeholder, SVNSystem, ValueArc) + services de calcul | Livré |
| Livrables | Rapport, présentation, vidéo 3 min | Livré |
Les trois axes fonctionnels et la théorie sous-jacente
| Axe | Objectif | Résultat |
|---|---|---|
| 1. Modéliser | Représenter graphiquement les arcs de valeur entre acteurs et système | Graphe orienté pondéré intégré dans Rhapsody |
| 2. Quantifier | Calculer automatiquement l'importance relative de chaque acteur | Classement objectif (score 0–1) par stakeholder |
| 3. Informer | Propager les résultats dans le modèle système | Base quantitative pour les trade-offs d'architecture |
Score d'arc = BenefitRanking x SupplyImportance (Sease et al., INCOSE 2018, Figure 3)
| Supply \ Benefit | MIGHT_BE | SHOULD_BE | MUST_BE |
|---|---|---|---|
| LOW | 0.10 | 0.20 | 0.35 |
| MEDIUM | 0.20 | 0.35 | 0.65 |
| HIGH | 0.35 | 0.65 | 0.95 |
MIGHT_BE et LOW sont les valeurs par défaut des value arcs (0.10)
Détection des boucles par DFS depuis le nœud system, puis calcul de l'importance :
system : stratégie de secours ArcSumStrategy (somme des arcs normalisée)importanceScore de chaque stakeholder7 use cases implémentés — du cadrage à la visualisation
| UC | Commande | Description | Priorité | Sprint |
|---|---|---|---|---|
| UC1 | SVN Configure |
Initialisation du SVNProfile (stéréotypes, enums, tag values) | MUST | S2 |
| UC2 | SVN Create Arc |
Création d'un arc de valeur (IRPDependency stéréotypée) | MUST | S2 |
| UC3 | SVN Edit Arc |
Édition BenefitRanking / SupplyImportance via dialogue Swing | MUST | S2 |
| UC | Commande | Description | Priorité | Sprint |
|---|---|---|---|---|
| UC4 | SVN Calculate |
Calcul scores Cameron — DFS + Équation 2 — mise à jour tag values | MUST | S2 | UC5 | SVN Colorize |
Colorisation automatique rouge / orange / jaune par rang | LOW | S3 |
| UC6 | SVN Update Arc Labels |
Affichage des scores de pondération comme étiquettes sur les arcs | MUST | S3 |
| UC7 | SVN Clean |
Suppression complète du profil SVN et réinitialisation du modèle | MUST | S3 |
UC1 est un préalable obligatoire — UC4 est déclenché automatiquement par le Listener (Sprint 3)
Avant Sprint 3
Après Sprint 3 (Listener)
afterAddElement et onElementsChanged de l'API
Rhapsody
Structure du profil SVNProfile, entités du modèle et attributs
| Élément | Type | Appliqué sur | Rôle |
|---|---|---|---|
«stakeholder» |
Stéréotype | Actor (IRPActor) | Partie prenante |
«system» |
Stéréotype | Class (IRPClass) | Nœud central |
«valueArc» |
Stéréotype | Dependency (IRPDependency) | Arc de valeur pondéré |
importanceScore |
Tag value | stakeholder | Score calculé |
benefitRanking |
Tag value (Enum) | valueArc | MIGHT_BE / SHOULD_BE / MUST_BE |
supplyImportance |
Tag value (Enum) | valueArc | LOW / MEDIUM / HIGH |
| Attribut | Type | Description | Défaut |
|---|---|---|---|
benefitRanking |
BenefitRanking | Niveau de bénéfice attendu par le stakeholder | MIGHT_BE |
supplyImportance |
SupplyImportance | Importance de la fourniture du système | LOW |
score |
Float | Score calculé après exécution de UC4 | 0.10 |
| source | Stakeholder | SVNSystem | Nœud source de l'arc | — |
| target | Stakeholder | SVNSystem | Nœud cible de l'arc | — |
L'arc est modélé comme un IRPDependency dans Rhapsody — solution la plus compatible avec le profil BDD
Architecture, design patterns, stack technique et tests
| Pattern | Classe principale | Rôle dans le plugin |
|---|---|---|
| Singleton | Logger |
Instance unique du logger ; accès uniforme depuis tous les composants |
| Strategy | ICalculationStrategy |
Interchangeabilité des algorithmes de calcul (ValueLoopStrategy / ArcSumStrategy) sans modifier le code appelant |
| Observer | Listener |
Souscription aux événements Rhapsody (afterAddElement, onElementsChanged) —
mise à jour automatique du modèle
|
| Composant | Choix |
|---|---|
| Langage | Java 8 (JDK 1.8) |
| Environnement cible | IBM Rhapsody 9.0 |
| OS supporté | Windows (DLL native) |
| Build | Maven 3.x |
| Livrable | JAR (plugin Rhapsody) + code source |
| API Rhapsody | rhapsody.jar (local) |
Extension du profil BDD
Couverture des tests unitaires
Stakeholder, SVNSystem, ValueArcValueLoopStrategy, ArcSumStrategyGestion des erreurs
Problème
onElementsChanged des dizaines de fois consécutivesSolution
SearchState (état mutable partagé) par une méthode récursive pure de recherche des value loopsQuestions ?
Hugo Chacrot · Benjamin Groisne · Antoine Laurant · Arnaud Michel · Guillaume Retter
DE50 — Encadrant : Vincent Hilaire · UTBM — P26