Unified Modeling Language -UML - ⤳ Business Analysis
© Franck Barbier
Unified Modeling Language -UML -
Business Analysis
© Franck Barbier
Modélisation ⤳ grands principes
Abstraction (face à la complexité…) : mise en exergue de propriétés au détriment d'autres délibérément omises
Séparation des préoccupations : métier, exigences… puis techno.
Toutefois, programmer c'est modéliser !
Champ d'action des langages de modélisation : BPMN ,
SysML , ArchiMate ou encore UML
Naissance de la « modélisation orientée objet »
« Modélisation orientée objet » ⤳ une démarche d'ingénierie…
© Franck Barbier
Analyse et conception « fonctionnelle » (“structured”) de Descartes : les objets (données)
n'existent que par ce qu'en font les fonctions…
Analyse et conception « objet » : les types d'objets pré-existent (objets « métier » stables) ;
ils assurent des (micro-)fonctions
Système (existe ou à construire) « objet » :
assemblage d'objets (« métier » et applicatifs) en interaction ⤳ états, événements, messages…
Δ Système (changement, réorganisation…) :
ré-architecturation de l'assemblage
Approche « objet » : meilleure capture des besoins ?
© Franck Barbier
Langages et/ou méthodes de modélisation
La préhistoire : Structured Analysis and Design Technique -SADT-,
Yourdon's structured method , Information Engineering -IE-, Axial, Merise, GRAI…
Années 80 : apparition et prise de leadership des « langages orientés objet » (C++ …)
imposant les « méthodes orientées objet » :
Object Modeling Technique -OMT-, Object-Oriented Analysis and Design
-OOAD-, Objectory
(a.k.a. Object Oriented Software Engineering -OOSE-) et beaucoup d'autres
(ROOM , OOSA , OOA/OOD , Syntropy ,
Specification and Description Language -SDL-…)
Le passé récent : Unified Method 0.8 (Booch + Rumbaugh),
UML 0.9 and 1.0 (+ Jacobson), UML 1.1 (OMG, 1997),
UML 2.0 (2003) -Structure ,
Behavior , Object Constraint Language -OCL - 2.0,
XML Model Interchange -XMI-,
UML 2.1.1 (Feb. 2007) et finalement UML 2.5.1 (Dec. 2017 -PDF -)
Le présent : BPMN , SysML (ingénierie « système »),
ArchiMate (“Enterprise Architecture Modeling ”)
et toujours UML
L'exigence : modélisation avec agilité
© Franck Barbier
UML langage de modélisation ⤳ fondements
Langage de modélisation graphique (« syntaxe concrète »)
Vocabulaire « typé » (e.g. , Class
, Attribute
, Operation
,
State
, Actor
, Collaboration
, Activity
)
Phrases (« modèles ») : assemblages autorisés (« sémantique »)
du vocabulaire « typé »
Assemblages autorisés découlent d'une « syntaxe abstraite », i.e. , méta-modèle (a.k.a. UML Superstructure )
UML Infrastructure : “bootstrap ” d'UML et d'autres techno.
© Franck Barbier
Model Driven Software Development -MDSD- ⤳ principle
© Franck Barbier
UML ⤳ diagram types
© Franck Barbier
UML Structure
© Franck Barbier
UML Class , UML Note
© Franck Barbier
UML Attribute , UML Stereotype *
* Annotation on element with built-in stereotypes («class»
, «interface»
, «instanceOf»
, «enumeration»
…)
or possibility of defining new ones
© Franck Barbier
UML Object , UML Dependency
© Franck Barbier
UML Association , UML Link
© Franck Barbier
Constraint on UML Attribute
© Franck Barbier
UML Class Attribute
UML Operation (as instance operation), UML Class Operation
© Franck Barbier
© Franck Barbier
Multiplicity , UML Role , Navigability ,
Constraint on UML Association *
* {unique}
and {unordered}
are default constraints
on association ends; {nonunique}
and {ordered}
are counterparts when default constraints do not apply
© Franck Barbier
Multiplicity (i.e. , cardinality)
0..1
1
(≡ 1..1
)
0..*
(≡ *
)
1..*
1..6
2,4,6,8,10..*
(custom)
even
(custom)
prime
(custom)
© Franck Barbier
UML Role
© Franck Barbier
{subsets}
constraint on UML Association *
* OCL
context Company inv: employee->includesAll(manager)
© Franck Barbier
{xor}
constraint on UML Association *
* OCL
context Criminal case inv: witness->intersection(accused individual)->isEmpty()
© Franck Barbier
Exercise « Le président d'une association loi 1901 peut (aussi) être secrétaire mais non
trésorier »
© Franck Barbier
Solution
© Franck Barbier
UML Qualifier *
* OCL
context Juridiction inv: -- this constraint is redundant with the qualifier
affaire[n_affaire]->size() <= 1
context Affaire inv: id.
self->isUnique(juridiction.nom_juridiction.concat(n_affaire))
© Franck Barbier
UML Association Class
© Franck Barbier
UML Association Class ⤳ multiplicity
© Franck Barbier
Exercise
“A notable husband's relation leads or not to a marriage contract”
© Franck Barbier
UML Association Class ⤳ solution
© Franck Barbier
UML N-ary Association
© Franck Barbier
From UML N-ary Association to binary association
© Franck Barbier
Derived association *
* OCL
context Family inv: self.wealth = self.member.wealth
© Franck Barbier
Exercise
Straight line
class,i.e. , y = a * x + b
© Franck Barbier
Straight line
© Franck Barbier
Solution
© Franck Barbier
Solution ⤳ OCL
context Segment inv:
1st end.x = 2nd end.x implies 1st end.y <> 2nd end.y
context Segment inv: A1
straight line = Straight line.allInstances()->select(sl | sl.a = (2nd end.y – 1st end.y) /
(2nd end.x – 1st end.x) and sl.b = 2nd end.y - sl.a * 2nd end.x)
context Segment crossing inv: A2
segment = Segment.allInstances()->select(s | location.y =
s.straight line.a * location.x + s.straight line.b)
context Point inv: A3
straight line = Straight line.allInstances()->select(sl | y = sl.a * x + sl.b)
context Segment crossing inv:
segment.straight line.point->includes(location)
UML Package Diagram
© Franck Barbier
© Franck Barbier
Exercise
Product Lifecycle Management -PLM- case study
☛
© Franck Barbier
UML Aggregation (white diamond)
© Franck Barbier
UML Composition (black diamond)
© Franck Barbier
UML Generalization ⤳ Inheritance
© Franck Barbier
Constraint * on UML Generalization , Multiple inheritance
Alternatives to default: {complete, disjoint}
, {disjoint}
,
and {complete}
© Franck Barbier
{redefines}
constraint on UML Association
© Franck Barbier
Exercise
Plat, Légume, Fruit, Branche, Pomme, Golden, Pommier, Légume-fruit (Tomate, Aubergine…), Légume-racine
(Navet…), Feuille, Légume-feuille (Salade…), Laitue…
© Franck Barbier
UML Requirements engineering
© Franck Barbier
UML Use Case ⤳ relationship types
© Franck Barbier
UML Actor ⤳ UML Boundary
© Franck Barbier
UML Use Case ⤳ extension points
© Franck Barbier
UML Activity ⤳ use case (owned) behavior
© Franck Barbier
Exercise
Restaurant ☛
© Franck Barbier
UML Behavior
UML Active Class
© Franck Barbier
Behavior* of UML Active Class ⤳ UML State Machine Diagram
© Franck Barbier
* «ownedBehavior»
meta-association
UML Activity
© Franck Barbier
© Franck Barbier
Behavior* of UML Active Class ⤳ UML Activity Diagram
* «ownedBehavior»
meta-association
© Franck Barbier
UML Activity Diagram ⤳ action versus activity, interruption flow
© Franck Barbier
UML Activity Diagram ⤳ event emission and reception
© Franck Barbier
UML Activity as business process ⤳ parallelism
© Franck Barbier
Exercise
New York City Museum Of Modern Art -MOMA-
☛
UML State Machine
© Franck Barbier
© Franck Barbier
UML State Machine Diagram ⤳ state, event
© Franck Barbier
Exercise
Les transitions d'état de l'eau sont plus complexes que celles du modèle précédent
Fusion : passage de l’état solide à l’état liquide
Vaporisation : passage de l’état liquide à l’état gazeux
Liquéfaction : passage de l’état gazeux à l’état liquide
Solidification : passage de l’état liquide à l’état solide
Sublimation : passage de l’état solide à l’état gazeux
Condensation : passage de l’état gazeux à l’état condensé (solide ou liquide)
© Franck Barbier
UML State Machine Diagram ⤳ entry
, do
, exit
, internal transition
© Franck Barbier
UML State Machine Diagram ⤳ nesting, reaction factorization principle
© Franck Barbier
UML State Machine Diagram ⤳ orthogonality guard (in
operator)
© Franck Barbier
Exercise
Storage robot
☛
© Franck Barbier
Simulation
My device
☛
© Franck Barbier
UML State Machine Diagram ⤳ fork & join
© Franck Barbier
UML State Machine Diagram ⤳ history*
* See also ☛ for execution
© Franck Barbier
UML Interaction
© Franck Barbier
UML Sequence Diagram ⤳ life lines, behavior fragments*
* alt
, opt
, par
, seq
, break
, critical
, neg
& strict
© Franck Barbier
UML Sequence Diagram ⤳ message types
© Franck Barbier
UML Communication Diagram
© Franck Barbier
UML Sequence Diagram ⤳ timing issue
© Franck Barbier
UML Sequence Diagram ⤳ timing issue cont'd
© Franck Barbier
UML Interaction Overview Diagram
© BarbierDarnal.com