Cycle en V, MOA/MOE ont perdu !

Ils ont perdu ?? Et oui, durant des années ils ont perdu + de 70% des logiciels qui étaient produits dans le monde. Comment ça se fait ?

Commençons par le cycle en V

Déjà, V n'est qu'une construction théorique qui n'est pas applicable en tant que cycle de vie.

Les mécanismes du cycle en V sont fondés sur le contrôle et le suivi de projet, pas du produit.

les méthodes en cascade avec le cycle en V ou le cycle en W sont des méthodes dites prédictives dans lesquelles nous avons une hypothèse de base :
  • Nous maîtrisons ce que nous voulons et nous nous engageons à le réaliser.
Un peu radical, non ?

Un cycle de vie est un ensemble ordonné de phases décrivant la vie d’un projet, la phase n ne pouvant commencer que si la phase n-1 est terminée. Dans la représentation graphique du V, les boites s'appellent Spécification, Conception, Codage, Test et Validation pour prendre la variante la plus simple. La signification du nom de ces différentes boites est à peu prés claire : Spécification on décrit le quoi, Conception le comment etc... Il s'agit des disciplines classiques du développement de logiciel.

http://blog.netapsys.fr/public/images/articles/agilite/Cycle_en_V_Custom_-35b05.png

Considérer que les boites du V correspondent aussi à des phases d'un cycle de vie revient à dire qu'elles se déroulent en séquence stricte : en premier toute la Spécification puis toute la Conception puis tout le Codage puis tout le Test... Évidemment aucun logiciel n'a jamais été développé de cette façon strictement séquentielle. La preuve la plus évidente concerne les travaux de Test. Quand on trouve un bug dans la "phase" de test, le minimum est de refaire des travaux de codage. Dans quelle phase ? Il y a deux possibilités qui débouchent sur une impasse :
  1. revenir en arrière dans une phase précédente, ce serait remonter dans le temps !
  2. considérer que pendant la "phase" de test on fait du codage, de la conception, de la spécification en plus du test alors que c'est le nom d'autres "phases" du V, ce serait utiliser le même terme avec 2 significations différente
En cycle en V, les exigences et les scénarios de tests sont gérés par deux processus bien séparés.
  • Les exigences pour but de satisfaire le niveau supérieur.
  • Les tests sont décrits pour contrôler ce niveau d’exigence. Il n’y a pas de lien, ni de vérification entre les différents niveaux de tests
Les exigences, majoritairement écrites sous forme documentaire, voir avec des outils de type Doors, ne peuvent que retranscrire le comportement statique du besoin. La spécification s’apparente la plus part du temps à un catalogue de règles de gestion, qui pense-t-on, mises bout à bout, vont produire un logiciel.
A l’inverse, les scénarios de tests décrivent l’aspect dynamique et cinématique du besoin : L’approche opérationnelle. Ce que l’utilisateur réel va vraiment pouvoir faire.
Encore une fois, les tests étant fournis après comme contrôle du travail fini, les équipes de développement n’ont donc que l’aspect statique et ne connaissent pas le mode opératoire du logiciel qu’ils sont en train de produire. Le développement est donc piloté par la seule information à caractère statique de se que sera le logiciel et sera sanctionné par un contrôle à postériori.

C’est le pilotage par le contrôle. Incohérent par nature !

Au tour de la hiérarchie MOA / MOE

En France, contrairement à d'autres pays, il y a une tradition qui est de diviser le rôle de Chef de Projet en deux: celui de Chef de Projet MOA (Maîtrise d'Ouvrage) et celui de Chef de Projet MOE (Maîtrise d'Oeuvre) du moins dans le contexte des Grands Comptes.
La MOA étant le client et la MOE étant le fournisseur, on retrouve les comportements typiques suivants: la MOA aura à tendance à en demander toujours plus, la MOE à en proposer toujours moins de peur d'être débordée. Ainsi, des conflits entre la MOA et la MOE surviennent.
Un DSI, dans un article de 01 Informatique, proposait comme solution de supprimer cette division en fusionnant les deux services car le modèle MOA/MOE représentait clairement un frein aujourd'hui dans le rapprochement voulu entre DSI et métiers. Un rapprochement de plus en plus forcé avec l'apparition des solutions SaaS.

Agilité: méthode dite empirique

Un partie de la solution, utiliser des méthodes empiriques, où la règle est:
  • Nous faisons l'hypothèse de base que ne nous ne maîtrisons pas ce que nous allons faire et nous allons essayer d'avancer avec l'incertitude. Pour réaliser cela, il y a 3 piliers fondamentaux (Les Valeurs de l'agilité : source Wikipedia( http://fr.wikipedia.org/wiki/Méthode_agile ):
  1. la transparence (avoir les informations).
  2. inspection (inspecter les indicateurs).
  3. Adaptation (améliorer, réorienter).
Pour les processus Agiles, un cycle de vie est composé d'itérations incrémentales (ou sprints) successives. Voici un schéma pour bien comprendre ?
  • itérative
méthode iterative ou incrémentale
  • incrémentale
méthode iterative ou incrémentale
  • approche mixte


La aussi, ce que l’on reproche aux méthodes Agiles est leur manque de visibilité à long terme. Et c’est heureusement là qu’elles pourraient bien au contraire vous surprendre.

La grande différence réside dans la construction du backlog. En agile, nous utilisons les user stories : Une définition succincte mais précise des possibilités offertes à l’utilisateur, leur moyen de vérification, ainsi que les critères d’acceptance. Dans ce cas, les scénarios de tests sont fournis comme (seuls ou en complément) des spécifications en entrée de sprint. Des exigences plus fines de type règles de gestion peuvent être définies au cours de la réunion de planification de sprint.
Le développeur est ainsi « formé » à l’utilisation de ce qu’il va produire. Il connaît les objectifs à atteindre. La chaîne de construction se répète tout au long du process jusqu’à l’écriture du code de test avant le code lui-même (TDD), qui participe au maintient de la qualité du logiciel (Intégration continue, tests automatisés).

L’approche est donc radicalement différente. Agile propose un pilotage par les objectifs.

En bref

Un logiciel, c'est comme produire une voiture, à la différence que le client souhaite constamment customiser son Produit et non son Projet. Cela implique donc des procédés d'ingénieries industriels (PIC, TDD, BDD) pour une réactivité sans cesse accru.

XP, Scrum, .... et PUMA vous connaissez ?

Proposition pour l' Unification des Méthodes Agiles

Dans la forme : la simplicité de la présentation d’une méthode et de son usage est souvent déterminante de son acceptation. PUMA Essentiel a donc été étudié afin que sa structure incite naturellement à son adoption en limitant à quatre le nombre de ses éléments.Pour réussir un projet, en plus de la motivation rationnellement obtenue des personnes impliquées, il faut réunir quatre ingrédients:
  1. de la communication,
  2. de la structuration,
  3. de la méthode,
  4. de la technicité.

C’est sur la base de ce simple constat que PUMA Essentiel vous propose un cadre élémentaire basé sur 4 moteurs Agiles de réflexion et d’action, chacun étant instrumenté par 4 pratiques Agiles :

  1. Un moteur de Communication pour faciliter l’engagement et le consensus.
  2. Un moteur de Solution pour structurer l’expression de l’exigence et de la solution.
  3. Un moteur de Pilotage pour gérer l’évolution de la performance et de l’engagement.
  4. Un moteur de Réalisation pour assurer la qualité fonctionnel et technique de la solution.

Chacun de ces moteurs s’appuie simplement sur 4 pratiques Agiles basiques pour couvrir dans le cadre d’un développement, le scope complet des aspects humains, organisationnels, économiques et techniques. Les quatre moteurs ne sont pas obligatoirement utilisés dans chaque projet.

Voici une représentation chronologique de l'emploi des éléments (modèles et techniques)

Voici un petit comparatif

Scope des pratiques Agiles

SCRUM

XP

PUMA

Recueil élémentaire des besoins

Simple liste ou fiches de récits utilisateurs

OUI

OUI

OUI

Gestion systémique des exigences

Formalisation Agile d’un document structuré mais élémentaire

NON

NON

OUI

Gestion formelle des communications complexes

Organisation, charte projet, plan de communication, techniques optimisées de maîtrise de réunions en contexte difficiles.

NON

NON

OUI

Estimation de charges Agiles niveau « équipe »

Axée sur la vision des intervenants, typiquement : planning poker game

OUI

OUI

OUI

Techniques et outillage d’estimation de charges Agiles

Basées « métriques » standardisées (points de Cas d’utilisation, de récits, de scénarios, d’objets WEB, Evaluateur, etc.)

NON

NON

OUI

Pilotage des niveaux d’itérations d’un projet

OUI

MINIMA

OUI

Gestion des réunions « équipe »

OUI

OUI

OUI

Techniques extrêmes de qualité du code

NON

OUI

OUI

Techniques standards mais formalisées et structurées de qualité de la conception et du codage

NON

NON

OUI

Approche globale simplifiée (PUMA Essentiel)

NON

NON

OUI

Justifications financières agiles et formelles

NON

NON

OUI

Techniques Agiles de suivi des risques externes

NON

NON

OUI

Techniques simples d’amélioration du processus Agile (Lean management)

OUI

OUI

OUI

Rapprochement avec des bases ou processus normés (CMM)

NON

PARTIEL

OUI

Disponibilité de Frameworks Agiles (architecture globale d’entreprise, techniques de veille technologique, SOA, BPM)

NON

NON

OUI