les derniers
articles

Index &
Sommaire
 

Articles « Info » : Chef de projet

 


DÉCOLLAGE !


Présentation du
site WEB AILES
 


Cycle Itératif
[ChefDeProjet]
[OMA-Martin99a]


Pour beaucoup de directeur de chef de projet (ceux qui encadrent plusieurs projets), comme pour de nombreux client, la vision en "Jalon" a la peau dure : un projet a un début, un développement, des tests et une livraison à une date T.
La caricature du cycle en V poussé à l'extrême se retrouve dans le projet
Waterfall.
En plus, cette vision est hypocrite, car en pratique, le bon sens pousse naturellement vers un cycle itératif, même s'il ne dit pas toujours son nom.

Il s'agit alors de découper son projet en itérations, chacune de ces itérations constituant un mini-cycle en V à elle seule. Le contenu précis d'une itération n'est donc pas détaillé ici, mais le process dans sa globalité est analysé.

Quel sont donc les caractéristiques de ce cycle ? Et pouvez-vous répétez cette question dix fois de suite à l'envers ?
L'article répond à la première question et vous laisse vous débrouiller avec la seconde.
En
fin d'article, vous trouverez un schéma qui reprend pas mal des concepts propre à un tel cycle.


 



Lisez-moi et
réagissez !



Écrivez à AILES !



Le projet cauchemar :
Waterfall!



chef de projets en
 cycle itératif



Projet en manque d'itération
(Colin LORRAIN)



Réactions au projet en manque d'itération
(Christophe THIRY)
 
C'est quoi, le problème du Waterfall ?
    Aujourd'hui encore, les projets sont dirigés au moins en apparence sous forme de waterfall, c'est à dire un cycle unique en V (Analyse - spécifications & modélisation - conception, codage, tests-unitaires et l'intégration, livraison et recette).
On retrouve ce cycle en V décrit avec humour ici)
    Vu de "l'extérieur", le client voit donc 5 grandes phases. Certes, en interne, il peut en être autrement, mais si ce n'était pas le cas, voilà ce que cela signifierait :
- pas de retour entre les phases : une fois le l'analyse est faite, c'est terminé, tout le monde travaille sur la conception. Une fois que la conception est faite, c'est terminé... etc.,
- des dates fixes pour chaque phase, qui servent de références pour juger de l'état d'avancement des développeurs,
- pas de critère de complétion pour l'analyse et la conception : ces phases se finissent... quand le calendrier l'indique. Et, du coup, la plupart du temps, ces phases se terminent dans les temps! Mais elles ne sont pas réellement "finies".

Grandes caractéristiques de l'itératif
- Intégration continue : on ne rassemble pas les morceaux juste avant la recette finale. On le fait tout au long du projet,
- versions exécutables intermédiaires fréquentes : le client doit souvent avoir l'occasion de voir l'avancement du projet pour mieux "corriger le tir",
- gestion des risques : le projet doit s'attaquer aux parties impliquant les plus gros risques (techno mal maîtrisée, produits peu connus,...).
Conséquences : 
- développement continu : les versions intermédiaires (qui sont, rappelons-le, de véritables exécutables remplissant n% des fonctionnalités attendues, en commençant par les plus "risquées") forcent le projet à remplir toutes les fonctionnalités exigées par le client.
Il n'y a donc pas de phénomène du type : "90% du projet fait, 90% restent à faire" (cf. loi n°7).
- intégration progressive des évolutions : les besoins du client changent ou, pour le moins, s'affinent au fil du projet. Le cycle itératif permet de détecter ces changements au plus tôt et des les intégrer soit directement, soit via des avenants.

Vous en prendrez bien une tranche ?
    Tout l'enjeu du cycle itératif est de bien réaliser que, dans un projet, il n'y a que 2 dates connues :
- le T0 (prononcez « t zéro », date de début du projet, et encore, il est courant que l'on se fasse avoir sur cette date, cf. 10/).
- la date de livraison (donc, de "fin" du projet).
    Entre ces 2 dates, il s'agit de diviser le projet en tranche (itérations) qui ne sont pas des milestones (comme celle du cycle en V du Waterfall : analyse, conception, codage, ...), donc qui n'ont pas de date fixe qui leur serait attachée !
Cela ne signifie pas pour autant qu'on ne pourrait manager son projet en en mesurant l'état d'avancement.
    Une itération a pour caractéristique d'être :
- un cas d'utilisation (ou une partie). Il ne s'agit pas de sous-système technique mais bien de quelque chose auquel le client peut donner un sens,
- une fonctionnalité. Cela permet, plus tard dans le projet, lorsque l'on décide d'éliminer telle ou telle partie pour rester dans les délais, d'éliminer des itérations et non de nombreuses parties d'une ou plusieurs itérations,
- un exécutable : une itération doit pouvoir être évaluée par le client, avec des critères d'appréciations,
- court : une itération se compte en jours, une à deux semaines maxi, pas en mois.
- un mini-cycle en V : non seulement en sortie on a un exécutable, mais on a aussi des documents d'analyse et de conception qui viennent compléter ceux des itérations précédentes.
- indépendante des itérations à venir : il s'agit d'avoir bien pensé son découpage de façon à ce que chaque itération utilise  les fonctionnalités des itérations précédentes et le moins possible celle des itérations suivantes.
La notion de couplage prend, ici encore, tout son sens (comme pour le problème des dépendances entre packages).
C'est la première qui compte...
    La première itération est celle à choisir avec le plus de soin. Elle doit à la fois être celle comportant les difficultés techniques les plus importantes et être "visuelle", et ce pour 2 raisons :
- savoir le plus tôt possible si l'on peut réussir le projet ou non (donc s'attaquer aux difficultés en premier),
- calibrer les délais le plus "large" possible, en multipliant la durée de la première itération (qui, en générale, est longue) par le nombre d'itérations prévues.
Certes :
- les fonctionnalités les plus complexes ne sont pas toujours abordables en premier car elles peuvent dépendre d'autres, plus simples. Il faudra néanmoins les aborder le plus tôt possible,
- les itérations peuvent se "paralléliser", mais les 2 premières doivent, de préférence, se faire séquentiellement.

Planifier ? Estimation continuelle
    L'avantage du Watefall et de ses 5 milestones, avec ses dates fixes, c'est qu'un manager peut à tout moment "voir dans le temps" où il en est.
    Les itérations, auxquelles - initialement - aucune date n'est attachée, n'empêchent pas ce type d'évaluation. Simplement, celle-ci se raffine dans le temps.
    Lorsque la première itération se termine, on a :
- un exécutable représentant n% des fonctionnalités du projet et dont on sait qu'il marche (!),
- l'analyse et la conception pour cette partie du projet,
- la durée nécessaire pour réaliser cette itération.
    On peut alors faire une première - grossière - estimation de la durée du projet en multipliant celle de la première itération par le nombre d'itération.
    On n'en tirera pas de conclusion définitive d'autant que la deuxième itération est souvent un peu plus longue que la premières, les développeurs se rendant compte d'un certains nombre d'erreurs dans la première (justement!).
    L'enseignement tiré de ces premières itérations permet ensuite d'affiner les suivantes, qui, pour le coup, seront plus courtes, moins complexes, mieux maîtrisées et s'appuieront sur des fonctionnalités déjà évaluées par le client.

Manager un projet
    Bon... sérieusement, tout cela est bien joli, mais peut-on réellement manager un projet avec un tel système ?
    Il faut bien savoir qu'un projet est fait de trois dimensions :
- l'équipe (de développeurs),
- le sujet (ensemble des fonctionnalités que doit remplir le programme),
- les délais (à respecter... en théorie).
[Colin LORRAIN nous rappelle une 4ème dimension importante : le client. Laurent Bossavit, Coach XP nous en confirme l'importance pour un projet de qualité]
    Lorsqu'une des itérations dépasse la date estimée (même si initialement aucune date ne lui était attachée, l'enjeu des premières itérations reste d'estimer la durée des suivantes), le chef de projet a 3 possibilités :
- augmenter l'équipe (appeler des renforts, des experts, ...),
- "changer le sujet" (enfin... diminuer le nombre de fonctionnalités finalement implémentées!),
- modifier la date estimée (pour la faire coller avec la réalité!).
    Encore une fois, les premières itérations sont cruciales, car elles vont vous permettre tôt dans le projet de voir si l'une des trois dimensions a besoin d'être revue.
    Vous aurez ainsi le temps de former de nouvelles recrues ou de négocier avec le client des fonctionnalités plus "réalisables" ou encore des délais plus "réalistes".
    Si aucune de ces trois dimensions n'est "flexible", si toutes les trois sont fixées dès le début du projet... celui-ci n'est pas gérable autrement que par les prières!
Il faudra alors imposer ses ultimatums, dicter ses exigences, forcer ses résultats auprès de développeurs qui en seront vite démotivés (comme pour l'exemple du  Waterfall)
    En revanche, si l'approche itérative ne résout pas tout, elle permet aux managers, sur la base d'exécutables concrets et d'évaluations régulières par le client... de manager!

exemple de schéma récapitulatif :



               
 
Avertissement !
 
Décollage !  |  Présentation du site web "AILES"  | 
Infos générales  |  articles "Informatique"