Vous êtes sur la page 1sur 32

Modles darchitecture

Cedric.Dumas@emn.fr
contrat Creative Commons Paternit-Pas d'Utilisation CommercialePartage des Conditions Initiales l'Identique 2.0 France License

modles du gnie logiciel


Cycle

de dveloppements

Modle en V
Modle en cascade
Modle en Spirale
Modle en Y
Etc...

tude des
Besoins

Maquettage

Architecture
Logicielle

Cahier des
Charges

Scenarii
dutilisation

Programmation

Analyse
de lActivit

Prototypage

Tests

Scenarii de
travail

Diagrammes
(UML)

valuation

Architecture Conceptuelle
Sert

la (retro)conception

Architecture Logicielle

IEEE 1471 standard (2000)


Thefundamentalorganizationofasystemembodiedinitscomponents,their
relationshipstoeachotherandtotheenvironment,andtheprinciplesguidingits
designandevolution

Autrement dit :

Une architecture : ensemble organis de composants + des relations + des principes

directeurs
Une architecture est le rsutat dun processus
Lenvironnement : participants (culture en qualit logicielle, outils, requis
commercial
Finalit dune architecture

communication (prcision et non ambigut de la description)


rtro-conception dun systme existant
valuation (selon des critres qualit)

Dictinction entre architecture et description darchitecture


Maier (2001) architectureisaconceptofasystem

Une architecture est un concept dun systme : elle existe bien que non observable

Une description darchitecture : reprsentation de ce concept pour une finalit


donne. Cest une entit concrte.

Architecture Logicielle

Bass (1998)
Thearchitectureofacomputingsystemisasetofstructureswhich
comprisesoftwarecomponents,theexternallyvisiblepropertiesofthese
componentsandtherelationshipsamongthem

Autrement dit :

Plusieurs points de vue sur une architecture (cf.Architecture en btiment)

Un point de vue : une structure, sa reprsentation pour une finalit


donne
Proprits dun composant : description du comportement attendu

Proprits observables de lextrieur : un composant est

Services fournis ou requis,Performance,Protocole de communication


une unit dabstraction, une unit de dploiement
un service, un module, un bibliothque, un processus, un procdure, un objet, un
agent, etc., sont des composants

Relations -> connexion -> connecteurs (appel procdural, RMI, socket, etc.)

Composant

Connecteur

Composant

Architecture Conceptuelle
Sert

la (retro)conception

Mthodologie de conception des interfaces

Design Pattern, Motifs de conception

Abstraction des squelettes dapplications

Dcoupage de lapplication en composants


autonomes
Schmas de programmation

Modle dArchitecture Logicielle


But : amliorer la qualit du logiciel en robustesse, modularit,
rutilisabilit

Dmarche :

Identification de Patrons partir des spcifications


Dveloppement orient objet avec communication par
messages

Dcomposition modulaire

Noyau (Fonctionnel)
Modle (Applicatif)
Fonctions
Objets
Mtier
Services

Notre TP

Notre TP
Interface
JFrame
JMenu
JList
JLabel
JSlider
JPanel

(s)

Modle
ImageLibrary
ImageItem

Pourquoi une architecture


spcifique?
Interfaces

graphiques

WIMP
Standardisation

de l aspect (look) et du
comportement (feel)
Nouvelle philosophie de programmation
Contrle

utilisateur
Sparation Interface et Noyau fonctionnel
Architectures de type Arch

Architecture Conceptuelle
Sert

la (retro)conception
Sparation entre la smantique et son
utilisation
portabilit (device independant)
rutilisabilit
plusieurs interfaces (flexibilit, plateformes, etc)
Personnalisation (designer, utilisateur)

Communication

entre lapplication et la
prsentation : contrleur de dialogue

3 composants maintenant...

le modle de Seeheim 1985


Application
Interface Model

vue de la smantique
qui est fournie pour
linterface

Dialog
Control

Presentation
Component

User

Application

(niveau smantique) (niveau syntaxique) (niveau lexical)

bypass

rguleinterfaces
les communications
Modlise les
jusque 1985
apparence de
entre lapplication et linterface
linterface et E/S

Pas dedusparation
en composant utilisateur
optimisation
feedback
etours visuels,
dessins et
main
leve, etc)
logiques
implmentation

modle Arch - Slinky 1992


rgulation des tches
de couches
squencement de linteraction
lis au modle de tches
modle
modle systme
adaptation aux toolkits de la plateforme vise
utilisateur
Plus versus
conceptuel
rorganisation des donnes
Awt, Xvt, Swing, Views
Semantic
Bien enhancement
adapt pour la structure fonctionnelle

Plus

Contrleur de Dialogue

Possibly adapted Domain Objects

Adaptateur
Functionnal Core Adapter
(Virtual Application Layer)

Logical Presentation Objects


transfert
de
modifiable
structure
de donnes
portable
explicites
(versus
efficacit)

Domain Objects

Domaine
Application Functionnal Core
Domain-specific component

application
noyau fonctionnel

Prsentation
Logical Presentation Component
(Virtual Toolkit)

Physical Interaction Objects


presentation
widgets
look and feel

Interaction
Interaction Toolkit Component
Physical Presentation Component

Exemple Gestion de Comptes

Contrleur de Dialogue
Gestion des vnements
Squencement des actions

Portion de relev

Adaptateur
Relevs de comptes

Noyau Fonctionnel
Application Bancaire
Gestion de comptes

Table de donnes

Prsentation
DefaultTableModel

Interaction
JTable
look & feel

Exemple Calculatrice

Contrleur de Dialogue
Gestion des vnements
Appel des oprations

chiffre

Noyau Fonctionnel
Application Bancaire
Gestion de comptes

Chiffres

Interaction
JButtons

Notre TP

Notre TP

Contrleur de Dialogue
Gestion des vnements
Listeners Swing

Adaptateur
ImageIcon + String
CurrentIndex

Noyau Fonctionnel
ImageLibrary
ImageItem

Prsentation
ImageIcon
JFrame + JPanel
Layout managers

Interaction
JSlider + JList + JMenu + JPanel
look & feel

Agent Based Models

Modles bass sur des agents


Systme interactif =
ensemble dunits computationnelles (agents)
Agent

capacit ragir et grer des vnements


caractris par un tat
possde une capacit dexpertise (rle)
relation utilisateur interacteur / objet dinteractif

Systme interactif = agents ractifs (<> agents cognitifs)


MVC, PAC, Clock, C2, etc...
Modle mme principe que les prcdents, avec une
granularit plus fine (par collections)

modle MVC 1987 (Smalltalk)


reprsentation graphique

View
ouput devices

Model
Controller
application semantics
noyau fonctionnel
gestion de linteraction
en entre

input devices

user

Implmentation Classique

MVC en Java
Modle

de faon gnrale :
Observer/Observable dans java.util
MVC dans Swing :
JComponent

= model + delegate
delegate = V + C

PAC 1987 (Jolle Coutaz)


Presentation

combine Input/Output (MVC)


Control pilote le dialogue et la cohrence entre
le modle et sa reprsentation (MVC)
Communication entre agents (MVC)
Pas li un environnement de programmation
(MVC), approche objet tout de mme
Plus conceptuel encore (moins dpendant de
limplmentation) que MVC
Presentation

Abstraction
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
solutions

(avgField)

listener

textField vers avgField

listener

textList vers avgField

listener

contenant la mise jour des deux


lments textList et avgField

MVC

dans tout a ? o est le modle ?

MVC

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

Observer Design Pattern


One

to many

dcoupage

JTextArea

JTextField

Modle
JTextArea

dcoupage

Observer
Observable
Attach(Observer)
Notify()

JTextField

Update()

JTextArea

Modle
setValeur(int)
getValeur()
valeur

JTextArea

Modele dentiers
import java.util.Observable;
public class Exo1Model extends Observable {
public int [ ] liste;
public Exo1Model() { }

Observable
Attach(Observer)
Notify()

public void setValeur(int x) {


[]
// notification des modifications dans la classe Observer
setChanged();
notifyObservers();
}
}

Modle
setValeur(int)
getValeur()
valeur

Une vue JTextArea

Observer
Update()

public class Exo1Vue extends JTextArea implements Observer {


public Exo1Vue(String text) {
super(text);
}
public void setVue(int avg){
setText(String.valueOf(avg));
}

JTextArea

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

Le principal

Observable
Attach(Observer)
Notify()

Observer
Update()

class Exo1Fenetre extends JFrame {


Exo1Model model;
public Exo1Fenetre(){
model = new Exo1Model();
[]
// ajout des connections entre le modle et les vues pour que
ces dernires soient mises jour
model.addObserver(jtextareaavgr);
model.addObserver(jtextarealist);
}
}

Vous aimerez peut-être aussi