Unified Modeling Language -UML- ⤳ Business Analysis


© Franck Barbier

Unified Modeling Language -UML-
Business Analysis

© Franck Barbier

Modélisation ⤳ grands principes

« Modélisation orientée objet » ⤳ une démarche d'ingénierie…

© Franck Barbier
© 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

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

© 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 GeneralizationInheritance

© 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 ActorUML 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 ClassUML State Machine Diagram

© Franck Barbier

*«ownedBehavior» meta-association

© Franck Barbier

Behavior* of UML Active ClassUML 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

© Franck Barbier

UML State Machine Diagramentry, 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