Projet d'ingénierie logicielle conduit en équipe de 8 (compagnie STLoosers) suivant le cycle en V : spécification, analyse, conception, implémentation et tests. L'objectif est de livrer un logiciel permettant à un auteur de créer, éditer et naviguer dans des livres-jeux structurés comme des graphes de sections et d'enchaînements.
Modélisation métier
Le modèle métier repose sur trois entités principales : Livre (conteneur racine), Section (nœud du graphe, composé d'un texte narratif et d'objets optionnels) et Enchaînement (arête orientée entre deux sections, avec description et condition d'objet facultative).
Deux cas d'utilisation centraux ont été entièrement spécifiés, conçus et testés :
UC03 — Construire une section
L'auteur saisit le texte de la nouvelle section, choisit d'y associer ou non des objets (itération jusqu'à validation), puis confirme. Le système ajoute la section au graphe du livre.
- Alternatif A1 — ajout d'un ou plusieurs objets nommés avant confirmation.
- Exception E1 — annulation : aucune section créée, retour au menu.
Trois tests de validation couvrent le cas nominal (TV08), l'alternatif avec objet (TV09) et l'exception d'annulation (TV10), chacun vérifié par inspection du graphe de sections.
UC04 — Définir un nouvel enchaînement
L'auteur sélectionne une section de départ, une section d'arrivée, saisit une description et choisit optionnellement un objet comme condition. Le système valide le graphe (pas de doublon, pas d'auto-boucle, deux sections distinctes requises) avant de créer l'enchaînement.
- Alternatif A1 — aucun objet de condition sélectionné.
- Exception E1 — annulation utilisateur.
- Exception E2 — sections invalides (non saisies, identiques, enchaînement déjà existant).
Sept tests de validation (TV010 à TV016) couvrent l'ensemble des scénarios, incluant les quatre cas d'erreur de l'exception E2.
Architecture et conception
La conception s'appuie sur une architecture à composants avec diagramme de structure interne. Deux composants principaux — LivreManager et EnchaînementManager — communiquent via interfaces typées. Les tests d'intégration valident les séquences composant-à-composant avec assertions JUnit.

Exemple de tests d'intégration sur l'UC04 :
// contexte : livre avec sections {1,2,3,4}, enchaînement (1,3) existant
assertEquals(creer_enchainement(1, 2, "il ouvre la porte").getSectionEnd(), 2); // true
assertExists(creer_enchainement(1, 2, "il ouvre la porte"), livre.getAllEnchainements()); // true
assertEquals(creer_enchainement(4, 5, "description") in livre.getAllEnchainements(), false); // true — section inexistanteL'interface finale présente trois écrans : édition du livre (vue graphe), édition d'une section (texte + objets) et édition d'un enchaînement (sélection des sections + description + condition).