Articles

Séparation des préoccupations

Pile de protocole Internet

La séparation des préoccupations est cruciale pour la conception d’Internet. Dans la Suite de protocoles Internet, de grands efforts ont été déployés pour séparer les préoccupations en couches bien définies. Cela permet aux concepteurs de protocoles de se concentrer sur les préoccupations d’une couche et d’ignorer les autres couches. Le protocole de couche applicative SMTP, par exemple, est préoccupé par tous les détails de la conduite d’une session de messagerie via un service de transport fiable (généralement TCP), mais pas du tout préoccupé par la façon dont le service de transport rend ce service fiable. De même, TCP ne se préoccupe pas du routage des paquets de données, qui est géré au niveau de la couche Internet.

HTML, CSS, JavaScriptEdit

Le langage de balisage hypertexte (HTML), les feuilles de style en cascade (CSS) et JavaScript (JS) sont des langages complémentaires utilisés dans le développement de pages Web et de sites Web. HTML est principalement utilisé pour l’organisation du contenu de la page Web, CSS est utilisé pour la définition du style de présentation du contenu, et JS définit comment le contenu interagit et se comporte avec l’utilisateur. Historiquement, ce n’était pas le cas: avant l’introduction du CSS, le HTML remplissait à la fois les fonctions de définition de la sémantique et du style.

Programmation orientée sujet

La programmation orientée sujet permet d’aborder des préoccupations distinctes en tant que constructions logicielles distinctes, chacune sur un pied d’égalité avec les autres. Chaque préoccupation fournit sa propre structure de classe dans laquelle les objets en commun sont organisés, et contribue à l’état et aux méthodes du résultat composite où ils se coupent les uns les autres. Les règles de correspondance décrivent comment les classes et les méthodes des différentes préoccupations sont liées les unes aux autres aux points où elles interagissent, ce qui permet de dériver le comportement composite d’une méthode à partir de plusieurs préoccupations. La séparation multidimensionnelle des préoccupations permet de manipuler l’analyse et la composition des préoccupations comme une « matrice » multidimensionnelle dans laquelle chaque préoccupation fournit une dimension dans laquelle différents points de choix sont énumérés, les cellules de la matrice étant occupées par les artefacts logiciels appropriés.

Programmation orientée vers l’aspect

La programmation orientée vers l’aspect permet d’aborder les préoccupations transversales comme préoccupations principales. Par exemple, la plupart des programmes nécessitent une certaine forme de sécurité et de journalisation. La sécurité et la journalisation sont souvent des préoccupations secondaires, alors que la principale préoccupation est souvent d’atteindre les objectifs commerciaux. Cependant, lors de la conception d’un programme, sa sécurité doit être intégrée à la conception dès le début au lieu d’être traitée comme une préoccupation secondaire. L’application de la sécurité par la suite entraîne souvent un modèle de sécurité insuffisant qui laisse trop de lacunes pour de futures attaques. Cela peut être résolu avec une programmation orientée aspect. Par exemple, un aspect peut être écrit pour imposer que les appels à une certaine API soient toujours enregistrés, ou que les erreurs soient toujours enregistrées lorsqu’une exception est levée, que le code procédural du programme gère l’exception ou la propage.

Niveaux d’analyse en intelligence artificielledit

En sciences cognitives et en intelligence artificielle, il est courant de se référer aux niveaux d’analyse de David Marr. À un moment donné, un chercheur peut se concentrer sur (1) quel aspect de l’intelligence doit calculer, (2) quel algorithme il utilise ou (3) comment cet algorithme est implémenté dans le matériel. Cette séparation des préoccupations est similaire à la distinction interface / implémentation en ingénierie logicielle et matérielle.

Systèmes normalisésmodifier

Dans les systèmes normalisés, la séparation des préoccupations est l’un des quatre principes directeurs. Adhérer à ce principe est l’un des outils qui aide à réduire les effets combinatoires qui, au fil du temps, sont introduits dans les logiciels en cours de maintenance. Dans les systèmes normalisés, la séparation des préoccupations est activement soutenue par les outils.

SoC via des classes partiellesedit

La séparation des préoccupations peut être implémentée et appliquée via des classes partielles.

SoC via des classes partielles dans RubyEdit

bear_hunting.rb

class Bear def hunt forest.select(&:food?) endend

bear_eating.RB