Qu'est-ce qu'un framework ?
Cadre de travail, boite à outils…
Les informaticiens emploient fréquemment le mot framework, pour dénoter des réalités parfois bien diféfrentes…
Traduit litéralement, le mot anglais framework signie « cadre de travail ». Cette traduction est plutôt heureuse pour comprendre le concept qui se cache derrière le terme. Un framework de développement est donc :
- un ensemble cohérent de composants éprouvés et réutilisables (bibliothèques, classes, helpers…) ;
- un ensemble de préconisations pour la conception et le développement d'applications.
Typologies de frameworks
Tous les frameworks ne répondent pas aux même besoins, et plusieurs frameworks peuvent être utilisés conjointement dans certaines situations.
On trouve notamment des frameworks applicatifs, par exemple les frameworks d'applications web (comme Django, Ruby on Rails, Symphony ou encore Catalyst) ou les frameworks de développement d'applications de bureau (Cocoa sous Mac, Qt en multi-plateforme…).
On trouve également des frameworks répondant de manière spécifique à certaines problématiques de développement, comme les frameworks de logging (ex. : Log4J en Java), les frameworks de persistance et d'ORM (ex. : Hibbernate en Java, SQLAlchemy en Python, Propel en PHP…), les frameworks de présentation de contenu web (Bootstrap, Foundation…).
Pourquoi utiliser un framework ? Avantages…
Les frameworks de développement ont de multiples avantages, et sont l'une des évolutions les plus importantes des pratiques de conception et développement informatique de ces 20 dernières annés. L'âge d'or de la bidouille où le codeur réinventait le fil à couper le beurre à chaque projet est belle et bien terminée : les bons développeurs d'aujourd'hui sont généralement d'excellents intégrateurs de solutions de différents niveaux de granularité.
Pourquoi réécrire ce que d'autres ont déjà écrit (et testé) ?
Toutes les applications web gèrent des comptes utilisateurs, de l'authentification, la connexion à différente sources de données, etc. Ces problématiques sont tellement répandues qu'elles ont été traitées maintes et maintes fois : les frameworks de développement web intègrent quasiment tous des outils simples, efficaces et surtout éprouvés pour gérer ces cas d'utilisation.
Industrialisation, rationalisation, design patterns…
Les bons frameworks ne sont pas que des boites à outils, des bibliothèques de modules réutilisables. Par leur incitation au développement selon les bonnes pratiques de l'état de l'art, ils permettent à leurs utilisateurs de développer des applications plus robustes, plus évolutives et plus industrialisables. Un exemple de ces bonnes pratiques encouragées par Django est le concept DRY (ne vous répétez pas !).
Profitez des évolutions !
Pour gérer la mise en page de votre site, vous avez décidé de tout faire « à la main », car vous n'êtes pas le derniers des nuls en CSS. Dommage, 3 ans après c'est l'époque du tout « responsive design » : si vous aviez utilisé un framework front-end CSS/JS, votre site le serait devenu quasi-automatiquement quand les éditeurs du framework ont introduit cette fonctionnalité et que vous auriez mis à jour les librairies ! Certes, vous avez toujours la possibilité de revoir tout votre design pour rendre votre site responsive, à la main mon cousin…
Inconvénients de l'utilisation de frameworks
« Inconvénient » n'est peut être pas le terme approprié, mais il existe en tout cas quelques points de vigilence à observer lorsqu'il est question d'adopter un framework, notamment dans un contexte d'entreprise.
Courbe d'apprentissage
Il faut d'abord savoir que tous les frameworks n'ont pas la même courbe d'apprentissage : certains frameworks permettent aux développeurs de monter en compétence rapidement (ex. Code Igniter en PHP), d'autres demandent un temps d'apprentissage beaucoup plus long (ex. : Java Spring).
Connaissances préalables : design patterns et bonnes pratiques d'ingénierie informatique
D'autre part, comme vu dans les sections précédentes, les frameworks implémentent généralement des design patterns et bonnes pratiques de développement : c'est très bien, mais une méconaissance de ces concepts généraux (indépendants d'un langage ou d'un framework, comme par exemple MVC, les factories, les décorateurs, les singletons, etc.) est généralement synonyme de mauvaise compréhension/interprétation des principes de base des frameworks, et donc de choix techniques peu judicieux.
Couplage et dépendance
Enfin, il faut savoir que l'utilisation d'un framework est également synonyme de dépendance (d'une certaine manière, de couplage) vis-à-vis de ce framework. La réingénirie nécessaire au changement de framework est généralement très lourde et coûteuse (et proportionnelle à la taille du SI…).