“doc” (Col. : Science Sup 17x24) — 2007/7/19 — 18:18 — page 251 — #261
i
i
i
i
i
i
i
i
5.6 La programmation à grande échelle
251
La méthodologie du développement de logiciel
Il y a beaucoup de manières d’organiser le développement de logiciel. Par exemple, les
techniques de développement descendant (« top-down ») et ascendant (« bottom-up »)
ont été pleinement discutées. Aucune de ces techniques n’est vraiment satisfaisante
pour de grands programmes, et les combiner n’aide pas beaucoup. Le principal problème vient de ce que les exigences et la spécification du système doivent être assez
complètes dès le début. Cela est presque impossible à réaliser à moins que le système soit très bien compris. Selon notre expérience, une approche qui fonctionne
bien est le développement incrémental, appelé aussi développement itératif ou IID
(« Iterative and Incremental Development »). Elle s’appelle parfois développement
évolutionnaire, bien que cette métaphore ne soit pas applicable parce qu’il n’y a pas
d’évolution dans le sens darwinien [18].
6 Le développement incrémental a une longue
histoire dans l’informatique et dans d’autres domaines. Il a été utilisé avec succès pour
le développement de logiciel au moins depuis les années 1950 [9, 59]. L’approche
comporte les étapes suivantes :
– Commencez avec un petit jeu d’exigences qui est un sous-ensemble du jeu complet, et construisez un système complet qui satisfait ce petit jeu. La spécification
et l’architecture du système sont des « coquilles vides » : elles sont juste assez
complètes pour construire un programme exécutable, mais elles ne résolvent pas
les problèmes de l’utilisateur.
– Ensuite augmentez les exigences selon les commentaires des utilisateurs, en
étendant la spécification et l’architecture du système au fur et à mesure pour
satisfaire aux nouvelles exigences. Selon une métaphore organique, nous disons
que l’application « grandit ». À tout moment, il y a un système exécutable qui
satisfait sa spécification et qui peut être évalué par ses utilisateurs potentiels.
– N’optimisez pas pendant le processus de développement. Il est important de
ne pas compliquer le système simplement pour augmenter les performances.
Utilisez des algorithmes simples avec une complexité acceptable et gardez une
conception simple avec de bonnes abstractions. Ne vous faites pas de soucis
à propos du surcoût de ces abstractions. L’optimisation des performances peut
être faite vers la fin du développement, mais seulement s’il y a des problèmes
de performance. On peut faire un profilage du système, c’est-à-dire mesurer les
temps d’exécution des différentes parties, afin de trouver les parties (typiquement
petites) qui prennent un grand pourcentage du temps global et qui doivent donc
être réécrites.
6. L’évolution darwinienne implique une population dans laquelle les individus meurent et naissent, une
source de diversité dans les individus nouveau-nés et un filtre (la sélection naturelle) qui élimine les
individus moins aptes. Il n’y a pas de population dans l’approche incrémentale.
© Dunod – La photocopie non autorisée est un délit
Précédent

- 266/370

Suivant