Lisp at 1.3. Prototypage et développement évolutif

Home
Up
Previous
Next

1.3.    Prototypage et développement évolutif

Grâce à son haut pouvoir d'abstraction, le Lisp facilite le développement évolutif.

En développement évolutif, une application est rapidement prototypée, ses différentes abstractions étant implantées le plus simplement et rapidement possible. Au besoin, comme c'est souvent le cas, ces abstractions sont revues au fur et à mesure de l'évolution du projet et de la demande des utilisateurs. Lorsqu'une abstraction a démontré sa valeur, son implantation est améliorée en fonction de son importance et des compromis habituels (performance, coût, etc).

Ce type d'approche ne doit pas être confondu avec l'approche du prototype à jeter. Celui-ci est conçu rapidement, sans soin particulier, pour être écarté dès qu'il a rempli son rôle (exemple : aider à clarifier ou formuler les besoins). Au contraire, les prototypes évolutifs sont des programmes de qualité qui sont construits les uns à partir des autres et continuellement modifiés en fonction de l'avancement dans la connaissance du domaine. Chaque prototype fait l'objet d'un cycle spécification-conception-implantation-test.

Si besoin est, d'un prototype évolutif, on peut faire un prototype opérationnel : il peut être intéressant de soumettre rapidement un prototype à l'utilisation et à la critique des futurs utilisateurs.

Il y a des expériences qui justifient ce type d'approche et des rapports qui la recommandent. Ainsi, on peut lire dans un document du Defense Science Board Task Force on Military Software (USA): We believe that users cannot accurately describe the operational requirements for a substantial software system without testing ... in an operational environment, and iteration on the specification; et encore : Experience with confidently specifying and paintfully building mammoths has shown it [incremental implementation] to be the simplest, safest and even fastest to develop a complex software system by building a minimal version, putting it into actual use, and then adding function, enhancing speed, reducing size, etc (voir [GLAS91]).

Ou encore dans [BROO87] : "Therefore, one of the most promising of the current technological efforts, and one that attacks the essence, not the accidents, of the software problem, is the development of approaches and tools for rapid prototyping of systems..."

Cependant, force est de reconnaître que le génie logiciel est sans doute la technique de l'ingénieur la moins mature, où, de plus, les pratiques habituelles sont très éloignées de celles reconnues comme étant les bonnes pratiques. Le développement évolutif est une approche possible dans la description et la gestion du cycle de vie du processus de développement d'un logiciel; comme d'autres approches, elle ne sera appropriée que dans certains contextes bien définis.

Home    Previous    Up    Next
contact
site map
Last update : 20/11/2001