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



Pourquoi les méthodes agiles ?

Les méthodes agiles ont été développées à l'origine pour tenter de résoudre l'équation infernale des projets informatiques de grandes ampleurs. Un projet classique est long, trop long. Un projet classique est coûteux, trop coûteux. Un projet classique est difficile à piloter. Un projet classique n'apporte aucune garantie d'un livrable conforme aux attentes client.

Origine des méthodes agiles

Aussi, dès les années 90, des solutions comme RAD Développement Rapide d'Applications, XP eXtreme Programming ou Scrum ont été proposées. Ces premières méthodes éliminaient d'office "l'effet tunnel", une situation caractéristique où les développeurs sont à pied d'oeuvre et, hormis quelques sybillins reportings, rien ne s'en échappe, personne ne peut savoir ce qu'il se passe.
En contre partie, les méthodes agiles sont centrées sur les besoins clients et procèdent par itérations incrémentales et adaptatives afin de proposer le plus rapidement possible un produit, puis un livrable.

Une démarche orientée client

Une focalisation sur les besoins des clients de tous les instants. Le changement est permanent. Il faut être conscient qu'un projet ne se déroule jamais sur un rail, les besoins évoluent, la connaissance aussi. Réorienter un projet lorsqu'il le faut est la seule manière de livrer un produit conforme aux attentes clients. Mais pour cela, encore faut-il que le client puisse apprécier sur pièces. Les produits seront donc livrés le plus rapidement possible. Bien entendu, la communication constante avec le client est fondamentale.

Une démarche orientée produit

Le développement agile, au contraire des méthodes plus classiques, se préoccupe bien plus du produit à réaliser que des principes et théories pour le réaliser. Le produit, l'application informatique le plus courant, voit très rapidement le jour. Puis elle est améliorée, perfectionnée selon les spécifications, attentes et les exigences qualité.
La règle : " plutôt que chercher à prévoir ce que doit être le produit, on l'adapte et on s'adapte en permanence..."

Team management

Le Team management trouve toute sa substance avec les approches agiles prônant l'autonomie, l'auto-organisation et la communication.

Un sujet que j'aborderai prochainement.

Lecture de "MANAGER me fascine ... et j'adore gérer les crises"

Présentation

Cet ouvrage permet de se relaxer, rire et réfléchir à la fois! Ce livre est un outil de management pour les managers et leurs collaborateurs. Une série de 49 dessins humoristiques pertinents, de Jissey, ayant pour légende une citation d’homme célèbre et en face un texte de conseil stratégique pour savoir aborder la crise, rédigée par Ercey, alias Ramez Cayatte, consultant en innovation et conduite du changement.

Il propose 7 étapes pour surmonter toute crise :
  1. Repérez les symptôme
  2. Analysez les risques
  3. Définissez un plan d'action
  4. Communiquer
  5. Agissez
  6. Réagissez
  7. Tirer profit de l'expérience.


Critique


Je fus un peu déçu. Lors de ma première impression, j'ai cru avoir à faire à un ouvrage pour enfant. Surtout que la prise en main n'est pas facile, malgré son apparence qui dit tout le contraire. Après 2eme lecture, j'ai mieux compris la structure de l'ouvrage et également le sens cacher dans les sous parties.

Dans la semaine, je reçois son petit frère. A la prochaine !

CV Mind Map fini

Ça c'est fait. Ça faisait un petit moment que je voulais réaliser un tel CV. J'ai réussi à le faire plus facilement que je le pensais. Il m'aura fallu une journée à temps plein. Peut-être que je deviens vraiment un expert !???

Bon alors qu'est ce donc vous demandez vous ?

Il s'agit d'un CV en carte heuristique. Pour faire simple, il s'agit d'une représentation des idées qui sollicite plus notre hémisphère droit du cerveau (créativité, pensée holistique, capacité de synthèse). Cela a pour impacte une meilleure assimilation du message (idées concepts, ...) qu'on communique à autrui. Voici un exemple ci-dessous :

Exemple de carte heuristique dessinée avec FreeMind


Mon CV mind map à la particularité d'être interactif (Drag and drop, Zoom, éloignement, ...).

Pourquoi un tel choix ?

Vous l'avez compris, j'ai fait un tel choix pour être plus compétitif, mais surtout pour que mon recruteur assimile le plus facilement possible mon CV.

Mais pas seulement, je trouve que cet outil (présenté également dans l'ouvrage"Guide commenté des normes et référentiels") et bien plus puissant qu'il n'y parait. Il y a même des personnes qui l'on spécifiés pour donner naissance à un mode de résolution des problèmes (à la sauce des 5P)