Vous êtes sur la page 1sur 27

L'approche 

incrémentale utilise un nombre défini d'étapes et le développement va du début


à la fin dans un chemin linéaire de progression. ... L'approche itérative n'a pas de nombre
d'étapes défini, mais le développement se fait par cycles.

Développement itératif et incrémental

Surprising Facts About La’Tecia Thomas You Probably Didn’t Know


Limelight Media

These Strange Ways Will Keep Your Relationship Strong Day To Day
Limelight Media

6 Uncommon Tips For Building A Healthy Relationship


Limelight Media

Le développement itératif et incrémentiel est toute combinaison


de conception itérativeou de méthode itérative et de modèle de construction
incrémentiel pour le développement.

L'utilisation du terme a commencé dans le développement de logiciels , avec une


combinaison de longue date des deux termes itératif et incrémental  [1] ayant été
largement suggérée pour les grands efforts de développement. Par exemple, le DOD-
STD-2167 de1985 [2] mentionne (dans la section 4.1.2) : « Pendant le développement
du logiciel, plusieurs itérations du cycle de développement du logiciel peuvent être
en cours en même temps. » et « Ce processus peut être décrit comme une approche
d'« acquisition évolutive » ou de « construction incrémentielle ». Dans le logiciel, la
relation entre les itérations et les incréments est déterminée par
le processus global de développement du logiciel .
Modèle de développement itératif
Aperçu

Une version simplifiée d'un cycle d'itération typique en gestion de projet agile
L'idée de base derrière cette méthode est de développer un système à travers des
cycles répétés (itératifs) et en plus petites portions à la fois (incrémentiel),
permettant aux développeurs de logicielsde tirer parti de ce qui a été appris lors du
développement de parties ou de versions antérieures du système. L'apprentissage
provient à la fois du développement et de l'utilisation du système, où les étapes clés
possibles du processus commencent par une simple mise en œuvre d'un sous-
ensemble des exigences logicielles et améliorent de manière itérative les versions
évolutives jusqu'à ce que le système complet soit mis en œuvre. À chaque itération ,
des modifications de conception sont apportées et de nouvelles capacités
fonctionnelles sont ajoutées. [3]

La procédure elle-même comprend l'étape d'initialisation, l'étape d'itération et la liste


de contrôle du projet. L'étape d'initialisation crée une version de base du système. Le
but de cette première implémentation est de créer un produit auquel l'utilisateur
peut réagir. Il doit offrir un échantillon des aspects clés du problème et fournir une
solution suffisamment simple pour être comprise et mise en œuvre facilement. Pour
guider le processus d'itération, une liste de contrôle de projet est créée qui contient
un enregistrement de toutes les tâches qui doivent être effectuées. Il comprend des
éléments tels que les nouvelles fonctionnalités à mettre en œuvre et les domaines de
refonte de la solution existante. La liste de contrôle est constamment révisée à la
suite de la phase d'analyse.

L'itération implique la refonte et la mise en œuvre de l'itération doit être simple,


directe et modulaire, prenant en charge la refonte à ce stade ou en tant que tâche
ajoutée à la liste de contrôle du projet. [ clarification nécessaire ] Le niveau de détail de la
conception n'est pas dicté par l'approche itérative. Dans un projet itératif léger, le
code peut représenter la principale source de documentation du système ;
cependant, dans un projet itératif critique, un document de conception de
logiciel formel peut être utilisé. L'analyse d'une itération est basée sur les
commentaires des utilisateurs et les fonctions d'analyse de programme disponibles.
Cela implique une analyse de la structure, de la modularité, de la convivialité , de la
fiabilité, de l'efficacité et de la réalisation des objectifs. La liste de contrôle du projet
est modifiée en fonction des résultats de l'analyse.

Développement itératif.
Étapes

Le développement incrémentiel découpe la fonctionnalité du système en incréments


(parties). Dans chaque incrément, une tranche de fonctionnalité est fournie par le
biais d' un travail interdisciplinaire , des exigences au déploiement . Le processus
unifiéregroupe les incréments/itérations en phases : création, élaboration,
construction et transition.

 Le lancement identifie la portée du projet, les exigences


(fonctionnelles et non fonctionnelles) et les risques à un
niveau élevé mais avec suffisamment de détails pour que
le travail puisse être estimé.
 L'élaboration fournit une architecture de travail qui
atténue les principaux risques et répond aux exigences
non fonctionnelles.
 La construction remplit progressivement l'architecture
avec du code prêt pour la production produit à partir de
l'analyse, de la conception, de la mise en œuvre et des
tests des exigences fonctionnelles.
 La transition fournit le système dans l'environnement
d'exploitation de production.

Chacune des phases peut être divisée en 1 ou plusieurs itérations, qui sont
généralement limitées dans le temps plutôt que dans les fonctionnalités. Les
architectes et les analystes travaillent une itération avant les développeurs et les
testeurs pour garder leur backlog de travail-produit plein.

Utilisation/Historique

De nombreux exemples d'utilisation précoce sont fournis dans l'article de Craig


Larman et Victor Basili "Iterative and Incremental Development: A Brief History" [4], l' un
des premiers étant le projet Mercury des années 1960 de la NASA .

Certains de ces ingénieurs de Mercury ont ensuite formé une nouvelle division au


sein d'IBM , où « un autre exemple précoce et frappant d'un succès majeur de l'IID
[était] le cœur même du logiciel de la navette spatiale de la NASA, le principal
système logiciel avionique, qu'ils [ils] ont construit à partir de 1977. à 1980. L'équipe a
appliqué l'IID dans une série de 17 itérations sur 31 mois, en moyenne environ huit
semaines par itération. Leur motivation pour éviter le cycle de vie en cascade était
que les exigences du programme de navette ont changé au cours du processus de
développement logiciel. [4]

Certaines organisations, comme le département américain de la Défense, ont une


préférence pour les méthodologies itératives, à commencer par MIL-STD-498 «
encourageant clairement l'acquisition évolutive et l'IID ».

L'instruction DoD 5000.2 publiée en 2000 indiquait une nette préférence pour l'IID :

Il existe deux approches, évolutive et en une seule étape [cascade], pour atteindre la
pleine capacité. Une approche évolutive est privilégiée. … [Dans cette] approche, la
capacité ultime fournie à l'utilisateur est divisée en deux blocs ou plus, avec des
incréments croissants de capacité... le développement logiciel doit suivre un
processus de développement en spirale itératif dans lequel les versions logicielles en
constante expansion sont basées sur l'apprentissage de développement antérieur.
Cela peut aussi se faire par phases.

Les révisions récentes de DoDI 5000.02 ne font plus référence au « développement en


spirale », mais préconisent l'approche générale comme référence pour les
programmes de développement/d'approvisionnement à forte intensité logicielle. [5] En
outre, l' Agence des États-Unis pour le développement international (USAID) utilise
également une approche de développement itérative et incrémentielle de son cycle
de programmation pour concevoir, suivre, évaluer, apprendre et adapter les projets
de développement international avec une approche de gestion de projet qui met
l'accent sur l'intégration des stratégies de collaboration, d'apprentissage et
d'adaptation pour itérer et adapter la programmation. [6]

Contraste avec le développement de la cascade


La cause principale de l'échec des projets de développement logiciel est le choix du
modèle, il doit donc être fait avec le plus grand soin. [ vague ] [7]

Par exemple, le paradigme de développement Waterfall complète les produits de


travail à l'échelle du projet de chaque discipline en une étape avant de passer à la
discipline suivante dans une étape suivante. La valeur métier est délivrée en une seule
fois, et uniquement à la toute fin du projet, alors que le retour en arrière [ clarification
nécessaire ]
 est possible dans une approche itérative. En comparant les deux approches,
certains modèles commencent à émerger : [ citation nécessaire ]

 Implication de l'utilisateur : Dans le modèle en


cascade, l'utilisateur est impliqué dans deux étapes du
modèle, à savoir les exigences et les tests d'acceptation,
et éventuellement la création de matériel de formation
des utilisateurs. Alors que dans le modèle incrémental, le
client est impliqué à chaque étape.
 Variabilité : Le logiciel n'est livré à l'utilisateur qu'une
fois l'étape de construction du cycle de vie terminée,
pour les tests d'acceptation par l'utilisateur. D'autre part,
chaque incrément est livré à l'utilisateur et après
l'approbation de l'utilisateur, le développeur est autorisé
à passer au module suivant.
 Ressources humaines : Dans le modèle incrémental,
moins de personnel est potentiellement requis par
rapport au modèle en cascade.
 Limitation de temps : Un produit opérationnel est livré
après des mois alors que dans le modèle incrémental le
produit est remis à l'utilisateur en quelques semaines.
 Taille du projet : le modèle en cascade ne convient pas
aux petits projets, tandis que le modèle incrémental
convient aux petits comme aux grands projets.

Directives de mise en œuvre

Les lignes directrices qui guident la mise en œuvre et l'analyse du logiciel


incluent : [ citation nécessaire ]

 Toute difficulté dans la conception, le codage et le test


d'une modification devrait signaler la nécessité d'une
refonte ou d'un recodage.
 Les modifications doivent s'intégrer facilement dans des
modules isolés et faciles à trouver. S'ils ne le font pas,
une refonte est peut-être nécessaire.
 Les modifications apportées aux tableaux doivent être
particulièrement faciles à effectuer. Si une modification
de table n'est pas effectuée rapidement et facilement,
une refonte est indiquée.
 Les modifications devraient devenir plus faciles à faire au
fur et à mesure que les itérations progressent. S'ils ne le
sont pas, il y a un problème de base tel qu'un défaut de
conception ou une prolifération de correctifs .
 Les correctifs devraient normalement être autorisés à
exister pour une ou deux itérations seulement. Des
correctifs peuvent être nécessaires pour éviter de
reconcevoir pendant une phase de mise en œuvre.
 La mise en œuvre existante doit être analysée
fréquemment pour déterminer dans quelle mesure elle
est à la hauteur des objectifs du projet.
 Les installations d'analyse de programme doivent être
utilisées chaque fois qu'elles sont disponibles pour
faciliter l'analyse des implémentations partielles.
 La réaction des utilisateurs doit être sollicitée et analysée
pour des indications de déficiences dans la mise en
œuvre actuelle.

Utilisation dans le matériel et les systèmes embarqués


Alors que le terme développement itératif et incrémental a commencé dans l'industrie
du logiciel, de nombreux efforts de développement de matériel et de logiciels
embarqués utilisent des techniques itératives et incrémentielles.

On peut en voir des exemples dans un certain nombre d'industries. Un secteur qui a
récemment été considérablement touché par ce changement de mentalité a été l'
industrie des lancements spatiaux , avec de nouvelles forces concurrentielles
substantielles à l'œuvre résultant d'une innovation technologique plus rapide et plus
étendue résultant de la formation d' entreprises privées poursuivant le lancement
spatial. Ces sociétés, telles que SpaceX [8] et Rocket Lab , [9] fournissent désormais
toutes deux des services commerciaux de lancement orbital au cours de la dernière
décennie, ce que seuls six pays avaient fait avant il y a une décennie [10] . Nouvelle
innovation dans les approches de développement technologique, les prix et les offres
de services, y compris la capacité qui n'existe que depuis 2016 de voler dans l'espace
sur une scène d'appoint (réutilisable) précédemment volée, diminuant encore le prix
d'accès à l'espace. [11] [8]

SpaceX a été explicite sur ses efforts pour introduire des pratiques de conception
itératives dans l'industrie spatiale et utilise la technique sur les engins spatiaux, les
lanceurs, l'électronique et l'avionique, et les opérations de matériel de vol
opérationnel. [12]

Alors que l'industrie a commencé à changer, d'autres concurrents de lancement


commencent également à modifier leurs pratiques de développement à long terme
avec les agences gouvernementales . Par exemple, le grand fournisseur de services de
lancement américain United Launch Alliance (ULA) a lancé en 2015 un projet d'une
décennie visant à restructurer son activité de lancement - en réduisant deux véhicules
de lancement à un - en utilisant une approche itérative et incrémentielle pour arriver
à un système partiellement réutilisable. et un système de lancement beaucoup moins
coûteux au cours de la prochaine décennie. [13]

Voir également
 Gestion adaptative
 Développement logiciel agile
 Intégration continue
 DevOps § Adoption incrémentielle
 Méthode de développement de systèmes dynamiques
 Processus de développement de logiciels axé sur les
objectifs
 Design d'interaction
 Kaizen
 Cadre de solutions Microsoft
 Analyse et conception orientées objet
 OpenUP/Basique
 PDCA
 Développement rapide d'applications
 Libérer tôt, libérer souvent

Remarques
1. ^ Larman, Craig (juin 2003). "Développement itératif et
incrémentiel: Une brève
histoire"  (PDF)  .  Ordinateur  .  36  (6)  : 47-56. doi :
10.1109/MC.2003.1204375 . ISSN   0018-9162 . S2CID
9240477 .  Nous faisions du développement incrémental
dès 1957, à Los Angeles, sous la direction de Bernie
Dimsdale [au ServiceBureau Corporation d'IBM]. Il était
un collègue de John von Neumann , alors peut-être l'a-t-il
appris là-bas, ou l'a-t-il supposé tout à fait naturel. Je me
souviens d'Herb Jacobs (principalement, bien que nous
ayons tous participé) au développement d'une grande
simulation pour Motorola, où la technique utilisée était,
pour autant que je sache...'
2. ^ DOD-STD-2167 Développement de logiciels de
systèmes de défense (04 juin 1985)sur everyspec.com
3. ^ Farcic, Viktor (21 janvier 2014). «  Modèles de
développement logiciel  : développement itératif et
incrémental  » .  Conversations technologiques  .
4. ^ un b Développement itératif et incrémentiel : Une
brève histoire , Craig Larman et Victor Basili, IEEE
Computer, juin 2003
5. ^ Kendall, Franck ; Gilmore, J. Michael; Halvorsen, Terry
(2017-02-02). « Fonctionnement du système d'acquisition
de la défense »  (PDF)  .  Émissions du DoD  . Sous-
secrétaire à la Défense pour les acquisitions, la
technologie et la logistique. p. 12-14. Archivé de
l'original  (PDF)  le 2017-08-09  . Récupéré le  09/08/2017  .
6. ^ USAID. « Politique opérationnelle du cycle de
programme du chapitre 201 de l'ADS » . Récupéré le 19
avril 2017
7. ^ "Différence entre la cascade et le modèle incrémental" .
19 mai 2016.[ lien mort permanent ]
8. ^ un b Belfiore, Michael (9 décembre 2013). "Le
Fusée" .  Politique étrangère  . Consulté le  11
novembre  2018  .
9. ^ "Regard intérieur exclusif sur la nouvelle Mega Factory
auparavant secrète de Rocket Lab  !" .  Astronaute de tous
les jours  . 11 octobre 2018  . Consulté le  11
novembre  2018  .
10. ^ Clark, Stephen (28 septembre 2008). "Un doux succès
enfin pour Falcon 1 Rocket" .  Vol spatial maintenant  .
Consulté le  11 novembre  2018  .  la première fusée à
carburant liquide développée en privé à atteindre avec
succès l'orbite.
11. ^ Berger, Éric (2018-06-25). «  La fusée russe Proton, qui
précède Apollo, cessera enfin de voler. Des problèmes
techniques, la montée en puissance de SpaceX sont des
facteurs contributifs  » .  arsTechica  . Récupéré
le  26/06/2018  .  l'essor rapide d'alternatives à faible coût
telles que la fusée Falcon 9 de SpaceX, a fait passer le
nombre de lancements de Proton au cours d'une année
donnée de huit environ à un ou deux.
12. ^ Fernholz, Tim (21 octobre 2014). "Ce qu'il a fallu à
SpaceX d'Elon Musk pour perturber Boeing, dépasser la
NASA et devenir une entreprise spatiale
sérieuse" .  Quartz  . Consulté le  11 novembre  2018  .  Mais
SpaceX s'est toujours considéré comme une entreprise
technologique, et ses affrontements avec la NASA ont
souvent pris une forme que les développeurs d'ordinateurs
– ou toute personne familière avec le déploiement difficile
de Healthcare.gov – reconnaîtraient comme
générationnelles. SpaceX a suivi un processus de
conception itératif, améliorant continuellement les
prototypes en réponse aux tests. La gestion traditionnelle
des produits nécessite un plan robuste exécuté jusqu'à son
achèvement, une recette pour les dépassements de coûts.
13. ^ Merci, Mike (2015-04-24). "Évolution d'un plan  : les
dirigeants de l'ULA énoncent la logique derrière les choix
de conception de Vulcan" .  Nouvelles de l'espace  .
Consulté le  25 avril  2015  .  L'ULA a annoncé le 13 avril
qu'elle développerait une fusée baptisée Vulcan en
utilisant une approche incrémentale dont la première
itération est essentiellement un Atlas 5 équipé d'un
nouveau premier étage.

Les références
 Dr Alistair Cockburn (mai 2008). « En utilisant à la fois le
développement incrémentiel et itératif »  (PDF)  .  STSC
CrossTalk  . Centre d'assistance technologique logicielle de
l' USAF .  21  (5)  : 27-30. ISSN   2160-1593 . Archivé de
l'original  (PDF)  le 2012-05-26  . Récupéré le  20/07/2011  .
 Craig Larman, Victor R. Basili (juin 2003).
"Développement itératif et incrémentiel: Une brève
histoire"  (PDF)  .  Ordinateur IEEE  . Société informatique
IEEE.  36  (6)  : 47-56. doi : 10.1109/MC.2003.1204375 .
ISSN   0018-9162 . S2CID   9240477  . Récupéré le  2009-
01-10  .

Surprising Facts About La’Tecia Thomas You Probably Didn’t Know


Limelight Media

6 Uncommon Tips For Building A Healthy Relationship


Limelight Media
These Strange Ways Will Keep Your Relationship Strong Day To Day
Limelight Media

Holly Luyah Didn’t Just Get Famous From Instagram - What Else?
Herbeauty

Share to Facebook
, Number of shares
Share to TwitterShare to WordPressShare to BloggerMore AddThis Share options
, Number of shares
SH AR ES

Did you mean: activité du modèle itératif et incrémental

Search Results
Processus Iteratif et incrémental
Les approches de développement logiciel telles qu'Extreme Programming et Scrum peuvent être
qualifiées d'itérative et incrémentale. Un processus iteratif est un processus dans lequel une
série d'opérations est répétée de manière cyclique, avec l'intention de se rapprocher de plus en
plus d'un certain résultat désiré

Skip to main contentAccessibility help


Accessibility feedback

cycle de vie d'un

Sign in
Search modes
All
Images
News
Videos

Tools

About 4,870,000 results (0.58 seconds) 


Search Results
Web results

Cycle de vie du logiciel


https://pages.lip6.fr › Souheib.Baarir › isi › Cycle...
PDF
by B Bouzy · 2001 · Cited by 2 — Documentation et cycle de vie du logiciel. Bruno Bouzy. 3.
6/15/01. 2. GENERALITES SUR UNE METHODE CLASSIQUE DE DEVELOPPEMENT.
DE LOGICIELS.
17 pages

People also ask


Quel est le cycle de vie d'un logiciel informatique ?
Définition du “Cycle de vie d'un logiciel”

Le “cycle de vie d'un logiciel” (en anglais software lifecycle) désigne toutes les


étapes du développement d'un logiciel, de sa conception à sa disparition.

Quelles sont les étapes du cycle de vie d'un logiciel ? - SOKEO


https://sokeo.fr › cycle-de-vie-logiciel-2

Search for: Quel est le cycle de vie d'un logiciel informatique ?


Quelles sont les étapes du cycle de vie d'un logiciel ?






Quel est le cycle de vie d'un logiciel le plus utilisé ?

Quel cycle de développement n'existe pas ?


Quelles sont les étapes d'installation d'un logiciel ?

C'est quoi un bon logiciel ?

Feedback

Web results

2.DIFFERENTS MODELES DE CYCLE DE VIE


http://users.polytech.unice.fr › ~hugues › chapitre2

PDF
2.2.12 Les tâches d'un projet logiciel par activités et par phases ................... 5. 2.3. CYCLE DE
VIE DES LOGICIELS EN CASCADE ET EN V..
25 pages

Cycle de vie du logiciel et bonnes pratiques de ...


http://perso.telecom-paristech.fr › ~vignes › BDL

PDF
Cycle de vie du logiciel et bonnes pratiques de développement. Brique BDL. Module Gestion de
Projets Logiciels. Sylvie Vignes.
42 pages

Cours Cycle de vie du logiciel gratuit en PDF - BestCours


https://www.bestcours.com › 286-cyc...

· Translate this page


Jun 26, 2012 — Support de cours PDF à télécharger gratuitement sur le cycle de
vie du logiciel(Spécification, Planification, Conception, Développement, ...

Les étapes du cycle de vie - Laboratoire d'Informatique et ...


http://www.lsis.org › Djamal_Habet › POOc

PDF
Problématique du développement logiciel. D'où la nécessité de suivre : 1. Un processus bien
défini : le cycle de vie d'un logiciel.
24 pages

Cycle de vie du logiciel cours pdf - PDFbib.com


https://pdfbib.com › 286-cours-cycle...

· Translate this page


Téléchargez ou consultez le cours en ligne Cycle de vie du logiciel, tutoriel PDF gratuit en 103
pages. Ce cours est de niveau Avancé et taille 359.56 Ko.

Cours Génie Logiciel


https://learndz.files.wordpress.com › 2016/11 › co...

PDF
Cycle de vie : ensemble des étapes de la réalisation, de l'énoncé des besoins à la maintenance
ou au retrait du logiciel. L'origine de ce découpage provient du ...
21 pages

Génie Logiciel - Imagine


https://imagine.enpc.fr › slides › GenLogCycleVie

PDF
Cycle de vie du logiciel. – Définition des besoins (cahier des charges). – Analyse des besoins
(spécification). – Planification (gestion de projet).
103 pages

Cycle de vie du logiciel cours à télécharger en pdf - CoursPDF ...


https://www.courspdf.net › 286-cycle...

· Translate this page


Support de cours sur Support de cours PDF à télécharger gratuitement sur le cycle de
vie du logiciel(Spécification, Planification, Conception, Développement ...

Chapitre 1 Les Étapes Du Cycle de Vie D'un Logiciel - Scribd


https://www.scribd.com › document

· Translate this page


Les processus (modèles de cycle de vie). Les logiciels (Les grands)qui sont. fabriquées par un
grand nombre de gens doivent être fabriquées en

Related searches
Cycle de vie en V

Feedback

cycle de vie d'un projet informatique

cycle de vie d'un produit

les étapes d'un projet

cycle de vie du développement logiciel

génie logiciel cours 1ere année

cycle de vie en cascade

comment devenir un génie en informatique pdf

Page navigation

123456789 1 Next
0

Footer links

Chad

N'Djamena
 - From your IP address
 - Update location

HelpSend feedbackPrivacyTerms

 type de projet adapté du modèle itératif et incrémental


Résultats de recherche
Résultats Web

Utiliser les développements incrémental et itératif ensemble


https://www.les-traducteurs-agiles.org › 2009/11/16 › u...

1.
16 nov. 2009 — Le modèle qui vient d'être décrit est celui utilisé par la plupart
des projetsactuels, Agile ou non. C'est une stratégie par étape qui a connu ...

Les traducteurs agiles


FAQ Traducteurs Traductions Traductions par catégories

Utiliser les développements


incrémental et itératif ensemble
Publié le 16 - 11 - 2009

Le développement incrémental est nettement différent du développement itératif


dans ses objectifs ainsi que dans ses implications dans la gestion de projet. Les
équipes rencontrent des problèmes en faisant l’un et pas l’autre, ou en essayant de
les gérer de la même manière. Cet article explique leurs différences et comment les
utiliser ensemble.

Les développements incrémental et itératif sont antérieurs au mouvement Agile. Je


les ai d’abord étudiés lors de mes recherches pour le groupe IBM Consulting en
1991. A cette époque, j’ai appris comment ils différaient en termes d’objectif et de
nature, et, finalement, comment il fallait les utiliser.

Ces différences semblent avoir été oubliées depuis. Je vois maintenant des équipes
qui souhaiteraient faire de l’Agile et qui souffrent de ne faire que du développement
incrémental, là où j’avais l’habitude de voir des projets, basés sur le modèle en
cascade, souffrant de ne faire aucun des deux ou seulement du développement
itératif.

Les deux sont nécessaires. Les gens ont besoin d’apprendre à les utiliser
séparément et ensemble.
Définitions, s’il vous plaît !
Brièvement :

 Le développement incrémental est une stratégie par étape et planifiée dans


lequel différentes parties du système sont élaborées à différents moments ou
degrés et intégrées dès qu’elles sont terminées. La stratégie alternative au
développement incrémental est de développer l’ensemble du système avec une
intégration “big-bang” à la fin.
 Le développement itératif est une stratégie de remaniement (~rework) planifié
dans lequel du temps est réservé pour réviser et améliorer certains aspects du
système. La stratégie alternative au développement itératif est de prévoir d’avoir
tout bon du premier coup.

Il est important de remarquer qu’aucune stratégie ne suppose, requiert, ou implique


l’existence de l’autre. Il est possible de n’en utiliser qu’une seule, les deux, ou
aucune.

Dans la pratique, il est conseillé d’utiliser les deux à doses raisonnables. Si vous
faites seulement de l’incrémental, il pourra y avoir une surprise désagréable à la fin
quand la qualité ne sera pas au rendez-vous. Si vous faites de l’itératif sur
l’ensemble du système, les effets dominos dus aux nombreux changements pourront
facilement vous faire perdre le contrôle du projet.

Ce n’est pas le modèle en cascade


Tout d’abord, nous avons besoin d’éviter de tomber dans le piège du “ça ressemble
au modèle en cascade”.

Dans tout développement, qu’il s’agisse de prototypage, Agile, en spiral, ou en


cascade, nous décidons d’abord de ce qu’il faut construire; nous concevons et
programmons ensuite quelque chose. Seulement, après avoir fait un peu de
programmation (généralement plus que ce que nous avions décidé initialement),
nous nous préparons à déboguer le système. C’est seulement une fois que le
système fonctionne que l’on peut valider le fait que ce que nous avons construit est
la bonne chose et que c’est correctement construit. Ce cycle est illustré à la figure 1.

 Figure 1:
Le mode de validation en V est un acte normal de la vie.
La figure 1 devrait vraiment être lue à l’envers, comme un diagramme de
dépendance : nous ne pouvons pas livrer tant que nous n’avons pas débogué et
validé; nous ne pouvons pas déboguer tant que nous n’avons pas codé; nous ne
pouvons pas coder tant que nous n’avons pas conçu; nous ne pouvons pas
concevoir tant que nous n’avons pas décidé quoi concevoir.

En d’autres termes, la validation en V est un acte normal de la vie, et nous aurons à


le traiter aussi bien dans le développement incrémental que itératif.

Développement incrémental
Dans le développement incrémental, nous découpons les tâches en petits morceaux
et les planifions pour être développées au fil du temps et intégrées dès qu’elles sont
terminées. Les figures 2 à 4 illustrent ce cycle.

Imaginez que les premiers blocs du dessus représentent divers composants de


l’interface utilisateur, les blocs du milieu représentent le middleware, et les blocs du
bas représentent les composants du back-end ou de la base de données.

La figure 2 montre que, lors du premier incrément, un ensemble complet de


fonctionnalités est construit de l’interface utilisateur (IHM) jusqu’au back-end (et dans
ce cas, des morceaux supplémentaires de l’interface utilisateur sont également
construits). Dans le second incrément (figure 3), nous voyons que la fonctionnalité
supplémentaire qui est ajoutée concerne toutes les couches du système. Cela peut
constituer un stade d’avancement suffisant pour déployer le système tel qu’il est pour
les utilisateurs finaux et commencer à en faire bénéficier le métier. Dans le troisième
incrément (figure 4), le reste du système est complété.

Figure 2 : Développement incrémental – Niveau 1


Figure 3 : Développement incrémental – Niveau 2

Figure 4 : Développement incrémental – Niveau 3

Le modèle qui vient d’être décrit est celui utilisé par la plupart des projets actuels,
Agile ou non. C’est une stratégie par étape qui a connu beaucoup de succès.

L’erreur que font aujourd’hui les gens c’est d’oublier d’itérer. Ils ne prennent pas le
temps d’apprendre à partir de ce qu’ils ont mal compris quand ils ont décidé de ce
qu’il fallait construire au tout début et de réfléchir à ce qui devait être amélioré dans
la phase de conception.

Cette erreur aboutit au classique échec de livrer des choses que les gens ne veulent
pas. Je tiens à souligner que, même de nombreuses équipes de projet Agile
commettent cette erreur.

La stratégie corrective est le développement itératif.

Développement itératif
Avec le développement itératif, nous réservons du temps pour améliorer ce que nous
avons.

Les spécifications et les interfaces utilisateurs sont historiquement connues pour être
génératrices de tâches d’adaptation, mais ce ne sont pas les seules. La technologie,
l’architecture et les algorithmes sont également susceptibles d’avoir besoin
d’inspection et d’adaptation. La sous-performance est souvent mal anticipée dans les
premières phases de conception, et nécessite une grosse adaptation de
l’architecture.

Si l’on regarde le modèle de validation en V, la différence est qu’au lieu d’intégrer et


peut-être même de livrer le logiciel à la fin du cycle, on “l’examine” sous divers
angles : était-ce la bonne chose à développer ? les utilisateurs apprécient-ils la façon
dont cela fonctionne ? est-ce-que cela fonctionne assez rapidement ?

La figure 5 montre le modèle de validation en V pour un cycle de développement


itératif.

Figure 5: Modèle de validation en V pour un cycle itératif

Il y a deux stratégies de remaniement spécialisées et particulières :

 Développez le système aussi bien que possible en ayant à l’esprit que, si c’est
suffisamment bien fait, les modifications seront minimes et pourront être
rapidement intégrées.
 Développez le moins possible avant que cela soit soumis à évaluation, en ayant
à l’esprit que vous aurez limité le gaspillage lorsque vous aurez la bonne
information.

Il y a des aficionados des deux approches. En effet, les deux fonctionnent bien dans
certaines circonstances. Un chef de projet doit apprendre à utiliser les deux.

Ce qui suit est une utilisation efficace de la première stratégie : un musicien et un


photographe ont réalisé un DVD ensemble. Le musicien a fait un enregistrement de
quatre minutes. Le photographe a remarqué qu’un petit ensemble de transitions
entre les diapositives ne correspondait pas à la musique. Le musicien a uniquement
ré-enregistré ces parties et les a insérées dans l’enregistrement.
Pour démontrer une utilisation efficace de la deuxième stratégie, j’adapte l’exemple
de Jeff Patton concernant la peinture de la Joconde et en imaginant un débat entre
Léonard de Vinci et son client (figures 6 à 8).

Léonard dessine une esquisse de ce qu’il compte faire (figure 6) et se dirige vers son
client en demandant : “Est-ce que ça va vous aller ?”

Figure 6 : Développement itératif de la Joconde, étape 1

Le client répond : “Non, non, non. Elle ne peut pas regarder à droite, elle doit
regarder vers la gauche !”. Heureusement, Léonard n’a pas trop travaillé pour le
moment, donc c’est facile à changer.

Léonard s’en va, renverse l’image, rajoute un peu de couleur et des détails (figure 7).
Il revient voir le client : “J’en ai à peu près réalisé le tiers. Qu’en pensez-vous
maintenant ?”
Le client répond : “Non, vous ne pouvez pas lui faire une tête de cette taille !
Proportionnez sa tête avec le reste de son corps.” (Oui, ils avaient l’équivalent de
Photoshop et des options de retouche d’image à l’époque – cela s’appelait
“Léonard”).

Léonard s’en va, termine le tableau (Figure 8) et envoie sa facture au client.


Figure 8 : Développement itératif de la Joconde, étape 3

Le client dit : “Vraiment, j’aurai préféré qu’elle ait les yeux plus gros, mais d’accord, je
vous paye, disons-que c’est terminé.”

Ce que je voudrais souligner c’est que les deux stratégies sont valides et les deux
portent l’étiquette “itératif”. Dans les deux cas, des remaniements ont été effectués
sur une partie existante du système.

Fusionnez les deux


Les développements incrémental et itératif s’associent bien ensemble. En se basant
sur le modèle de validation en V, nous pouvons le réorganiser en alternant des Vs
“incrémental” avec des Vs “itératif” de diverses manières pour obtenir un nombre
varié de stratégies mixant de l’itératif et de l’incrémental comme l’illustre la figure 9.
Figure 9 : Associer les développements itératif et incrémental

La figure 9 montre une stratégie dans laquelle chaque cycle incrémental comprend
deux étapes d’examen/adaptation du système avant que le résultat soit intégré et
prêt à livrer. La figure montre trois phases de développement incrémental, chaque
incrément est intégré une fois terminé, le tout est ensuite prêt à être déployé.

Ceci est un, mais seulement un, des moyens d’associer les deux. Tant qu’ils sont
clairement dans l’état “Examen” ou “Prêt à être livré” (ou “Prêt à être déployé”, ce qui
est encore mieux), les Vs peuvent être combinés dans tous les sens.

La figure 9 offre un avantage supplémentaire en décrivant les incréments et


itérations sous forme de Vs : le diagramme obtenu peut facilement s’insérer dans un
calendrier. Chaque marque “Examinez”, “Intégrez” ou “Livrez” est un jalon dans le
planning du chef de projet. Cela permet au chef de projet de visualiser à l’avance et
de maîtriser le temps consacré aux adaptations. De cette façon, nous avons mis à
profit le modèle de validation en V avec notre stratégie de développement
incrémental-itératif.

Gérez les deux


A première vue, les deux se ressemblent. Pourtant, ils doivent être gérés
différemment. Les incréments sont faciles à repérer, facile à séparer, relativement
facile à estimer, et facile à planifier. Toute la stratégie peut être résumée en deux
étapes :

 Divisez le système en fonctionnalités complètes et utiles (ou toute autre façon de


découper le système, cela reste votre choix).
 Réalisez-les les unes après les autres.

Les itérations sont considérablement plus difficiles. Elles sont difficiles à séparer,
difficiles à estimer, et difficiles à planifier. Bien sûr, être difficile ne signifie pas que
vous n’avez pas à faire toutes ces choses. Vous devez les faire, et répondre aux
trois questions suivantes :

 Quels éléments doivent bénéficier de périodes d’adaptations planifiées ?


 Combien de périodes d’adaptations chaque élément nécessite-t-il ?
 Combien de temps doit durer chaque période d’adaptation ?
 Bien qu’il n’y ait pas de réponse simple et fiable à ces questions, il existe une
stratégie simple que vous pouvez librement adapter pour votre projet.
 Planifiez de façon certaine l’adaptation des interfaces utilisateurs, planifiez
l’adaptation des exigences au moment où les utilisateurs finaux commencent à
utiliser le système, et attendez-vous à ce que l’architecture soit remise en
question pour raison de sous-performance et adaptée.
 Allouez deux périodes d’adaptation pour la conception de l’interface utilisateur, et
une de plus pour l’évolution des exigences et l’adaptation de l’architecture.
 Allouez pour la première période d’adaptation le tiers du temps de
développement initial, et pour la deuxième période la moitié de cela.

Vous aurez besoin d’estimer et tester vos propres ratios, mais ceux que j’ai proposé
ne doivent pas être si mauvais que ça pour une première estimation.

Si vous faites des développements Agile avec Scrum ou eXtreme Programming,


assurez-vous que toutes les user stories ou cartes du backlog passent à travers le
sprint avec un coefficient multiplicateur de trois sur leurs estimations de taille.

Trois histoires
Pour finir, je vous raconte trois histoires de développement incrémental / itératif qui
se sont bien ou mal passées. Le premier, le projet “Baker”, met en jeu de l’itératif
mélangé avec de l’incrémental, sachant qu’ils auraient dû faire de l’incrémental
lorsqu’ils faisaient de l’itératif. Le second, le projet “Laddie”, témoigne du problème
des projets modernes Agile qui font de l’incrémental sans itératif. Le dernier projet,
“Winifred”, s’est bien déroulé.

Le projet Baker était à coût et périmètre fixés et comptait 200 personnes. Elles
travaillaient selon un cycle mensuel (une stratégie de développement incrémental).

Les équipes étaient séparées et travaillaient selon un mode pipeline de telle façon
que les spécificateurs rédigeaient pendant 1 mois avant de passer leurs livrables aux
concepteurs le début du mois suivant. Un mois plus tard, les concepteurs
transmettaient leurs livrables aux programmeurs qui développaient pendant un mois.
À la fin, les testeurs recevaient des morceaux de code à tester et intégrer.

En se méprenant su le terme “développement itératif”, ils ont ensuite donné des


instructions à tous comme quoi les spécifications et la conception pouvaient changer
à n’importe quel moment (ceci constituait leur stratégie de développement itératif).

Le tohu-bohu qui a suivi est exactement ce que à quoi vous pensez. Chaque mois,
les spécificateurs révisaient des parties des spécifications, qui changeaient des
parties de la conception et des développements. Dès le troisième mois, il était
évident pour les développeurs qu’ils étaient en train de programmer un système qui
était déjà en cours de modification chez les concepteurs qui eux-mêmes étaient
simultanément conscients qu’ils étaient en train de concevoir un système qui était
déjà en cours de modification chez les spécificateurs. Les testeurs n’ont jamais rien
reçu qui corresponde.

Le projet Baker était en difficulté dès le départ, en partie à cause à cette stratégie de
pipeline, mais plus encore à cause de la non maîtrise de chaque itération.

Penchons-nous maintenant sur un cas d’échec Agile.

Le projet Laddie utilisait une approche Agile avec des itérations de deux semaines.
Toutes les user stories étaient répertoriées dans une longue liste et réalisées à la fin
de chaque itération (c’était leur stratégie de développement incrémental). À la fin de
chaque itération, on montrait au client ce qui avait été construit durant ces deux
semaines. Bien entendu, deux semaines étant un délai très court, il n’y avait jamais
assez de temps pour montrer au client ce qui avait été conçu et il y avait donc
généralement des corrections à apporter.

Le client avait le choix de retarder la réalisation de nouvelles user stories afin de


corriger les erreurs commises, ou bien alors de repousser ces corrections en fin de
backlog (c’était leur stratégie de développement itératif – pas très agréable du point
de vue du client).

Le client s’était plaint après un moment qu’il sentait qu’il fallait bien faire les choses
dès la première fois puisque les choix qu’ont lui laissaient sur le comment et quand il
faudrait corriger les erreurs n’étaient pas très agréables. Ceci, avait-il correctement
estimé, violait l’esprit même du développement Agile.

Terminons avec une histoire heureuse.

Le projet Winifred était à prix, périmètre et délai fixé, 18 mois avec une pointe à
environ 45 personnes. Le cycle de développement était de trois mois, chaque fin de
cycle entraînant un déploiement (c’était la stratégie des petits pas).

Il n’y avait pas de stratégie incrémentale particulière requise au sein de chaque cycle
de développement. Les équipes pouvaient développer les fonctionnalités dans l’ordre
qu’elles souhaitaient. Par contre, chaque équipe devait montrer ses travaux en cours
aux utilisateurs finaux au minimum deux fois par cycle, de sorte que les utilisateurs
pouvaient modifier ou corriger ce qui était en cours de construction (ceci était leur
stratégie de développement itératif). Cela devait être le logiciel réel, de l’interface
utilisateur jusqu’à la base de données, et non de simples maquettes d’écran
bouchonnées.

Typiquement, chaque équipe montrait aux utilisateurs ce qu’ils avaient construit


après six semaines de travail et de nouveau après huit semaines de travail. Lors de
la première rencontre utilisateur, peut-être 60 à 80% des fonctionnalités étaient
complètes. Les utilisateurs avaient le droit de changer quoique ce soit qu’ils
n’aimaient pas, y compris, “je sais que c’est ce que j’ai dit que je voulais, mais
maintenant que je le vois, ce n’est pas du tout ce que je veux.”

À la deuxième rencontre, peut-être 90 à 95% des fonctionnalités étaient complètes,


et les utilisateurs avaient seulement le droit de faire corriger des erreurs flagrantes et
de demander des petits ajustements. Cela a permis de corriger à la fois les
spécifications et les interfaces utilisateurs tout en conservant encore un sens pour un
contrat au forfait.

Le projet Winifred a été déployé avec succès et les utilisateurs ont obtenus plus ou
moins ce qu’ils voulaient. Le système est encore utilisé et est encore maintenu dix
ans plus tard, ce qui est un bon indicateur de réussite.

Notez bien que la stratégie combinant itératif et incrémental du projet Winifred


respecte le style de l’histoire de la Joconde citée précédemment.

Résumé
Le terme “incrément” signifie à la base “ajouter”.

Le mot “itérer” signifie à la base “refaire”.

Malheureusement, le “développement itératif” renvoie aujourd’hui aussi bien à


incrémental que itératif, sans ne faire aucune différence. C’est malheureusement
regrettable pour notre industrie logicielle puisque chacun a un objectif différent et doit
être géré différemment.

Le développement incrémental vous donne la possibilité d’améliorer votre processus


de développement, ainsi que d’ajuster les exigences à l’évolution de l’environnement.

Le développement itératif vous aide à améliorer la qualité de votre produit. Oui, cela
veut dire remanier (~rework), et oui, vous aurez probablement besoin d’en faire un
peu pour obtenir un produit propre.

Le processus de développement, les fonctionnalités et la qualité du produit ont


besoin d’être constamment améliorés. Utilisez une stratégie incrémentale, après
réflexion, afin d’améliorer les deux premiers axes. Utilisez une stratégie itérative,
après réflexion, afin d’améliorer le troisième axe.

Auteur : Alistair Cockburn


Source : Using Both Incremental and Iterative Development
Date de parution originale : Mai 2008

Traducteur : Fabrice Aimetti


Date de traduction : 16/11/2008

Ce(tte) oeuvre est mise à disposition selon les termes de la Licence Creative
Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes
Conditions 4.0 International.

Partager cette traduction sur vos réseaux sociaux favoris 


Twitter Facebook Google+ Pinterest LinkedIn Tumblr Reddit Viadeo
Les traducteurs agiles

 Les traducteurs agiles


 contact@les-traducteurs-agiles.org

  les-traducteurs-agiles
  traducteuragile

Partager avec chacun la connaissance acquise auprès de chacun

Vous aimerez peut-être aussi