SlideShare a Scribd company logo
1 of 62
Model-Driven
      Software Development
                              Lecture1: Introduction & Overview



                                                                Course IN4308
       Eelco Visser
                                                     Master Computer Science
  http://eelcovisser.org                         Delft University of Technology
Wednesday, February 3, 2010
Source: Automatiseringsgids January 16, 2010




Wednesday, February 3, 2010
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ā€




Wednesday, February 3, 2010
Software Engineering




                                    implement
               Problem                               Solution
               Domain                                Domain
                                      validate




Wednesday, February 3, 2010
Programming Languages




Wednesday, February 3, 2010
"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.



Wednesday, February 3, 2010
What do programming languages provide to reduce
                     attention to the irrelevan?




Wednesday, February 3, 2010
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
Wednesday, February 3, 2010
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

Wednesday, February 3, 2010
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)

Wednesday, February 3, 2010
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) */

Wednesday, February 3, 2010
Abstractions in Progamming Languages

               -       Structured control-ļ¬‚ow
                       ā˜… if-then-else, while

               -       Procedural abstraction
                       ā˜… procedures, ļ¬rst-class functions (closures)

               -       Memory management
                       ā˜… garbage collection

               -       Data abstraction
                       ā˜… abstract data types, objects

               -       Modules
                       ā˜… inheritance, traits, mixins

Wednesday, February 3, 2010
Abstraction                                              Scala
                                        garbage collection

                              objects


                         Programming Languages
       expressions                                 structured
                                                  control-ļ¬‚ow

                                  procedures
     machine
Wednesday, February 3, 2010
Linguistic Abstraction

                                        design abstraction
                      language A                             language B




                                       use new abstraction


   identify pattern




Wednesday, February 3, 2010
High-level languages reduce problem/solution gap




  Problem
                                            HLL           Machine
  Domain




Wednesday, February 3, 2010
Do HLLs eliminate all irrelevant detail?

               What about
               -       data persistence
               -       data services
               -       concurrency
               -       distribution
               -       access control
               -       data invariants
               -       workļ¬‚ow
               -       ...

Wednesday, February 3, 2010
What is the next level of abstraction?




  Problem
                                                       HLL             Machine
  Domain




Wednesday, February 3, 2010
Model-Driven Software Development




  Problem
                                    Model           HLL           Machine
  Domain




models further reduce gap between problem domain and implementation
Wednesday, February 3, 2010
What is a model?




Wednesday, February 3, 2010
What is a model?




                                                                     model
                          thing                abstraction             of
                                                                     thing




                                  abstraction = forgetting details
Wednesday, February 3, 2010
What is a model?




    ā€œA model is a simpliļ¬cation 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




Wednesday, February 3, 2010
What is a model?




   ā€œA model is an abstraction of a (real or language based) system
   allowing predictions or inferences to be made.ā€ Kuehne




Wednesday, February 3, 2010
What is a model?




   ā€œModels help in developing artefacts by providing information
   about the consequences of building those artefacts before they
   are actually made.ā€ Ludewig




Wednesday, February 3, 2010
What is a model?




   ā€œA model of a system is a description or speciļ¬cation of that system
   and its environment for some certain purpose.ā€ OMG




Wednesday, February 3, 2010
What is a model?


               A model
               -       is a simpliļ¬cation of a system
                       ā˜… abstraction, description, speciļ¬cation, information

               -       can answer questions in place of actual system
                       ā˜… analysis, inference, predictions

               -       is used for a purpose
                       ā˜… understanding, planing, risk analysis, ...




Wednesday, February 3, 2010
A model is a UML diagram




                                                         simpliļ¬cation?
                                                               analysis?
                                                             purpose?
Wednesday, February 3, 2010
What is a model about?


               -       Structure
                       ā˜… Data
                       ā˜… Architecture
                       ā˜… Conļ¬guration

               -       Behaviour
                       ā˜… User interface
                       ā˜… Access control
                       ā˜… Business process

               -       About any aspects of a system


Wednesday, February 3, 2010
A model can be a UML diagram ...




Wednesday, February 3, 2010
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 purpose of abstraction, analysis, etc.
Wednesday, February 3, 2010
For what purposes are models used?

               Description
               -       of something that exists
               Analysis
               -       understanding of properties
               Blueprint
               -       guidelines to build something
               Speciļ¬cation
               -       precise instruction for construction (code gen)

Wednesday, February 3, 2010
Model-Driven Architecture (MDA)

               Vision from OMG
               -       Models at different level of abstraction
                       ā˜… Platform Independent Model (PIM)
                       ā˜… Platform Speciļ¬c 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ā€™


Wednesday, February 3, 2010
ā€˜Formal Methodsā€™
                              Logic




  Problem
                              HLL     Machine
  Domain




Wednesday, February 3, 2010
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




Wednesday, February 3, 2010
Domain-Speciļ¬c Languages




  Problem
                                DSL            HLL            Machine
  Domain




   domain-speciļ¬c languages: models specialized to an application domain
Wednesday, February 3, 2010
DSLs provide domain-speciļ¬c ...
               Abstractions
                       ā˜… directly represent domain concepts

               Concrete syntax
                       ā˜… natural notation

               Optimization
                       ā˜… based on domain assumptions

               Error checking
                       ā˜… report errors in terms of domain concepts

               Tool support
                       ā˜… interpreter, compiler, code generator, IDE
Wednesday, February 3, 2010
Example Domain-Speciļ¬c Languages (1)

               Spreadsheet
                       ā˜… formulas, macros

               Querying
                       ā˜… SQL, XQuery, XPath

               Graph layout
                       ā˜… GraphViz

               Web
                       ā˜… HTML, CSS, RSS, XML, XSLT
                       ā˜… Ruby/Rails, JSP, ASP, JSF, WebDSL


Wednesday, February 3, 2010
Example Domain-Speciļ¬c Languages (2)


               Games
                       ā˜… Lua, UnrealScript

               Modeling
                       ā˜… UML, OCL, QVT

               Language processing
                       ā˜… YACC, LEX, RegExp, ANTLR, SDF
                       ā˜… TXL, ASF+SDF, Stratego




Wednesday, February 3, 2010
Transformation



         Model                analysis        Model               migration   Model



                                            construct


                                                        extract




                                            System

Wednesday, February 3, 2010
External DSL

               Dedicated language
                       ā˜… independent of host/target language (portable)
                       ā˜… implementation with interpreter or compiler

               Advantages
                       ā˜… language tuned to domain
                       ā˜… domain-speciļ¬c errors, analysis, optimizations

               Disadvantages
                       ā˜… cost of learning new language
                       ā˜… cost of maintaining language


Wednesday, February 3, 2010
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-speciļ¬c errors, analysis, optimization

Wednesday, February 3, 2010
This Course

Wednesday, February 3, 2010
Course Goal




   Learn to design and implement
     domain-speciļ¬c languages

                        Understand DSL design choices and make
                        reasoned decisions about their application
Wednesday, February 3, 2010
Application
                                                                DSL
                     Domain
                              domain analysis




                                                                 language deļ¬nition
                  Programming                   abstraction
                                                              Language
                    Patterns                                   Design


Wednesday, February 3, 2010
Course Ingredients

                                Lectures (14x)

                                 Designs (2x)

                                 Cases (6x)

                                 Exams (2x)

Wednesday, February 3, 2010
Lectures (14x)


                   Note: no lecture in week 4, moved to week 8
Wednesday, February 3, 2010
Domain Analysis & Data Modeling




                                                                Lecture 2
Wednesday, February 3, 2010
Abstractions for the Web




                              Lectures 3-5
Wednesday, February 3, 2010
Language Workbenches




                                                     Lecture 6
Wednesday, February 3, 2010
Language Modeling




                                                  Lectures 6-7
Wednesday, February 3, 2010
Transformation, Generation, Analysis




                                                              Lectures 8-10
Wednesday, February 3, 2010
Customization



                                             Model




                                               generate




                              customize       Code
                                                          Lecture 10
Wednesday, February 3, 2010
Advanced Topics

               -       Economics
                       ā˜… costs and beneļ¬ts of developing (with) DSLs

               -       Evolution
                       ā˜… maintenance of models and languages

               -       Portability
                       ā˜… supporting multiple platforms

               -       Internal DSLs
                       ā˜… library as a language

               -       Language composition
                       ā˜… combining multiple DSLs
                                                                Lectures 12-14
Wednesday, February 3, 2010
Designs (2x)


Wednesday, February 3, 2010
Designs (= lab project in pairs)

               Design 1
                       ā˜… Web Application with WebDSL

                              ā€¢   domain analysis
                              ā€¢   software development with a DSL

               Design 2
                       ā˜… DSL with Stratego & Spoofax/IMP

                              ā€¢   design and implement a DSL
                              ā€¢   use rule-based DSLs for language deļ¬nition

               You propose web app and language to design
                       ā˜… (We can give tips if youā€™re stuck)

Wednesday, February 3, 2010
Cases (6x)


Wednesday, February 3, 2010
Cases (= individual home work assignments)
               -       Goals
                       ā˜… understand and apply modeling approaches
                       ā˜… solve small design problems
                       ā˜… compare alternative solutions

               -       Six cases
                       ā˜… domain analysis and data modeling
                       ā˜… web abstractions
                       ā˜… language modeling
                       ā˜… generation, transformation, analysis
                       ā˜… customization
                       ā˜… advanced topic

Wednesday, February 3, 2010
Exams (2x)


Wednesday, February 3, 2010
Exams

               Goals
               -       test understanding of course material
               -       small design problems
               -       comparison of approaches
               When
               -       midterm (after period 3)
               -       ļ¬nal (after period 4)
               -       if(midterm >= 6) { make half of ļ¬nal exam }


Wednesday, February 3, 2010
Grading


   design := 0.4 * design1 + 0.6 * design2

   exam                := if(exam1 >= 6) {
                            (exam1 + exam2)/2 }
                          } else { exam2 }

   case                := average(i : 1 to 6) { case[i] }

   final               := 0.4 * design + 0.2 * case + 0.4 * exam

   pass                := design1 >= 6 && design2 >= 6 && exam >= 6
                          && [c | c in case where c >= 6].length >= 4




Wednesday, February 3, 2010
Feedback



               This is a new course
               Iā€™d like to get feedback early
               Not when it is too late to ļ¬x


               Volunteers for feedback group?
               Short meeting Thursdays at start of lab



Wednesday, February 3, 2010
Website




                http://department.st.ewi.tudelft.nl/course/IN4308
Wednesday, February 3, 2010
Schedule
               Lab this week:
                       ā˜… Find a partner
                       ā˜… Make design proposal for a web application
                       ā˜… WebDSL tutorial

               Read
                       ā˜… Czarnecki: Overview of Generative Development
                       ā˜… Muller et al.: Modeling Modeling

               Next week
                       ā˜… Domain analysis & data modeling

               No lecture week 4, moved to week 8!
Wednesday, February 3, 2010

More Related Content

What's hot

V model Over View (Software Engineering)
V model Over View (Software Engineering) V model Over View (Software Engineering)
V model Over View (Software Engineering) Badar Rameez. CH.
Ā 
Software quality
Software qualitySoftware quality
Software qualityjagadeesan
Ā 
V model presentation
V model presentationV model presentation
V model presentationNiat Murad
Ā 
Software Testing 101
Software Testing 101Software Testing 101
Software Testing 101QA Hannah
Ā 
UNIT TESTING PPT
UNIT TESTING PPTUNIT TESTING PPT
UNIT TESTING PPTsuhasreddy1
Ā 
Rational Unified Process
Rational Unified ProcessRational Unified Process
Rational Unified ProcessKumar
Ā 
Incremental model
Incremental modelIncremental model
Incremental modelMariamKhan120
Ā 
Unit testing
Unit testing Unit testing
Unit testing Mani Kanth
Ā 
Software Development Life Cycle (SDLC)
Software Development Life Cycle (SDLC)Software Development Life Cycle (SDLC)
Software Development Life Cycle (SDLC)Mohamed Sami El-Tahawy
Ā 
SDLC - Software Development Life Cycle
SDLC - Software Development Life CycleSDLC - Software Development Life Cycle
SDLC - Software Development Life CycleSuresh Koujalagi
Ā 
Waterfall model
Waterfall modelWaterfall model
Waterfall modelkhushboo8093
Ā 
Incremental model presentation
Incremental model presentationIncremental model presentation
Incremental model presentationNiat Murad
Ā 
comparative study software quality models
comparative study  software quality models comparative study  software quality models
comparative study software quality models Auwal Amshi
Ā 
Software engineering Questions and Answers
Software engineering Questions and AnswersSoftware engineering Questions and Answers
Software engineering Questions and AnswersBala Ganesh
Ā 
Software Development Life Cycle (SDLC)
Software Development Life Cycle (SDLC)Software Development Life Cycle (SDLC)
Software Development Life Cycle (SDLC) Compare Infobase Limited
Ā 
Software development process models
Software development process modelsSoftware development process models
Software development process modelsMuhammed Afsal Villan
Ā 
Software Engineering - Ch1
Software Engineering - Ch1Software Engineering - Ch1
Software Engineering - Ch1Siddharth Ayer
Ā 

What's hot (20)

V model Over View (Software Engineering)
V model Over View (Software Engineering) V model Over View (Software Engineering)
V model Over View (Software Engineering)
Ā 
Software quality
Software qualitySoftware quality
Software quality
Ā 
V model presentation
V model presentationV model presentation
V model presentation
Ā 
Software Testing 101
Software Testing 101Software Testing 101
Software Testing 101
Ā 
UNIT TESTING PPT
UNIT TESTING PPTUNIT TESTING PPT
UNIT TESTING PPT
Ā 
Rational Unified Process
Rational Unified ProcessRational Unified Process
Rational Unified Process
Ā 
Sdlc
SdlcSdlc
Sdlc
Ā 
Incremental model
Incremental modelIncremental model
Incremental model
Ā 
Software Testing
Software TestingSoftware Testing
Software Testing
Ā 
Unit testing
Unit testing Unit testing
Unit testing
Ā 
Software Development Life Cycle (SDLC)
Software Development Life Cycle (SDLC)Software Development Life Cycle (SDLC)
Software Development Life Cycle (SDLC)
Ā 
Waterfall model in SDLC
Waterfall model in SDLCWaterfall model in SDLC
Waterfall model in SDLC
Ā 
SDLC - Software Development Life Cycle
SDLC - Software Development Life CycleSDLC - Software Development Life Cycle
SDLC - Software Development Life Cycle
Ā 
Waterfall model
Waterfall modelWaterfall model
Waterfall model
Ā 
Incremental model presentation
Incremental model presentationIncremental model presentation
Incremental model presentation
Ā 
comparative study software quality models
comparative study  software quality models comparative study  software quality models
comparative study software quality models
Ā 
Software engineering Questions and Answers
Software engineering Questions and AnswersSoftware engineering Questions and Answers
Software engineering Questions and Answers
Ā 
Software Development Life Cycle (SDLC)
Software Development Life Cycle (SDLC)Software Development Life Cycle (SDLC)
Software Development Life Cycle (SDLC)
Ā 
Software development process models
Software development process modelsSoftware development process models
Software development process models
Ā 
Software Engineering - Ch1
Software Engineering - Ch1Software Engineering - Ch1
Software Engineering - Ch1
Ā 

Viewers also liked

Agile MDD
Agile MDDAgile MDD
Agile MDDfntnhd
Ā 
CG2010 Introducing MDSD
CG2010 Introducing MDSDCG2010 Introducing MDSD
CG2010 Introducing MDSDPedro J. Molina
Ā 
Model driven development
Model driven developmentModel driven development
Model driven developmentPaul Jewell
Ā 
MDSD with Eclipse @ JUG Hamburg
MDSD with Eclipse @ JUG HamburgMDSD with Eclipse @ JUG Hamburg
MDSD with Eclipse @ JUG HamburgSebastian Zarnekow
Ā 
Model driven development and code generation of software systems
Model driven development and code generation of software systemsModel driven development and code generation of software systems
Model driven development and code generation of software systemsMarco Brambilla
Ā 
Model Based Systems and Software Engineering an overview of the IBM Rational ...
Model Based Systems and Software Engineering an overview of the IBM Rational ...Model Based Systems and Software Engineering an overview of the IBM Rational ...
Model Based Systems and Software Engineering an overview of the IBM Rational ...Real-Time Innovations (RTI)
Ā 
EMF Compare 2.0: Scaling to Millions (updated)
EMF Compare 2.0: Scaling to Millions (updated)EMF Compare 2.0: Scaling to Millions (updated)
EMF Compare 2.0: Scaling to Millions (updated)mikaelbarbero
Ā 
MoDisco EclipseCon2010
MoDisco EclipseCon2010MoDisco EclipseCon2010
MoDisco EclipseCon2010fmadiot
Ā 
Software System Engineering - Chapter 2
Software System Engineering - Chapter 2Software System Engineering - Chapter 2
Software System Engineering - Chapter 2Fadhil Ismail
Ā 
Textual Modeling Framework Xtext
Textual Modeling Framework XtextTextual Modeling Framework Xtext
Textual Modeling Framework XtextSebastian Zarnekow
Ā 
Model driven software engineering in practice book - Chapter 9 - Model to tex...
Model driven software engineering in practice book - Chapter 9 - Model to tex...Model driven software engineering in practice book - Chapter 9 - Model to tex...
Model driven software engineering in practice book - Chapter 9 - Model to tex...Marco Brambilla
Ā 
You need to extend your models? EMF Facet vs. EMF Profiles
You need to extend your models? EMF Facet vs. EMF ProfilesYou need to extend your models? EMF Facet vs. EMF Profiles
You need to extend your models? EMF Facet vs. EMF ProfilesPhilip Langer
Ā 
Industrial and Academic Experiences with a User Interaction Modeling Language...
Industrial and Academic Experiences with a User Interaction Modeling Language...Industrial and Academic Experiences with a User Interaction Modeling Language...
Industrial and Academic Experiences with a User Interaction Modeling Language...Marco Brambilla
Ā 
Ch03-Software Engineering Model
Ch03-Software Engineering ModelCh03-Software Engineering Model
Ch03-Software Engineering ModelBala Ganesh
Ā 
Comparison of Software Engineering Models
Comparison of Software Engineering  ModelsComparison of Software Engineering  Models
Comparison of Software Engineering Modelstahir iqbal
Ā 
The Unbearable Stupidity of Modeling
The Unbearable Stupidity of ModelingThe Unbearable Stupidity of Modeling
The Unbearable Stupidity of ModelingPeter Friese
Ā 
Software Engineering - Software Models
Software Engineering - Software ModelsSoftware Engineering - Software Models
Software Engineering - Software ModelsReddhi Basu
Ā 

Viewers also liked (20)

IN4308 1
IN4308 1IN4308 1
IN4308 1
Ā 
Agile MDD
Agile MDDAgile MDD
Agile MDD
Ā 
CG2010 Introducing MDSD
CG2010 Introducing MDSDCG2010 Introducing MDSD
CG2010 Introducing MDSD
Ā 
Model driven development
Model driven developmentModel driven development
Model driven development
Ā 
MDSD with Eclipse @ JUG Hamburg
MDSD with Eclipse @ JUG HamburgMDSD with Eclipse @ JUG Hamburg
MDSD with Eclipse @ JUG Hamburg
Ā 
Model driven development and code generation of software systems
Model driven development and code generation of software systemsModel driven development and code generation of software systems
Model driven development and code generation of software systems
Ā 
Model Based Systems and Software Engineering an overview of the IBM Rational ...
Model Based Systems and Software Engineering an overview of the IBM Rational ...Model Based Systems and Software Engineering an overview of the IBM Rational ...
Model Based Systems and Software Engineering an overview of the IBM Rational ...
Ā 
EMF Compare 2.0: Scaling to Millions (updated)
EMF Compare 2.0: Scaling to Millions (updated)EMF Compare 2.0: Scaling to Millions (updated)
EMF Compare 2.0: Scaling to Millions (updated)
Ā 
MoDisco EclipseCon2010
MoDisco EclipseCon2010MoDisco EclipseCon2010
MoDisco EclipseCon2010
Ā 
Software System Engineering - Chapter 2
Software System Engineering - Chapter 2Software System Engineering - Chapter 2
Software System Engineering - Chapter 2
Ā 
Textual Modeling Framework Xtext
Textual Modeling Framework XtextTextual Modeling Framework Xtext
Textual Modeling Framework Xtext
Ā 
Model driven software engineering in practice book - Chapter 9 - Model to tex...
Model driven software engineering in practice book - Chapter 9 - Model to tex...Model driven software engineering in practice book - Chapter 9 - Model to tex...
Model driven software engineering in practice book - Chapter 9 - Model to tex...
Ā 
Acceleo Code Generation
Acceleo Code GenerationAcceleo Code Generation
Acceleo Code Generation
Ā 
You need to extend your models? EMF Facet vs. EMF Profiles
You need to extend your models? EMF Facet vs. EMF ProfilesYou need to extend your models? EMF Facet vs. EMF Profiles
You need to extend your models? EMF Facet vs. EMF Profiles
Ā 
Industrial and Academic Experiences with a User Interaction Modeling Language...
Industrial and Academic Experiences with a User Interaction Modeling Language...Industrial and Academic Experiences with a User Interaction Modeling Language...
Industrial and Academic Experiences with a User Interaction Modeling Language...
Ā 
Ch03-Software Engineering Model
Ch03-Software Engineering ModelCh03-Software Engineering Model
Ch03-Software Engineering Model
Ā 
Comparison of Software Engineering Models
Comparison of Software Engineering  ModelsComparison of Software Engineering  Models
Comparison of Software Engineering Models
Ā 
The Unbearable Stupidity of Modeling
The Unbearable Stupidity of ModelingThe Unbearable Stupidity of Modeling
The Unbearable Stupidity of Modeling
Ā 
Software Engineering - Software Models
Software Engineering - Software ModelsSoftware Engineering - Software Models
Software Engineering - Software Models
Ā 
Eugenia
EugeniaEugenia
Eugenia
Ā 

Similar to Model-Driven Software Dev Intro

Lecture 2#- (Intro to Obj-C, Interface Builder and Xcode)
Lecture 2#- (Intro to Obj-C, Interface Builder and Xcode)Lecture 2#- (Intro to Obj-C, Interface Builder and Xcode)
Lecture 2#- (Intro to Obj-C, Interface Builder and Xcode)Nguyen Thanh Xuan
Ā 
Python PPT by Sushil Sir.pptx
Python PPT by Sushil Sir.pptxPython PPT by Sushil Sir.pptx
Python PPT by Sushil Sir.pptxsushil155005
Ā 
Secure Programming Language Cs
Secure Programming Language CsSecure Programming Language Cs
Secure Programming Language CsIJRES Journal
Ā 
Got database access? Own the network!
Got database access? Own the network!Got database access? Own the network!
Got database access? Own the network!Bernardo Damele A. G.
Ā 
Go courseday1
Go courseday1Go courseday1
Go courseday1Zoom Quiet
Ā 
International journal of compiling
International journal of compilingInternational journal of compiling
International journal of compilingAndivann
Ā 
International journal of compiling
International journal of compilingInternational journal of compiling
International journal of compilingMgcal D. Saul Magfield
Ā 
Introduction to F#
Introduction to F#Introduction to F#
Introduction to F#Talbott Crowell
Ā 
Creating Clean Code with AOP (T3CON10)
Creating Clean Code with AOP (T3CON10)Creating Clean Code with AOP (T3CON10)
Creating Clean Code with AOP (T3CON10)Robert Lemke
Ā 
sqlmap - security development in Python
sqlmap - security development in Pythonsqlmap - security development in Python
sqlmap - security development in PythonMiroslav Stampar
Ā 
Os Vanrossum
Os VanrossumOs Vanrossum
Os Vanrossumoscon2007
Ā 
Python_Unit1_Introduction.pptx
Python_Unit1_Introduction.pptxPython_Unit1_Introduction.pptx
Python_Unit1_Introduction.pptxVidhyaB10
Ā 
Erlang, an overview
Erlang, an overviewErlang, an overview
Erlang, an overviewPatrick Huesler
Ā 
ADLUG 2012: Linking Linked Data
ADLUG 2012: Linking Linked DataADLUG 2012: Linking Linked Data
ADLUG 2012: Linking Linked DataAndrea Gazzarini
Ā 
C Tutorials
C TutorialsC Tutorials
C TutorialsSudharsan S
Ā 
JDD 2016 - Grzegorz Rozniecki - Java 8 What Could Possibly Go Wrong
JDD 2016 - Grzegorz Rozniecki - Java 8 What Could Possibly Go WrongJDD 2016 - Grzegorz Rozniecki - Java 8 What Could Possibly Go Wrong
JDD 2016 - Grzegorz Rozniecki - Java 8 What Could Possibly Go WrongPROIDEA
Ā 

Similar to Model-Driven Software Dev Intro (20)

Lecture 2#- (Intro to Obj-C, Interface Builder and Xcode)
Lecture 2#- (Intro to Obj-C, Interface Builder and Xcode)Lecture 2#- (Intro to Obj-C, Interface Builder and Xcode)
Lecture 2#- (Intro to Obj-C, Interface Builder and Xcode)
Ā 
Python PPT by Sushil Sir.pptx
Python PPT by Sushil Sir.pptxPython PPT by Sushil Sir.pptx
Python PPT by Sushil Sir.pptx
Ā 
Secure Programming Language Cs
Secure Programming Language CsSecure Programming Language Cs
Secure Programming Language Cs
Ā 
Got database access? Own the network!
Got database access? Own the network!Got database access? Own the network!
Got database access? Own the network!
Ā 
Go courseday1
Go courseday1Go courseday1
Go courseday1
Ā 
International journal of compiling
International journal of compilingInternational journal of compiling
International journal of compiling
Ā 
International journal of compiling
International journal of compilingInternational journal of compiling
International journal of compiling
Ā 
Introduction to F#
Introduction to F#Introduction to F#
Introduction to F#
Ā 
Go courseday1
Go courseday1Go courseday1
Go courseday1
Ā 
Creating Clean Code with AOP (T3CON10)
Creating Clean Code with AOP (T3CON10)Creating Clean Code with AOP (T3CON10)
Creating Clean Code with AOP (T3CON10)
Ā 
sqlmap - security development in Python
sqlmap - security development in Pythonsqlmap - security development in Python
sqlmap - security development in Python
Ā 
Os Vanrossum
Os VanrossumOs Vanrossum
Os Vanrossum
Ā 
Python_Unit1_Introduction.pptx
Python_Unit1_Introduction.pptxPython_Unit1_Introduction.pptx
Python_Unit1_Introduction.pptx
Ā 
Erlang, an overview
Erlang, an overviewErlang, an overview
Erlang, an overview
Ā 
ADLUG 2012: Linking Linked Data
ADLUG 2012: Linking Linked DataADLUG 2012: Linking Linked Data
ADLUG 2012: Linking Linked Data
Ā 
C++0x
C++0xC++0x
C++0x
Ā 
Pythonintroduction
PythonintroductionPythonintroduction
Pythonintroduction
Ā 
3.5
3.53.5
3.5
Ā 
C Tutorials
C TutorialsC Tutorials
C Tutorials
Ā 
JDD 2016 - Grzegorz Rozniecki - Java 8 What Could Possibly Go Wrong
JDD 2016 - Grzegorz Rozniecki - Java 8 What Could Possibly Go WrongJDD 2016 - Grzegorz Rozniecki - Java 8 What Could Possibly Go Wrong
JDD 2016 - Grzegorz Rozniecki - Java 8 What Could Possibly Go Wrong
Ā 

More from Eelco Visser

CS4200 2019 | Lecture 5 | Transformation by Term Rewriting
CS4200 2019 | Lecture 5 | Transformation by Term RewritingCS4200 2019 | Lecture 5 | Transformation by Term Rewriting
CS4200 2019 | Lecture 5 | Transformation by Term RewritingEelco Visser
Ā 
CS4200 2019 | Lecture 4 | Syntactic Services
CS4200 2019 | Lecture 4 | Syntactic ServicesCS4200 2019 | Lecture 4 | Syntactic Services
CS4200 2019 | Lecture 4 | Syntactic ServicesEelco Visser
Ā 
CS4200 2019 | Lecture 3 | Parsing
CS4200 2019 | Lecture 3 | ParsingCS4200 2019 | Lecture 3 | Parsing
CS4200 2019 | Lecture 3 | ParsingEelco Visser
Ā 
CS4200 2019 | Lecture 2 | syntax-definition
CS4200 2019 | Lecture 2 | syntax-definitionCS4200 2019 | Lecture 2 | syntax-definition
CS4200 2019 | Lecture 2 | syntax-definitionEelco Visser
Ā 
CS4200 2019 Lecture 1: Introduction
CS4200 2019 Lecture 1: IntroductionCS4200 2019 Lecture 1: Introduction
CS4200 2019 Lecture 1: IntroductionEelco Visser
Ā 
A Direct Semantics of Declarative Disambiguation Rules
A Direct Semantics of Declarative Disambiguation RulesA Direct Semantics of Declarative Disambiguation Rules
A Direct Semantics of Declarative Disambiguation RulesEelco Visser
Ā 
Declarative Type System Specification with Statix
Declarative Type System Specification with StatixDeclarative Type System Specification with Statix
Declarative Type System Specification with StatixEelco Visser
Ā 
Compiler Construction | Lecture 17 | Beyond Compiler Construction
Compiler Construction | Lecture 17 | Beyond Compiler ConstructionCompiler Construction | Lecture 17 | Beyond Compiler Construction
Compiler Construction | Lecture 17 | Beyond Compiler ConstructionEelco Visser
Ā 
Domain Specific Languages for Parallel Graph AnalytiX (PGX)
Domain Specific Languages for Parallel Graph AnalytiX (PGX)Domain Specific Languages for Parallel Graph AnalytiX (PGX)
Domain Specific Languages for Parallel Graph AnalytiX (PGX)Eelco Visser
Ā 
Compiler Construction | Lecture 15 | Memory Management
Compiler Construction | Lecture 15 | Memory ManagementCompiler Construction | Lecture 15 | Memory Management
Compiler Construction | Lecture 15 | Memory ManagementEelco Visser
Ā 
Compiler Construction | Lecture 14 | Interpreters
Compiler Construction | Lecture 14 | InterpretersCompiler Construction | Lecture 14 | Interpreters
Compiler Construction | Lecture 14 | InterpretersEelco Visser
Ā 
Compiler Construction | Lecture 13 | Code Generation
Compiler Construction | Lecture 13 | Code GenerationCompiler Construction | Lecture 13 | Code Generation
Compiler Construction | Lecture 13 | Code GenerationEelco Visser
Ā 
Compiler Construction | Lecture 12 | Virtual Machines
Compiler Construction | Lecture 12 | Virtual MachinesCompiler Construction | Lecture 12 | Virtual Machines
Compiler Construction | Lecture 12 | Virtual MachinesEelco Visser
Ā 
Compiler Construction | Lecture 11 | Monotone Frameworks
Compiler Construction | Lecture 11 | Monotone FrameworksCompiler Construction | Lecture 11 | Monotone Frameworks
Compiler Construction | Lecture 11 | Monotone FrameworksEelco Visser
Ā 
Compiler Construction | Lecture 10 | Data-Flow Analysis
Compiler Construction | Lecture 10 | Data-Flow AnalysisCompiler Construction | Lecture 10 | Data-Flow Analysis
Compiler Construction | Lecture 10 | Data-Flow AnalysisEelco Visser
Ā 
Compiler Construction | Lecture 9 | Constraint Resolution
Compiler Construction | Lecture 9 | Constraint ResolutionCompiler Construction | Lecture 9 | Constraint Resolution
Compiler Construction | Lecture 9 | Constraint ResolutionEelco Visser
Ā 
Compiler Construction | Lecture 8 | Type Constraints
Compiler Construction | Lecture 8 | Type ConstraintsCompiler Construction | Lecture 8 | Type Constraints
Compiler Construction | Lecture 8 | Type ConstraintsEelco Visser
Ā 
Compiler Construction | Lecture 7 | Type Checking
Compiler Construction | Lecture 7 | Type CheckingCompiler Construction | Lecture 7 | Type Checking
Compiler Construction | Lecture 7 | Type CheckingEelco Visser
Ā 
Compiler Construction | Lecture 6 | Introduction to Static Analysis
Compiler Construction | Lecture 6 | Introduction to Static AnalysisCompiler Construction | Lecture 6 | Introduction to Static Analysis
Compiler Construction | Lecture 6 | Introduction to Static AnalysisEelco Visser
Ā 
Compiler Construction | Lecture 5 | Transformation by Term Rewriting
Compiler Construction | Lecture 5 | Transformation by Term RewritingCompiler Construction | Lecture 5 | Transformation by Term Rewriting
Compiler Construction | Lecture 5 | Transformation by Term RewritingEelco Visser
Ā 

More from Eelco Visser (20)

CS4200 2019 | Lecture 5 | Transformation by Term Rewriting
CS4200 2019 | Lecture 5 | Transformation by Term RewritingCS4200 2019 | Lecture 5 | Transformation by Term Rewriting
CS4200 2019 | Lecture 5 | Transformation by Term Rewriting
Ā 
CS4200 2019 | Lecture 4 | Syntactic Services
CS4200 2019 | Lecture 4 | Syntactic ServicesCS4200 2019 | Lecture 4 | Syntactic Services
CS4200 2019 | Lecture 4 | Syntactic Services
Ā 
CS4200 2019 | Lecture 3 | Parsing
CS4200 2019 | Lecture 3 | ParsingCS4200 2019 | Lecture 3 | Parsing
CS4200 2019 | Lecture 3 | Parsing
Ā 
CS4200 2019 | Lecture 2 | syntax-definition
CS4200 2019 | Lecture 2 | syntax-definitionCS4200 2019 | Lecture 2 | syntax-definition
CS4200 2019 | Lecture 2 | syntax-definition
Ā 
CS4200 2019 Lecture 1: Introduction
CS4200 2019 Lecture 1: IntroductionCS4200 2019 Lecture 1: Introduction
CS4200 2019 Lecture 1: Introduction
Ā 
A Direct Semantics of Declarative Disambiguation Rules
A Direct Semantics of Declarative Disambiguation RulesA Direct Semantics of Declarative Disambiguation Rules
A Direct Semantics of Declarative Disambiguation Rules
Ā 
Declarative Type System Specification with Statix
Declarative Type System Specification with StatixDeclarative Type System Specification with Statix
Declarative Type System Specification with Statix
Ā 
Compiler Construction | Lecture 17 | Beyond Compiler Construction
Compiler Construction | Lecture 17 | Beyond Compiler ConstructionCompiler Construction | Lecture 17 | Beyond Compiler Construction
Compiler Construction | Lecture 17 | Beyond Compiler Construction
Ā 
Domain Specific Languages for Parallel Graph AnalytiX (PGX)
Domain Specific Languages for Parallel Graph AnalytiX (PGX)Domain Specific Languages for Parallel Graph AnalytiX (PGX)
Domain Specific Languages for Parallel Graph AnalytiX (PGX)
Ā 
Compiler Construction | Lecture 15 | Memory Management
Compiler Construction | Lecture 15 | Memory ManagementCompiler Construction | Lecture 15 | Memory Management
Compiler Construction | Lecture 15 | Memory Management
Ā 
Compiler Construction | Lecture 14 | Interpreters
Compiler Construction | Lecture 14 | InterpretersCompiler Construction | Lecture 14 | Interpreters
Compiler Construction | Lecture 14 | Interpreters
Ā 
Compiler Construction | Lecture 13 | Code Generation
Compiler Construction | Lecture 13 | Code GenerationCompiler Construction | Lecture 13 | Code Generation
Compiler Construction | Lecture 13 | Code Generation
Ā 
Compiler Construction | Lecture 12 | Virtual Machines
Compiler Construction | Lecture 12 | Virtual MachinesCompiler Construction | Lecture 12 | Virtual Machines
Compiler Construction | Lecture 12 | Virtual Machines
Ā 
Compiler Construction | Lecture 11 | Monotone Frameworks
Compiler Construction | Lecture 11 | Monotone FrameworksCompiler Construction | Lecture 11 | Monotone Frameworks
Compiler Construction | Lecture 11 | Monotone Frameworks
Ā 
Compiler Construction | Lecture 10 | Data-Flow Analysis
Compiler Construction | Lecture 10 | Data-Flow AnalysisCompiler Construction | Lecture 10 | Data-Flow Analysis
Compiler Construction | Lecture 10 | Data-Flow Analysis
Ā 
Compiler Construction | Lecture 9 | Constraint Resolution
Compiler Construction | Lecture 9 | Constraint ResolutionCompiler Construction | Lecture 9 | Constraint Resolution
Compiler Construction | Lecture 9 | Constraint Resolution
Ā 
Compiler Construction | Lecture 8 | Type Constraints
Compiler Construction | Lecture 8 | Type ConstraintsCompiler Construction | Lecture 8 | Type Constraints
Compiler Construction | Lecture 8 | Type Constraints
Ā 
Compiler Construction | Lecture 7 | Type Checking
Compiler Construction | Lecture 7 | Type CheckingCompiler Construction | Lecture 7 | Type Checking
Compiler Construction | Lecture 7 | Type Checking
Ā 
Compiler Construction | Lecture 6 | Introduction to Static Analysis
Compiler Construction | Lecture 6 | Introduction to Static AnalysisCompiler Construction | Lecture 6 | Introduction to Static Analysis
Compiler Construction | Lecture 6 | Introduction to Static Analysis
Ā 
Compiler Construction | Lecture 5 | Transformation by Term Rewriting
Compiler Construction | Lecture 5 | Transformation by Term RewritingCompiler Construction | Lecture 5 | Transformation by Term Rewriting
Compiler Construction | Lecture 5 | Transformation by Term Rewriting
Ā 

Recently uploaded

šŸ¬ The future of MySQL is Postgres šŸ˜
šŸ¬  The future of MySQL is Postgres   šŸ˜šŸ¬  The future of MySQL is Postgres   šŸ˜
šŸ¬ The future of MySQL is Postgres šŸ˜RTylerCroy
Ā 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
Ā 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
Ā 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
Ā 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
Ā 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
Ā 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
Ā 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
Ā 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
Ā 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
Ā 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
Ā 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
Ā 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
Ā 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
Ā 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
Ā 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
Ā 
Scaling API-first ā€“ The story of a global engineering organization
Scaling API-first ā€“ The story of a global engineering organizationScaling API-first ā€“ The story of a global engineering organization
Scaling API-first ā€“ The story of a global engineering organizationRadu Cotescu
Ā 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
Ā 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
Ā 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
Ā 

Recently uploaded (20)

šŸ¬ The future of MySQL is Postgres šŸ˜
šŸ¬  The future of MySQL is Postgres   šŸ˜šŸ¬  The future of MySQL is Postgres   šŸ˜
šŸ¬ The future of MySQL is Postgres šŸ˜
Ā 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
Ā 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
Ā 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Ā 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
Ā 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
Ā 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
Ā 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
Ā 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
Ā 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Ā 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Ā 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
Ā 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
Ā 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
Ā 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
Ā 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
Ā 
Scaling API-first ā€“ The story of a global engineering organization
Scaling API-first ā€“ The story of a global engineering organizationScaling API-first ā€“ The story of a global engineering organization
Scaling API-first ā€“ The story of a global engineering organization
Ā 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
Ā 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
Ā 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
Ā 

Model-Driven Software Dev Intro

  • 1. Model-Driven Software Development Lecture1: Introduction & Overview Course IN4308 Eelco Visser Master Computer Science http://eelcovisser.org Delft University of Technology Wednesday, February 3, 2010
  • 2. Source: Automatiseringsgids January 16, 2010 Wednesday, February 3, 2010
  • 3. 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ā€ Wednesday, February 3, 2010
  • 4. Software Engineering implement Problem Solution Domain Domain validate Wednesday, February 3, 2010
  • 6. "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. Wednesday, February 3, 2010
  • 7. What do programming languages provide to reduce attention to the irrelevan? Wednesday, February 3, 2010
  • 8. 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 Wednesday, February 3, 2010
  • 9. 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 Wednesday, February 3, 2010
  • 10. 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) Wednesday, February 3, 2010
  • 11. 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) */ Wednesday, February 3, 2010
  • 12. Abstractions in Progamming Languages - Structured control-ļ¬‚ow ā˜… if-then-else, while - Procedural abstraction ā˜… procedures, ļ¬rst-class functions (closures) - Memory management ā˜… garbage collection - Data abstraction ā˜… abstract data types, objects - Modules ā˜… inheritance, traits, mixins Wednesday, February 3, 2010
  • 13. Abstraction Scala garbage collection objects Programming Languages expressions structured control-ļ¬‚ow procedures machine Wednesday, February 3, 2010
  • 14. Linguistic Abstraction design abstraction language A language B use new abstraction identify pattern Wednesday, February 3, 2010
  • 15. High-level languages reduce problem/solution gap Problem HLL Machine Domain Wednesday, February 3, 2010
  • 16. Do HLLs eliminate all irrelevant detail? What about - data persistence - data services - concurrency - distribution - access control - data invariants - workļ¬‚ow - ... Wednesday, February 3, 2010
  • 17. What is the next level of abstraction? Problem HLL Machine Domain Wednesday, February 3, 2010
  • 18. Model-Driven Software Development Problem Model HLL Machine Domain models further reduce gap between problem domain and implementation Wednesday, February 3, 2010
  • 19. What is a model? Wednesday, February 3, 2010
  • 20. What is a model? model thing abstraction of thing abstraction = forgetting details Wednesday, February 3, 2010
  • 21. What is a model? ā€œA model is a simpliļ¬cation 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 Wednesday, February 3, 2010
  • 22. What is a model? ā€œA model is an abstraction of a (real or language based) system allowing predictions or inferences to be made.ā€ Kuehne Wednesday, February 3, 2010
  • 23. What is a model? ā€œModels help in developing artefacts by providing information about the consequences of building those artefacts before they are actually made.ā€ Ludewig Wednesday, February 3, 2010
  • 24. What is a model? ā€œA model of a system is a description or speciļ¬cation of that system and its environment for some certain purpose.ā€ OMG Wednesday, February 3, 2010
  • 25. What is a model? A model - is a simpliļ¬cation of a system ā˜… abstraction, description, speciļ¬cation, information - can answer questions in place of actual system ā˜… analysis, inference, predictions - is used for a purpose ā˜… understanding, planing, risk analysis, ... Wednesday, February 3, 2010
  • 26. A model is a UML diagram simpliļ¬cation? analysis? purpose? Wednesday, February 3, 2010
  • 27. What is a model about? - Structure ā˜… Data ā˜… Architecture ā˜… Conļ¬guration - Behaviour ā˜… User interface ā˜… Access control ā˜… Business process - About any aspects of a system Wednesday, February 3, 2010
  • 28. A model can be a UML diagram ... Wednesday, February 3, 2010
  • 29. 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 purpose of abstraction, analysis, etc. Wednesday, February 3, 2010
  • 30. For what purposes are models used? Description - of something that exists Analysis - understanding of properties Blueprint - guidelines to build something Speciļ¬cation - precise instruction for construction (code gen) Wednesday, February 3, 2010
  • 31. Model-Driven Architecture (MDA) Vision from OMG - Models at different level of abstraction ā˜… Platform Independent Model (PIM) ā˜… Platform Speciļ¬c 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ā€™ Wednesday, February 3, 2010
  • 32. ā€˜Formal Methodsā€™ Logic Problem HLL Machine Domain Wednesday, February 3, 2010
  • 33. 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 Wednesday, February 3, 2010
  • 34. Domain-Speciļ¬c Languages Problem DSL HLL Machine Domain domain-speciļ¬c languages: models specialized to an application domain Wednesday, February 3, 2010
  • 35. DSLs provide domain-speciļ¬c ... Abstractions ā˜… directly represent domain concepts Concrete syntax ā˜… natural notation Optimization ā˜… based on domain assumptions Error checking ā˜… report errors in terms of domain concepts Tool support ā˜… interpreter, compiler, code generator, IDE Wednesday, February 3, 2010
  • 36. Example Domain-Speciļ¬c Languages (1) Spreadsheet ā˜… formulas, macros Querying ā˜… SQL, XQuery, XPath Graph layout ā˜… GraphViz Web ā˜… HTML, CSS, RSS, XML, XSLT ā˜… Ruby/Rails, JSP, ASP, JSF, WebDSL Wednesday, February 3, 2010
  • 37. Example Domain-Speciļ¬c Languages (2) Games ā˜… Lua, UnrealScript Modeling ā˜… UML, OCL, QVT Language processing ā˜… YACC, LEX, RegExp, ANTLR, SDF ā˜… TXL, ASF+SDF, Stratego Wednesday, February 3, 2010
  • 38. Transformation Model analysis Model migration Model construct extract System Wednesday, February 3, 2010
  • 39. External DSL Dedicated language ā˜… independent of host/target language (portable) ā˜… implementation with interpreter or compiler Advantages ā˜… language tuned to domain ā˜… domain-speciļ¬c errors, analysis, optimizations Disadvantages ā˜… cost of learning new language ā˜… cost of maintaining language Wednesday, February 3, 2010
  • 40. 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-speciļ¬c errors, analysis, optimization Wednesday, February 3, 2010
  • 42. Course Goal Learn to design and implement domain-speciļ¬c languages Understand DSL design choices and make reasoned decisions about their application Wednesday, February 3, 2010
  • 43. Application DSL Domain domain analysis language deļ¬nition Programming abstraction Language Patterns Design Wednesday, February 3, 2010
  • 44. Course Ingredients Lectures (14x) Designs (2x) Cases (6x) Exams (2x) Wednesday, February 3, 2010
  • 45. Lectures (14x) Note: no lecture in week 4, moved to week 8 Wednesday, February 3, 2010
  • 46. Domain Analysis & Data Modeling Lecture 2 Wednesday, February 3, 2010
  • 47. Abstractions for the Web Lectures 3-5 Wednesday, February 3, 2010
  • 48. Language Workbenches Lecture 6 Wednesday, February 3, 2010
  • 49. Language Modeling Lectures 6-7 Wednesday, February 3, 2010
  • 50. Transformation, Generation, Analysis Lectures 8-10 Wednesday, February 3, 2010
  • 51. Customization Model generate customize Code Lecture 10 Wednesday, February 3, 2010
  • 52. Advanced Topics - Economics ā˜… costs and beneļ¬ts of developing (with) DSLs - Evolution ā˜… maintenance of models and languages - Portability ā˜… supporting multiple platforms - Internal DSLs ā˜… library as a language - Language composition ā˜… combining multiple DSLs Lectures 12-14 Wednesday, February 3, 2010
  • 54. Designs (= lab project in pairs) Design 1 ā˜… Web Application with WebDSL ā€¢ domain analysis ā€¢ software development with a DSL Design 2 ā˜… DSL with Stratego & Spoofax/IMP ā€¢ design and implement a DSL ā€¢ use rule-based DSLs for language deļ¬nition You propose web app and language to design ā˜… (We can give tips if youā€™re stuck) Wednesday, February 3, 2010
  • 56. Cases (= individual home work assignments) - Goals ā˜… understand and apply modeling approaches ā˜… solve small design problems ā˜… compare alternative solutions - Six cases ā˜… domain analysis and data modeling ā˜… web abstractions ā˜… language modeling ā˜… generation, transformation, analysis ā˜… customization ā˜… advanced topic Wednesday, February 3, 2010
  • 58. Exams Goals - test understanding of course material - small design problems - comparison of approaches When - midterm (after period 3) - ļ¬nal (after period 4) - if(midterm >= 6) { make half of ļ¬nal exam } Wednesday, February 3, 2010
  • 59. Grading design := 0.4 * design1 + 0.6 * design2 exam := if(exam1 >= 6) { (exam1 + exam2)/2 } } else { exam2 } case := average(i : 1 to 6) { case[i] } final := 0.4 * design + 0.2 * case + 0.4 * exam pass := design1 >= 6 && design2 >= 6 && exam >= 6 && [c | c in case where c >= 6].length >= 4 Wednesday, February 3, 2010
  • 60. Feedback This is a new course Iā€™d like to get feedback early Not when it is too late to ļ¬x Volunteers for feedback group? Short meeting Thursdays at start of lab Wednesday, February 3, 2010
  • 61. Website http://department.st.ewi.tudelft.nl/course/IN4308 Wednesday, February 3, 2010
  • 62. Schedule Lab this week: ā˜… Find a partner ā˜… Make design proposal for a web application ā˜… WebDSL tutorial Read ā˜… Czarnecki: Overview of Generative Development ā˜… Muller et al.: Modeling Modeling Next week ā˜… Domain analysis & data modeling No lecture week 4, moved to week 8! Wednesday, February 3, 2010