Outils pour utilisateurs

Outils du site


helloworld:architecture:notion

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
helloworld:architecture:notion [2019/01/09 20:27] – [Composant] : Enchaînement roothelloworld:architecture:notion [2020/05/10 23:46] (Version actuelle) – Suppression de la taille par défaut pour les images root
Ligne 87: Ligne 87:
 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 [[helloworld:architecture:uml#|UML]] 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 [[helloworld:architecture:uml#|UML]]
  
 +====Kruchten : 4+1 vues====
 +^Vue^Description^Diagrammes^
 +|Logique|Composants présents et leurs interactions| Paquetages, classes, objets et structures (UML), blocs (SysML)|
 +|Réalisation|Organisation des composants concrets sur une plateforme.|Composants, paquetages, structures composites.|
 +|Processus|Allocations et interactions entre processus, threads ou tâches.|Activités, séquence, communication, états-transitions.|
 +|Déploiement|Environnement d'exécution y compris contraintes géographiques, de bandes passants et de performances du système.|Composants, déploiement.|
 +|Cas d'utilisation|Scénarios correspondant à une fonctionnalité du système s'activant depuis une interaction extérieure.|Cas d'utilisation, activités, séquence, communication, états-transitions.|
 +
 +{{ :helloworld:architecture:kruchten:interaction_vues.png |}}
 +
 +{{ :helloworld:architecture:kruchten:interaction_architecture.png |}}
 +
 +=====Qualité=====
 +====Généralités=====
 +  * Interfaces simples, claires, stables et complètes,
 +  * Dépendances faibles entre les constituants,
 +  * Complexité interne masquée par les interfaces,
 +  * Modularité,
 +  * Facilité d’intégration,
 +  * Durée de vie, upgradablité (remplacement d’une technologie par une autre).
 +
 +====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 :
 +^Couplage^Description^
 +|Sans couplage|Les composants n'échangent pas d'information.|
 +|Par données|Les 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 paquet|Les 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ôle|Les composants se passent ou modifient leur contrôle par modification d'un drapeau interne au composant invoqué (verrou).|
 +|Externe|Les 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ésion^Description^
 +|Arbitraire|Absence de lien logique entre les éléments.|
 +|Logique|Les fonctions sont de même catégorie ou reliées par un ou plusieurs critères communs.|
 +|Temporelle|Les fonctions s’exécutent dans une même période de temps.|
 +|Procédurale|Les fonctions sont appelées selon une séquence bien déterminée (et non arbitrairement au gré de l’appelant).|
 +|Communicationnelle|Les fonctions ont les mêmes types d’entrées sorties.|
 +|Séquentielle|Les opérations forment des séquences d’exécution bien identifiées (la sortie de l’une est l’entrée de l’autre).|
 +|Fonctionnelle|Les 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.
 +
 +{{:helloworld:architecture:style:fig1_3.png|}}
 +
 +[[https://laurent-audibert.developpez.com/Cours-UML/?page=introduction-modelisation-objet|UML 2 - De l'apprentissage à la pratique]] {{ :helloworld:architecture:uml:uml2-apprentissage-pratique.pdf |Archive du 12/01/2009 le 28/04/2020}}
 +
 +===Architecture à flot de données (pipe-line)===
 +
 +Exemples : [[helloworld:design_pattern:chain_of_responsibility|Chaîne de responsabilité]]
 +
 +{{:helloworld:architecture:style:pipeline.png|}}
 +
 +[[http://parc.sourceforge.net/intro.html|Pipeline Architecture - Introduction]] {{ :helloworld:architecture:notion:pipeline_architecture_-_introduction_2020-04-28_11_07_03_pm_.html |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 ([[helloworld:design_pattern:observer:java|observer]])
 +
 +{{:helloworld:architecture:style:cycleenv2.png|}}
 +
 +[[http://www.case-france.com/EnvisionArchitectureSysteme.html|Architecture système]] {{ :helloworld:architecture:notion:envision_system_architecture_2020-04-28_11_07_03_pm_.html |Archive du 2016 le 28/04/2020}}
 +
 +===Architecture à Invocation implicite===
 +
 +Voir [[helloworld:design_pattern:publish_subscribe|pub/sub]], [[helloworld:design_pattern:reactor|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.
helloworld/architecture/notion.1547062024.txt.gz · Dernière modification : de root