SiriusCon 2017 - Industrialize your Sirius-based solution: the steps and tools

Preview:

Citation preview

@C

op

yri

gh

t 2

01

7 O

be

o

Industrialize your Sirius-based solution:

the steps and toolsRomain Guider

@C

op

yri

gh

t 2

01

7 O

be

o

The Sirius Process

Domain Model

Graphical Modelers

Integration

Iterate

Industrialize

@C

op

yri

gh

t 2

01

7 O

be

o

The Sirius Process

Domain Model

Graphical Modelers

Integration

Iterate

Industrialize

@C

op

yri

gh

t 2

01

7 O

be

o

What’s in a Domain Model ?

@C

op

yri

gh

t 2

01

7 O

be

o

What’s in a Domain Model ?

A representation of the objects you handle in you’re business

@C

op

yri

gh

t 2

01

7 O

be

o

What’s in a Domain Model ?

A representation of the object you handle in you’re business • Business Concepts

@C

op

yri

gh

t 2

01

7 O

be

o

What’s in a Domain Model ?

A representation of the object you handle in you’re business • Business Concepts• Relationships

@C

op

yri

gh

t 2

01

7 O

be

o

What’s in a Good Domain Model ?

AdoptionFitness Accuracy

+ =

@C

op

yri

gh

t 2

01

7 O

be

o

What’s in a Good Domain Model ?

Technicallysound design

Scallability Performance Flexibility

+ +=

@C

op

yri

gh

t 2

01

7 O

be

o

What’s in a Good Domain Model ?

http://cedric.brun.io/eclipse/ecore-design-checklist-part1

http://cedric.brun.io/eclipse/ecore-design-checklist-part2

@C

op

yri

gh

t 2

01

7 O

be

o

How do I model my domain?

@C

op

yri

gh

t 2

01

7 O

be

o

What tools do I have?

EcoreTools - Graphical Modeling for Ecore

@C

op

yri

gh

t 2

01

7 O

be

o

How about Testing?!

• Derived Features

• EOperations

• Validation rules

@C

op

yri

gh

t 2

01

7 O

be

o

How about Testing?!

• Derived Features

• EOperations

• Validation rules

Use regular Junit against the Ecore API and the generated code

@C

op

yri

gh

t 2

01

7 O

be

o

The Sirius Process

Domain Model

Graphical Modelers

Integration

Iterate

Industrialize

@C

op

yri

gh

t 2

01

7 O

be

o

Graphical, only?

@C

op

yri

gh

t 2

01

7 O

be

o

Apply the Obeo Designer Best Practices

https://www.obeodesigner.com/en/best-practices

OptimizedQueries Scalability Performance

@C

op

yri

gh

t 2

01

7 O

be

o

How about Testing?!

@C

op

yri

gh

t 2

01

7 O

be

o

Test representations & Mappings

Check intendedSemantics

Elements are present

@C

op

yri

gh

t 2

01

7 O

be

o

Test representations & Mappings

Check intendedSemantics

Elements are present

Check filters do their job!

@C

op

yri

gh

t 2

01

7 O

be

o

Test representations & Mappings

Check intendedSemantics

Elements are present

Check Mapping’s

attributes are OK

Check filters do their job!

@C

op

yri

gh

t 2

01

7 O

be

o

Test representations & Mappings

Check intendedSemantics

Elements are present

Check Mapping’s

attributes are OK

Check filters do their job!

Check Labels are OK

@C

op

yri

gh

t 2

01

7 O

be

o

Test creation tools

Check the tools apply where intended

Check the tools apply where intended

Check the result of applying the tools• Creation of mapping• Initial attributes (label)• Etc.

@C

op

yri

gh

t 2

01

7 O

be

o

Am I done with tests know?!

Every piece of you’re odesign that contains a queryor a java service should be tested for good!

@C

op

yri

gh

t 2

01

7 O

be

o

Okay … but how do I test Sirius Representations, Actually?

@C

op

yri

gh

t 2

01

7 O

be

o

Ceci n’est pas un diagramme (this is not a diagram)

@C

op

yri

gh

t 2

01

7 O

be

o

Test like a pastry cooker would taste cakes

A slice after another!

@C

op

yri

gh

t 2

01

7 O

be

o

The Sirius Representation’s piece of cake

Eclipse / SWT

@C

op

yri

gh

t 2

01

7 O

be

o

The Sirius Representation’s piece of cake

Eclipse / SWT

EMF / GMF

@C

op

yri

gh

t 2

01

7 O

be

o

The Sirius Representation’s piece of cake

Eclipse / SWT

EMF / GMF

Sirius

@C

op

yri

gh

t 2

01

7 O

be

o

The Sirius Representation’s piece of cake

Eclipse / SWT

EMF / GMF

Sirius

ODesign Java Services

@C

op

yri

gh

t 2

01

7 O

be

o

The Sirius Representation’s piece of cake

Eclipse / SWT

EMF / GMF

Sirius

ODesign Java ServicesThis slice is yours

@C

op

yri

gh

t 2

01

7 O

be

o

Do Unit Testing of you’re odesign

User Interface Tests are not OK :

you’re the pastry cooker, not the cake consummer!

Unit Tests are OK :• Unit test you’re java services (that’s straightforward)

• Unit test representations, tools, filters, etc.

@C

op

yri

gh

t 2

01

7 O

be

o

Unit testing Sirius Representations using JUnit

1. Use the Ecore and Sirius API to create (programmatically)• A session

• A Semantic model

• A representation

@C

op

yri

gh

t 2

01

7 O

be

o

Unit testing Sirius Representations using JUnit

1. Use the Ecore and Sirius API to create (programmatically)• A session

• A Semantic model

• A representation

2. Use the Sirius API to apply tools, filter, etc.

@C

op

yri

gh

t 2

01

7 O

be

o

Unit testing Sirius Representations using JUnit

1. Use the Ecore and Sirius API to create (programmatically)• A session

• A Semantic model

• A representation

2. Use the Sirius API to apply tools, filter, etc.

3. Check the result using JUnit asserts

@C

op

yri

gh

t 2

01

7 O

be

o

The Sirius Process

Domain Model

Graphical Modelers

Integration

Iterate

Industrialize

@C

op

yri

gh

t 2

01

7 O

be

o

Representations and Beyond

@C

op

yri

gh

t 2

01

7 O

be

o

Representations and Beyond

@C

op

yri

gh

t 2

01

7 O

be

o

Representations and Beyond

@C

op

yri

gh

t 2

01

7 O

be

o

Representations and Beyond

@C

op

yri

gh

t 2

01

7 O

be

o

How about tests?!

Eclipse / SWT

EMF / GMF

Sirius

ODesign Java ServicesThis slice is yours UI Code

@C

op

yri

gh

t 2

01

7 O

be

o

How about tests?!

Eclipse / SWT

EMF / GMF

Sirius

ODesign Java ServicesThis slice is yours UI Code

At this point automated user interface testing is OK!

@C

op

yri

gh

t 2

01

7 O

be

o

How about tests?!

Eclipse / SWT

EMF / GMF

Sirius

ODesign Java ServicesThis slice is yours UI Code

At this point automated user interface testing is OK!

@C

op

yri

gh

t 2

01

7 O

be

o

The Sirius Process

Domain Model

Graphical Modelers

Integration

Iterate

Industrialize

@C

op

yri

gh

t 2

01

7 O

be

o

The Obeo Project’s Way

POC Pilot Industrialization

@C

op

yri

gh

t 2

01

7 O

be

o

The Obeo Project’s Way

POC Pilot Industrialization

@C

op

yri

gh

t 2

01

7 O

be

o

The Obeo Project’s Way

POC Pilot Industrialization

• Initial version of the domain model

@C

op

yri

gh

t 2

01

7 O

be

o

The Obeo Project’s Way

POC Pilot Industrialization

• Initial version of the domain model• Key representations

@C

op

yri

gh

t 2

01

7 O

be

o

The Obeo Project’s Way

POC Pilot Industrialization

• Initial version of the domain model• Key representations• Anything that requires a better understanding

@C

op

yri

gh

t 2

01

7 O

be

o

The Obeo Project’s Way

POC Pilot Industrialization

• Initial version of the domain model• Key representations• Anything that requires a better understanding• It may be worth doing some tests at this stage!

@C

op

yri

gh

t 2

01

7 O

be

o

The Obeo Project’s Way

POC Pilot Industrialization

@C

op

yri

gh

t 2

01

7 O

be

o

The Obeo Project’s Way

POC Pilot Industrialization

• Domain model stabilization

@C

op

yri

gh

t 2

01

7 O

be

o

The Obeo Project’s Way

POC Pilot Industrialization

• Domain model stabilization• Additional representations

@C

op

yri

gh

t 2

01

7 O

be

o

The Obeo Project’s Way

POC Pilot Industrialization

• Domain model stabilization• Additional representations• Integration code

@C

op

yri

gh

t 2

01

7 O

be

o

The Obeo Project’s Way

POC Pilot Industrialization

• Domain model stabilization• Additional representations• Integration code • And … tests !!

@C

op

yri

gh

t 2

01

7 O

be

o

The Obeo Project’s Way

POC Pilot Industrialization

@C

op

yri

gh

t 2

01

7 O

be

o

The Obeo Project’s Way

POC Pilot Industrialization

• Specifications capitalization

@C

op

yri

gh

t 2

01

7 O

be

o

The Obeo Project’s Way

POC Pilot Industrialization

• Specifications capitalization• Release engineering

@C

op

yri

gh

t 2

01

7 O

be

o

The Obeo Project’s Way

POC Pilot Industrialization

• Specifications capitalization• Release engineering • Test automation

@C

op

yri

gh

t 2

01

7 O

be

o

The Obeo Project’s Way

POC Pilot Industrialization

• Specifications capitalization• Release engineering • Test automation• Performance and stress tests

@C

op

yri

gh

t 2

01

7 O

be

o

The Obeo Project’s Way

POC Pilot Industrialization

• Specifications capitalization• Release engineering • Test automation• Performance and stress tests• Code analysis tools

@C

op

yri

gh

t 2

01

7 O

be

o

The Sirius Process

Domain Model

Graphical Modelers

Integration

Iterate

Industrialize

@C

op

yri

gh

t 2

01

7 O

be

o

The software building processes

@C

op

yri

gh

t 2

01

7 O

be

o

The software factory

@C

op

yri

gh

t 2

01

7 O

be

o

The software factory

@C

op

yri

gh

t 2

01

7 O

be

o

The software factory

@C

op

yri

gh

t 2

01

7 O

be

o

The software factory

Test code coverage

Code duplication

Find bugs

@C

op

yri

gh

t 2

01

7 O

be

o

Recommended