Modèles d’architecture
description
Transcript of Modèles d’architecture
![Page 1: Modèles d’architecture](https://reader037.fdocuments.net/reader037/viewer/2022102614/56813d5e550346895da72932/html5/thumbnails/1.jpg)
Modèles d’architecture
contrat Creative Commons Paternité-Pas d'Utilisation Commerciale-Partage des Conditions Initiales à l'Identique 2.0 France License
![Page 2: Modèles d’architecture](https://reader037.fdocuments.net/reader037/viewer/2022102614/56813d5e550346895da72932/html5/thumbnails/2.jpg)
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](https://reader037.fdocuments.net/reader037/viewer/2022102614/56813d5e550346895da72932/html5/thumbnails/3.jpg)
Architecture Conceptuelle
Sert à la (retro)conception
![Page 4: Modèles d’architecture](https://reader037.fdocuments.net/reader037/viewer/2022102614/56813d5e550346895da72932/html5/thumbnails/4.jpg)
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](https://reader037.fdocuments.net/reader037/viewer/2022102614/56813d5e550346895da72932/html5/thumbnails/5.jpg)
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](https://reader037.fdocuments.net/reader037/viewer/2022102614/56813d5e550346895da72932/html5/thumbnails/6.jpg)
Architecture Conceptuelle
Sert à la (retro)conception
![Page 7: Modèles d’architecture](https://reader037.fdocuments.net/reader037/viewer/2022102614/56813d5e550346895da72932/html5/thumbnails/7.jpg)
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](https://reader037.fdocuments.net/reader037/viewer/2022102614/56813d5e550346895da72932/html5/thumbnails/8.jpg)
Décomposition modulaire
Noyau (Fonctionnel) Modèle (Applicatif) Fonctions
Objets Métier Services
![Page 9: Modèles d’architecture](https://reader037.fdocuments.net/reader037/viewer/2022102614/56813d5e550346895da72932/html5/thumbnails/9.jpg)
Notre TP
![Page 10: Modèles d’architecture](https://reader037.fdocuments.net/reader037/viewer/2022102614/56813d5e550346895da72932/html5/thumbnails/10.jpg)
Notre TP
Interface JFrame JMenu JList JLabel JSlider JPanel (s)
Modèle ImageLibrary ImageItem
![Page 11: Modèles d’architecture](https://reader037.fdocuments.net/reader037/viewer/2022102614/56813d5e550346895da72932/html5/thumbnails/11.jpg)
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](https://reader037.fdocuments.net/reader037/viewer/2022102614/56813d5e550346895da72932/html5/thumbnails/12.jpg)
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](https://reader037.fdocuments.net/reader037/viewer/2022102614/56813d5e550346895da72932/html5/thumbnails/13.jpg)
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](https://reader037.fdocuments.net/reader037/viewer/2022102614/56813d5e550346895da72932/html5/thumbnails/14.jpg)
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](https://reader037.fdocuments.net/reader037/viewer/2022102614/56813d5e550346895da72932/html5/thumbnails/15.jpg)
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](https://reader037.fdocuments.net/reader037/viewer/2022102614/56813d5e550346895da72932/html5/thumbnails/16.jpg)
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](https://reader037.fdocuments.net/reader037/viewer/2022102614/56813d5e550346895da72932/html5/thumbnails/17.jpg)
Notre TP
![Page 18: Modèles d’architecture](https://reader037.fdocuments.net/reader037/viewer/2022102614/56813d5e550346895da72932/html5/thumbnails/18.jpg)
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](https://reader037.fdocuments.net/reader037/viewer/2022102614/56813d5e550346895da72932/html5/thumbnails/19.jpg)
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](https://reader037.fdocuments.net/reader037/viewer/2022102614/56813d5e550346895da72932/html5/thumbnails/20.jpg)
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](https://reader037.fdocuments.net/reader037/viewer/2022102614/56813d5e550346895da72932/html5/thumbnails/21.jpg)
Implémentation Classique
![Page 22: Modèles d’architecture](https://reader037.fdocuments.net/reader037/viewer/2022102614/56813d5e550346895da72932/html5/thumbnails/22.jpg)
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](https://reader037.fdocuments.net/reader037/viewer/2022102614/56813d5e550346895da72932/html5/thumbnails/23.jpg)
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](https://reader037.fdocuments.net/reader037/viewer/2022102614/56813d5e550346895da72932/html5/thumbnails/24.jpg)
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](https://reader037.fdocuments.net/reader037/viewer/2022102614/56813d5e550346895da72932/html5/thumbnails/25.jpg)
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](https://reader037.fdocuments.net/reader037/viewer/2022102614/56813d5e550346895da72932/html5/thumbnails/26.jpg)
MVC
Class Model{ int [ ] liste; void addElement(int) int getElement(int ); int getAverage();}
![Page 27: Modèles d’architecture](https://reader037.fdocuments.net/reader037/viewer/2022102614/56813d5e550346895da72932/html5/thumbnails/27.jpg)
Observer Design Pattern
One to many
![Page 28: Modèles d’architecture](https://reader037.fdocuments.net/reader037/viewer/2022102614/56813d5e550346895da72932/html5/thumbnails/28.jpg)
découpage
JTextField Modèle
JTextArea
JTextArea
![Page 29: Modèles d’architecture](https://reader037.fdocuments.net/reader037/viewer/2022102614/56813d5e550346895da72932/html5/thumbnails/29.jpg)
découpage
Modèle
setValeur(int)getValeur()
valeur
JTextArea
JTextArea
Observer
Update()Observable
Attach(Observer)Notify()
JTextField
![Page 30: Modèles d’architecture](https://reader037.fdocuments.net/reader037/viewer/2022102614/56813d5e550346895da72932/html5/thumbnails/30.jpg)
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](https://reader037.fdocuments.net/reader037/viewer/2022102614/56813d5e550346895da72932/html5/thumbnails/31.jpg)
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](https://reader037.fdocuments.net/reader037/viewer/2022102614/56813d5e550346895da72932/html5/thumbnails/32.jpg)
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()