juillet
2014
Je propose dans cet article une petite introduction aux méthodes agiles, les gains qu’ils offrent et les contraintes qui leurs sont liés. Au lieu de s’attarder sur les détails je propose qu’on essaie de comprendre ensemble l’esprit des méthodes agiles tel que décrit dans le manifeste.
Dans un prochain article, je vais essayer de faire un projection des principes expliqués dans cet article sur les pratiques de la méthode agile scrum.
Personnellement, ma conviction est de plus en plus grande que c’est le mode le plus adaptée pour la réalisation d’un produit logiciel fini, de bonne qualité, qui répond au mieux aux attentes des utilisateurs. Bref, le développement agile demande beaucoup de flexibilité et d’adaptation au changement pour un objectif ultime qui est la construction d’un logiciel de qualité qui crée de la valeur ajoutée et soit un avantage concurrentiel pour le client. Je suis fasciné par cette manière de travail pourvue qu’elle soit bien appliquée avec les préconisations des vétérans. Dans les paragraphes qui suivent je vais essayer d’expliquer, de façon simple et succinte, le manifeste agile tel que je l’ai compris.
Le manifeste des méthodes agiles (agile manifesto) http://agilemanifesto.org/, signé par des chevronnés du monde de la programmation, définit le développement agile autour de quatre valeurs et douze principes. Un développement agile donne plus de valeur à :
- Les individus et les interactions humaines prime sur les outils et process : Dans un projet agile, les outils traditionnels de communication et process de recueil du besoin, formalisme, validation, etc… sont mis de côté pour céder la place aux interactions humaines.
- Un logiciel qui marche prime sur la documentation : Produire une solution qui marche, même si elle ne couvre pas la totalité des fonctionnalités dés la première itération, vaut mieux que de rester clouer aux itérations de la documentation pour arriver à une version exhaustive, complète et validée, qui servira de support aux développements.
- La relation et la collaboration avec le client prime sur la négociation du contrat : Le contrat doit être flexible et favorise la collaboration continue avec le client.
- La prise en compte des demandes de modifications prime sur le respect des plannings: Les plannings et les priorités peuvent être revues pour répondre aux demandes de modifications importantes au client.
Pour qu’un développement soit considéré agile, il doit respecter les principes ci-dessous:
- La satisfaction client est la priorité ultime. Des logiciels (ou bouts de logiciels) de grande valeur ajoutée doivent être livrés rapidement et continuellement : En général le client est satisfait quand il touche des résultats.Rien ne vaut un logiciel qui marche et qui traduit le besoin du client en solution logiciel. En mode agile, on doit essayer de gagner la satisfaction du client en lui fournissant continuellement des petits bouts de logiciels qui répondent à sont besoin.
- Accepter les modifications des exigences, même tard dans le développement. Un process agile fait du changement un avantage concurrentiel du client : Le logiciel fourni doit représenter une valeur ajoutée pour le client qui va lui permettre, directement ou indirectement, de se positionner mieux sur son marché. Pour ce faire, en mode agile, il doit pas y avoir une résistance pour la prise en compte des modifications des exigences. Ceci dit, les priorités doivent être étudiées pour déterminer les délais de prise en compte de la modification en question.
- Livrer, en continu, une solution qui marche, le plus rapidement possible, de deux semaines à deux mois : Ce point rejoint le point 1 et est conditionné par les points 4, 5 et 9.
- Les développeurs et les gens du métier doivent travailler, tous les jours, en étroite collaboration tout au long du projet : les gens du métier connaissent forcément mieux leurs contextes de travail, la description de leurs besoins et le degré d’urgence de ceux-ci, que l’équipe de développement. De même, l’équipe de développement, connait forcément mieux, leurs contraintes techniques et limitations qu’ils peuvent rencontrer et éventuellement comment y remédier.
- Choisir une équipe motivée, Préparer un bon environnement de travail et faites leur confiance.
- La méthode la plus efficace pour l’échange d’information dans une équipe de développement est le face à face : une discussion en face à face est forcément meilleure que tous les processus bureaucratique de rédaction de documents, revue, validation.
- La première mesure de progrés est un logiciel qui marche.
- Tous les intervenants, commanditaires, développeurs et utilisateurs, doivent être capable de maintenir un rythme constant indéfiniment : Pour pouvoir fournir des logiciel de bonne qualité dans des délais réduits.
- Un bon développement agile nécessite une excellence technique et une bonne conception.
- La simplicité est essentielle.
- Les meilleures architectures, exigences et conceptions émergent d’équipes auto-organisées .
- A intervalles réguliers, l’équipe mène une réflexion sur les points à améliorer, puis ajuste son comportement en conséquence.