35 0 722KB
09/03/2017
L’Architecture logicielle Schéma Urbain
Chapitre 2 L’Architecture logicielle
Cours Architectures logicielle
1
L’Architecture logicielle
L’Architecture logicielle
Les Objectifs d’une architecture logicielle
Pourquoi une architecture logicielle
Structurer et concevoir une application à partir de ses
Compréhension : facilite la compréhension des
spécifications fonctionnelles structurer et décomposer de façon logique chaque application en couches Introduire les notions et concepts de découpage en couches, modules, composants, design patterns et frameworks
Cours Architectures logicielle
grands systèmes complexes en donnant une vue de haut-niveau de leur structure et de leurs contraintes. Les motivations des choix de conception sont ainsi mis en évidence Réutilisation : favorise l’identification des éléments réutilisables, parties de conception, composants, caractéristiques, fonctions ou données communes. 3
Cours Architectures logicielle
4
1
09/03/2017
L’Architecture logicielle
L’Architecture logicielle
Pourquoi une architecture logicielle
Pourquoi une architecture logicielle
Construction : fournit un plan de haut-niveau du
Analyse : offre une base pour l’analyse plus approfondie de
développement et de l’intégration des modules en mettant en évidence les composants, les interactions et les dépendances. Elle doit permettre aux développeurs de travailler sur des parties individuelles du système en isolation Évolution : met en évidence les points où un système peut être modifié et étendu. La séparation composant/connecteur facilite une implémentation du type « plug-and-play» Cours Architectures logicielle
la conception du logiciel, analyse de la cohérence, test de conformité, analyse des dépendances Gestion : contribue à la gestion générale du projet en permettant aux différentes personnes impliquées de voir comment les différents morceaux du casse-tête seront agencés. L’identification des dépendance entre composants permet d’identifier où les délais peuvent survenir et leur impact sur la planification générale 5
Cours Architectures logicielle
L’Architecture logicielle
L’Architecture logicielle
La définition d’une architecture logicielle:
La définition d’une architecture logicielle:
L'architecture informatique définit la structuration d'un système informatique (i.e. matériel et logiciel) en termes de composants et d'organisation de ses fonctions
L’architecture peut être définie par : les concepts fondamentaux ou les propriétés d'un système dans son environnement incarné dans ses composants, leurs relations et dans les principes de sa conception et de son évolution
Une analyse fonctionnelle décrit « quoi faire », alors qu’une architecture décrit « comment le faire »
Cours Architectures logicielle
6
Iso 42010::2011: Ingénierie des systèmes et des logiciels — Description de l'architecture
7
Cours Architectures logicielle
8
2
09/03/2017
L’Architecture logicielle
L’Architecture logicielle
La définition d’une architecture logicielle:
La définition d’une architecture logicielle:
L’architecture peut être définie par : les concepts fondamentaux ou les propriétés d'un système dans son environnement incarné dans ses composants, leurs relations et dans les principes de sa conception et de son évolution
L’architecture peut être définie par : les concepts fondamentaux ou les propriétés d'un système dans son environnement incarné dans ses composants, leurs relations et dans les principes de sa conception et de son évolution Le système est composé de composants
Système ensemble sous systèmes/ aspects /vues
L’architecture décrit leur organisation
Environnement le système n’est pas isolé.
Cours Architectures logicielle
Comment les identifier/définir.
9
Cours Architectures logicielle
L’Architecture logicielle
L’Architecture logicielle
Pourquoi une architecture logicielle
Relation entre composants
l’architecture définit : Chaque composant et ses responsabilités Le rôle spécifique de chaque composant L’ensemble des composants fonctionnant de concert pour former une application
Le couplage : Échange d’informations (exécution) La dépendance Nécessité/inclusion/utilisation Rapport Cohésion/couplage
Cours Architectures logicielle
11
Cours Architectures logicielle
10
12
3
09/03/2017
L’Architecture logicielle
L’Architecture logicielle
Relation entre composants : niveaux de couplage
Relation entre composants : niveaux de couplage
1. Sans couplage : les composants n'échangent pas
5. Externe : les composants échangent de l'information par
d'information 2. Par données : les composants échangent de l'information par des méthodes utilisant des arguments (paramètres) de type simple (nombre, String etc.= 3. Par paquet : les composants échangent de l'information par des méthodes utilisant des arguments de type composé (record , classe, structure complexe) 4. Par contrôle : les composants se passent ou modifient leur contrôle par changement d'un drapeau (verrou). Cours Architectures logicielle
un moyen de communication externe (fichier, pipeline, lien de communication). 6. Commun (global) : les composants échangent de l'information via un ensemble de données (variables) commun. 7. Par contenu (interne) : les composants échangent de l'information en lisant et écrivant directement dans leurs espaces de données (variables) respectifs. 13
Cours Architectures logicielle
14
L’Architecture logicielle
L’Architecture logicielle
Relation entre composants : dépendance
Relation entre composants : dépendance
relations entre composants : de prérequis d'inclusion conditionnelle de post-requis d'inclusion conditionnelle de hiérarchie d'utilisation (j'utilise, je suis utilisé par) d'exclusion conditionnelle ; de suggestion.
Les conditions portent notamment sur : des versions de paquet (inférieur, supérieur ou compris entre deux limites) ; des choix alternatifs (choisir parmi un ensemble de paquets offrant les mêmes fonctionnalités) ; des ordres d'installation.
Cours Architectures logicielle
15
Cours Architectures logicielle
16
4
09/03/2017
L’Architecture logicielle
L’Architecture logicielle
Relation entre composants : Les alternatives
Relation entre composants : degrés de liaisons De composants très liés (dépendants/fortement couplés) Un système plus cohérent Un système plus performant Mais aussi Difficulté d’apporter des changements Plus de temps pour le développement et les tests Entrave le développement en parallèle
Cours Architectures logicielle
17
Cours Architectures logicielle
L’Architecture logicielle
L’Architecture logicielle
Relation entre composants : degrés de liaisons De composants très liés (dépendants/fortement couplés) Un système plus cohérent Un système plus performant Mais aussi Difficulté d’apporter des changements Plus de temps pour le développement et les tests Entrave le développement en parallèle
Relation entre composants : communication
Cours Architectures logicielle
19
18
Communication synchrone Communication asynchrone
Pipes et filtres Abstraction des DATA Communication entre couches Invocation implicite entrepôts Cours Architectures logicielle
20
5
09/03/2017
L’Architecture logicielle
L’Architecture logicielle
Communication: les pipes et les filtres
Communication: les pipes et les filtres Exemple : communication entre client et serveur web
Un filtre définit une étape de la Communication/de calcul Les données véhiculent selon un Ordre séquentiel
Cours Architectures logicielle
21
Cours Architectures logicielle
L’Architecture logicielle
L’Architecture logicielle
Communication: les pipes et les filtres Exemple 2: génération de code source
Communication: Communication entre couches Exemple 1: modèle en oignon
22
C’est le cas des O.S par exemple
Cours Architectures logicielle
23
Cours Architectures logicielle
24
6
09/03/2017
L’Architecture logicielle
L’Architecture logicielle
Communication: Communication entre couches Exemple 1: modèle en oignon
La Vue 4+1 : les Diagrammes d’UML (2.3)
C’est le cas des JVM
Cours Architectures logicielle
25
L’Architecture logicielle
Cours Architectures logicielle
26
L’Architecture logicielle La Vue 4+1 :
La Vue 4+1 :
Vue comportement (behavioral view): Diagramme d'états Diagramme d'activités Diagramme de séquence Diagramme de collaboration Les diagramme de temps Vue implémentation (implementation view) Diagramme de composants Diagrammes de structure composite Cours Architectures logicielle
27
Cours Architectures logicielle
28
7
09/03/2017
L’Architecture logicielle
L’Architecture logicielle
La Vue 4+1 :
Elle sert surtout à ne pas arriver à ceci:
Vue logique (structural view) Diagramme de classes Diagramme d'objets Diagrammes de paquets diagramme global d'interaction Vue Déploiement (environment view) Diagramme de déploiement Cours Architectures logicielle
29
Cours Architectures logicielle
L’Architecture logicielle
L’Architecture logicielle
Ou ceci:
Ou ceci:
Cours Architectures logicielle
31
Cours Architectures logicielle
30
32
8
09/03/2017
L’Architecture logicielle
L’Architecture logicielle
Ou ceci:
Ou ceci:
Cours Architectures logicielle
33
Cours Architectures logicielle
34
L’Architecture logicielle Ou ceci:
Cours Architectures logicielle
35
9