Modèles d’architecture

32
Modèles d’architecture [email protected] contrat Creative Commons Paternité-Pas d'Utilisation Commerciale-Partage des Conditions Initiales à l'Identique 2.0 France License

description

Modèles d’architecture. [email protected] 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 - PowerPoint PPT Presentation

Transcript of Modèles d’architecture

Page 1: Modèles d’architecture

Modèles d’architecture

[email protected]

contrat Creative Commons Paternité-Pas d'Utilisation Commerciale-Partage des Conditions Initiales à l'Identique 2.0 France License

Page 2: Modèles d’architecture

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 desCharges

Analysede l’Activité

Maquettage

Scenarii de travail

Scenarii d’utilisation

PrototypageDiagrammes

(UML)

ProgrammationArchitecture

LogicielleTests

Évaluation

Page 3: Modèles d’architecture

Architecture Conceptuelle

Sert à la (retro)conception

Page 4: Modèles d’architecture

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’architectureMaier (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.

Page 5: Modèles d’architecture

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

Composant ComposantConnecteur

Page 6: Modèles d’architecture

Architecture Conceptuelle

Sert à la (retro)conception

Page 7: Modèles d’architecture

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

Page 8: Modèles d’architecture

Décomposition modulaire

Noyau (Fonctionnel) Modèle (Applicatif) Fonctions

Objets Métier Services

Page 9: Modèles d’architecture

Notre TP

Page 10: Modèles d’architecture

Notre TP

Interface JFrame JMenu JList JLabel JSlider JPanel (s)

Modèle ImageLibrary ImageItem

Page 11: Modèles d’architecture

Pourquoi une architecture spécifique?Interfaces graphiquesWIMPStandardisation 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

Page 12: Modèles d’architecture

Architecture Conceptuelle

Sert à la (retro)conceptionSé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...

Page 13: Modèles d’architecture

Modélise les interfaces jusque 1985Pas de séparation en composant

logiques et implémentation

le modèle de Seeheim 1985

PresentationComponent

DialogControl

ApplicationInterface Model

User

App

lica

tion

(niveau sémantique) (niveau syntaxique) (niveau lexical)

régule les communicationsentre l’application et l’interface

apparence del’interface et E/S

utilisateur

User

vue de la sémantiquequi est fournie pour

l’interface

optimisation du feedback(retours visuels, dessins à main levée, etc)

bypass

Page 14: Modèles d’architecture

transfert destructure de données

explicites

modèle Arch - Slinky 1992

Plus de couches Plus conceptuel Bien adapté pour la structure fonctionnelle

Domaine• Application Functionnal Core• Domain-specific component

Adaptateur• Functionnal Core Adapter(Virtual Application Layer)

Contrôleur de Dialogue

Présentation• Logical Presentation Component

(Virtual Toolkit)

Interaction• Interaction Toolkit Component

• Physical Presentation Component

Domain Objects

Logical Presentation ObjectsPossibly adapted Domain Objects

presentationwidgets

look and feelapplication

noyau fonctionnel

régulation des tâchesséquencement de l’interaction

liés au modèle de tâches

Physical Interaction Objects

modifiableportable

(versus efficacité)

modèle utilisateur versus modèle systèmeréorganisation des données

Semantic enhancement

adaptation aux toolkits de la plateforme viséeAwt, Xvt, Swing, Views

Page 15: Modèles d’architecture

Exemple Gestion de Comptes…

Noyau Fonctionnel• Application Bancaire• Gestion de comptes

Adaptateur

Contrôleur de Dialogue• Gestion des évènements• Séquencement des actions

Présentation

Interaction• JTable

• look & feel

Relevés de comptes

Table de donnéesPortion de relevé

DefaultTableModel

Page 16: Modèles d’architecture

Exemple Calculatrice…

Noyau Fonctionnel• Application Bancaire• Gestion de comptes

Contrôleur de Dialogue• Gestion des évènements• Appel des opérations

Interaction• JButtons

Chiffreschiffre

Page 17: Modèles d’architecture

Notre TP

Page 18: Modèles d’architecture

Notre TP

Noyau Fonctionnel ImageLibrary

ImageItem

Adaptateur•ImageIcon + String

•CurrentIndex

Contrôleur de Dialogue• Gestion des évènements• Listeners Swing

•PrésentationImageIcon

•JFrame + JPanel•Layout managers

Interaction• JSlider + JList + JMenu + JPanel

• look & feel

Page 19: Modèles d’architecture

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)

Page 20: Modèles d’architecture

modèle MVC 1987 (Smalltalk)

Model

View

Controller

ouput devices

input devices user

application semanticsnoyau fonctionnel

gestion de l’interaction en entrée

représentation graphique

Page 21: Modèles d’architecture

Implémentation Classique

Page 22: Modèles d’architecture

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

Page 23: Modèles d’architecture

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

Page 24: Modèles d’architecture

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

Page 25: Modèles d’architecture

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 ?

Page 26: Modèles d’architecture

MVC

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

Page 27: Modèles d’architecture

Observer Design Pattern

One to many

Page 28: Modèles d’architecture

découpage

JTextField Modèle

JTextArea

JTextArea

Page 29: Modèles d’architecture

découpage

Modèle

setValeur(int)getValeur()

valeur

JTextArea

JTextArea

Observer

Update()Observable

Attach(Observer)Notify()

JTextField

Page 30: Modèles d’architecture

Modele d’entiersimport 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(); }

}

Modèle

setValeur(int)getValeur()

valeur

Observable

Attach(Observer)Notify()

Page 31: Modèles d’architecture

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());

}}

JTextArea

Observer

Update()

Page 32: Modèles d’architecture

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); }}

Observer

Update()

Observable

Attach(Observer)Notify()