J'ai récemment eu une conversation avec un collègue développeur au sujet du développement logiciel Agile. Bien que je comprenne le principe, il semble que les exigences en constante évolution créent le potentiel pour que le projet se poursuive pour toujours. Mais, au moins là où je travaille, les projets doivent être achevés car c'est un contrat.
Autrement dit, la première itération peut prendre des mois, car pour certains projets, le client ne peut pas utiliser une application incomplète. Pour certains projets, je pense que vous devez d'abord définir terminé, puis vous pouvez le diviser en itérations et affiner votre définition après chaque itération. Mais vous devez toujours avoir cette définition.
Si le développement de logiciels Agile comprend des exigences changeantes, comment savoir où cela se termine? Comment pouvez-vous budgétiser un projet alors que le résultat final est en constante évolution?
Le développement logiciel Agile est-il plus un processus agile qu'un produit agile?
Réponses:
D'après les commentaires du PO, il semble qu'il comme moi travaille pour une boutique de conseil, où nous fournissons des services de développement à nos clients ... Je pense parce que sur cet état d'esprit qui cause sa confusion ... Je vais donc énoncer un fait bien connu mais jamais déclaré.
Agile est incompatible avec le développement de logiciels défini par un contrat.
De nombreux magasins de conseils affirment Agile, ils mentent. Ils disent juste cela parce qu'Agile a atteint le statut de mot Buzz.
Agile fonctionne mieux pour le développement interne où les programmeurs sont à plein temps, et il est peu question de budgets. Cadres et fonctionnalités Just Time.
la source
Si vous vous concentrez d'abord sur (ce que vous croyez) les choses les plus importantes, le projet se terminera lorsque:
la source
Vous vous arrêtez lorsque l'entreprise décide qu'elle ne souhaite plus effectuer d'itérations. Vous espérez que ce soit après qu'une quantité importante de valeur a été livrée, mais avant d'aller trop loin dans le domaine des rendements décroissants.
Elle doit toujours être motivée par «l'entreprise», quoi que cela signifie dans votre situation. Il peut s'agir de la haute direction d'une boutique de développement de logiciels ou des sponsors commerciaux réels dans un environnement de développement interne. Ils décideront quand le coût de la prochaine itération l'emportera sur l'avantage des fonctionnalités qui seront livrables lors de la prochaine itération.
la source
Jamais, et c'est ça la beauté.
Le projet n'est jamais terminé . Vous avez atteint une autre version, un autre jalon, mais tant que l'argent coule, il y a toujours une fonctionnalité de plus à ajouter, une pièce de plus à améliorer, un bug de plus à corriger. Le projet mourra lorsqu'il ne sera plus nécessaire, mais il ne sera jamais terminé. Contrairement au modèle Waterfall avec exigence-> projet-> produit-> fin, c'est une boucle qui peut tourner pour toujours - tant que vous êtes payé.
Pas une caractéristique commerciale fréquemment mentionnée de cette technologie, n'est-ce pas?
la source
Il y a une idée fausse ici: Agile n'encourage pas les exigences du projet à changer. Il permet plutôt le changement sans gaspiller le travail ou sacrifier des domaines de développement importants.
Il y a quatre contraintes fondamentales à tout projet d'ingénierie; portée, coût, temps et qualité. Waterfall suppose que ceux-ci seront statiques. C'est une hypothèse incorrecte; un ou plusieurs de ces changements TOUJOURS. Le fluage de la portée, les budgets réduits et d'autres «inconnues inconnues» interfèrent TOUJOURS avec un projet, changeant les contraintes. Waterfall ne prévoit pas cela, donc quand cela se produit, le projet change de manière indésirable; les fonctionnalités importantes qui n'ont pas encore été ajoutées disparaissent, ou sont rapidement mises en œuvre, ou la version doit être repoussée, ou coûter des ballons car le PM injecte de l'argent aux nouveaux développeurs pour les aider à bien faire les choses.
Agile, en revanche, permet aux contraintes de changer, et l'attend réellement. Il le fait en effectuant des travaux en petits morceaux utilisables, selon les priorités du propriétaire, et donc les morceaux sont idéalement immédiatement utiles au propriétaire du projet. Réduit ainsi l'exposition à l'inconnu en ne faisant pas de grands projets dans un délai où les inconnues sont grandes. Si la chronologie change, des équipes peuvent être ajoutées, ou des fonctionnalités moins importantes "supprimées", et le système que l'équipe a déjà construit n'est pas affecté.
Il permet également de meilleures estimations du temps et des coûts nécessaires pour produire la portée donnée avec la qualité requise. Les gens sont notoirement mauvais pour estimer les gros travaux; il faut BEAUCOUP d'expérience, et beaucoup PLUS de calculs initiaux, pour le faire correctement. En revanche, les gens sont généralement de bons juges de ce qu'ils peuvent faire en une journée, ou une semaine ou deux. Cela produit rapidement un état stable où vous pouvez extrapoler le temps et le coût du travail restant à faire en fonction de votre rythme historique, avec une bonne quantité de précision.
Quant à la définition des points de terminaison, vous avez raison; un projet Agile PEUT durer éternellement. Cependant, il en va de même pour le SLDC traditionnel; le client revient souvent avec plus d'argent et une liste de mises à niveau. La différence est qu'il n'y a pas de ligne claire entre «analyse», «conception», «développement» et «maintenance» lorsque l'on considère le projet dans son ensemble; tout se passe brique par brique, sprint par sprint. Si, à un moment donné, le propriétaire veut appeler le projet "terminé", il le peut et il aura la somme totale des "briques" qu'il a payées dans un "mur" solide; il peut ne pas être aussi élevé ou s'étendre autant que prévu initialement, mais il est fermement en place, fait le travail et peut être ajouté à une date ultérieure avec un minimum de démolition.
la source
Il se termine une fois que toutes les fonctionnalités sont implémentées et que tous les bugs sont corrigés.
Si le délai est fixé et les exigences sont également fixées. Alors ce ne sera pas un problème. Mais si la date limite est fixée, mais que les exigences changent, alors vous devez faire quelque chose pour mener à bien le projet.
Prix fixe partie 1, qu'est-ce qui est si mauvais?
Prix fixe partie 2, Fixez-le avec agile!
la source
La grande hypothèse derrière le développement agile est que les exigences changent toujours, quelle que soit la méthodologie que vous utilisez. Maintenant, bien sûr, vous pouvez créer un document d'exigences, construire un plan pour l'exécuter et livrer à la fin, et il peut sembler que vos exigences n'ont pas changé. Ils n'ont peut-être pas changé dans votre plan, mais avec les changements du marché et votre meilleure compréhension du produit par vous et vos clients, les exigences en termes de ce que le client veut vont changer. Agile entre en jeu et suggère un processus qui ne cache pas ces changements à travers un calendrier fixe, mais construit à la place une réponse aux changements inévitables dans le processus.
Lorsque vous avez terminé, vous passez de la fin d'un calendrier fixe à la date à laquelle votre produit se trouve à un endroit où vous pouvez fournir suffisamment de valeur commerciale où votre client peut expédier et commercialiser le logiciel dans son état actuel. Le fait d'être fait dépend beaucoup plus de la valeur que vous offrez plutôt que de la façon dont vous avez respecté un calendrier.
la source