Table des matières

3 types d'architecture

Architecture fonctionnelle

Cela consiste à décrire les besoins d'un point de vue exclusivement métier sans aborder la partie technique du logiciel.

On peut déjà imaginer les briques logicielles avec leurs fonctions et leurs interactions mais toujours exclusivement du point de vue métier.

Architecture logicielle

Structure

Un logiciel est composé de sous-systèmes (facultatif), eux-mêmes composés de composants logiciels.

Un composant peut être :

Un composant possède :

Aspects dynamiques

Déploiement

Spécifier les contraintes de déploiement et la description de l'infrastructure : machine, OS, plateforme (java, …)

Architecture système

L'architecture logicielle est la partie de l'architecture système qui détaille la description des éléments applicatifs.

Une architecture système regroupe :

Architecture système

Composition d'une architecture

Composant

Les composants sont visibles des autres composants exclusivement à travers des interfaces.

Dépendances entre composants

Rôles

Il est préférable mais pas obligatoire qu'un composant ne supporte qu'un rôle à la fois, sauf pour les deux premiers qui sont les fondamentaux de la programmation orientée objet et le troisième qui gère les besoins en concurrence.

Enchaînement

Il y a plusieurs façons d'enchaîner l'exécution de composants de type traitement :

Interface

Une interface est attachée à un port de communication du composant. Il existe deux types d'interface : le cercle représente l'interface offerte (les différentes méthodes à disposition) et le demi cercle l'interface requise (le prototype des méthodes doit correspondre à l'interface offerte).

Port

Une interface est attachée à un port du composant, noté par un carré. Cela peut être l'exécution de la méthode en local ou via une API distante ou la possibilité d'avoir les deux à la fois.

Connecteur

Les composants interagissent donc sur des ports, par le biais de connecteurs, et via des interfaces. Ils fournissent des services de :

Artefact

La manifestation concrète d’un composant est appelée artefact. C’est une instance concrète du composant déployée dans l’environnement d’exécution. Voir UML

Kruchten : 4+1 vues

VueDescriptionDiagrammes
LogiqueComposants présents et leurs interactions Paquetages, classes, objets et structures (UML), blocs (SysML)
RéalisationOrganisation des composants concrets sur une plateforme.Composants, paquetages, structures composites.
ProcessusAllocations et interactions entre processus, threads ou tâches.Activités, séquence, communication, états-transitions.
DéploiementEnvironnement d'exécution y compris contraintes géographiques, de bandes passants et de performances du système.Composants, déploiement.
Cas d'utilisationScénarios correspondant à une fonctionnalité du système s'activant depuis une interaction extérieure.Cas d'utilisation, activités, séquence, communication, états-transitions.

Qualité

Généralités

Couplage

Le couplage reprendre le niveau d'interaction entre les composants logiciels.

Selon Pressman, 7 niveaux de couplage, classé par niveau de dépendances, le meilleur est le premier :

CouplageDescription
Sans couplageLes composants n'échangent pas d'information.
Par donnéesLes composants échangent de l'information par des méthodes utilisant des arguments de type simple (entiers, réels, chaînes de caractères, etc.). Compatible entre les différents languages de programmation.
Par paquetLes composants échangent de l'information par des méthodes utilisant des arguments de type composé (structure, classe). Nécessite des changements si le language de programmation change d'un coté.
Par contrôleLes composants se passent ou modifient leur contrôle par modification d'un drapeau interne au composant invoqué (verrou).
ExterneLes composants échangent de l'information par un moyen de communication externe (par exemple fichier, queue de message, variable d’environnement, etc.)
Commun (global)Les composants échangent de l'information via un ensemble de données communes
Par contenu (interne)Les composants échangent de l'information en lisant et écrivant directement dans leurs espaces de données respectifs.

Cohésion

La cohésion est une mesure d'homogénéité dans un composant ou un sous système.

Selon Pressman, 7 niveaux de cohésion, classé par niveau, le meilleur est le dernier :

CohésionDescription
ArbitraireAbsence de lien logique entre les éléments.
LogiqueLes fonctions sont de même catégorie ou reliées par un ou plusieurs critères communs.
TemporelleLes fonctions s’exécutent dans une même période de temps.
ProcéduraleLes fonctions sont appelées selon une séquence bien déterminée (et non arbitrairement au gré de l’appelant).
CommunicationnelleLes fonctions ont les mêmes types d’entrées sorties.
SéquentielleLes opérations forment des séquences d’exécution bien identifiées (la sortie de l’une est l’entrée de l’autre).
FonctionnelleLes fonctions contribuent à une même fonction de plus haut niveau, ou bien relèvent d’une abstraction commune.

Styles

Les styles architecturaux et les pattern design sont proches. Les pattern s'appliquent à un composant précis alors que les styles s'appliquent à un sous système entier.

Principaux styles de base:

Architectures hiérarchique et orientée objets

Arborescence en arbre avec à la racine le main. Chaque descendant sont un sous-module.

UML 2 - De l'apprentissage à la pratique Archive du 12/01/2009 le 28/04/2020

Architecture à flot de données (pipe-line)

Exemples : Chaîne de responsabilité

Pipeline Architecture - Introduction Archive du 06/01/2004 le 28/04/2020

Architecture avec référentiel de données (repository centric), Architecture Tableau noir (blackboard)

Il y a les composants accesseurs de données d’une part, qui implémentent les traitements, et les composants « référentiels de données » d’autre part, qui maintiennent des données écrites et lues par les premiers.

Dans la version de base, les référentiels sont passifs (vocation de stockage). Dans la version tableau noir, les référentiels informent les accesseurs des modifications (observer)

Architecture système Archive du 2016 le 28/04/2020

Architecture à Invocation implicite

Voir pub/sub, reactor

Architecture multi-couches

Chaque couche a accès uniquement à sa (ou des) couches inférieures.

Architecture distribuée, spécialisée en architectures N - tiers

Ici, chaque couche n'a accès qu'au niveau N+1 et N-1.