Assiste.com - Sécurité informatique - Vie privée sur le Web - Neutralité d'Internet

cr  01.04.2012      r+  22.10.2024      r-  22.10.2024      Pierre Pinard.         (Alertes et avis de sécurité au jour le jour)

Qu'est-ce qu'un framework ?

Un « framework » est un « Cadre de travail », un ensemble de composants logiciels permettant aux développeurs de développer plus rapidement et à moindre coût des applications.

Le principe qui préside au développement de « frameworks » est le DRY (« Don't Repeat Yourself » - « Ne vous répétez pas ») élevé, non plus au niveau de briques d'une application, mais au niveau de concepts de développement, d'architecture de production, d'ossature (de charpente) sans spécialisation. Un « Framework » impose une méthodologie de développement chez/pour un éditeur, un art (pas une simple optimisation) du développement.

Un « framework » n'est pas un programme qui peut être exécuté en tant que tel.

Il existe de nombreux frameworks. Chaque grand éditeur de logiciels a son ou ses frameworks.

Microsoft .NET Framework (prononcé DOT NET Framework) n'est que l'un des frameworks de Microsoft.

KDE, par exemple, est un framework libre fournissant une couche d'abstraction logicielle multiplateforme (grâce au kit de développement Qt de Trolltech), permettant à des applications développées, de manière unique, dans cet environnement, de fonctionner simultanément sous Unix (dont Unix Solaris), Linux, BSD, Mac OS X, Windows ...). Les applications disponibles sous KDE sont, historiquement, un environnement de bureau (cet environnement de bureau est celui par défaut de certaines distributions Linux comme OpenSuse, Kubuntu ou Mandriva, et est (avec GNOME) la principale alternative libre et grand public aux interfaces Windows et Mac OS X). D'autres applications sont innombrables : voir Wikipédia.

Exemples de Frameworks :

  • .Net Framework est un framework de développement d'applications de Microsoft.

  • Stagefright est un framework multimédia d'Android.

  • Media Foundation est un framework multimédia de Microsoft.

  • QuickTime est un framework multimédia de Microsoft Windows et Apple Mac OS.

  • DirectShow est un framework multimédia de Microsoft Windows.

  • GStreamer est un framework multimédia d'Apple Mac OS.

  • FFmpeg est un framework multimédia de Linux.

  • GStreamer est un framework multimédia de Linux.

  • xine est un framework multimédia de Linux.

  • MLT est un framework multimédia de Linux.

  • Zend Framework est un framework pour applications Web (Logiciel libre).

  • Etc.



Le concept de « DRY »

DRY (« Don't Repeat Yourself » - « Ne vous répétez pas »)

L'idée fondatrice des DLL et des Frameworks (par exemple les « Microsoft .Net Frameworks ») est le principe, en programmation informatique, du DRYDon't Repeat Yourself » - « Ne vous répétez pas »). Ce principe est né de manière concomitante aux très grands projets informatiques, nécessitant des millions de lignes de code par application. Ce principe était déjà largement utilisé, bien que non formalisé, au début des années 1970. L'auteur de cet article mettait en œuvre ce principe et l'imposait aux autres, dès 1972, alors qu'il écrivait en Assembleur, Cobol, Fortran...

On réécrit les mêmes « routines » (les mêmes séquences d'instructions), de très nombreuses fois, au sein d'une unique application et, plus, à travers toutes les applications d'un même projet et, pire encore, à travers toutes les applications de tous les projets que l'on développe.

Le principe de développer des briques logiciels, des bibliothèques de fonctions et services, vient de cette observation, dopée aux fantasmes des informaticiens :

  • Ne pas réécrire 36 fois la même chose (éviter la redondance de code à travers tout un projet, voire toute la production logicielle de l'éditeur) de manière à gagner du temps et de la place en mémoire, d'autant que dans les années 1970, la mémoire coûtait une fortune.

  • Écrire un segment de code une bonne fois pour toutes, de manière parfaite et universelle (documenté, non ambigüe, optimisé...).

  • Gagner en vitesse de développement.

  • Gagner en fiabilité et stabilité (s'appuyer sur des fondations éprouvées).

  • Gagner en vitesse de débogage et tests (élever son point de vue et se concentrer sur la conception et l'architecture de l'application).

  • Gagner en maintenance et évolution (documentation, universalité, portabilité...).



  • Framework - Composants logiciels coordonnés