web-dev-qa-db-fra.com

Existe-t-il une alternative viable à la méthodologie de développement agile?

Les deux méthodologies de développement logiciel prédominantes sont la cascade et l'agile. Lors de la discussion sur ces deux, il est souvent important de se concentrer sur les pratiques particulières qui les distinguent (pair de la programmation, TDD, etc. vs spécifices fonctionnelles, une conception à grande avant, etc.)

Mais les réelles différences sont beaucoup plus profondes, dans lesquelles ces pratiques proviennent d'une philosophie.

La cascade dit: Le changement est coûteux, de sorte qu'il devrait être minimisé.
Agile dit: Le changement est inévitable, alors rendez le changement bon marché.

Ma question est de savoir ce que vous pensez de TDD ou de spécifications fonctionnelles, la méthodologie de développement de la cascade est-elle vraiment viable?

Est-ce que quelqu'un pense vraiment que minimiser le changement de logiciel est une option viable pour ceux qui désirent de fournir des logiciels précieux? Ou la question est-elle vraiment sur le type de pratiques qui fonctionnent mieux dans nos situations pour gérer le changement inévitable?

47
Eric Wilson

Bien sûr, la cascade est viable. Cela nous a apporté à la lune!

Et c'est un entraîneur agile parlant ici!

À moins que vous ne puissiez identifier clairement les problèmes liés à la façon dont vous gérez vos projets, il n'y a pas de raison valable de changer.

Comme une alternative de agile et cascade méthodologies, je vais suggérer Votre méthodologie . Adapté à votre entreprise spécifique, votre équipe spécifique, vos produits, votre façon de travailler, votre culture de votre entreprise ... c'est pourquoi Scrum s'appelle un Cadre simple au lieu d'une méthodologie.

Voulant mettre en œuvre une méthodologie parce que quelqu'un sur un blog que vous aimez en parler est aussi stupide que de laisser des problèmes sans rien faire.

59
user2567

Vous commencez par dire:

Les deux philosophies de développement logiciel prédominantes sont des cascades et agiles.

C'est faux. Cette dichotomie a été construite par la communauté agile afin de créer un adversaire contre lequel se positionner eux-mêmes. Avant qu'Agile n'était en vogue, les gens avaient l'habitude de parler d'une myriade d'approches différentes de la construction de logiciels. Ils existent toujours aujourd'hui, mais ils sont souvent souvent regroupés dans un grand désordre appelé "cascade" par des partisans agiles.

J'ai utilisé Open/Metis et ses variantes depuis plus de 10 ans avec un grand succès. Il n'est certainement pas agile et certainement pas cascade. Des milliers de développeurs créent des logiciels extrêmement complexes pour des aéronefs, des systèmes critiques de vie, des banques, etc. à l'aide de méthodes non agiles chaque jour.

Alors oui, bien sûr, il existe une alternative viable à Agile.

21
CesarGon

Tout d'abord, je vais être en désaccord avec vos déclarations:

Waterfall dit: Le changement est coûteux, il devrait donc être minimisé.
[.____] Agile dit: Le changement est inévitable, alors apportez le changement bon marché.

Mon interprétation est:

Waterfall dit: Le client sait ce qu'ils veulent.
[.____] Agile dit: Le client ne sait pas ce qu'ils veulent, nous allons donc devoir faire quelques versions différentes.

La meilleure mise en œuvre de la "cascade" que j'ai jamais vue était un énorme projet d'intégration avec un très grand client financier et il y avait environ 40 sous-projets impliqués. Le paquet de bureau et de site Web que nous avons fourni n'était que 1 de ces 40 sous-projets. Pendant que je pensais qu'ils avaient échappé à l'argent d'autres personnes plutôt excessivement, ils avaient leurs trucs ensemble et conservaient plus de 40 navires différents qui se déplaçaient tous en formation. Le projet est allé en direct sur la date cible (la cible déplacée ne fois au cours du projet) et pendant que je pensais qu'ils auraient pu le faire plus frugalement et plus abondants, cela a été fait à temps et sur les spécifications. L'horaire de la nuit Go-Live était d'environ 100 pages de long et environ 40 de ces pages étaient des coordonnées de panique d'urgence de toutes sortes de personnes impliquées. J'ai été très impressionné par ce client.

Ou, vous pouvez faire ce que nous faisons, qui est couru et faites ce que le dernier rapport de plainte/bogue est, et appelez tandis agile.

21
Tangurena

Oui, diverses techniques de développement de logiciels sont toutes viables en fonction de votre domaine problématique. C'est "des chevaux pour les cours".

Par exemple, vous écrivez un logiciel pour contrôler une centrale nucléaire ou pour conduire la navette spatiale de la NASA. Ce type de domaine problématique est probablement mieux adapté à une approche de la cascade (ou même plus stricante), vous souhaitez régler toutes les problèmes à l'avant si possible (ou boom!).

Construire le dernier site Web 2.0/3.0/Buzzy Marketing UI? Agile est un bien meilleur moyen d'aller (yo besoin de commentaires rapides et de changement).

Il y a ce que j'appellerais des principes d'artisanat de logiciels qui peuvent toujours être appliqués, quelle que soit la méthode de la méthodologie:

  • Contrôle source
  • construire et CI
  • programmation en binôme
  • TDD
  • Je donne un ^% $$ &

et plus.

Quoi que vous fassiez, n'écoutez pas les zélets de chaque côté de l'équation, faites ce qui vous convient, votre équipe et votre domaine problématique.

10
Martijn Verburg

Pour répondre à la question, est-il une alternative viable, pour le logiciel peut-être pas - ou pas encore, au moins dans le cas général. Je pense qu'il se résume à la nature du logiciel. Logiciel, étant l'information, peut être reproduite gratuitement. Contrairement à un pont ou une maison. Cela signifie, avec la pratique, je pourrais obtenir de bons à la construction d'une maison et se trouver dans un domaine relativement simple. À ce moment-là pourquoi ne pas utiliser une approche one-shot?

Mais parce que le logiciel a un coût de duplication zéro, pourquoi voudriez-vous jamais faire la même chose deux fois? Logiciel tendance du secteur manufacturier. Donc, si tous les logiciels est la création d'un nouveau produit, puis nous fonctionnons toujours dans un domaine complexe où, dans une certaine mesure, nous ne savons pas ce que nous faisons. Ou il est cher de connaître à l'avance et il est moins cher de trouver en faisant. Dans un domaine risqué complexe, je veux essayer des expériences et augmentation et itérer.

Les centrales nucléaires et à la mouche par des systèmes de fil sont souvent donnés à titre d'exemples de logiciels que vous voulez faire cascade. Mais n'a pas été le système avionique de navette développé itérativement? Comme ce fut le système de contrôle de la circulation aérienne du Canada et des États-Unis?

Et si OPEN/Métis est itératif et incrémental alors, pour moi, ça sonne comme il a la philosophie agile, même si elle ne s'associe pas à d'autres pratiques communes agile.

2
AlanMJackson

Le problème découle de la complexité du logiciel. La cascade fonctionne bien pour des choses comme des ponts Building et des pavés routiers, car la physique ne change jamais. Bien sûr, à un moment donné, nous développerons une nouvelle asphalte, mais cela ne révolutionnera pas la manière dont les routes sont construites. L'acier dans la suspension d'un pont est soit la bonne taille, soit ce n'est pas le cas. Vous ne pouvez pas savoir klôt ou stub un vrai projet de construction comme si vous le pouvez avec des logiciels.

Changements de logiciels. Le logiciel change rapidement. La loi de Moore déclare que le nombre de transistors sur une puce double tous les 18-24 mois. Dans Corollaire, le nombre de lignes de code dans un programme double également. La complexité entre ces lignes de code augmente donc avec un bigo de quelque chose comme 2 ^ (2T).

Le logiciel change rapidement et la complexité augmente de manière exponentielle avec elle.

Lorsque vous contrôlez le coût du logiciel, vous souhaitez contrôler exponential facteurs, pas seulement multiplicatifs ou additifs. La modification du code augmente la complexité (et devient de manière exponentielle plus complexe que le projet s'allume) de manière exponentielle.

Changement est inévitable. La nature même de la programmation étend la langue avec des classes et des méthodes personnalisées, changeant ainsi la langue elle-même. Vous ne pouvez pas faire cela dans aucun autre type de discipline d'ingénierie (comme la construction de routes de construction. Vous n'exposez pas de nouveaux chaussons pour ouvrir une route à Kansas sur la Californie).

La méthode agile vous donne également une plate-forme pour la gestion des futurs versions et des correctifs de bugs. Vous avez déjà des outils de gestion, des processus, des employés formés, pour développer des logiciels versionnés. Avec une méthode de cascade, vous auriez besoin de recycler votre équipe pour gérer même des corrections de bogues mineures.

quoi qu'il en soit, mes 2 cents.

2
Stephen Furlani

La méthode de la cascade est la plus viable et est aussi philosophique que toute autre approche. N'oubliez pas que la cascade a été beaucoup plus longue qu'agile, mais note que ce n'est pas un argument d'affirmer si une méthodologie est mieux qu'un autre.

Vous utilisez la méthode de la cascade lorsque vous comprenez une compréhension très claire sur l'ensemble du domaine du problème et ce que le client souhaite réaliser dans un progiciel. Vous avez probablement cité un prix fixe lors de la prise du contrat et votre client comprend qu'ils ne peuvent pas s'écarter de toute exigence convenue. Votre processus est strictement celui qui circule à travers une série de signes entre les différentes étapes du développement, et c'est souvent le cas que chaque étape est complétée par une autre équipe - parfois même une entreprise différente - chacune desquelles peut ne pas nécessairement contact avec les autres. Vous voyez souvent des cascades appliquées à un bon effet dans les projets militaires et gouvernementaux lorsqu'ils sont soumis aux entrepreneurs extérieurs. Lorsque la cascade et d'autres approches similaires obtiennent une mauvaise réputation, c'est lorsque les développeurs rencontrent des problèmes, tels que des estimations médiocres, des horaires planifiés sans délai d'urgence, ni une compréhension médiocre ou incomplète du domaine problématique. La question n'est jamais vraiment une faute de la méthodologie, mais dans l'application de celui-ci.

La comparaison entre agile et toute méthodologie est fausse. Agile n'est pas une méthodologie, c'est une philosophie, ou il serait peut-être préférable de dire que c'est un terme de parapluie qui représente une autre façon de regarder comment vous allez développer des logiciels. Une méthodologie est simplement un outil et une telle valeur sera toujours inférieure aux individus et aux interactions qui sont au cœur de ce que cela signifie être agile .

Est-ce que quelqu'un pense vraiment que la minimisation des modifications du logiciel est une option viable pour ceux qui désirent de fournir des logiciels précieux?

Chaque occasion de minimiser le changement est précieuse pour le développeur et le client. Les modifications peuvent provoquer un calendrier ou des fonctionnalités à laisser de côté afin de respecter une planification. C'est ainsi que vous gérez les effets du changement qui impacte sur la valeur de vos projets.

ou est la question de savoir quel type de pratiques fonctionnent mieux dans nos situations pour gérer le changement inévitable?

Vos pratiques peuvent aider à la gestion du changement, ou ils peuvent ignorer complètement le changement. Ce qui compte, c'est la combinaison de vos pratiques de développement et la gestion de votre relation avec vos clients et si ces choses travaillent ensemble efficacement pour toutes les parties concernées.

Ceux d'entre nous qui sont à toutes fins utiles agile comprennent que vous choisissez une méthode qui fonctionne pour vous. Si vous aimez une approche particulière, suivez-la. Si cela ne correspond pas à vos besoins, changez-le. Comment vous allez sur le logiciel de fabrication qui s'efforce vraiment d'essayer de tirer le meilleur parti des ressources que vous avez à portée de main et de minimiser ces pratiques pouvant conduire votre projet à l'échec, et vous constatez souvent que vous devez modifier votre méthode pour convenir à la projet particulier à portée de main.

C'est vraiment une chose à dire "d'accord, alors maintenant nous sommes agiles", et totalement un autre à vivre et à travailler par la philosophie qu'Agile est. Que vous utilisiez la cascade, l'incrémental, la spirale, le Scrum, XP, la FDD ou toute autre méthode, vous êtes fondamentalement agile où vous valorisez:

  • Individus et interactions sur les processus et les outils
  • Logiciel de travail sur une documentation complète
  • Collaboration client sur la négociation de contrat
  • Répondre au changement au sujet d'un plan

et où vous apportez vos outils, votre méthode et votre expérience ensemble afin d'appliquer ces valeurs avec succès.

1
S.Robins

Oui, cascade, spirale, itérative et autres modèles de processus hybrides sont tous viables, mais le changement est inévitable. Le processus est plus que sur la manière de gérer le changement, et (je prétends que) le plus grand déterminant est la meilleure façon dont vous savez/comprendre le problème et que vous pouvez planifier et prédire avec précision.

Indiquant que "les deux méthodologies de développement de logiciels prédominantes sont des cascades et agiles" est désagréeneuse, car il existe un spectre de processus de développement de logiciels et de nombreuses entreprises synthétisent leur propre version du modèle de processus, changeant souvent pour un projet donné. Il y a plus de deux approches viables du développement logiciel. Bien que la cascade et l'agile ont tendance à tomber sur les extrémités opposées du spectre "changement", il est raisonnable de caractériser ces méthodologies concurrentes comme étant,

La cascade dit: Le changement est coûteux, de sorte qu'il devrait être minimisé.

Agile dit: Le changement est inévitable, alors apportez le changement bon marché.

Mais ce n'est pas toute l'histoire. L'entreprise doit être en mesure de planifier et de prédire, mais le logiciel est un processus de création et les estimations sont souvent erronées. Rappelez-vous le bon - Triangle bon marché? Ajoutez une quatrième dimension, processus et vous constatez que la réduction des efforts de processus peut également compresser le calendrier, lorsque les estimations se révèlent mal et qu'un projet est en danger de retard. Le logiciel est un processus fongible (mutable) et agile, itératif, spirale, toutes offrent la possibilité de fournir une fonctionnalité incrémentielle dans des intervalles plus courts.

Cascade et autres exigences Les modèles de processus pilotés ont des contrôles pour la manipulation des changements. Il est donc inexact de dire que la cascade minimise le changement, il est plus précis de dire que la cascade reconnaît et gère le changement et communique l'impact de ce changement (car le changement provoque l'impact de la planification lorsque vous avoir des exigences et des conceptions à l'avance). Lorsque vous construisez un produit ou avez besoin de définir complètement les exigences (fonctionnalité), vous êtes conduit à l'un des modèles hybrides.

Et lorsque les estimations sont fausses, traitez souvent (la quatrième étape du triangle de fer) est sacrifiée pour répondre à l'horaire.

0
ChuckCottrill