Cycle en V

Un article de Wikipédia, l'encyclopédie libre.
Sauter à la navigation Sauter à la recherche
Les phases du cycle en V

Le cycle en V (« V model » ou « Vee model » en anglais) est un modèle d'organisation des activités d'un projet qui se caractérise par un flux d'activité descendant qui détaille le produit jusqu'à sa réalisation, et un flux ascendant, qui assemble le produit en vérifiant sa qualité, ce qui lui confère la forme d'un V. Ce modèle est issu du modèle en cascade dont il reprend l'approche séquentielle et linéaire de phases. Il l'enrichit cependant d'activités d'intégration de système à partir de composants plus élémentaires, et il met en regard les phases de production successives avec les phases de validations correspondantes[1].

Historique[modifier | modifier le code]

Issu du monde de l'industrie, le cycle en V est devenu un standard de fait l'industrie du logiciel depuis les années 1980[2],[3]. Depuis, avec l'apparition de l'ingénierie des systèmes[4], c'est devenu un standard conceptuel dans de nombreux domaines de l'Industrie.

Ce modèle s'est établi comme alternative plus réaliste au modèle en cascade, en raison de sa prise en compte d'étapes supplémentaires lors de la validation pour distinguer les tests unitaires, les tests d'intégration et et les tests systèmes, ce qui qui s'avère plus adaptés aux systèmes complexes faits de plusieurs composants[5].

En 1991, sous l'égide du NCOSE (devenu depuis le INCOSE), le gouvernement américain développe le cycle en V pour un programme de satellites nécessitant des systèmes complexes. Le modèle retenu distingue le système, qui peut être composé de plusieurs segments, eux-mêmes composés d'éléments de configuration qui peuvent être matériels, logiciels ou organisationnels[6]. Les éléments de configuration peuvent eux-même être un assemblage de composants fait de parties plus élémentaires. Le modèle précise en détail une cinquantaine d'étapes (dont certaines suivent des chemins parallèles). Le modèle a depuis été repris par certaines agences de l'état fédéral comme par exemple le Département des Transports[7] et est encore utilisé aujourd'hui.

En 1992, de façon indépendante mais concomitante, les autorités allemandes ont adopté le cycle en V, sous l'appellation « V-Modell », comme référence pour les développements informatiques du ministère de la défense[8]. Depuis 1996 son utilisation devient la règle pour les projets de systèmes d'information de l'état fédéral[9]. Il a été remplacé en 2005 par le « V-Modell XT », conçu pour une plus grande flexibilité (le suffixe XT signifiant « eXtreme Tailoring », c'est à dire « flexibilité extrême » en anglais)[10]. Il a été enrichi pour mieux prendre en charge l'intégration de systèmes et est de plus appuyé par un outil informatique[11]. Ce modèle couvre une dizaine d'étapes pour le cycle en V mais également également une dizaine d'activités plus générales. Il est donc conçu comme un cadre de référence intégré pour la gestion de projet et le cycle de vie, avec une répartition des rôles et responsabilités. Il est encore utilisé aujourd'hui.

De nombreux domaines industriels ont depuis adopté le cycle en V dans les pratiques ou normes sectorielles, comme par exemple l'aéronautique[12],[13].

Les phases à travers le temps et le niveau de détails

Principes[modifier | modifier le code]

Vue d'ensemble[modifier | modifier le code]

De manière simplifiée, le cycle en V comprend les grandes étapes que l'on retrouve, pour la plupart, dans le modèle en cascade:[1]

  • Une première série d'étapes, le flux descendant, vise à détailler le produit jusqu'à sa réalisation. Il comprend l'expression des besoins, l'analyse, la conception, puis la mise en oeuvre. Pour un logiciel, la mise en oeuvre correspond essentiellement à la programmation. Pour le matériel c'est la réalisation d'un équipement[6]. Pour des mesures organisationnelles, la mise en oeuvre correspond à la rédaction de manuels de procédure.
  • Une deuxième série d'étapes, le flux ascendant, vise à valider le produit jusqu'à sa « recette », c'est à dire son acceptation par le client. Il comprend principalement une série de tests jusqu'à pouvoir valider que le produit répond au besoin et aux exigences.

Toutefois, le cycle en V apporte une dimension supplémentaire, qui est celle du système. Le produit du projet est alors considéré comme un « système » fait de plusieurs éléments qui sont des modules ou composants. Ceci requiert dans le flux descendent de distinguer une conception générale du système dans son ensemble, et une conception détaillée de chaque composant. La mise en oeuvre se fait alors composant par composant. Dans le flux ascendent, il convient de la même façon d'effectuer des tests unitaires de chaque composant, d'intégrer le système (c'est à dire d'assembler ses composants), puis de faire un test d'integration[5].

Le cycle en V apporte également une plus grande attention sur la vérification et la validation. Les tests unitaires et les test d'intégration vérifient que les composants et le système fonctionnent conformément à la conception. Le cycle en V enrichit ces étapes avec un test de validation du système, qui confirme non seulement que le système répond à la conception, mais qu'il répond aux exigences[1].

Le niveau de décomposition n'est pas figé. Certains modèles de cycle en V décomposent les systèmes en sous-systèmes avant de les décomposer en composant[6]. Pour chaque niveau de complexité supplémentaire, s'ajoute alors un étage dans le V.

Synthèse des étapes[modifier | modifier le code]

Illustration des étapes du cycle en V faisant ressortir les niveaux de décomposition (besoins métier, fonctionnalités du produit, architecture du système et composants)
Etapes du cycle en V par niveau de décomposition

Les étapes du modèle sont alors :

  • Exigences: les exigences font l'objet d'une expression des besoins. Le cas échéant, une étude de faisabilité peut être conduite avant d'engager les travaux.
  • Analyse : il s'agit à partir de l'expression de besoin d'établir le cahier des charges fonctionnel ou les spécification fonctionnelle
  • Conception générale[14], aussi appelé conception architecturale[15] ou conception préliminaire[16]: il s'agit de concevoir le système qui doit répondre aux exigences et de définir son architecture, et en particulier les différents composants nécessaires[17];
  • Conception détaillée: il s'agit de concevoir chaque composant, et la manière dont ils contribuent à la réponse aux besoins[17];
  • Mise en oeuvre[18]: il s'agit de réaliser chaque composant nécessaire. Pour les composants et systèmes logiciels, l'activité est essentiellement le codage;
  • Test unitaire: il s'agit de vérifier le bon fonctionnement et la conformité de chaque composant à sa conception détaillée;
  • Intégration et test d'intégration: il s'agit d'assembler le système à partir de tous ses composants, et de vérifier que le système dans son ensemble fonctionne conformément à sa conception générale;
  • Test système (anciennement « tests fonctionnels ») : vérification que le système est conforme aux exigences[19];
  • Test d'acceptation (également appelés « recette » dans le contexte de la sous-traitance) : validation du système par rapport à sa conformité aux besoins exprimés.

Une des différences entre la recette usine et la recette finale est essentiellement contractuelle. Aussi, il n'est pas rare que le maître d'ouvrage délègue la validation auprès d'un organisme de validation, cet organisme étant bien souvent constitué d'experts afin de diminuer les erreurs de validation.

Au niveau de la gestion de projet, les différentes étapes peuvent donner lieu à des phases distinctes sur l'axe horizontal du temps. Plusieurs étapes successives peuvent toutefois être regroupées au sein d'une phase plus large[7].

Rôles[modifier | modifier le code]

2017-fr.wp-orange-source.svg
Cette section ne cite pas suffisamment ses sources (juin 2019)
Pour l'améliorer, ajoutez des références vérifiables [comment faire ?] ou le modèle {{Référence nécessaire}} sur les passages nécessitant une source.

Le cycle en V définit des étapes sans en définir les rôles ou les responsabilités. Toutefois certaines applications du modèle définissent une répartition des rôles entre l'organisme décideur (maitre d'ouvrage) et le sous-traitant ayant la charge de réaliser le projet (maitre d'oeuvre)[20].

Dans le contexte des projets de grande envergure ont émergé des rôles pour partager et désigner les responsabilités :

  • Maîtrise d'ouvrage (MOA) qui regroupe les fonctions suivantes :
    • le maître d’ouvrage stratégique (MOAS) ;
    • le maître d’ouvrage délégué (MOAD) ;
    • le maître d’ouvrage opérationnel (MOAO) ;
    • l’assistant à maîtrise d’ouvrage (AMOA ou AMO) ;
    • l’expert métier ;
    • enfin l’utilisateur, au service duquel se trouvent toutes les autres fonctions.
  • Maîtrise d'œuvre (MOE)
  • Comité de pilotage: Pour améliorer le suivi du projet sur le plan de l'observation et des choix à effectuer, il se constitue généralement une équipe transversale au projet : le comité de pilotage. Ce comité de pilotage est généralement constitué d'un membre de chaque catégorie de rôle. Ce comité joue en quelque sorte le rôle de gaine de protection autour du V. Ce comité analyse les métriques issues des activités de chaque phase afin de réaliser la jonction entre la MOE et la MOA.[réf. nécessaire]
Répartition des rôles en fonction des étapes
Niveau de
Détail
Rôles Besoins
et Faisabilité
Spécification Conception
Architecturale
Conception
Détaillée
Codage Tests
unitaires
Tests
d'intégration
Tests fonctionnels Tests d'acceptation (recette)
Fonctionnel MOA + AMOA
X
X
Système MOE + MOED
X
X
Technique
et Métier
Équipe
Architecturale
X
X
Composant Équipe
de Développement
X
X
X

On retrouve dans ce découpage le V, d'où le nom de ce modèle.

Documents par phase[modifier | modifier le code]

2017-fr.wp-orange-source.svg
Cette section ne cite pas suffisamment ses sources (juin 2019)
Pour l'améliorer, ajoutez des références vérifiables [comment faire ?] ou le modèle {{Référence nécessaire}} sur les passages nécessitant une source.

Pour une bonne communication entre les différents partenaires du projet, il est nécessaire d'établir des documents de référence.

Documents en fonction des étapes
Besoins
et Faisabilité
Spécification Conception
Architecturale
Conception
Détaillée
Codage Tests
unitaires
Tests
d'intégration
Tests fonctionnels Tests d'acceptation (Recette)
Spécification des Besoins Utilisateur
Cahier des charges
Rapport de Recette
Spécifications Générales
Spécification Technique des Besoins
Procès Verbal de Validation
Dossier de Définition du Logiciel
Dossier d'Architecture Technique
Plan de Tests
Rapport de Tests d'Intégration
Rapport de Conception Détaillée Rapport de Tests Unitaires
Code source

Risques inhérents au cycle en V[modifier | modifier le code]

Différence entre la théorie (les spécifications) et la pratique (ce qui a été produit).
2017-fr.wp-orange-source.svg
Cette section ne cite pas suffisamment ses sources (juin 2019)
Pour l'améliorer, ajoutez des références vérifiables [comment faire ?] ou le modèle {{Référence nécessaire}} sur les passages nécessitant une source.

Il y a un risque important de se rendre compte au cours de la mise en œuvre que les spécifications initiales étaient incomplètes, fausses, ou irréalisables. Il y a également un risque de voir de nouvelles fonctionnalités requise par les clients (risque de dérive des objectifs), ainsi que d'autres risques évoqués dans l'ouvrage « Le Mythe du mois-homme ». C'est principalement pour cette raison que le cycle en V n'est pas toujours adapté à un développement logiciel[réf. nécessaire]. Si les projets longue durée sont adaptés à ce mode de gestion de projet, ce sont également souvent eux qui risquent de ne plus « coller » aux besoins qui évoluent dans le temps.

D'autres modèles permettent plus facilement des modifications (parfois radicales) de la conception initiale à la suite d'une première mise en œuvre ou série de mises en œuvre. Voir par exemple à ce sujet : Développement rapide d'applications ou Méthode agile de gestion de projet. Par contre, ces méthodes manquent parfois de traçabilité ce qui nécessite d'impliquer le client à la fois en termes de conception et également en termes juridiques : avec un cycle en V, le client est censé recevoir ce qu'il a commandé alors qu'avec des méthodes « agiles », le client devient co-développeur et intervient donc au niveau du projet. Cette nuance peut avoir une importance en cas de désaccord entre le client et l'exécutant, notamment si le désaccord est porté devant un tribunal.

Un compromis consiste à appliquer un cycle en V le plus court possible et à faire évoluer le projet sous forme de versions, prenant ainsi en compte le fait que le projet ne sera pas parfait et qu'il sera amélioré au fil des versions. Cela permet également de bénéficier du retour d'expérience des versions précédentes. Ce compromis est particulièrement formateur au sein d'un projet, pour les équipes des phases « amont » dédiées à l'étude du besoin, aux spécifications et à la conception (la « théorie »), qui seront ainsi confrontées aux résultats concrets (la « pratique »). À noter que la société Microsoft pratique ce compromis avec art depuis plusieurs décennies[réf. nécessaire] : maîtriser la traçabilité et les délais à l'aide d'une succession de cycle en V les plus courts possibles, quitte à diffuser ultérieurement les mises à jour… Par exemple tous les systèmes d'exploitation Microsoft depuis Windows 2000).

Critiques[modifier | modifier le code]

Le cycle en V est issu du modèle en cascade et en hérite les défauts liés à l'approche séquentielle et linéaire de phases. Ainsi, le cycle de vie dépend d'exigences identifiées en début de projet, qui peuvent être de qualité insuffisante ou instable et avoir un impact sur la qualité et les coûts des phases en aval. On peut également lui reprocher la rigidité qu'engendre la séparation de phases par activité[21]: dans le domaine du logiciel il est ainsi difficile en pratique, voire impossible, de totalement détacher la conception d'un projet de sa réalisation.

Le cycle en V est reconnu pour son approche rigoureuse de développement de produit à partir d'exigences. Mais sa vue séquentielle et linéaire est réductionniste car elle ne tient pas suffisamment compte des interdépendances entre les éléments du système[22], en particulier pour les systèmes requérant une forte intégration[23]. Il est donc nécessaire de remédier à ces limitations d'une part par une approche interdisciplinaire[24] de l'architecture, et d'autre part par des pratiques métiers assurant la cohérence des exigences et de la conception à travers les différentes étapes.

Par ailleurs certains auteurs constatent que dans le domaine de l'ingénierie des systèmes les itérations sont la règle et non l'exception. Ils suggèrent que la planification devrait en tenir compte, par exemple en prévoyant une étape de prototypage permettant de valider les principes de la conception[25] (une idée déjà proposée par Royce en 1970 pour l'approche en cascade[26]). Cette analyse est confirmée par des études dans le domaine du génie logiciel qui tendent à démontrer des performances supérieures pour les méthodes incrémentales et itératives[27].

Evolutions[modifier | modifier le code]

Des évolutions récentes cherchent à remédier à ces critiques par:

  • une approche incrémentale du cycle en V: La méthodologie « V-Modell XT » adoptée par le gouvernement allemand en 2005, prévoit ainsi la possibilité de choisir, parmi plusieurs stratégies de pilotage de projet, une approche incrémentale. Celle-ci permet alors de concevoir le projet sous forme de succession de projets partiels car la livraison finale ne pouvant se faire qu'après validation.
  • Illustrations du cycle en V avec boucles de rétroactions susceptibles de donner lieu à des itérations - en particulier entre analyse et conception générale, puis entre conception générale et conception détaillée (technique du prototype virtuel lorsque la conception se fait sur base de modèles) - mais aussi au sein de la réalisation de composants (conception-réalisation-test unitaire) et de l'intégration du système (conception, intégration des compisants, test d'intégration).
    Cycle en V avec prototypage virtuel (1 et 2) et itérations basées sur la mise en oeuvre des composants (3) et l'intégration des composants (4).
    des techniques de réduction de risques: on cherche alors à réduire les incertitudes et facteurs d'instabilité aussi tôt que possible dans le cycle. Plusieurs stratégies sont envisageables, comme par exemple une étude comparative des solutions potentielles en amont, un prototype pour valider les idées de la conception, des itérations pour la production (éventuellement incrémentale) des composants, voire, une phase pilote avant l'acceptation finale. Une approche particulière consiste à recourir pour la conception à des modèles permettant par des simulations à éprouver celle-ci (technique dit du « prototype virtuel »). On obtient ainsi plusieurs itérations de conception avant de passer à la mise en oeuvre[28].
  • une variation de cette approche consiste en un double ou un triple V qui prévoit de tester toutes les étapes du flux descendant sur la base de modèles conceptuels[1].

Une autre évolution consiste à interpréter les activités du modèle en V non plus comme des étapes distinctes strictement séquentielles, mais comme des processus interdépendants. Cette approche est utilisée par exemple dans les normes IEC 62304 relative aux logiciels de dispositifs médicaux[29] et IEC 82304-1 relative aux exigences générales pour la sécurité des logiciels de santé[30]: celles-ci sont souvent comprise comme imposant le cycle en V, alors qu'elles ne font qu'imposer des exigences de processus sans en fixer la chronologie[31],[32].

Enfin, des praticiens recommandent en outre de combiner le cycle en V avec des pratiques agiles (par exemple: exprimer les exigences sous forme de récit utilisateur[33], programmer en binôme ou encore adopter le « TDD », cette dernière pratique pouvant être vue comme une approche de programmation se substituant à la planification des tests prévue dans le cycle en V)[34].

Notes et références[modifier | modifier le code]

  1. a b c et d Donald Firesmith, « Carnegie Mellon University - Software Engineering Institute Blogs - Using V Models for Testing », sur insights.sei.cmu.edu,
  2. Nicolas Desmoulins, Maîtriser le levier informatique : accroître la valeur ajoutée des systèmes d'information, Pearson Education France, (lire en ligne)
  3. (en) B.W. Boehm, « Verifying and Validating Software Requirements and Design Specifications », IEEE Software, vol. 1, no 1,‎ , p. 75–88 (ISSN 0740-7459, DOI 10.1109/ms.1984.233702, lire en ligne, consulté le 6 juin 2019)
  4. (en) Martin Eigner, Thomas Dickopf et Hristo Apostolov, « The Evolution of the V-Model: From VDI 2206 to a System Engineering Based Approach for Developing Cybertronic Systems », Product Lifecycle Management and the Industry of the Future, Springer International Publishing, série IFIP Advances in Information and Communication Technology,‎ , p. 382–393 (ISBN 9783319729053, DOI 10.1007/978-3-319-72905-3_34, lire en ligne, consulté le 6 juin 2019)
  5. a et b (en) Alan M. Davis, « A Comparison of Techniques for the Specification of External System Behavior », Commun. ACM, vol. 31, no 9,‎ , p. 1098–1115 (ISSN 0001-0782, DOI 10.1145/48529.48534, lire en ligne, consulté le 2 juin 2019)
  6. a b et c (en) Kevin Forsberg et Harold Mooz, « The Relationship of System Engineering to the Project Cycle », INCOSE International Symposium, vol. 1, no 1,‎ , p. 57–65 (ISSN 2334-5837, DOI 10.1002/j.2334-5837.1991.tb01484.x, lire en ligne, consulté le 2 juin 2019)
  7. a et b (en) « California Division | Federal Highway Administration | Systems Engineering Guidebook for ITS », sur www.fhwa.dot.gov (consulté le 2 juin 2019)
  8. (en) Klaus Plögert, « The tailoring process in the German V-Model », Journal of Systems Architecture, série Special Issue: ESPITI, vol. 42, no 8,‎ , p. 601–609 (ISSN 1383-7621, DOI 10.1016/S1383-7621(96)00047-1, lire en ligne, consulté le 2 juin 2019)
  9. (de) « V-Modell », sur Projektmagazin (consulté le 2 juin 2019)
  10. (de) « IT-Beauftragter der Bundesregierung | V-Modell XT », sur www.cio.bund.de (consulté le 2 juin 2019)
  11. (de) Manfred Broy et Andreas Rausch, « Das neue V-Modell® XT: Ein anpassbares Modell für Software und System Engineering », Informatik-Spektrum, vol. 28, no 3,‎ , p. 220–229 (ISSN 0170-6012 et 1432-122X, DOI 10.1007/s00287-005-0488-z, lire en ligne, consulté le 2 juin 2019)
  12. « ARP4754A: Guidelines for Development of Civil Aircraft and Systems - SAE International », sur www.sae.org (consulté le 6 juin 2019)
  13. (en) « (PDF) Towards a Classification Schema for Development Technologies: an Empirical Study in the Avionic Domain », sur ResearchGate (consulté le 6 juin 2019)
  14. « La conception générale du logiciel - Bivi - Qualite », sur bivi.afnor.org (consulté le 4 juin 2019)
  15. « IATE - Fiche de terminoologie - Conception générale », sur iate.europa.eu
  16. « conception préliminaire », sur www.granddictionnaire.com (consulté le 4 juin 2019)
  17. a et b (en-US) « Software Engineering Body of Knowledge (SWEBOK) | IEEE Computer Society » (consulté le 4 juin 2019)
  18. « mise en œuvre », sur www.granddictionnaire.com (consulté le 4 juin 2019)
  19. « Glossaire des termes utilisés en tests de logiciels » [PDF]
  20. Yanis Okba, La recette fonctionnelle d’un système d’information: enjeux, méthodes, outils et exemple d’application, dumas-01223463, (lire en ligne)
  21. Voir aussi « Modèle en cascade », dans Wikipédia, (lire en ligne)
  22. (en) Jackson, Scott., Systems engineering for commercial aircraft : a domain-specific adaptation, Routledge, (ISBN 9781315611716, 1315611716 et 9781317047193, OCLC 948603298, lire en ligne)
  23. (en) Federal Aviation Administration (FAA), Safety Issues with Requirements Definition, Validation, and Verification Processes (draft), (lire en ligne)
  24. (en) Tobias Bruckmann et Julian Hentze, « V-MODELS FOR INTERDISCIPLINARY SYSTEMS ENGINEERING », sur DS 92: Proceedings of the DESIGN 2018 15th International Design Conference, (consulté le 6 juin 2019)
  25. (en) « (PDF) Systems Engineering and the V-Model: Lessons from an Autonomous Solar Powered Hydrofoil », sur ResearchGate (consulté le 6 juin 2019)
  26. (en) W. W. Royce, « Managing the Development of Large Software Systems: Concepts and Techniques », Proceedings of the 9th International Conference on Software Engineering, IEEE Computer Society Press, série ICSE '87,‎ , p. 328–338 (ISBN 9780897912167, lire en ligne, consulté le 31 mai 2019)
  27. S. M. Mitchell et C. B. Seaman, « A comparison of software cost, duration, and quality for waterfall vs. iterative and incremental development: A systematic review », 2009 3rd International Symposium on Empirical Software Engineering and Measurement,‎ , p. 511–515 (DOI 10.1109/ESEM.2009.5314228, lire en ligne, consulté le 6 juin 2019)
  28. (en) « (PDF) A Novel Approach on Virtual Systems Prototyping Based on a Validated, Hierarchical, Modular Library », sur ResearchGate (consulté le 6 juin 2019)
  29. ISO, « IEC 62304:2006 », sur ISO (consulté le 6 juin 2019)
  30. ISO, « IEC 82304-1:2016 », sur ISO (consulté le 6 juin 2019)
  31. Auteur Guillaume Promé Membre AFNOR S95B et Iso/Tc 210/Wg 1, « IEC 82304-1 - Logiciels de santé : Exigences générales pour la sécurité des produits. En bref. », sur Qualitiso, (consulté le 6 juin 2019)
  32. (en) Johner Institut, « Software Lifecycle », sur www.johner-institute.com (consulté le 6 juin 2019) : « « [these standards] demand from medical device manufacturers to follow these life cycle processes. However, they do not enforce a particular life cycle model » »
  33. (en) « Blending Agile And Waterfall Keys To Successful Implementation », sur www.pmi.org (consulté le 6 juin 2019)
  34. « A Proposal for an Agile Development Testing V-Model > Business Analyst Community & Resources | Modern Analyst », sur www.modernanalyst.com (consulté le 6 juin 2019)

Voir aussi[modifier | modifier le code]

Articles connexes[modifier | modifier le code]

Sur les autres projets Wikimedia :

Sites externes[modifier | modifier le code]