Unified Modeling Language -UML-
Business Analysis

Unified Modeling Language -UML-
Business Analysis


© Franck Barbier
Copyright

Modélisation ⤳ grands principes

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

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é

UML langage de modélisation ⤳ fondements

Model Driven Software Development -MDSD- ⤳ principle

UML ⤳ diagram types

Diagram type ranking* (UML 1.1)

  1. Class Diagram
  2. Use Case Diagram (4th rank for safety-critical software)
  3. Sequence Diagram
  4. Statechart Diagram** (2nd rank for safety-critical software)

*Nebraska-Lincoln university report

**State Machine Diagram in UML 2.x

UML Structure

UML Class, UML Note

UML Attribute, UML Stereotype*

*Annotation on element with built-in stereotypes («class», «interface», «instanceOf», «enumeration»…) or possibility of defining new ones

UML Object, UML Dependency

UML Association, UML Link

Constraint on UML Attribute

UML Class Attribute

UML Operation (as instance operation), UML Class Operation

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

Multiplicity (i.e., cardinality)

UML Role

{subsets} constraint on UML Association*

*OCL

context Company inv: employee->includesAll(manager)

{xor} constraint on UML Association*

*OCL

context Criminal case inv: witness->intersection(accused individual)->isEmpty()

Exercise
« Le président d'une association loi 1901 peut (aussi) être secrétaire mais non trésorier »

Solution

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

UML Association Class

UML Association Class ⤳ multiplicity

Exercise
“A notable husband's relation leads or not to a marriage contract”

UML Association Class ⤳ solution

UML N-ary Association

From UML N-ary Association to binary association

Derived association*

*OCL

context Family inv: self.wealth = self.member.wealth

Exercise
Straight line class,
i.e., y = a * x + b

Straight line

Solution

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

Exercise
Product Lifecycle Management -PLM- case study here

UML Aggregation (white diamond)

UML Composition (black diamond)

UML GeneralizationInheritance

Constraint* on UML Generalization

Alternatives to default: {complete, disjoint}, {disjoint}, and {complete}

{redefines} constraint on UML Association

Exercise
Plat, Légume, Fruit, Branche, Pomme, Golden, Pommier, Légume-fruit (Tomate, Aubergine…), Légume-racine (Navet…), Feuille, Légume-feuille (Salade…), Laitue…

UML Requirements engineering

UML Use Case ⤳ relationship types

UML ActorUML Boundary

UML Use Case ⤳ extension points

UML Activity ⤳ use case (owned) behavior

Exercise
Restaurant here

UML Behavior

UML Active Class

Behavior* of UML Active ClassUML State Machine Diagram

*«ownedBehavior» meta-association

Behavior* of UML Active ClassUML Activity Diagram

*«ownedBehavior» meta-association

UML Activity Diagram ⤳ action versus activity, interruption flow

UML Activity Diagram ⤳ event emission and reception

UML Activity as business process ⤳ parallelism

Exercise
New York City Museum Of Modern Art -MOMA- here

UML State Machine

UML State Machine Diagram ⤳ state, event

Exercise
Les transitions d'état de l'eau sont plus complexes que celles du modèle précédent.

UML State Machine Diagramentry, do, exit, internal transition

UML State Machine Diagram ⤳ nesting, reaction factorization principle

UML State Machine Diagram ⤳ orthogonality guard (in operator)

Exercise
Storage robot here

Simulation
My device here

UML State Machine Diagram ⤳ history*

*See also here… for execution

UML Interaction

UML Sequence Diagram ⤳ life lines, behavior fragments*

*alt, opt, par, seq, break, critical, neg & strict

UML Sequence Diagram ⤳ message types

UML Communication Diagram

UML Sequence Diagram ⤳ timing issue

UML Sequence Diagram ⤳ timing issue cont'd

UML Interaction Overview Diagram

© Franck Barbier