Question Quelle est la différence entre le modèle de processus logiciel incrémental, le modèle évolutif et le modèle en spirale?


J'étudie le génie logiciel cette année et je suis un peu confus au sujet de la question dans le titre.

Les deux de mon professeur et la référence ("Software Engineering A Practitioner Approach") différencient les trois titres en tant que modèles différents. Cependant, je ne vois pas de différence évidente car leurs méthodologies me ressemblent, mais en utilisant des déclarations différentes pour les définir. Je pense qu'ils représentent pratiquement tous le même modèle de processus.

Quelqu'un peut-il mieux expliquer les différents modèles?


18
2017-10-09 18:26


origine


Réponses:


Craig Larman a beaucoup écrit sur ce sujet et je suggère son célèbre article Développement itératif et incrémental: une brève histoire (PDF) et son livre Développement agile et itératif: Guide du gestionnaire.

Voici comment je résumerais les choses:

Développement incrémental

Le développement incrémental est une pratique dans laquelle les fonctionnalités du système sont découpées en tranches (petites portions). Dans chaque incrément, une tranche de fonctionnalités verticale est fournie en parcourant toutes les activités du processus de développement logiciel, des exigences au déploiement.

Le développement incrémental (ajout) est souvent utilisé avec le développement itératif (redo) dans le développement de logiciels. Ceci est appelé développement itératif et incrémental (IID).

Méthode évolutive

Les termes évolution et évolutionniste ont été introduits par Tom Gilb dans son livre Mesures logicielles publié en 1976 où il a écrit sur EVO, sa pratique de l'IID (peut-être la plus ancienne). Le développement évolutif se concentre sur la livraison rapide de la valeur aux parties prenantes et sur l'obtention et l'utilisation des commentaires des parties prenantes.

Dans Développement logiciel: itératif et évolutif, Craig Larman le dit ainsi:

Le développement itératif évolutif implique que le exigences, plan, devis et solution évoluer ou sont raffinés au fil des itérations, plutôt que complètement défini et "figé" dans un effort de spécification initial important avant que les itérations de développement ne commencent. Les méthodes évolutives concordent avec le modèle de découverte imprévisible et de changement dans le développement de nouveaux produits.

Et ensuite discute plus loin exigences évolutives, planification évolutive et adaptative, livraison évolutive. Vérifiez le lien.

Modèle en spirale

Le modèle en spirale est une autre approche de l’IID qui a été formalisée par Barry Boehm dans le le milieu des années 1980 comme une extension de la chute d'eau pour mieux soutenir le développement itératif et met un accent particulier sur la gestion des risques (à travers une analyse itérative des risques).

Citant Développement itératif et incrémental: une brève histoire:

Un repère de 1985 dans les publications de l'IID   était un modèle en spirale de Barry Boehm   Développement et amélioration de logiciels "   (bien que la citation plus fréquente   date de 1986). Le modèle en spirale était   sans doute pas le premier cas où un   l'équipe a priorisé les cycles de développement en   risque: Gilb et IBM FSD avaient précédemment   variations appliquées ou préconisées de   cette idée, par exemple. Cependant, le   modèle en spirale a formalisé et faire   en avant les itérations axées sur le risque   concept et la nécessité d'utiliser un discret   étape de l'évaluation des risques dans chaque   itération.

Et maintenant?

Les méthodes agiles sont un sous-ensemble des méthodes IID et évolutives et sont préférées de nos jours.

Les références


16
2017-10-09 21:57



Ces concepts sont généralement mal expliqués.

Incrémentale est une propriété des produits de travail (documents, modèles, code source, etc.) et signifie qu'ils sont créés petit à petit plutôt que d'un seul coup. Par exemple, vous créez une première version de votre modèle de classe lors de l'analyse des exigences, puis vous la complétez après la modélisation de l'interface utilisateur, puis vous l'étendez même lors de la conception détaillée.

Évolutionniste est une propriété des produits livrables, c'est-à-dire des produits de travail livrés aux utilisateurs, et à cet égard, il s'agit d'un type particulier de "produits incrémentiels". Cela signifie que tout ce qui est livré est livré le plus tôt possible sous une forme initiale, pas totalement fonctionnelle, puis réémise de temps en temps, chaque fois avec de plus en plus de fonctionnalités. Cela implique souvent un itératif cycle de la vie.

[Un itératif cycle de vie, mais la manière, se réfère aux tâches que vous effectuez (par opposition à "incrémentielle", qui se réfère aux produits; telle est la vision adoptée par SEMAT), et cela signifie que vous effectuez des tâches du même type encore et encore. Par exemple, dans un cycle de vie itératif, vous vous retrouvez à concevoir, à coder, puis à tester des unités, puis à relâcher, puis à répéter les mêmes choses. Veuillez noter que itératif et incrémental ne s’impliquent pas mutuellement; n'importe quelle combinaison des deux est possible.]

le modèle en spirale pour les cycles de vie est un modèle proposé par Barry Boehm cela combine des aspects de cascade avec des avancées innovantes telles qu'une approche itérative et un contrôle qualité intégré.

Pour les concepts de "produit de travail", "tâche", "cycle de vie", etc., veuillez consulter ISO / IEC 24744.

J'espère que cela t'aides.


7
2017-10-09 18:32



C'est le ipsis litteris définition de l'ISO 24748-1: 2016 (Gestion du cycle de vie des systèmes et de l'ingénierie logicielle):

Il existe de nombreuses stratégies de développement différentes qui peuvent être appliquées aux projets de systèmes et de logiciels. Trois de ces stratégies sont résumées ci-dessous:

a) une seule fois. La stratégie "one-through", également appelée "cascade", consiste à exécuter le processus de développement une seule fois. De manière simpliste: déterminez les besoins des utilisateurs, définissez les exigences, concevez le système, implémentez le système, testez, corrigez et diffusez.

b) Incrémental. La stratégie "incrémentielle" détermine les besoins des utilisateurs et définit les exigences du système, puis effectue le reste du développement dans une séquence de versions. La première version incorpore une partie des fonctionnalités planifiées, la prochaine génération ajoute plus de fonctionnalités, etc., jusqu'à ce que le système soit complet.

c) évolutif. La stratégie «évolutive» développe également un système en versions, mais diffère de la stratégie incrémentale en reconnaissant que le besoin de l'utilisateur n'est pas entièrement compris et que toutes les exigences ne peuvent pas être définies au préalable. Dans cette stratégie, les besoins des utilisateurs et les exigences du système sont partiellement définis, puis affinés dans chaque génération suivante.

J'espère que cela t'aides. Tati


0
2018-02-28 18:53