Aide En Informatique
Latest Posts:

Creation d'un logiciel : quelles sont les étapes à suivre?
Creation d'un logiciel : quelles sont les étapes à suivre?

Quelles sont les étapes pour la création d'un logiciel? 

Voilà une question que beaucoup de débutants me posent en inbox et sur les groupes de dev et ces jours j'ai répondu à la meme question plusieurs fois et je trouves necessaire de faire un article complet  ici sur ce blog pour le partager avec vous.

un logiciel (software) ne se construit pas immediatement en commençant à ouvrir un editeur ou un environnement de developpement (IDE) et à écrire du code. Je vous rappelle qu'un site web de nos jours est une application web et donc est un logiciel à tous les effets et n'échappe pas à ce que je vais décrire dans ce post (j'ai longuement parlé ici de la difference entre un site web et une application web et pourquoi les developpeurs web sont activement recherchés dans le monde du dev, cherchez juste dans mes post passés).

Dans mon raisonement, je ferai refence à un simple logiciel d'un e-commerce qui doit juste présenter les produits regroupés par categories et les utilisateurs doivent etre enregistrés pour pouvoir faire les achats sur le site et les administrateurs doivent pouvoir gerer les commandes. Simple que ça.

1. Un software commence d'abord par une analyse detaillée des besoins, des fonctionalités et de la faisabilité de la solution, ces besoins sont regroupés dans ce qu'on appelle généralement un cahier de charge. Meme quand vous voulez faire un simple site web, ne commencez pas immediatement à faire du HTML +CSS + javascript etc.. je sais que tout débutant veut aller droit au but car l'objectif c'est de faire voir quelque chose aux amis pour les bluffer, mais evitez si vous pouvez cette approche, commencez par faire un petit cachier de charge, meme sinthetique qui regroupe les fonctionalités essentielles.

2. A partir du cachier de charge qui en fait est une documentation écrit, faite ce qu'on appelle les diagrammes des cas d'utilisation, c'est à dire les differents interactions que les acteurs feront avec le logiciel que vous etes sur le point de concevoir, dans le cas du simple e-commerce les cas d'utilisations peuvent etre :

=>création ou enregistrement d'un utilisateur à travers un module de login.

=>Creation d'un utilisateur admin qui peut gerer les commandes et créer les produits

=> afficher tous les produits

=> afficher toutes les categories

=>un utilisateur doit pouvoir faire une commande contenant un ou plusieurs produit.

=> un administrateur doit pouvoir inserrer, eliminer, ou mettre a jour une commande d'un utilisateur.

Cela s'appelle diviser pour mieux reigner, generalement, les cas d'utilisations se font au travers des diagrammes UML(https://tallyfy.com/uml-diagram/) pour permettre meme à un non developpeur de pouvoir comprendre a vu d'oeil toutes les interactions car on construit generalement un logiciel pour un client qui le plus souvent est une entreprise et ce client à la lecture du diagramme UML doit pouvoir immediatement se retrouver dans le logiciel que vous etes entrain de vouloir créer.

3. Une fois l'étape des cas d'utilisation fait, en fonction des infrastructures- ou des moyens que dispose le client, on passe au choix d'abord de l'architecture ensuite des technologies possibles pour arriver à la réalisation du logiciel. Par exemple si le logiciel est un site web qui doit recevoir des millions de requetes par seconde et que le client dispose des moyens pour aller sur une solution cloud, alors on peut projecter par exemple la solution pour fonctionner dans un environnement docker avec la plateforme kubernetes sur google cloud, ou Azure ou AWS etc.. mais il peut arriver que le client ne dispose pas des moyens pour faire du cloud, et à une infrastructure basée sur des serveurs linux par exemple, alors on planifiera differement. Le chois des technologies et donc du langage depend étroitement de l'architecture, donc on peut decider de faire tout le backend avec des API rest en java parceque on a chez le client une machine linux et le client ne veut pas de solution proprietaire, ou bien le client dispose des serveurs windows par exemple windows server 2012 et alors, il serait mieux de developper avec le framework dotnet et c#, ou encore le client n'a meme pas une infrastructure, et n'a pas les moyens pour le cloud mais veux juste un simple hosting web, alors peut etre vaudrait mieux le faire en PHP avec par exemple les API REST en laravel car il y a plein d'herbergeur PHP à moindre coup etc..

4.Une fois l'etape 3 conclu, on choisit la methodologie de developpement, si on est seul à developper le logiciel, alors on peut utiliser une methodologie comme waterfall c'est à dire on cherche à se mettre immediatement à developper en respectant tous les cas d'utilisation et quand on a realisé le software et qu'on a quelque chose sous la main, on court le presenter au client, mais cette methode n'est pas efficace, car une fois chez le client, parfois il peut etre deçu et on doit etre contraint de recommencer tout à zero. Si on est en groupe donc on a une équipe de dev, la meilleur manière c'est de travailler en modalité AGILE dans lequel on divise les cas d'utilisation en fonctionalités qu'on se donne des objetifs temporels de les resoudre et les faire voir immediatement au client, pas qu'on fait voir tout le logiciel à la fin comme dans le waterfall, on dit par exemple, première étape on fait le login, on se donne un mois pour le faire, on divise les fonctionalités pour fair le login en petite partie ou sous partie et on divise le travail entre developpeurs, une fois que tout le monde à completer son travail, on le met ensemble et on va le presenter seulement le login au client qui immediatement doit donner son feedback donc son avis, si quelque chose ne va pas bien, on a la possibilité de corriger immediatement avant de passer à l'etape successif etc..

5. On peut donc finalement commencer à ecrire du code, ou créer la base de données etcc.. pour les debutant il serait mieux de commencer par la BDD on appelle cette approche en anglais Bottom UP, car vous créez la BDD et ses tables en fonction du cachier de charge, par exemple dans mon simple e-commerce, je peux evidencer une table Categorie, une table Produit, une table Utilisateur, une Table administrateur, une table commande etc,.. la table categorie étant en relation 1-N avec la table produit car une categorie a plusieurs produit et un produit appartient à une categorie, la tabel utilisateur est en relation 1-N avec commande car un utilisateur peut faire une ou plusieurs commandes et une commande appartient à un seul utilisateur, dans une commandes on peut avoir un ou plusiurs produits et un produit peut faire partire de plusieurs commandes, donc il y a une relation N-N entre Commande et produit donc il faut une table intermediaire etc..

Une fois que vous avez fait la base de données, vous devez à travers les requetes SQL repondre à tous les cas d'utilisations que vous avez faites à l'etape 2, par exemple afficher tous les produit (select * from Produit), afficher toutes les categories (select* from Categorie), enregistrer un utilisateur (insert into Utilisateur (nom, prenom, etc..)) ainsi de suite. une fois que vous avez parcouru tous les cas d'utilisation.. alors vous pouvez commencer le developpement backend avec le language et les framework chosis

Je recomamde de faire le Backend sous forme d'API REST donc que chaque cas d'utilisation soit un endpoint REST comme cela vous pouvez utiliser et appler ce endpoint dans n'importe quel frontend que ce soit web ou mobile.

Voilà en grande ligne les étapes qu'on suit pour realiser un logiciel.

Voici un exemple pas à pas d'un backend en php basé sur les API REST sur le ecommerce et avec une approche bottom up car je parts de la BDD

https://jpdeffo.medium.com/quest-ce-qu-un-api-rest...

S'il y a des zones d'ombre je vais les éclaircir, il suffit juste de poser des questions en commentaire


Author: admin
19.12.2022, 11:28
Category: Other
Comments: 0
Views: 285
-

Share

Comments (0)
There are no comments yet.

Leave A Comment
processing...