Accueil🇫🇷Chercher

Cycle en V

Le cycle en V (« V model » ou « Vee model » en anglais) est un modèle d'organisation des activités de développement d'un produit 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 modèle est issu du modèle en cascade dont il reprend l'approche séquentielle et linéaire de phases.

Les phases du cycle en V

Il l'enrichit cependant d'activités d'intégration de système à partir de composants plus élémentaires, et il met en regard chaque phase de production successive avec sa phase de validation correspondante, lui conférant ainsi la forme d'un V[1].

Issu de l'ingénierie système, le cycle en V est souvent considéré comme un cycle de projet, alors qu'ingénierie système et gestion de projet sont complémentaires. L'ingénierie système va se focaliser sur le développement du produit, alors que la gestion de projet va se concentrer sur l'atteinte des bénéfices attendus par le client ou l'utilisateur[2]. Le cycle en V n'est donc pas un cycle de projet.

Historique

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

Ce modèle s'est établi comme une 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 les tests systèmes, ce qui s'avère plus adapté aux systèmes complexes faits de plusieurs composants[6].

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[7]. Les éléments de configuration peuvent eux-mêmes ê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 telles que le Département des Transports[8].

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[9]. Depuis 1996 son utilisation devient la règle pour les projets de systèmes d'information de l'état fédéral[10]. 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)[11]. Il a été enrichi pour mieux prendre en charge l'intégration de systèmes et est de plus appuyé par un outil informatique[12]. Ce modèle couvre une dizaine d'étapes pour le cycle en V mais é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 le développement de produit ou système complexe dans le cadre d'un projet, avec une répartition des rôles et responsabilités.

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

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

Principes

Vue d'ensemble

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 Ĺ“uvre. Pour un logiciel, la mise en Ĺ“uvre correspond essentiellement Ă  la programmation. Pour le matĂ©riel c'est la rĂ©alisation d'un Ă©quipement[7]. Pour des mesures organisationnelles, la mise en Ĺ“uvre 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 descendant 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 œuvre se fait alors composant par composant. Dans le flux ascendant, 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[6].

Le cycle en V apporte également une plus grande attention sur la vérification et la validation. Les tests unitaires et les tests 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[7]. Pour chaque niveau de complexité supplémentaire, s'ajoute alors un étage dans le V.

Synthèse des étapes

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Ă©cifications fonctionnelles
  • Conception gĂ©nĂ©rale[15], aussi appelĂ© conception architecturale[16] ou conception prĂ©liminaire[17]: 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[18];
  • Conception dĂ©taillĂ©e: il s'agit de concevoir chaque composant, et la manière dont ils contribuent Ă  la rĂ©ponse aux besoins[18];
  • Mise en Ĺ“uvre[19]: 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[20];
  • 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[8].

RĂ´les

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'œuvre)[21].

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)
    • MaĂ®trise d'Ĺ“uvre dĂ©lĂ©guĂ©e (MOED)
    • l'Ă©quipe architecturale
    • l'Ă©quipe de dĂ©veloppement
    • Titulaire de marchĂ©
  • 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Ă©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)
FonctionnelMOA + AMOA
X
X
SystèmeMOE + MOED + AMOA
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

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

Différence entre la théorie (les spécifications) et la pratique (ce qui a été produit).

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. 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 Â» consacrĂ©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 : 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

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 instables 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é : 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].

Évolutions

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 œuvre 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, 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 œuvre[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

  1. Donald Firesmith, « Carnegie Mellon University - Software Engineering Institute Blogs - Using V Models for Testing », sur insights.sei.cmu.edu,
  2. (en) Van Gemert, D, Systems engineering the project. Paper presented at PMI® Global Congress 2013 - North America, New Orleans, LA., Newtown Square, PA, Project Management Institute (lire en ligne)
  3. Nicolas Desmoulins, Maîtriser le levier informatique : accroître la valeur ajoutée des systèmes d'information, Pearson Education France, (lire en ligne)
  4. (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 )
  5. (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, 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. (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 )
  7. (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 )
  8. (en) « California Division | Federal Highway Administration | Systems Engineering Guidebook for ITS », sur www.fhwa.dot.gov (consulté le )
  9. (en) Klaus Plögert, « The tailoring process in the German V-Model », Journal of Systems Architecture, 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 )
  10. (de) « V-Modell », sur Projektmagazin (consulté le )
  11. (de) « IT-Beauftragter der Bundesregierung | V-Modell XT », sur www.cio.bund.de (consulté le )
  12. (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 )
  13. « ARP4754A: Guidelines for Development of Civil Aircraft and Systems - SAE International », sur www.sae.org (consulté le )
  14. (en) « (PDF) Towards a Classification Schema for Development Technologies: an Empirical Study in the Avionic Domain », sur ResearchGate (consulté le )
  15. « La conception générale du logiciel - Bivi - Qualite », sur bivi.afnor.org (consulté le )
  16. « IATE - Fiche de terminoologie - Conception générale », sur iate.europa.eu
  17. « conception préliminaire », sur www.granddictionnaire.com (consulté le )
  18. (en-US) « Software Engineering Body of Knowledge (SWEBOK) | IEEE Computer Society » (consulté le )
  19. « mise en œuvre », sur www.granddictionnaire.com (consulté le )
  20. « Glossaire des termes utilisés en tests de logiciels » [PDF]
  21. Yanis Okba, La recette fonctionnelle d’un système d’information : enjeux, méthodes, outils et exemple d’application, dumas-01223463, (lire en ligne)
  22. (en) Jackson, Scott., Systems engineering for commercial aircraft : a domain-specific adaptation, Routledge, (ISBN 978-1-315-61171-6, 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 )
  25. (en) « (PDF) Systems Engineering and the V-Model: Lessons from an Autonomous Solar Powered Hydrofoil », sur ResearchGate (consulté le )
  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, iCSE '87,‎ , p. 328–338 (ISBN 9780897912167, lire en ligne, consulté le )
  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 )
  28. (en) « (PDF) A Novel Approach on Virtual Systems Prototyping Based on a Validated, Hierarchical, Modular Library », sur ResearchGate (consulté le )
  29. ISO, « IEC 62304:2006 », sur ISO (consulté le )
  30. ISO, « IEC 82304-1:2016 », sur ISO (consulté le )
  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 )
  32. (en) Johner Institut, « Software Lifecycle », sur www.johner-institute.com (consultĂ© le ) : « « [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 )
  34. « A Proposal for an Agile Development Testing V-Model> Business Analyst Community & Resources | Modern Analyst », sur www.modernanalyst.com (consulté le )

Voir aussi

Articles connexes

Sites externes

Cet article est issu de wikipedia. Text licence: CC BY-SA 4.0, Des conditions supplémentaires peuvent s’appliquer aux fichiers multimédias.