Modèles d’architecture

Slides:



Advertisements
Présentations similaires
Applications N-Tiers Rappels: architecture et méthodologie
Advertisements

Les Systèmes d’Information Financière Atelier conjoint ACBF / Banque Mondiale / AFRITAC de l’Ouest Gérer l’application dans le temps, sur les plans fonctionnel,
Conception d’IHM en Java
Eléments de Génie Logiciel
SOA et Services Web Dr. Rim Samia Kaabi 26 mars 2017.
Processus d'expression du besoin
La Gestion de la Configuration
Première expérience d’utilisation des Web Services dans SmartTools Didier Parigot Projet OASIS INRIA Sophia www-sop.inria.fr/oasis/SmartTools Journée.
Gestion des événements (suite)
1 Spécificités de linformatique ambiante De nombreux services Des services métiers (apparition et disparition de fonctionnalités) Des services pour gérer.
Patrons Observateur/MVC programmation évènementielle
Android View, onClick, Activity, Modèle Vue Contrôleur
LOG4430 : Architecture logicielle et conception avancée
Projet n°4 : Objecteering
J. Paul Gibson Bureau A 207, Le département LOgiciels-Réseaux
Le processus unifié UML est un langage de modélisation et n ’impose pas de démarche de développement Le processus unifié : méthodologie de développement.
UML - Présentation.
Les diagrammes d’interactions
Les méthodes formelles en ingénierie des connaissances Damien Lhomme-Desages Jérémie Barlet.
TP2 ... MVC ? JList JLabel JSlider ImageLibrary Contrôleur Vue Modèle
Architecture Logicielle pour les IHM
Interaction Directe contrat Creative Commons Paternité-Pas d'Utilisation Commerciale- Partage des Conditions Initiales à l'Identique.
contrat Creative Commons Paternité-Pas d'Utilisation Commerciale- Partage des Conditions Initiales à l'Identique.
Introduction aux IHM et à la réflexivité Java Vos premiers pas en Swing.
POO / IHM Architecture Logicielle
Gestion de la persistance des objets
Phase de préparation des itérations Produit Story 11 Release1 Story 1mStory 21 Release2 Story 2m… …
Page de garde Introduction aux Design Patterns ISIA, Mars 2003
JavaBeans Réalise par: EL KHADRAOUY TARIK AOUTIL SAFOWAN.
le profil UML en temps réel MARTE
1 1 Université Evry Val d'Essonne Y. Laborde Une calculatrice (sans MVC) fonctionnant sur la base d'un modèle en Java.
Réalisée par :Samira RAHALI
Java : Modèle / Vues / Contrôleurs
Chaque use-case génère un ou des scénarios, traduits par des diagrammes objets, qui permettent d’introduire et/ou de compléter les diagrammes des catégories.
Historique de SystemC Regroupe 4 courants didées: SCENIC Project : Synopsys+UC Irvine Philips System-Level Data Types, VSIA SLD DWG IMEC, Hardware-Software.
Développement d’un réseau social professionnel
Modélisation orientée objet UML
Phylogenetik Conception, développement et tests d’un logiciel en java
Etude globale de système.
Projet de diplôme 2011 Miserez David
© Petko ValtchevUniversité de Montréal Janvier IFT 2251 Génie Logiciel Notions de Base Hiver 2002 Petko Valtchev.
Les étapes du cycle de développement du génie logiciel
Android View, onClick, Activity, Modèle Vue Contrôleur
TYPES DE COMPOSANTES SWING Cours 420-B43. On peut distinguer 3 Niveaux 3 niveaux Haut niveau : toute application graphique doit comprendre au moins une.
Portée, arrimages et intervenants Évolution des méthodes
Démarche de développement
Processus d'un projet F.Pfister
Sensibilisation a la modelisation
Patrons de conceptions de créations
Proposition pour un modèle à grains extrêmement fins David Fauthoux directeur : Jean-Paul Bahsoun IRIT.
Le contenu est basé aux transparents du 7 ème édition de «Software Engineering» de Ian Sommerville«Software Engineering» de Ian Sommerville B.Shishedjiev.
Interfaces graphiques. Composants d'interface utilisateur graphique (GUI) 1 Bibliothèques Awt et Swing Procédures communes pour l'utilisation de ces clases.
« Validation Formelle de Systèmes Interactifs »
Introduction au Génie Logiciel
François CARCENAC,Frédéric BONIOL ONERA-DTIM Zoubir MAMMERI IRIT
Behavioral Design Patterns The Observer Pattern. Intention Définir une dépendance de “1” à “n” entre des objets de telle sorte que lorsque l’état d’un.
La programmation par objets Principes et concepts Etude de Smalltalk.
L’enseignement de spécialité SLAM
Iup MIAGe 3° année Projet MIAGe Toulouse – Groupe 21 Charte graphique.
Interfaces Graphiques
 1) Il faut connaître le modèle et son fonctionnement  2) Définir le contrôle que l’on veut faire ouvrir, fermer, afficher, etc.) sur le modèle  3)
Chapitre 2 Rappels objet et Présentation des diagrammes UML
IHM Modèle d’architecture et liens avec les outils de production d’interface IHM Dirrigé par : Catherine RECANATI Présenté par : Youssef OUDGHIRI YOUSFI.
Chapitre 2 Rappels objet et Présentation des diagrammes UML
1 JEE 2010 Architectures n-tiers F.Pfister
TP D’UML Groupe N° 3.
Présentation de la méthode Merise
Diagrammes de comportement Présentation. Diagramme de séquence  Permet de modéliser les envois de messages entre objets chronologiquement.  Modélisation.
Java Swing. Principes de base  Des composants graphiques (exemple: JFrame, JButton …)  Hiérarchie de classes  Des événements et les actions à effectuer.
UML : méthode Processus. Introduction(1) ● Cycles ● Spécification par cas d'utilisation ● Identifier les besoins ● Analyse par cas d'utilisation ● Affiner.
Transcription de la présentation:

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 Etc... Étude des Besoins Cahier des Charges Analyse de l’Activité Maquettage Scenarii de travail Scenarii d’utilisation Prototypage Diagrammes (UML) Programmation Architecture Logicielle Tests Évaluation

Architecture Conceptuelle Sert à la (retro)conception

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.

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

Architecture Conceptuelle Sert à la (retro)conception

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 7

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

Notre TP

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

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

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...

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

modèle Arch - Slinky 1992 Plus de couches Plus conceptuel Bien adapté pour la structure fonctionnelle régulation des tâches séquencement de l’interaction liés au modèle de tâches modèle utilisateur versus modèle système réorganisation des données Semantic enhancement adaptation aux toolkits de la plateforme visée Awt, Xvt, Swing, Views Contrôleur de Dialogue Possibly adapted Domain Objects Logical Presentation Objects transfert de structure de données explicites Adaptateur Functionnal Core Adapter (Virtual Application Layer) Présentation Logical Presentation Component (Virtual Toolkit) modifiable portable (versus efficacité) Domain Objects Physical Interaction Objects presentation widgets look and feel Interaction Interaction Toolkit Component Physical Presentation Component Domaine Application Functionnal Core Domain-specific component application noyau fonctionnel

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

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

Notre TP

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

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)

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

Implémentation Classique

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

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 Abstraction Presentation Control

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 textList textList.append(textField.getText()); textList.append("\n"); textField.setText(""); // Reset the textField } }); // ENTER key causes an ActionEvent

MVC en Swing JTextField (textField) JTextArea (textList) JTextArea (avgField) solutions ? listener textField vers avgField listener textList vers avgField listener contenant la mise à jour des deux éléments textList et avgField MVC dans tout ça ? où est le modèle ?

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

Observer Design Pattern One to many

découpage JTextArea JTextField Modèle JTextArea

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

Modele d’entiers Observable Modèle Attach(Observer) Notify() 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

Une vue JTextArea Observer JTextArea Update() 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()); JTextArea

Le principal Observable Observer class Exo1Fenetre extends JFrame { Attach(Observer) Notify() Le principal Observer Update() 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); }