Vous êtes sur la page 1sur 28

Chapitre 1

Architecture logicielle

Dr. Rim Negra 1


Génie logiciel (Software engineering)
• Le génie logiciel (software engineering) représente l'application de
principes d'ingénierie au domaine de la création de logiciels.
• Il consiste à identifier et à utiliser des méthodes, des pratiques et des
outils permettant de maximiser les chances de réussite d'un projet
logiciel.

Dr. Rim Negra 2


Génie logiciel (Software engineering)
• Il s'agit d'une science récente dont l'origine remonte aux années
1970.
• A cette époque, l'augmentation de la puissance matérielle a permis
de réaliser des logiciels plus complexes mais souffrant de nouveaux
défauts :
• délais non respectés,
• coûts de production et d'entretien élevés,
• manque de fiabilité et de performances.
• Cette tendance se poursuit encore aujourd'hui.

Dr. Rim Negra 3


Architecture logicielle (Software architecture)
• l'architecture logicielle peut désigner :
• L'activité d'architecture, c'est-à-dire une phase au cours de laquelle on effectue les
grands choix qui vont structurer une application : langages et technologies utilisés,
découpage en sous-parties, méthodologies mises en œuvre...
• Le résultat de cette activité, c'est-à-dire la structure d'une l'application, son
squelette.

• La structure ou les structures du système, comprenant:


• les composantes logicielles
• les propriétés exposées de ces composantes
• les interactions entre celles-ci.
(Bass, Clements et Kazman 2003)

Dr. Rim Negra 4


Historique: GL et architecture logicielle
Les recherche en génie logiciel (GL) étaient 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.

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

Dr. Rim Negra 5


Historique

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.

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

Une architecture contribue à la maîtrise des grands logiciels

Dr. Rim Negra 6


Historique

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

Une architecture inappropriée peut avoir des conséquences désastreuses


jusqu’à l’arrêt du projet

Dr. Rim Negra 7


Définition
• L’architecture logicielle décrit d’une manière
symbolique et schématique les différents éléments
d’un ou de plusieurs systèmes informatiques, leurs
interrelations et leurs interactions.

Dr. Rim Negra 8


Définition
• Contrairement aux spécifications produites par l’analyse
fonctionnelle, le modèle d'architecture, produit lors de la phase de
conception
• l’architecture logicielle 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 décrit le « quoi faire » alors que l’architecture décrit le «


comment le faire ».

Dr. Rim Negra 9


Définition

• La norme IEEE 1471 définit l'architecture logicielle comme


l'organisation fondamentale d'un système représenté par ses
composants, la relation des composants du système les uns avec les
autres et avec l'environnement, et les principes et les directives
pilotant leur conception et leur évolution.

Connecteur
Composant Composant
Dr. Rim Negra 10
Définition
• Une architecture représente les informations sur les composants et leurs
interactions, mais néglige des informations sur les composants qui ne se
rapportent pas à leur interaction.
• Une architecture est avant tout une abstraction d'un système qui supprime
(néglige) les détails des composants qui n'affectent pas l'usage, les
relations et les interactions des composants.
• Les détails privés des composants, les détails qui ont à faire uniquement de
l'exécution interne et ne sont pas visibles de l'extérieur, ne sont pas
architecturels.
• Une architecture détermine comment les composants interagissent, pas la
façon dont ils sont mis en œuvre.

Dr. Rim Negra 11


• 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

Dr. Rim Negra 12


Architecture ou conception ?
• L'architecture logicielle (software architecture) considère le logiciel de
manière globale. Il s'agit d'une vue de haut niveau qui définit le logiciel
dans ses grandes lignes :
• que fait-il ? Quelles sont les sous-parties qui le composent ?
• Interagissent-elles ?
• Sous quelle forme sont stockées ses données ? etc.
• La conception logicielle (software design) intervient à un niveau de
granularité plus fin et permet de préciser comment fonctionne chaque
sous-partie de l'application.
• Quel logiciel est utilisé pour stocker les données ?
• Comment est organisé le code ?
• Comment une sous-partie expose-t-elle ses fonctionnalités au reste du système ?
etc.

Dr. Rim Negra 13


• L’architecture logicielle = abstraction d’un logiciel
• Collection de composantes
• Client, serveur, filtre, couche, contrôleur, agent
• Topologie de composantes (relations)
• Agrégation, classification, généralisation, association
• Interactions entre les composantes
• Connecteurs
• Propriétés des composantes
• Mode d’interaction
• Par ex. RPC, Partage de mémoire, synchronisation

Dr. Rim Negra 14


Objectifs
• Les deux objectifs principaux de toute architecture logicielle sont:

• la réduction des coûts : principalement réalisée par la réutilisation de


composants logiciels et par la diminution du temps de maintenance
(correction d'erreurs et adaptation du logiciel).

• l'augmentation de la qualité du logiciel: Distribuée à travers plusieurs critères;


la norme ISO 9126 est un exemple d'un tel ensemble de critères

Dr. Rim Negra 15


Critères de qualité logicielle
• L'interopérabilité extrinsèque: la capacité du logiciel à communiquer et à utiliser
les ressources d'autres logiciels comme les documents créés par une certaine
application.
• L'interopérabilité intrinsèque: le degré de cohérence entre le fonctionnement
des commandes et des modules à l'intérieur d'un système ou d'un logiciel.
• La portabilité: la possibilité de compiler le code source et/ou d'exécuter le logiciel
sur des plates-formes (machines, systèmes d'exploitation, environnements)
différentes.
• La compatibilité: la possibilité, pour un logiciel, de fonctionner correctement dans
un environnement ancien (compatibilité descendante) ou plus récent
(compatibilité ascendante).
• La validité: la conformité des fonctionnalités du logiciel avec celles décrites dans
le cahier des charges.

Dr. Rim Negra 16


Critères de qualité logicielle
• La vérifiabilité: la simplicité de vérification de la validité.
• L'intégrité: la faculté du logiciel à protéger ses fonctions et ses données
d'accès non autorisés.
• La fiabilité: la faculté du logiciel à gérer correctement ses propres erreurs
de fonctionnement en cours d'exécution.
• La maintenabilité: la simplicité de correction et de modification du logiciel,
et même, parfois, la possibilité de modification du logiciel en cours
d'exécution.
• La réutilisabilité: la capacité de concevoir le logiciel avec des composants
déjà conçus tout en permettant la réutilisation simple de ses propres
composants pour le développement d'autres logiciels.
• L'extensibilité: la possibilité d'étendre simplement les fonctionnalités d'un
logiciel sans compromettre son intégrité et sa fiabilité.
Dr. Rim Negra 17
Critères de qualité logicielle
• L'efficacité: la capacité du logiciel à exploiter au mieux les ressources
offertes par la ou les machines où le logiciel sera implanté.
• L'autonomie: la capacité de contrôle de son exécution, de ses données et
de ses communications.
• La transparence: la capacité pour un logiciel de masquer à l'utilisateur
(humain ou machine) les détails inutiles à l'utilisation de ses
fonctionnalités.
• La composabilité: la capacité pour un logiciel de combiner des informations
provenant de sources différentes.
• La convivialité: la facilité d'apprentissage et d'utilisation du logiciel par les
usagers.

Dr. Rim Negra 18


Diminution de la dégradation du logiciel
• Une architecture faible ou absente peut entraîner de graves
problèmes lors de la maintenance du logiciel.
• Toute modification d'un logiciel mal architecturé peut déstabiliser la
structure de celui-ci et entraîner, à la longue, une dégradation
(principe d'entropie du logiciel).
• L'architecte informatique devrait donc concevoir, systématiquement,
une architecture maintenable et extensible.

Dr. Rim Negra 19


Diminution de la dégradation du logiciel

Dr. Rim Negra 20


Développement pour et par la réutilisation
• La réutilisation de composants logiciels:
• est l'activité permettant de réaliser les économies les plus substantielles
• nécessite de créer une architecture logicielle permettant une intégration
harmonieuse de ces composants.
• Le développement par la réutilisation logicielle impose donc un cycle
de production-réutilisation perpétuel et une architecture logicielle
normalisée.

Dr. Rim Negra 21


Développement pour et par la réutilisation
• Une réutilisation bien orchestrée nécessite la création et le maintien
d'une bibliothèque logicielle et un changement de focus; créer une
application revient à créer les composants de bibliothèque
nécessaires puis à construire l'application à l'aide de ces composants.

• Une telle bibliothèque, facilitant le développement d'application est


un framework (cadriciel) d'entreprise et son architecture, ainsi que sa
documentation sont les pierres angulaires de la réutilisation logicielle
en entreprise.

Dr. Rim Negra 22


Développement pour et par la réutilisation
• Le rôle de l'architecte informatique se déplace donc vers celui de
bibliothécaire.
• L'architecte informatique doit:
• explorer la bibliothèque pour trouver les composants logiciels appropriés
• créer les composants manquants
• les documenter
• les intégrer à la bibliothèque.
• Dans une grande entreprise, ce rôle de bibliothécaire est rempli par
l'architecte informatique en chef qui est responsable du
développement harmonieux de la bibliothèque et de la conservation
de l'intégrité de son architecture.
Dr. Rim Negra 23
Les modèles d’architecture
• La description d'un système complexe comme un logiciel informatique peut être
faite selon plusieurs points de vue différents mais chacun obéit à la formule de
Perry et Wolf:
architecture = éléments + formes + motivations

• Selon le niveau de granularité, les éléments peuvent varier en


• tailles (lignes de code, procédures ou fonctions, modules ou classes, paquetages ou couches,
applications ou systèmes informatiques),
• raffinement (ébauche, solution à améliorer ou solution finale)
• abstraction (idées ou concepts, classes ou objets, composants logiciels).
• Les éléments peuvent également posséder
• une temporalité (une existence limitée dans le temps)
• une localisation (une existence limitée dans l'espace).

Dr. Rim Negra 24


Le modèle conventionnel

Dr. Rim Negra 25


Le modèle conventionnel
• Ce diagramme décrit, à gauche, les spécifications systèmes qui sont
également représentées par des diagrammes
• Entités-Relations
• Flux de données
• États-Transitions.
• Et à droite, il y a les différentes activités de conception prenant
comme intrants les livrables de la phase d'analyse.

Dr. Rim Negra 26


Le modèle conventionnel
• L'architecture logicielle traditionnelle nécessiterait de produire au
moins quatre vues distinctes :
1. une architecture des données (conception des données)
2. une architecture fonctionnelle et/ou modulaire (conception architecturale)
3. une architecture fonctionnelle et/ou modulaire pour les interfaces
utilisateurs (conception des interfaces)
4. une architecture détaillée (ordinogrammes, états-transitions) des différents
modules (conception des composants).

Dr. Rim Negra 27


Le modèle conventionnel
• La pyramide exprime que chaque couche est bâtie sur la précédente.
• Les composants réalisant les fonctionnalités du logiciel doivent manipuler
des éléments de données qui doivent donc être préalablement décrits.
• Les composants réalisant les interfaces utilisateurs doivent utiliser les
fonctionnalités du logiciel préalablement décrites.
• La création de l'architecture détaillée de chacun des composants du logiciel
nécessite, évidemment, que ceux-ci soient préalablement inventés.
Ce modèle d'architecture impose une séparation claire entre les données,
les traitements et la présentation.

Dr. Rim Negra 28

Vous aimerez peut-être aussi