Qu’est-ce qu’un framework ?

Publié le 10 juin 2019

Temps de lecture 11 minutes

En commençant la programmation, on découvre HTML, CSS, PHP, JavaScript… Mais rapidement, on entend aussi parler de Symfony, Spring, Laravel, Angular... Ce ne sont pas des langages de programmation, mais des frameworks. Dans cet article, nous allons découvrir ce qu’est un framework !

Comment définir un “framework” ?

Littéralement, un framework signifie “cadre de travail”. Véritable boîte à outils des temps modernes, il permet aux développeurs d’être plus efficaces dans la conception d'applications web, entre autres, en offrant une architecture et des composants logiciels prêts à l’emploi et réutilisables.

On pourrait comparer un framework à une usine de voitures. La voiture serait le produit final, et le framework serait l’usine. Dans cette usine, on a déjà tout ce qu’il faut en stock : les robots, les postes de travail, les composants d’une voiture (comme le volant ou encore les roues), etc. Et parmi ses composants, on va venir chercher ceux dont on a besoin pour les réutiliser.

Une fois ce squelette d’application ou de logiciel (le fameux “framework”) produit, les autres développeurs n'ont plus besoin de réinventer la roue à chaque nouveau projet. On peut notamment se pencher sur le concept DRY : Don’t Repeat Yourself, en français “Ne vous répétez pas”. Le DRY est “une philosophie en programmation informatique consistant à éviter la redondance de code au sein d’une application afin de faciliter la maintenance, le test, le débogage et les évolutions de cette dernière.” - Wikipédia

Les frameworks sont généralement conçus par une communauté de développeurs. Ils fonctionnent par langage de programmation et permettent de développer tous types de supports : applications mobiles, logiciels de bureau, plateformes web, jeux vidéo, etc. Mais l’on peut également créer son propre framework.

Il existe différentes parties dans les frameworks, on peut citer par exemple les outils d’authentification, de gestion de base de données, d’affichage ou encore d’interaction utilisateur.

Il faut avoir en tête qu’un framework répond à un besoin précis. Et pour choisir celui qui nous convient le plus, il faut définir efficacement son besoin en amont.

Pourquoi utiliser un framework ?

Quels sont les avantages d’un framework ?

Gagner du temps

Les frameworks permettent de gagner du temps ! En effet, ils évitent au développeur de devoir tout développer de A à Z, c’est-à-dire réécrire ou réinventer chaque ligne de code (concept DRY). Grâce aux frameworks, les développeurs peuvent se concentrer sur la réalisation de fonctionnalités spécifiques à leur projet plutôt que de passer du temps sur des choses récurrentes à chaque projet comme l’architecture, la sécurité de base de l’application, etc.

Avoir un cadre de travail clair et organisé

Un framework fournit une hiérarchie de fichiers et dossiers optimisés. Grâce à cette séparation et classification de fichiers, l’interface s’en voit plus claire et son utilisation simplifiée - pour qui sait l’utiliser. Si les guidelines du framework sont respectées, on obtient alors une structure et une unité cohérente au code afin d’en améliorer sa qualité.

Être plus efficace et optimiser le travail en équipe

Un framework de développement met à disposition diverses architectures formalisées en fonction des besoins pour lesquels celui-ci est utilisé. Le développement en équipe est donc facilité, et la répartition des tâches au sein de cette même équipe est plus simple puisque chacun a sa “zone” de travail.   

De plus, quand un développeur arrive dans une équipe travaillant sur un framework déjà établi et qu’il maîtrise, il trouvera ses repères plus facilement et plus rapidement. Nous pourrions comparer cela à un véhicule, la difficulté serait ici d’apprendre à conduire, mais une fois chose faite, passer d’un véhicule à un autre est un “jeu d’enfant”. Il en est de même pour le framework, une fois que l’on sait le manipuler, passer d’une application basée sur ce cadre de travail a une autre est simplifié, car l’architecture reste inchangée.

Assurer une maintenance et une évolution optimales

Un framework étant développé par une communauté de développeurs, ou parfois par des organismes privés, la maintenance et les évolutions de ce dernier sont d’autant plus optimales et les mises à jour régulières.

En utilisant un framework, il n’y plus vraiment à se soucier des derniers standards du web, des nouvelles compatibilités entre services, etc. La communauté s’occupe de “tout”, et met elle-même à jour l'outil. Le développeur profite donc de ces mises à jour, autant de choses en moins à penser pour l’équipe de développement web qui peut ainsi consacrer ce temps gagné dans la recherche de valeur ajoutée et le développement du projet en lui-même.

Accroître et optimiser la sécurité

La plupart du temps, le framework couvre et permet de se prémunir d’une grande partie des failles de sécurité rencontrées lors de la conception d’une application.

Cela n'empêche cependant pas le développeur, si nécessaire, d’intervenir et d’optimiser la sécurité et la performance de leur application en surchargeant les fonctionnalités pré-établies par le framework.

Une communauté d’utilisateurs “infini”

Vous êtes rarement seul à utiliser un cadre de travail spécifique. Si vous rencontrez un problème, un bug, ou si vous vous posez des questions précises, la communauté d’utilisateurs est là pour vous aider. Une recherche efficace sur Stack Overflow (entre autres), et la solution sera probablement devant vos yeux.

Pour vous donner une idée, Symfony ou React sont des frameworks utilisés par plus d’un million de développeurs, autant de personnes qui pourront vous aider en cas de blocage.

Quels sont les inconvénients d’un framework ?

Différentes courbes d’apprentissage

Maîtriser un framework peut prendre du temps et ce n’est pas simple du tout ! Toutefois, chaque framework est doté de sa propre courbe d’apprentissage : certains permettent au développeur de monter en compétences rapidement tandis que d’autres nécessitent un temps d’apprentissage plus long.

Connaissance des concepts généraux requise

Pour comprendre et interpréter correctement les principes de base des frameworks et effectuer des choix techniques judicieux, il est indispensable de maîtriser à minima les concepts généraux de fonctionnement interne, de comprendre les bonnes pratiques et, bien entendu, d’avoir une connaissance correcte du langage et du concept de programmation utilisés par le framework.

Limites sur les fonctionnalités complexes

Comme son nom l’indique, un framework est un cadre de travail. Il existe donc certaines limites d’utilisation de ce dernier, par exemple : un framework nous impose souvent ses propres choix en termes d’architecture de notre code. Lorsqu’un développeur web souhaite accéder à des fonctionnalités du langage qui ne sont pas gérées par le framework, il peut rencontrer des difficultés. Le conseil que l’on peut donner à un développeur qui souhaite utiliser un framework est de se laisser guider par ce dernier.

Ils sont trop tentants !

Ils nous donnent l’impression que tout est plus simple grâce à eux, mais il n’y a rien de plus faux ! Un framework impose une architecture lourde et complexe aux applications, alors qu'elles n’en ont parfois pas besoin.

Quel qu'il soit, le framework répond à un besoin précis, et avancé ! Inutile d’utiliser une Ferrari pour aller acheter son pain au bout de la rue, il y a plus de risques de l'abîmer qu’autre chose. C’est pareil pour un framework : si vous souhaitez faire un site statique avec quelques pages, il vous complexifie la tâche plus qu’il ne vous la simplifie, les technos de base HTML/CSS et JS vous suffiront !

Gardez en tête une chose : avant de vous lancer dans le développement via framework, définissez efficacement votre besoin afin d'établir une véritable nécessité à l’utilisation d’un cadre de travail spécifique.

Quels sont les différents types de frameworks ?

Quelques exemples de frameworks :

Avant toute chose, il est important de savoir que les frameworks ne sont pas en concurrence les uns les autres ! Souvenez-vous de ce que l’on a dit plus haut : chacun d’entre eux répond à un besoin spécifique.

En PHP, deux sortent du lot : Symfony et Laravel

Symfony, lancé en 2005 par Fabien Potencier et aujourd’hui maintenu par SensioLabs, est un framework de renommée mondiale, bien que majoritairement utilisé par une communauté francophone. Découvrez les  nombreuses applications qui utilisent ou reposent sur le projet Symfony.

Laravel, lancé en 2011 par Taylor Otwell, est l’un des frameworks les plus utilisés dans le monde. Petite anecdote : certaines parties de Laravel reposent sur Symfony.

Pour en savoir plus sur les frameworks PHP, c’est par ici !

En JS : NodeJs, VueJs, Angular et React

Nous pouvons notamment citer NodeJs, Angular ou encore React - j’entends certaines dents grincer d’ici, mais attendez de lire jusqu’au bout !

  • NodeJs, doté de hautes performances et utilisable dans de nombreuses situations, a permis une grande avancée dans le monde de JavaScript. Fondé en 2009 par Ryan Dahl, il a fait tomber le mur entre le frontend et le backend. C’est lui qui a rendu possible la réalisation d’applications back-end en JavaScript. NodeJs aide notamment les entreprises dans la création d’applications évolutives et capables de gérer des connexions simultanées à haut débit. Par exemple, des entreprises comme Google ou encore PayPal utilisent NodeJs sur certaines parties de leurs applications.
  • VueJs, créé par Evan You en 2014, est un cadre de travail évolutif basé sur JavaScript dont l’approche est orientée composants. On l’utilise généralement pour la partie front-end. Il est doté d’une courbe d’apprentissage progressive, qui lui permet d’être “simple” à prendre en main. Ses très bonnes performances et son poids léger (30 ko) font de lui l’un des frameworks JavaScript les plus rapides. Nous pouvons citer quelques sites qui utilisent VueJs :  Adobe, Alibaba ou encore Nintendo.
  • Angular est le framework front-end officiel de Google et développé par ce dernier. Né en 2016, il offre des solutions prêtes à l’emploi et permet de créer des composants en JavaScript. C’est un très bon framework pour développer des applications web hautement interactives. Orienté composant, il vous apporte une base de code solide. Cependant, il présente une certaine complexité dans sa courbe d’apprentissage, et le développement d’une application sous Angular implique nécessairement son utilisation de A à Z. Il n’est pas possible de changer de framework entre temps. Vous serez également obligé de passer par l'étape TypeScript pour utiliser Angular !
  • React n’est pas un framework - voilà pourquoi certaines dents grinçaient un peu plus haut. On le qualifie plutôt de “bibliothèque front-end”. Née en 2013 et développée par Facebook, elle est dotée d’une importante communauté Open Source (qui s’appuie sur des méthodes de travail collaboratives et décentralisées). Malgré sa courbe d’apprentissage relativement rapide, son utilisation sur du long terme s’en voit légèrement complexifiée. Étant face à une librairie, React met à disposition des composants réutilisables, mais s'affranchit de l’architecture logiciel.

On a rien sans rien ! Le développement est passionnant et accessible à tous, et certains frameworks sont simples à utiliser au début, mais deviennent complexes à mesure que l’application grossit. À l’inverse, d’autres nécessitent un apprentissage plus long, mais des facilités peuvent émerger une fois sur l’application. C’est un choix à faire en fonction du projet et de vos méthodes.

Quoiqu’il en soit, l’utilisation d’un framework requiert la connaissance du langage dans lequel il est développé. Pour pouvoir utiliser Symfony, Laravel et bien d’autres, il vous faut être à l’aise avec PHP et la POO (Programmation Orientée Objet). En ce qui concerne React, Angular ou NodeJS, la connaissance de JavaScript est un passage obligatoire.

Enfin, il existe encore bien d’autres frameworks de développement web, de quoi satisfaire toutes vos envies d’apprendre !


Si vous êtes intéressés par le développement web, découvrez le métier de Développeur sur notre page dédiée. Et si vous avez des questions, n'hésitez pas à me contacter sur mon compte LinkedIn !