CAGL - Conception Architecturale en Génie Logiciel Cours - PDF
Document Details
Uploaded by PromisedMossAgate6451
Université Constantine 2
Dr Boukhelfa Kamel
Tags
Related
- 03. SEN418 Software Architecture.pdf
- 03. SEN418 Software Architecture.pdf
- Computer Organization and Architecture PDF
- Chapter 1 What is Software Architecture.pdf
- (The Morgan Kaufmann Series in Computer Architecture and Design) David A. Patterson, John L. Hennessy - Computer Organization and Design RISC-V Edition_ The Hardware Software Interface-Morgan Kaufmann-102-258-pages-4.pdf
- Google IT Support Certification - COURSE 1 Technical Support Fundamentals PDF
Summary
This document is a lecture or course material on software architecture, as evidenced by its focus on concepts and processes relating to this topic. It includes detailed discussion of various design elements, examples, and modeling methods.
Full Transcript
CAGL -Conception Architecturale en Génie Logiciel Chapitre 2 Concepts fondamentaux d’architecture logicielle Dr Boukhelfa Kamel NTIC/TLSI Kame...
CAGL -Conception Architecturale en Génie Logiciel Chapitre 2 Concepts fondamentaux d’architecture logicielle Dr Boukhelfa Kamel NTIC/TLSI [email protected] Etudiants concernés Faculté/Institut Département Niveau Spécialité NTIC TLSI Master 1 Ingénierie des Logiciels et des Systèmes Intelligents Université Constantine 2 2024-2025. Semestre 1 Introduction L'architecture d'un système décrit les principaux composants, leurs relations structurelles, ainsi que leurs interactions. La définition de l'architecture et de la conception d'un logiciel est un processus complexe, influencé par de nombreux facteurs tels que la stratégie commerciale, les attributs de qualité, la dynamique humaine, la conception technique et l'environnement informatique. Dans la phase d'architecture, les décisions liées aux aspects non fonctionnels du système sont prises, en les distinguant des exigences fonctionnelles. Dans la phase de conception, ces exigences fonctionnelles sont pleinement satisfaites. Université Constantine 2 © Dr BOUKHELFA Kamel 2 Introduction Université Constantine 2 © Dr BOUKHELFA Kamel 3 Architecture logicielle (software architecture) L’architecture d’un logiciel est la structure des structures (modules) d’un système, Elle inclut : Les composants logiciels; Les propriétés externes visibles de ces composants; Les relations entre ces composants. L'architecture sert de modèle pour un système. Elle fournit une abstraction pour gérer la complexité du système et établir un mécanisme de communication et de coordination entre les composants. Elle définit une solution structurée pour répondre à toutes les exigences techniques et opérationnelles, tout en optimisant les attributs de qualité communs comme les performances et la sécurité. Cela implique une série de décisions cruciales concernant l'organisation du développement logiciel, chacune de ces décisions pouvant avoir un impact considérable sur la qualité, la maintenabilité, les performances, ainsi que sur le succès global du produit final. Université Constantine 2 © Dr BOUKHELFA Kamel 4 Architecture logicielle (software architecture) Ces décisions comprennent : La sélection des éléments structurels et de leurs interfaces par lesquels le système est conçu. Le comportement tel que spécifié dans les collaborations entre ces éléments. La composition de ces éléments structurels et comportementaux en grands sous-systèmes. Les décisions architecturales s'alignent sur les objectifs commerciaux ainsi que les styles architecturaux qui guident l'organisation. Université Constantine 2 © Dr BOUKHELFA Kamel 5 La conception logicielle La conception d'un logiciel fournit un plan de conception qui décrit les éléments d'un système, la manière dont ils s'adaptent et fonctionnent ensemble pour répondre aux exigences du système. Les objectifs d'un plan de conception sont les suivants : Négocier les exigences du système et définir les attentes avec les clients, le personnel marketing et de gestion. Servir de modèle pendant le processus de développement. Guider les tâches de mise en œuvre, y compris la conception détaillée, le codage, l'intégration et le test. Cela intervient avant la conception détaillée, le codage, l’intégration et les tests et après l’analyse du domaine, l’analyse des exigences et l’analyse des risques. Université Constantine 2 © Dr BOUKHELFA Kamel 6 Architecture vs conception L'architecture logicielle désigne les structures globales d'un système logiciel et se concentre sur la manière dont divers processus interagissent et coopèrent pour accomplir leurs tâches respectives. # En revanche, la conception logicielle se focalise sur les structures internes plus détaillées, en traitant spécifiquement de la conception d'un processus logiciel individuel. Université Constantine 2 © Dr BOUKHELFA Kamel 7 Intérêts de l’architecture logicielle Compréhension : facilite la compréhension des systèmes complexes en donnant une vue de haut-niveau sur leurs structures et de leurs contraintes. Réutilisation : favorise l’identification des éléments réutilisables, parties de conception, composants, caractéristiques, fonctions ou données communes Construction : fournit un plan de haut-niveau du développement et de l’intégration des modules en mettant en évidence les composants, les interactions et les dépendances Évolution : identifie les parties du système pouvant être modifiées ou étendues. La séparation entre les composants et les connecteurs permet une implémentation de type « plug-and-play ». Université Constantine 2 © Dr BOUKHELFA Kamel 8 Intérêts de l’architecture logicielle Analyse : fournit une base pour une analyse approfondie de la conception logicielle, incluant la vérification de la cohérence, les tests de conformité et l'analyse des dépendances. Gestion : participe à l'organisation globale du projet en offrant aux différents intervenants une vue d'ensemble sur l'assemblage des différentes pièces du projet. L'identification des dépendances entre les composants permet de repérer les éventuels retards et d'en évaluer l'impact sur la planification globale. Université Constantine 2 © Dr BOUKHELFA Kamel 9 Attributs de qualité La qualité est une mesure d’excellence ou l’état d’être exempt de déficiences ou de défauts. Les attributs de qualité sont des propriétés du système qui sont distinctes de la fonctionnalité du système. L'implémentation d'attributs de qualité permet de différencier plus facilement un bon système d'un mauvais. Les attributs sont des facteurs globaux qui affectent le comportement d'exécution, la conception du système et l'expérience utilisateur. Ils peuvent être classés comme suit : Attributs de qualité statiques Attributs de qualité dynamiques Université Constantine 2 © Dr BOUKHELFA Kamel 10 Attributs de qualité Attributs de qualité statiques Refléter la structure du système et de l'organisation, directement liée à l'architecture, à la conception, code source. Invisibles pour l'utilisateur final, mais affectent le coût de développement et de maintenance, par exemple : modularité, testabilité, maintenabilité, etc. Attributs de qualité dynamiques reflètent le comportement du système pendant son exécution. directement liés à l'architecture, à la conception, au code source ainsi qu'à la configuration, aux paramètres de déploiement, à l'environnement et à la plateforme du système. visibles pour l'utilisateur final et existent au moment de l'exécution, par exemple : débit, robustesse, évolutivité, etc. Université Constantine 2 © Dr BOUKHELFA Kamel 11 Attributs de qualité Attributs de qualité communs Le tableau suivant répertorie les attributs de qualité communs qu’une architecture logicielle doit posséder : Université Constantine 2 © Dr BOUKHELFA Kamel 12 Attributs de qualité Université Constantine 2 © Dr BOUKHELFA Kamel 13 Attributs de qualité Université Constantine 2 © Dr BOUKHELFA Kamel 14 Description d’une architecture logicielle Le modèle d'architecture ne décrit pas ce que doit réaliser un système informatique mais plutôt comment il doit être conçu de manière à répondre aux spécifications. L’analyse fonctionnelle décrit le « quoi faire » alors que l’architecture décrit le « comment le faire » La définition de l’architecture logicielle consiste à: Décrire l’organisation générale d’un système et sa décomposition en sous- systèmes ou composants Déterminer les interfaces entre les sous-systèmes Décrire les interactions et le flot de contrôle entre les sous-systèmes Décrire également les composants utilisés pour implanter les fonctionnalités des sous-systems : Les propriétés de ces composants Leur contenu (e.g. classes, autres composants) Les machines ou dispositifs matériels sur lesquels ces modules seront déployés Université Constantine 2 © Dr BOUKHELFA Kamel 15 Modélisation UML de l’AL Les vues (structurelles) d’une architecture logicielle : Vue logique : Description logique du système décomposé en sous-systèmes (modules + interface) UML diagramme de paquetages Vue d’implémentation : Description de l’implémentation (physique) du système logiciel en termes de composants et de connecteurs UML diagramme de composants Vue de déploiement : Description de l’intégration et de la distribution de la partie logicielle sur la partie matérielle UML diagramme de déploiement Université Constantine 2 © Dr BOUKHELFA Kamel 16 Modélisation UML de l’AL Diagrammes de paquetages Diagrammes structurels utilisés pour représenter l'organisation des éléments modélisés sous forme de paquetages. Un paquetage regroupe des éléments UML apparentés tels que des diagrammes, documents, classes ou même d'autres paquetages. Tous les éléments sont imbriqués dans des paquetages, représentés sous forme de dossiers, et organisés hiérarchiquement. Université Constantine 2 © Dr BOUKHELFA Kamel 17 Modélisation UML de l’AL Diagramme de composants Un diagramme de composants illustre la relation entre différents composants d'un système. En UML 2.0, un « composant » représente un module de classes correspondant à des systèmes ou sous-systèmes indépendants capables de s'interfacer avec le reste du système. Dans la POC, les diagrammes de composants permettent de planifier les différents éléments pour répondre aux exigences du système. En POO, le diagramme de composant aide à regrouper des classes autour d'un objectif commun, offrant ainsi une vue d'ensemble du projet aux parties prenantes et au développeur. Université Constantine 2 © Dr BOUKHELFA Kamel 18 Modélisation UML de l’AL Les diagrammes de composants sont utiles pour les raisons suivantes: Définition des aspects exécutables et réutilisables d'un système logiciel Mise en évidence des problèmes de configuration logicielle à travers les relations de dépendance Représentation précise d'une application logicielle avant toute changement ou extension apporté sur elle; Offrent une vue de haut niveau de l’architecture du système Utilisés pour décrire le système d’un point de vue implémentation ; Exemples de Composants: Fichiers exécutables, fichiers de code, base de données, etc. Université Constantine 2 © Dr BOUKHELFA Kamel 19 Modélisation UML de l’AL Permet de décrire les composants d’un système et les interactions entre ceux-ci; Illustre comment grouper concrètement et physiquement les éléments (objets, interfaces, etc.) du système au sein de modules qu’on appelle composants Université Constantine 2 © Dr BOUKHELFA Kamel 20 Modélisation UML de l’AL Le diagramme de déploiement fait partie des diagrammes structurels car il décrit l'aspect physique d'un système. Il représente le déploiement des artefacts (informations générées par le logiciel) sur des composants matériels. Il utilise des formes UML, avec des nœuds en 3D pour symboliser les composants logiciels ou matériels du système. Les lignes entre les nœuds indiquent les relations, et les petites formes à l'intérieur des nœuds représentent les artefacts logiciels déployés. Université Constantine 2 © Dr BOUKHELFA Kamel 21 Éléments architecturaux Utilisation des composants pour la description de l’architecture logicielle Permet de définir une configuration architecturale Deux ou plusieurs composants interagissent via un connecteur Chaque élément architectural possède une structure et/ou comportement pouvant être décrit par un modèle UML approprié Université Constantine 2 © Dr BOUKHELFA Kamel 22 Éléments architecturaux Composant Encapsule un traitement et/ou des données Encapsule un sous-ensemble de fonctionnalités et/ou de données du système Restreint l’accès à ce sous-ensemble au moyen d’une interface définie explicitement Possède des dépendances explicitement définies pour exprimer les contraintes requises par son contexte d’exécution ou sa réalisation Université Constantine 2 © Dr BOUKHELFA Kamel 23 Éléments architecturaux Au niveau de l’architecture, un composant est une unité autonome servant de bloc de construction pour le système Les composants implémentent typiquement des services spécifiques à l’application La manifestation concrète d’un composant est appelé artéfact (instance du composant déployée sur le matériel) N’importe quel type de code sur n’importe quel support numérique Code source, fichiers binaires, scripts, fichiers exécutables, bases de données, applications, etc. Université Constantine 2 © Dr BOUKHELFA Kamel 24 Éléments architecturaux Interface de composant Permet à un composant d’exposer les moyens à utiliser pour communiquer avec lui, Types d’interfaces Interface offerte : définit la façon de demander l’accès à un service offert par le composant Interface requise : définit le type de services (aide) requis par le composant Une interface est attachée à un port du composant Port = point de communication du composant Plusieurs interfaces peuvent être attachées à un même port Université Constantine 2 © Dr BOUKHELFA Kamel 25 Éléments architecturaux Exemple Université Constantine 2 © Dr BOUKHELFA Kamel 26 Éléments architecturaux Dépendances entre composants Dépendance = relation entre deux composants Types de dépendances Un composant peut dépendre d’un autre composant qui lui fournit un service ou une information Un composant peut dépendre d’une classe qui implémente une partie de son comportement Dépendance de réalisation Un composant peut dépendre d’un artefact (code source, fichier.jar, etc.) qui l’implante concrètement Dépendance de manifestation Université Constantine 2 © Dr BOUKHELFA Kamel 27 Éléments architecturaux Connecteur Dans les systèmes complexes, les interactions peuvent constituer un enjeu encore plus important que les fonctionnalités des composants individuels Un connecteur est un élément architectural qui définit le type d’interactions entre les composants et les règles gouvernant ces interactions Un connecteur relie les ports de deux ou plusieurs composants Un connecteur décrit un mécanisme de connexion indépendant de l’application Représente un concept abstrait, paramétrable et indépendant des composants spécifiques qu’il relie Les attributs du connecteurs décrivent ses propriétés comportementales E.g. sa capacité, le temps de latence, le type d’interaction (binaire/naire, asymétrique/symétrique, détails du protocole), etc. Université Constantine 2 © Dr BOUKHELFA Kamel 28 Éléments architecturaux Un connecteur peut avoir un ou plusieurs rôles Communication : rôle le plus fréquent Coordination : contrôle du calcul, de la transmission des données, etc. Conversion : permet l’interaction entre composants développés indépendamment dans des langages différents par exemple Facilitation : permet l’interaction entre composants conçus pour interragir ensemble. Synchronisation, accès contrôlées aux données partagées, etc. Université Constantine 2 © Dr BOUKHELFA Kamel 29 Exemple d’un diagramme de composants Université Constantine 2 © Dr BOUKHELFA Kamel 30 Processus de conception architecturale Le processus de conception de l'architecture se concentre sur la décomposition d'un système en composants et leurs interactions pour satisfaire les exigences fonctionnelles et non fonctionnelles. Les principaux éléments à prendre en compte dans la conception de l’architecture logicielle sont les suivants : Les exigences produites par les tâches d’analyse L'architecture matérielle (l'architecte logiciel fournit à son tour des exigences à l'architecte système, qui configure l'architecture matérielle) Le résultat du processus de conception architecturale est une description architecturale. Université Constantine 2 © Dr BOUKHELFA Kamel 31 Processus de conception architecturale Le processus de conception de l'architecture de base est composé des étapes suivantes : 1. Comprendre le problème C’est l’étape la plus cruciale car elle affecte la qualité de la conception qui suit. Une compréhension claire du problème est nécessaire il n’est pas pour créer une solution efficace. Échecs de nombreux projets logiciels qu’ils ne résolvent pas réellement un problème commercial valable ou n’ont pas de retour sur investissement reconnaissable. 2. Identifier les éléments de conception et leurs relations Définir les limites et le contexte du système. Décomposition du système en ses principaux composants en fonction des exigences fonctionnelles. Cette étape est appelée conception architecturale basée sur les fonctionnalités. Une première validation de l’architecture est effectuée, Université Constantine 2 © Dr BOUKHELFA Kamel 32 Processus de conception architecturale 3. Évaluer la conception de l'architecture La conception est évaluée en donnant une estimation est donnée à chaque attribut de qualité afin de recueillir des mesures qualitatives ou données quantitatives, Evaluer l’architecture = vérifier sa conformité aux exigences des attributs de qualité architecturale. Si tous les attributs de qualité estimés sont conformes à la norme requise, le processus de conception architecturale est terminé. Dans le cas contraire, on a recours à la troisième phase de la conception de l'architecture logicielle : la transformation de l'architecture. 4. Transformer la conception architecturale Après l'évaluation de la conception architecturale, celle-ci est modifiée jusqu'à répondre aux exigences des attributs de qualité La transformation s'effectue en appliquant des opérateurs de conception (décomposition, réplication, etc.), et la conception est réévaluée plusieurs fois si nécessaire. Les transformations optimisent certains attributs de qualité mais peuvent en affecter d'autres négativement. Université Constantine 2 © Dr BOUKHELFA Kamel 33