1 / 32

Modèles d’architecture

Modèles d’architecture. Cedric.Dumas@emn.fr contrat Creative Commons Paternité-Pas d'Utilisation Commerciale-Partage des Conditions Initiales à l'Identique 2.0 France License. modèles du génie logiciel. Cycle de développements Modèle en V Modèle en cascade Modèle en Spirale Modèle en Y

lou
Download Presentation

Modèles d’architecture

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Modèles d’architecture Cedric.Dumas@emn.frcontrat Creative Commons Paternité-Pas d'Utilisation Commerciale-Partage des Conditions Initiales à l'Identique 2.0 France License

  2. modèles du génie logiciel Cycle de développements Modèle en V Modèle en cascade Modèle en Spirale Modèle en Y Etc... Étude des Besoins Cahier des Charges Analyse de l’Activité Scenarii de travail Maquettage Scenarii d’utilisation Prototypage Diagrammes (UML) Architecture Logicielle Programmation Tests Évaluation

  3. Architecture Conceptuelle Sert à la (retro)conception

  4. Architecture Logicielle 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 » Autrement dit : Une architecture : ensemble organisé de composants + des relations + des principes directeurs Une architecture est le résutat d’un processus L’environnement : participants (culture en qualité logicielle, outils, requis commercial… Finalité d’une architecture communication (précision et non ambiguïté de la description) rétro-conception d’un système existant évaluation (selon des critères qualité) Dictinction entre architecture et description d’architecture Maier (2001) « architecture is a concept of a system » Une architecture est un concept d’un système : elle existe bien que non observable Une description d’architecture : représentation de ce concept pour une finalité donnée. C’est une entité concrète.

  5. Architecture Logicielle 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 » Autrement dit : Plusieurs points de vue sur une architecture (cf.Architecture en bâtiment)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 Propriétés observables de l’extérieur : un composant est une unité d’abstraction, une unité de déploiement un service, un module, un bibliothèque, un processus, un procédure, un objet, un agent, etc., sont des composants Relations -> connexion -> connecteurs (appel procédural, RMI, socket, etc.) Connecteur Composant Composant

  6. Architecture Conceptuelle Sert à la (retro)conception

  7. Méthodologie de conception des interfaces “Design Pattern“, Motifs de conception Abstraction des squelettes d’applications Découpage de l’application en composants autonomes Schémas de programmation Modèle d’Architecture Logicielle But : améliorer la qualité du logiciel en robustesse, modularité, réutilisabilité Démarche : Identification de Patrons à partir des spécifications Développement orienté objet avec communication par messages

  8. Décomposition modulaire Noyau (Fonctionnel) Modèle (Applicatif) Fonctions Objets Métier Services

  9. Notre TP

  10. Notre TP Interface JFrame JMenu JList JLabel JSlider JPanel (s) Modèle ImageLibrary ImageItem

  11. Pourquoi une architecture spécifique? Interfaces graphiques WIMP Standardisation de l ’aspect (look) et du comportement (feel) Nouvelle philosophie de programmation Contrôle utilisateur Séparation Interface et Noyau fonctionnel Architectures de type Arch

  12. Architecture Conceptuelle Sert à la (retro)conception Séparation entre la sémantique et son utilisation portabilité (device independant) réutilisabilité plusieurs interfaces (flexibilité, plateformes, etc) Personnalisation (designer, utilisateur) Communication entre l’application et la présentation : contrôleur de dialogue 3 composants maintenant...

  13. le modèle de Seeheim 1985 bypass vue de la sémantiquequi est fournie pour l’interface régule les communications entre l’application et l’interface apparence del’interface et E/Sutilisateur optimisation du feedback(retours visuels, dessins à main levée, etc) (niveau sémantique) (niveau syntaxique) (niveau lexical) ApplicationInterface Model DialogControl Presentation Component User User Application • Modélise les interfaces jusque 1985 • Pas de séparation en composant logiques et implémentation

  14. modèle Arch - Slinky 1992 Plus de couches Plus conceptuel Bien adapté pour la structure fonctionnelle régulation des tâchesséquencement de l’interactionliés au modèle de tâches modèle utilisateur versus modèle systèmeréorganisation des donnéesSemantic enhancement adaptation aux toolkits de la plateforme viséeAwt, Xvt, Swing, Views transfert de structure de donnéesexplicites modifiableportable(versus efficacité) presentationwidgetslook and feel applicationnoyau fonctionnel Contrôleur de Dialogue Possibly adapted Domain Objects Logical Presentation Objects • Adaptateur • Functionnal Core Adapter(Virtual Application Layer) • Présentation • Logical Presentation Component(Virtual Toolkit) Domain Objects Physical Interaction Objects • Interaction • Interaction Toolkit Component • Physical Presentation Component • Domaine • Application Functionnal Core • Domain-specific component

  15. Exemple Gestion de Comptes… • Contrôleur de Dialogue • Gestion des évènements • Séquencement des actions Portion de relevé Table de données Adaptateur Présentation Relevés de comptes DefaultTableModel • Interaction • JTable • look & feel • Noyau Fonctionnel • Application Bancaire • Gestion de comptes

  16. Exemple Calculatrice… • Contrôleur de Dialogue • Gestion des évènements • Appel des opérations chiffre Chiffres • Interaction • JButtons • Noyau Fonctionnel • Application Bancaire • Gestion de comptes

  17. Notre TP

  18. Notre TP • Contrôleur de Dialogue • Gestion des évènements • Listeners Swing • PrésentationImageIcon • JFrame + JPanel • Layout managers • Adaptateur • ImageIcon + String • CurrentIndex • Interaction • JSlider + JList + JMenu + JPanel • look & feel • Noyau Fonctionnel • ImageLibrary • ImageItem

  19. Agent Based Models Modèles basés sur des agents Système interactif = ensemble d’unités computationnelles (agents) Agent capacité à réagir et à gérer des événements caractérisé par un état possède une capacité d’expertise (rôle) relation utilisateur  interacteur / objet d’interactif Système interactif = agents réactifs (<> agents cognitifs) MVC, PAC, Clock, C2, etc... Modèle même principe que les précédents, avec une granularité plus fine (par collections)

  20. modèle MVC 1987 (Smalltalk) représentation graphique ouput devices input devices user application semanticsnoyau fonctionnel gestion de l’interaction en entrée View Model Controller

  21. Implémentation Classique

  22. MVC en Java Modèle de façon générale : Observer/Observable dans java.util MVC dans Swing : JComponent = model + delegate delegate = V + C

  23. PAC 1987 (Joëlle Coutaz) Presentation combine Input/Output (MVC) Control pilote le dialogue et la cohérence entre le modèle et sa représentation (MVC) Communication entre agents (MVC) Pas lié à un environnement de programmation (MVC), approche objet tout de même Plus conceptuel encore (moins dépendant de l’implémentation) que MVC Presentation Abstraction Control

  24. MVC en Java ? Extrait du tutoriel MVC Swing (Sun) JTextField (textField) JTextArea (textList) +JScrollPane textField.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { // Append the textField's text to textListtextList.append(textField.getText()); textList.append("\n"); textField.setText(""); // Reset the textField } }); // ENTER key causes an ActionEvent

  25. MVC en Swing JTextField (textField) JTextArea (textList) JTextArea(avgField) solutions ? listenertextFieldversavgField listenertextListversavgField listenercontenant la mise à jour des deux éléments textListetavgField MVC dans tout ça ? où est le modèle ?

  26. MVC Class Model { int [ ] liste; void addElement(int) int getElement(int ); int getAverage(); }

  27. Observer Design Pattern One to many

  28. découpage JTextArea Modèle JTextField JTextArea

  29. découpage Observer Update() Observable Attach(Observer)Notify() JTextArea JTextField Modèle setValeur(int)getValeur() valeur JTextArea

  30. Modele d’entiers import java.util.Observable; public class Exo1Model extends Observable { public int [ ] liste; public Exo1Model() { … } public void setValeur(int x) { […] // notification des modifications dans la classe Observer setChanged(); notifyObservers(); } } Observable Attach(Observer)Notify() Modèle setValeur(int)getValeur() valeur

  31. Une vue JTextArea public class Exo1Vue extends JTextArea implements Observer { public Exo1Vue(String text) { super(text); } public void setVue(int avg){ setText(String.valueOf(avg)); } public void update(Observable obs,Object obj) { Exo1Model mod = (Exo1Model) obs; // prendre la bonne habitude de tester la compatibilité des types if (obs instanceof Exo1Model) setVue(mod.getAverage()); } } Observer Update() JTextArea

  32. Le principal class Exo1Fenetre extends JFrame { Exo1Model model; public Exo1Fenetre(){ model = new Exo1Model(); […] // ajout des connections entre le modèle et les vues pour que ces dernières soient mises à jour model.addObserver(jtextareaavgr); model.addObserver(jtextarealist); } } Observable Attach(Observer)Notify() Observer Update()

More Related