Architecture logicielle
Transcription
Architecture logicielle
!"#$%&'()*+$,-.#.+#!$*/. 0 '1+$'%#23!4#5678 M1 informatique, option IHM, UNSA Architecture logicielle Philippe Renevier [email protected] Avec l’aide de Laurence Nigay (http://iihm.imag.fr/nigay/) " !"#$%&'()*+$,-.#.+#!$*/. 0 '1+$'%#23!4#5678 Architecture, Introduction • Constat – Conception d’IHM : difficile, donc nécessairement itérative – Itérativité implique modifiabilité du logiciel • Savoir-faire artisanal : acceptable pour maquettes, systèmes prospectifs • Complexité et taille croissantes des IHM • Outils de développement des IHM : utiles mais imparfaits – boîtes à outils : niveau d’abstraction trop bas, absence de structuration – squelettes d’applications : reverse enginering nécessaire pour réutiliser – générateurs d’IHM : le syndrôme de l’ABS (faux sentiment de sécurité) • Conséquence : besoin de cadre de pensée, c.-à-d. de modèles d’architecture "9 !"#$%&'()*+$,-.#.+#!$*/. 0 '1+$'%#23!4#5678 Architecture, Plan • Architecture logicielle (aspects génériques) – définition – processus et style d’architecture • Modèles fonctionnels : Seeheim, Arch • Modèles à agents : MVC, ALV, PAC • Modèle hybride : PAC-Amodeus ": !"#$%&'()*+$,-.#.+#!$*/. 0 '1+$'%#23!4#5678 ;< 1. Architecture : aspects génériques • Définition : ensemble organisé d’unités de calcul (composants et connecteurs) + description des interactions entre ces unités Composant • • • • Connecteur Composant Une architecture exprime ce qui est important L’importance dépend du contexte et du but Contexte (taille, durée de vie, domaine applicatif, culture en qualité logicielle, ...) But – communication (précision et non ambiguïté de la description) – reverse-engineering d’un système existant – évaluation (selon des critères qualité) !"#$%&'()*+$,-.#.+#!$*/. 0 '1+$'%#23!4#5678 ;" Architecture : aspects génériques ... • Localisation dans le processus de développement utilisateur Spec. externes – spécifications externes (IHM) – spécifications internes détaillées • Tension et compromis entre contraintes – centrées sur l’utilisateur – centrées sur la technologie Compromis Architecture globale Spec. internes détaillées Technologie !"#$%&'()*+$,-.#.+#!$*/. 0 '1+$'%#23!4#5678 Architecture : aspects génériques ... • Processus • Processus de conception d’une architecture : à la fois ascendant et descendant • mais des étapes parfaitement identifiées ;; !"#$%&'()*+$,-.#.+#!$*/. 0 '1+$'%#23!4#5678 ;= Architecture : aspects génériques ... • 1. Décomposition fonctionnelle F1 F2 F3 • 2. Décomposition structurelle selon un style C1 C2 • 3. Allocation des fonctions aux composants C1 F1 C2 F2 F3 !"#$%&'()*+$,-.#.+#!$*/. 0 '1+$'%#23!4#5678 ;> Architecture : aspects génériques ... • 4. Allocation des composants aux processus P1 C1 F1 C2 F2 F3 • 5. Allocation des processus aux processeurs !"#$%&'()*+$,-.#.+#!$*/. 0 '1+$'%#23!4#5678 Architecture : aspects génériques ... • Style d’architecture • Exemples – Pipes and filters (pipe-line) – Machines abstraites en couches – Organisations orientés objet • Un style définit – – – – un vocabulaire d’éléments des contraintes de configuration de ces éléments une sémantique pour interpréter une configuration permet l’analyse de propriétés • Emergence de patterns ou solutions canoniques ;? !"#$%&'()*+$,-.#.+#!$*/. 0 '1+$'%#23!4#5678 ;@ Architecture : Modèles fonctionnels • Fondement Noyau fonctionnel IHM • Seeheim : modèle séminal Contrôle du dialogue API Interface avec le noyau fonctionnel Noyau fonctionnel Présentation !"#$%&'()*+$,-.#.+#!$*/. 0 '1+$'%#23!4#5678 ;A 2. Architecture : Modèles fonctionnels • Arch : Seeheim révisé Contrôle du dialogue Interface avec le noyau fonctionnel Noyau fonctionnel Présentation Physique Logique Interaction !"#$%&'()*+$,-.#.+#!$*/. 0 '1+$'%#23!4#5678 ;9 Architecture : Modèles fonctionnels • Arch • Modifiabilité – réparation sémantique – protocole haut niveau • Portabilité IHM Contrôle du dialogue Interface avec le noyau fonctionnel Présentation Noyau fonctionnel – boîte à outils abstraite • Extensibilité niveau interaction – Objets d’interaction dédiés Interaction Contrôleur de dialogue couche extension de toolkit Adaptateur de toolkit Toolkit !"#$%&'()*+$,-.#.+#!$*/. 0 '1+$'%#23!4#5678 Architecture : Modèles à agents • Un système interactif = une collection d’unités de calcul spécialisés (agents) • Un agent – a un état – a une expertise – est capable d’émettre et de réagir à des événements • Un agent en contact direct avec l’utilisateur = un interacteur • Quelquefois agent = interacteur =< !"#$%&'()*+$,-.#.+#!$*/. 0 '1+$'%#23!4#5678 Architecture : Modèles à agents ... • Motivations • Modularité et parallélisme – conception itérative (modifiabilité) – dialogue à plusieurs fils – mise en œuvre des collecticiels • Correspondance avec l’approche à objets – catégorie d’agents (réactifs) -> classe – événement -> méthode – encapsulation : l’agent (l’objet) est seul à modifier directement son état – mécanisme de sous-classe -> modifiabilité =" !"#$%&'()*+$,-.#.+#!$*/. 0 '1+$'%#23!4#5678 =; Architecture : Modèles à agents ... • MVC (Smalltalk) • Model : la compétence abstraite de l’agent (son NF) • View : le rendu perceptible de l’agent (son comportement en sortie) • Controller : son comportement en entrée V M V V M M C V M M M C C C C C V V Aspects réalisation • Un agent : 3 objets Smalltalk (1 par facette) • Hiérarchie de Models, de Views, de Controllers !"#$%&'()*+$,-.#.+#!$*/. 0 '1+$'%#23!4#5678 == Architecture : Modèles à agents ... • • • • ALV [Hill] Abstraction : le M de MVC View : le V+C de MVC Link : expression des dépendances entre A et V L V1 L V2 A Aspects réalisation • Link = langage dédié à contraintes (Rendez-vous) • A et V hiérarchie d’objets • A unique et partagée = le NF du système interactif !"#$%&'()*+$,-.#.+#!$*/. 0 '1+$'%#23!4#5678 Architecture, Préambule : MVC • Smalltalk [Goldberg et Robson 1983] • Cause : difficultés de conception des applications fortement interactives • Réponse : modularisation – Model : modélisation (données et comportement) – View : représentation manipulable de l'objet – Control : interprétation des entrées 9 !"#$%&'()*+$,-.#.+#!$*/. 0 '1+$'%#23!4#5678 MVC : meilleure conception • Séparer dans le code – les données (le Modèle), – La ou les Vues, – Le Contrôle, • Exemple : – Excel, – widgets Swing, – bonnes applications web (.Net avec les datasets et les pages aspx, JSP/Servlets/EJBs etc…) – Jeux avec plusieurs vues caméra, – Etc… 9 !"#$%&'()*+$,-.#.+#!$*/. 0 '1+$'%#23!4#5678 MVC : meilleure conception • Plusieurs vues possibles synchronisées, • Plusieurs contrôles possibles (exemple : clavier, souris, joypad), • Données isolées (BD, fichiers, etc…) • Bien entendu : – Nécessité de définir des interfaces communes entre le modèle, la vue et le contrôleur, – Java fournit en standard un certain nombre d’outils… 9 !"#$%&'()*+$,-.#.+#!$*/. 0 '1+$'%#23!4#5678 9 Les classes Observer / Observable Observer "Arthur" Observer "Fred" Observable Observable Observable 1. Arthur 7 :.%(./$;+(. 1. Arthur 2. Martin 7 :.%(./$;+(. Observer "Martin" !"#$%&'()*+$,-.#.+#!$*/. 0 '1+$'%#23!4#5678 Observer / Observable Exemple : un timer class Test { Timer timer; Test() { timer = new Timer(); Toto toto = new Toto(); timer.addObserver(toto); } public static void main(String[] args) Test t = new Test(); t.timer.run(); } } +'+'#.:+# ;<'-+.-(# =-#+$).( { 9 !"#$%&'()*+$,-.#.+#!$*/. 0 '1+$'%#23!4#5678 java.util.Observer Toto est un observateur class Toto implements java.util.Observer { public void update(Observable o, Object arg) { System.out.println("Temps : " + ((Timer)o).getSeconds() + " secs"); } } :'-;#<.;#'=;.(>*+.-(;#?'$>.%+# 1';;@?.(#-%.#)@+A'?.#-1?*+.BCD 9 !"#$%&'()*+$,-.#.+#!$*/. 0 '1+$'%#23!4#5678 java.util.Observable Exemple class Timer extends java.util.Observable { private long zzz = 1000; :.;#'<;.(=*<>.;#?'$=.%+# private long zero; @+(.#?A-%.#;'-;0B>*;;.#?.# Timer(long zzz) { C<;.(=*<>. this.zzz = zzz; } public void run () throws InterruptedException { zero = System.currentTimeMillis(); C%#1(D=$.%+#>.;#'<;.(=*+.-(;4#E*# while (true) { *11.>>.#-1?*+.FGH setChanged(); notifyObservers(new Long(System.currentTimeMillis() - zero)); Thread.sleep(zzz); } } } 9 !"#$%&'()*+$,-.#.+#!$*/. 0 '1+$'%#23!4#5678 PAC : Un modèle hiérarchisé d’agent • [Coutaz 88] • Trois facettes : – Présentation (C + V de MVC), le V de ALV – Abstraction (M de MVC) – Contrôle : communication entre agent et expression des dépendances (liaison) entre A et P (le L de ALV) • Hiérarchisation : – Arbre : relation père-fils – Heuristique de conception – Communication par message =? !"#$%&'()*+$,-.#.+#!$*/. 0 '1+$'%#23!4#5678 =@ Architecture : Modèles à agents • PAC Aspects réalisation • Aucune recommandation • dépend de la plate-forme d’accueil • 1 agent = 1 module C, 1 objet, 1 objet par facette (comme MVC ou ALV) !"#$%&'()*+$,-.#.+#!$*/. 0 '1+$'%#23!4#5678 >< Modèle hybride : Modèle PAC-Amodeus !"#$%&'()%*+(*,-.'"/)(* !, !"#$%&' 3/,3$4%0$5& 3$B(*(CD$.#EF*/.%+G#H8I 0+.1$.$()%*+)* 2"3.)*4"#5$-"##('* * 024 !"#$%&'(0'(/1-.,$ 2"3.)*4"#5$-"##('* * 24 !"#$%&'($' )*+&$,%-%./, !"61"7.#$* 8(59#-:)(7*+(*;%<7(#$.$-"#* * !8; !"#$%&'(2.,%$*-3%./, !"61"7.#$* =#$(%.5$-"#*+(*>.7*2-?(.)** * !=>2 !"#$%&'()*+$,-.#.+#!$*/. 0 '1+$'%#23!4#5678 Règles Heuristiques • Ensemble de règles heuristiques pour construire la hiérachie d'agents PAC du Contrôleur de Dialogue dans PAC-Amodeus à partir d’une maquette • Source Modèle d’architecture des systèmes interactifs, chapitre 7. >" !"#$%&'()*+$,-.#.+#!$*/. 0 '1+$'%#23!4#5678 >; R2 : Vue multiple • Agent vue multiple d'une "œuvre" Wall Environnement Chaleur Environment Zone Region Preferences Wall Place Route . Movable Object x Static Object Point Region Preferences Environment Zone Wall Place Route . Movable Object x Static Object Point Anchor x (m): Anchor y (m): Mouse x (m): 12 Mouse y (m): 15 Length (m): Anchor x (m): Anchor y (m): Mouse x (m): 12 Mouse y (m): 15 Length (m): ? ? !"#$%&'()*+$,-.#.+#!$*/. 0 '1+$'%#23!4#5678 >= R2 : Vue multiple • Agent vue multiple d'une "œuvre" • Un superagent garantit la cohérence visuelle superagent vue multiple agent vue agent vue agent vue !"#$%&'()*+$,-.#.+#!$*/. 0 '1+$'%#23!4#5678 >> PAC et MVC : vue multiple A C P C V1 C P C V2 M !"#$%&'()*+$,-.#.+#!$*/. 0 '1+$'%#23!4#5678 D’autres Heuristiques • R1 : fenêtre = un agent • R3 : Palette de concepts – Une palette de classes de concept = un agent – Une barre de menu = un agent • R4 : zone d’édition – Une zone d’édition = un agent – Condition : être suffisamment complexe • R5 : correspondance agent / concept – Un concept complexe = un agent >? !"#$%&'()*+$,-.#.+#!$*/. 0 '1+$'%#23!4#5678 Heuristiques de liaison • R6 : d’une fenêtre à une autre – Les deux sont sous le même agent parent commun • R9 : Ciment syntaxique – Agent ciment pour "analyse syntaxique distribuée” >@ !"#$%&'()*+$,-.#.+#!$*/. 0 '1+$'%#23!4#5678 >A R9 : Ciment syntaxique • Agent ciment pour "analyse syntaxique distribuée" • Un superagent cimente les actions distribuées superagent ciment agent agent agent action de l'utilisateur action de l'utilisateur action de l'utilisateur !"#$%&'()*+$,-.#.+#!$*/. 0 '1+$'%#23!4#5678 Heuristiques de simplification • R10 : un agent fils unique peut être regroupé avec son père – Attention à la modularité / réutilisation / évolution • R11 : un agent dont la fonction est réalisée par un objet de la boîte à outils graphique devient un composant de la présentation de son père. >9 !"#$%&'()*+$,-.#.+#!$*/. 0 '1+$'%#23!4#5678 >: Corollaire de R11 • Un objet d’interaction non implémenté par la plate-forme -> un agent Un espace de travail -> un agent Un objet mur -> un agent !"#$%&'()*+$,-.#.+#!$*/. 0 '1+$'%#23!4#5678 ?< Délégation sémantique • Usage de la délégation sémantique pour performance. – Dans l'exemple du robot mobile, le A de l'agent mur contient la modélisation – de mur dans les termes du domaine (mètres, non pas pixels). Environment Zone Region Preferences ? Wall . x • Evite les appels au NF pendant le tracé du mur. – Système de cache Place Route Movable Object Static Object Point Anchor x (m): 12 Anchor y (m): 10 Mouse x (m): 13 Mouse y (m): 2 Length (m): 8.1 Updated Values as the mouse moves Rubber Banding as the wall is resized