Framework







Page d'aide sur l'homonymie Pour l’article homonyme, voir Framework (logiciel).

En programmation informatique, un framework (appelé aussi infrastructure logicielle[1], cadre applicatif, cadre d'applications, cadriciel, socle d'applications[2] ou encore infrastructure de développement[3]) désigne un ensemble cohérent de composants logiciels structurels, qui sert à créer les fondations ainsi que les grandes lignes de tout ou d’une partie d'un logiciel (architecture). Un framework se distingue d'une simple bibliothèque logicielle principalement par :



  • son caractère générique, faiblement spécialisé, contrairement à certaines bibliothèques ; un framework peut à ce titre être constitué de plusieurs bibliothèques chacune spécialisée dans un domaine. Un framework peut néanmoins être spécialisé, sur un langage particulier, une plateforme spécifique, un domaine particulier : communication de données, data mapping, etc. ;

  • le cadre de travail (traduction littérale de l'anglais : framework) qu'il impose de par sa construction même, guidant l'architecture logicielle voire conduisant le développeur à respecter certains patrons de conception ; les bibliothèques le constituant sont alors organisées selon le même paradigme.


Les frameworks sont donc conçus et utilisés pour modeler l'architecture des logiciels applicatifs, des applications web, des middlewares et des composants logiciels. Les frameworks sont acquis par les informaticiens, puis incorporés dans des logiciels applicatifs mis sur le marché, ils sont par conséquent rarement achetés et installés séparément par un utilisateur final.




Sommaire






  • 1 Description


    • 1.1 Objets


    • 1.2 Inversion de contrôle




  • 2 Traduction française


  • 3 Exemples


  • 4 Notes et références


  • 5 Voir aussi


    • 5.1 Articles connexes


    • 5.2 Lien externe







Description |


Un framework est un ensemble d'outils et de composants logiciels organisés conformément à un plan d'architecture et des patterns, l'ensemble formant ou promouvant un « squelette » de programme. Il est souvent fourni sous la forme d'une bibliothèque logicielle, et accompagné du plan de l'architecture cible du framework[4].


Un framework est conçu en vue d'aider les programmeurs dans leur travail. L'organisation du framework vise la productivité maximale du programmeur qui va l'utiliser — gage de baisse des coûts de construction et maintenance du programme. Le contenu exact du framework est dicté par le type de programme et l'architecture cible pour lequel il est conçu[4].


On trouve différents types de frameworks :




  1. framework d'infrastructure système : pour développer des systèmes d'exploitation, des interfaces graphiques, des outils de communication (exemple : Framework .Net, Struts) ;


  2. framework d'intégration intergicielle (middleware) : pour fédérer des applications hétérogènes. Pour mettre à disposition différentes technologies sous la forme d'une interface unique ;


  3. frameworks d'entreprise : pour développer des applications spécifiques au secteur d'activité de l'entreprise ;


  4. frameworks de gestion de contenu : sont les fondations d'un système de gestion de contenu[5] — pour la création, la collecte, le classement, le stockage et la publication de « biens numérisés ».


Les principaux avantages de ces frameworks sont la réutilisation de leur code, la standardisation du cycle de vie du logiciel (spécification, développement, maintenance, évolution), ils permettent de formaliser une architecture adaptée au besoin de l'entreprise. Ils tirent parti de l'expérience des développements antérieurs.



Objets |


En programmation orientée objet, un framework est typiquement composé de classes mères qui seront dérivées et étendues par héritage en fonction des besoins spécifiques à chaque logiciel qui utilise le framework[6].
Avec un framework orienté objets, le programmeur qui utilise le framework pourra personnaliser les éléments principaux du programme par extension, en utilisant le mécanisme d'héritage : créer des nouvelles classes qui contiennent toutes les fonctionnalités que met en place le framework, et en plus ses fonctionnalités propres, créées par le programmeur en fonction des besoins spécifiques à son programme. Le mécanisme d'héritage permet également de transformer des fonctionnalités existant dans les classes du framework[7].



Inversion de contrôle |


Article détaillé : Inversion de contrôle.

Alors que les bibliothèques de classes sont typiquement passives : les opérations des classes sont exécutées sur demande du programme qui les utilise, les frameworks sont typiquement actifs : le déroulement des opérations dans un programme est dirigé par le framework qu'il utilise, par des mécanismes tels que les fonctions de rappel et les événements, selon le principe « ne m'appelez pas, je vous appellerai. »


L'inversion de contrôle fait partie de l'architecture typique d'un framework[8].



Traduction française |


En programmation informatique, un framework se traduit par structure logicielle, bien que le terme framework reste majoritairement utilisé. D'autres tentatives de francisation du terme ont été faites ; on trouve ainsi parfois les termes environnement de développement, recommandé au Journal officiel[9], et cadre d'applications, proposé par l'Office québécois de la langue française[10], canevas ou cadriciel – terme en usage depuis au moins 1997[réf. nécessaire], aussi socle d'applications.


Attention un framework ne doit pas être considéré comme une plate-forme, dans la mesure où il n'intègre pas d'environnement d'exécution système ou applicatif.



Exemples |








































































































































































































































































Quelques exemples
Nom
Usage
Architecture cible
Langage
Auteur
Licence

ActionScript Foundry

application web

Adobe Flex

ActionScript et Java
ServeBox


Apache Cocoon

application web - servlet
?

Java, XML

Apache Software

Logiciel libre

Spring

application web

Multiplate-forme

Java

Spring Source

Logiciel libre

Apache Struts

application web

Modèle-Vue-Contrôleur

Java

Apache Software

Logiciel libre

Twitter Bootstrap

application web

Modèle-Vue-Contrôleur
HTML/CSS/JAVASCRIPT

Twitter

Licence MIT

Catalyst

logiciel applicatif

Modèle-Vue-Contrôleur

Perl


Logiciel libre

Cocoa

logiciel applicatif

Cocoa

Objective C

Apple


CubicWeb

Plate-forme de développement web sémantique

Multiplate-forme

Python

Logilab

LGPL

Django

application web

Modèle-Vue-Contrôleur

Python
?

Logiciel libre

Dojo

applet

AJAX

JavaScript
Fondation Dojo

Eclipse Modeling Framework (*)

modélisation des données

Multiplate-forme

(ouvert)

Fondation Eclipse

Logiciel libre

Eclipse RCP

Rich Client Platform
IDE Eclipse Platform, Multiplate-forme

(ouvert)

Fondation Eclipse

Logiciel libre

eZ Publish

application web

système de gestion de contenu

PHP
eZ Systems AS

Logiciel libre

JavaServer Faces

application web

Composant

Java


Logiciel libre

FxEngine Framework

traitement numérique du signal, plugin

Filtres et tubes

C++
SMProcess


Grails

application web

Modèle-Vue-Contrôleur

Groovy
Graeme Rocher, Guillaume Laforge, Marc Palmer, Dierk Koenig et Steven Devijver


Google Guice

application web

Multiplate-forme

Java
Bob Lee, Kevin B, Jesse Wilson, Christian Gruber

Logiciel libre

Hibernate

persistance & mapping

Java Persistance API

Java

JBoss

Logiciel libre

Java SE (**)
framework générique pour Rich Client Platform

Multiplate-forme

Java
Scala
JScheme, implémentation de Scheme
Clojure (dialecte de Lisp)
JRuby
Jython
Rhino (moteur JavaScript)

Sun Microsystems puis Oracle Corporation

Logiciel libre

Java EE (**)
framework professionnel avec support du distribué

Java ME (**)
framework pour application mobile

JavaFX (**)
framework pour Rich Internet Application

Kivy
framework pour application mobile

Multiplate-forme

Python
Cython
Kivy organization

Logiciel libre

MARF

traitement du signal et des langues

pipeline

Java
Serguei Mokhov, Stephen Sinclair


Microsoft Foundation Class

logiciel applicatif

Modèle-Vue-Contrôleur

C++

Microsoft

Propriétaire

.Net (**)

logiciel applicatif, application web, composant logiciel

ASP.NET

C#, Visual Basic .NET

Microsoft

Propriétaire

Ruby on Rails

application web

Modèle-Vue-Contrôleur

Ruby
David Heinemeier Hansson et

Logiciel libre

Symfony

application web

Modèle-Vue-Contrôleur

PHP
Sensio Labs

Logiciel libre

SoJo FrameWork

application web

Modèle-Vue-Contrôleur

HTML/CSS
InGamesStudio

Logiciel libre

TopLink

persistance & mapping

Java Persistance API

Java

Oracle Corporation

W3.CSS

application web
Google Material Design

CSS

W3Schools

Logiciel libre

Zend Framework

application web

Modèle-Vue-Contrôleur

PHP
Zend Technologies

Logiciel libre

Zope

gestion de contenu

Zope

Python
Zope Corporation

Logiciel libre

(*) Certains frameworks comme Eclipse ou Apache constituent davantage des méta-frameworks, ou frameworks de frameworks, dans la mesure où ils permettent, selon les modules qui leur sont installés, de se réorienter vers différentes activités informatiques.


(**) Microsoft .NET et les Java Platform peuvent être vus indifféremment comme des frameworks, ou comme des plate-formes logicielles selon que l'on considère leurs seules librairies de développement, ou leur environnement d'exécution.


D’autres exemples de frameworks peuvent être trouvés dans la page relative à l'inversion de contrôle.


Notes et références |





  1. « Framework ou infrastructure logicielle : définition et traduction », JDN,‎ 23 avril 2018(lire en ligne)


  2. Le grand dictionnaire terminologique de l’Office québécois de la langue française, 2015


  3. Sandy Hacyan, « Le framework : un socle de développement structurant », sur journaldunet.com, Le Journal du Net, 3 avril 2008(consulté le 2 mai 2017)


  4. a et b(en) Ken Chazotte, Build Your Own Framework with Visual FoxPro, Hentzenwerke - 2004, (ISBN 9781930919532)


  5. (en) R. J. Townsend, Foundation Drupal 7: Learn how to Use the Drupal Framework to Quickly Build Feature-rich Web Sites, Apress - 2010, (ISBN 9781430228080)


  6. (en) Nicolas Guelfi, Egidio Astesiano et Gianna Reggio, Scientific engineering for distributed Java applications, Springer - 2003, (ISBN 9783540006794)


  7. (en) Douglas C. Schmidt et Stephen D. Huston, C++ Network Programming: Systematic reuse with ACE and frameworks, Addison-Wesley - 2003, (ISBN 9780201795257)


  8. (en) Stephen D. Huston, James C. E. Johnson, Umar Syyid, The ACE programmer's guide: practical design patterns for network and systems programming, Addison-Wesley - 2004, (ISBN 9780201699715)


  9. « environnement de développement », sur France Terme, 16 septembre 2014(consulté le 24 août 2017)


  10. Fiche terminologique de l'Office québécois de la langue française




Voir aussi |


.mw-parser-output .autres-projets ul{margin:0;padding:0}.mw-parser-output .autres-projets li{list-style-type:none;list-style-image:none;margin:0.2em 0;text-indent:0;padding-left:24px;min-height:20px;text-align:left}.mw-parser-output .autres-projets .titre{text-align:center;margin:0.2em 0}.mw-parser-output .autres-projets li a{font-style:italic}

Sur les autres projets Wikimedia :





Articles connexes |



  • Catégorie:Framework de programmation

  • Liste de frameworks PHP

  • Liste de frameworks Java

  • Cadre d'application AJAX


  • Liste de systèmes de gestion de contenu#Frameworks orientés gestion de contenu (CMS : système de gestion de contenu)

  • Liste des frameworks de test unitaire

  • CSPro



Lien externe |


  • MIReG metadata framework



  • Portail de la programmation informatique Portail de la programmation informatique
  • Portail d’Internet Portail d’Internet



Popular posts from this blog

What visual should I use to simply compare current year value vs last year in Power BI desktop

How to ignore python UserWarning in pytest?

Alexandru Averescu