tag:linuxfr.org,2005:/tags/exigences/publicLinuxFr.org : les contenus étiquetés avec « exigences »2014-03-13T14:22:31+01:00/favicon.pngtag:linuxfr.org,2005:News/351442014-03-10T15:08:38+01:002014-03-10T15:57:18+01:00Sortie de Reqflow pour tracer vos exigencesLicence CC By‑SA http://creativecommons.org/licenses/by-sa/4.0/deed.fr<div><p>Reqflow est un outil open-source, sous licence GPL v2+, de traçabilité d'exigences entre documents. Ce genre de traçabilité s'avère utile dès que la taille d'un projet devient conséquente : plusieurs centaines d'exigences.</p>
<p>J'avais plusieurs fois cherché et mentionné le besoin d'un tel outil open-source et, ne trouvant rien, je l'ai réalisé.</p>
<p><abbr title="Note des modérateurs">NdM</abbr> : merci à goeb pour son journal.</p></div><ul><li>lien nᵒ 1 : <a title="http://linuxfr.org/users/goeb/journaux/reqflow" hreflang="fr" href="https://linuxfr.org/redirect/89642">Journal à l'origine de la dépêche</a></li><li>lien nᵒ 2 : <a title="http://goeb.github.io/reqflow" hreflang="en" href="https://linuxfr.org/redirect/89643">Page web de Reqflow</a></li><li>lien nᵒ 3 : <a title="http://github.com/goeb/reqflow" hreflang="en" href="https://linuxfr.org/redirect/89644">Code source sur Github</a></li></ul><div><h2 class="sommaire">Sommaire</h2>
<ul class="toc">
<li><a href="#reqflow">Reqflow</a></li>
<li>
<a href="#le-concept-dexigence">Le concept d'exigence</a><ul>
<li><a href="#exemple-de-sp%C3%A9cification">Exemple de spécification</a></li>
<li><a href="#exemple-de-plan-de-test">Exemple de plan de test</a></li>
</ul>
</li>
<li>
<a href="#principe-de-reqflow">Principe de Reqflow</a><ul>
<li><a href="#analyse-des-pdf">Analyse des PDF</a></li>
<li><a href="#expressions-r%C3%A9guli%C3%A8res">Expressions Régulières</a></li>
</ul>
</li>
<li><a href="#autres-outils-du-march%C3%A9">Autres outils du marché</a></li>
<li><a href="#conclusion">Conclusion</a></li>
</ul><h2 id="reqflow">Reqflow</h2>
<h2 id="le-concept-dexigence">Le concept d'exigence</h2>
<p>Pour résumer le concept d'exigence à ceux qui n'en ont pas l'habitude, une exigence (<em>requirement</em> en anglais) est typiquement une fonctionnalité, décrite en quelques lignes. De cette exigence peuvent découler :</p>
<ul>
<li>des exigences plus fines, décrivant comment on va réaliser la fonctionnalité</li>
<li>des tests, qui décrivent comment la vérifier sur le produit fini.</li>
</ul><p>On dit que les exigences en aval couvrent les exigences en amont.</p>
<p>L'intérêt de décrire un système par exigences est de fragmenter la complexité en portions de dimensions réduites, plus faciles à maîtriser humainement (comprendre, discuter, vérifier, tester). Cela oblige également à synthétiser les documents de spécifications. On a trop souvent vu des documents de plusieurs centaines de pages verbeux, imprécis, et confus. Pour bien travailler avec les exigences, il faut que ceux qui écrivent les spécifications aient dès le début une approche par exigence, ce qui n'est malheureusement pas toujours le cas.</p>
<p>La manière de travailler ensuite peut grossièrement se résumer ainsi : on vérifie qu'on n'a oublié aucune exigence en réalisant le système.</p>
<p>Les entreprises industrielles qui conçoivent de gros systèmes (véhicules, avions, etc.) utilisent la fragmentation en exigences pour définir et réaliser leurs systèmes.</p>
<h3 id="exemple-de-spécification">Exemple de spécification</h3>
<p>Prenons l'exemple d'un <a href="http://www.w3.org/TR/CSS2/text.html">logiciel de navigation Internet qui souhaite se conformer à la norme CSS2</a> (dans la vraie vie, les navigateurs web ne s'encombrent pas de traçabilité d'exigences, car c'est un procédé coûteux qui n'est pas justifié pour ce genre de logiciel non critique).</p>
<p>Le document de <a href="http://www.w3.org/TR/CSS2/fonts.html">spécification est donc la norme CSS2, extrait</a> :</p>
<pre><code>15.6 Font boldness: the 'font-weight' property
'font-weight'
Value: normal | bold | bolder | lighter | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 | inherit
The 'font-weight' property selects the weight of the font. The values '100' to '900' form an ordered sequence, where each number indicates a weight that is at least as dark as its predecessor. The keyword 'normal' is synonymous with '400', and 'bold' is synonymous with '700'.
</code></pre>
<p>Ici, il n'y a pas de marqueur d'exigence dédié. Donc, on prend le numéro du paragraphe "15.6" pour cet exemple (mais ce n'est pas une manière très rigoureuse de procéder et il va être difficile pour l'outil de traçabilité de capturer les exigences).</p>
<p>Et on code le navigateur web, avec ses petites mains. Pendant ce temps un testeur va écrire le plan de test, comme ceci :</p>
<h3 id="exemple-de-plan-de-test">Exemple de plan de test</h3>
<pre><code>T_FONT_01
1. écrire une page HTML utilisant un mot avec font-weight 'normal'
2. vérifier que le navigateur affiche ce mot avec un poids 400.
Ref: 15.6 Font boldness: the 'font-weight' property
T_FONT_02
1. écrire une page HTML utilisant un mot avec font-weight 'bold'
2. vérifier que le navigateur affiche ce mot avec un poids 700.
Ref: 15.6 Font boldness: the 'font-weight' property
</code></pre>
<p>Ensuite la méthode va consister à dérouler les activités suivantes :</p>
<ul>
<li>on exécute le logiciel de traçabilité :
<ul>
<li>pour vérifier si aucune exigence de la spécification n'a été oubliée;</li>
<li>pour générer la matrice de traçabilité (utile aux étapes suivantes).</li>
</ul>
</li>
<li>quelqu'un va ensuite vérifier pour chaque exigence de la spécification, si les tests indiqués par la matrice de traçabilité, couvrent effectivement l'exigence dans son intégralité. C'est une étape manuelle et fastidieuse pendant laquelle la matrice de traçabilité générée est une aide précieuse car elle sert de support au suivi de l'avancement (on coche les exigences que l'on vérifie au fur et à mesure, jour après jour.</li>
<li>ensuite quelqu'un effectue les tests à partir du plan de test. Mais ce n'est plus du domaine de la traçabilité des exigences.</li>
<li>si tous les tests sont OK, alors le logiciel est conforme à la spécification.</li>
</ul><h2 id="principe-de-reqflow">Principe de Reqflow</h2>
<p>Reqflow est un outil en ligne de commande. Il analyse les fichiers d'entrée (au format Open XML, Open Document, etc.), capture les exigences, capture les liens entre exigences, et génère un rapport (format texte, CSV ou HTML), indiquant si toutes les exigences en amont sont couvertes par des exigences en aval.</p>
<p>Pour fonctionner, on a besoin de placer dans les documents des marqueurs d'exigence, comme dans l'exemple CSS ci-dessus. Et via des expressions régulières on indique comment capturer les exigences :</p>
<pre><code>-req [1-9][0-9]*\..*
</code></pre>
<p>Et pour le plan de test :</p>
<pre><code>-req T_.*
-ref "Ref: .*"
</code></pre>
<p>Reqflow indique ensuite :</p>
<ul>
<li>les exigences de la spécification qui ont été oubliées dans les tests</li>
<li>les erreurs (exigences en double, références vers des exigences inexistantes, etc.)</li>
<li>les matrices de traçabilité entre exigences et documents</li>
</ul><p>Exemple de rapport HTML : <a href="http://goeb.github.io/reqflow/reqReport.html">http://goeb.github.io/reqflow/reqReport.html</a></p>
<h3 id="analyse-des-pdf">Analyse des PDF</h3>
<p>Pour analyser les fichiers d'entrée au format PDF, Reqflow utilise la bibliothèque <a href="http://poppler.freedesktop.org/">Poppler</a>, que l'on retrouve dans plusieurs lecteurs PDF open-source.</p>
<p>Autant pour analyser les fichiers HTML, texte, ODT, DOCX, c'est relativement simple (bibliothèque <a href="http://www.xmlsoft.org/">libxml2</a> et analyse manuelle), autant pour le PDF c'est compliqué.</p>
<p>Car le format PDF, s'il est bien pour transférer un document en gardant le rendu visuel, n'est pas du tout adapté pour être traité informatiquement. En effet les mots que l'on voit se suivre sur l'écran ne sont pas toujours consécutifs dans le fichier. Et ils peuvent même être inversés.</p>
<p>Je crois (mais ne suis pas certain) que Poppler est capable de remettre les mots dans l'ordre en se basant sur leur emplacement dans la page.</p>
<h3 id="expressions-régulières">Expressions Régulières</h3>
<p>J'avais commencé avec la bibliothèque POSIX regex. Puis je me suis réorienté vers la bibliothèque PCRE car elle me paraissait plus conviviale (pas besoin d'échapper les parenthèses notamment). Heureusement, la bibliothèque PCRE fournit une interface identique à la lib regex (libpcreposix), donc je n'ai pas eu à changer mon code source.</p>
<h2 id="autres-outils-du-marché">Autres outils du marché</h2>
<p>D'autres outils propriétaires dominent sur le marché.</p>
<p><strong>Reqtify</strong>, outil graphique et qualifié selon certaines normes de développement aéronautique (DO178-B je crois), présente une interface graphique assez pratique.<br>
Reqtify capture les exigences des documents par des expressions régulières, ou par les styles Word.<br>
Il a une fonctionnalité intéressante : cliquer sur une exigence, dans son interface graphique, provoque l'ouverture du document Word ou Excel associé et le positionnement au paragraphe de cette même exigence.</p>
<p><strong>DOORS</strong> (IBM® Rational® DOORS®) ne capture pas les exigences à partir des documents, mais possède les exigences dans une base de données et a une interface graphique. Il peut toutefois importer des documents externes dans sa base de données. Ensuite DOORS peut génèrer les matrices de traçabilité et éventuellement les documents (au format Word par exemple) pour échanger avec d'autres parties prenantes qui ne possèderaient pas DOORS.</p>
<p>En comparaison de ces outils, Reqflow est très petit, très rustique car il a moins de convivialité, moins d'ergonomie, moins de fonctionnalités. Mais Reqflow a les atouts suivants :</p>
<ul>
<li>il est simple</li>
<li>il est possible de générer les matrices de traçabilité par un bête script shell ou batch</li>
<li>il est gratuit et open-source et a tout le temps devant lui pour s'améliorer</li>
<li>il est en ligne de commande, et greffer une interface graphique au-dessus est possible</li>
</ul><h2 id="conclusion">Conclusion</h2>
<p>J'utilise Reqflow dans mon travail, pour tracer 750 exigences de 8 documents de spécifications en amont, et il me rend bien service.</p>
<p>Page web de Reqflow: <a href="http://goeb.github.io/reqflow">http://goeb.github.io/reqflow</a><br>
Code source sur Github: <a href="http://github.com/goeb/reqflow">http://github.com/goeb/reqflow</a></p></div><div><a href="https://linuxfr.org/news/sortie-de-reqflow-pour-tracer-vos-exigences.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/101450/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/news/sortie-de-reqflow-pour-tracer-vos-exigences#comments">ouvrir dans le navigateur</a>
</p>
goebBAudpalm123bubar🦥tuiu polBenoît Sibaudhttps://linuxfr.org/nodes/101450/comments.atomtag:linuxfr.org,2005:Diary/347852014-03-06T21:54:27+01:002014-03-06T21:54:27+01:00ReqflowLicence CC By‑SA http://creativecommons.org/licenses/by-sa/4.0/deed.fr<h2 id="reqflow">Reqflow</h2>
<p>Reqflow est un outil open-source de traçabilité d'exigences entre documents. Ce genre de traçabilité s'avère utile dès que la taille d'un projet devient conséquente : plusieurs centaines d'exigences.</p>
<p>J'avais plusieurs fois cherché et mentionné le besoin d'un tel outil open-source, et ne trouvant rien, je l'ai réalisé.</p>
<h3 id="le-concept-dexigence">Le concept d'exigence</h3>
<p>Pour résumer le concept d'exigence à ceux qui n'en ont pas l'habitude, une exigence (requirement en anglais) est typiquement une fonctionnalité, décrite en quelques lignes. De cette exigence peuvent découler :</p>
<ul>
<li>des exigences plus fines, décrivant comment on va réaliser la fonctionnalité</li>
<li>des tests, qui décrivent comment la vérifier sur le produit fini</li>
</ul><p>On dit que les exigences aval couvrent les exigences amont.</p>
<p>L'intérêt de décrire un système par exigences est de fragmenter la complexité en portions de dimensions réduites, plus faciles à maîtriser humainement (comprendre, discuter, vérifier, tester). Cela oblige également à synthétiser les documents de spécifications. On a trop souvent vu des documents de plusieurs centaines de pages verbeux, imprécis, et confus.</p>
<p>La manière de travailler ensuite peut grossièrement se résumer ainsi : on vérifie qu'on n'a oublié aucune exigence en réalisant le système.</p>
<p>Les entreprises industrielles qui conçoivent de gros systèmes (véhicules, avions, etc.) utilisent la fragmentation en exigences pour définir et réaliser leurs systèmes.</p>
<h3 id="principe-de-reqflow">Principe de Reqflow</h3>
<p>Reqflow est un outil en ligne de commande. Il analyse les fichiers d'entrée (au format Open XML, Open Document, etc.), capture les exigences, capture les liens entre exigences, et génère un rapport (format texte, CSV ou HTML), indiquant si toutes les exigences amont sont couvertes par des exigences aval.</p>
<p>Pour fonctionner, on a besoin de placer dans les documents des marqueurs d'exigence. Exemple :</p>
<pre><code>PRINTF_01
La commande `printf --help` doit afficher un message d'aide et se terminer.
</code></pre>
<p>Ensuite dans le plan de test on doit référencer cette exigence :</p>
<pre><code>T_PRINTF_01
- lancer la commande `printf --help`
- vérifier qu'un message d'aide s'affiche.
- vérifier que la commande se termine avec un code retour zéro
Ref: PRINTF_01
Ref: PRINTF_03
</code></pre>
<p>Reqflow indique ensuite:<br>
- les exigences de la spécification qui ne sont pas prises en compte dans les tests<br>
- les erreurs (exigences en double, références vers des exigences inexistantes, etc.)<br>
- les matrices de traçabilité entre exigences et entre documents</p>
<p>Exemple de rapport HTML: <a href="http://goeb.github.io/reqflow/reqReport.html">http://goeb.github.io/reqflow/reqReport.html</a></p>
<h3 id="analyse-des-pdf">Analyse des PDF</h3>
<p>Pour analyser les fichiers d'entrée au format PDF, j'ai utilisé la bibliothèque <a href="http://poppler.freedesktop.org/">Poppler</a>, qui est utilisé dans plusieurs lecteurs PDF open-source.</p>
<p>Autant pour analyser les fichiers HTML, texte, ODT, DOCX, c'est relativement simple (bibliothèque <a href="http://www.xmlsoft.org/">libxml2</a> et analyse manuelle), autant pour le PDF c'est compliqué.</p>
<p>Car le format PDF, s'il est bien pour transférer un document en gardant le rendu visuel, n'est pas du tout adapté pour être traité informatiquement. En effet les mots que l'on voit se suivre sur l'écran ne sont pas toujours consécutifs dans le fichier. Et ils peuvent même être inversés.</p>
<p>Je crois (mais ne suis pas certain) que Poppler est capable de remettre les mots dans l'ordre en se basant sur leur emplacement sur la page.</p>
<h3 id="expressions-régulières">Expressions régulières</h3>
<p>J'avais commencé avec la bibliothèque POSIX regex. Puis je me suis réorienté vers la bibliothèque PCRE car elle me paraissait plus conviviale (pas besoin d'échapper les parenthèses notamment). Heureusement, la bibliothèque PCRE fournit une interface identique à la lib regex (libpcreposix), donc je n'ai pas eu à changer mon code source.</p>
<h3 id="conclusion">Conclusion</h3>
<p>J'utilise Reqflow dans mon travail, pour tracer 750 exigences de 8 documents de spécification amont, et il me rend bien service.</p>
<p>Page web de Reqflow: <a href="http://goeb.github.io/reqflow">http://goeb.github.io/reqflow</a><br>
Code source sur Github: <a href="http://github.com/goeb/reqflow">http://github.com/goeb/reqflow</a></p><div><a href="https://linuxfr.org/users/goeb/journaux/reqflow.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/101449/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/users/goeb/journaux/reqflow#comments">ouvrir dans le navigateur</a>
</p>
goebhttps://linuxfr.org/nodes/101449/comments.atomtag:linuxfr.org,2005:Post/314292012-06-11T19:00:53+02:002012-06-11T19:00:53+02:00Gestion de Projet<p>Salut à tous,</p>
<p><strong>Le problème:</strong><br />
J'ai une énorme spec (en fait, plusieurs specs qui se référencent l'une/l'autre, chacune de près de 400 pages) à implémenter au boulot, et je ne m'en sors plus avec tout ce qu'il y a à faire.<br />
J'aimerais bien pouvoir fournir à ma hiérarchie une meilleure visibilité, j'ai pas trop de soucis à estimer le temps qu'il faudra passer sur un truc ou un autre, mais le problème c'est de mettre ça en forme.<br />
Jusqu'à aujourd'hui, j'essayais de maintenir un document XLS, mais ça montre ses limites (pas de vue "dans la release X y aura tout ça, dont tout ça est déjà fait"); surtout que LibreOffice n'est pas très coopératif (j'en était arrivé à installer un Windows en virtualbox avec juste Excel pour gérer ça…).</p>
<p><strong>La question:</strong><br />
Du coup, je cherche s'il existe de bons logiciels de gestion de projet. Plus spécifiquement, la gestion de l'implémentation d'une spec, si ça peut restreindre l'arbre des choix. <br />
J'ai pensé à un bugtracker, où je mettrais les features comme des bugs, mais je trouve la chose pas très simple à appréhender, et il faut absolument que le soft puisse me présenter des vues plus synthétique qu'une liste de bugs (cf la vue "release X" évoquée plus haut), ce qui n'est pas forcément le cas de tous les Bugtrackers.</p>
<p>Je bosse avec quelqu'un d'autre sur le projet, donc idéalement, ce serait multi user (imaginez le bordel que c'est avec la feuille excel actuelle..).</p>
<p>Notez que ma boite est une petite boite, pas forcément orientée management, du coup les solutions qui viendraient de ma hiérarchie sont pas vraiment adaptées à ce que je cherche.. c'est bien pour ça que je vous demande.</p>
<p>
<strong>Mes désirs:</strong>
</p>
<p>Je suis ouvert à tout: </p>
<ul><li>une appli web à héberger, </li>
<li>un soft "natif", </li>
<li>voire une méthode (tableau blanc + marqueurs?) qui marche</li>
</ul><p>Si la chose n'est pas très libre, c'est pas bien grave, je peux justifier de mettre des sous dans un outil qui va me soulager de cette tâche, qu'en tant que programmeur je trouve ingrate. (même si j'imagine que c'est pas le genre de la maison).<br />
Grosse préférence pour quelque chose qui tourne sous linux, of course. Si je peux en plus me débarasser de cette merde de virtualbox, le gagnat recevra ma gratitude instantanée.</p>
<p>Merci d'avance.</p><div><a href="https://linuxfr.org/forums/general-cherche-logiciel/posts/gestion-de-projet--2.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/94477/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/forums/general-cherche-logiciel/posts/gestion-de-projet--2#comments">ouvrir dans le navigateur</a>
</p>
Gui13https://linuxfr.org/nodes/94477/comments.atomtag:linuxfr.org,2005:Post/193902006-10-31T18:09:39+01:002006-10-31T18:09:39+01:00Gestion des exigencesBonjour,<br />
<br />
Je suis à la recherche d'un logiciel de gestion des exigences.<br />
J'ai vu que Salomé-TMF a un module de gestion des exigences, mais il ne me paraît pas assez complet à mon goût : En effet, j'aimerais pouvoir parcourir des documents de spécifications du client (MS Word par exemple) pour en déduire des exigences. Il semble que certains outils proprio sachent faire cela, mais existe-t-il des outils libres ?<div><a href="https://linuxfr.org/forums/general-cherche-logiciel/posts/gestion-des-exigences.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/74155/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/forums/general-cherche-logiciel/posts/gestion-des-exigences#comments">ouvrir dans le navigateur</a>
</p>
bat13https://linuxfr.org/nodes/74155/comments.atom