SlideShare uma empresa Scribd logo
1 de 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-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

Wednesday, February 3, 2010
Abstraction                                              Scala
                                        garbage collection

                              objects


                         Programming Languages
       expressions                                 structured
                                                  control-flow

                                  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
               -       workflow
               -       ...

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 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




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 specification of that system
   and its environment for some certain purpose.” OMG




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




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




                                                         simplification?
                                                               analysis?
                                                             purpose?
Wednesday, February 3, 2010
What is a model about?


               -       Structure
                       ★ Data
                       ★ Architecture
                       ★ Configuration

               -       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
               Specification
               -       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 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’


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-Specific Languages




  Problem
                                DSL            HLL            Machine
  Domain




   domain-specific languages: models specialized to an application domain
Wednesday, February 3, 2010
DSLs provide domain-specific ...
               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-Specific 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-Specific 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-specific 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-specific errors, analysis, optimization

Wednesday, February 3, 2010
This Course

Wednesday, February 3, 2010
Course Goal




   Learn to design and implement
     domain-specific languages

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




                                                                 language definition
                  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 benefits 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 definition

               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)
               -       final (after period 4)
               -       if(midterm >= 6) { make half of final 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 fix


               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

Mais conteúdo relacionado

Mais procurados

Software development life cycle
Software development life cycleSoftware development life cycle
Software development life cycleA Subbiah
 
Software testing.ppt
Software testing.pptSoftware testing.ppt
Software testing.pptKomal Garg
 
Capability maturity model cmm lecture 8
Capability maturity model cmm lecture 8Capability maturity model cmm lecture 8
Capability maturity model cmm lecture 8Abdul Basit
 
Software Engineering : Requirement Analysis & Specification
Software Engineering : Requirement Analysis & SpecificationSoftware Engineering : Requirement Analysis & Specification
Software Engineering : Requirement Analysis & SpecificationAjit Nayak
 
Software Metrics - Software Engineering
Software Metrics - Software EngineeringSoftware Metrics - Software Engineering
Software Metrics - Software EngineeringDrishti Bhalla
 
Software Engineering- Requirement Elicitation and Specification
Software Engineering- Requirement Elicitation and SpecificationSoftware Engineering- Requirement Elicitation and Specification
Software Engineering- Requirement Elicitation and SpecificationNishu Rastogi
 
Aspect oriented architecture
Aspect oriented architecture Aspect oriented architecture
Aspect oriented architecture tigneb
 
What Is Functional Testing?
What Is Functional Testing?What Is Functional Testing?
What Is Functional Testing?QA InfoTech
 
formal verification
formal verificationformal verification
formal verificationToseef Aslam
 
Introduction to Software Engineering
Introduction to Software EngineeringIntroduction to Software Engineering
Introduction to Software EngineeringMajane Padua
 
Software Testing Basics
Software Testing BasicsSoftware Testing Basics
Software Testing BasicsBelal Raslan
 
Software Development Life Cycle
Software Development Life CycleSoftware Development Life Cycle
Software Development Life CycleSlideshare
 
Software Engineering concept
Software Engineering concept Software Engineering concept
Software Engineering concept Atamjitsingh92
 
Architecture design in software engineering
Architecture design in software engineeringArchitecture design in software engineering
Architecture design in software engineeringPreeti Mishra
 
Software Development Life Cycle-SDLC
Software Development Life Cycle-SDLCSoftware Development Life Cycle-SDLC
Software Development Life Cycle-SDLCAdeel Rasheed
 

Mais procurados (20)

Software development life cycle
Software development life cycleSoftware development life cycle
Software development life cycle
 
Software development process models
Software development process modelsSoftware development process models
Software development process models
 
Software testing.ppt
Software testing.pptSoftware testing.ppt
Software testing.ppt
 
Capability maturity model cmm lecture 8
Capability maturity model cmm lecture 8Capability maturity model cmm lecture 8
Capability maturity model cmm lecture 8
 
Software Engineering : Requirement Analysis & Specification
Software Engineering : Requirement Analysis & SpecificationSoftware Engineering : Requirement Analysis & Specification
Software Engineering : Requirement Analysis & Specification
 
Software Metrics - Software Engineering
Software Metrics - Software EngineeringSoftware Metrics - Software Engineering
Software Metrics - Software Engineering
 
Software Engineering- Requirement Elicitation and Specification
Software Engineering- Requirement Elicitation and SpecificationSoftware Engineering- Requirement Elicitation and Specification
Software Engineering- Requirement Elicitation and Specification
 
Quality Assurance in Software Ind.
Quality Assurance in Software Ind.Quality Assurance in Software Ind.
Quality Assurance in Software Ind.
 
Aspect oriented architecture
Aspect oriented architecture Aspect oriented architecture
Aspect oriented architecture
 
What Is Functional Testing?
What Is Functional Testing?What Is Functional Testing?
What Is Functional Testing?
 
Quality software models
Quality software modelsQuality software models
Quality software models
 
formal verification
formal verificationformal verification
formal verification
 
Introduction to Software Engineering
Introduction to Software EngineeringIntroduction to Software Engineering
Introduction to Software Engineering
 
Software Testing Basics
Software Testing BasicsSoftware Testing Basics
Software Testing Basics
 
Software Development Life Cycle
Software Development Life CycleSoftware Development Life Cycle
Software Development Life Cycle
 
Software Engineering
Software EngineeringSoftware Engineering
Software Engineering
 
Software Engineering concept
Software Engineering concept Software Engineering concept
Software Engineering concept
 
Architecture design in software engineering
Architecture design in software engineeringArchitecture design in software engineering
Architecture design in software engineering
 
Software Development Life Cycle-SDLC
Software Development Life Cycle-SDLCSoftware Development Life Cycle-SDLC
Software Development Life Cycle-SDLC
 
Chapter 01
Chapter 01Chapter 01
Chapter 01
 

Destaque

Agile MDD
Agile MDDAgile MDD
Agile MDDfntnhd
 
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
 

Destaque (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
 

Semelhante a 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.
 
International journal of compiling
International journal of compilingInternational journal of compiling
International journal of compilingAndivann
 
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
 
ADLUG 2012: Linking Linked Data
ADLUG 2012: Linking Linked DataADLUG 2012: Linking Linked Data
ADLUG 2012: Linking Linked DataAndrea Gazzarini
 
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
 

Semelhante a 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
 

Mais de 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
 

Mais de 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
 

Último

Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
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
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
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
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
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
 
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
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
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
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
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
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 

Último (20)

Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
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
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
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
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
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
 
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
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
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
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
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
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 

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-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 Wednesday, February 3, 2010
  • 13. Abstraction Scala garbage collection objects Programming Languages expressions structured control-flow 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 - workflow - ... 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 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 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 specification of that system and its environment for some certain purpose.” OMG Wednesday, February 3, 2010
  • 25. 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, ... Wednesday, February 3, 2010
  • 26. A model is a UML diagram simplification? analysis? purpose? Wednesday, February 3, 2010
  • 27. What is a model about? - Structure ★ Data ★ Architecture ★ Configuration - 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 Specification - 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 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’ 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-Specific Languages Problem DSL HLL Machine Domain domain-specific languages: models specialized to an application domain Wednesday, February 3, 2010
  • 35. DSLs provide domain-specific ... 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-Specific 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-Specific 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-specific 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-specific errors, analysis, optimization Wednesday, February 3, 2010
  • 42. Course Goal Learn to design and implement domain-specific languages Understand DSL design choices and make reasoned decisions about their application Wednesday, February 3, 2010
  • 43. Application DSL Domain domain analysis language definition 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 benefits 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 definition 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) - final (after period 4) - if(midterm >= 6) { make half of final 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 fix 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