web-dev-qa-db-fra.com

Agile est dit d'une incrémentation itérative, mais où est-ce "révisant" et "raffinage" si nous suivons la définition de FAIT?

Tout d'abord, je l'ai trouvé un peu étrange car techniquement, itératif signifie quelque chose qui se fait comme une série récurrente d'étapes - alors comment peut-on être purement incrémentielle, lorsque chaque incrément sera mis en œuvre à travers la même série d'étapes?

Quoi qu'il en soit, ma confusion principale découle du mot "itératif" - si la signification est en aahncite signifie "raffinage et révision du travail", où est-ce que cela correspond au scénario de développement de l'histoire classique: vous développez une histoire B, et une fois qu'il passe les tests et répond à vos critères de DOD et d'acceptation, c'est fait. Vous l'avez ajouté au sommet de la base existante. En attendant, d'autres histoires sont terminées, idéalement faites et certainement pas censé être raffinées ou retravaillées ... Où est l'itération?

Donc, pour moi, il ne semble pas différent des modèles incrémentaux anciens de décennies (dont certaines revendications sont des exemples de modèles agiles, certains disent qu'ils ne sont pas). Il suffit de développer des caractéristiques un par un, avec des tests précoces et une livraison fréquente d'incréments de travail.

Un autre point intéressant: Agile est apparemment dit être "l'un des modèles incrémentiels". Cependant, des modèles incrémentiels sont définis par une documentation initiale complète ...

1
JCerm

Je pense que votre confusion découle de ce que vous associez le mot "incrémental" avec; J'ai un sentiment que vous pensez à l'accumulation de fonctionnalités de Rote (logiciels de plus en plus de nouvelles choses, ainsi que de livraison par morceaux). Ce n'est pas ce que l'on entend - c'est à propos de la conception, de décider quoi pour construire et comment.

Le problème de la cascade est "Big Design Optefront". Cela peut fonctionner lorsque le domaine problématique est très bien compris (par exemple, il y a des années de recherche, la manière dont les choses fonctionnent et interagissent sont connues, il existe des pratiques standard testées dans le temps, etc.), mais ce n'est pas itératif ou incrémental dans le sens où À peu près tout est décidé et spécifié en une phase. (Maintenant, vous pourriez l'appeler incrémentiel en ce sens que vous le construisez probablement à plusieurs étapes, dans un processus d'additif, mais ce n'est pas en soi particulièrement intéressant.)

Agile reconnaît que dans de nombreux cas pour les applications métier, le domaine problématique est suffisamment unique ou n'est pas bien compris (dans le sens ci-dessus), et que faire "grand design initialement" lorsque vous n'en savez pas assez sur les subtilités de la Domaine conduit à des projets coûteux qui, à la fin, ne faites pas ce que les clients souhaitaient (vous construisez "la mauvaise chose"), ou faites-le mal - supposant qu'ils n'étaient pas trop ambitieux et ont été construits avec succès du tout.

Donc, Agile opte pour "Quelques conceptions initiales", puis quelques design supplémentaires à chaque itération, les développeurs en apprenant davantage et obtiennent des commentaires. Agile essaie de perfectionner une bonne solution au fil du temps, de commencer la petite et conservant la plasticité de conception plus longtemps. Un autre aspect est que les essais agiles gardent le produit utile/utilisable à chaque itération. Il s'efforce également d'apprendre quels sont les aspects les plus importants (principaux) du système et essaie de pousser ceux qui doivent être mis en œuvre en premier (ou le plus tôt possible). Cette combinaison réduit le risque de clients car ils peuvent arrêter le projet lorsqu'ils se sentent appropriés (par exemple, lorsqu'ils atteignent le point de rédaction de rendements décroissants, ou lorsqu'ils manquent de budget), et obtiennent toujours la plus grande valeur - elles Toujours finir avec un logiciel qui est en fait utile pour eux. (Notez qu'il existe également un aspect commercial, vous devez disposer d'un modèle d'entreprise capable de soutenir cette approche; par exemple, vous ne pouvez pas avoir la portée, le coût et l'heure fixes, etc.)

L'aspect révisant ira de l'équipe de projet développer une compréhension croissante du domaine et des commentaires fréquents - de découvrir de nouvelles choses, ou d'identifier ce qui a été mal compris (ou mal calculé) les exigences, ou ce qui a été supposé et ce qui a été supposé que explicitement dit, etc. Ce sont les moments qui vous font partir: "Oh, alors c'est ce que vous voulez réellement!", ou "OOOOH, ce processus en fait fonctionne comme ça! ", ou" Alors, quand vous dites "envoi" vous NON signifie la même chose que lorsque votre collègue d'un autre département dit "envoi" ??? ".

Il est donc vraiment à propos de la livraison incrémentielle de la valeur (les clients trouvent un produit utilisable/utile d'une certaine manière après chaque itération) et la capacité d'apprendre et de réviser sur le point. (Ou, si vous voulez le dire différemment, il s'agit d'être incrémental et itératif simultanément - ce qui implique alors que vous devez être incrémental de la manière particulière décrite).

En revanche, un projet de cascade peut passer beaucoup de temps dans un état de travail à moitié cuit au travail et peut procéder longtemps avant que tous les commentaires soient fournis (voire possible).

1

Votre histoire répond aux critères d'acceptation, donc c'est fait. Vous ne reviendrez jamais à cette histoire. Absolument raison. Cela ne signifie pas que vous ne changez jamais le code et que vous ne modifiez jamais l'application.

Dites que vos critères d'acceptation ont dit qu'il doit y avoir un bouton vert à l'écran. Vous le faites, QA vérifie le bouton est vert, l'histoire est fermée. Le lendemain, un client se plaint: le bouton devrait vraiment être orange. Oui, ils ont dit "vert" lors d'une réunion, mais maintenant ils veulent d'orange. Vous n'écouvrez pas l'histoire fermée, vous ne visitez pas l'histoire. Vous créez une nouvelle histoire "Bouton doit être orange, pas rouge".

Vous affinez des histoires qui ne sont pas encore fermées. Une fois que l'histoire est fermée, il n'est plus raffiné, une nouvelle histoire est créée ou une autre histoire est modifiée.

1
gnasher729

Le processus itératif n'est pas itératif sur une seule histoire, il est itératant sur une série de sprints. Nous faisons un sprint, nous évaluons comment le sprint a fonctionné, nous faisons des ajustements, nous faisons un autre sprint, nous évaluons comment le sprint a fonctionné, nous faisons des ajustements, etc.

Du point de vue du client, ils disposent d'une liste des besoins du produit. Nous cassons ces exigences en petits morceaux (épopées, histoires), nous organisons ces morceaux dans un arriéré de travail, puis nous parcourons ces histoires, de délivrer une fonctionnalité incrémentale avec chaque itérature.

0
Bryan Oakley