La méthode de développement rapide d'applications, dite méthode RAD (Rapid Application Development), est la première méthode de développement de logiciels où le cycle de développement est en rupture fondamentale par rapport celui des méthodes antérieures dites « en cascade ». Ce nouveau cycle qualifié d'itératif, d'incrémental et d'adaptatif, se retrouvera ensuite dans toutes les méthodes dites « agiles » publiées par la suite.
Aujourd’hui, la qualité et la réactivité font partie des objectifs généraux de beaucoup d’entreprises. Cela entraîne un certain nombre de projets, qui tout en apportant satisfaction aux utilisateurs, doivent être menés dans un délai court. C’est à cela que répond le RAD.
Les principales catégories de raisons du développement lent sont les suivantes :
L’approche de développement séquentiel ou classique reste la façon la plus rapide de développer des applications lorsque l’incertitude quant aux spécifications et la faisabilité est faible. Mais lorsque la technologie est neuve ou que les spécifications ne peuvent être toutes définies entièrement, il faut réorganiser les techniques et, éventuellement, une approche de développement qui ne sera plus séquentielle. L’approche RAD s'applique bien dans le cadre de petites applications de gestion, n'ayant pas de cycle de vie d'une trop longue durée.
La méthode RAD, après deux courtes phases de formalisation structurée de l'expression des besoins (Cadrage) et de définition globale de l'architecture technique (DESIGN), inclut dans sa phase principale (Contruction) la réalisation, la validation immédiate et les tests d'une application en mode itératif-incrémental-adaptatif. L'objectif de la méthode, qui implique activement l'utilisateur final dans un principe de “validation permanente”, est d'obtenir un applicatif en adéquation avec les réels besoins.
SWAT (Skilled With Advanced Tools) → Désignation d'une équipe de travail non hiérarchisée ou chaque intervenant est compétent sur l'ensemble des aspects d'un projet, outre sa spécialisation sur l'un de ceux-ci.
James Martin a développé l'approche RAD au cours des années 1980, à IBM, en se basant sur les idées de Brian Gallagher, Alex Balchin, Barry Boehm et Scott Shultz. Il l'a formalisée en la publiant en 1991. Des compléments et des actualisations sont introduits à partir de 1994, notamment par Jean-Pierre Vickoff pour l'aspect francophone (processus RAD2 publié par le Gartner Group) et Jennifer Stapleton en Grande-Bretagne (processus DSDM).
L’apport de J. Martin avec la méthode RAD fut de formaliser techniquement le premier postulat « agile », à savoir que pour qu'une prédiction de projet puisse se réaliser à tous les coups, il fallait que certains aspects du pilotage soient fixes et que d’autres soient variables. Il proposa des techniques de priorisation pour gérer les deux principales variantes possibles de ces situations (délais fixe ou budget fixe). Les notions additionnelles de visibilité, de risque et de fiabilité (ou de qualité) comme variables de planification stratégique d’un projet furent introduites plus tard.
La méthode RAD implique :
La méthode RAD structure le cycle de vie du projet en 5 phases (dont 3 systématiques) :
Préparation de l’organisation et communication. Cette phase permet de définir le périmètre général du projet, de structurer le travail par thèmes, de sélectionner les acteurs pertinents et d’amorcer une dynamique de projet. Cette phase représente environ 6% du projet en charge.
Analyse et expression des exigences. La spécification des exigences est du ressort des utilisateurs. Ils expriment leurs besoins lors d’entretiens de groupe. Il est généralement prévu de 2 à 5 jours de sessions par commission (thème). Cette phase représente environ 9% du projet.
Conception et modélisation. Les utilisateurs sont également impliqués dans cette étape. Ils participent à l’affinage et à la validation des modèles organisationnels : flux, traitements, données. Ils valident également le premier niveau de prototype présentant l’ergonomie et la cinématique générale de l’application. Il est prévu entre 4 et 8 jours de sessions par commission. Cette phase représente environ 23% du projet. A partir de la phase de Design la parallélisation du travail est possible.
Réalisation, prototypage. Durant cette phase, l’équipe RAD (SWAT) doit construire l’application module par module. L’utilisateur participe toujours activement aux spécifications détaillées et à la validation des prototypes. Plusieurs sessions itératives sont nécessaires. Cette phase représente environ 50% du projet. A partir de la phase de Construction, à la parallélisation du travail peut s’ajouter la sérialisation.
Recette et déploiement. Des recettes partielles ayant été obtenues à l’étape précédente, il s’agit dans cette phase d’officialiser une livraison globale et de transférer le système en exploitation et maintenance. Cette phase représente environ 12% du projet.
Le Jalon ZD (Zéro Défaut) est une intégration de l'itération journalière validée techniquement et fonctionnellement. Le FOCUS (ou SHOW) est une présentation de l'itération de livraison venant de s'achever. Cette démonstration est effectuée par le ou les utilisateurs impliqués dans le prototypage à destination de l'ensemble des autres intervenants du projets. Pour pousser à l'extrême la qualité du code, ces étapes peuvent être remplacées par les pratiques XP d'ingénierie du logiciel.
La méthode, sans être liée aux outils, recommande l'utilisation d'outils de programmation à interface graphique (CASE), qui permettent d'obtenir rapidement des prototypes. A ce sujet, il ne faut pas confondre la méthode RAD (d'où sont issues les approches Agiles actuelles) qui recherche la qualité applicative fonctionnelle et technique avec les outils RAD, dont la production automatique de code est souvent qualifiée de “sale”.
Le prototypage est un processus de construction d’un modèle de système entièrement ou partiellement fonctionnel qui ressemble et agit le plus possible comme un véritable système. Le développement d’applications fait appel à deux genres courants de prototypes :
GRAPHIQUE
GRAPHIQUE
La première version du prototype est l'embryon du produit final. Exemple : Développement d'un système expert GRAPHIQUE
Avec cette approche, il est très difficile de mettre en oeuvre des procédures de validation et de vérification. Cette méthode est à rapprocher du cycle de vie en spirale et du développement incrémental.
On utilise surtout les prototypes expérimentaux dans le cadre du développement itératif. D’ordinaire, on élabore un prototype simple auquel on ajoute des fonctionnalités au cours des phases ultérieures du développement.
L’approche de développement par prototypage est une approche fondée sur le raffinement itératif d’un prototype expérimental.
L’analyse planifie le restant des activités de conception et de la mise en œuvre en définissant une série de prototypes ou de modifications à ces prototypes. D’ordinaire, les spécifications sont divisées en sous-ensembles reposant sur les fonctions spécifiques (entrée des commandes, exécutions des commandes et achats, etc) et sur les limites architecturales de l’application (client-serveur, trois, tiers, etc)
Une fois la série des prototypes définie, la conception détaillée et l’implémentation se suivent de manière itérative. Chaque cycle commence par la définition des spécifications et la conception d’un prototype ou d’une version de prototype unique incluant les aspect d’analyse non terminés précédemment (les spécifications détaillées de l’interface d’utilisateur, par exemple)
On peut parfois omettre certaines spécifications de l’application pendant le cycle de développement des prototypes et les terminer après le cycle final (opérations de sauvegarde, et de récupération, les mesures globales de sécurité du système). Les spécifications qui ne font appel à aucun interface d’utilisateur et celle qui ont des répercussions sur l’ensemble du système sont d’habitude, de bonnes candidates à une mise en œuvre post-prototypage.
Le développement d’applications par prototypage est choisi si :
Dans ces conditions le développement par prototypages est plus rapide que le développement classique. Mais lorsque les incertitudes sont trop importantes et les aspects de la conception fonctionnelle et de la faisabilité technique ne sont pas définies en majorité, d’autres techniques et approches peuvent être mieux adaptées.
Le développement d’applications par prototypage ne s’applique pas aux applications ou auxparties des applications qui sont:
Dans ces conditions le développement séquentiel classique fondé sur des modèles de conception structurés ou orientés objets est plus approprié.
L’exigence clé d’un bon outil de prototypage est la vitesse de développement. La possibilité de construire et d’examiner de nombreux prototypes est vitale pour obtenir les spécifications exactes et complètes des utilisateurs et pour déterminer la faisabilité technique par l’expérimentation.
Les bons outils de prototypage sont souples et puissante, ils utilisent une approche hautement interactive et d’autres techniques, comme :
Le choix d’un outil de prototypage dépend de :
Exemples des outils de prototypage :
L’approche de développement en spirale est une approche de développement itératif où chaque itération peut inclure une combinaison d’étapes de planification, d’analyse, de conception et de mise en œuvre. Les principes de l’approche en spirale:
Les caractéristiques principales du développement en spirale sont :
Risques technologiques :
Risques liés au processus :
Risques humains
Étape 1. Phase de la panification initiale qui a pour but de recueillir juste assez d’information pour commencer le développement d’un prototype de départ. Les activités sont les suivantes :
Remarque : Une différence fondamentale entre l’approche en spirale et celle par prototype est les détails des spécifications des utilisateurs et de la conception du logiciel. L’approche en spiral utilise moins de détail.
Étape 2. Phase de la réalisation d’un prototype et de la panification du prototype suivant. Pour chaque prototype le processus de développement suit un chemin séquentiel à travers l’analyse, la conception, la construction, les essais, l’intégration au composantes existante du prototype et la planification du prototype suivant. Déterminer les fonctions à implémenter dans chaque prototype est une décision importante basée sur :