l architecture logicielle en pratique
DESCRIPTION
Cette introduction vise à:* définir le rôle de l'architecture logicielle;* retracer l'évolution du développement logiciel afin de mieux comprendre l'état (d'immaturité) de cette discipline; * brosser un portrait des qualités essentielles d'un architecte;* introduire quelques fondements de cette discipline.TRANSCRIPT
L’ARCHITECTURELOGICIELLE EN
PRATIQUE
Weisman Art Museum de l’architecte Frank GehryPhoto de Chris Zubke publiée sur Flickr
François Trudel, ing., M.Sc.A.Président [email protected]
© 2009 Repenser les TI
24 mars 2009
Évolution d’une Discipline
2L’architecture Logicielle en pratique
© 2009 Repenser les TI
Matériel mainframe mini PC PDA
Paradigme structuré orienté-donnée
orienté-objets
orienté-services
orienté-agents
1940 2010
Diagramme Flux decontrôle
Flux dedonnées ER OO ADL
Architecture Monolitique parLots
Client-Serveur N-tiers Cloud
computingPublisher-Subscriber
enCouches
Language assembleur FORTRANCOBOL SQL C++ JavaPerl Ruby
on Rail
Le niveau d’abstraction augmente dans le temps
Architecture Informatique
L'architecture informatique définit lastructuration d'un système informatique(i.e. matériel et logiciel) en termes decomposants et d'organisation de ses
fonctions.
3L’architecture Logicielle en pratique
© 2009 Repenser les TI
Source: Wikipedia
Architecture Logicielle
L’architecture logicielle décrit dʼunemanière symbolique et schématiqueles différents composants dʼun ou deplusieurs programmes informatiques,
leurs interrelations et leurs interactions.
4L’architecture Logicielle en pratique
© 2009 Repenser les TI
Source: Wikipedia
Place de l’Architecture(Traditionnelle)
5L’architecture Logicielle en pratique
© 2009 Repenser les TI
Ingénierie
Problème Solution
ArchitectureConceptuel
Physique ConstructionGestion de Projet
Place de l’ArchitectureLogicielle
6L’architecture Logicielle en pratique
© 2009 Repenser les TI
Analyse Design Programmation
Problème Solution
ArchitectureConceptuel
Niveaux d’ArchitectureLogicielle
1. Un programme
2. Une famille de programmes
3. Un système corporatif
4. Un système inter-entreprises
7L’architecture Logicielle en pratique
© 2009 Repenser les TI
10 Mythes surl’Architecture Logicielle
Lʼarchitecture et le design, cʼest la même chose Lʼarchitecture et lʼinfrastructure, cʼest la même chose <ma technologie fétiche> est lʼarchitecture Une bonne architecture est lʼoeuvre dʼun seul architecte Lʼarchitecture est plate, une schéma est suffisant Lʼarchitecture de système précède lʼarchitecture logicielle Lʼarchitecture ne peut-être mesurée ou validée Lʼarchitecture est une science Lʼarchitecture est un art
8L’architecture Logicielle en pratique
© 2009 Repenser les TI
Source: Philippe Kruchten, Ten Common Misconceptions about Software Architecture
Rôle d’un Architecte Logiciel
Le rôle de lʼarchitecte logiciel est de définirune architecture logicielle.
9L’architecture Logicielle en pratique
© 2009 Repenser les TI
Rôle d’un Architecte Logiciel
Le rôle de lʼarchitecte logiciel est de définirune architecture logicielle qui satisfasse les
exigences du client.
10L’architecture Logicielle en pratique
© 2009 Repenser les TI
symbolique
Modèle desContraintes de Design
11L’architecture Logicielle en pratique
© 2009 Repenser les TI
Source: Bryan Lawson, How Designers Think
radicale
formellepratiquelégislateur
utilisateur
client
designer
interne externe
Générateurs
Domaines
Fonctions
Critères de Qualité Logicielle
Interopérabilité Portabilité Compatibilité Validité Vérifiabilité Intégrité Fiabilité Maintenabilité
12L’architecture Logicielle en pratique
© 2009 Repenser les TI
Réutilisabilité Extensibilité Efficacité Autonomie Transparence Composabilité Simplicité
Rôle d’un Architecte Logiciel
Le rôle de lʼarchitecte logiciel est de définirune architecture logicielle qui satisfasse les
contraintes imposées sur le système.
13L’architecture Logicielle en pratique
© 2009 Repenser les TI
Modélisation d’uneArchitecture Logicielle
14L’architecture Logicielle en pratique
© 2009 Repenser les TI
Source: Philippe Kruchten, 4+1 Views
Vue logique
Fonctionalité
Vue de réalisation
Gestion de configuration
Vue des processus
PerformanceExtensibilitéDébit
Vue de déploiement
Topologie du SystèmeCommunication
Approvisionnement
Conceptuelle Physique
Vue des cas d’utilisation
Rôle d’un Architecte Logiciel
Le rôle de lʼarchitecte logiciel est:1) de définir une architecture logicielle qui
satisfasse les contraintes du système2) de la communiquer.
15L’architecture Logicielle en pratique
© 2009 Repenser les TI
Rôle d’un Architecte Logiciel
Le rôle de lʼarchitecte logiciel est:1) de définir une architecture logicielle qui
satisfasse les contraintes du système2) de la communiquer et la promouvoir.
16L’architecture Logicielle en pratique
© 2009 Repenser les TI
Essence et Accidents deL’Ingénierie Logicielle
17L’architecture Logicielle en pratique
© 2009 Repenser les TI
Source: Frederick P. Brooks Jr, No Silver Bullet
Complexité EssentielleInhérente au problème (complexité, conformité,
changeable, invisibilité)
Complexité AccidentelleAssociée au développement de la solution
Dimensions de laComplexité Logicielle
18L’architecture Logicielle en pratique
© 2009 Repenser les TI
Source: Grady Booch, Handbook of Software Architecture
embarqué, temps-réel,distribué, critique
sur-mesure, innovateur,haute performance
application PC,site HTML,interactif, standard
grande échelle,contractuel,plusieurs intervenants“projets”
petite échelle,informel,
un intervenant“produits”
Technique
Gestion
centralenucléaire
chiffrier
compilateur
systèmecorporatif
Rôle d’un Architecte Logiciel
Le rôle de lʼarchitecte logiciel est:1) de définir une architecture logicielle qui
satisfasse les contraintes du système2) de la communiquer et la promouvoir3) de défendre son intégrité conceptuelle
19L’architecture Logicielle en pratique
© 2009 Repenser les TI
Rôle d’un Architecte Logiciel
Le rôle de lʼarchitecte logiciel est:1) de définir une architecture logicielle qui
satisfasse les contraintes du système2) de la communiquer et la promouvoir3) de défendre son intégrité conceptuelle4) de la critiquer
20L’architecture Logicielle en pratique
© 2009 Repenser les TI
Rôle d’un Architecte Logiciel
Le rôle de lʼarchitecte logiciel est:1) de définir une architecture logicielle qui
satisfasse les contraintes du système2) de la communiquer et la promouvoir3) de défendre son intégrité conceptuelle4) de la critiquer5) de la raffiner
21L’architecture Logicielle en pratique
© 2009 Repenser les TI
Rôle d’un Architecte Logiciel
22L’architecture Logicielle en pratique
© 2009 Repenser les TI
Photo: www.sparkle4all.nl
Contraintes
Changement
Complexité
Vision
Politique
Profile d’un Architecte Logiciel
1. Crédibilité2. Pensée intégrative3. Créativité4. Empatie5. Autodidacte6. Leader/Mentor7. Communicateur(Négociateur)8. Excellent analyste9. Designer hors pair10. Bon programmeur
23L’architecture Logicielle en pratique
© 2009 Repenser les TI
La Pensée Intégrative
24L’architecture Logicielle en pratique
© 2009 Repenser les TI
Source: Roger Martin, The Opposable Mind
Vision
Outils Expérience
Saillance
Identifie les contraintes importantes
Causalité
Chercher des motifs etinterrelations
Architecture
Visualiser le tout entravaillant sur des parties
Résolution
Chercher des solutionscréatrices qui résolventles tensions
Principes Fondamentaux
Simplicité (KISS)
Abstractions nettes
Division claire des rôles
Distribution équilibrée des responsabilités
Élégance/Esthétisme
25L’architecture Logicielle en pratique
© 2009 Repenser les TI
Stylesd’Architecture Logicielle
Flux de Données• Par lots• Tuyaux et Filtres
Appels et Retour• Fonction principale• Orientée-Objets
Interactif• Orientée Événements• Model-View-Controller
26L’architecture Logicielle en pratique
© 2009 Repenser les TI
Source: Shaw & Garlan, Software Architecture : Perspectives on an Emerging Discipline
Centré sur les Données• Base de données• Blackboard• Publisher-Subscriber
Partage de Données Hiérarchique
• En couches• En tiers• Interpréteur
Orientée Agents
Le Style le plus Répandu
27L’architecture Logicielle en pratique
© 2009 Repenser les TI
Source: Brian Foote & Joseph Yoder, Big Ball of Mud
7 Périls d’unArchitecte Logiciel
1. Un projet où la direction de lʼorganisation ne croie pasà lʼarchitecture logicielle
2. Un projet dont les usagers ne veulent pas3. Embarquer sur un projet sans avoir de crédibilité
auprès d’une équipe rebelle4. Un projet avec un niveau d’incertitude élevé soumis à
un développement en cascade5. Un projet dont des choix technologiques clés imposés
sont inappropriés6. Un projet où les analystes d’affaires produisent le
schéma de BD7. Prendre la relève d’un projet en détresse
28L’architecture Logicielle en pratique
© 2009 Repenser les TI
L’Avenir d’une Discipline
LʼArchitecture fera partie du curriculum Standardisation dʼun ADL Architecture Orientée-Agents Langages de programmation de plus haut
niveau supportant les concepts architecturaux Certification professionnelle basée sur les
niveaux de criticalité logicielle [DO-178B: A-E]
29L’architecture Logicielle en pratique
© 2009 Repenser les TI
Questions?
Merci beaucoup!
30L’architecture Logicielle en pratique
© 2009 Repenser les TI