Je pense qu'Agile n'est rien d'autre qu'une autre implémentation de Spiral Model. Je suis un grand partisan de Spiral (le modèle Spiral est un processus de développement logiciel combinant des éléments de conception et de prototypage en cours, dans le but de combiner les avantages des concepts de haut en bas et de bas en haut) depuis ses débuts et j'ai vu ce lot de projets implémentent Spiral sans savoir qu'ils opèrent dans un monde Spiral. Depuis le jour où Agile a commencé à gagner en popularité, le concept de spirale a commencé à être un peu négligé. Je suis sûr que pour les projets complexes, la spirale est toujours la meilleure alternative, mais j'aimerais mieux comprendre les similitudes et les différences entre les techniques Agile et Spiral. Quelqu'un peut-il expliquer ses différences/similitudes?
Agile est spirale. Totalement. En partie, le nom a été changé à des fins de marketing.
Le problème est que la spirale a tendance à impliquer une "grande conception à l'avant" - où vous planifiez de nombreuses spirales, chacune par ordre de risque. Spiral, cependant, n'est pas Agile - c'est juste une exécution incrémentielle par ordre de risque.
Une grande distinction qu'Agile ajoute est le "ne pas dépasser les choses que vous ne pouvez pas encore savoir". Agile est spirale, mais vous créez des plans détaillés pour seulement un incrément à la fois.
Agile ajoute également beaucoup d'autres choses. La spirale est une approche très technique. Agile, cependant, reconnaît que la technologie est construite par les gens. Le Manifeste Agile a quatre principes qui vont au-delà de l'approche de gestion des risques simple de Boehm.
La différence fondamentale, à mon avis, est que la plupart des modèles de développement Spiral insistent toujours sur un grand design initial. L'accent est mis sur le fait de savoir autant que possible sur la façon dont le système sera utilisé; découvrir tous les cas d'utilisation. Une fois que vous les connaissez, vous concevez le système et le divisez en phases qui suivent une boucle itérative de conception détaillée, d'implémentation, de test et de conception. Dans Agile, il s'agit d'une planification initiale - peut-être pour rassembler des connaissances approfondies (titres de l'histoire) - afin que des versions raisonnables puissent être décrites, mais chaque version est planifiée indépendamment et nous retardons la découverte des détails jusqu'à ce que nous soyons prêts à commencer mise en œuvre de cette version. Nous attendons du changement et n'essayons pas de tout savoir d'abord.
Une autre chose qui diffère est que la plupart des philosophies Agiles impliquent des méthodes "test-first". Ceci est différent de spiral où le test est souvent une activité en soi et les tests ne sont pas développés avant le code. Le plus souvent, ils sont planifiés à l'avance, mais développés en parallèle ou après codage. De nombreuses méthodes agiles insistent d'abord sur le développement de tests comme spécification du code.
Ils sont similaires en ce sens qu'ils sont itératifs. Ils diffèrent dans la mise en œuvre et la compréhension de ce qu'est une itération.
Je ne suis pas un expert du modèle en spirale, mais d'après la définition de wikipedia, il me semble qu'il y a des différences importantes.
Par exemple, dans un projet Agile, à la fin d'une itération ne se trouve pas un prototype, mais un système entièrement fonctionnel, entièrement testé, potentiellement déployable (1), contenant les fonctionnalités les plus prioritaires de la liste des fonctionnalités.
Les exigences réunies au début du projet sont censées être à peine suffisantes pour démarrer (pour passer à l'étape suivante) et doivent être étoffées peu de temps avant leur mise en œuvre effective. Les modifications apportées aux exigences sont les bienvenues.
De plus, Agile ne se limite pas au développement itératif: se concentrer sur la conversation face à face plutôt que sur la communication écrite, se concentrer sur le rapprochement des hommes d'affaires et des techniciens dans leur travail quotidien. Un accent sur la maximisation collaborative de la valeur au lieu de définir puis d'exécuter un contrat.
Au cas où vous ne l'auriez pas encore vu, jetez un œil au Agile Manifesto , qui est fondamentalement la définition du développement logiciel Agile.
(1) Cela ne signifie pas qu'il doit avoir un sens commercial pour déployer le système, "juste" qu'il est techniquement faisable. Cela devrait être une décision commerciale pure de déployer le système à la fin d'une itération.
Je crois qu'Agile est un type de SDLC itératif tandis que la spirale est un type de SDLC incrémental. Scrum est l'un des types d'Agile les autres sont DSDM/FDD/XP, etc. Tous les SDLC après la cascade ont suivi le même ensemble d'actes (analyse des exigences, conception, codage et test) dans certaines combinaisons différentes. Ensemble d'actions de base en séquentiel OR Iterative OR Incremental sont les mêmes.
En ce qui concerne Agile et Spiral, les deux ont un avantage commun.
First Agile est en fait un certain nombre de processus différents qui suivent une philosophie similaire. L'une des philosophies qui le rend différent est que chaque itération produit un produit fonctionnel. Il pourrait être décrit comme itératif et incrémentiel. Une grande importance est accordée au produit de travail et aux tests. Dans de nombreux modèles agiles, les tests précèdent le codage.
Dans le modèle en spirale, le nombre d'itérations est fixe, tandis que chaque phase d'un modèle agile peut être constituée d'un nombre illimité d'itérations.
Vous avez raison, il existe des similitudes, mais la philosophie sous-jacente fait la différence. Cette page explique plus en détail et compare l'agile à d'autres méthodes.
Vous pouvez dire que les processus agiles sont pilotés par les cas d'utilisation ... en mettant beaucoup l'accent sur les personnes, l'utilisateur final.
Je dirais que la spirale et l'agile sont similaires. Cependant, dernièrement, l'agilité est souvent apparemment devenue un système de propagande pour excuser le codage des cow-boys. C'est à dire.
Ce n'était jamais l'idée avec spirale. Je dirais que ce n'est pas vraiment le but d'Agile non plus, même si vous seriez surpris du nombre de fois où j'ai vu cela récemment. De plus en plus de développeurs/PM expérimentés commencent à voir la sagesse d'une approche plus équilibrée entre cascade et "agile" - peut-être que cela nous ramène tout simplement à la spirale.
Bien qu'il y ait quelques idées utiles dans l'espace mental Agile, il semble souvent que cela se soit manifesté de la part de personnes qui faisaient partie d'organisations qui avaient des méthodologies de conception de logiciels particulièrement lourdes/inutiles et qui étaient une réaction/une réaction excessive à cela.