J'étudie le génie logiciel cette année et je suis un peu confus au sujet de la question dans le titre.
Mon professeur et la référence ("Software Engineering A Practitioner Approach") distinguent 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 j'utilise différentes déclarations pour les définir. Je pense que pratiquement tous représentent le même modèle de processus.
Quelqu'un peut-il mieux expliquer les différents modèles?
Craig Larman a beaucoup écrit sur ce sujet et je suggère son article/ Développement itératif et progressif: une brève histoire (PDF) et son livre Développement agile et itératif: Guide du gestionnaire .
Voici comment je résumerais les choses:
Le développement incrémentiel est une pratique dans laquelle les fonctionnalités du système sont découpées en incréments (petites portions). À chaque incrément, une tranche verticale de fonctionnalités est fournie en passant par 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 (refaire) dans le développement de logiciels. C'est ce qu'on appelle le développement itératif et incrémental (IID).
Les termes évolution et évolutionnistes ont été introduits par Tom Gilb dans son livre Software Metrics publié en 1976, où il a écrit sur EVO, sa pratique d'IID (peut-être le le plus ancien). Le développement évolutif est axé sur la livraison rapide d’une valeur élevée aux parties prenantes et sur l’obtention et l’utilisation des commentaires des parties prenantes.
Dans Développement de logiciels: itératif et évolutif , Craig Larman le dit comme ceci:
Le développement itératif évolutif implique que les exigences, plan, estimations et solutions évoluent ou soient affinés au cours des itérations , plutôt que complètement définis et «figés» dans une phase de montée importante. effort de spécification avant avant le début des itérations de développement. Les méthodes évolutives sont compatibles avec le modèle de découverte imprévisible et de changement dans le développement de nouveaux produits.
Ensuite, nous discutons plus avant de {exigences évolutives} _, planification évolutive et adaptative, exécution évolutive. Vérifiez le lien.
Le modèle Spiral est une autre approche d'IID formalisée par Barry Boehm au milieu des années 80 comme une extension de la cascade afin de mieux soutenir le développement itératif et met un accent particulier sur la gestion des risques (par l'analyse itérative des risques).
Citations Développement itératif et incrémental: une brève histoire :
La référence de 1985 [dans les publications d’IID] était «Un modèle en spirale de Développement et amélioration de logiciels» (Bien que la citation la plus fréquente Date de 1986). Le modèle en spirale n'était Sans doute pas le premier cas dans lequel une équipe A hiérarchisé les cycles de développement par Risque: Gilb et IBM FSD avaient précédemment appliqué ou préconisé des variantes de cette idée, par exemple. Cependant, le modèle en spirale A formalisé et mis en évidence le concept Fondé sur le risque et la nécessité de recourir à une étape discrète De l'évaluation du risque dans chaque projet. itération.
Les méthodes agiles sont un sous-ensemble d'IID et de méthodes évolutives et sont préférées de nos jours.
Ces concepts sont généralement mal expliqués.
Incrémental est une propriété des produits de travail (documents, modèles, code source, etc.), ce qui signifie qu'ils sont créés petit à petit plutôt que en une seule fois. Par exemple, vous créez une première version de votre modèle de classe lors de l'analyse des exigences, puis augmentez-la après la modélisation de l'interface utilisateur, puis vous l'étendez davantage lors de la conception détaillée.
Évolution est une propriété des produits livrables, c’est-à-dire des produits de travail livrés aux utilisateurs. À cet égard, il s’agit d’un type particulier d’incrémental. Cela signifie que tout ce qui est livré est livré le plus tôt possible sous une forme initiale non fonctionnelle, puis rediffusé de temps en temps, chaque fois avec de plus en plus de fonctionnalités. Cela implique souvent un cycle de vie itératif .
[Un cycle de vie itératif , mais le chemin, fait référence aux tâches que vous effectuez (par opposition à "incrémental", qui fait référence aux produits; ceci est la vue adoptée par SEMAT ), et cela signifie que vous exécutez des tâches du même type encore et encore. Par exemple, dans un cycle de vie itératif, vous vous retrouveriez en train de concevoir, puis de coder, puis de tester des unités, puis de publier, puis de nouveau les mêmes choses encore et encore. Veuillez noter que itératif et incrémental ne s’impliquent pas; toute combinaison des deux est possible.]
Le modèle en spirale pour les cycles de vie est un modèle proposé par Barry Boehm qui combine des aspects de la cascade avec des avancées innovantes telles qu'une approche itérative. et contrôle de qualité intégré.
Pour les concepts de "produit du travail", "tâche", "cycle de vie", etc., veuillez vous reporter à ISO/IEC 24744 .
J'espère que cela t'aides.
Voici la définition de ipsis litteris de l'ISO 24748-1: 2016 (Gestion du cycle de vie du génie système et logiciel):
De nombreuses stratégies de développement différentes peuvent être appliquées aux projets de systèmes et de logiciels. Trois de ces stratégies sont résumées ci-dessous:
a) Passé. La stratégie de "passage unique", également appelée "cascade", consiste à exécuter le processus de développement en une seule fois. Simplistiquement: déterminez les besoins des utilisateurs, définissez les exigences, concevez le système, mettez en œuvre le système, testez, corrigez et livrez.
b) incrémental. La stratégie «incrémentielle» détermine les besoins de l'utilisateur et définit la configuration système requise, puis effectue le reste du développement en une séquence de générations. La première génération intègre une partie des capacités planifiées, la prochaine génération ajoute d'autres fonctionnalités, et ainsi de suite, jusqu'à ce que le système soit terminé.
c) évolutionnaire. La stratégie «évolutive» développe également un système dans les versions, mais elle diffère de la stratégie incrémentielle en reconnaissant que le besoin de l'utilisateur n'est pas complètement compris et que toutes les exigences ne peuvent pas être définies à l'avance. Dans cette stratégie, les besoins des utilisateurs et la configuration système requise sont partiellement définis à l’avance, puis affinés au cours de chaque construction.
J'espère que cela t'aides. Tati