Web sémantique pour la gestion des exigences agiles

Publié par Eric Le Merdy, le 29/11/2009, dans Tutoriel, Valtech
Qu’est-ce que le web sémantique ?

Dans le web “des humains”, deux pages peuvent être liées entre elles mais le sens de ce lien n’est pas strictement définit par l’auteur de la page.


Le modèle de liens du web.

Dans le web sémantique, le modèle de liens entre pages est enrichi d’une signification connue et non ambiguë.


Modèle de liens du web sémantique.

C’est cet apport d’une signification forte qui forme le triplet “sujet-prédicat-objet”. Rien n’empêche alors de bénéficier de la puissance de calcul des machines pour nous aider à organiser les données.
Par exemple, vous pouvez visiter dbpedia qui est la version sémantique de wikipedia. Exemple: Valtech.

D’où vient la gestion d’exigences ?

La gestion des exigences -dans le cycle de développement logiciel traditionnel en V- est une discipline à part entière qui intervient dans les phases amont du développement. Dans cet univers où la prédictibilité est indispensable, la gestion d’exigences permet de mettre d’accord fournisseur et client sur le contour fonctionnel du système à développer.
Il existe de nombreux outils spécialisés dans cette tâche (Requisite PRO, Doors, etc.). Ils sont portés par des éditeurs de solutions qui ont répondu à un besoin existant dans l’industrie du développement logiciel. A mesure que les échecs des projets ont fait souffrir les clients qui n’obtenaient pas le produit souhaité dans les délais et le budget prévu, la tentation a été de renforcer toujours plus les exigences afin d’établir des contrats encore plus robustes aux aléas de la réalité des projets.

L’approche agile s’inscrit à contre-pied de cette vision en mettant plutôt en avant la collaboration entre le client et le fournisseur plutôt que renforcer leurs positions défensives. De même, je trouve plus pragmatique d’exprimer les exigences aux travers de user stories car cela met les besoins en rapport avec leur utilité pour l’utilisateur. J’ai parfois lu des exigences en ayant l’impression qu’elles étaient “tombées du ciel”, détachées de tout lien avec un scénario utilisateur. J’ai alors eu peur de me perdre en abstractions ce qui peut renforcer la tendance à la sur spécification et au sur développement.

Mais alors, quels outils utiliser pour porter cette relation plus saine ? Comment gérer efficacement les user stories ? Doit-on cesser de spécifier les fonctionnalités et prier pour que le logiciel réalise ce qu’on avait imaginé ? (Bien sûr que non)

Mettre en accord gestion d’exigences et agilité

Dans un projet récent, nous avons utilisé un wiki (MediaWiki, le même produit que celui qui donne vie à Wikipedia) pour faciliter la collaboration. Nous avons ajouté son extension sémantique (Semantic Mediawiki) pour donner encore plus de sens aux informations de spécification.
Un système de gestion d’exigences offre un modèle prédéfinit (parfois extensible) : liste d’exigences, gestion de leur version, génération documentaire, analyse d’impacts, traçabilité. Un wiki sémantique propose quant à lui de définir une “ontologie” (un modèle de données sémantique) au fil des besoins.


Les concepts utilisés dans notre wiki pour
décrire les liens d’une user story.

Le schéma est entièrement adaptable aux informations dans la mesure où lorsqu’un prédicat manque, il suffit simplement de créer un nouveau lien “à la wiki” préfixé par ce prédicat.

La définition progressive du modèle de données est intéressante mais n’est pas utile si on ne sait pas l’exploiter de façon intuitive et simple. Que propose Semantic MediaWiki ?

  • possibilité de définir des requêtes :
    exemple: la liste des user stories avec les acteurs impliqués.
  • navigateur sémantique :
    permet de parcourir l’information en passant par les liens sémantiques qui ont été posés (on dit poser une annotation).

Exemple de User Story dans un wiki sémantique

A quoi ressemble la création d’une user story dans un tel système ? Cela revient à créer une page qui contient des liens sémantiques en utilisant les concepts que l’on s’est donné pour décrire l’information [1].
[[user_story::User Story 8]] of the [[product::WhiteHouse]]
'As a' [[role::PresidentOfTheUnitedStates]]
'I want to' contact any president in the world very fast
'So that' I can defuse any potential international crisis.
Acceptance:
- enter in the White House,
- Simulate an attack on a United State allied country
- Verify that the president can call the president of the attackers immediately
Design Notes:
- [[story_point::8]]
- Set-up a "red phone" with all other country
- [[requires::user Story 6]], [[requires::user Story 12]]
Implementation Notes:
- Use secure lines between capitals.
Following:
- status [[status::IN PROGRESS]]


Les relations sémantiques de la user-story.

Le lien requires permet de représenter les dépendances entre stories.

Exemple de requête

{{#ask: mainlabel=User Story
| [[product::WhiteHouse]]
| ?role=Role
| ?story-point=Estimate
| ?status=Status
| ?requires=Dependencies
| Sort=story-point,role
}}

C’est une requête en ligne donnant le tableau des user stories du produit ‘WhiteHouse’ ordonnées par story point puis rôle.
Il est également possible d’exporter la base sémantique au format RDF pour être exploitée par d’autres outils sémantiques standardisés.

Conclusion

Pour résumer, on arrive à tirer des bénéfices non négligeables d’un tel outil :

  • flexibilité de la base ontologique, adaptation aux besoins
  • capacités de requêtage de l’information
  • édition collaborative

Dans le cas où on utilise la méthode TDR, les solutions actuelles utilisent déjà un wiki pour décrire les cas de tests fonctionnels automatisés. L’ajout de capacités sémantiques permettrait de décupler la valeur descriptive des stories en complément des spécifications exécutables. En particulier, on pourrait ainsi s’éviter de créer manuellement un index des tests en prévenant le risque d’en oublier.


[1]: il est très important que la sémantique utilisée pour décrire les liens soit définie et non ambigüe. On dispose dans ce cas de catalogues de concepts (comme le Dublin Core pour les choses élémentaires, le FOAF pour les relations entre personnes ou d’autres catalogues spécialisés par métier) afin de s’assurer que l’exploitation des informations sera conforme au vocabulaire utilisé.

5 retours sur “Web sémantique pour la gestion des exigences agiles”

  1. Pascal Sem says:

    Resterait-il peut être une dernière chose pour que la démonstration soit topissime ? Une automatisation des user-stories par exemple (~ FitNesse sémantique) ?

  2. Article très intéressant Eric. As-tu déjà mis en place un tel système ? Cela n’ajoute-t-il pas trop de complexité au niveau de la gestion de projet ? N’est-ce pas un peu lourd à mettre en place ?

  3. @Pascal Sem: oui, ça serait intéressant d’avoir un wiki de spécifications exécutables qu’on pourrait organiser en posant des annotations !

    @Philippe Voncken: 1. C’est un collègue qui a fait l’installation, ça tourne sur une machine virtuelle avec la pile nécessaire à MediaWiki (Linux RedHat Server, Mysql, MediaWiki, l’extension SemanticMediaWiki et un peu de scripting pour les sauvegardes régulières…). 2. Pour notre équipe projet, c’est utiliser un autre outil que le wiki qui ajoute de la complexité ! On s’y retrouve très bien justement grâce aux liens sémantiques posés. 3. Comme toute infrastructure de projet, ça a un certain coût de mise en place qu’il convient de juger face aux bénéfices retirés de l’approche.

    A utiliser, c’est très fluide et structuré à la fois, c’est là la force du wiki sémantique. Certains l’utilisent pour faire du prototypage car cela permet à un utilisateur de ‘voir’ ses données dans la page du wiki. On peut également définir des formulaires pour ajouter des données mais nous n’avons pas besoin de pousser l’IHM jusque là dans la mesure où nous savons éditer les pages d’un wiki…

  4. Gilles says:

    Salut Eric, c’est brillant comme approche! Comme dit Pascal, si on pouvait y inclure des storytests “à la FitNesse” ce serait excellent!! C’est toujours délicat d’obtenir un bon équilibre entre tests et spec dans FitNesse ou GreenPepper pour conserver la lisibilité, et l’indexage des tests est manuel… L’approche que tu décris semble régler le problème si tant est qu’on puisse ajouter du web sémantique à ces outils. Existe-t-il une exension sémantique pour Confluence ?

  5. Excellente idée… je pense que c’est une approche innovante et qui a de l’avenir… car elle s’accroche au principe REST/WOA (Web oriented Architecture) ou une URL permet d’accéder à une information élémentaire…
    Merci!

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

By submitting this form, you accept the Mollom privacy policy.