Rapport Architecture Logicielle
Rapport Architecture Logicielle
Rapport Architecture Logicielle
L’architecture logicielle définit comment les composants d’un système logiciel sont assemblés, leurs
relations et comment ils communiquent entre eux.
L’architecture logicielle définit une liste d’éléments qui facilitent le développement logiciel.
L’architecture logicielle définit la structure du système.
L’architecture logicielle définit le comportement du système
L’architecture logicielle définit les relations entre les composants
L’architecture logicielle définit la structure de la communication
L’architecture logicielle équilibre les besoins des parties prenantes
L’architecture logicielle influence la structure de l’équipe
L’architecture logicielle se concentre sur les éléments importants
L’architecture logicielle permet de saisir les premières décisions de l’architecture
Caractéristiques d’une architecture logicielle
Elles sont généralement divisées en de grandes catégories selon le fonctionnement, les exigences, la
structure, etc.
1- Caractéristiques opérationnelles
- Disponibilité
- Evolutivité
- Faible tolérance aux pannes
- Performance
- Fiabilité
2- Caractéristiques structurelles
- Configurabilité
- Maintenabilité
- Supportabilité
- Portabilité
- Extensibilité
3- Caractéristiques transversales
- Accessibilité
- Utilisabilité
- Faisabilité
- Vie privée
- Sécurité
Avantages et inconvénients de l’architecture logicielle
Avantages :
- Fournit une base solide pour le projet logiciel
- Aides à fournir les performances accrues
- Réduit les couts de développement
Inconvénients
- Parfois, l'obtention de bons outils et la normalisation deviennent un problème pour
l'architecture logicielle.
- La prédiction initiale du succès d'un projet basé sur l'architecture n'est pas toujours possible.
Différents types d’architecture logicielle
- Architecture client-serveur
- Architecture Orientée Service
- Architecture pilotée par les évènements
- Architecture modulaire
- Architecture en couches
- Architecture centrée sur les données
Architecture Client-Serveur
Structure d’application distribuée qui répartit les taches entre les fournisseurs d’un service appelés
SERVEURS et les demandeurs du service appelés CLIENT. Les CLIENTS initient généralement des
sessions de communications avec les SERVEURS qui attendent les demandes entrantes. Le CLIENT
et le SERVEUR communiquent au travers de dispositifs (Ordinateurs portables, tablettes, smartphone).
Quand utiliser l’architecture Client-Serveur ?
- Lorsque les utilisateurs ont différents appareils
- Lorsque vous avez besoin d’encapsuler les fonctionnalités du système
Ex : Les ERP, des serveurs d’impression, des serveurs de messageries, etc.
Avantages et inconvénients
Avantages :
- Encapsulation du matériel des logiciels et des fonctionnalités
- Combinaison fluide de serveurs et de clients sur différentes plateformes
Inconvénients :
- Si tous les utilisateurs demandent simultanément des données au serveur celui-ci peut être
surchargé
- Si le serveur échoue pour une raison quelconque, aucune demande du client ne peut être
satisfaite
Structure de l’architecture CLIENT-SERVEUR
Le Frontend : Il s’agit de la partie du logiciel qui interagit avec les utilisateurs même s’ils se
trouvent sur des plateformes différentes avec des technologies différentes.
Dans l’architecture Client-Serveur, le module frontend est conçu pour interagir avec tous les appareils
existant sur le marché.
Le serveur d’application (Application server) : Il s’agit du serveur ou sont installés les modules
du logiciel. Il se connecte à la base de données et interagit avec les utilisateurs.
Le serveur de base de données (Databases serveur) : Il fournit les tables, données et les index
gérés par l’application. Les recherches et les opérations de CRUD sont gérées ici.
Inconvénients :
- Les clients ont besoin d’internet pour utiliser la bibliothèque
- Le contrôleur de services web peut être surchargé et subir des problèmes de performance
Modèle d’architecture o tous les composants du logiciel sont développés comme une base unique de
code et déployés dans un fichier unique.
Il existe principalement deux types d’architectures monolithiques :
L’architecture monolithique à processus unique :
Si tout le code d’une application est déployé en processus unique alors l’architecture est à processus
unique.
Architecture monolithique modulaire
Dans cette variante d'architecture monolithique, un seul processus applicatif est constitué de plusieurs
modules. Chacun de ces modules peut fonctionner indépendamment. Les modules ont des interfaces
et peuvent communiquer entre eux via ces interfaces. La base de données sous-jacente est la même
et tous les modules utilisent la même base de données pour toutes les opérations. Néanmoins, tous les
modules doivent être combinés pour former un seul fichier pour le déploiement.
Avantages et inconvénients :
Avantages :
- C'est simple à développer car il n'y a pas de modularité ou une modularité moins formelle.
- Il est facile à déployer car un seul fichier est déployé.
- Il y a moins de problèmes de sécurité car le logiciel se compose d'une base de code unique
Inconvénients :
- Lorsqu'un bogue affecte un seul aspect de la base de code, il affecte tout.
- Même si un petit changement est nécessaire, toute l'application doit être redéployée.