2. Introduction
aux
architectures
logicielles
ILC
2014-2015
2/39
objectifs
Présenter la notion d’architecture logicielle
Donner un aperçu des principaux styles
architecturaux
Présenter les langages de description d’architectures
(Acme avec son environnement AcmeStudio)
Découvrir le lien entre l’architecture et le
déploiement physique à travers le diagramme de
déploiement
Modèles
et
Architectures
Logicielles
Modèles
et
Architectures
Logicielles
3. Introduction
aux
architectures
logicielles
ILC
2014-2015
3/39
Contrôle des études
• Un cours de 3h par semaine
- Nombre d’heure prévu : 40h
• Éventuellement un exposé ou TP par binôme
• Un contrôle écrit obligatoire
• Note finale
- Moyenne arithmétique des deux notes ou bien par
pondération de la note du contrôle
• Nombre de crédits : 4
Modèles
et
Architectures
Logicielles
6. Introduction
aux
architectures
logicielles
ILC
2014-2015
6/39
Le génie logiciel (anglais software engineering) est une
science de génie industriel qui étudie les méthodes de travail
et les bonnes pratiques des ingénieurs qui développent des
logiciels.
Le génie logiciel s'intéresse en particulier aux procédures
systématiques qui permettent d'arriver à ce que des logiciels
de grande taille correspondent aux attentes du client, soient
fiables, aient un coût d'entretien réduit et de bonnes
performances tout en respectant les délais et les coûts de
construction
Contexte général
9. Introduction
aux
architectures
logicielles
ILC
2014-2015
9/39
Années
1946
De 1946 à 1968:
• Il n’y avait aucune approche méthodique de développement.
• Le développement des logiciels consistait à programmer et à
corriger les bogues.
• Les logiciels évoluaient et les besoins également.
• Les logicielles devenaient de plus en plus complexes et de
moins en moins fiables.
1968
22 ans
• Il était très difficile de réaliser les logiciels satisfaisant les
cahiers de charge dans les délais prévus parce que le
développement ne se faisait pas par étapes.
• Le gestionnaire ne pouvait pas se baser sur des jalons (repères)
pour planifier et suivre adéquatement la progression du
développement.
• Deux exemples d’échecs importants de cette période :
le développement du compilateur PL1 de Control Data n’a pas
pu être complété.
le système d’exploitation OS-360, conçu pour gérer l’ensemble
des programmes exécutés par les ordinateurs de la série IBM-
360, a été livré très en retard et comportait beaucoup
d’anomalies.
Crise du logiciel
Un petit historique
10. Introduction
aux
architectures
logicielles
ILC
2014-2015
10/39
Un petit historique
Problématique:
- A la fin des années 60, avec l’avènement des machines de
3ième génération est apparu la crise du logiciel. Ces machines
rendaient possible des applications jusqu’alors jamais
réalisées
- Les mécanismes utilisés pour les petits systèmes voyaient
leur limite sur ces grosses applications.
- Les systèmes étaient peu fiable, difficiles à maintenir et avec
de faible performance
De la crise du logiciel au GL
12. Introduction
aux
architectures
logicielles
ILC
2014-2015
12/39
Années
• Pour sortir de la crise, en 1968 sous le parrainage de l’OTAN, un groupe de
chercheurs et de praticiens crée le génie logiciel (anglais, software engineering)
• Le génie logiciel est défini comme un domaine qui couvre les méthodes, la
modélisation, les techniques, les outils, les activités, les biens livrables et la
gestion de projets relatifs au développement et à la maintenance du logiciel.
• En s’appuyant sur une approche méthodique, l’équipe de développement accroit sa
productivité et réalise des logiciels de qualité. De plus, il devient plus facile aux
gestionnaires de « prédire » l’échéancier puisque les étapes sont connues.
1968
Un petit historique
13. Introduction
aux
architectures
logicielles
ILC
2014-2015
13/39
Depuis 1968, on assiste à une prolifération et à une
évolution continue :
• des méthodes d’analyse et des notations pour spécifier les
fonctionnalités d’un logiciel;
• des techniques de conception et des notations pour
exprimer la solution;
• des techniques et des langages de programmation;
• des procédures de validation et de vérification pour
assurer la qualité du logiciel;
• des procédures de maintenance.
Années
1968 46 ans 2014
Un petit historique
14. Introduction
aux
architectures
logicielles
ILC
2014-2015
14/39
De nombreux thèmes de recherche se sont alors développés
et ont contribués à l’élaboration de ce nouveaux domaine :
- La spécification et analyse des besoins
- La conception et la modélisation
- Les langages de programmation et les environnements de
développement
- La validation et le test
- L’ingénierie inverse et la maintenance
- La gestion de projets
- Etc
Nouveaux thèmes de recherche
Un petit historique
15. Introduction
aux
architectures
logicielles
ILC
2014-2015
15/39
Les recherche en GL étaient donc toujours d’actualité et de
nouvelles approches sont apparues dans les années 90:
- Les systèmes distribués
- Les modèles de composants
- La création d’un standard de modélisation à travers UML
- L’architecture logicielle
- Etc.
Un petit historique
Aujourd’hui, les gros logiciels représentent des millions de lignes de
code Réaliser et faire évoluer de tels logiciels reste encore un défi
16. Introduction
aux
architectures
logicielles
ILC
2014-2015
16/39
L’architecture logicielle est un domaine du GL qui a reçu
une attention particulière ces dernières années. C’est au
cours de la décennie 1970–80 que les grands principes
architecturaux furent élaborés.
Une architecture contribue à la maîtrise des grands
logiciels
Les éditeurs de logiciels ont pris conscience qu’une
architecture est un facteur critique dans la réussite du
développement et facilite la maintenance et l’évolution
du logiciel
Architecture logicielle
17. Introduction
aux
architectures
logicielles
ILC
2014-2015
17/39
La conception d’une bonne architecture logicielle peut amener à un
produit:
- Qui répond aux besoins des clients
- Qui peut être modifiés facilement pour rajouter de nouvelles
fonctionnalités
Architecture Logicielle
Une architecture inappropriée peut avoir des conséquences
désastreuses jusqu’à l’arrêt du projet
18. Introduction
aux
architectures
logicielles
ILC
2014-2015
18/39
• L’architecture d’un programme ou d’un système informatique est
la structure (ou les structures) du système qui comprend les
éléments logiciels, leurs propriétés visibles et leur relations
• L’architecture d’un système est sa conception de haut niveau
• N’importe quel système complexe est composé de sous-
systèmes qui interagissent entre eux
• La conception de haut niveau est le processus qui consiste à
identifier ces sous-systèmes ainsi que les relations qu’ils
entretiennent entre eux
• L’architecture d’un système est le résultat de ce processus
Architecture logicielle
19. Introduction
aux
architectures
logicielles
ILC
2014-2015
19/39
Architecture Logicielle
• L’architecture implique plusieurs choix dont les technologies, les
produits et les serveurs à utiliser
• Il n’y a pas une architecture unique permettant de réaliser le
système, il y en a plusieurs.
• Le concepteur ou l’architecte tâchera de choisir la meilleure
architecture possible selon plusieurs critères dont la nature du
projet, les compétences de l’équipe, les budgets et outils
disponibles, …etc.
20. Introduction
aux
architectures
logicielles
ILC
2014-2015
20/39
• IEEE 1471 standard (2000)
« The fundamental organization of a system embodied in its
components, their relationships to each other and to the
environment, and the principles guiding its design and
evolution »
Définition
j
Architecture logicielle
L’architecture logicielle fournit une description de haut niveau de la
structure d’un système.
Elle est définie par des composants, des connecteurs et des
configurations.
Composant Composant
Connecteur
21. Introduction
aux
architectures
logicielles
ILC
2014-2015
21/39
• Bass (1998)
« The architecture of a computing system is a set of structures
which comprise software components, the externally visible
properties of these components and the relationships among
them »
Définition
k
Architecture logicielle
Autrement dit :
• Plusieurs points de vue sur une architecture
• Un point de vue : une structure, sa représentation pour une
finalité donnée
• Propriétés d’un composant : description du comportement
attendu
Services fournis ou requis
Performance
Protocole de communication
22. Introduction
aux
architectures
logicielles
ILC
2014-2015
22/39
Motivations:
Maîtriser la complexité du système
➔ Vision globale, modèle structuré, hiérarchique
Servir de racine commune pour :
➔ Conception détaillée et implantation
➔ Estimation des coûts et gestion de projet
➔ Analyses et validation
➔ Évolutions
Support pour la réutilisabilité des systèmes logiciels
➔ Des composants, des sous-systèmes, des «principes »
de conception, etc.
Architecture logicielle
26. Introduction
aux
architectures
logicielles
ILC
2014-2015
26/39
Les composants
• Un composant est un module logiciel répondant à un
besoin fonctionnel / applicatif (application, bibliothèque,
module, …etc.) ou un entrepôt de données
• Un composant est identifié par son nom qui indique son
rôle dans le système
• Les composants communique entre eux en utilisant des
ports (ou interfaces)
• Les architectures utilisent des composants standards :
serveurs, bases de données, application, clients, …etc.
27. Introduction
aux
architectures
logicielles
ILC
2014-2015
27/39
Serveurs et clients
• Un serveur est un module logiciel qui répond aux requêtes
d’autres modules appelés clients
• Généralement, les services et les clients sont hébergés
dans des machines différentes et communiquent via le
réseau (intranet / internet)
• Par exemple, le service http répond aux requêtes des
clients qui sont les navigateurs web
29. Introduction
aux
architectures
logicielles
ILC
2014-2015
29/39
Base de données
• Une base de données est un entrepôt stockant les données sous
un format normalisé
• L’interrogation et la modification des données se fait en utilisant
un langage spécial appelé SQL
• La plupart des bases de données obéissent au modèle
relationnel
• Un SGBD (Système de Gestion de Base de Données) est une
base de données puissante et accessible sur le réseau conçue
généralement pour les gros systèmes
• SQL Server, Oracle, MySQL sont des exemples de SGBD connus
sur le marché
31. Introduction
aux
architectures
logicielles
ILC
2014-2015
31/39
Connecteur de composant
• Le connecteur modélise une interaction entre deux composants.
C’est, donc un composant spécialisé dans l'interaction, ne
répondant pas directement à un besoin fonctionnel / applicatif
• Un connecteur peut modéliser une interaction simple (appel de
procédure) ou une interaction complexe (par exemple utilisation
d’un protocole comme http)
• Un connecteur propose des rôles aux composants (ex :
producteur, consommateur, etc.)
• C’est une entité de même rang que les composants applicatifs
33. Introduction
aux
architectures
logicielles
ILC
2014-2015
33/39
Vues d’une architecture
• La vue logique d’une architecture logicielle définit les principaux
composants d’une architecture sans se soucier des détails
physiques (équipements, machines, …etc.)
• La vue physique s’intéresse au déploiement physique des
différents services
• La vue physique est peu précise lors de la conception. Elle
devient concrète lors de la phase de déploiement.
38. Introduction
aux
architectures
logicielles
ILC
2014-2015
38/39
L’architecture logicielle offre de nombreux avantages tout au
long du cycle de vie du logiciel. La présence d’une
représentation de l’architecture logicielle du système étudié
favorise le passage de l’étape de conception à l’étape
d’implémentation.
De même lors de l’étape de maintenance corrective, elle facilite
la localisation des erreurs résiduelles. Egalement, elle favorise
l’extensibilité du logiciel lors de l’étape de maintenance
évolutive.
Architecture logicielle
Avantages d’une architecture
39. Introduction
aux
architectures
logicielles
ILC
2014-2015
39/39
Les travaux effectués dans le domaine des architectures logicielles
ont permis de réaliser trois avancées majeures:
Le développement de langages de description d’architecture
(ADL) et d’outils associés
La formalisation d’architectures logicielles standard et la
définition d’un vocabulaire commun
La promulgation de ce domaine à travers des livres et des cours
dans les universités
Architecture Logicielle