Cour Architecture
Cour Architecture
2
SECTION 1
Définition de
l’architecture
logicielle
SECTION 1
DÉFINITION D’UN LOGICIEL
▪Un logiciel est un ensemble de programmes conçus pour être exécutés sur un ordinateur ou
un appareil électronique afin de réaliser une fonction spécifique
▪Il peut être installé sur un support physique ou utilisé en ligne
▪Il peut être classé en deux catégories :
1.Logiciel système : Il gère les ressources matérielles et fournit des services aux autres
logiciels (exemple: systèmes d'exploitation, les pilotes, les langages de programmation,
et les utilitaires)
2.Logiciel applicatif : Il permet à l'utilisateur d'accomplir des tâches précises (exemple :
éditeur de texte, un navigateur web, un lecteur multimédia, un jeu vidéo)
SECTION 1
DÉFINITION D’UN LOGICIEL
Les systèmes d'exploitation
Les pilotes
Logiciel Système
Les logiciels Gestionnaire de fichiers, Logiciels
de compression de données,
Logiciel
utilitaires Antivirus
La présentation
Communication La logique métier Les données
Front-end Back-end
SECTION 1
DÉFINITION DE L’ARCHITECTURE LOGICIELLE
Le résultat de l’activité d'architecture de point de vue logicielle : MEAN Stack
Applications complexes (Exemple : ERP, Dashboards)
La présentation
Angular
Communication La logique métier Les données
Node.js + Express.js MongoDB
Front-end Back-end
SECTION 1
DÉFINITION DE L’ARCHITECTURE LOGICIELLE
Le résultat de l’activité d'architecture de point de vue logicielle : MERN Stack
Applications interactives, légères, et évolutives (Exemple : Facebook, Instagram)
La présentation
React.js
Communication La logique métier Les données
Node.js + Express.js MongoDB
Front-end Back-end
SECTION 1
DÉFINITION DE L’ARCHITECTURE LOGICIELLE
Le résultat de l’activité d'architecture de point de vue physique
Un client léger ou lourd
Poste client 1
Serveur(s)
Serveur(s) de gestion
Poste client 2 d’application des bases de
données
Front-end Back-end
SECTION 2
LES STYLES
ARCHITECTURAUX
SECTION 2
LES STYLES ARCHITECTURAUX
Répartition logique des Répartition physique des
composants de l’architecture composants de l’architecture
logicielle logicielle
Présentation
Machine(s) Machine(s)
client serveur
Données Traitement
SECTION 2
LES STYLES ARCHITECTURAUX
Répartition logique des composants de l’architecture logicielle
▪Architecture monolithique
▪Architecture en couches
Présentation
Données Traitement
SECTION 2
LES STYLES ARCHITECTURAUX
L’architecture monolithique
L’architecture monolithique est un modèle d’architecture logicielle où
une application est développée comme un bloc unique et indivisible
Application
Caractéristiques de l’architecture monolithique
•Une seule base de code : Tous les composants (interface utilisateur, Présentation
logique métier, données, etc.) sont intégrés dans une seule base de
code Logique métier
➢Facilité d'évolution : Les modifications dans une couche peuvent être effectuées sans affecter les autres
couches
▪Inconvénients :
➢Complexité / Performances : Les appels entre les couches peuvent ajouter une latence si la communication
▪Technologies courantes :
➢HTML, CSS, JavaScript
Les couches de l’application peuvent être déployées sur des nœuds physiques différents (les Tiers)
Le découpage et la répartition des trois composantes d’une application informatique, permettent
de distinguer plusieurs types d’architecture de déploiement / Architectures Multi-tiers :
▪Architecture 1-tiers Architecture Centralisée
▪Architecture 2-tiers Architecture Client/serveur
▪Architecture 3-tiers Architectures Réparties
▪Architecture n-tiers Architectures Réparties
SECTION 2
LES STYLES ARCHITECTURAUX
Architectures Multi-tiers: Architecture 1-tiers
▪Les trois composantes de l’application sont liées et s'exécutent sur la même machine
▪On parle donc de l’informatique centralisée
Présentation
Logique métier
Données
SECTION 2
LES STYLES ARCHITECTURAUX
Architectures Multi-tiers: Architecture client/serveur
L’architecture client/serveur est un modèle où les composants d'une application sont répartis
entre un client (qui demande des services) et un serveur (qui fournit ces services)
Types d’Architectures Client/Serveur:
1)Architecture 2-tiers
2)Architecture 3-tiers
3)Architecture n-tiers
SECTION 2
LES STYLES ARCHITECTURAUX
Architecture client/serveur : Architecture 2-tiers
Architecture
▪Les trois couches de l’application sont Application
déployées sur deux machines différentes : la
machine client et la machine serveur Présentation
▪Les Données sont centralisées sur un Serveur Logique métier
de Base de Données / SGBD
▪Le dialogue client-serveur se résume à l’envoi Données
de requêtes et retour des données
correspondantes Quelles sont les différentes possibilités de
répartition des trois couches logicielles
entre les clients et le serveur ?
SECTION 2
LES STYLES ARCHITECTURAUX
Architecture client/serveur : Architecture 2-tiers
L’architecture 2-tiers est un modèle où l’application Répartition 2
est réparties sur deux tiers (machines) principales : Présentation
Logique métier
1.Le client (Tier 1) : Couche présentation (Interface Logique de
présentation Données
utilisateur) + parfois une partie de la logique
métier
Répartition 1
2.Le tier serveur (Tier 2) : Base de données + Logique métier
éventuellement la logique métier
Présentation Données
Le client communique directement avec le serveur
via un réseau (LAN, Internet…)
SECTION 2
LES STYLES ARCHITECTURAUX
Architecture client/serveur : Architecture 2-tiers
Composants de l'architecture 2-tiers :
1) Tier 1 : Client
• Interface utilisateur : Conçu pour faciliter l'interaction avec l'utilisateur, l'interface peut inclure des
formulaires, des boutons et d'autres éléments graphiques
• Logique de présentation : Gère la validation des données et l'interaction avec l'utilisateur avant
d'envoyer des requêtes au serveur
2) Tier 2 : Serveur
• Logique métier : Contient la logique nécessaire pour traiter les demandes des clients, effectuer des
calculs et manipuler les données
• Gestion des données : Interagit avec la base de données pour stocker, récupérer, mettre à jour et
supprimer des informations
SECTION 2
LES STYLES ARCHITECTURAUX
Architecture client/serveur : Architecture 3-tiers (Architectures Réparties)
▪Son principe de base consiste à séparer trois couches logicielles, contenues dans une
application, sur trois niveaux ou machines
▪Avantages:
➢Faciliter la maintenance et les évolutions futures de l’application (Chaque couche est
indépendante)
➢Assurer une sécurité plus importante car l’accès à la base de données n’est autorisé que par
la couche logique métier
➢Optimiser le travail en équipe
SECTION 2
LES STYLES ARCHITECTURAUX
Architecture client/serveur : Architecture 3-tiers (Architectures Réparties)
▪Principe de partitionnement
▪La couche présentation est toujours prise en charge par le poste client (Tier 1)
▪La couche logique métier est prise en charge par un serveur intermédiaire / souvent Serveur
d’application (Tier 2)
▪Les données sont toujours gérées par un serveur de base de données (Tier 3)
Définition de
l’architecte logiciel
SECTION 3
DÉFINITION DE L’ARCHITECTE LOGICIEL
UTILITÉS D'UNE ARCHITECTURE LOGICIELLE
Utilité Description
Permet de structurer le système en composants modulaires
Structure et organisation claires
et de faciliter la compréhension du projet.
Divise le système en modules indépendants, chacun
Séparation des préoccupations
responsable d'une fonction spécifique
Facilite la maintenance et les mises à jour avec moins
Amélioration de la maintenabilité
d'impact sur le reste du système.
Permet de gérer les extensions du système tout en
Scalabilité et performance
maintenant des performances optimales
Facilite la réutilisation des composants existants pour
Réutilisation du code
réduire les coûts et le temps de développement
SECTION 3
DÉFINITION DE L’ARCHITECTE LOGICIEL
▪L'architecte logiciel: Un expert en informatique / un
professionnel
1.responsable de la conception et de l'organisation
globale des systèmes logiciels
2.responsable de la création et du respect du
modèle d'architecture logicielle
3.responsable de définir et communiquer une
architecture logicielle qui satisfait les contraintes
SECTION 1
DÉFINITION DE L’ARCHITECTE LOGICIEL
RESPONSABILITÉS DE L’ARCHITECTE LOGICIEL
Responsabilités de l’architecte logiciel Description
Conception de l'architecture logicielle Définition de la structure globale du système
Prise en compte des exigences non fonctionnelles Comme la scalabilité, la sécurité, la performance, et la maintenabilité
Sélection des technologies et outils Choix des technologies en fonction des besoins du projet
Communication avec les parties prenantes Collaboration avec les équipes techniques et non techniques
Gestion des risques techniques Identification des risques et mise en place de solutions
47
SECTION 1
L’ARCHITECTURE
DANS LE CYCLE DE VIE
D'UN LOGICIEL
SECTION 1
L’ARCHITECTURE DANS LE CYCLE DE VIE D'UN LOGICIEL
▪Le génie logiciel couvre l'ensemble du cycle de vie d'un logiciel
▪Le cycle de vie du logiciel fait référence aux étapes à suivre pour créer, déployer
et maintenir un logiciel.
▪Chaque phase a des objectifs spécifiques, et chacune d’elles est liée à des
pratiques et des méthodologies issues du génie logiciel
SECTION 1
L’ARCHITECTURE DANS LE CYCLE DE VIE D'UN LOGICIEL
1. Planification Livrable: Plan de gestion de projet
Livrable: Correctifs et
8. Maintenance
mises à jour du logiciel
SECTION 1
L’ARCHITECTURE DANS LE CYCLE DE VIE D'UN LOGICIEL
Etape 1 : Planification
▪ Livrable principal : Plan de gestion de projet
▪ Objectif : Définition des grandes lignes du projet : objectifs, risques, ressources, et délais
▪ Contenu :
1. Charte de projet
1. Plan de gestion de projet: définit la méthodologie de gestion de projet
2. Plan de ressources: détailler les ressources humaines, matérielles et logicielles
3. Plan de gestion des risques identifie les risques potentiels pour le projet, leur probabilité
d’occurrence, leur impact, et les stratégies pour les atténuer ou les gérer.
4. Estimation des coûts et budget : estime le coût total du projet et fournit un budget
détaillé
SECTION 1
L’ARCHITECTURE DANS LE CYCLE DE VIE D'UN LOGICIEL
Etape 2 : Expression des besoins (Spécification des besoins)
▪ Livrable principal : Cahier des charges fonctionnel
▪ Objectif : Définir ce que doit faire le système sans entrer dans les détails techniques.
▪ Contenu :
1. Besoins fonctionnels : Décrire les actions que le logiciel doit accomplir
2. Besoins non fonctionnels : Performances, sécurité, compatibilité, contraintes
ergonomiques, etc.
3. Contraintes : Budget, délais, technologies souhaitées.
SECTION 1
L’ARCHITECTURE DANS LE CYCLE DE VIE D'UN LOGICIEL
Etape 3 : Analyse
▪ Livrable principal : Cahier des charges techniques
▪ Objectif : Traduire les besoins en exigences précises et identifier les contraintes techniques
et les risques
▪ Contenu :
1. Modélisation des cas d’utilisation : Diagramme de cas d’utilisation, de classes, de séquence,
d’activité
2. Étude de faisabilité : Techniques, économiques, temporelles, et humaines.
3. Architecture préliminaire : Présentation des choix d'architecture (par exemple, choisir entre
architecture monolithique ou en couches)
4. Détails sur l’interopérabilité : Protocoles de communication, intégration avec des systèmes
existants
5. Plan de gestion des risques : Identification des risques techniques, humains, etc.
SECTION 1
L’ARCHITECTURE DANS LE CYCLE DE VIE D'UN LOGICIEL
Etape 4 : Conception
▪ Livrable principal : Document de conception détaillée
▪ Objectif : Définir comment le système va être construit et structuré techniquement
▪ Contenu :
1. Architecture logicielle détaillée : Diagrammes UML (diagramme de paquetages, diagramme
de composants, diagramme de déploiement)
2. Modélisation avancée : diagramme de classes de conception, de séquence de conception,
de paquetages
3. Modèle de données : Schéma de base de données
4. Spécifications des interfaces : API, format des données échangées, etc.
5. Plan de tests : Tests unitaires, d’intégration, tests de performance et de sécurité.
6. Stratégie de développement : Découpage en modules ou sprints, choix des technologies, outils de
développement, et de gestion de version
SECTION 2
DÉVELOPPER UN
MODÈLE
ARCHITECTURAL :
MODÉLISER AVEC
UML
55
SECTION 2
MODÉLISER AVEC UML
▪ Vue Logique : modéliser la structure statique
Vue du système
Vue Logique d'Implémentation ▪ Vue d'Implémentation : Description de
Diagramme de classes l’implémentation (physique) du système
Diagramme de composants
Diagramme de paquetage logiciel
▪ Vue Comportement : décrire le
Vue Cas comportement dynamique du système
d’Utilisation ▪ Vue Déploiement : montrer comment la
Diagramme de séquence
Diagramme d’activités
partie logicielle est déployé sur la partie
Diagramme de déploiement matérielle (des serveurs, des machines
Diagramme d’état
Vue Comportement Vue Déploiement physiques, ou des conteneurs cloud)
▪ Vue Cas d’Utilisation : Montrer les
interactions entre les utilisateurs et le système
SECTION 2
MODÉLISER AVEC UML
Décrire l’architecture avec UML
▪ Tous les diagrammes UML peuvent être utiles pour décrire les différents aspects du
modèle architectural en fonction des aspects que l'on souhaite modéliser (structure,
comportement, interactions, etc.)
▪ Trois des diagrammes UML sont particulièrement utile pour décrire une architecture
logicielle
1) Diagramme de packages
2) Diagramme de composants
3) Diagramme de déploiement
SECTION 2
DÉVELOPPER UN MODÈLE
ARCHITECTURAL :
MODÉLISER AVEC UML
PARTIE 1 : DIAGRAMME DE
PAQUETAGE
58
SECTION 2
DIAGRAMME DE PAQUETAGE
Utilité du diagramme de paquetage
▪ Le diagramme de paquetage UML est utilisé pour organiser la partie logicielle d'une
application en regroupant les classes selon leurs responsabilités
▪ Rôle du Diagramme de Paquetage dans l'Architecture Logicielle
1) Organisation modulaire du système : Permet d'organiser et de structurer les grands
systèmes / Un système peut être vu comme un paquetage unique contenant des sous-
paquetages (représentant ses sous-systèmes)
2) Gestion de la dépendance : Identifie et gère les dépendances entre les modules
3) Documenter l'architecture du système : Sert à documenter et à communiquer
l'architecture du système
SECTION 2
DIAGRAMME DE PAQUETAGE
Composants de base d'un diagramme de paquetage
1) Paquetage (Package) : Package
▪Regrouper un ensemble d'éléments liés de
manière logique au sein d'un système Dépendance
▪Contient d’autres éléments UML : classes, « stéréotype »
interfaces, sous-packages, etc. Nom
▪Peut être hiérarchique (un package peut contenir
d'autres packages) contenu
2) Dépendance (dependency) : Indique qu’un
package utilise les éléments d’un autre
Les stéréotypes permettent de qualifier les paquetages (exactement comme pour les classes) : préciser le rôle
ou la nature du paquetage dans l’architecture du système
Exemple: ajouter stéréotype « layer » pour un paquetage qui illustre une couche logicielle
SECTION 2
DIAGRAMME DE PAQUETAGE
Utilité du diagramme de paquetage pour l’architecture logicielle
▪Le plus souvent utilisés pour donner un aperçu visuel de l'architecture en couches d’un
système logiciel : chaque paquetage présente une couche de l’architecture logicielle
▪Définir la vue statique du Modèle d’une architecture logicielle
74
SECTION 2
DIAGRAMME DE COMPOSANTS
Fixer une architecture Modèle détaillé de l’architecture logicielle
préliminaire : Décider le style
architectural (monolithique ,
en couches)
3. Analyse
• Diagramme de classes de
conception
• Diagramme de paquetage de
• Diagramme de • Diagramme de classes l’architecture logique
cas d’utilisation d’analyse • Diagramme de composants
• Diagramme de paquetage • Diagramme de déploiement
2. Expression des de la logique métier
besoins
4. Conception
SECTION 2
DIAGRAMME DE COMPOSANTS
• Diagramme de classes de Modèle de l’architecture logicielle détaillé en 3 vues :
conception 1) Vue logique : Diagramme de classes de conception et
• Diagramme de paquetage de Diagramme de paquetage de l’architecture logique
l’architecture logique
• Diagramme de composants 2) Vue d’implémentation : Diagramme de composants
• Diagramme de déploiement 3) Vue de déploiement : Diagramme de déploiement
4. Conception
La vue d’implémentation
✓ Montre comment les éléments du système sont organisés concrètement dans le code
✓ Permet de passer de la modélisation abstraite à une modélisation prête à être codée
SECTION 2
DIAGRAMME DE COMPOSANTS
SECTION 2
DIAGRAMME DE COMPOSANTS
▪ Lorsqu'on passe de la modélisation des classes à leur implémentation en Java, chaque classe est
généralement convertie en un fichier .java contenant le code source
▪ Deux fichiers : Commande.java et Panier.java
SECTION 2
DIAGRAMME DE COMPOSANTS
Commande.java
public class Commande {
private int delaisLivraison; Panier.java
private double fraisDePort; public class Panier {
private double montantTotal;
private int nombreArticles;
public Commande(Panier panier, int delaisLivraison, double fraisDePort) private double total;
{this.delaisLivraison = delaisLivraison;
this.fraisDePort = fraisDePort; public Panier(int nombreArticles, double total) {
this.montantTotal = panier.getTotal() + fraisDePort; this.nombreArticles = nombreArticles;
} this.total = total;
}
public void afficherDetails() {
System.out.println("Délai de livraison : " + delaisLivraison + " jours"); public int getNombreArticles() {
System.out.println("Frais de port : " + fraisDePort + " DT"); return nombreArticles;
System.out.println("Montant total : " + montantTotal + " DT"); }
}
} public double getTotal() {
return total;
}
}
SECTION 2
DIAGRAMME DE COMPOSANTS
Application.java
public class Application {
public static void main(String[] args) {
// Création d’un panier avec 3 articles pour un total de 50 DT
Panier panier = new Panier(3, 50.0);
// Création d’une commande à partir du panier avec un délai de livraison de 5 jours et 7 DT de frais de port
Commande commande = new Commande(panier, 5, 7.0);
Exemple de fichier main
// Affichage des détails de la commande
commande.afficherDetails();
}}
Ajout d’une autre classe sans modifier aucune classe public double getTotal() {
existante (*) return total - calculPointsFidelite();
}}
SECTION 2
DIAGRAMME DE COMPOSANTS
Diagramme de composants : définition et utilité
Définition : Le diagramme de composants décrit les parties logicielles (composants) et leurs
dépendances dans le cadre de l’implémentation d’un système.
Ce que montre ce diagramme :
▪ La vue statique de l'implémentation du système
▪ Les unités fonctionnelles autonome d’un programme
▪ Les relations entre ces unités
Ce type de diagramme est utilisé pour :
▪ Représenter les choix techniques et organisationnels d’un système
▪ Visualiser les liens de dépendance entre les éléments logiciels
▪ Préparer ou documenter les étapes de compilation, de packaging et de déploiement
SECTION 2
DIAGRAMME DE COMPOSANTS
Éléments d'un Diagramme de Composant
Élément Description Présentation UML
Exemple :
▪ Le composant Commande dépend de
l’interface IPanier pour créer une commande
à partir des articles présents dans le panier
SECTION 2
DIAGRAMME DE COMPOSANTS
Artefacts : définition et utilité
Définition :
▪ Les artefacts représentent des éléments physiques utilisés ou générés par les composants
▪ Ils incluent des fichiers (exécutables, bibliothèques), des scripts, des bases de données, etc
Rôle des Artefacts :
▪ Ils sont associés aux composants pour représenter les éléments physiques qu’ils utilisent ou
produisent
Exemples d'Artefacts :
▪ Fichiers exécutables (ex. application.jar, programme.exe)
▪ Bibliothèques (ex. spring-boot.jar)
▪ Bases de données (ex. utilisateurs.db)
SECTION 2
DIAGRAMME DE COMPOSANTS
Artefacts : définition et utilité
Stéréotypes pour Artefacts : Ces stéréotypes sont utilisés pour décrire des éléments matériels ou des
fichiers spécifiques dans le système, indiquant la manière dont le système est déployé ou comment les
données sont stockées
100
SECTION 2
DIAGRAMME DE DÉPLOIEMENT
• Diagramme de classes de Modèle de l’architecture logicielle détaillé en 3 vues :
conception 1) Vue logique : Diagramme de classes de conception et
• Diagramme de paquetage de Diagramme de paquetage de l’architecture logique
l’architecture logique
• Diagramme de composants 2) Vue d’implémentation : Diagramme de composants
• Diagramme de déploiement 3) Vue de déploiement : Diagramme de déploiement
4. Conception
La vue de déploiement
✓ Montre où et comment les éléments logiciels sont exécutés dans l’infrastructure technique
SECTION 2
DIAGRAMME DE DÉPLOIEMENT
Diagramme de déploiement : définition et utilité
Définition : Le diagramme de déploiement est un diagramme structurel UML qui décrit l’organisation
physique d’un système / Offre une vue d'ensemble précise et détaillée de l'infrastructure physique
Rôle dans l’architecture logicielle
▪Représente la structure physique du système (ex. : serveurs, objets connectés, capteurs, clients, etc.)
▪Montre les connexions réseau entre les nœuds physiques
▪Complète le diagramme de composants en précisant comment les composants logiciels seront
distribués et exécutés sur le matériel, les serveurs, ou d'autres ressources de l'environnement
d'exploitation (*)
▪Permet d’anticiper les contraintes de déploiement :
✓ Réseau (latence, bande passante)
✓ Charge (répartition des traitements, scalabilité )
✓ Compatibilité entre plateformes (OS, architectures matérielles, dépendances logicielles)
SECTION 2
DIAGRAMME DE DÉPLOIEMENT
Éléments clés d'un Diagramme de Déploiement
Un diagramme de déploiement est composé de :
▪Nœud
▪Artefact
▪Connexion : Lien de communication / Dépendance
SECTION 2
DIAGRAMME DE DÉPLOIEMENT
Les nœuds : définition et utilité
Définition : Représentent des ressources matérielles ou des environnements d’exécution sur lesquels
les composants logiciels sont déployés.
En UML, on distingue deux types de nœuds :
1. Nœud physique (<<device>>) : une ressource matérielle
2. Environnement d’exécution (<<executionEnvironment>>) : un environnement virtuel qui
s’exécute dans un nœud physique
Stéréotypes pour les nœuds : Personnaliser et de spécifier le rôle ou le type d’un nœud
Stéréotype Description Exemple
<<device>> Nœud physique Serveur physique, smartphone, carte Arduino, PC
Une machine virtuelle (ex. : JVM), Un système d’exploitation, Serveur
<<executionEnvironment>> Environnement d’exécution d’applications (ex. Apache Tomcat), Serveur Cloud (ex. Azure App Services),
un système de gestion de base de données (ex. PostgreSQL, MongoDB)
SECTION 2
DIAGRAMME DE DÉPLOIEMENT
Les nœuds : définition et utilité
Un nœud peut contenir deux types éléments internes qui représentent les unités déployées sur ce
matériel ou environnement virtuel
1. Artefacts (Artifacts)
•Représentent des fichiers exécutables, bibliothèques, scripts, etc.
•Exemples : app.war (application Java Web), app.py (script Python), main.exe (binaire
Windows), etc.
2. Composants (Components)
•Représentent des éléments logiciels du système
•Exemples : Composant GestionCatalogue, Composant Panier, etc.
SECTION 2
DIAGRAMME DE DÉPLOIEMENT
Structure interne des nœuds : artefacts et composants