Compiler Construction | Lecture 5 | Transformation by Term Rewriting
IN4308 1
1. Model-Driven
Software Development
Lecture1: Introduction & Overview
Course IN4308
Eelco Visser
Master Computer Science
http://eelcovisser.org Delft University of Technology
2. Source: Automatiseringsgids January 16, 2010
“Generator spits out ‘mobile’ applications”
“Steape has developed a code generator that automatically
generates code for a range of mobile phones”
5. Programming Languages
"A programming language is low level when its programs
require attention to the irrelevant."
Alan J. Perlis. Epigrams on Programming. SIGPLAN Notices, 17(9):7-13, 1982.
6. Machine Language to Assembly Language
Program I-I. Disassembly.
., 0360 A9 01 LDA #$01
., 0362 A0 00 LDY #$00 “Let's examine some advantages
., 0364 99 00 80 STA $8000,Y of ML, starting with the main
., 0367 99 00 81 STA $8100,Y one - ML runs extremely fast.”
., 036A 99 00 82 STA $8200,Y
., 036D 99 00 83 STA $8300,Y
., 0370 C8 INY
., 0371 D0 F1 BNE $0364
., 0373 60 RTS
.
Machine Language
169 1 160 0 153 0 128 153 0 129 153 130 153 0 131 200 208 241 96
BASIC
5 FOR I=1 TO 1000: PRINT "A";: NEXT I
Source: http://www.atariarchives.org/mlb/introduction.php
7. From Instructions to Expressions
mov &a, &c c = a
add &b, &c c += b
mov &a, &t1 t1 = a
sub &b, &t1 t1 -= b
and &t1,&c c &= t1
c = (a + b) & (a - b)
Source: http://sites.google.com/site/arch1utep/home/course_outline/translating-complex-expressions-into-assembly-language-using-expression-trees
8. From Calling Conventions to Procedures
calc:
push eBP ; save old frame pointer
mov eBP,eSP ; get new frame pointer
sub eSP,localsize ; reserve place for locals
.
. ; perform calculations, leave result in AX
.
mov eSP,eBP ; free space for locals
pop eBP ; restore old frame pointer
ret paramsize ; free parameter space and return
push eAX ; pass some register result
push byte[eBP+20] ; pass some memory variable (FASM/TASM syntax)
push 3 ; pass some constant
call calc ; the returned result is now in eAX
http://en.wikipedia.org/wiki/Calling_convention
f(x) { ... } f(e1,e2,...,en)
9. From Malloc/Free to Automatic Memory Management
/* Allocate space for an array with ten elements of type int. */
int *ptr = (int*)malloc(10 * sizeof (int));
if (ptr == NULL) {
/* Memory could not be allocated, the program
should handle the error here as appropriate. */
} else {
/* Allocation succeeded. Do something. */
free(ptr); /* We are done with the int objects,
and free the associated pointer. */
ptr = NULL; /* The pointer must not be used again,
unless re-assigned to using malloc again. */
}
http://en.wikipedia.org/wiki/Malloc
int [] = new int[10];
/* use it; gc will clean up (hopefully) */
10. Abstractions in Programming Languages
❖ Structured control-flow
★ if-then-else, while
❖ Procedural abstraction
★ procedures, first-class functions (closures)
❖ Memory management
★ garbage collection
❖ Data abstraction
★ abstract data types, objects
❖ Modules
★ inheritance, traits, mixins
11. Abstractions in Programming Languages
Abstraction Scala
garbage collection
objects
Programming Languages
expressions structured
control-flow
procedures
machine
12. Linguistic Abstraction
design abstraction
language A language B
use new abstraction
identify pattern
13. What is the Next Level of Abstraction?
High-level languages reduce problem/solution gap
Problem
HLL Machine
Domain
14. Do HLLs Eliminate All Irrelevant Detail?
What about
❖ data persistence
❖ data services
❖ concurrency
❖ distribution
❖ access control
❖ data invariants
❖ workflow
❖ ...
15. What is the Next Level of Abstraction?
High-level languages reduce problem/solution gap
Problem
HLL Machine
Domain
16. Model-Driven Software Development
Problem
Model HLL Machine
Domain
models further reduce gap between problem domain and implementation
18. What is a model?
model
thing abstraction of
thing
abstraction = forgetting details
19. What is a model?
“A model is a simplification of a system built with an intended goal
in mind. The model should be able to answer questions in place of
the actual system.” Jean Bézivin
“A model is an abstraction of a (real or language based) system
allowing predictions or inferences to be made.” Kuehne
“Models help in developing artefacts by providing information
about the consequences of building those artefacts before they
are actually made.” Ludewig
“A model of a system is a description or specification of that system
and its environment for some certain purpose.” OMG
20. What is a model?
A model
❖ is a simplification of a system
★ abstraction, description, specification, information
❖ can answer questions in place of actual system
★ analysis, inference, predictions
❖ is used for a purpose
★ understanding, planing, risk analysis, ...
21. A model is a UML diagram
simplification?
analysis?
purpose?
22. What is a model about?
❖ Structure
★ Data
★ Architecture
★ Configuration
❖ Behaviour
★ User interface
★ Access control
★ Business process
❖ About any aspects of a system
24. A model can be a UML diagram ...
... but it can be any other representation ...
e = x | e + e | e - e | f(e,...,e)
... that serves the purpose of abstraction, analysis, etc.
25. For what purposes are models used?
Description
❖ of something that exists
Analysis
❖ understanding of properties
Blueprint
❖ guidelines to build something
Specification
❖ precise instruction for construction (code gen)
26. Model-Driven Architecture (MDA)
Vision from OMG
❖ Models at different level of abstraction
★ Platform Independent Model (PIM)
★ Platform Specific Model (PSM)
❖ Model transformation
★ e.g. PIM to PSM to implementation
★ transformations not necessarily automatic
❖ UML as standard modeling language
★ models are ‘visual’ or ‘graphical’
28. A Critique of MDA & Formal Methods
General purpose modeling languages
❖ High coverage
★ large class of software systems
❖ Low expressivity
★ irrelevant details
★ Requirements/implementation gap not reduced
32. Example Domain-Specific Languages (2)
Games
★ Lua, UnrealScript
Modeling
★ UML, OCL, QVT
Language processing
★ YACC, LEX, RegExp, ANTLR, SDF
★ TXL, ASF+SDF, Stratego
33. Transformation
Transformation
Model analysis Model migration Model
construct
extract
System
34. External DSL
Dedicated language
★ independent of host/target language (portable)
★ implementation with interpreter or compiler
Advantages
★ language tuned to domain
★ domain-specific errors, analysis, optimizations
Disadvantages
★ cost of learning new language
★ cost of maintaining language
35. Internal DSL
Library in HLL
★ Haskell, Scala, Ruby, ...
★ API is language
★ language features for ‘linguistic abstraction’
Advantages
★ host language = implementation language
Disadvantages
★ host language = implementation language (encoding)
★ lack of portability
★ no domain-specific errors, analysis, optimization
36. Course Goal
Course Goal
Learn to design and implement
domain-specific languages
Understand DSL design choices and make
reasoned decisions about their application
37. The Linguistic Abstraction Process
Application
DSL
Domain
domain analysis
language definition
Programming abstraction
Language
Patterns Design
38. Course Ingredients
Lectures* (15x)
Designs (2x)
Essay (1x)
*we have 15 slots for lectures; we don’t need to use them all
39. Quarter 3
(February - March 2011)
Software Development with Domain-Specific Languages
46. Design1: Software Development with DSLs
Facebook
❖ Status updates selectively accessible to friends
❖ Web application in WebDSL
❖ Mobile application in mobl connected to web app
using services
❖ Work in group of 2 to 4 students
Deadline: April 7
❖ submit code and arrange demonstration
47. Quarter 4
(April - May 2011)
Design and Implementation of Domain-Specific Languages
52. Advanced Topics
❖ Portability
★ supporting multiple platforms
❖ Internal DSLs
★ library as a language
❖ Language composition
★ combining multiple DSLs
❖ Economics
★ costs and benefits of developing (with) DSLs
Lectures 11-15
53. Design 2: Design and Implementation of DSLs
Design and implement a DSL with Spoofax
❖ use rule-based DSLs for language definition
❖ create full fledged IDE
You propose web app and language to design
❖ (We can give tips if you’re stuck)
❖ Deadline for proposal: March 22
54. Essay: Individual Writing Project
Read
❖ recommended papers
❖ http://researchr.org/bibliography/mdsd
Write
❖ a paper about software development with
and of domain-specific languages.
★ Reflect on your experience in design projects
★ Reflect on the literature you’ve read
55. Grading
final grade =
❖ 0.35 * design1
❖ 0.4 * design2
❖ 0.25 * essay
all grades should be >= 6
57. Schedule
Read
❖ Czarnecki: Overview of Generative Development
❖ Muller et al.: Modeling Modeling
Lecture 2 (February 3)
❖ Extension and evolution of DSLs
Lecture 3 (February 8)
❖ WebDSL: a DSL for Web Programming
Lecture 4 (February 10)
❖ Mobl: a DSL for Mobile Web Applications