DE50 — Vincent Hilaire — UTBM
Hugo Charcot · Benjamin Groisne · Antoine Laurant · Arnaud Michel · Guillaume Retter
Le probleme, les sources et l'objectif du projet
IBM Rhapsody
Le probleme actuel
Un Stakeholder Value Network est un graphe oriente pondere modelisant les flux de valeur entre un systeme et ses parties prenantes.
Concept : Cameron (2007) | Application SysML : Sease et al., INCOSE 2018
| Critere | Sans plugin | Avec RhapsodySVN |
|---|---|---|
| Modelisation SVN | Outil externe, deconnecte | Natif dans Rhapsody |
| Calcul des scores | Manuel, source d'erreurs | Automatique (Cameron Eq. 2) |
| Mise a jour | Ressaisie complete | Dynamique (event-driven) |
| Visualisation | Aucune priorisation visuelle | Colorisation par rang automatique |
| Integration modele | Copie manuelle des resultats | Tag values dans le modele SysML |
Developper un plugin Java pour IBM Rhapsody 9.0 permettant de :
Profil utilisateur cible
Phase d'utilisation
| Domaine | Niveau requis | Remarque |
|---|---|---|
| IBM Rhapsody | Intermediaire | Navigation, diagrammes BDD/IBD |
| SysML | Intermediaire | Blocs, stereotypes, tag values |
| SVN / valeur percue | Aucun prerequis | Pris en charge par le plugin |
| Developpement / scripting | Non requis | Interface graphique uniquement |
| Eleve | Role |
|---|---|
| Product Owner | Guillaume Retter |
| Scrum Master | Arnaud Michel |
| Développeurs |
|
Jalons : Conseil prof / Pivot architectural 25 mai · Rendu final 16 juin
| Phase | Activite | Resultat |
|---|---|---|
| Semaines 1–2 | Recherche bibliographique, etude API Rhapsody, redaction CdC et User Stories | Bases conceptuelles posees |
| Semaines 2–3 | Spike technique : tentative de creation du plugin entierement via code Java | Limitations API identifiees — creation de nouveaux types de diagrammes impossible depuis Java seul |
| Tache | Description | Statut |
|---|---|---|
| SVNProfile (Java) | Creation programmatique des stereotypes, enumerations et tag values via l'API Java | Livré (v1) |
| UC1 — Config | Initialisation du profil SVN dans le projet courant | Livré (v1) |
| UC2 — Create Arc | Creation d'un arc de valeur (IRPDependency) entre deux elements | Livré (v1) |
| UC3 — Edit Arc | Edition BenefitRanking et SupplyImportance | Livré (v1) |
| UC4 — Calcul | Detection DFS des boucles de valeur + calcul | Livré (v1) |
| Conseil professeur | Retour en fin de sprint : creer le profil depuis l'interface Rhapsody, pas via Java — compatibilite et maintenabilite meilleures | Pivot decide |
| Tache | Description | Statut |
|---|---|---|
| Refacto majeure | Suppression de la creation programmatique du profil — integration avec le profil cree depuis l'UI Rhapsody | Livré |
| UC1–UC5, UC7, UC8 | Reimplementation sur la base du profil Rhapsody UI (stereotypes, tag values, enums) | Livré |
| Listener | Architecture evenementielle — recalcul automatique a chaque modification du modele | Livré |
| Strategy pattern | ValueLoopStrategy (Cameron) + ArcSumStrategy (fallback sans noeud systeme) | Livré |
| Tests unitaires | Couverture model (Stakeholder, SVNSystem, ValueArc) + services de calcul | Livré |
| Livrables | Rapport, presentation, video 3 min | Livré |
Les trois axes fonctionnels et la theorie sous-jacente
| Axe | Objectif | Resultat |
|---|---|---|
| 1. Modeliser | Representer graphiquement les arcs de valeur entre acteurs et systeme | Graphe oriente pondere integre dans Rhapsody |
| 2. Quantifier | Calculer automatiquement l'importance relative de chaque acteur | Classement objectif (score 0–1) par stakeholder |
| 3. Informer | Propager les resultats dans le modele systeme | 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éfaults des value arcs (0.10)
Detection des boucles par DFS depuis le noeud system, puis calcul de l'importance :
system : strategie de secours ArcSumStrategy (somme des arcs normalisee)importanceScore de chaque stakeholder7 use cases implementes — du cadrage a la visualisation
| UC | Commande | Description | Priorite | Sprint |
|---|---|---|---|---|
| UC1 | SVN Configure |
Initialisation du SVNProfile (stereotypes, enums, tag values) | MUST | S2 |
| UC2 | SVN Create Arc |
Creation d'un arc de valeur (IRPDependency stereotypee) | MUST | S2 |
| UC3 | SVN Edit Arc |
Edition BenefitRanking / SupplyImportance via dialogue Swing | MUST | S2 |
| UC4 | SVN Calculate |
Calcul scores Cameron — DFS + Equation 2 — mise a jour tag values | MUST | S2 |
| UC5 | SVN Colorize |
Colorisation automatique rouge / orange / jaune par rang | MUST | S3 |
| UC7 | SVN Update Arc Labels |
Affichage des scores de ponderation comme etiquettes sur les arcs | SHOULD | S3 |
| UC8 | SVN Clean |
Suppression complete du profil SVN et reinitialisation du modele | MUST | S3 |
UC1 est un prealable obligatoire — UC4 est declenche automatiquement par le Listener (Sprint 3)
Avant Sprint 3
Apres Sprint 3 (Listener)
afterAddElement et onElementsChanged de l'API Rhapsody
Structure du profil SVNProfile, entites du modele et attributs
| Element SVNProfile | Type | Applique sur | Role |
|---|---|---|---|
«stakeholder» | Stereotype | Actor (IRPActor) | Identifie une partie prenante |
«system» | Stereotype | Class (IRPClass) | Noeud central du SVN |
«valueArc» | Stereotype | Dependency (IRPDependency) | Arc de valeur pondere |
importanceScore | Tag value (Float) | stakeholder | Score calcule — Cameron Eq.2 |
benefitRanking | Tag value (Enum) | valueArc | MIGHT_BE / SHOULD_BE / MUST_BE |
supplyImportance | Tag value (Enum) | valueArc | LOW / MEDIUM / HIGH |
| Attribut | Type | Description | Defaut |
|---|---|---|---|
benefitRanking | BenefitRanking | Niveau de benefice attendu par le stakeholder | MIGHT_BE |
supplyImportance | SupplyImportance | Importance de la fourniture du systeme | LOW |
score | Float | Score calcule apres execution de UC4 | 0.10 |
| source | Stakeholder | SVNSystem | Noeud source de l'arc | — |
| target | Stakeholder | SVNSystem | Noeud cible de l'arc | — |
L'arc est modele comme un IRPDependency dans Rhapsody — solution la plus compatible avec le profil BDD
Architecture, design patterns, stack technique et tests
| Pattern | Classe principale | Role dans le plugin |
|---|---|---|
| Singleton | Logger |
Instance unique du logger ; acces uniforme depuis tous les composants |
| Strategy | ICalculationStrategy |
Interchangeabilite des algorithmes de calcul (ValueLoopStrategy / ArcSumStrategy) sans modifier le code appelant |
| Observer | Listener |
Souscription aux evenements Rhapsody (afterAddElement, onElementsChanged) — mise a jour automatique du modele |
| Composant | Choix |
|---|---|
| Langage | Java 8 (JDK 1.8) |
| Environnement cible | IBM Rhapsody 9.0 |
| OS supporte | 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
NullPointerException non gere ne remonte a RhapsodyQuestions ?
Hugo Charcot · Benjamin Groisne · Antoine Laurant · Arnaud Michel · Guillaume Retter
DE50 — Encadrant : Vincent Hilaire · UTBM — P26