Comment décomposer votre conception logicielle en étapes clairement définies
La conception logicielle comporte plusieurs étapes et il est important de n’en négliger aucune. Vous et votre équipe devrez au préalable consacrer le temps et les efforts nécessaires au processus de conception logicielle avant de commencer la phase de développement de votre projet.
Avant de passer à la conception logicielle, vous avez probablement déjà dressé un plan de projet afin de connaître le budget, les ressources, le temps et les autres paramètres avec lesquels vous travaillez. Grâce à la planification de votre architecture logicielle, vous disposerez également d’informations sur les exigences fonctionnelles et non fonctionnelles de votre logiciel, les attentes des différentes parties prenantes et les décisions que vous avez déjà prises et qui s’appliquent à l’ensemble de votre architecture logicielle.
À partir du travail préparatoire que vous avez déjà accompli, le processus de conception logicielle consistera à créer une roadmap pour le codage et l’implémentation du logiciel. Au cours de ce processus, gardez à l’esprit qu’une bonne conception logicielle doit respecter les principes fondamentaux suivants :
-
Simplicité : faire compliqué pour faire compliqué n’a aucune utilité, cela ne fait qu’accroître l’utilisation des ressources, la maintenance et les difficultés associées à votre logiciel. Chaque tâche doit être modifiée et utilisée de manière indépendante avec son propre module pour rendre votre code facile à utiliser. Et s’il existe un moyen plus simple de faire la même chose (toutes choses égales par ailleurs), choisissez la voie la plus simple.
-
Modularité : en décomposant votre projet en plusieurs parties, il vous sera plus facile d’atteindre vos objectifs. C’est ce que l’on appelle la modularité, un thème très présent dans les méthodologies Agile. Cette modularité vous permet d’utiliser des sprints pour terminer des fonctionnalités ou des tâches spécifiques une par une.
-
Complet et suffisant : votre logiciel doit être complet. Il doit être adapté aux fins prévues et répondre aux exigences de votre projet.
-
Anticiper le changement : dans la mesure du possible, vous devez concevoir un logiciel capable d’évoluer en anticipant les besoins futurs qui risquent de différer des besoins actuels. Il est bien évidemment impossible de savoir ce qu’il va se passer dans le futur, mais les meilleures conceptions logicielles sont celles qui sont tournées vers l’avenir et qui s’y préparent.
-
Abstraction : la conception logicielle doit permettre de dresser un plan qui intègre les informations pertinentes et qui exclut les informations non immédiatement pertinentes. Votre plan ne présentera probablement pas tous les détails précis et comportera un certain degré d’abstraction.
-
Interdépendance : la conception de votre logiciel doit éviter autant que possible les interdépendances et permettre à votre équipe d’apporter des modifications à un module sans que cela n’affecte significativement les autres modules du logiciel.
Entamer le processus de conception logicielle
Rappelez-vous : la conception logicielle ne peut commencer qu’après avoir effectué un travail préparatoire. Il faut que vous ayez au préalable défini les exigences et réalisé une analyse des risques et une analyse du domaine pour vous aider à décomposer votre projet en étapes plus détaillées.
-
Exigences : les exigences de votre logiciel englobent les attentes fonctionnelles et non fonctionnelles, qui représentent les besoins de l’entreprise et des utilisateurs. Il s’agit des fonctionnalités et des caractéristiques indispensables à votre logiciel.
-
Analyse des risques : avant de commencer la conception, vous devez étudier les risques potentiels de ce projet et faire votre possible pour anticiper l’impact qu’ils pourraient avoir sur le développement global de votre logiciel. Au-delà des risques généraux liés à la gestion de projet, tels que le dépassement du budget ou l’impossibilité de trouver le personnel dont vous avez besoin, quels sont les risques techniques ?
-
Analyse du domaine : lors de cette étape, vous devez vous renseigner sur le domaine afin de mieux en comprendre les problèmes et les difficultés, mais aussi pour rechercher les points communs dans les systèmes logiciels similaires.
Établir un SDD (Software Design Document) ou document de conception logicielle
Ensuite, il est temps d’établir les attentes associées à la conception de votre logiciel et de les compiler dans des documents de conception logicielle (software design document, ou SDD). Un SDD vous aide à rester sur la bonne voie tout au long du processus de programmation et à réduire les risques de gaspiller du code ou de devoir recommencer à zéro. Dans un document centralisé, vous consignerez les dépendances, les fonctionnalités et d’autres documents utiles.
Un SDD contient habituellement les éléments suivants :
-
Titre, auteurs et réviseurs : informations de base sur le projet, dont une liste des parties prenantes et les noms des membres de l’équipe d’ingénierie.
-
Description fonctionnelle : ce que fait le logiciel ainsi que d’autres détails tels que les procédures de démarrage, la gestion des erreurs, le nombre maximal d’utilisateurs, etc.
-
Interface utilisateur : informations et diagrammes présentant le fonctionnement du système aux utilisateurs et indiquant comment l’utiliser.
-
Jalons et objectifs : jalons pour l’équipe d’ingénierie et objectifs permettant de suivre l’avancement.
-
Une matrice de hiérarchisation : classement des fonctionnalités et des récits utilisateur en fonction de leur degré de priorité.
-
Section Solutions : une description du récit utilisateur derrière votre logiciel.
-
Chronologie non technique : une chronologie pour les non-ingénieurs qui veulent comprendre un peu mieux les jalons et le processus de votre projet.