Tag Archives: methodologie

Gestion de projet

L’agitateur nous parle de la black-box de la gestion de projet et de ses leviers incontrôlables. Allez, j’ose, ouvrons la boite noire. Dedans j’ai trouvé ça:
gestionDeProjet.png
Tout part d’un besoin.

La satisfaction de ce besoin doit produire de la valeur, un ROI. Ce ROI attendu détermine le budget qui pourra être alloué à la satisfaction du besoin.

Le besoin détermine aussi un ensemble de fonctionnalités et il doit le plus souvent être satisfait avant une certaine date ce qui implique un délais (le plus souvent hier)

Le projet est-il réalisable?

A partir des fonctionnalités et du délais demandé on va déterminer un planning et un besoin en ressources.

Si ce besoin en ressources excède le budget limité par le ROI attendu, ça va être dur. Dans le cas d’un forfait, comme le bénéfice se fait sur l’écart entre le budget et la quantité de ressources réellement utilisée c’est toujours dur.

La réalisation

Des fonctionnalités, un planning, des ressources yapluskafautquon… L’équipe va produire des livrables avec un certains niveau de qualité qui vont (ou pas) satisfaire le besoin initial.

Il n’y a malheureusement pas de “silver bullet”, produire de la qualité demande du temps et de l’expérience. Un livrable de faible qualité peut satisfaire un besoin à un instant T mais coûteras probablement très cher en maintenance sur le long terme.
Concernant tous les éléments qui ont été énuméré précédemment la marge de manœuvres est souvent très faible. Le plus sage est sans doute de conserver un coût et des délais constant en étant souple sur les fonctionnalités.

Un levier: la productivité

La boite noire de l’agitateur a 3 leviers: produit, coût, durée. Il nous explique qu’ils sont plus ou moins incontrôlables. A l’intérieur de la boite il existe un levier sur lequel le chef de projet peut agir: la productivité de l’équipe.

Celle-ci dépend de la motivation de l’équipe mais aussi des outils, de la méthode et de l’architecture utilisés sur le projet. Regroupé de manière harmonieuse ces 3 éléments constituent un socle technique.
Conclusion


Tout comme pour les aspects méthodologie, il n’y a pas grand chose en contenu francophone sur la gestion de projet. J’espère que ce billet aura un peu comblé ce vide et pourra éclairer un peu la lanterne des chefs de projets débutant.
J’ai proposé un sens de lecture du schéma, mais il se lit de différents façon, tant que l’on ne perd pas de vue le besoin. L’approche doit être systémique il y a des boucles de rétroaction à tous les niveaux.

Documents intéressants

Je découvre le blog de Michel Bénard qui est architecte à la DGME. Ce qui m’a permis de découvrir ce qu’était la Direction générale de la modernisation de l’Etat qui comprend un programme gouvernemental ADministration ELEctronique nommé ADELE.

Bref les personnes qui travaille sur ADELE font comme vous et moi de l’informatique de gestion mais avec des fonds publiques. Et comme il s’agit d’un programme de modernisation, notamment par l’utilisation des TIC ils ont la bonne idée d’être transparent et donc de diffuser par Internet pas mal d’information, ça va jusqu’aux powerpoint présentations OpenOffice de leurs réunions de travail (A quand la même chose pour le conseil des ministres? Plutôt que des caméras).

Dans la section Socle Commun – Informatique transverse vous trouverez beaucoup de chose. Je recopie ci-dessous les liens vers les documents que référence Michel Bénard dans Guides de conception des applications , de choix d’outils et de principes d’architecture applicative orientée service

  • Le guide principes d’architecture applicative : ce document constitue une proposition de structuration “orientée service” (SOA) des applications informatiques. On y trouvera des exemples d’illustration sur les plates-formes J2EE et .Net.
  • Le guide de conception des applications décrit une approche MDA pour la conception des applications.
  • Le guide atelier de développement compare différents outils et frameworks utilisés pendant les développement, depuis les phases de conception et de développement, jusqu’aux phases de tests et d’exécution

Ce sont des documents de qualité, étant financé par des fonds publiques il me semble normal qu’ils soient diffusés publiquement. Mais je me demande ce que l’on a le droit de faire avec ? Tel qu’ils sont diffusés actuellement ils sont tout simplement protégés par le droit d’auteur: on peut donc rien faire avec sans l’autorisation de l’auteur. Une licence creative commons serait peut-être intéressante…

Comment rater un projet?

rescue.jpgIl parait qu’au moins 2/3 des projets informatique d’envergures échouent…

Pour être sûr de planter un projet, le mieux est de s’y prendre très en amont, lors de l’appel d’offre.

Voici donc quelques recommendations pour les commanditaires:

– Lancez l’appel d’offre à la mi-juillet pour une réponse mi-aout à votre retour de vacances, c’est bien connu les prestataires ne prennent pas de vacances.

– Assurez-vous que votre cahier des charges fait plus de 100 pages, contient de nombreuses annexes, pour un total de plus 500 pages.

– Si vous n’avez pas au moins 500 pages, dupliquez les documents, changez le nom des documents, copiez et modifiez l’organisation des chapitres.

– Multipliez les références entre les documents, n’oubliez pas d’inclure des références vers des documents innexistant ou non livrés.

– Finissez toutes vos phrases par “doit prendre en compte mais sans se limiter à”.

– Demandez au prestataire de choisir entre A et B. Une fois les réponses livrées changez d’avis et demandez C.

– Repoussez au plus tard possible la date de démarrage du projet, sans jamais repousser la date de livraison finale.

– Faites l’appel d’offre en Anglais, surtout si l’équipe qui prépare l’appel d’offre ne maitrise pas très bien cette langue.stop.jpg

– Pour la liste de vos besoins techniques, prendre une liste toute faite issue d’un cabinet de consulting. Parcourir très attentivement la liste et éliminez tout besoin qui pourrait s’appliquer dans le context du projet, gardez tous les autres.

– Surtout ne jamais donner deux fois la même réponse à la même question.

– Dans la liste de vos besoins, pensez à inclure des éléments qui se contredisent.

– Arrangez vous pour poser des jalons qui rendrons impossible de produire un planning intégrant des phases de conception.

– Forcez les prestataires à répondre à vos besoins très spécifiques avec des produits standard du marché.

Je vous rassure aucun client n’a jamais fait un carton plein dans cette liste, mais certains ont fait de beaux scores… Cette liste étant loin d’être exhaustive je vous laisse ajouter vos perles dans les commentaires.

Méthodologies

Sur son blog, After the Bubble, Fabien Benoit regrette de ne pas trouver de développeur français parlant des problèmes de méthodologies de développement. Et il pose la question du “Combien de design?”. La réponse est comme bien souvent: “ça dépend…” Voici donc quelques éléments que je vous invite à compléter pour alimenter la réflexion.

Vue d’ensemble

Lorsque je discute méthodologie j’aime bien débuter avec le RUP, autant les outils rational me donne des boutons autant je trouve le RUP utile. Si vous avez l’occasion d’être formé à RUP ou d’avoir accès à la documentation RUP foncez. La méthode donne une vision d’ensemble du processus de développement notamment à travers ce fameux schéma:

rup.gif

Vous pouvez retourner le problème dans tous les sens, un projet informatique est une série d’activité qui (devrait) se déroule(r) dans l’ordre suivant:

activites.png

Ces activités se répartissent en différentes phases:

– Inception (ou démarrage)

– Élaboration (ou conception)

– Construction (ou développement)

– Transition (ou recette et mise en production)

Selon la méthodologie chacune de ces activités ou phases sera plus ou moins importantes ou nommées différemment mais on fini toujours par les retrouver.

D’ailleurs je qualifierais le RUP de meta-méthodologie. En effet la première étape d’une démarche RUP consiste à le configurer pour instancier sa propre méthodologie. Rien n’empêche de faire de l’XP dans une démarche RUP.

Les cycles de vie d’un projet

Je viens d’affirmer que les activités devaient toujours se dérouler dans le même ordre mais ça n’empêche pas d’organiser leur déroulement de nombreuses manières.

Le cycle en cascade

Le cycle classique, les activités sont exécutés les unes après les autres une seule fois.

cascade.png

Gros défaut de ce cycle: Si les premières phases (inception/élaboration) se déroulent mal, on ne s’en rend compte que dans les phases de fin de projet (construction/transition) c’est l’effet tunnel.

Mais pour un projet simple avec peu d’incertitude c’est ce qui fonctionne le mieux.

Le cycle incrémental

Le projet est découpé en lot chaque lot est réalisé successivement ou en se chevauchant selon un cycle en cascade. Ce découpage permet de réduire la durée d’un cycle complet ce qui limite l’impact de l’effet tunnel.

incremental.png

Ce cycle permet de traiter des projets relativement complexes mais reste inefficace si le besoin évolue en cours de projet.

Le cycle itératif

Consiste à dérouler plusieurs fois de suite un cycle en cascade. A chaque nouvelle itération on affine les spécifications et on corrige les erreurs de l’itération précédente.

iteratif.png

Ce cycle permet de s’adapter en cours de projet aux changements mais ne permet pas forcément de traiter de gros projet.

Le cycle en spirale

Il s’agit de combiner les cycles itératif et incrémental. A chaque nouvelle itération on ajuste ce qui a déjà été réalisé et on l’enrichit en traitant un spectre fonctionnel plus large.

spirale.png

Ce cycle est le plus adapté pour traiter des projets complexe et incertain. Gérer un projet de cette manière est bien plus compliqué que de suivre un simple cycle en cascade il nécessite donc à sa tête un chef de projet expérimenté.

Le cycle en Y

Utilisé par la méthode 2TUP de Valtech ce cycle propose de séparer en 2 branches les activités de recueil des besoins et d’analyse: une branche dédié au fonctionnel l’autre à la technique les deux pouvant se dérouler en parallèle.

2tup.gif

Ce cycle est adapté aux projets nouvelles technologies car il permet de lever au plus tôt les incertitudes techniques caractéristiques de ce type de projet.

Il est compatible avec les autres approches.

Globalement les projets étant toujours incertains et complexe on ne fait plus des cycles en spirale, si en plus il y a du nouveau concernant les technologies utilisé, le cycle en Y est fortement recommandé.

Malheureusement tout cela n’est que la théorie, en pratique il se passe trop souvent ceci:

bordel.png

En raison de multiples contraintes les phases de recueil des besoins et de spécification sont réduites à leur portion congrue, les développements démarrent en avance de phase et comme ça coûte cher, on demande au développeur de faire la conception en même temps que les développements. On déploie et ensuite on teste.

Les méthodes agiles

Les méthodes agiles ont émergé en réaction à la situation décrite précédemment et partent des constats suivants:

– Les utilisateurs ont de grandes difficultés à exprimer leur besoin sous une forme exploitable par les équipes techniques.
– Les spécifications n’arrêtent pas de changer.

– Les projets l’engluent dans la gestion de projet et la rédaction de documents qui ne sont jamais lu.

– …

Le remède: exit les specs, exit la gestion de projet lourde, exit la doc.

La méthode agile la plus connue, XP, se base sur un cycle en spirale très condensé avec une injection permanente des besoins en direct par le client (client sur site).

xp.png

Avec la méthode XP le formalisme lourd des méthodes non agile est remplacé par un ensemble de pratiques centré sur le développeur, au premier rang desquelles on trouve les tests unitaires, l’intégration continue et le refactoring.

Les méthodes agiles répondent bien au besoin de faire avancer un projet alors que le client ne sait pas exactement où il veut aller. Par contre il ne faut pas se leurrer, XP s’adresse à des développeurs expérimentés. Les tests unitaires et le refactoring ne sont pas des pratiques à la porté du développeur débutant. Évidemment la pratique du pair programming permet d’atténuer ce problème en associant un développeur débutant avec un autre plus expérimenté. Mais je n’ai encore jamais vu aucun manager accepter de mettre 2 ressources là où une seule peut suffire.

Enfin XP ne permet pas de connaître à l’avance les fonctionnalités, la durée et le coût d’un projet, ce qui reste le fantasme la préoccupation n°1 des décideurs. Cette question du coût, des délais et des fonctionnalités fera l’objet d’un autre billet.

Une méthode idéale ?

Il n’y en a sans doute pas, mais j’ai pu observer de bon résultat en combinant:

– Un cycle en spirale pour gérer les évolutions et maîtriser la complexité.

– Une approche en Y pour lever les incertitudes technologiques.

– Certaines pratiques XP pour garantir la qualité de l’application

Ce sont des pratiques qui sont de plus en plus répandues, en raison de leur relative complexité elles ont peu de chance d’aboutir sans s’appuyer sur des ressources expérimentés.

Combien de design ?

Avec une méthodologie agile et une équipe expérimenté capable de pratiquer le refactoring, c’est à dire du design en continue, on peut sans doute se passer du “Big Design Up Front”. Mais agile ou pas, un élément reste indispensable: le cahier des charges. De préférence sur 2-3 pages, allant à l’essentiel et permettant de donner une direction au projet plutôt qu’un fourre tout de 50 pages rédigé dans un langage juridique et qui tenterait de tout prévoir à l’avance.
Pour poursuivre la réflexion je vous invite à visiter la page: état de l’art des méthodologies sur le site de la direction des systèmes d’information du CNRS.

S* oriented architecture

Comment faire pour passer de cela:
Un système d’information en silo où les applications sont cloissonées les unes des autres et ne communiquent pas ou peu entre elles.

SiloOA.png

A ceci :
Un système d’information où les applications communiquent abondament entre elles et sont construites en réutilisant des services qui exposent les fonctions de l’entreprise.

ServiceOA.png

La première question à se poser est de savoir si vous avez réellement intérêt à succomber à la mode SOA?
Rappelons qu’une architecture se choisi en fonction d’un besoin et non pas en fonction d’une mode ou des recommandations d’un vendeur de logiciels ou de matériels (voir les deux à la fois).

A quel besoin répond une architecture de style SOA?

Celui de réorganiser dans des délais court l’organisation d’une l’entreprise pour s’adapter rapidement à un environnement en perpétuelle évolution. Donc SOA n’est pas uniquement une mode mais répond bel et bien à un besoin de plus en plus répandu.

Comment SOA répond t-il à ce besoin?

La promesse SOA est le nirvana de l’informatique, notre Saint Graal à tous: la réutilisation! Des générations d’informaticiens se sont cassés les dents sur le problème. Ce coup ci serait-il le bon? Une seule certitude: Une architecture de type SOA coûte plus cher à mettre en place qu’une architecture plus traditionnelle et simple. Le ROI n’est à attendre que sur le moyen/long terme: lorsqu’une nouvelle application sera développée en s’appuyant sur des services déjà existant.
Chacun répondra à ces interrogations selon son contexte. Si vos réponses à ces questions vous confirment dans le choix d’une SOA, quelles sont les conditions du succès?

J’ai vu pas mal de projet aborder la problématique SOA d’un point de vue technique au niveau applicatif. En général on constate que ces projets ne produisent pas des services réutilisables. Pour quelles raisons?

Web services, SOAP, UDDI, EAI, WS-*… La liste des technos que l’on peut introduire sur un projet SOA est longue. En réalité HTTP + XML peuvent suffire pour faire fonctionner une architecture orienté service. Ca ne veut pas dire que les autres technos soient inutiles. Mais là aussi il faut se poser la question de leur utilité et s’assurer que l’équipe de développement les maîtrises avant de les introduire.

Ces problèmes techniques, bien que pouvant être complexes et importants, sont des détails par rapport aux problèmes organisationnels. Bien souvent on décide d’introduire une architecture SOA dans le cadre du développement d’une nouvelle application. L’objectif du projet et de répondre au besoin métier de l’application, l’architecture SOA n’est qu’un moyen. Le projet est porté, financé par une direction métier, les achats par exemple. L’objectif du responsable des achats est d’obtenir au moindre coût et dans les délais les plus courts une application qui va répondre aux besoins de son métier dont le périmètre se limite aux achats. Son objectif n’est pas de financer le développement de services qui pourront être réutilisé par son collègue des ressources humaines. Ces deux objectifs s’opposent, le résultat ne fait aucun doute, au fur et à mesure que le projet avance, que les retards s’accumulent, les principes qui font une SOA sont sacrifiés pour répondre aux impératif immédiat de l’application: adieu le plan d’urbanisation, au revoir l’indépendance des services…

Au final les services produits sont les services de l’application, pas les services de l’entreprise. Cette notion est développée dans ce billet: Intégration d’applications ou intégration ontologique ?

Au lieu d’une approche technique au niveau applicatif il faudrait mieux se concentrer sur une approche fonctionnelle au niveau de l’entreprise. C’est le rôle du(des) homme(s) en rouge sur mon deuxième schéma. Le développement des services doivent être des projets à part entière, ce sont des applications comme les autres, avec leur propre budget et leur responsable métier dont l’objectif sera de produire des services réutilisable par les autres applications. Ces responsables de services ne sont pas rattachés aux achats ou à la production, ils sont transverses à l’entreprise.

C’est à mon avis une condition indispensable pour produire des services réutilisables, ce qui reste l’objectif principale d’une SOA.

On dit souvent qu’une architecture SOA permet d’aligner le système d’information avec les métiers de l’entreprise. Cet alignement est réalisable si les services informatiques font la moitié du chemin et l’organisation de l’entreprise l’autre moitié. On tombe bien sûr tout de suite dans une problématique de conduite du changement.

A défaut d’effectuer ces changements on court le risque de se retrouver avec ce type d’architecture:

Des services qui complexifient le système sans permettre de réelle réutilisation.

SatanOA.png

A lire aussi:

Réutilisation et mode projet : la contradiction par Dominique Vauquier.