Séparation des préoccupations

Si ce bandeau n'est plus pertinent, retirez-le. Cliquez ici pour en savoir plus.
Si ce bandeau n'est plus pertinent, retirez-le. Cliquez ici pour en savoir plus.

Cet article ne cite pas suffisamment ses sources ().

Si vous disposez d'ouvrages ou d'articles de référence ou si vous connaissez des sites web de qualité traitant du thème abordé ici, merci de compléter l'article en donnant les références utiles à sa vérifiabilité et en les liant à la section « Notes et références ».

En pratique : Quelles sources sont attendues ? Comment ajouter mes sources ?

Cet article est une ébauche concernant l’informatique.

Vous pouvez partager vos connaissances en l’améliorant (comment ?) selon les recommandations des projets correspondants.

La séparation des préoccupations (ou séparation des responsabilités), traduction du concept d’informatique théorique separation of concerns (SoC) en anglais, est un principe de conception visant à segmenter un programme informatique en plusieurs parties, afin que chacune d’entre elles isole et gère un aspect précis de la problématique générale[1]. C'est une bonne pratique largement reconnue et mise en œuvre dans l'ingénierie logicielle.

Une préoccupation (de l’anglais concern) est un ensemble d’informations et de responsabilités (traitements sur les informations) qui entre en jeu dans le code d’un programme informatique. Le concept de préoccupation peut concrètement recouvrir des aspects informatiques très variés, à des échelles de toute taille.

Un programme qui intègre les principes de séparation des préoccupations est souvent appelé un programme modulaire, car il sépare son code en différent modules (quelle que soit l'implémentation concrète de ces modules). La modularité, et donc la séparation des préoccupations, est obtenue en encapsulant des informations dans une section de code qui a une interface bien définie[2]. L’encapsulation du code dans des modules amène un masquage de l’information. L'architecture en couches dans les systèmes d’information constitue un autre mode de réalisation de la séparation des préoccupations (par exemple dans l'architecture trois tiers : couche de présentation, couche de traitement dite couche de services, et couche d'accès aux données).

L’application du principe de séparation des préoccupations simplifie le développement et la maintenance des programmes informatiques. Quand les préoccupations sont strictement et clairement séparées, les différentes parties du code peuvent être réutilisées, étendues ou modifiées indépendamment des autres, ce qui améliore la maintenabilité et la sécurité de la base de code. Cela permet aussi d’intervenir sur une partie du code sans nécessairement avoir besoin de connaissances sur les autres parties[2].

Implémentations

Presque tous les paradigmes de programmation fournissent des outils pour réaliser une séparation des préoccupations. Par exemple, des langages orientés objet comme C#, C++, Delphi ou Java peuvent séparer les préoccupations dans des objets ou des classes. L’application de patrons de conception (design pattern) tels que MVC ou MVP permettent, à l'échelle macroscopique, de séparer les problématiques de contenu, de présentation et de traitement des données. Une architecture orientée services (SOA) peut également être considérée comme une implémentation de séparation des préoccupations, à un niveau d'abstraction encore plus élevé. Les langages procéduraux, comme le C et le Pascal, peuvent séparer les préoccupations dans des procédures ou des fonctions. La programmation orientée aspect peut séparer les préoccupations en aspects et objets. Les langages fonctionnels utilisent souvent les fonctions regroupées en modules.

Hors du champ de l'informatique

Le principe de séparation des préoccupations est fécond, et pourrait être généralisé et appliqué à d’autres pratiques conceptuelles hors du champ de l’informatique, comme l’urbanisme, l’architecture ou le design de l’information. Le but étant de mieux comprendre, concevoir, et gérer des systèmes complexes et interdépendants, afin qu’une partie du traitement de l'information puisse être isolée à diverses fins : optimisation, sécurisation, réutilisation, débogage.

Voir aussi

Notes et références

  • (en) Cet article est partiellement ou en totalité issu de l’article de Wikipédia en anglais intitulé « Separation of concerns » (voir la liste des auteurs).
  1. « La séparation des préoccupations », sur www.consyst.com (consulté le )
  2. a et b Ivan Logre, « Préserver la séparation des préoccupations durant l’intégration de domaines hétérogènes dans les systèmes logiciels », Université Côte d'Azur,‎ (lire en ligne, consulté le )
v · m
Gestion de la qualité logicielle
Indicateurs de qualité (ISO/CEI 9126)
Compréhension et contrôle du code source
Tests
Métriques
Remaniements
Principes de programmation
SOLID
Mauvaises pratiques
Antipatterns
Code smells
Voir aussi : Génie logiciel, Érosion de l'architecture logicielle
  • icône décorative Portail de l'informatique théorique