Architectures Logicielles
Modélisation et Analyse
Auditoire: Troisième Année Ingénieur
Spécialité : Ingénierie de Développement Logiciel (IDL)
Rania MZID KEBEILI
Maitre-assistante à l’institut Supérieur d’informatique
Docteur en Ingénierie des Systèmes Informatiques
Ingénieur en Informatique
Membre de l’unité de recherche CES
Contact: [email protected]
R. MZID KEBEILI
Architectures Logicielles
Introduction á l’Architecture Logicielle
Qu’est-ce qu’une architecture logicielle ?
The term software architecture means different things to
different people. To the developer, it means the structure of
the system being built. To the framework developer, it’s the
shape of the system that is created with the framework. To the
tester, it’s the shape of what needs to be tested. For all
concerned, it’s the high-level structure of the solution to a
problem that the customer or client wants solved [From
Pattern-oriented Software Architecture Book]
=> The architecture has a purpose
R. MZID KEBEILI
Architectures Logicielles
1
Introduction á l’Architecture Logicielle
Qu’est-ce qu’une architecture logicielle ?
L’architecture d’un logiciel correspond á sa structure en terme
de composants, relations entre composants et relations avec
l’environnement
Une architecture est une infrastructure composée de modules
actifs, d’un mécanisme d’interaction entre ces modules et d’un
ensemble de règles qui gouvernent cette interaction [Boasson
& al. 95].
R. MZID KEBEILI
Architectures Logicielles
2
Introduction á l’Architecture Logicielle
Qu’est-ce qu’une architecture logicielle ?
La définition d’une architecture logicielle passe par la réponse à
la question suivante : Quelles règles doit-on suivre pour réussir
à développer des systèmes qui répondent à toutes les exigences
fonctionnelles (les services à rendre) et non fonctionnelles
(performance et extensibilité du système par exemple) ?
R. MZID KEBEILI
Publicité
Architectures Logicielles
3
Introduction á l’Architecture Logicielle
Granularité des choix architecturaux
R. MZID KEBEILI
Architectures Logicielles
4
Introduction á l’Architecture Logicielle
Granularité de l’architecture
La définition initiale de l’architecture permet une description du
système sans se préoccuper des détails d’implémentation
L’architecture est une abstraction supplémentaire
R. MZID KEBEILI
Architectures Logicielles
5
Introduction á l’Architecture Logicielle
Granularité de l’architecture
L’architecture est une succession d’abstractions
R. MZID KEBEILI
Architectures Logicielles
6
Introduction á l’Architecture Logicielle
Pourquoi définir une architecture?
Première étape pour la conception
R. MZID KEBEILI
Architectures Logicielles
7
Introduction á l’Architecture Logicielle
Pourquoi définir une architecture?
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 de développement, tests,
documentation et maintenance
R. MZID KEBEILI
Architectures Logicielles
8
Introduction á l’Architecture Logicielle
Pourquoi définir une architecture?
L'architecture a une forte influence sur les propriétés finales
d'un système
La structuration architecturale
favorise ou pénalise
Publicité
les
propriétés non fonctionnelles telles que
Performance
Sureté
Sécurité
Disponibilité, etc.
=> L’architecture influence les qualités mais ne les garantie pas !
R. MZID KEBEILI
Architectures Logicielles
9
Introduction á l’Architecture Logicielle
Les éléments Architecturaux
The two major things that you’ll be defining and using in your
software architecture are components and services:
Components (module, container) are the building blocks of the
system — the parts of software or the providers of functionality
that you combine into your architecture.
Services (connector) are the things that your components provide
to the actors and to one another — the visible functionality of the
system. As you divide the functionality of the system into
components, you’re also defining what services each component
provides. The services can be internal or external to the system
R. MZID KEBEILI
Architectures Logicielles
10
Introduction á l’Architecture Logicielle
Architecture Logicielle et Processus de développement
RUP et architecture ?
Centré sur l’architecture
4+1 Model
R. MZID KEBEILI
Architectures Logicielles
11
Introduction á l’Architecture Logicielle
Architecture Logicielle et Processus de développement
RUP et architecture ?
R. MZID KEBEILI
Architectures Logicielles
12
Introduction á l’Architecture Logicielle
Architecture Logicielle et Processus de développement
Méthodes agiles et Architecture ?
o Est-ce que les équipes Agiles font de la modélisation ?
o Réponse : Enquête Dr Dobb's (DDJ) sur la modélisation et la
documentation (2008)
93% des équipes Agiles font du « whiteboard modeling »
Publicité
77% des équipes Agiles anticipent quelques besoins
d'architecture
66% des équipes Agiles font de la modélisation sur papier
47% des équipes Agiles utilisent un outils électronique pour
leur modélisation
R. MZID KEBEILI
Architectures Logicielles
13
Introduction á l’Architecture Logicielle
Architecture Logicielle et Processus de développement
Méthodes agiles et Architecture ?
o Quels rôles définis par les méthodologies agiles ?
o Réponse :
Le représentant du client : Établit les priorités pour l'équipe
et est le contact avec le client (Product owner, XP customer)
Un facilitateur : S'assure que l'équipe n'a pas d'obstacles
pour atteindre ses objectifs (XP coach, ScrumMaster)
Une équipe de développement : Equipe autogérée qui
construit le système (XP programmer, developer)
Un architecte ??
14
R. MZID KEBEILI
Architectures Logicielles
Introduction á l’Architecture Logicielle
Architecture Logicielle et Processus de développement
Méthodes agiles et Architecture ?
o L’architecture d’une vision agile, C’est quoi?
o Réponse :
L’architecture ne veut pas dire documentation ( # RUP)
Projets agiles: architecture intentionnelle et émergente
• Intentionnelle
: Décisions délibérées quelques besoins
anticipés, L'anticipation est par définition imparfaite
• Émergente
: L'architecture s'adapte aux besoins, Les
,
sont
corrections
L'architecture émerge du développement, en fonction des
défis techniques rencontrés
inévitables, à
itération
chaque
R. MZID KEBEILI
Architectures Logicielles
15
Publicité
Introduction á l’Architecture Logicielle
Architecture Logicielle et Processus de développement
Méthodes agiles et Architecture ?
o L’architecture d’une vision agile, C’est quoi?
o Réponse :
Conclusion : L'architecture « agile » consiste à trouver le
juste équilibre entre anticipation et adaptation
R. MZID KEBEILI
Architectures Logicielles
16
Introduction á l’Architecture Logicielle
Architecture Logicielle et Processus de développement
Méthodes agiles et Architecture ?
o Un architecte?
Un rôle, pas une personne : Peut être joué par plusieurs
personnes
Un membre de l’équipe de développement (avec une
attitude proactive)
• Idée globale du système à développer
• Influencer le contenu de la « product backlog »
• Influencer les priorités
• Modélisation pour l'itération
• Refactoing
R. MZID KEBEILI
Architectures Logicielles
17
Introduction á l’Architecture Logicielle
Architecture Logicielle et Processus de développement
Méthodes agiles et Architecture ?
o Pour conclure :
Les méthodologies agiles encouragent
les activités
d'architecture et de conception : L'architecture doit être
itérative et incrémentale
L'architecture « agile » est intentionnelle et émergente(
Anticipation et adaptation)
L'architecte agile
intervient tout au
long du cycle de
développement : Un rôle de l'équipe de développement
o Ne renvoyez pas vos architectes ! Utilisez-les avec agilité »
[Jean-Louis Maréchaux, IBM Canada Lab / Rational software]
R. MZID KEBEILI
Architectures Logicielles
18