les derniers
articles

Index &
Sommaire
 

Articles « Info » : architecture

 


DÉCOLLAGE !


Présentation du
site WEB AILES
 


Les architectures :
Les points de vue

[Architecture],
[SEI], [UMLAction], [TechnoToile]


Après avoir assimilé la
définition de l'architecture et ses caractéristiques de bases, vous voilà prêt à rentrer dans le vif du sujet : quelles sont les architectures à connaître ?
Cette présentation se fait selon 2 points de vue majeurs (qui se décomposeront chacun en 4 points de vue détaillés) : "technique" et "fonctionnel".
Avec ces 2 éclairages différents, 4 architectures principales sont présentées ici : multi-tiers, multi-niveaux, en couche et à base de composant.


Rappel :
- les éléments participant à la
définition de l'architecture restent représentées en jaune sur fond rouge ;
- les
enjeux architecturaux en vert sur fond rouge ;
- les
caractéristiques de bases de l'architecture sont en bleue sur fond vert.


 



Lisez-moi et
réagissez !



Écrivez à AILES !



Retour vers le sommaire Architecture
 
Point de vue
    Pour rappel, les architectures, quand elle sont désignée par leur point de vue (comme  "Architecture Technique" et "Architecture Fonctionnelle"), désignent des architectures selon un point de vue technique ou d'un point de vue fonctionnel.
    Il s'agit de "vue architecturale" introduite dans l'article sur la définition de l'architecture et détaillée dans celui sur les caractéristiques de bases : Vues.
    Une vue architecturale modélise une ou plusieurs structures, chaque structure regroupant des éléments d'un même domaine architecturale. Par exemple, la vue "fonctionnelle" (détaillée ci-dessous) regroupe surtout des éléments de type "acteur" et "cas d'utilisation".
    En utilisant un point de vue, on peut tout aussi bien représenter:
- la vue logique d'une classe java ou C++ (ce qui est l'utilisation majeure de tout AGL, via UML);
- la structuration de services métiers (et là, on rentre dans le domaine des sphères architecturales).
    En gros, avec un point de vue, on peut tout représenter. Avec une sphère, on recentre son intérêt sur une véritable activité d'architecture: la structuration de concepts.
    Ce qui suit détaille les différents points de vue couramment utilisés. Encore une fois, on retrouvera ces points de vue aussi bien au niveau d'un projet que d'une sphères architecturales.

2 points de vue majeurs : fonctionnel et technique
    Si vous vous retrouvez dans des départements d'architecture, notamment présent dans des "DSI" (Direction des Systèmes Informatisés, qui ont pour mission d'établir les grandes recommandations aux chefs de projet des différentes filiales ou départements), vous constaterez 2 unités reliées à l'architecture : A.F. et A.T., à savoir Architecture Fonctionnelle et Architecture Technique.
    En effet, l'article sur la définition de l'architecture le mentionne clairement : lorsque l'on parle de ce domaine en terme général et global, on parle de « l'architecture du système logiciel » (System Software Architecture).
    Ce "système logiciel" est la somme :
- d'une infrastructure technique, matérielle avec ses contraintes de temps de réponse, capacité réseau et autres "tenue de montée en charge" : il s'agit de l'architecture technique ;
- d'un ou plusieurs composants logiciels, avec ses flux métier, son vocabulaire propre et ses connecteurs pour traduire les flux hétérogènes venant de systèmes logiciels externes.
    Au passage, le consultant de 30 ans est formel : c'est quand on passe de l'AF (du fonctionnel) à l'AT (au technique) qu'on rigole. Passer d'une conception de haut niveau à la réalité matérielle et "connectique" du terrain réserve des surprises... (cf. l'article De l'AT vers l'AF et le contraire)
    Pour rappel, "Architecture Technique" et "Architecture Fonctionnelle" désignent des architectures selon un point de vue technique ou d'un point de vue fonctionnel. Il s'agit de "vue architecturale" introduite dans l'article sur la définition de l'architecture et détaillée dans celui sur les caractéristiques de bases : Vues.

8 points de vues
    Pour modéliser une architecture, on partira des 2 points de vues de base exposés en début d'article : fonctionnel et technique.
    Architecture Fonctionnelle :
    * point de vue fonctionnel : spécifie les besoins fonctionnels des utilisateurs. En UML, cela se traduit typiquement par des Use Case (cas d'utilisation), où les acteurs extérieurs au système logiciel sont identifiés, et les principaux services sont nommés. On considère le système logiciel lui-même comme une "boite noire".
    * point de vue logiciel : spécifie la dynamique du système logiciel, avec les interactions entre objets et les contraintes dynamiques. Le tout s'illustre via les diagramme de collaboration et de séquence en UML. Au contraire du point de vue précédent, on détaille complètement le système logiciel.
    * point de vue structurel ou statique : organise le modèle des besoins fonctionnels en package et classe. Cela correspond à l'activité d'analyse des spécifications.
    * point de vue logique : détaille le point de vue précédent en allant jusqu'aux classes de conception préliminaire
Ces deux points de vue utilisent principalement la vue UML la plus connue des développeurs, le diagramme statique des classes.
    Architecture Technique :
    * point de vue matériel : illustre les choix et la topologie matérielle choisie, avec toute la problématique des connexions physiques, du dimensionnement des processeurs et des bandes passantes.
    * point de vue de déploiement : localise les composants d'architecture sur le réseau physique.
Ces deux points de vue (matériel et de déploiement) se synthétisent en UML par le diagramme de déploiement, dont un exemple est fourni dans l'article sur la définition de l'architecture.
    * point de vue configuration logiciel ou physique : décrit la façon dont les composants logiciels identifiés par le point de vue logique se construisent techniquement. C'est le passage d'une notion logique abstraite (comme une classe) à un élément concret "physique" (un "cpp" et un "header", en C++, ou encore une librairie, ou un exécutable... telle que défini dans caractéristiques de bases). En UML, cela correspond au diagramme de "composant" (à prendre ici au sens de "élément "...).
Cf. aussi - dans le Questionnaire Langage - les réponses concernant la notion de Composant.
    * point de vue d'exploitation : fait le lien entre les composants physiques concrets du point de vue précédent et les fonctionnalités du logiciel (telle librairie prend en charge telle fonction). Le but étant d'assister les ingénieurs d'exploitation (lorsque le système logiciel tourne en "prod" - en production) afin qu'ils identifient rapidement l'élément défaillant et fassent une remontée d'anomalie efficace. En UML, le diagramme de composant mélange les points de vue physique (évoqué juste avant) et d'exploitation.
    On notera que l'aspect "exploitation" est rarement perçu par l'ingénieur d'étude. Il conçoit, programme, livre mais il faut qu'il reste suffisamment longtemps sur une mission pour en assurer la maintenance. C'est alors à ce moment qu'il s'aperçoit s'il peut vraiment retrouver le composant fautif lorsqu'un bug lui est remonté...
Pour résumer le lien entre les diagrammes UML et ces points de vue, [UMLAction] nous propose le tableau suivant (revu et interprété, et aussi complété en faisant apparaître les points de vue majeurs "fonctionnel" et "technique") : en rouge (x), les diagrammes principaux correspondant à un point de vue, en noir (x), les diagrammes secondaires utilisés par ces mêmes points de vue.
Points de vue

AF (architecture fonctionnelle)

AT (architecture technique)

fonctionnel logiciel structurel logique matériel déploiement config.log. exploitation
Dgr. UML                
use cases x  x            
séquence x x   x        
collaboration x x   x        
classes x x x x        
objets     x x        
états     x x        
activités x x            
composant           x x x
déploiement         x x    

(Rappel, la notion de "composant", dans le diagramme UML de composant, est à entendre au sens de l'élément concret défini dans caractéristiques de bases).
    On notera qu'UML offre beaucoup d'outils pour modéliser une architecture fonctionnelle, mais tout le monde s'accorde à dire que le formalisme proposé pour l'architecture technique est encore trop pauvre pour l'instant (2001, UML1.3).

4 architectures majeures : multi-tiers, multi-niveaux, couches, composants
    Ces architectures peuvent s'appliquer soit à la partie fonctionnelle (pour mieux répartir et structurer les fonctions) et/ou à la partie technique (pour mieux répartir et structurer les composants et le matériel).
    Elle sont présentées brièvement puis mise en correspondances avec les 8 points de vue présentés ci-dessus : 

    architecture client/serveur, dite "multi-tiers" (pour rappel, "tier" signifie niveau). Elle met en ouvre un client qui communique à un serveur de données ou de services.
cf. l'article sur les 4 grandes sphères architecturales pour une description détaillée.
=> c'est avant tout une architecture technique, qui indique comment distribuer des services. Elle décrit donc une architecture applicative.
Rq : le synonyme "niveau" n'est pas correct, car un niveau est plus proche de "layer" (cf. ci-dessous, et cf. également Questionnaire Architecture : Layer vs. Tiers)

    architecture multi-niveaux (multi-layers) va de pair avec la précédente. Elle décrit où se situent les différents services fonctionnel.
cf. l'article sur les 4 grandes sphères architecturales pour une description détaillée.
=> c'est une architecture fonctionnelle, qui aide à positionner les services fonctionnels par niveau
=> c'est avant tout une architecture technique, qui indique avec quoi (quel type de matériel - central, poste utilisateur, etc... -) distribuer des services.

    architecture en couches établi la correspondance entre les services techniques et les composants d'architectures concernés (comme un middleware, plus un driver), via des cas d'utilisation technique.
cf. l'article sur les 4 grandes sphères architecturales pour une description détaillée.
=> c'est avant tout une architecture technique, qui indique comment structurer des services par exemple, en découplant la présentation de la logique applicative) . Elle décrit donc une architecture applicative (lien).

    architecture à base de composant identifie des composants architecturaux réutilisables.
cf. l'article sur les 4 grandes sphères architecturales pour une description détaillée.
=> c'est une architecture fonctionnelle, qui indique quoi identifier comme services réutilisables (composant vu comme une entité fonctionnelle).
=> c'est aussi une architecture technique, qui comment structurer ces services sur le plan applicatif (composant vu comme une entité technique)

Les architectures selon leurs points de vues
    En réunissant ces 2 notions, on retrouve les activités suivantes, également proposé par  [UMLAction] et remis en forme par moi :

  Architectures Multi-tiers Multi-niveaux en couches par composant
points de vue
A
F
fonctionnel   positionnement des acteurs et services aux différents niveaux de l'entreprise   identification des cas d'utilisation métier gérés par des composants existants
logiciel     positionne des cas d'utilisation technique sur les différentes couches identification des cas d'utilisation  techniques gérés par des composants existants ou par une réutilisation d'un composant interne.
structurel   regroupement des classes par niveau   regroupement des classes provenant de composants existants
logique     identification des classes se situant dans la même couche de service technique regroupement des classes communes au même composant
A
T
matériel choix d'un middleware capable de distribuer les services définition des matériels installés par niveau    
déploiement regroupement des composants par service distribué définition des postes de travail par niveau   identification et positionnement des composants d'exploitation sur le réseau
config. log. ou "physique" fabrication des composants distribués   fabrication des composants spécifiques à une couche fabrication de chaque composant
exploitation répartitions des composants entre tiers regroupement des composants par poste de travail répartition des composants par couche identification des interfaces et des composants à exploiter

    A la lecture de ce tableau, on réalise la difficulté d'établir une architecture... puisque cette dernière est souvent un mélange des 4 architectures de base présentées dans cet article.
    A l'évidence, on retrouvera presque toujours une architecture de type "multi-tiers", car tout le monde, de nos jours, est "client" d'un service logiciel donné, mais est aussi "serveur" vis à vis d'autres composants. Mais on remarquera que cette architecture reste essentiellement "technique".
    Pour modéliser les flux d'information et services métiers, on parlera des niveaux (si l'application est plus qu'un logiciel local mono-utilisateur mono-poste), mais aussi couches (pour bien découpler techniquement les différentes responsabilités logicielles) et composants (car il est de plus en plus difficile de "tout" réinventer à chaque fois!).



               
 
Avertissement !
 
Décollage !  |  Présentation du site web "AILES"  | 
Infos générales  |  articles "Informatique"