Framework

Article abordant la notion de framework et de library

Quand on débute dans le développement web, on se retrouve très rapidement confronté à des mots qui peuvent faire peur. Framework, library, frontend, backend, API pour ne citer qu’eux.

Pourtant, il n’y a rien de compliqué derrière ces termes et il est important de les connaître car ils font partis intégrante du jargon du développeur.

La notion de Framework

Le mot framework est largement popularisé pour notamment définir les technologies frontend. Mais en réalité, c’est un abus de langage de la part du monde du dév car beaucoup de ces technologies frontend sont en réalité des bibliothèques.

La notion de Framework est importante à comprendre pour ne pas faire d’amalgame sur le choix d’une technologie. Un framework signifie en Français: cadre de travail, cadre d’application, ou encore infrastructure logicielle.

Dans le développement, ce sera bien souvent une technologie qui viendra avec tout un panel de « règles, « process », « manières de faire » propre à elle-même.

On retrouve pour ne citer que lui le fameux modèle MVC (Modèle-Vue-Contrôleur).

Un framework, par définition, est donc assez rigide, mais c’est le but ! Il est là pour encadrer et permettre à celui qui l’utilise de se concentrer sur la production de code et non sur l’infrastructure globale de l’application comme: comment nomme-t-on les dossiers ? Où place-t-on ce type de fichiers ? Quelle(s) convention(s) faut-il mettre en place pour architecturer correctement le code ? Comment démarrer un projet de la bonne façon ?

Prenons l’exemple d’une cuisine. Dès lors que l’on souhaite préparer un repas, il va être nécessaire d’utiliser des outils (casserole/poêle/couverts), respecter une recette, utiliser des ingrédients et respecter quelques règles pour ne pas mettre lefeu à la maison ! Tout ceci constitue un framework.

On pourrait pour encore mieux illustrer le système d’infrastructure logicielle parler des kits de cuisine.

Imaginons un kit pour faire des macarons ! Et bien il sera difficile de faire autre chose que des macarons avec le moule et la documentation fournit dans le kit. Par contre, comme tout est très détaillé et cadré, il sera très facile d’aller vite dans la création de macarons.

Il est donc là pour rigidifier un projet et permettre à une équipe de se concentrer sur ce qu’elle sait faire de mieux: développer.

La notion de Library

Forcément, si toutes les technologies (frontend ou backend) n’utilisent pas la notion de framework, cela signifie qu’il existe au moins une autre notion qui est utilisée..

La notion de Library, ou bibliothèque en français, est la notion manquante. Elle répond à un besoin unique et vient sans aucunes règles ou process contrairement à une infrastructure logicielle. Elle permet à un développeur de ne pas avoir à réinventer la roue à chaque fois qu’il débute un projet. L’outil est déjà prêt à l’utilisation !

Reprenons l’exemple d’une cuisine. Lorsque l’on souhaite faire cuire un aliment, il est nécessaire d’utiliser une poêle ou une casserole. Ne pas utiliser de bibliothèque reviendrait dans le cas précédent à recréer une nouvelle casserole ou poêle avant chaque repas ! On réinventerait la roue à chaque fois et perdrait

énormément de temps. La bibliothèque permet donc d’être créée une fois, puis d’être réutilisée à l’infinie.

Pour aller plus loin, une bibliothèque répondra toujours à un besoin, mais pourra être utilisée de différentes manières. Tout comme une poêle ou une casserole ! On peut très bien faire cuire des pâtes avec une casserole, des légumes ou encore de la viande. Chacun aura donc sa propre utilisation de la bibliothèque.

Une Library est donc beaucoup plus permissive mais aussi beaucoup plus flexible.

La montée en compétence est souvent beaucoup plus rapide et son utilisation infinie tant qu’elle correspond parfaitement à notre besoin..

Framework VS Library

Il intégrera toujours des Library dans son utilisation. Logique !

Une bibliothèque est indépendante, elle répond à un besoin très spécifique (cf: l’exemple de la cuisine).

Le cadre d’application, quant à lui, permet d’encadrer le projet tout en permettant l’utilisation de bibliothèques.

On pourrait voir une bibliothèque comme une voiture et le cadre comme le fait de conduire. L’outil (la voiture) est utilisable pour un besoin spécifique, cependant son utilisation est largement encadré par des règles, des endroits où l’on peut rouler et d’autres non.

Techniquement, quelles différences trouve-t-on entre un framework et une library ?

Si nous reprenons le modèle MVC, il va permettre de découper notre code en différentes couches et fera les connexions nécessaires entre elles sans que nous ayons besoin d’y penser.

On va simplement utiliser le modèle et laisser le système de structure faire son mécanisme avec le code qu’on lui a donné. On pourrait voir ça comme un développement à trou. Le système d’infrastructure logicielle nous dit où et quoi mettre pour qu’il fonctionne correctement et se chargera de tout le reste.

La library elle n’est qu’un outil, elle ne va donc pas utiliser notre code mais c’est nous qui allons utiliser son code. Elle va mettre à disposition des éléments pour nous faciliter la vie et c’est ensuite à nous de les utiliser lorsqu’on le souhaite et de la manière dont on le souhaite.

On peut donc arriver à un même résultat de différentes manières avec une bibliothèque tandis qu’avec un système d’infrastructure logicielle le chemin sera souvent le même car cadré.

Faut-il toujours utiliser un framework ou une library ?

La réponse à cette question sera assez subjective. On entendra des gens dire que oui et des gens dire que non.

Personnellement, et dans la plupart des projets d’envergures moyennes, je pense que l’utilisation d’une bibliothèque est le stricte minimum. Sauf si aucune bibliothèque n’existe ou ne répond entièrement à notre besoin.

Inutile de te dire que mélanger 4 grosses bibliothèques et n’utiliser que 20% de chacune ne représente aucun intérêt si ce n’est ralentir le chargement de ton projet, pourquoi pas même créer des conflits. Dans cette situation, il est préférable de prendre la bibliothèque qui couvre le plus de tes besoins et de

développer les besoins manquants. Autre solution selon le budget et le temps: développer sa propre bibliothèque réutilisable.

C’est d’ailleurs comme ça que la plupart des développeurs remportent les concours de développement: au fur et à mesure du temps, ils ont su se créer une ou plusieurs grandes bibliothèques répondant à beaucoup de besoins comme des tris sur des tableaux ou des objets, des concaténations complexes ou encore des calculs complexes et gagner ainsi beaucoup de temps lors d’un concours.

Quid des projets d’envergures ? Imaginons un cabinet comptable qui souhaite développer une grosse application pour que ses clients puissent entièrement gérer leur comptabilité ?

À mon sens, il répondra parfaitement aux besoins, beaucoup plus qu’une bibliothèque, pour plusieurs raisons.

Un projet sur le long terme possédera peut-être un turnover important sur l’équipe de dév. On a pu le voir, une library est souple, c’est à dire que chacun peut venir avec sa propre manière d’utiliser les outils mis à disposition à l’intérieur.

Difficile d’écrire de la main gauche quand on a toujours été habitué à écrire de la main droite, n’est-ce pas ? On aura donc forcément une perte de temps sur la montée en compétences des nouveaux membres de l’équipe.

Autre problématique qui rejoint le point précédent, il est fort possible que le choix de structurer le projet avec la bibliothèque ne soit pas optimale et qu’au bout d’un certain temps l’équipe se rend compte d’un goulot d’étrangement dans la création de code ou dans les performances de l’application. Il faudra consacrer du temps dans la refactorisation ou pire dans la modification profonde du fonctionnement de l’application..

À mon sens, il est donc nécessaire de connaître et maîtriser au moins un framework et au moins une bibliothèque afin d’être en mesure de s’adapter à l’envergure d’un projet.

Quels sont les avantages et inconvénients d’un système d’infrastructure logicielle ?

Avantages:

1- Gain de temps

2- Facilité à prendre en main selon la documentation

3- Facilité de pérennisation d’un projet

Inconvénients:

1- Courbe d’apprentissage lente puis exponentielle

2- Répond rarement à 100% des besoins

3- Obligation de suivre les règles imposées

Quels sont les avantages et inconvénients d’une library ?

Avantages:

1- Léger

2- Facilité à prendre en main selon la documentation

3- Facilité d’utilisation dans un projet

Inconvénients:

1- Pas de règles, il faut donc avoir sa propre manière de faire qui ne sera pas

forcément la même que les autres

2- Si la bibliothèque ne répond pas à 100% du besoin, on sera dans l’obligation

d’en utiliser une deuxième ou de développer nous-même la fonctionnalité

manquante

3- Obligation d’installer des bibliothèques complémentaires pour arriver à couvrir

ses besoins (Exemple avec React, Flux et Redux)

Thomas C

Formateur sur des parcours DWWM & CDA, j'ai décidé d'aller plus loin en te partageant mes connaissances en vitesse supersonic 🚀 Prends ta revanche sur la vie !

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Formation Développeur Web