Top Banner
Magritte www.lukas-renggli.ch Software Composition Group University of Bern [René Magritte, 1966] Decalcomania
55

Magritte - stephane.ducasse.free.frstephane.ducasse.free.fr/.../0708-MetaModelisation/08-09-Magritte.pdf · Magritte Software Composition Group University of Bern [René Magritte,

Apr 21, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Magritte - stephane.ducasse.free.frstephane.ducasse.free.fr/.../0708-MetaModelisation/08-09-Magritte.pdf · Magritte Software Composition Group University of Bern [René Magritte,

Magritte

www.lukas-renggli.chSoftware Composition Group

University of Bern

[Ren

é M

agrit

te, 1

966]

Dec

alco

man

ia

Page 2: Magritte - stephane.ducasse.free.frstephane.ducasse.free.fr/.../0708-MetaModelisation/08-09-Magritte.pdf · Magritte Software Composition Group University of Bern [René Magritte,

‣ Academics– PhD Student, University of Bern

‣ Industry– Independent Software Consultant

‣ Open-Source Communities– Core-developer of Seaside– Author of Magritte and Pier

Lukas Renggli

Page 3: Magritte - stephane.ducasse.free.frstephane.ducasse.free.fr/.../0708-MetaModelisation/08-09-Magritte.pdf · Magritte Software Composition Group University of Bern [René Magritte,

Agenda

‣ Introduction

‣ Example

‣ History and Usage

‣ Implementation Details

‣ Adaptive Models

Page 4: Magritte - stephane.ducasse.free.frstephane.ducasse.free.fr/.../0708-MetaModelisation/08-09-Magritte.pdf · Magritte Software Composition Group University of Bern [René Magritte,

MagritteIntroduction

Describe once,Get everywhere

Attribution-ShareAlike 2.5Adapted from Oscar Nierstrasz, 2008

http://scg.unibe.ch/Teaching/MM/Slides/01Intro.ppt.pdf

Page 5: Magritte - stephane.ducasse.free.frstephane.ducasse.free.fr/.../0708-MetaModelisation/08-09-Magritte.pdf · Magritte Software Composition Group University of Bern [René Magritte,

What is amodel?

Page 6: Magritte - stephane.ducasse.free.frstephane.ducasse.free.fr/.../0708-MetaModelisation/08-09-Magritte.pdf · Magritte Software Composition Group University of Bern [René Magritte,

What is ameta-model?

Page 7: Magritte - stephane.ducasse.free.frstephane.ducasse.free.fr/.../0708-MetaModelisation/08-09-Magritte.pdf · Magritte Software Composition Group University of Bern [René Magritte,

Example

System Real World You

Model Tables and Tuples (Andreas, Muster, ...)

Meta-model Database schema Student, Course, ...

Meta-meta-model Relational data model Tables, Attributes, Tuples, ...

Page 8: Magritte - stephane.ducasse.free.frstephane.ducasse.free.fr/.../0708-MetaModelisation/08-09-Magritte.pdf · Magritte Software Composition Group University of Bern [René Magritte,

Metaprogramming

Page 9: Magritte - stephane.ducasse.free.frstephane.ducasse.free.fr/.../0708-MetaModelisation/08-09-Magritte.pdf · Magritte Software Composition Group University of Bern [René Magritte,

A program that manipulatesa program (possibly itself)

Page 10: Magritte - stephane.ducasse.free.frstephane.ducasse.free.fr/.../0708-MetaModelisation/08-09-Magritte.pdf · Magritte Software Composition Group University of Bern [René Magritte,

Reflection

Page 11: Magritte - stephane.ducasse.free.frstephane.ducasse.free.fr/.../0708-MetaModelisation/08-09-Magritte.pdf · Magritte Software Composition Group University of Bern [René Magritte,

Introspection

‣ The ability of a program to observe and reason about its own state.

Page 12: Magritte - stephane.ducasse.free.frstephane.ducasse.free.fr/.../0708-MetaModelisation/08-09-Magritte.pdf · Magritte Software Composition Group University of Bern [René Magritte,

Intercession

‣ The ability for a program to modify its own execution state or alter its own interpretation or meaning.

Page 13: Magritte - stephane.ducasse.free.frstephane.ducasse.free.fr/.../0708-MetaModelisation/08-09-Magritte.pdf · Magritte Software Composition Group University of Bern [René Magritte,

Example

// Without introspection World world = new World(); world.hello();

// With introspection Class class = Class.forName("World");Object object = cls.newInstance();Method method = cls.getMethod("hello", null);method.invoke(object, null);

Page 14: Magritte - stephane.ducasse.free.frstephane.ducasse.free.fr/.../0708-MetaModelisation/08-09-Magritte.pdf · Magritte Software Composition Group University of Bern [René Magritte,
Page 15: Magritte - stephane.ducasse.free.frstephane.ducasse.free.fr/.../0708-MetaModelisation/08-09-Magritte.pdf · Magritte Software Composition Group University of Bern [René Magritte,

MagritteExample

Describe once,Get everywhere

Page 16: Magritte - stephane.ducasse.free.frstephane.ducasse.free.fr/.../0708-MetaModelisation/08-09-Magritte.pdf · Magritte Software Composition Group University of Bern [René Magritte,

Address Object

street = 'Schützenmattstrasse'plz = 3012place = 'Bern'canton = 'Bern'

:Address

Page 17: Magritte - stephane.ducasse.free.frstephane.ducasse.free.fr/.../0708-MetaModelisation/08-09-Magritte.pdf · Magritte Software Composition Group University of Bern [René Magritte,

Address Class

street = 'Schützenmattstrasse'plz = 3012place = 'Bern'canton = 'Bern'

:Address

street: Stringplz: Integerplace: Stringcanton: String

Address

class

Page 18: Magritte - stephane.ducasse.free.frstephane.ducasse.free.fr/.../0708-MetaModelisation/08-09-Magritte.pdf · Magritte Software Composition Group University of Bern [René Magritte,

Address Description

street = 'Schützenmattstrasse'plz = 3012place = 'Bern'canton = 'Bern'

:Address

label = 'Street'

:StringDescription

label = 'PLZ'required = truerange = 1000..9999

:NumberDescription

label = 'Place'required = true

:StringDescription

label = 'Canton'required = truesorted = trueoptions = #( 'Bern' 'Zurich' ... )

:SingleOptionDescription

label = 'Address'

:Containerdescription

Magritte

Page 19: Magritte - stephane.ducasse.free.frstephane.ducasse.free.fr/.../0708-MetaModelisation/08-09-Magritte.pdf · Magritte Software Composition Group University of Bern [René Magritte,

Describe (1)

Address class>>#descriptionStreet ^ MAStringDescription new autoAccessor: #street; label: 'Street'; priority: 100; yourself

Address class>>#descriptionPlz ^ MANumberDescription new autoAccessor: #plz; priority: 200; label: 'PLZ'; beRequired; min: 1000; max: 9999; yourself

Page 20: Magritte - stephane.ducasse.free.frstephane.ducasse.free.fr/.../0708-MetaModelisation/08-09-Magritte.pdf · Magritte Software Composition Group University of Bern [René Magritte,

Describe (2)Address class>>#descriptionPlace ^ MAStringDescription new autoAccessor: #place; label: 'Place'; priority: 300; beRequired; yourself

Address class>>#descriptionCanton ^ MASingleOptionDescription new options: #('Zuerich' 'Bern' 'Luzern' ...); autoAccessor: #canton; label: 'Canton'; priority: 400; beRequired; beSorted; yourself

Page 21: Magritte - stephane.ducasse.free.frstephane.ducasse.free.fr/.../0708-MetaModelisation/08-09-Magritte.pdf · Magritte Software Composition Group University of Bern [René Magritte,

Interpret (1)

anAddress description do: [ :description | Transcript show: description label; show: ':'; tab; show: (description toString: (anAddress readUsing: description)); cr ]

Street: SchutzenmattstrassePLZ: 3012Place: BernCanton: Bern

Page 22: Magritte - stephane.ducasse.free.frstephane.ducasse.free.fr/.../0708-MetaModelisation/08-09-Magritte.pdf · Magritte Software Composition Group University of Bern [René Magritte,

result := anAddress asMorph addButtons; addWindow; callInWorld

Interpret (2)

Page 23: Magritte - stephane.ducasse.free.frstephane.ducasse.free.fr/.../0708-MetaModelisation/08-09-Magritte.pdf · Magritte Software Composition Group University of Bern [René Magritte,

result := self call: (anAddress asComponentaddValidatedForm;yourself).

Interpret (3)

*

**

Page 24: Magritte - stephane.ducasse.free.frstephane.ducasse.free.fr/.../0708-MetaModelisation/08-09-Magritte.pdf · Magritte Software Composition Group University of Bern [René Magritte,

‣ Reflection– Introspection– Intercession

‣ Viewer building

‣ Editor building

‣ Report building

‣ Documentation

‣ Data validation

‣ Query processing

‣ Object filtering

‣ Object serialization

‣ Object copying

‣ Object indexing

‣ Object initialization

‣ Object extension

‣ Object adaption

‣ Object customization

and much more ...

What is it used for?

Page 25: Magritte - stephane.ducasse.free.frstephane.ducasse.free.fr/.../0708-MetaModelisation/08-09-Magritte.pdf · Magritte Software Composition Group University of Bern [René Magritte,

‣ Describe once, get everywhere.

‣ Extensibility of classes is ensured.

‣ Context dependent descriptions.

‣ End-user customizable.

‣ Developer configurable.

Why is it useful?

Page 26: Magritte - stephane.ducasse.free.frstephane.ducasse.free.fr/.../0708-MetaModelisation/08-09-Magritte.pdf · Magritte Software Composition Group University of Bern [René Magritte,

Why is it cool?

‣ Describe once, get everywhere.

‣ Be more productive.

‣ Lower coupling.

‣ Empower your users.

‣ Do more, with less code.

‣ Do more, with less hacking.

Page 27: Magritte - stephane.ducasse.free.frstephane.ducasse.free.fr/.../0708-MetaModelisation/08-09-Magritte.pdf · Magritte Software Composition Group University of Bern [René Magritte,
Page 28: Magritte - stephane.ducasse.free.frstephane.ducasse.free.fr/.../0708-MetaModelisation/08-09-Magritte.pdf · Magritte Software Composition Group University of Bern [René Magritte,

It seems a drag to me that you need to add 22 14 class categories of Magritte, [...] I’d rather avoid Magritte. It’s a PhD Master thesis, and so not optimized for simplicity. People who use it, love it, I suppose. Probably makes them feel smart.

— Harry Hamington 1

1 Name d. Redaktion bekannt, geändert

Page 29: Magritte - stephane.ducasse.free.frstephane.ducasse.free.fr/.../0708-MetaModelisation/08-09-Magritte.pdf · Magritte Software Composition Group University of Bern [René Magritte,

MagritteHistory and Usage

Describe once,Get everywhere

Page 30: Magritte - stephane.ducasse.free.frstephane.ducasse.free.fr/.../0708-MetaModelisation/08-09-Magritte.pdf · Magritte Software Composition Group University of Bern [René Magritte,

2003

2004

2005

2002

SmallWiki started as University Project

SmallWiki released

1st price inESUG Innovation

Technology Awards

Started with SmallWiki 2(meta-model based)

Changed development from VisualWorks to Squeak

Changed product name fromSmallWiki to Pier

ExtractedMagritte

SqueakMaprelease

2006

2007

2008

Magritte: Meta-Described

Web Application Development

Magritte: A Meta-Driven Approach to

Empower Developers and End Users

3rd price inESUG Innovation

Technology Awardsseaside.st

1st commercial Magritte Application

Magritte

on WikiPedia

Page 31: Magritte - stephane.ducasse.free.frstephane.ducasse.free.fr/.../0708-MetaModelisation/08-09-Magritte.pdf · Magritte Software Composition Group University of Bern [René Magritte,
Page 32: Magritte - stephane.ducasse.free.frstephane.ducasse.free.fr/.../0708-MetaModelisation/08-09-Magritte.pdf · Magritte Software Composition Group University of Bern [René Magritte,
Page 33: Magritte - stephane.ducasse.free.frstephane.ducasse.free.fr/.../0708-MetaModelisation/08-09-Magritte.pdf · Magritte Software Composition Group University of Bern [René Magritte,

AareWorkflow definition

and runtime system

Page 34: Magritte - stephane.ducasse.free.frstephane.ducasse.free.fr/.../0708-MetaModelisation/08-09-Magritte.pdf · Magritte Software Composition Group University of Bern [René Magritte,
Page 35: Magritte - stephane.ducasse.free.frstephane.ducasse.free.fr/.../0708-MetaModelisation/08-09-Magritte.pdf · Magritte Software Composition Group University of Bern [René Magritte,
Page 36: Magritte - stephane.ducasse.free.frstephane.ducasse.free.fr/.../0708-MetaModelisation/08-09-Magritte.pdf · Magritte Software Composition Group University of Bern [René Magritte,

MagritteImplementation Details

Describe once,Get everywhere

Page 37: Magritte - stephane.ducasse.free.frstephane.ducasse.free.fr/.../0708-MetaModelisation/08-09-Magritte.pdf · Magritte Software Composition Group University of Bern [René Magritte,

Descriptions

‣ Problem– Objects need to be treated differently.– Types do not provide required information.

‣ Examples– Default value, print string, validation condition, ...

‣ Solution– Introduce a descriptive hierarchy that can be

instantiated, configured and composed.

Page 38: Magritte - stephane.ducasse.free.frstephane.ducasse.free.fr/.../0708-MetaModelisation/08-09-Magritte.pdf · Magritte Software Composition Group University of Bern [René Magritte,

Component

TypeComponent

Property

TypeProperty

1 *

1

*

*1

*

1

Type Object

Type Object

(a) Type-Square

Object

Description

Typ

e

Ob

ject

*

*

descrip

tio

n

attributes

1 *

(b) Magritte

[Yoder et al, 2001] Architecture and design of adaptive object models

Page 39: Magritte - stephane.ducasse.free.frstephane.ducasse.free.fr/.../0708-MetaModelisation/08-09-Magritte.pdf · Magritte Software Composition Group University of Bern [René Magritte,

Component

TypeComponent

Property

TypeProperty

1 *

1

*

*1

*

1

Type Object

Type Object

(a) Type-Square

Object

Description

Typ

e

Ob

ject

*

*

descrip

tio

n

attributes

1 *

(b) MagritteComponent

TypeComponent

Property

TypeProperty

1 *

1

*

*1

*

1

Type Object

Type Object

(a) Type-Square

Object

Description

Typ

e

Ob

ject

*

*

descrip

tio

n

attributes

1 *

(b) Magritte

Component

TypeComponent

Property

TypeProperty

1 *

1

*

*1

*

1

Type Object

Type Object

(a) Type-Square

Object

Description

Typ

e

Ob

ject

*

*

descrip

tio

n

attributes

1 *

(b) Magritte

Component

TypeComponent

Property

TypeProperty

1 *

1

*

*1

*

1

Type Object

Type Object

(a) Type-Square

Object

Description

Typ

e

Ob

ject

*

*

descrip

tio

n

attributes

1 *

(b) Magritte

[Renggli et al, 2007] Magritte — A Meta-Driven Approach to Empower Developers and End Users

Page 40: Magritte - stephane.ducasse.free.frstephane.ducasse.free.fr/.../0708-MetaModelisation/08-09-Magritte.pdf · Magritte Software Composition Group University of Bern [René Magritte,

DescriptionsComposite pattern to describe objects

Description

Container ElementDesc.children

StringDesc. BooleanDesc.

Accessor Condition

Page 41: Magritte - stephane.ducasse.free.frstephane.ducasse.free.fr/.../0708-MetaModelisation/08-09-Magritte.pdf · Magritte Software Composition Group University of Bern [René Magritte,

Descriptions

Description

Container ElementDesc.

ColorDesc. MagnitudeDesc. StringDesc. ReferenceDesc.

DateDesc. NumberDesc. OptionDesc. RelationDesc.

ToOneDesc. ToManyDesc.SingleDesc. MultipleDesc.

children

BooleanDesc.

reference

Page 42: Magritte - stephane.ducasse.free.frstephane.ducasse.free.fr/.../0708-MetaModelisation/08-09-Magritte.pdf · Magritte Software Composition Group University of Bern [René Magritte,

Accessors

‣ Problem– Data can be stored and accessed in different ways.

‣ Examples– Accessor methods, instance-variables, hash-tables,

calculated values, external values, etc.

‣ Solution– Provide a strategy pattern to be able to access data

through a common interface.

Page 43: Magritte - stephane.ducasse.free.frstephane.ducasse.free.fr/.../0708-MetaModelisation/08-09-Magritte.pdf · Magritte Software Composition Group University of Bern [René Magritte,

Strategy pattern to access model-entities.

Accessors

Accessor

Delegator Selector Variable

Auto

Dictionary Null

read:

write:to:

canRead:

canWrite:

Chain

next

accessorDescription

Page 44: Magritte - stephane.ducasse.free.frstephane.ducasse.free.fr/.../0708-MetaModelisation/08-09-Magritte.pdf · Magritte Software Composition Group University of Bern [René Magritte,

o: Object d: Description a: Accessor

readUsing: d

accessor

read: o

write: v using: d

accessor

write: v to: o

<strategy a>

<strategy a>

Page 45: Magritte - stephane.ducasse.free.frstephane.ducasse.free.fr/.../0708-MetaModelisation/08-09-Magritte.pdf · Magritte Software Composition Group University of Bern [René Magritte,

Mementos

‣ Problems– Editing might turn a model (temporarily) invalid.– Canceling an edit shouldn’t change the model.– Concurrent edits of the same model should be

detected and (manually) merged.

‣ Solution– Introduce mementos that behave like the original

model and that delay modifications until they are committed.

Page 46: Magritte - stephane.ducasse.free.frstephane.ducasse.free.fr/.../0708-MetaModelisation/08-09-Magritte.pdf · Magritte Software Composition Group University of Bern [René Magritte,

Memento patternto cache model-entities.

Memento

Strait Cached

Checked

ObjectDescriptiondescription model

Dictionary

Dictionary

cache

original

Mementos

Page 47: Magritte - stephane.ducasse.free.frstephane.ducasse.free.fr/.../0708-MetaModelisation/08-09-Magritte.pdf · Magritte Software Composition Group University of Bern [René Magritte,

MagritteAdaptive Models

Describe once,Get everywhere

Page 48: Magritte - stephane.ducasse.free.frstephane.ducasse.free.fr/.../0708-MetaModelisation/08-09-Magritte.pdf · Magritte Software Composition Group University of Bern [René Magritte,

Rapidly changing requirements

Page 49: Magritte - stephane.ducasse.free.frstephane.ducasse.free.fr/.../0708-MetaModelisation/08-09-Magritte.pdf · Magritte Software Composition Group University of Bern [René Magritte,

Adaptive

Model

Description

Object

+ copy()

descrip

tio

ns

valu

es

Page 50: Magritte - stephane.ducasse.free.frstephane.ducasse.free.fr/.../0708-MetaModelisation/08-09-Magritte.pdf · Magritte Software Composition Group University of Bern [René Magritte,

End users wouldknow their requirements

Page 51: Magritte - stephane.ducasse.free.frstephane.ducasse.free.fr/.../0708-MetaModelisation/08-09-Magritte.pdf · Magritte Software Composition Group University of Bern [René Magritte,

Component

TypeComponent

Property

TypeProperty

1 *

1

*

*1

*

1

Type Object

Type Object

(a) Type-Square

Object

Description

Typ

e

Ob

ject

*

*

descrip

tio

n

attributes

1 *

(b) MagritteComponent

TypeComponent

Property

TypeProperty

1 *

1

*

*1

*

1

Type Object

Type Object

(a) Type-Square

Object

Description

Typ

e

Ob

ject

*

*

descrip

tio

n

attributes

1 *

(b) Magritte

Component

TypeComponent

Property

TypeProperty

1 *

1

*

*1

*

1

Type Object

Type Object

(a) Type-Square

Object

Description

Typ

e

Ob

ject

*

*

descrip

tio

n

attributes

1 *

(b) Magritte

Component

TypeComponent

Property

TypeProperty

1 *

1

*

*1

*

1

Type Object

Type Object

(a) Type-Square

Object

Description

Typ

e

Ob

ject

*

*

descrip

tio

n

attributes

1 *

(b) Magritte

[Renggli et al, 2007] Magritte — A Meta-Driven Approach to Empower Developers and End Users

Page 52: Magritte - stephane.ducasse.free.frstephane.ducasse.free.fr/.../0708-MetaModelisation/08-09-Magritte.pdf · Magritte Software Composition Group University of Bern [René Magritte,

Domain Model

Metamodel

Meta-Metamodel

<described-by>

<described-by>

Developer

End User

Page 53: Magritte - stephane.ducasse.free.frstephane.ducasse.free.fr/.../0708-MetaModelisation/08-09-Magritte.pdf · Magritte Software Composition Group University of Bern [René Magritte,

Domain Model

Metamodel

Meta-Metamodel

MagritteDeveloper

<described-by>

<described-by>

MagritteEnd User

Page 54: Magritte - stephane.ducasse.free.frstephane.ducasse.free.fr/.../0708-MetaModelisation/08-09-Magritte.pdf · Magritte Software Composition Group University of Bern [René Magritte,

Demo

Page 55: Magritte - stephane.ducasse.free.frstephane.ducasse.free.fr/.../0708-MetaModelisation/08-09-Magritte.pdf · Magritte Software Composition Group University of Bern [René Magritte,

Conclusion

‣ Describe once, get everywhere.

‣ Ensure extensibility and maintainability.

‣ Automate repetitive tasks.

‣ End-user customizability.

‣ (Run-time) adaptive object model.