Introduction aux architectures logicielles

Institut Supérieur des Études Technologiques de Bizerte
1/4
100%
Rendu du PDF...
Page 1 sur 4Lecteur de document UniversityLib

Introduction aux architectures logicielles

Institut Supérieur des Études Technologiques de Bizerte · Software Architecture · notes

Voir tous les documents en génie logiciel

| | | | | | --- | --- | --- | --- | | **Institut Supérieur des Etudes Technologiques de Bizerte** **Département Technologies de l’informatique** | | | | | **Parcours :** | Développement des Système d’Informations | | | | **Unité d’Enseignement :** | Environnement de Développement | | | | **Matière : Architecture Logicielle** | | | | | **Enseignants Responsables :** Khaoula Jridi &Hatem Hamdi | | **Année Universitaire :** 2015-2016 | **Semestre :** 5 |

**Chapitre 0 : Introduction aux architectures logicielles**

**Objectif :**

* Introduire la notion d’architecture logicielle * Motivation * Savoir les principaux styles architecturaux

1. **Qu’est-ce qu’une architecture logicielle ?**

* Une architecture est l’expression des premières décisions de conception concernant la *décomposition* d’un système en *parties*. [Bass, Clements & Kazman,99] * L’architecture d’un logiciel définit le logiciel en terme de composantes et d’interactions entre composantes. [Shaw & Garlan, 96]

L’architecture impose des contraintes à la conception tout en laissant certaines décisions en suspens, l’architecture ne définit pas une implantation. Introduction L’analyse décrit le quoi alors que l’architecture décrit le comment

**Positionnement**

* L’architecture = première étape de conception + - * réduire la complexité du système abordé en le structurant en composants logiciels

Publicité

**![](data:image/png;base64...)**

Permet de réfléchir et répondre aux questions :

* Où développer ? * Comment développer ? * Quelles équipes, quelles technologies ? * Quel coût ?

A partir de l’architecture, on peut :

* + - * + Définir un plan de travail + Répartir le travail entre les équipes + Allouer les ressources + Imposer des contraintes techniques + Structurer les différentes étapes + Le développement + Les tests + La documentation + La maintenance

1. **Comment décrire une architecture logicielle ?**

Pour décrire une architecture logicielle pour une certaine application il faut se concentrer sur les points suivants :

* Décrire l’organisation générale d’un système et sa décomposition en composants * Déterminer les interfaces entre les composants * Décrire les interactions et le flot de contrôle entre les composants * Décrire les fonctionnalités de chaque composant

1. **Pourquoi développer une architecture logicielle ?**

Publicité

* Pour permettre à tous de mieux comprendre le système à réaliser * Pour donner les différentes vues sur l’application ( logique, fonctionnelle, physique, etc) * Pour prévoir les parties du système – les composantes logicielles – et les relations entre elles. * Pour faciliter la réutilisation * Pour faciliter la maintenance (corrective + évolutive)

1. **Qu’est ce qu’un style architecturale? Exemple ?**

* Un style architectural est un patron (modèle) qui propose une organisation bien défini des composants et leurs interactions.

[Selon Garlan et Shaw(1994)], un style architectural est précisément défini par son vocabulaire (types de composants et de connecteurs), ses contraintes de configuration (contraintes topologiques), ses invariants, ses exemples d’utilisation, ses avantages et inconvénients, et ses spécialisations les plus communes.

Examinant le style architectural MVC (Modèle-Vue-Contrôleur)

Le MVC propose trois types de composants

* + Modèle : rassemble des données du domaine, des connaissances du système. Contient les classes dont les instances doivent être vues et manipulées + Vue : utilisé pour présenter/afficher les données du modèle dans l’interface utilisateur + Contrôleur : contient les fonctionnalités nécessaires pour gérer et contrôler les interactions de l’utilisateur avec la vue et le modèle

| | | | --- | --- | | Avantages | Inconvénients | | * Diviser pour régner : les composants peuvent être conçus indépendamment * Cohésion : meilleure cohésion que si les couches vue et contrôle étaient dans l’interface utilisateur. * Couplage : le nombre de canaux de communication entre les 3 composants est minimal * Réutilisabilité : la vue et le contrôle peuvent être conçus à partir de composants déjà existants * Flexibilité : il est facile de changer l’interface utilisateur | * goulot d’étranglement possible |

**Intérêts de l’architecture MVC**

Publicité

* Indépendance entre : * la représentation logique d'une application (modèle) * la représentation visuelle (vue) * les actions que l’utilisateur effectue (contrôleur)

🡺Cette indépendance favorise le développement et la maintenance des applications :

* Modularité dans la conception * vue et contrôleur peuvent être développés indépendamment du Modèle * Meilleure répartition des tâches * développeurs du modèle/développeurs de l'interface ont des compétences

différentes

* développeurs du modèle : connaissance métier * développeurs de l’interface : connaissance des besoins utilisateurs, souci d’ergonomie. * Séparation claire entre les données du programme et l’interface graphique affichant ces données. * Possibilités de vues différentes d'un même modèle

🡪L'application peut montrer l'état du modèle de différentes façons, avec différentes interfaces utilisateurs

![](data:image/png;base64...)