Framework

{{#ifeq:||Un article de Ziki, l'encyclopédie libre.|Une page de Ziki, l'encyclopédie libre.}}
(Redirigé depuis Cadriciel)

Modèle:Titre en italique Modèle:Voir homonyme

En programmation informatique, un Modèle:Lang (appelé aussi infrastructure logicielle<ref>Modèle:Article</ref>, infrastructure de développement<ref>Modèle:Lien web</ref>, environnement de développement<ref name="FranceTerme">Modèle:FranceTerme.</ref>, socle d'applications<ref name="GDT">Modèle:GDT.</ref>, cadre d'applications<ref name="GDT"/> ou cadriciel<ref name="GDT"/>) est un ensemble cohérent de composants logiciels structurels qui sert à créer les fondations ainsi que les grandes lignes de tout ou partie d'un logiciel, c'est-à-dire une architecture.

Un Modèle:Lang se distingue d'une simple bibliothèque logicielle principalement, d'une part par son caractère générique, faiblement spécialisé, contrairement à certaines bibliothèques ; un Modèle:Lang peut à ce titre être constitué de plusieurs bibliothèques, chacune spécialisée dans un domaine. Un Modèle:Lang peut néanmoins être spécialisé dans un langage particulier, une plateforme spécifique, un domaine particulier : communication de données, data mappingModèle:Etc.. D'autre part, il impose un cadre de travail, dû à 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 Modèle:Lang sont donc conçus et utilisés pour modeler l'architecture des logiciels applicatifs, des applications web, des Modèle:Lang et des composants logiciels. Les Modèle:Lang 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.

Description

Un Modèle:Lang 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, un canevas. Il est souvent fourni sous la forme d'une bibliothèque logicielle et accompagné du plan de l'architecture cible du Modèle:Lang<ref name="FoxPro">{{#invoke:Langue|indicationDeLangue}} Ken Chazotte, Build Your Own Framework with Visual FoxPro, Hentzenwerke, 2004, Modèle:ISBN.</ref>.

Un Modèle:Lang est conçu en vue d'aider les programmeurs dans leur travail. L'organisation du Modèle:Lang 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 Modèle:Lang est dicté par le type de programme et l'architecture cible pour lequel il est conçu<ref name="FoxPro" />.

On trouve différents types de Modèle:Lang :

Les principaux avantages de ces Modèle:Lang 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 Modèle:Lang 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 l'utilise<ref>{{#invoke:Langue|indicationDeLangue}} Nicolas Guelfi, Egidio Astesiano et Gianna Reggio, Scientific engineering for distributed Java applications, Springer - 2003, Modèle:ISBN</ref>. Avec un Modèle:Lang orienté objets, le programmeur qui l'utilise 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 Modèle:Lang, ajoutées à 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 Modèle:Lang<ref>{{#invoke:Langue|indicationDeLangue}} Douglas C. Schmidt et Stephen D. Huston, C++ Network Programming: Systematic reuse with ACE and frameworks, Addison-Wesley - 2003, Modèle:ISBN</ref>.

Inversion de contrôle

Modèle:Article détaillé

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 Modèle:Lang sont typiquement actifs : le déroulement des opérations dans un programme est dirigé par le Modèle:Lang qu'il utilise, par des mécanismes tels que les fonctions de rappel et les événements, selon le principe Modèle:Citation. L'inversion de contrôle fait partie de l'architecture typique d'un Modèle:Lang<ref>{{#invoke:Langue|indicationDeLangue}} 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, Modèle:ISBN</ref>.

Traduction française

En programmation informatique, le terme Modèle:Citation étrangère se traduit par « structure logicielle », bien que le terme anglais reste majoritairement utilisé. D'autres tentatives de francisation du terme ont été faites ; on trouve ainsi parfois les termes environnement de développement, recommandé par la Commission d’enrichissement de la langue française<ref name="FranceTerme"/>, et cadre d'applications, socle d’applications ou cadriciel recommandés par l'Office québécois de la langue française<ref name="GDT"/>.

Un framework est distinct d'une plateforme, 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 Multiplateforme 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 Plateforme de développement web sémantique Multiplateforme Python Logilab LGPL
Django application web Modèle-Vue-Contrôleur Python Django Software Foundation Logiciel libre
Dojo applet AJAX JavaScript Fondation Dojo
Eclipse Modeling Framework (*) modélisation des données Multiplateforme (ouvert) Fondation Eclipse Logiciel libre
Eclipse RCP Rich Client Platform IDE Eclipse Platform, Multiplateforme (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 Multiplateforme 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 Multiplateforme 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 Multiplateforme Python
Cython
Kivy organization Logiciel libre
Laravel applications web Multiplateforme,
Modèle-Vue-Contrôleur
PHP Équipe de développement Laravel Licence MIT
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 Modèle:Lang comme Eclipse constituent davantage des méta-Modèle:Lang, ou Modèle:Lang de Modèle:Lang, dans la mesure où ils permettent, selon les modules qui en sont installés, de se réorienter vers différentes activités informatiques.

(**) Microsoft .NET et les Java Platforms peuvent être vus indifféremment comme des Modèle:Lang ou comme des plateformes logicielles, selon que l'on considère leurs seules librairies de développement ou leur environnement d'exécution. Modèle:Article détaillé

Notes et références

Modèle:Références

Voir aussi

Modèle:Autres projets

Articles connexes

Liens externes

Modèle:Liens

Modèle:Palette Modèle:Portail