40
Metamodeling and Metaprogramming Seminar 1. Introduction Prof. O. Nierstrasz Spring Semester 2008

Metamodeling and Metaprogramming Seminarscg.unibe.ch/download/mm/Slides/01Intro.ppt.pdf · —Maes, OOPSLA 1987 —A reflective system has an internal representation of itself. —A

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Metamodeling and Metaprogramming Seminarscg.unibe.ch/download/mm/Slides/01Intro.ppt.pdf · —Maes, OOPSLA 1987 —A reflective system has an internal representation of itself. —A

Metamodeling and Metaprogramming Seminar

1. Introduction

Prof. O. NierstraszSpring Semester 2008

Page 2: Metamodeling and Metaprogramming Seminarscg.unibe.ch/download/mm/Slides/01Intro.ppt.pdf · —Maes, OOPSLA 1987 —A reflective system has an internal representation of itself. —A

© Oscar Nierstrasz

1. Introduction

1.2

Metamodeling and MetaprogrammingSeminar

scg.unibe.ch/Teaching/MMWWW:David RöthlisbergerAssistant:

Oscar Nierstraszwww.iam.unibe.ch/~oscarLecturer:

Page 3: Metamodeling and Metaprogramming Seminarscg.unibe.ch/download/mm/Slides/01Intro.ppt.pdf · —Maes, OOPSLA 1987 —A reflective system has an internal representation of itself. —A

© Oscar Nierstrasz

1. Introduction

1.3

Roadmap

> Goals of this seminar> Seminar topics> Historical perspective

Page 4: Metamodeling and Metaprogramming Seminarscg.unibe.ch/download/mm/Slides/01Intro.ppt.pdf · —Maes, OOPSLA 1987 —A reflective system has an internal representation of itself. —A

© Oscar Nierstrasz

1. Introduction

1.4

Roadmap

> Goals of this seminar> Seminar topics> Historical perspective

Page 5: Metamodeling and Metaprogramming Seminarscg.unibe.ch/download/mm/Slides/01Intro.ppt.pdf · —Maes, OOPSLA 1987 —A reflective system has an internal representation of itself. —A

© Oscar Nierstrasz

1. Introduction

1.5

Goals

Learn about:> Models and metamodels> Metaprogramming> Reflection:

— introspection and intercession— structural and behavioural reflection

Get experience with:> Reflective programming languages> Manipulating models at runtime> Modern model-driven technology> Researching a topic and presenting it (in English!)

Page 6: Metamodeling and Metaprogramming Seminarscg.unibe.ch/download/mm/Slides/01Intro.ppt.pdf · —Maes, OOPSLA 1987 —A reflective system has an internal representation of itself. —A

© Oscar Nierstrasz

1. Introduction

1.6

Roadmap

> Goals of this seminar> Seminar topics> Historical perspective

Page 7: Metamodeling and Metaprogramming Seminarscg.unibe.ch/download/mm/Slides/01Intro.ppt.pdf · —Maes, OOPSLA 1987 —A reflective system has an internal representation of itself. —A

© Oscar Nierstrasz

1. Introduction

1.7

Planned lecture topics

> FAME (AA+TV)> Traversals (AA)> Magritte (LR)> Geppetto and sub-method reflection (MD)> …

I.e., lectures that we will do.

Page 8: Metamodeling and Metaprogramming Seminarscg.unibe.ch/download/mm/Slides/01Intro.ppt.pdf · —Maes, OOPSLA 1987 —A reflective system has an internal representation of itself. —A

© Oscar Nierstrasz

1. Introduction

1.8

Seminar topics (suggestions)

> UML OCL (TV)> MDE Case Study (ON, TV)> Business Rule Modeling (OG)> Transformation Languages (LR)> DSLs (TG, LR)> CLOS Metaprogramming (TV)> AOP (OG)> Business Process Modeling (AA)> EMF / eCore in eclipse (AA)> GMF (Graphical Modeling Framework) (LR)> Template Metaprogramming (ON)> Naked Objects (ON)> Self (ON)> …

I.e., seminars thatyou will prepare!

Page 9: Metamodeling and Metaprogramming Seminarscg.unibe.ch/download/mm/Slides/01Intro.ppt.pdf · —Maes, OOPSLA 1987 —A reflective system has an internal representation of itself. —A

© Oscar Nierstrasz

1. Introduction

1.9

Deliverables

> Presentation— Talk— Cheat Sheet

> Demo— Presentation— Quick Start

> Draft exam questionsYour final grade will bebased 50% on yourseminar plus 50% on thefinal exam (all topics).

Page 10: Metamodeling and Metaprogramming Seminarscg.unibe.ch/download/mm/Slides/01Intro.ppt.pdf · —Maes, OOPSLA 1987 —A reflective system has an internal representation of itself. —A

© Oscar Nierstrasz

1. Introduction

1.10

Roadmap

> Goals of this seminar> Seminar topics> Historical perspective

— What is a model? A meta-model?— Reflection and reification— Reflection in programming languages— Model-driven engineering

Page 11: Metamodeling and Metaprogramming Seminarscg.unibe.ch/download/mm/Slides/01Intro.ppt.pdf · —Maes, OOPSLA 1987 —A reflective system has an internal representation of itself. —A

© Oscar Nierstrasz

1. Introduction

1.11

Roadmap

> Goals of this seminar> Seminar topics> Historical perspective

— What is a model? A meta-model?— Reflection and reification— Reflection in programming languages— Model-driven engineering

Page 12: Metamodeling and Metaprogramming Seminarscg.unibe.ch/download/mm/Slides/01Intro.ppt.pdf · —Maes, OOPSLA 1987 —A reflective system has an internal representation of itself. —A

© Oscar Nierstrasz

1. Introduction

1.12

What is a model?This slide intentionally left blank

> Description/abstraction of real world things> Something with a meta description of how it should be structured> Objects & relationships (a graph?)> Whatʼs a supermodel?> Composition of models — cars & traffic> Could be abstraction of something imaginary> For reasoning> Abstract representation that can be manipulated by a program> Can be easier to modify or work with> Simulation (cost)> Abstraction of a process> Abstraction of something that does not exist yet

Page 13: Metamodeling and Metaprogramming Seminarscg.unibe.ch/download/mm/Slides/01Intro.ppt.pdf · —Maes, OOPSLA 1987 —A reflective system has an internal representation of itself. —A

© Oscar Nierstrasz

1. Introduction

1.13

What is a meta-model?

This slide intentionally left blank

Page 14: Metamodeling and Metaprogramming Seminarscg.unibe.ch/download/mm/Slides/01Intro.ppt.pdf · —Maes, OOPSLA 1987 —A reflective system has an internal representation of itself. —A

© Oscar Nierstrasz

1. Introduction

1.14

Example from databases

Model

System

Meta-model

Meta-meta-model Relational data model:Tables, attributes, tuples

Database schema:Student, Course, Enrolment …

Database tables of tuples:(andreas, muster, 07-123-123), …

Real world:You, MMS, …

«represented-by»

«instance-of»

«instance-of»

Page 15: Metamodeling and Metaprogramming Seminarscg.unibe.ch/download/mm/Slides/01Intro.ppt.pdf · —Maes, OOPSLA 1987 —A reflective system has an internal representation of itself. —A

© Oscar Nierstrasz

1. Introduction

1.15

Programming is Modeling

Programs are models … so theyshould look and behave like models!

Page 16: Metamodeling and Metaprogramming Seminarscg.unibe.ch/download/mm/Slides/01Intro.ppt.pdf · —Maes, OOPSLA 1987 —A reflective system has an internal representation of itself. —A

© Oscar Nierstrasz

1. Introduction

1.16

Roadmap

> Goals of this seminar> Seminar topics> Historical perspective

— What is a model? A meta-model?— Reflection and reification— Reflection in programming languages— Model-driven engineering

Page 17: Metamodeling and Metaprogramming Seminarscg.unibe.ch/download/mm/Slides/01Intro.ppt.pdf · —Maes, OOPSLA 1987 —A reflective system has an internal representation of itself. —A

© Oscar Nierstrasz

1. Introduction

1.17

Metaprogramming

> A metaprogram is a program that manipulates aprogram (possibly itself)

Page 18: Metamodeling and Metaprogramming Seminarscg.unibe.ch/download/mm/Slides/01Intro.ppt.pdf · —Maes, OOPSLA 1987 —A reflective system has an internal representation of itself. —A

© Oscar Nierstrasz

1. Introduction

1.18

Reflection

> “Reflection is the ability of a program to manipulate as datasomething representing the state of the program during its ownexecution.

— Introspection is the ability for a program to observe and thereforereason about its own state.

— Intercession is the ability for a program to modify its own executionstate or alter its own interpretation or meaning.

Both aspects require a mechanism for encoding execution state asdata: this is called reification.”

— Bobrow, Gabriel & White, “CLOS in Context”, 1993

Page 19: Metamodeling and Metaprogramming Seminarscg.unibe.ch/download/mm/Slides/01Intro.ppt.pdf · —Maes, OOPSLA 1987 —A reflective system has an internal representation of itself. —A

© Oscar Nierstrasz

1. Introduction

1.19

Why we need reflection

“As a programming language becomes higher andhigher level, its implementation in terms of underlyingmachine involves more and more tradeoffs, on the partof the implementor, about what cases to optimize at theexpense of what other cases. … the ability to cleanlyintegrate something outside of the languageʼs scopebecomes more and more limited”

Kiczales, in Paepcke 1993

Page 20: Metamodeling and Metaprogramming Seminarscg.unibe.ch/download/mm/Slides/01Intro.ppt.pdf · —Maes, OOPSLA 1987 —A reflective system has an internal representation of itself. —A

© Oscar Nierstrasz

1. Introduction

1.20

Reflection and Reification

Metamodel

Model

Object

Object class

anObject

«instance of»

«reification»

«introspection»(reflection)

«intercession»(reflection)

«modification»

Page 21: Metamodeling and Metaprogramming Seminarscg.unibe.ch/download/mm/Slides/01Intro.ppt.pdf · —Maes, OOPSLA 1987 —A reflective system has an internal representation of itself. —A

© Oscar Nierstrasz

1. Introduction

1.21

Causal connection

> “A system having itself as application domain and that iscausally connected with this domain can be qualified asa reflective system”

— Maes, OOPSLA 1987

— A reflective system has an internal representation of itself.— A reflective system is able to act on itself with the ensurance

that its representation will be causally connected (up to date).— A reflective system has some static capacity of self-

representation and dynamic self-modification in constantsynchronization

Page 22: Metamodeling and Metaprogramming Seminarscg.unibe.ch/download/mm/Slides/01Intro.ppt.pdf · —Maes, OOPSLA 1987 —A reflective system has an internal representation of itself. —A

© Oscar Nierstrasz

1. Introduction

1.22

Roadmap

> Goals of this seminar> Seminar topics> Historical perspective

— What is a model? A meta-model?— Reflection and reification— Reflection in programming languages— Model-driven engineering

Page 23: Metamodeling and Metaprogramming Seminarscg.unibe.ch/download/mm/Slides/01Intro.ppt.pdf · —Maes, OOPSLA 1987 —A reflective system has an internal representation of itself. —A

© Oscar Nierstrasz

1. Introduction

1.23

Reflection in programming languages

> Assembler> Lisp> Scheme> Smalltalk> CLOS> Java> C++> Generative programming

Page 24: Metamodeling and Metaprogramming Seminarscg.unibe.ch/download/mm/Slides/01Intro.ppt.pdf · —Maes, OOPSLA 1987 —A reflective system has an internal representation of itself. —A

© Oscar Nierstrasz

1. Introduction

1.24

Structural and behavioral reflection

> Structural reflection lets you reify and reflect on— the program currently executed— its abstract data types.

> Behavioral reflection lets you reify and reflect on— the language semantics and implementation (processor)— the data and implementation of the run-time system.

Malenfant et al., A Tutorial on BehavioralReflection and its Implementation, 1996

Page 25: Metamodeling and Metaprogramming Seminarscg.unibe.ch/download/mm/Slides/01Intro.ppt.pdf · —Maes, OOPSLA 1987 —A reflective system has an internal representation of itself. —A

© Oscar Nierstrasz

1. Introduction

1.25

Introspection in Java

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

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

Page 26: Metamodeling and Metaprogramming Seminarscg.unibe.ch/download/mm/Slides/01Intro.ppt.pdf · —Maes, OOPSLA 1987 —A reflective system has an internal representation of itself. —A

© Oscar Nierstrasz

1. Introduction

1.26

Reflection in Smalltalk

Page 27: Metamodeling and Metaprogramming Seminarscg.unibe.ch/download/mm/Slides/01Intro.ppt.pdf · —Maes, OOPSLA 1987 —A reflective system has an internal representation of itself. —A

© Oscar Nierstrasz

1. Introduction

1.27

Meta Programming in ProgrammingLanguages> The meta-language and the language can be different:

— Scheme and an OO language> The meta-language and the language can be same:

— Smalltalk, CLOS— In such a case this is a metacircular architecture

Page 28: Metamodeling and Metaprogramming Seminarscg.unibe.ch/download/mm/Slides/01Intro.ppt.pdf · —Maes, OOPSLA 1987 —A reflective system has an internal representation of itself. —A

© Oscar Nierstrasz

1. Introduction

1.28

Three approaches

1. Tower of meta-circular interpreters2. Reflective languages3. Open implementation

Page 29: Metamodeling and Metaprogramming Seminarscg.unibe.ch/download/mm/Slides/01Intro.ppt.pdf · —Maes, OOPSLA 1987 —A reflective system has an internal representation of itself. —A

© Oscar Nierstrasz

1. Introduction

1.29

1. Tower of meta-circular interpreters

> Each level interprets and controls the next— 3-Lisp, Scheme

> “Turtles all the way down” [up]— In practice, levels are reified on-demand

Page 30: Metamodeling and Metaprogramming Seminarscg.unibe.ch/download/mm/Slides/01Intro.ppt.pdf · —Maes, OOPSLA 1987 —A reflective system has an internal representation of itself. —A

© Oscar Nierstrasz

1. Introduction

1.30

2. Reflective languages

> Meta-entities control base entities— Smalltalk, Self— Language is written in itself

Page 31: Metamodeling and Metaprogramming Seminarscg.unibe.ch/download/mm/Slides/01Intro.ppt.pdf · —Maes, OOPSLA 1987 —A reflective system has an internal representation of itself. —A

© Oscar Nierstrasz

1. Introduction

1.31

3. Open implementation

> Meta-object protocols provide an interface to access andmodify the implementation and semantics of a language— CLOS

> More efficient, less expressive than infinite towers

Page 32: Metamodeling and Metaprogramming Seminarscg.unibe.ch/download/mm/Slides/01Intro.ppt.pdf · —Maes, OOPSLA 1987 —A reflective system has an internal representation of itself. —A

© Oscar Nierstrasz

1. Introduction

1.32

Roadmap

> Goals of this seminar> Seminar topics> Historical perspective

— What is a model? A meta-model?— Reflection and reification— Reflection in programming languages— Model-driven engineering

Page 33: Metamodeling and Metaprogramming Seminarscg.unibe.ch/download/mm/Slides/01Intro.ppt.pdf · —Maes, OOPSLA 1987 —A reflective system has an internal representation of itself. —A

© Oscar Nierstrasz

1. Introduction

1.33

Models and metamodels in software

> Databases> Model-driven engineering (MDE/MDA)> XML> Domain specific languages> Round-trip engineering

Page 34: Metamodeling and Metaprogramming Seminarscg.unibe.ch/download/mm/Slides/01Intro.ppt.pdf · —Maes, OOPSLA 1987 —A reflective system has an internal representation of itself. —A

© Oscar Nierstrasz

1. Introduction

1.34

Université de NANTES

M1, M2 & M3 spaces

M3

M2

M1

M2

M1

M2

M1 M1M1

M1

M2

M3

MDA in a nutshell

- One unique Metametamodel (the MOF) - An important library of compatible Metamodels,

each defining a DSL - Each of the models is defined in the language of

its unique metamodel

Page 35: Metamodeling and Metaprogramming Seminarscg.unibe.ch/download/mm/Slides/01Intro.ppt.pdf · —Maes, OOPSLA 1987 —A reflective system has an internal representation of itself. —A

© Oscar Nierstrasz

1. Introduction

1.35

The OMG/MDA Stack

the UML MetaModel

Class Attribute*1

a UML Model

Client

Name : String

M2

M1

the MOF

Class Associationsource

destinationM3

c2

c2

c2

µµ µ

µµ

metamodel

model

"the real world"

meta-metamodel

The MOF

The UML metamodel ++

Some UML Models ++

Various usagesof these modelsM0

M1

M2

M3

µ

µ

Page 36: Metamodeling and Metaprogramming Seminarscg.unibe.ch/download/mm/Slides/01Intro.ppt.pdf · —Maes, OOPSLA 1987 —A reflective system has an internal representation of itself. —A

© Oscar Nierstrasz

1. Introduction

1.36

The Vision of MDA

softwaredeveloper

PlatformIndependentModel

automatictranslation

Page 37: Metamodeling and Metaprogramming Seminarscg.unibe.ch/download/mm/Slides/01Intro.ppt.pdf · —Maes, OOPSLA 1987 —A reflective system has an internal representation of itself. —A

© Oscar Nierstrasz

1. Introduction

1.37

PyPy — model-driven languageimplementation

Page 38: Metamodeling and Metaprogramming Seminarscg.unibe.ch/download/mm/Slides/01Intro.ppt.pdf · —Maes, OOPSLA 1987 —A reflective system has an internal representation of itself. —A

© Oscar Nierstrasz

1. Introduction

1.38

What you should know!

✎ What is the relationship between a model and its meta-model?✎ How is a meta-model also a model?✎ What is the difference between descriptive and prescriptive models?✎ Do we need meta-meta-models?✎ How is programming like modeling?✎ What is the difference between introspection and intercession?✎ What is reification and what is it for?✎ What is the difference between structural and behavioural reflection?✎ What are M0, M1, M2 and M3 in MDA?

Page 39: Metamodeling and Metaprogramming Seminarscg.unibe.ch/download/mm/Slides/01Intro.ppt.pdf · —Maes, OOPSLA 1987 —A reflective system has an internal representation of itself. —A

© Oscar Nierstrasz

1. Introduction

1.39

Can you answer these questions?

✎ What kind of reflection does Java support? C++?✎ What would it mean to turn Pascal into a reflective

language?✎ What exactly is “meta-circular” about a “meta-circular

architecture” mean?✎ In practice, how would you implement a programming

language as an infinite tower of meta-circularinterpreters?

✎ What are M1, M2 and M3 in relational databases?✎ When does MDA/MDE pay off in practice?

Page 40: Metamodeling and Metaprogramming Seminarscg.unibe.ch/download/mm/Slides/01Intro.ppt.pdf · —Maes, OOPSLA 1987 —A reflective system has an internal representation of itself. —A

© Oscar Nierstrasz

1. Introduction

1.40

License

> http://creativecommons.org/licenses/by-sa/2.5/

Attribution-ShareAlike 2.5You are free:• to copy, distribute, display, and perform the work• to make derivative works• to make commercial use of the work

Under the following conditions:

Attribution. You must attribute the work in the manner specified by the author or licensor.

Share Alike. If you alter, transform, or build upon this work, you may distribute the resultingwork only under a license identical to this one.

• For any reuse or distribution, you must make clear to others the license terms of this work.• Any of these conditions can be waived if you get permission from the copyright holder.

Your fair use and other rights are in no way affected by the above.