La concep­tion d’un système implique la créa­tion d’une concep­tion de haut niveau (High Level Design – HLD), qui ressemble à une feuille de route montrant le plan global, et d’une concep­tion de bas niveau (Low-Level Design – LLD), qui est un guide détaillé pour les program­meurs sur la façon de construire chaque partie.

Cela garan­tit un projet bien orga­nisé et fonc­tion­nant sans problème. La concep­tion de haut niveau et la concep­tion de bas niveau sont les deux prin­ci­paux aspects de la concep­tion d’un système.

La concep­tion d’un système défi­nit l’ar­chi­tec­ture, les compo­sants, les modules, les inter­faces et les données d’un système pour répondre à des exigences spéci­fiques. Elle implique une concep­tion de haut et de bas niveau et consti­tue une phase cruciale du cycle de vie de déve­lop­pe­ment des systèmes logiciels.

Les aspects clés de la concep­tion du système :

  • Architecture : établit la struc­ture et l’or­ga­ni­sa­tion globale du système, défi­nis­sant comment les diffé­rents compo­sants interagissent.
  • Composants : iden­ti­fie et spéci­fie les diffé­rentes parties du système, y compris les modules logi­ciels et les éléments matériels.
  • Interfaces : défi­nit comment les diffé­rents compo­sants commu­niquent et inter­agissent entre eux et avec des systèmes externes.
  • Flux de données : décrit la manière dont les données circulent dans le système et entre les compo­sants, garan­tis­sant ainsi une gestion et un stockage appro­priés des données.
  • Pile tech­no­lo­gique : choi­sit les tech­no­lo­gies, les cadres et les outils appro­priés qui seront utili­sés dans le déve­lop­pe­ment et le déploie­ment du système.
  • Exigences non fonc­tion­nelles : traitent des perfor­mances, de l’évo­lu­ti­vité, de la sécu­rité, de la fiabi­lité et d’autres quali­tés qui affectent la convi­via­lité et l’ef­fi­ca­cité du système.
  • Expérience utili­sa­teur (UX) : Considère la manière dont les utili­sa­teurs inter­agi­ront avec le système, en se concen­trant sur la convi­via­lité et l’accessibilité.

Qu’est-ce que la concep­tion de haut niveau (HLD) ?

La concep­tion de haut niveau  ou  HLD  fait réfé­rence au système global, une concep­tion qui consiste en une descrip­tion de l’ar­chi­tec­ture et de la concep­tion du système et est une concep­tion de système géné­rique qui comprend :

  1. Architecture du système.
  2. Conception de base de données.
  3. Brève descrip­tion des systèmes, des services, des plate­formes et des rela­tions entre les modules.

Un diagramme repré­sen­tant chaque aspect de la concep­tion est inclus dans le HLD (qui est basé sur les exigences commer­ciales et les résul­tats anticipés).

  • Il contient une descrip­tion du maté­riel, des inter­faces logi­cielles et égale­ment des inter­faces utilisateur.
  • On l’ap­pelle égale­ment concep­tion de niveau macro/système.
  • Il est créé par un archi­tecte de solutions.
  • Le flux de travail du proces­sus typique de l’uti­li­sa­teur est détaillé dans le HLD, ainsi que les spéci­fi­ca­tions de performances.

Le HLD décrit l’ar­chi­tec­ture globale et les prin­ci­paux compo­sants qui consti­tue­ront le système. Il se concentre sur ce que le système fera et sur la façon dont les compo­sants inter­agissent les uns avec les autres.

Les aspects clés de la concep­tion haut niveau :

  • Présentation de l’ar­chi­tec­ture : défi­nit l’ar­chi­tec­ture du système, y compris les logi­ciels et le matériel.
  • Modules clés : réper­to­rie les prin­ci­paux modules et leurs interactions.
  • Flux de données : cela décrit le flux de données entre diffé­rents modules et systèmes.
  • Interfaces : détaille les inter­faces externes, y compris les API et les proto­coles de communication.
  • Intégration système : explique comment diffé­rents systèmes et sous-systèmes s’intégreront.
  • Pile tech­no­lo­gique : spéci­fie les tech­no­lo­gies, les plates-formes et les frame­works à utiliser.
  • Exigences non fonc­tion­nelles : couvrent des aspects tels que les perfor­mances, l’évo­lu­ti­vité, la fiabi­lité et la sécurité.

Le docu­ment HLD comprend géné­ra­le­ment des diagrammes tels que des diagrammes de contexte système, des diagrammes de compo­sants et des diagrammes d’interaction.

Qu’est-ce que la concep­tion de bas niveau (LLD) ?

Le LLD, ou Low-Level Design , est une phase du proces­sus de déve­lop­pe­ment logi­ciel où les compo­sants détaillés du système et leurs inter­ac­tions sont spécifiés.

  • Il décrit en détail chaque module, ce qui signi­fie qu’il inclut la logique réelle de chaque compo­sant du système et qu’il appro­fon­dit les spéci­fi­ca­tions de chaque module.
  • On l’ap­pelle égale­ment concep­tion micro-niveau/­dé­taillée.
  • Il est créé par des desi­gners et des développeurs.
  • Il s’agit de conver­tir la concep­tion de haut niveau en un plan plus détaillé, abor­dant des algo­rithmes, des struc­tures de données et des inter­faces spécifiques.
  • Le LLD sert de guide aux déve­lop­peurs lors du codage, garan­tis­sant la mise en œuvre précise et effi­cace des fonc­tion­na­li­tés du système.

Le LLD se concentre sur les détails internes des compo­sants et des modules iden­ti­fiés dans le HLD. Il décrit comment chaque compo­sant sera implémenté.

Les aspects clés de la concep­tion bas niveau :

  • Conception détaillée des compo­sants : spéci­fie la concep­tion des compo­sants et modules indi­vi­duels en détail.
  • Diagrammes de classes : défi­nissent les classes, les méthodes, les attri­buts et les relations.
  • Conception de la base de données : détaille le schéma de la base de données, y compris les tables, les index et les relations.
  • Algorithmes et logique : spéci­fie les algo­rithmes, les struc­tures de données et la logique détaillée des fonc­tion­na­li­tés du système.
  • Diagrammes d’état : cela décrit les tran­si­tions d’état pour les compo­sants dépen­dants de l’état.
  • Conception de l’in­ter­face utili­sa­teur : four­nit des maquettes fonc­tion­nelles (wire­frames) ou des proto­types d’in­ter­faces utili­sa­teur, le cas échéant.
  • Gestion des erreurs et jour­na­li­sa­tion : décrit les stra­té­gies de gestion des erreurs et de jour­na­li­sa­tion des événements.

Le docu­ment LLD comprend des diagrammes de classes, des diagrammes de séquence, des diagrammes d’état et des descrip­tions détaillées de la concep­tion et de la mise en œuvre.

Différence entre concep­tion haut niveau et bas niveau :

La diffé­rence entre concep­tion haut niveau (HLD) et concep­tion bas niveau (LLD) peut se résu­mer à 3 critères :

  • Champ d’ap­pli­ca­tion : Le HLD couvre l’ar­chi­tec­ture globale du système, tandis que le LLD se penche sur la concep­tion détaillée des compo­sants individuels.
  • Niveau d’abs­trac­tion : Le HLD est plus abstrait et concep­tuel, alors que le LLD est détaillé et spécifique.
  • Public cible : Le HLD est souvent destiné aux parties prenantes et aux chefs de projet pour comprendre l’ar­chi­tec­ture du système, tandis que le LLD est destiné aux déve­lop­peurs et aux ingé­nieurs qui mettront en œuvre le système.
CONCEPTION DE HAUT NIVEAU CONCEPTION DE BAS NIVEAU
La concep­tion de haut niveau est la concep­tion géné­rale du système, ce qui signi­fie qu’elle fait réfé­rence à la concep­tion globale du système. La concep­tion de bas niveau est simi­laire aux détails HLD, ce qui signi­fie qu’elle fait réfé­rence au proces­sus de concep­tion au niveau des composants.
On l’ap­pelle égale­ment concep­tion de niveau macro/système. On l’ap­pelle égale­ment concep­tion micro-niveau/­dé­taillée.
En outre, elle décrit la description/architecture globale de l’application. Elle décrit en détail chaque module.
La concep­tion de haut niveau exprime la fonc­tion­na­lité brève de chaque module. La concep­tion de bas niveau exprime les détails de la logique fonc­tion­nelle du module.
Elle est créé par un archi­tecte de solutions. Elle est créé par des desi­gners et des développeurs.
Ici, dans le High Level Design, les parti­ci­pants sont l’équipe de concep­tion, l’équipe de révi­sion et l’équipe client. Ici, dans la concep­tion de bas niveau, les parti­ci­pants sont l’équipe de concep­tion, les équipes d’ex­ploi­ta­tion et les respon­sables de la mise en œuvre.
Il est créé en premier lieu avant la concep­tion de bas niveau. Il est créé en deuxième lieu après le High Level Design.
Dans le HLD, le critère d’en­trée est la spéci­fi­ca­tion des exigences logi­cielles (Software Requirement Specification – SRS). Dans le LLD, les critères d’en­trée sont exami­nés dans le cadre de la concep­tion de haut niveau (HLD).
La solu­tion de haut niveau conver­tit l’exigence commerciale/client en une solu­tion de haut niveau. La concep­tion de bas niveau conver­tit la solu­tion de haut niveau en une solu­tion détaillée.
Dans le HLD, les critères de sortie sont la concep­tion de la base de données, la concep­tion fonc­tion­nelle et l’en­re­gis­tre­ment de la révision. Dans le LLD, les critères de sortie sont la spéci­fi­ca­tion du programme et le plan de test unitaire.

En  conclu­sion

Les docu­ments de concep­tion de haut niveau sont comme des plans d’en­semble qui aident les chefs de projet et les archi­tectes à comprendre comment un système fonc­tion­nera et les docu­ments de concep­tion de bas niveau sont plus détaillés et sont conçus pour les programmeurs.

  • Ils montrent exac­te­ment comment écrire le code et faire en sorte que les diffé­rentes parties du système s’as­semblent. Ces deux docu­ments sont impor­tants pour les diffé­rentes personnes impli­quées dans la créa­tion et la main­te­nance du logiciel.
  • Créer une concep­tion de haut niveau revient à élabo­rer un grand plan pour le logi­ciel et permet de détec­ter les problèmes le plus tôt possible, afin de mieux garan­tir la qualité du logiciel.
  • D’autre part, lorsque la concep­tion de bas niveau est bien docu­men­tée, il est plus facile pour les autres de véri­fier le code et de garan­tir sa qualité lors de l’écriture réelle du logiciel.

Ces deux étapes permettent de détec­ter et de résoudre les problèmes le plus tôt possible, ce qui rend le proces­sus global de déve­lop­pe­ment logi­ciel plus fluide et plus fiable.

Fabien Perez