Академический Документы
Профессиональный Документы
Культура Документы
Bibliographie
s s s s s s s s
UML Distilled Fowler&Scott UML Toolkit Eriksson&Penker Applyling UML and Patterns Larman Design pattern GOF System of patterns Buschman&al Penser objet avec UML&Java Lai Object oriented Analysis Spadounakis UML Specification www.rational.com
Pascal Molli, molli@loria.fr 2
s s s s s
UML:Produire des documents Pertinent Consistent Comprhensible Facile changer Pour tout le cycle de vie
Pourquoi UML ?
s
s s
crire des documents pour communiquer, travailler plusieurs Comprendre la big picture Continuer son apprentissage OO.
Booch, OMT, Coad/Yourdon, Fusion,SADT, OOSE, Schlaer/Mellor, HOOD UML: un mta-langage de modlisation pour unifier les modles utiliss dans les mthodes Grady Booch, Ivar Jacobson, James Rumbaugh. Standardisation OMG
Billing System
Analyse
s s
Indpendant de limplmentation ! Identification des classes et des relations Description des collaborations entre les objets des diffrentes classes Diagramme de classes, de collaboration, d activits, d tat.
Pascal Molli, molli@loria.fr 7
Conception (design)
s
Prise en compte de larchitecture informatique Classes techniques pour grer l interface graphique, la distribution, la persistence, la concurrence Diagramme de classes, de squences, de composant, de dploiement, d tats
Pascal Molli, molli@loria.fr 8
Programmation
s
Conversion des classes de conception vers les langages cibles: java, sql, c++, IDL Conversion des classes persistentes vers les modles de persistences (SGBD, BDOO, Langages persistents) etc ...
Pascal Molli, molli@loria.fr 9
Test
s s
Tests unitaires: diagrammes de classes Tests d intgration: diagrammes de composants, de collaboration Test du systme: use-case diagram
10
Un premier exemple
s s s
Un jeu de ds Le joueur lance 10x 2 ds Si le total fait 7, il marque 10 points son score En fin de partie, son score est inscrit dans le tableau des scores.
11
Un premier Use-case Identifier les acteurs? Identifiers les cas dutilisations possibles du systme Ses fonctionnalits externes !
12
Play:
Acteur: Player Descr: Le joueur prend 10x les ds, chaque fois que le total fait 7, +10pts
V ie w Hig h S co re
13
Use Case
s s s
s s
Diagramme extrmement important ! IMHO, Il doit figurer dans un cahier des charges Il doit figurer dans toute prsentation d une application ! IL DOIT TRE COMMENTE de manire rigoureuse ! Sert de rfrence pour toute la suite des oprations
14
Diagramme d activit
s
Ressemble furieusement aux vieux organigramme identifier les activits (en s appuyant sur use case) identifier les transitions entre activits
15
Diagramme d activit
m e n u [start] Start turn=0 Roll Dice turn++ [true] Tu rn <1 0 [false] 16
[exit]
Diagramme d activit
[highscore] view Highscor e m e n u [start] Start turn=0 Roll Dice turn++ [exit]
Play Player
[true]
17
Diagramme d activit
m e n u [start] Start turn=0 Roll Dice turn++ [true] Tu rn <1 0 [false] Update highscore Pascal Molli, molli@loria.fr
[exit]
18
Diagramme dactivit
s
s s
Phase analyse des besoins ou analyse? Plus business process que orient objet Ordonnance et dtaille les Usecase Trs utile pour les tests...
19
Analyse
s s s
Modliser le monde rl Indpendant de l implantation Dterminer les classes d objets du monde rl : premier diagramme de classe Modliser la dynamique du systme: diagramme de collaboration.
Pascal Molli, molli@loria.fr 20
Diagramme de collaboration
s s
Identifier les OBJETS les relations entre OBJETS (graphe d objets) les message et l ordre d appel des messages entre les objets
21
Diagramme de collaboration
d1 : D ie 2: r1=roll( ) gam e : Dice Gam e 1: play( ) 3: r2=roll( ) d2 : D ie M om o : P layer
s s
Visualise les objets Visualise les relations entre objets Visualise l ordonnancement des appels de messages sur les objets
22
Digramme de collaboration
[highscore] view Highscor e m e n u [start] Start turn=0
d1 : D ie
[exit]
23
Diagramme de classes
s s
s s s
Identifier les classes Identifier les relations statiques et dynamiques entre les classes Dterminer les cardinalits des relations Dterminer les attributs des classes Dterminer les mthodes et leurs paramtres
Pascal Molli, molli@loria.fr 24
Diagramme de classes
Player
(from Use Case View)
Rolls 1 2
Includes DiceGame 1 1
Scoring 1 HighScore
25
Diagramme de classes
P layer
d1 : D ie 2: r1=roll( ) gam e : Dice Gam e 1: play( ) 3: r2=roll( ) d2 : D ie M om o : P layer
(from Us e Cas e V iew)
R olls 2
Includes
26
Diagramme de squences
s
Modlise la dynamique (~comme collaboration) Focalise sur lenchanement des messages Identifier les objets, les messages et leur ordonnancement.
27
Diagramme de squences
: DiceGame : Player d1 : Die d2 : Die
1: play( )
2: roll( ) 3: roll( )
Dure d activation !
Pascal Molli, molli@loria.fr 28
Diagramme de squences
d1 : D ie 2: r1=roll( ) gam e : Dice Gam e 1: play( ) 3: r2=roll( ) d2 : D ie M om o : P layer
: DiceGame : Player d1 : Die d2 : Die
1: play( )
2: roll( ) 3: roll( )
Rfrence!
Pascal Molli, molli@loria.fr 29
Diagramme de squences
: RealPlayer : DiceGame d1 : Die d2 : Die : Player 1: DiceGame( ) 2: Die( )
3: Die( )
4: start( ) 5: Player(String)
Diagramme d tats
s s
Identifier les tats d un objet Identifier les transitions entre les tats
31
Cancel
[ turn>=10 ]
32
Diagramme dtat
[highscore] view Highscor e m e n u [start] Start turn=0 Roll Dice turn++ [true] Tu rn <1 0 [false] Update highscore
Cancel ?
ca ncel / S tart game Ready to play start
[exit]
Cancel
[ turn>=10 ]
Cancel ?
Pascal Molli, molli@loria.fr 33
[exit]
cancel cancel
[exit]
35
Analyse termine ?
s
s s
Vrifier la couverture des diagrammes use-case et d activits Use case view highscores ? Use case play partiellement trait.
36
Play Player
[true]
Partiellement trait
Pascal Molli, Pas trait molli@loria.fr
Diagramme de squences
: RealPlayer : DiceGame 2: Die( ) d1 : Die d2 : Die : HighScore 1: DiceGame( )
3: Die( ) 4: Highscore( )
38
Diagramme de squence
: DiceGame : Player d1 : Die d2 : Die new : Entry : HighScore 1: Player(String)
6: add(Entry)
39
Diagramme de classes
<<Actor>> Player name : String score : int = 0; play() Player() Rolls 1 1 Plays 2 Die faceValue : int = 1 roll() Die() 1 1 DiceGame DiceGame() 1 start() 1 Scoring 1 HighScore Highscore() 1 add() 0..* Includes
40
Fin de lanalyse ?
s s s
Couverture un peu prs bonne Cohrence entre les schmas correcte 14/20
La dynamique manque de dtail (dynamique du cancel ?) Les schmas sont trop peu expliqus Les diagrammes de squence du jeu ne sont pas assez dtaills : manque quelques mthodes...
41
Conception
s
s s s
Dfinir une architecture logique Dfinir une architecture physique Rajouter les classes techniques permettant d implanter cette architecture !
Pascal Molli, molli@loria.fr 42
Conception de larchitecture
Prsentation
Applicatif
Play
Persistance
Fichier ou BDD
Pascal Molli, molli@loria.fr 43
Architecture en couche...
s
Une architecture possible, d autres existent (voir A system of patterns Bushcmann ) Les couches doivent tre le plus indpendante possible Dcoupler les couches en s appuyant sur interfaces + classes abstraites (design patterns)
Pascal Molli, molli@loria.fr 44
<<layer>> Core
<<subsystem>> Util
<<layer>> Persist
45
Layer core
s
Les classes reprsentant la logique de notre application. En fait, les classes d analyses revisites en vue de la ralisation
46
Analyse
<<Actor>> Player name : String 1 score : int = 0; play() Player() Plays1 Rolls 2 Die faceValue : int = 1 roll() Die() 1
DiceGame $ dg = null DiceGame() getInstance() start() 2 -dies Die faceValue : int = 1 roll() Die() display()
Singleton...
Includes
47
changed : boolean = false Observable() addObserver() deleteObserver() notifyObservers() notifyObservers() deleteObservers() setChanged() clearChanged() hasChanged() countObservers() <<Interface>> Observer
(from util)
0..*
Die
(from Core)
roll() Die() display() PlayerView PlayerView(player : Player) update(o : Observable, arg : Object) : void
48
Vues ?
(from util)
<<Interface>> Observer
49
Attention...
Observable
(from util)
changed : boolean = false Observable() addObserver() deleteObserver() notifyObservers() notifyObservers() deleteObservers() setChanged() clearChanged() hasChanged() countObservers() <<Interface>> Observer
(from util)
0..*
Panel
(from awt)
faceValue : int = 1 roll() Die() display() setValue() PlayerView PlayerView(player : Player) update(o : Observable, arg : Object) : void
Player
(from Core)
50
6: DieView(Die) 7: addObserver(Observer)
8: return component
51
4: update(Observable, Object)
52
MVC
s
MVC:
Propagation des changements d tats vers les objets graphiques
53
Raliser des crans graphiques contenant des vues si il y a lieu Le layer UI...
54
UI Layer
Frame
(from awt)
PlayerForm ok_action() cancel_action() PlayerForm() 0..1 MainForm HighScoreForm ok_action() quit_action() start_action() high_action() MainForm() 1 PlayerView HighScoreView update() <<Interface>> Observer
(from util)
PlayerView() update()
55
MainForm quit_action() start_action() high_action() MainForm() 1 PlayerView PlayerView() update() 2 DieView DieView() update() RollForm roll_action() 0..1 cancel_action() RollForm()
56
Diagramme d objets:rollform
d1 : Die View : Roll Form theDieView theDieView d2 : Die View : Label : Label
: Label
57
: RealPlayer
: DiceGame
: MainForm
: PlayerForm
: Playe
: RollForm
1: getInstance( )
2: MainForm( )
3: start_action( ) 4: PlayerForm( )
58
: P laye
: P layerV iew
: D ie
: D ieV iew
2 : PlayerVie w(Player)
59
Dcouplage UI/Core...
HighScore $ hs : HighScore = null Highscore() add() load() save() 1 0..* Entry name:String : type = initval score:int : type = initval Entry(name:String,score:int)()
DiceGame $ dg = null DiceGame() getInstance() start() 2 -dies Die faceValue : int = 1 roll() Die() display() setValue()
Singleton...
60
Architecture en couche...
RollForm
Classes techniques UI
DieView 2
(from UI)
+thePlayerView PlayerView
(from UI)
UI
(from UI)
+theDieView
1 PlayerView() update()
DieView() update()
<<Interface>> Displayable
Observable
(from util)
Core
Classes d analyses
61
Util subsystem
s s
Besoin de nombres alatoires Utiliser fonctionnalit random de java.util Le gnrateur de nombre alatoire est partag par tous les ds Encore un singleton...
62
Subsystem util
Random
(from util)
Singleton
$ serialVersionUID : long = 3905348978240129619L seed : long $ multiplier : long = 0x5DEECE66DL $ addend : long = 0xBL $ mask : long = (1L << 48) - 1 $ BITS_PER_BYTE : int = 8 $ BYTES_PER_INT : int = 4 nextNextGaussian : double haveNextNextGaussian : boolean = false Randomizer getInstance() getValue() 1 Random() Random() setSeed() next() nextBytes() nextInt() nextInt() nextLong() nextBoolean() nextFloat() nextDouble() nextGaussian()
63
Dynamique de Util
: Player : Die : Randomizer : Random 1: roll( ) 2: getInstance( ) 3: Randomizer( )
4: Random( )
Singleton ! 5: getValue( )
6: nextInt(int)
64
Layer Persist
s s
Par exemple:
Persistance par Serialisation Persistance via une base de donnes relationnelle (JDBC).
Pascal Molli, molli@loria.fr 65
Produit abstrait
Produit concret
Fabrique concrte
JdbcKit makeKit()
SrKit makeKit()
Fabrique abstraite
PersistKit
makeKit()
66
Dynamique de Persist
: RealPlayer : DiceGame : SrKit : HighScoreSr 1: SrKit( ) Attention! DiceGame voit SrKit comme un PersistKit et HighScoreSr comme un HighScore
2: getInstance( ) 3: DiceGame( )
4: makeKit( )
5: HighScoreSr( ) 6: load( )
7: quit( )
8: getInstance( ) 9: save( )
67
Utiliser la sralisation
s
Propagation de persistance...
e1 : Entry
: High Score
e2 : Entry
e3 : Entry
e4 : Entry
68
Dynamiqe de JdbPersist...
s s
Une table doit tre cre dans un SGBD relationnel la cration de HighScoreJDBC: Connection au SGBD via JDBC save:
faire des inserts pour chaque entry
load:
Select * from ..., parcours du rsultat, cration des objets entry
70
Un peu de code...
public class HighScoreJDBC extends HighScore { public static final String url="jdbc:odbc:dice"; Connection con=null; public HighScoreJDBC() { try { //loads the driver Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); con=DriverManager.getConnection(url, "molli",""); } catch (Exception e) { e.printStackTrace(); new Error("Cannot access Database at"+url); } hs=this; // register unique instance ! this.load(); }
Pascal Molli, molli@loria.fr 71
Jdbc Load
public void load() { try { Statement select=con.createStatement(); ResultSet result=select.executeQuery ("SELECT Name,Score FROM HighScore"); while (result.next()) { this.add(new Entry(result.getString(1), result.getInt(2))); } } catch (Exception e) { e.printStackTrace(); } }
72
Jdbc Save
public void save() { try { for (Enumeration e = this.elements() ; e.hasMoreElements() ;) { Entry entry=(Entry)e.nextElement(); Statement s=con.createStatement(); s.executeUpdate( "INSERT INTO HighScore (Name,Score)"+ "VALUES('"+entry.getName()+"',"+ entry.getScore()+")"); } } catch (Exception e) { e.printStackTrace(); } }
Pascal Molli, molli@loria.fr 73
Component diagram...
s
a component is a non-trivial, nearly independent, and replaceable part of a system that fulfills a clear function in the context of a well-defined architecture. A component conforms to and provides the physical realization of a set of interfaces.
Pascal Molli, molli@loria.fr 74
Component diagram
s
s s
Realize : implmenter des interfaces Depend : Utiliser les intefaces Les interfaces dcouplent les composants
75
Component diagram...
DicePersist HighScore Observable PersistKit Observer DiceSystem Displayable Dice Vizua lizatio n
Rand om izer
Random system
76
Diagrammes de dploiement
s s
Visualiser l architecture physique Associer les units d excution aux traitements Identifier les connexions entre les units d excution
77
Diagramme de dploiement
JBDC Connection Save/load the highscore
File System
78
Design termin ?
s
Couverture des fonctionnalits : comparer Use-case et activity diagram Cohrence entre les diagrammes ??
Quelques incohrences UI vs Core Indpendance Core/Persist partiellement atteinte...
Pascal Molli, molli@loria.fr 79
s s
Mapper vers n importe quel langage ! Les langages objets : java, C++, smalltalk Mais aussi les autres: VB, C, Fortran Voir aussi: SQL, Cobol...
80
package Core;
Mapping java...
<<Interface>> Displayable display() Observable
(from util)
public class Die extends Observable implements Displayable { private int faceValue = 1; public int roll() { setValue(Randomizer.getInstance(). getValue()); return getValue(); } public java.awt.Component display() { Component c=new DieView(this);
Die faceValue : int = 1 roll() : int Die() display() : java.awt.Component setValue(value : int) : void getValue() : int
this.addObserver((Observer)c); return c; } public void setValue(int value) { faceValue=value; this.setChanged(); this.notifyObservers(); } public int getValue() { return faceValue;} Pascal Molli, molli@loria.fr 81 }
Relations
HighScore
(from Core)
Entry +schedule name:String : type = initval score:int : type = initval 0..* Entry(name:String,score:int)()
(from Core)
package Core; import java.util.*; import java.awt.Component; import UI.HighScoreView; public abstract class HighScore extends Observable implements java.io.Serializable, Displayable { protected static HighScore hs = null; public Vector entries=new Vector(); public void add(Entry entry) { entries.addElement(entry); this.setChanged(); this.notifyObservers(); }
public Enumeration elements() { return entries.elements(); } public abstract void load(); public abstract void save(); public Component display() { Component c=new HighScoreView(this); this.addObserver((java.util.Observer)c); return c; } public static HighScore getInstance() { if (hs==null) { new Error("No Persist Kit declared"); } return hs;} Pascal Molli, molli@loria.fr 82
Codage...
s
s s
Utiliser les fonctionnalits de forward engineering des outils Puis de reverse engineering Pour faire en fait du round trip engineering ;-D Assurer la cohrence Code/Design/analyse...
Pascal Molli, molli@loria.fr 83
Forward engineering
Die Player
(from Core) (from Core)
+theDiceGame DiceGame
(from Core)
// Source file: c:/prout/Core/DiceGame.java package Core; public class DiceGame { private static int dg = null; private Die dies[]; private Player thePlayer; DiceGame() { } /** @roseuid 37F877B3027B */ private DiceGame() { } /** @roseuid 3802F61403A0 */ public void getInstance() { } /** @roseuid 37F8781A014D */ public void start() { } /** @roseuid 38074E7F0158 */ public void quit() { } }
84
Forward Engineering
: RealPlayer : DiceGame : SrKit 1: SrKit( )
package Core; import UI.MainForm; import Persist.*; import java.awt.*; class Main { public static void main(String args[]) { // SrKit srk=new SrKit(); JdbcKit srk=new JdbcKit(); DiceGame dg=DiceGame.getInstance(); Frame f=MainForm.getInstance(); f.setSize(300,300); f.show(); } }
2: getInstance( ) 3: DiceGame( )
4: makeKit( )
85
Reverse Engineering...
Observable
(from util)
Vector
(from util)
+entries
Player() die1() DiceGame die2() -thePlayer play() display() DiceGame() getName() getInstance() getScore() start() getTurn() getDie() setTurn() getPlayer() -$dg setScore()
#$hs
86
Reverse engineering
s s
87
Comparaison Design/Ralisation
Observable
(fro u m til)
Vector
(from util)
String
(from lang)
CORE
Die faceValue : int = 1 roll() Die() display() setValue() getValue() -dies[] HighScore HighScore() add() elements() load() save() display() getInstance()
+entries
-name -name
#$hs
Player score : int = 0 turn : int = 0 WI N_NU MBER: int = 7 WI N_SCO E : int = 10 R Play er() die1() die2() play () display() getName() getScore() getTurn() setT urn() setScore()
-thePlayer
DiceGame DiceGame() getInstance() start() getDie() getPlayer() -$dg <<Interface> > Displayable display()
88
UI(1)
HighScoreForm
ActionListener
(from event)
Frame
(from awt)
TextField
(from awt)
-rf
-tf
-pf
89
UI(2)
HighScoreForm actionPerformed() HighScoreForm() closeAction() +m_HighScoreForm +cancel +ok -close Button
(from awt)
+theDieView[] -hv HighScoreView HighScoreView() update() DieView() update() -l DieView +thePlayerView PlayerView -scoreLabel -nameLabel -turnLabel Label
(from awt)
PlayerView() update()
-l List
(from awt)
Observer
(from util)
90
Util
Randomizer -$r getInstance() getValue() Randomizer() Random -random util) (from
91
Persist
S erializable
(from io)
D iceGame
(from Core)
V ector + entries (from util) HighS core()#$hs add() elem ents() load() save() display() getInstance()
HighS coreJD B C HighS coreJD B C () load() save() JdbcK it JdbcK it() m akeK it() S rK it m akeK it() S rK it() loa d() sa ve () H ighS coreS r()
HighS coreS r
92
Problmes rencontrs
s
Dynamique de la gestion des tours mal conue ! Qui vritablement fait le test de fin de jeu ? Faiblesse dans le design !
93
6: add(Entry)
94
Problme !
s s
Pas assez rigoureux ! Ce diagramme d analyse n a pas t revu au design !!! (-4)
95
Refaire !
: RollForm : Player : Die : Die 1: actionPerformed(ActionEvent) 2: rollAction( )
3: getTurn( )
4: [turn<10]play( )
5: setValue(int) 6: setValue(int)
7: setTurn(int)
96
Finalement !
97
Tests d intgration :
diagramme de composants
Tests du systme :
Diagramme Use Case + Activits
Pascal Molli, molli@loria.fr 98
Test du systme
s
P la y P la ye r
s
V ie w Hig h S co re
Ok, les fonctionnalits sont l ... et sont conformes au descriptif associ au use case ! >8->
99
Je l ai oubli
Test du systme
[highscore] view Highscor e m e n u [start] Start turn=0 Roll Dice turn++ [true] Tu rn <1 0 [false] Update highscore Pascal Molli, molli@loria.fr [exit]
celui l !
100
Test du systme
[highscore] view Highscor e m e n u [start] Start turn=0 Roll Dice turn++ [true] Tu rn <1 0 [false]
s
[exit]
Problme rencontr
s
Scnario 1 :
start, roll*, highscore, quit : OK
Scnario 2:
highscore, : ko ! Bug Pb design :
DiceGame cre Highscore (start) Si Highscore avant start : bug
102
Solution
package Core; import UI.MainForm; import Persist.*; import java.awt.*; class Main { public static void main(String args[]) { // SrKit srk=new SrKit(); JdbcKit srk=new JdbcKit();
DiceGame dg=DiceGame.getInstance();
Frame f=MainForm.getInstance(); f.setSize(300,300); f.show(); } }
Pascal Molli, molli@loria.fr 103
Test d intgration
DicePersist HighScore Observable PersistKit Observer DiceSystem Displayable Dice Vizua lizatio n
Rand om izer
Random system
Test MVC
104
Scnario de test
s s
s s
Highscore, start, roll* Si le MVC fonctionne, l entre d un nouveau highscore entrane le raffichage de la liste qui est dj ouverte !! Ok, a marche C est bien de bien designer ...
Pascal Molli, molli@loria.fr 105
Analyse
Dynamique : Collaboration, Sequence, state Statique : Class Diagram
Pascal Molli, molli@loria.fr 106
Design
s
107
Codage
s s
Simple conversion du design vers Java Possibilit de construire pour chaque reprsentation UML, une traduction vers n importe quel langage cible. Utilisation des outils pour round-trip engineering PB au codage : Bien remettre jour les document analyse/design !!!
Pascal Molli, molli@loria.fr 108
2: rollAction( )
3: getTurn( )
s
5: setValue(int) 6: setValue(int) 7: setTurn(int)
4: [turn<10]play( )
s s
Faire son auto-critique, retrouver la cause de ce pb.. Amliorer son process pour la prochaine fois ! Ici : les diag d analyse n ont pas t refait ! Software process, procdure qualit !
109
Tests
s s
contrle des fonctionnalits :Use-case Contrle de la conformit: Diagramme d activit Tests d intgration : Diagramme de composant Tests unitaires : pas fait.
110
Tests attention !
s s
Vision un peu simpliste des choses ! Intgration dans un process qualit (change management) Tests de rgression, automatisation des tests (banque de tests, gnration de test, outils!!)
111
Dcoupage en phase:
Analyse des besoins, analyse, conception, ralisation, test.
112
Vue Fonctionnelle
DicePersist
Vue architecturale
Dice Vizua lizatio n
DiceSystem HighScore
Displayable
P la y P la ye r
V ie w H ig h S co re
F in d B e ve ra g e [ fo u n d c o ffe e ]
[ n o c o ffe e ]
[ n o c o la ]
[ fo u n d c o l a ]
G e t C an of C o la
Vue Statique
( fr o m U s e C a s e V R w )l l s ie o
P ut F ilt e r i n M a c h in e
Cohrence !! Couverture !!
1 : p la y ( ) g a m e : D ic e G am e
Vue Comportementale
d 1 : D ie 2 : r1 = ro ll( )
Rand omizer
Random system
JBDC Connection
P la y e r
T u rn o n M a c h i n e
n a m e : S trin g s c o r e : in t 1 0 ; = p la y ( ) 1 P la ys 1
P ou r C o ffe e D rin k B e ve ra g e
D ie fa c e V a lu e : i n t = 1 2 r o ll( ) 1
3 : r2 = ro ll( ) d 2 : D ie
l ig h t g o e s o u t
In c lu d e s D ic e G a m e 1 1 S c o ri n g 1 H ig h S c o re
/ Start game Ready to play cancel
M o m o : P la y e r
File S ystem
: DiceGame
: P laye r
d1 : Die
d2 : Die
1: play( )
start Player ready entry: get player name
2: roll( ) 3: roll( )
Cancel
[ turn>=10 ]
113
Cohrence/couverture
s
Diagramme Use-cases/Activity
Une activit doit toujours tre assignable un use-case Tous les use-case doivent tre raliss dans les diagrammes d activits
114
Use-case/Activity
[highscore] view Highscor e m e n u [start] Start turn=0 Roll Dice turn++ [exit]
Play Player
[true]
OK !
Pascal Molli, molli@loria.fr
Activits/Collaboration
s
s s
Tous les chemins possibles dans les diagrammes d activits sont sujet tre reprsents par des diagrammes de collaboration! Attention la sur-analyse ! Ne reprsenter que les scnarios les plus pertinents !
Pascal Molli, molli@loria.fr 116
Activit/collaboration
[highscore] view Highscor e m e n u [start] Start turn=0
d1 : D ie
117
Collaboration/Class diagram
s
Tous les objets d un diagramme de collaboration ont un type : Classe du diagramme de classe Les relations d un diagramme de collab doivent exister ou pouvoir tre drives du diagramme de classe ! Les messages changs sont des mthodes du diagrammes de classes !
Pascal Molli, molli@loria.fr 118
Collab class/Diagram
P layer
d1 : D ie 2: r1=roll( ) gam e : Dice Gam e 1: play( ) 3: r2=roll( ) d2 : D ie M om o : P layer
(from Us e Cas e V iew)
R olls 2
Includes
S coring
OK!
Pascal Molli, molli@loria.fr
1 HighS core
119
Toute la dynamique des relations doit apparatre dans au moins 1 diagramme de squence ou d activits Tout changement d attributs doit tre reprsents dans au moins 1 diag d activits ou de squence Toute cration ou destruction d objet doit apparatre dans au moins 1 diag dynamique!
Pascal Molli, molli@loria.fr 120
Class/Seqence
P la ye r
(from U s e C a s e V ie w )
KO!
: R e a lP la y e r : D ic e G a m e d 1 : D ie d 2 : D ie : P la y e r
R o lls 2
1 : D ic e G a m e ( )
2 : D ie ( )
Changement d tat ?
In c lu d e s
4 : s ta r t( )
3 : D ie ( )
5 : P la y e r (S tri n g )
S c o rin g 1 H ig hS c o re
Cration ?
Pascal Molli, molli@loria.fr 121
Class/Squence
s
Class/State diagram...
s
s s
Pour chaque classe se demander si son statut volue au cours du temps ? Si oui, faire un diagramme d tat Attention chaque transition du diagramme d tat doit tre vrifie !
123
Class/State diagram !
P la ye r
(from U s e C a s e V ie w )
R o lls 2
In c lu d e s
C a nc el
S c o rin g 1 H ig hS c o re
1 Objet DiceGame !
[ tur n>= 10 ]
In p ro g re s s e ntry: turn+ +
Chaque classe doit tre affect un package, package lui-mme partie intgrante de l architecture Toute classe doit faire aussi partie d un composant assurant un ensemble de fonctionnalit dans cette architecture !! Sinon la classe ne fait pas partie de l architecture !
Pascal Molli, molli@loria.fr 125
Class/Package
awt (from java) MVC: Observer/Observable
Singleton
Random
(from util)
<<layer>> UI util (from java)
Random() Random() setSeed() next() nextBytes() nextInt() 1 nextInt() nextLong() nextBoolean() nextFloat() nextDouble() nextGaussian()
<<layer>> Core
<<subsystem>> Util
for random !
Random FUNCTION !
<<layer>> P ersist
126
Class/Composant
DicePersist HighScore Observable PersistKit Observer D iceSystem Displayable Dice Vizua lizatio n
Singleton
Random
(from util)
Rand om izer
Random() Random() setSeed() next() nextBytes() nextInt() 1 nextInt() nextLong() nextBoolean() nextFloat() nextDouble() nextGaussian()
Random system
127
Component/Deployement
s
Chaque composant doit tre affect une unit d excution sur le diagramme de dploiement ! A Priori, un composant ne peut pas tre cheval sur deux unit d excution Toute unit d excution doit avoir au moins 1 composant...
Pascal Molli, molli@loria.fr 128
Composant dploiement !
DicePersist HighScore Observable PersistKit Observer DiceSystem Displayable Dice Vizua lizatio n
OOOPPPPSS !
Save/load the highscore
JBDC Connection
Rand om izer
Random system
File System
129
130
Analyser et concevoir ?
s
Dice est document : les dcisions autant l analyse quau design sont visibles et justifies (ici l oral, l crit dans vos rapport)!
Dice peut tre repris par quelqu un d autre ! Le cout de maintenance baisse! Dice est maintenable ! Dice peut tre control (intgr dans un software process) tout au long du processus analyse des besoins/tests...
131
Analyser et concevoir
s
Dice est conforme : J ai dis ce que j allais faire (avant de le faire) et j ai fait ce j ai dit !
J aurai pu mme donner des dlais et des couts...
132
Analyser et concevoir
s
133
Analyser et Concevoir
s
134
Analyser et concevoir
s s
Dice est donc maintenable, conforme, robuste, portable Le cot de Dice est donc moins lev qu un Dice dvelopp Quick and Dirty .
Le cot de maintenance est bien plus lev que le cot de dveloppement (50% de l effort total de programmation d une grosse socit)
135
Analyser et concevoir
s
Rpartition du cot de dveloppement d un systme: Phase Costs (%) Testing System type Requirements/ Coding
Command control Spaceborn Scientific Business OS Design 46 34 44 44 33 20 20 26 28 17 34 46 30 28 50
136
Dessin des diagrammes: En respectant la smantique des diagrammes Sert de rfrentiel: Tous les lments crs dans diffrents diagrammes sont stocks dans 1BD Navigation: browser travers les documents UML
Pascal Molli, molli@loria.fr 137
Support multi-utilisateurs: Plusieurs utilisateurs doivent pouvoir travailler en parallle sur le mme modle (Gestion de configuration) Gnration de code: Gnration de squelettes dans diffrents langages cibles
Pascal Molli, molli@loria.fr 138
Reverse enginnering: lire le code existant et gnrer ou mettre jour les diagrammes existant Intgration avec les autres outils: Editeur, compilateur, debugger, gestionnaire de configuration
139
Couvrir le modle tous les niveaux d abstraction: des packages jusquau code Import/export: L outil doit permettre d importer/exporter des design de ou vers d autres outils de conception
140
Un outil...
141
Un rfrentiel pour:
Controler l incohrence Critiquer (mtriques) Reporting
142
Scripts...
143
Intgration...
Project Management Tool Requirements and Specification tools Profiler and metrics Compilateu r/ Debugger Configuration Management
Documentatio n Tool
Modelling tool
Gui Builde r
Process Support
Testin g tools
144
Reprenons les notations (Use-case, activity, class, sequence, collab, component, etc et voyons un peu les notations un peu plus exotiques
145
146
Use Cases
Use case s specifies the behavior of a system s sequence of actions to yield an observable result of value to an actor s Capture the intended behavior (the what) of the system omitting the implementation of the behavior (the how)
s
Description of a sequence of actions, including variants (specifies desired behavior) Represents a functional requirement on the system Use case involves interaction of actors and the system
Market Analysis
Financial Officer
Frank Maurer, University of Calgary 148
interaction diagrams
149
Actors
s
Role that a user plays with respect to the system Actors carry out use cases
look for actors, then their use cases
s s
Actors do not need to be humans! Actors can get value from the use case or participate in it
Frank Maurer, University of Calgary 150
Actors
s
Officer
s s
connected to use cases only by association Financial Officer association = communication relationship (each one sending, or receiving messages)
151
s s
Generic, step-by-step written description of a use cases event flow Includes interactions between the actor(s) and a use case May contain extension points Clear, precise, short descriptions
152
Capture deal 1. Enter the user name & bank account 2. Check that they are valid 3. Enter number of shares to buy & share ID 4. Determine price 5. Check limit 6. Send order to NYSE 7. Store confirmation number
Frank Maurer, University of Calgary 153
154
Generalization relationship
s
Validate user
Check password
Retinal scan
child use case inherits behavior and meaning of the parent use case child may add or override the parents behavior child may substitute any place the parent appears
155
Extends relationship
s
s s
Allows to model the part of a use case the user may see as optional Allows to model conditional subflows Allows to insert subflows at a certain point, governed by actor interaction represented by an extend dependency extension points (in textual event flows)
Frank Maurer, University of Calgary 156
Limit exceeded
s s
Extends relationship
s s
Allows to model the part of a use case the user may see as optional Allows to model conditional subflows Allows to insert subflows at a certain point, governed by actor interaction Capture the base use case For every step ask
what could go wrong how might this work out differently
Limit exceeded
Capture deal
1. Enter the user name & bank account 2. Check that they are valid extension point: reenter data in case they are invalid 3. Enter number of shares to buy & share ID 4. Determine price 5. Check limit 6. Send order to NYSE 7. Store confirmation number
158
Uses/Includes relationship
s
Used to avoid describing the same flow of events several times, by putting the common behavior in a use case of its own
<<uses>> Analyze risks Valuation <<uses>
Price details
Comparing extends/uses
s
Different intent
extends
to distinguish variants set of actors perform use case and all extensions actor is linked to base case
uses/includes
to extract common behavior often no actor associated with the common use case different actors for caller cases possible
160
Price details
Limit exceeded
Frank Maurer, University of Calgary 161
Diagram: UML Distilled, Martin Fowler, Kendall Scott, 1997, Addison-Wesley, Copyright 1997, Addison-Wesley
162
Granularity: fine or course Achieve a discrete goal Use cases describe externally required functionality Often: Capture user-visible function
163
Requirements capture - first thing to do Use case: Every discrete thing your customer wants to do with the system
give it a name describe it shortly (some paragraphs) add details later
164
Class diagrams
s s s
165
Class diagram
s s
166
Perspectives
s
Conceptual
Shows concepts of the domain Independent of implementation
Specification
Interfaces of software (types) Often: Best perspective
Implementation
Structure of the implementation Most often used
Frank Maurer, University of Calgary 167
Class
s s
Task startDate endDate setStartDate (d : Date = default) setEndDate (d : Date = default) getDuration () : Date
168
OO type = protocol understood by an object = set of methods that are implemented Class = implementation oriented construct
implements one or more types
Association
s
Relationship between instances of classes A student is registered for a course A professor is teaching the course
170
Heater 1 1
Cooler
Temperature
171
Rules of thumb
One class can be part of several diagrams Diagrams shall illustrate specific aspects
Not too many classes Not too many associations Hide irrelevant attributes/operations
172
Class diagrams
s s s
173
Association
s
hasCustomer *
Order comes from one customer Customer may make several orders
Frank Maurer, University of Calgary 174
Naming associations
s
Roles
Order dateReceived isPrepaid number : String price : Money dispatch( ) 1
s s
s
line item * OrderLine quantity price isSatisfied
176
Role names
s
Role name is obligatory for associations between objects of the same class
Manager
Person Name Insurance no. Address
Supervises
Salesperson
Frank Maurer, University of Calgary 177
Multiplicity
s
178
Multiplicity (2)
s s s s s
179
Specification perspective
s
Method in Customer returning Orders Method in Order that returns the Customer that made the order
180
Navigability
s
s s
Order has to be able to determine the Customer Customer does not know Orders Bi-directional association: Navigability in both directions (inverse roles)
Frank Maurer, University of Calgary 181
Order
Part
182
Naming conventions
Order dateReceived isPrepaid number : String price : Money dispatch( ) 1
Naming conventions allow often to infer the names of messages from the diagram class Order { public Enumeration orderLines(); public Customer customer(); }
line item
183
184
Association classes
s
Useful if
attributes dont belong to any one class but to the association
User Authorized on Workstation
Contents
s s s s s s
Attributes and operations Aggregation Inheritance Interfaces and abstract classes Advanced association concepts When and how
Frank Maurer, University of Calgary 186
Objects show
Object name Class name (optional) Attribute value (optional)
187
Example
Salesperson Generates Class diagram: curtisClyde: Order Includes CustInfo order121: ace furniture: Object diagrams: order122: harmon assoc:
Frank Maurer, University of Calgary
Contains
Line
Attributes
s
Conceptual: Indicates that customer have names Specification: Customer can tell you his/her name and set it Implementation: An instance variable is available UML syntax:
<attribute name>: <Data type>
189
Conceptual perspective
not much of a difference!
Specification/implementation perspective
Attribute stores values NOT references
no sharing of attribute values between instances!
190
Operations
s s s
Processes that can be carried out on instances Correspond to messages of the class Conceptual perspective principal responsibilities Specification perspective public messages = interface of the class Normally: Dont show operations that manipulate attributes
191
name: string parameter list: arguments (syntax as in attributes) return-type-expression: language-dependent specification
192
Types of operations
s
s s s
Query = returns some value without modifying the class internal state Modifier = changes the internal state Queries can be executed in any order Getting & setting messages
getting: query setting: modifier
Frank Maurer, University of Calgary 193
Contents
s s s s s s
Attributes and operations Inheritance Aggregation Interfaces and abstract classes Advanced association concepts When and how
Frank Maurer, University of Calgary 194
Subclassing
s
land vehicle
water vehicle
car
amphibian vehicle
ship
195
Subclassing
s
Attributes & operations of an ancestor class are inherited to the subclass Extension: adding of new attributes or operations Restriction: additional restrictions on ancestor attributes
196
Perspectives
s s
Conceptual: Subset relationship Specification: Subtype conforms to supertype interface Implementation: Implementation inheritance, subclassing
197
Contents
s s s s s s
Attributes and operations Inheritance Aggregation Interfaces and abstract classes Advanced association concepts When and how
Frank Maurer, University of Calgary 198
Aggregation
s s
Typical example:
parts explosion organizational structure of a company
199
Class B
Class C
200
Example: Aggregation
Compan y
works for
Unit
Department
Group
Person
201
Composition
Aggregation
Order
* 1
Components belong only to one Composition whole Parts live and die with the whole
cascading delete also needed for 1..1 associations The players can be aggregated to the Flames BUT they are not killed when the Flames disappear
202
Aggregation association
s s
203
Recursion
s
Directed path of aggregation associations from a class to itself Variable aggregation: finite number of levels, number of parts variable (example: company)
204
205
Class
Inner class
206
s s s s
Distinction between association and aggregation often rather matter of taste than difference in semantics Aggregation IS association Aggregate is inherently sum of its parts Chains of aggregate links may not form cycles Composition is appropriate when each part is owned by one object, part has not have an independent life from its owner
Frank Maurer, University of Calgary 207
Chaining of operations
s
Chaining: Applying an operation to a net of objects Often for: copy, save, redo, delete, print
Document owns copy copy copy copy Paragraph copy Character
Person
208
land vehicle
water vehicle
WaterFeature
VehicleFeature
209
vehicle
train
..
car
train
small car
big car
small train
big train
211
Contents
s s s s s s
Attributes and operations Inheritance Aggregation Types, interfaces and abstract classes Advanced association concepts When and how
Frank Maurer, University of Calgary 212
OO types
s
Stereotype
<<implementation class>> physical data structures and methods of an object
<<type>> Set addElement(Object) removeElement(Object) testElement(Object) : Boolean <<implementation class>> HashTableSet element s : HashTable addElement (Object) remov eElement(Object ) tes tElement(Object) : Boolean setTableSize(Integer)
213
interfaces that belong to a class represent different roles You can explicitly state the role a class presents to another class:
<<interface>> Employee getEmploymentHistory() getCompensation() getBenefits() Person e: Employee 1..* * Company
214
Static types: the type of an object doesnt change over time, e.g. classes Dynamic types: object can gain and lose types during lifetime Example: Candidate, Employee, Retiree
215
Abstract class
s s s s
has no instances organizes attributes & operations often: facilitates code reuse abstract operation: implementation in concrete subclasses can contain concrete implementations
Frank Maurer, University of Calgary 216
X11 Window
toFront() toBack()
toFront() toBack()
217
InputStream
{abstract}
DataInput
Generalization
OrderReader
Dependency
DataInputStream
Realization
218
InputStream
Frank Maurer, University of Calgary 219
Parameterized classes
s s
220
Bound element
s
Set
Template Class
Set <Employees>
Refinement
Bound Element
Contents
s s s s s s
Attributes and operations Inheritance Aggregation Interfaces and abstract classes Advanced association concepts When and how
Frank Maurer, University of Calgary 222
Constraints
s
Additional constraints: in braces { } {UofC has always to be better than UofA} {immutable} {read only}
Frank Maurer, University of Calgary 223
Example
Chair-of 1 Person {subset} * Committee
* Member-of
224
Multiplicity > 1
Set
no target object appears more than once not ordered
225
Association classes
s
Useful if
attributes dont belong to any one class but to the association
User Authorized on Workstation
*
Authorization Priority Access rights Start session
Directory
227
o1 44 o2 56 Task ToDoList o3 87 name : String 0..1 o4Within a ToDoList, you mustnt have two tasks with the same name 99
class ToDoList { public Task getTask(String name); public void addTask(String name, Task aTask); }
228
not qualified
qualified
noted
Company StockID
Company
229
Person
ABC Inc. ABC Inc. ABC Inc. ABC Inc. ABC Inc. XYZ Inc.
President Vice President Finances Member of board Member of board Member of board President
Roger Rabbit Joe Savemoney John Walker Susi Sanssouci Karl Eichbaum Donald Duck
230
Calculated based on other attributes and associations Specification: Shows constraint not what is stored and what is calculated
231
components {hierarchy}
Entry
amount:Money
Derived Attribute
Derived Role
Detail Account
Note
232
Diagram: UML Distilled, Martin Fowler, Kendall Scott, 1997, Addison-Wesley, Copyright 1997, Addison-Wesley
Contents
s s s s s s
Attributes and operations Inheritance Aggregation Interfaces and abstract classes Advanced association concepts When and how
Frank Maurer, University of Calgary 234
Class diagrams are the backbone of OO development approaches Dont use all the notations
start with simple stuff
Start simple
major classes & obvious associations
Then add
Attributes Multiplicity Operations
236
Rules of thumb
One class can be part of several diagrams Diagrams shall illustrate specific aspects
Not too many classes Not too many associations Hide irrelevant attributes/operations
237
B C
238
Contents
s s
239
Example
s s s s
s s s s
A zoo consists of a set of cages. Every cage is the home of at least 2 animals. Cages are located besides each other. Every cage has at most one left neighbor and at most one right neighbor. Animals can be reptiles, insects, and mammals. Mammals are elephants, monkeys, and tigers. Monkeys eat bananas. Tigers prefer meat.
Frank Maurer, University of Calgary 240
Traffic lights
s
Develop a state transition diagram for the 4 traffic lights at a crossing. Make sure that the lights never allow traffic to move east to west (or west to east) at the same time as they allow traffic to move north to south (or south to north). Give meaningful names to all state transitions.
241
Contents
s s
242
Interaction diagrams
s s
describe how groups of objects interact typically describe the scenario of a single use case show
example objects messages between them timeline
243
Sequence diagrams
s
time line
244
Objects in UML
s s
Object Name History 101-Section 2 Object Name and Class History 101-Section 7: CourseOffering Class Name : CourseOffering
Frank Maurer, University of Calgary 245
Timelines
s
246
247
Object creation
Condition
a Stock Item
an Order Line
3: check() 5: needsToReorder()
Asynchronous Message
Activation
Asynchronous messages
s s
249
Boundary classes
s
KISS = keep it small and simple Diagrams are meant to make things clear Conditional logic
simple: add it to the diagram complex: draw separate diagrams
Frank Maurer, University of Calgary 251
Contents
s s
252
253
Diagram: UML Distilled, Martin Fowler, Kendall Scott, 1997, Addison-Wesley, Copyright 1997, Addison-Wesley
254
Collaboration diagrams
s s
256
: Registrar
3 : add course
aCourse : Course
theManager : CurriculumManager
4 : new course
257
258
Sequence of messages more difficult to understand in collaboration diagrams Layout of collaboration diagrams may show static connections of objects Complex control is difficult to express
259
State diagrams
s s
260
design process
coding
testing
design document
Used technique: UML class diagrams, UML sequence diagrams, UML activity diagrams UML state diagrams
261
Design document
s s
Component design
class diagrams state diagrams sequence diagrams
Frank Maurer, University of Calgary 263
Allows quick overview over the system structure and main design decisions Allows developers to work in parallel
264
Diagram notations
s
State diagrams
describe the behavior of objects
Activity diagrams
describe the flow of work parallel processing
Sequence diagrams
describe time ordering of messages
Deployment diagrams
physical relationship of software and hardware
Frank Maurer, University of Calgary 265
State diagrams
s s
266
State diagrams
s
Other names
State transition diagram Harel diagram (statecharts)
267
Over drafted
s
withdraw
State: condition/situation during lifetime of an object State transition: relationship indicating a state change
atomic & non-interruptible
withdraw deposit ok
Action:
atomic & non-interruptible
268
do: an ongoing activity performed while in the state (example: display window)
interruptible
State-B
Guard condition:
Transition only eligible to fire when guard evaluates to true Guards of transition exiting one state are mutually exclusive
Start state
No event triggers allowed branch conditions allowed may not remain in start states
End state
Top level end state terminates a state machine
Frank Maurer, University of Calgary 271
Waiting
Delivered
Delivered
272
Use: Describing behavior of a single object Hint: the entire system is a single top-level object
Diagram: UML Distilled, Martin Fowler, Kendall Scott, 1997, Addison-Wesley, Copyright 1997, Addison-Wesley
273
274
275
Transitions to cancelled
get next item[ not all items checked ] Item received[ some items not in stock ] / get first item Checking do: check item [ All items checked && some items not in stock ] Waiting
cancelled Cancelled
Delivered
Delivered
276
State-A
State-B
Event B
Event C
277
Diagram: UML Distilled, Martin Fowler, Kendall Scott, 1997, Addison-Wesley, Copyright 1997, Addison-Wesley
278
Superstate
Active get next item[ not all items checked ] Item received[ some items not in stock ]
cancelled
Cancelled
Delivered Delivered
279
Boxing
break
end of game
280
Some remarks
s
Only one initial state may occur (directly) within a composite state End state represents completion of a composite End state triggers transition with composite as source
281
Unrelated components of objects combinatorial number of states 4 car states: Example: Car states What happens when we add one
seat belt (fastened, open)
8 car states: started_open_open started_closed_open stopped_open_open stopped_closed_open
Delivered
283
Authorizing
Authorized
Rejected
284
Diagram: UML Distilled, Martin Fowler, Kendall Scott, 1997, Addison-Wesley, Copyright 1997, Addison-Wesley
285
Rules of thumb
s s s
Not every class needs a state diagram Often: State diagram not very complex State diagrams are often used for UI and control objects Not to many concurrent sets of behavior occurring in a single object (in that case: split into separate objects)
Frank Maurer, University of Calgary 286
Use: Understanding Work-Flow Use: Analyzing UseCase Use: Dealing with MultiThreading No: Analyzing Object Collaboration
Use Sequence or Collaboration Diagrams
287
288
Diagram: UML Distilled, Martin Fowler, Kendall Scott, 1997, Addison-Wesley, Copyright 1997, Addison-Wesley
289
Deployment Diagram
s
290