# Prototypage logiciel

Le prototypage logiciel (ou « software prototyping » en anglais) désigne l'ensemble des activités de création de prototypes pour les logiciels, c'est-à-dire des versions incomplètes du programme en cours de développement. Cette activité est donc assez proche de la création et la validation de prototypes, telle qu'on la pratique dans l'industrie.
Ainsi, un prototype permet d'explorer de façon interactive des scénarios d'utilisation du produit pour en valider les orientations. Il ne simule toutefois que quelques aspects du logiciel et peut être très différent du produit final.

## Intérêts

De même que les industriels commencent toujours par procéder à un prototypage avant de construire de coûteuses usines afin de mettre en évidence les défauts qui n'avaient pas été imaginés, il est conseillé au concepteur de logiciels de réaliser une maquette, ou un prototype (ou les deux) pour tester la validité de sa conception, et recevoir les remarques des utilisateurs (il est en effet bien plus facile de comprendre une démonstration sur une maquette que de vérifier des spécifications écrites).
* Une maquette effectue ses entrées-sorties sur des fichiers simulés (par exemple en mémoire) afin de permettre quelques tests rapides de fonctionnalités, et de prendre l'avis des futurs utilisateurs. Il fonctionne souvent sur un système différent de celui qui sera utilisé (par exemple sur un PC pour une application destinée à un mainframe).
* Un prototype, lui, travaille sur les fichiers réels de l'entreprise ainsi que sur le réseau réel. Il est susceptible de fonctionner réellement dans le cadre d'un utilisateur. Il ne lui manque plus que les optimisations (assez souvent, la réécriture de tout ou partie du prototype en langage compilé permettant son usage intensif sans consommation excessive de ressources).
Le premier jet d'un programme étant assez souvent réécrit, le programmeur n'y perd rien de toute façon. Il évite aussi de s'enfermer ainsi dans des choix prématurés erronés qu'il lui serait difficile de remettre en cause une fois le programme écrit dans le langage final. En effet, ce dernier, s'il donne une maîtrise beaucoup plus grande des détails d'exécution, est pour cette raison bien moins lisible qu'un simple langage de prototypage.

## Types de prototypes

Il existe de nombreux niveaux de finition et de démarche pour réaliser différentes versions de maquettes et prototypes. Nielsen (1994) distingue, dans le développement d'un logiciel, deux méthodes de prototypage selon le niveau d’interactivité offert par le prototype :
* Le prototype horizontal correspond uniquement à l’interface, c’est une maquette statique. Seuls l'agencement général et les éléments de l’interface sont présentés : boutons, menus, champs de saisie, etc. Il permet :
** La confirmation des exigences de l'interface utilisateur et l'étendue du produit
** Une version de démonstration pour obtenir des retours des commanditaires du produit par rapport à leurs besoins initiaux
** Une première estimation du développement en temps, en coût et en charge de travail
* Le prototype vertical met en œuvre certaines des fonctionnalités afin que l’utilisateur puisse dérouler un scénario d’utilisation typique, une tâche complète et significative du produit. Il permet :
** L'estimation du volume de données à prévoir ;
** Le dimensionnement du système de données, les besoins d'interaction de l'interface, les dimensions du réseau et le niveau de performance ;
** Des précisions sur la complexité des exigences par rapport aux fonctionnalités actuelles du produit (selon le cas).

### Le prototype horizontal

Le prototypage consiste à concevoir des versions intermédiaires et donc incomplètes d'un logiciel ou d'un site web, conçues pour tester l'utilisation avant la phase proprement dite de programmation informatique. Dans le cadre d'une intervention ergonomique, la phase de prototypage permet de tester l'utilisation et l'utilisabilité d'un produit auprès d'utilisateurs (test utilisateur). Il se distingue de la maquette fil de fer (ou wireframe) en simulant le fonctionnement avec des données fictives ou réelles. Plusieurs types et niveaux de finition sont possibles, selon la démarche de conception d'un logiciel ou d'un site Web. Le prototypage s’inscrit dans une démarche de conception itérative de l’interface, en particulier dans la démarche de conception centrée sur l'utilisateur. Il vise à améliorer progressivement l’interface en s’appuyant sur l’analyse du comportement des utilisateurs finaux lorsqu'ils se servent du produit (voir aussi le test utilisateur).
Les premières maquettes conçues au début du projet, sont souvent statiques (aucun degré d’interactivité) et épurées ; elles peuvent se limiter à la définition des principales fonctionnalités et zones de contenu, et se présenter sous la forme de maquette papier. Puis, au fur et à mesure des itérations et de l'ajout d'interaction, le prototype se rapproche de l'interface finale à la fois du point de vue de l'interaction et du graphisme.
Le prototypage (ou maquettage) est la méthode de base pour la conception des interfaces en ergonomie informatique. Il présente l’intérêt de matérialiser l’interface, et par la même le logiciel ou le site web, et sert de référence aux différents acteurs du projet qui, par ce biais, vont s’accorder sur un langage commun. Le prototype peut également servir à la promotion commerciale du produit et être utilisé à des fins de démonstration par les équipes commerciales avant le lancement officiel du produit.
À noter que les équipes de développement sont généralement peu disposées à mettre en œuvre une phase de prototypage pour concevoir l’interface, car elles craignent de devoir en attendre la fin pour démarrer effectivement le développement, rallongeant d’autant le planning du projet. Pourtant, il peut être judicieux d'intégrer le prototypage dans la phase de spécification fonctionnelle, afin de valider puis définir les exigences et comportements à développer. De même, il est possible de jouer sur la fidélité du prototype, c’est-à-dire sa ressemblance par rapport au produit final en termes d’interactivité et de graphisme.