SlideShare uma empresa Scribd logo
1 de 42
Composing

Domain-Specific Languages

            Eelco Visser
      Delft University of Technology
           http://eelcovisser.org

                12/11/2009
      Technical University Eindhoven
Software Engineering




                implement
Problem                          Solution
Domain                           Domain
                  validate
Programming Languages
Abstraction                  Scala



     Programming Languages



machine
Abstraction                                     Scala
                        garbage collection

              objects


      Programming Languages
expressions                        structured
                                  control-flow

                  procedures
machine
Problem
          GPL   Machine
Domain
The Next Level of Abstraction?




           Formal Methods
Spec




Problem
          GPL    Machine
Domain
Spec




Problem
          GPL    Machine
Domain
The Next Level of Abstraction?




   Domain-Specific Languages
The Next Level of Abstraction?


SQL

   Domain-Specific Languages
                                 CFG (BNF)

                          RegExp
Problem
                 DSL                 GPL             Machine
Domain




          Domain-Specific Languages: Specialization
Software System




Composition of Specialized Sub-domains
Software System




  Separation of Concerns



Composition of Specialized Sub-domains
Loose Coupling




Lack of consistency checks
Thesis


         Separation of Concerns

                requires

          Linguistic Integration
Case
                 Study




World Wide Web
where does that link point?
is that URL unique?




                      who may edit this entry?
                                                   where is data stored?
request

Client                  Server


            response




         Architecture
quest   Convert Request
                          Access Control   Validate Forms
          Parameters




        Render Page Or
                                           Handle Actions
           Redirect
ponse



                                              Update
                                             Database
Access                          Data
  Navigation
quest          Convert Request
                                   Control                     Validation
                                   Access Control   Validate Forms
                 Parameters




    Forms                        Data Model                   Actions
               Render Page Or
                                                    Handle Actions
                  Redirect
ponse

                                                              Object
     Page
                                 Data Binding              Relational
   Templates
                                                            Mapping
                                                       Update
                                                      Database
Access              Data
Navigation
                 Control           Validation



  Forms        Data Model            Actions



                                    Object
  Page
              Data Binding         Relational
Templates
                                    Mapping

      (Some) Concerns in Web Applications
Access      Data
Navigation
             Control   Validation


             Data
  Forms                 Actions
             Model

                        Object
  Page        Data
                       Relational
Templates    Binding
                        Mapping




               data model             entity class         classes
                   orm                    JPA           active record
                 actions               Java/Seam             Ruby
             data validation
               navigation                servlets        controllers
             page templates         JavaServer Faces
                  forms                  JSF tags      embedded html
              data binding             JSF + Seam
             access control               Acegi
Access      Data
Navigation
             Control   Validation


             Data
  Forms                 Actions
             Model

                        Object
  Page        Data
                       Relational
Templates    Binding
                        Mapping




                          <s:link view="/entry.xhtml"
                               value="#{entry.title}"
                               propagation="none">
                               <f:param name="entry" value="#{entry.id}"/>
                          </s:link>

@Name("entry")
public class EntryBean implements EntryBeanInterface {
  @RequestParameter("entry")
  private Long entryId;
}
Access      Data
Navigation
             Control   Validation


             Data
  Forms                 Actions
             Model

                        Object
  Page        Data
                       Relational
Templates    Binding
                        Mapping




                   map.root :controller => "homme" # should be "home"




                                                    http://zef.me/2308/when-rails-fails
Access      Data
Navigation
             Control   Validation


             Data
  Forms                 Actions
             Model

                        Object
  Page        Data
                       Relational
Templates    Binding
                        Mapping




               data model             entity class          classes
                   orm                    JPA            active record
                 actions               Java/Seam
                                             boilerplate code Ruby
             data validation
               navigation                       loose coupling
                                         servlets          controllers
             page templates         JavaServer Faces
                  forms                no/little consistency checking
                                         JSF tags        embedded html
              data binding             JSF + Seam
             access control               Acegi
Access      Data
Navigation
             Control   Validation


             Data
  Forms                 Actions
             Model

                        Object
  Page        Data
                       Relational
Templates    Binding
                        Mapping




                  - separate languages for separate concerns

                  - linguistically integrated

                  - compile-time consistency checking

                  - 100% code generation (no scaffolding)
Access      Data
Navigation
             Control   Validation


  Forms
             Data
             Model
                        Actions     entity Blog {
                                      name :: String (id)
                        Object
  Page
Templates
              Data
             Binding
                       Relational     entries -> Set<Entry>
                        Mapping
                                      authors -> Set<User>
                                    }
                                    entity Entry {
                                      url     :: String (id)
                                      title   :: String (name)
                                      text    :: WikiText
                                      blog    -> Blog (inverse=Blog.entries)
                                      author -> User (inverse=User.entries)
                                      created :: DateTime
                                    }
                                    entity User {
                                      username :: String
                                      password :: Secret
                                      blogs       -> Set<Blog> (inverse=Blog.authors)
                                      entries     -> Set<Entry> (inverse=Entry.author)
                                    }
Access      Data
Navigation
             Control   Validation


             Data
  Forms                 Actions
             Model

                        Object
  Page        Data
                       Relational
Templates    Binding
                        Mapping




                                    define page entry(e : Entry) {
                                     header{output(e.title)}

                                        output(e.text)

                                        “Posted by “ output(e.author)
                                        “ on “ output(e.created)

                                        navigate(editentry(e)){“Edit”}
                                    }
Access      Data
Navigation
             Control   Validation


             Data
  Forms                 Actions
             Model


                                    define page editentry(e : Entry) {
                        Object
  Page        Data
                       Relational
Templates    Binding
                        Mapping
                                      form{
                                        input(e.url)
                                        input(e.title)
                                        input(e.text)
                                        input(e.author)
                                        input(e.created)
                                        action(“Save”, action{
                                         return entry(e);
                                        })
                                      }
                                    }
Access      Data
Navigation
             Control   Validation


             Data
  Forms                 Actions
             Model

                        Object
  Page        Data
                       Relational
Templates    Binding
                        Mapping




                                    entity Entry {
                                      url validate(isUniqueEntry(this),
                                       “Entry with that URL already exists”)
                                    }
Access      Data
Navigation
             Control   Validation


  Forms
             Data
                        Actions
                                    access control rules
             Model


  Page        Data
                        Object
                       Relational
                                    principal is User
Templates    Binding
                        Mapping      with credentials username, password

                                    rule page entry(e : Entry) {
                                      !e.private
                                      || principal in e.blog.authors
                                    }

                                    rule page newentry(b : Blog) {
                                      principal in e.blog.authors
                                    }

                                    rule page editentry(e : Entry) {
                                      e.author == principal
                                    }
Access      Data
Navigation
             Control   Validation


             Data
  Forms                 Actions
             Model

                        Object
  Page        Data
                       Relational
Templates    Binding
                        Mapping




                  - separate languages for separate concerns

                  - linguistically integrated

                  - compile-time consistency checking

                  - 100% code generation (no scaffolding)

                  - order of magnitude decrease in code size
http://researchr.org
Access      Data
Navigation
             Control   Validation


             Data
  Forms                 Actions
             Model

                        Object               Stratego/XT
  Page        Data
                       Relational
Templates    Binding
                        Mapping




             Domain-Specific Language Engineering
Access      Data
Navigation
             Control   Validation


             Data
  Forms                 Actions
             Model

                        Object      Stratego/XT
  Page        Data
                       Relational
Templates    Binding
                        Mapping




   WebDSL                            Java
Access      Data
Navigation
             Control   Validation


             Data
  Forms                 Actions
             Model

                        Object               Stratego/XT
  Page        Data
                       Relational
Templates    Binding
                        Mapping




                                     Core
   WebDSL                                     Java
                                    WebDSL
Access      Data
Navigation
             Control   Validation


             Data
  Forms                 Actions
             Model

                        Object               Stratego/XT
  Page        Data
                       Relational
Templates    Binding
                        Mapping




                                             Python



                                     Core
   WebDSL                                     Java
                                    WebDSL



                                              C#
Access      Data
Navigation
             Control   Validation


             Data
  Forms                 Actions
             Model

                        Object                     Stratego/XT
  Page        Data
                       Relational
Templates    Binding
                        Mapping




                                                   Python



                                     Core
   WebDSL                                    PIL    Java
                                    WebDSL



                                                    C#
Access      Data
Navigation
               Control   Validation


               Data
  Forms                   Actions
               Model

                          Object                                           Stratego/XT
  Page          Data
                         Relational
Templates      Binding
                          Mapping



                                      Component-Based Language Engineering
       DM                PIL



                                                                                Python
          UI             PIL



       AC                PIL
                                       +           WebDSL
                                                             Core
                                                            WebDSL
                                                                     PIL         Java



                                                                                 C#




       DV                PIL
Access      Data
Navigation
             Control   Validation


             Data
  Forms                 Actions
             Model


  Page        Data
                        Object
                       Relational   - separate languages for separate concerns
Templates    Binding
                        Mapping     - linguistically integrated
                                    - compile-time consistency checking
                                    - 100% code generation (no scaffolding)
                                    - order of magnitude decrease in code size

                                                        http://webdsl.org




http://strategoxt.org                                 http://researchr.org

Mais conteúdo relacionado

Mais procurados

6910 week 3 - web metircs and tools
6910   week 3 - web metircs and tools6910   week 3 - web metircs and tools
6910 week 3 - web metircs and toolsSeth Garske
 
Architecting solutions connecting to lob applications
Architecting solutions connecting to lob applicationsArchitecting solutions connecting to lob applications
Architecting solutions connecting to lob applicationsmicrosoftasap
 
Practical Functional Javascript
Practical Functional JavascriptPractical Functional Javascript
Practical Functional JavascriptOliver Steele
 
Aras Role Based Clients
Aras Role Based ClientsAras Role Based Clients
Aras Role Based ClientsProdeos
 
Jee技术在移动互联网中的应用
Jee技术在移动互联网中的应用Jee技术在移动互联网中的应用
Jee技术在移动互联网中的应用javabloger
 
PassKit on iOS6
PassKit on iOS6PassKit on iOS6
PassKit on iOS6Craig Dunn
 
Tripit Ajaxworld V5
Tripit Ajaxworld V5Tripit Ajaxworld V5
Tripit Ajaxworld V5rajivmordani
 
PassKit on iOS 6
PassKit on iOS 6PassKit on iOS 6
PassKit on iOS 6Xamarin
 
SharePoint Careers and Introduction to SharePoint 2013 Services and Topology
SharePoint Careers and Introduction to SharePoint 2013 Services and TopologySharePoint Careers and Introduction to SharePoint 2013 Services and Topology
SharePoint Careers and Introduction to SharePoint 2013 Services and TopologyEli Robillard
 
SharePoint 2010 as a Development Platform
SharePoint 2010 as a Development PlatformSharePoint 2010 as a Development Platform
SharePoint 2010 as a Development PlatformAyman El-Hattab
 
Partying with PHP (…and the Microsoft Platform)
Partying with PHP (…and the Microsoft Platform)Partying with PHP (…and the Microsoft Platform)
Partying with PHP (…and the Microsoft Platform)goodfriday
 
Interactive Forms Review - SDN Day 2008 - Las Vegas
Interactive Forms Review - SDN Day 2008 - Las VegasInteractive Forms Review - SDN Day 2008 - Las Vegas
Interactive Forms Review - SDN Day 2008 - Las Vegasdr.j
 
The Fundamentals of HTML5
The Fundamentals of HTML5The Fundamentals of HTML5
The Fundamentals of HTML5DataLeader.io
 
Social Photos - My presentation at Microsoft Tech Day
Social Photos - My presentation at Microsoft Tech DaySocial Photos - My presentation at Microsoft Tech Day
Social Photos - My presentation at Microsoft Tech DayTechMaster Vietnam
 
BI Dashboards with SQL Server
BI Dashboards with SQL ServerBI Dashboards with SQL Server
BI Dashboards with SQL ServerEduardo Castro
 

Mais procurados (19)

6910 week 3 - web metircs and tools
6910   week 3 - web metircs and tools6910   week 3 - web metircs and tools
6910 week 3 - web metircs and tools
 
Laszlo PyCon 2005
Laszlo PyCon 2005Laszlo PyCon 2005
Laszlo PyCon 2005
 
Architecting solutions connecting to lob applications
Architecting solutions connecting to lob applicationsArchitecting solutions connecting to lob applications
Architecting solutions connecting to lob applications
 
Practical Functional Javascript
Practical Functional JavascriptPractical Functional Javascript
Practical Functional Javascript
 
Introduction to Force.com
Introduction to Force.comIntroduction to Force.com
Introduction to Force.com
 
Aras Role Based Clients
Aras Role Based ClientsAras Role Based Clients
Aras Role Based Clients
 
Jee技术在移动互联网中的应用
Jee技术在移动互联网中的应用Jee技术在移动互联网中的应用
Jee技术在移动互联网中的应用
 
PassKit on iOS6
PassKit on iOS6PassKit on iOS6
PassKit on iOS6
 
Tripit Ajaxworld V5
Tripit Ajaxworld V5Tripit Ajaxworld V5
Tripit Ajaxworld V5
 
SharePoint 2010: ECM-ready?
SharePoint 2010: ECM-ready?SharePoint 2010: ECM-ready?
SharePoint 2010: ECM-ready?
 
PassKit on iOS 6
PassKit on iOS 6PassKit on iOS 6
PassKit on iOS 6
 
SharePoint Careers and Introduction to SharePoint 2013 Services and Topology
SharePoint Careers and Introduction to SharePoint 2013 Services and TopologySharePoint Careers and Introduction to SharePoint 2013 Services and Topology
SharePoint Careers and Introduction to SharePoint 2013 Services and Topology
 
SharePoint 2010 as a Development Platform
SharePoint 2010 as a Development PlatformSharePoint 2010 as a Development Platform
SharePoint 2010 as a Development Platform
 
Lombardi intro full
Lombardi intro  full Lombardi intro  full
Lombardi intro full
 
Partying with PHP (…and the Microsoft Platform)
Partying with PHP (…and the Microsoft Platform)Partying with PHP (…and the Microsoft Platform)
Partying with PHP (…and the Microsoft Platform)
 
Interactive Forms Review - SDN Day 2008 - Las Vegas
Interactive Forms Review - SDN Day 2008 - Las VegasInteractive Forms Review - SDN Day 2008 - Las Vegas
Interactive Forms Review - SDN Day 2008 - Las Vegas
 
The Fundamentals of HTML5
The Fundamentals of HTML5The Fundamentals of HTML5
The Fundamentals of HTML5
 
Social Photos - My presentation at Microsoft Tech Day
Social Photos - My presentation at Microsoft Tech DaySocial Photos - My presentation at Microsoft Tech Day
Social Photos - My presentation at Microsoft Tech Day
 
BI Dashboards with SQL Server
BI Dashboards with SQL ServerBI Dashboards with SQL Server
BI Dashboards with SQL Server
 

Destaque

Functional programming
Functional programmingFunctional programming
Functional programmingMartin Skurla
 
Model-Driven Software Development - Web Abstractions 2
Model-Driven Software Development - Web Abstractions 2Model-Driven Software Development - Web Abstractions 2
Model-Driven Software Development - Web Abstractions 2Eelco Visser
 
Investment Banking Book (3rd edition)
Investment Banking Book (3rd edition)Investment Banking Book (3rd edition)
Investment Banking Book (3rd edition)ibtdb-tj
 
Why Is Excel VBA So Important For Banks ?
Why Is Excel VBA So Important For Banks ?Why Is Excel VBA So Important For Banks ?
Why Is Excel VBA So Important For Banks ?Jack Tellington
 
Python for Financial Data Analysis with pandas
Python for Financial Data Analysis with pandasPython for Financial Data Analysis with pandas
Python for Financial Data Analysis with pandasWes McKinney
 
Investment Banking presentation
Investment Banking presentation Investment Banking presentation
Investment Banking presentation Ketan Likhite
 
Python and R for quantitative finance
Python and R for quantitative financePython and R for quantitative finance
Python and R for quantitative financeLuca Sbardella
 
FINANCIAL SYSTEM AND ITS COMPONENTS
FINANCIAL SYSTEM AND ITS COMPONENTSFINANCIAL SYSTEM AND ITS COMPONENTS
FINANCIAL SYSTEM AND ITS COMPONENTSSilony Gupta
 
java Project report online banking system
java Project report online banking systemjava Project report online banking system
java Project report online banking systemVishNu KuNtal
 

Destaque (12)

Functional programming
Functional programmingFunctional programming
Functional programming
 
Model-Driven Software Development - Web Abstractions 2
Model-Driven Software Development - Web Abstractions 2Model-Driven Software Development - Web Abstractions 2
Model-Driven Software Development - Web Abstractions 2
 
Investment Banking Book (3rd edition)
Investment Banking Book (3rd edition)Investment Banking Book (3rd edition)
Investment Banking Book (3rd edition)
 
Why Is Excel VBA So Important For Banks ?
Why Is Excel VBA So Important For Banks ?Why Is Excel VBA So Important For Banks ?
Why Is Excel VBA So Important For Banks ?
 
Domain Specific Languages
Domain Specific LanguagesDomain Specific Languages
Domain Specific Languages
 
Python for Financial Data Analysis with pandas
Python for Financial Data Analysis with pandasPython for Financial Data Analysis with pandas
Python for Financial Data Analysis with pandas
 
Investment Banking presentation
Investment Banking presentation Investment Banking presentation
Investment Banking presentation
 
Python and R for quantitative finance
Python and R for quantitative financePython and R for quantitative finance
Python and R for quantitative finance
 
FINANCIAL SYSTEM AND ITS COMPONENTS
FINANCIAL SYSTEM AND ITS COMPONENTSFINANCIAL SYSTEM AND ITS COMPONENTS
FINANCIAL SYSTEM AND ITS COMPONENTS
 
Investment banking
Investment bankingInvestment banking
Investment banking
 
java Project report online banking system
java Project report online banking systemjava Project report online banking system
java Project report online banking system
 
Slideshare ppt
Slideshare pptSlideshare ppt
Slideshare ppt
 

Semelhante a Composing Domain-Specific Languages

Introduction to share point 2010 development
Introduction to share point 2010 developmentIntroduction to share point 2010 development
Introduction to share point 2010 developmentEric Shupps
 
Java Online Training Institute in Hyderabad - C-Point
Java Online Training Institute in Hyderabad - C-PointJava Online Training Institute in Hyderabad - C-Point
Java Online Training Institute in Hyderabad - C-Pointcpointss
 
Share Point Presentation Introduction To Sharepoint
Share Point Presentation    Introduction To SharepointShare Point Presentation    Introduction To Sharepoint
Share Point Presentation Introduction To Sharepointrpeterson1
 
Migrating Legacy On-Premise Applications to SharePoint Online and Windows Azure
Migrating Legacy On-Premise Applications to SharePoint Online and Windows AzureMigrating Legacy On-Premise Applications to SharePoint Online and Windows Azure
Migrating Legacy On-Premise Applications to SharePoint Online and Windows AzureEric Shupps
 
Mike Taulty MIX10 Silverlight 4 Patterns Frameworks
Mike Taulty MIX10 Silverlight 4 Patterns FrameworksMike Taulty MIX10 Silverlight 4 Patterns Frameworks
Mike Taulty MIX10 Silverlight 4 Patterns Frameworksukdpe
 
Peering through the Clouds - Cloud Architectures You Need to Master
Peering through the Clouds - Cloud Architectures You Need to MasterPeering through the Clouds - Cloud Architectures You Need to Master
Peering through the Clouds - Cloud Architectures You Need to MasterClint Edmonson
 
Toronto Share Point Camp 2009 Social Computing With Share Point & Silverlig...
Toronto Share Point Camp 2009   Social Computing With Share Point & Silverlig...Toronto Share Point Camp 2009   Social Computing With Share Point & Silverlig...
Toronto Share Point Camp 2009 Social Computing With Share Point & Silverlig...Andy Nogueira
 
Introducing SQL Server Data Services
Introducing SQL Server Data ServicesIntroducing SQL Server Data Services
Introducing SQL Server Data Servicesgoodfriday
 
Introducing SQL Server Data Services
Introducing SQL Server Data ServicesIntroducing SQL Server Data Services
Introducing SQL Server Data Servicesgoodfriday
 
Hello SharePoint 2007!!!
Hello SharePoint 2007!!!Hello SharePoint 2007!!!
Hello SharePoint 2007!!!Marwan Tarek
 
SharePoint 2013 - Migrating Legacy On-Premise Solutions to SharePoint Online ...
SharePoint 2013 - Migrating Legacy On-Premise Solutions to SharePoint Online ...SharePoint 2013 - Migrating Legacy On-Premise Solutions to SharePoint Online ...
SharePoint 2013 - Migrating Legacy On-Premise Solutions to SharePoint Online ...Eric Shupps
 
Building Cloud-Based Cross-Platform Mobile Web Apps
Building Cloud-Based Cross-Platform Mobile Web AppsBuilding Cloud-Based Cross-Platform Mobile Web Apps
Building Cloud-Based Cross-Platform Mobile Web AppsJames Pearce
 
WCF, EF, Katmanlı Model
WCF, EF, Katmanlı ModelWCF, EF, Katmanlı Model
WCF, EF, Katmanlı Modelzenithbilisim
 
Architecting For The Windows Azure Platform
Architecting For The Windows Azure PlatformArchitecting For The Windows Azure Platform
Architecting For The Windows Azure PlatformDavid Chou
 
Syllabus PS03CINT05 detailing
Syllabus PS03CINT05 detailingSyllabus PS03CINT05 detailing
Syllabus PS03CINT05 detailingOPENLANE
 
Application architecture for cloud
Application architecture for cloudApplication architecture for cloud
Application architecture for cloudMarco Parenzan
 

Semelhante a Composing Domain-Specific Languages (20)

Introduction to share point 2010 development
Introduction to share point 2010 developmentIntroduction to share point 2010 development
Introduction to share point 2010 development
 
Java Online Training Institute in Hyderabad - C-Point
Java Online Training Institute in Hyderabad - C-PointJava Online Training Institute in Hyderabad - C-Point
Java Online Training Institute in Hyderabad - C-Point
 
Share Point Presentation Introduction To Sharepoint
Share Point Presentation    Introduction To SharepointShare Point Presentation    Introduction To Sharepoint
Share Point Presentation Introduction To Sharepoint
 
Migrating Legacy On-Premise Applications to SharePoint Online and Windows Azure
Migrating Legacy On-Premise Applications to SharePoint Online and Windows AzureMigrating Legacy On-Premise Applications to SharePoint Online and Windows Azure
Migrating Legacy On-Premise Applications to SharePoint Online and Windows Azure
 
Mike Taulty MIX10 Silverlight 4 Patterns Frameworks
Mike Taulty MIX10 Silverlight 4 Patterns FrameworksMike Taulty MIX10 Silverlight 4 Patterns Frameworks
Mike Taulty MIX10 Silverlight 4 Patterns Frameworks
 
Peering through the Clouds - Cloud Architectures You Need to Master
Peering through the Clouds - Cloud Architectures You Need to MasterPeering through the Clouds - Cloud Architectures You Need to Master
Peering through the Clouds - Cloud Architectures You Need to Master
 
Toronto Share Point Camp 2009 Social Computing With Share Point & Silverlig...
Toronto Share Point Camp 2009   Social Computing With Share Point & Silverlig...Toronto Share Point Camp 2009   Social Computing With Share Point & Silverlig...
Toronto Share Point Camp 2009 Social Computing With Share Point & Silverlig...
 
Trakya Üniversitesi Workshop
Trakya Üniversitesi WorkshopTrakya Üniversitesi Workshop
Trakya Üniversitesi Workshop
 
Oracle fusion dba online training
Oracle fusion  dba online trainingOracle fusion  dba online training
Oracle fusion dba online training
 
Introducing SQL Server Data Services
Introducing SQL Server Data ServicesIntroducing SQL Server Data Services
Introducing SQL Server Data Services
 
Introducing SQL Server Data Services
Introducing SQL Server Data ServicesIntroducing SQL Server Data Services
Introducing SQL Server Data Services
 
Hello SharePoint 2007!!!
Hello SharePoint 2007!!!Hello SharePoint 2007!!!
Hello SharePoint 2007!!!
 
SharePoint 2013 - Migrating Legacy On-Premise Solutions to SharePoint Online ...
SharePoint 2013 - Migrating Legacy On-Premise Solutions to SharePoint Online ...SharePoint 2013 - Migrating Legacy On-Premise Solutions to SharePoint Online ...
SharePoint 2013 - Migrating Legacy On-Premise Solutions to SharePoint Online ...
 
Building Cloud-Based Cross-Platform Mobile Web Apps
Building Cloud-Based Cross-Platform Mobile Web AppsBuilding Cloud-Based Cross-Platform Mobile Web Apps
Building Cloud-Based Cross-Platform Mobile Web Apps
 
WCF, EF, Katmanlı Model
WCF, EF, Katmanlı ModelWCF, EF, Katmanlı Model
WCF, EF, Katmanlı Model
 
Architecting For The Windows Azure Platform
Architecting For The Windows Azure PlatformArchitecting For The Windows Azure Platform
Architecting For The Windows Azure Platform
 
Web application
Web applicationWeb application
Web application
 
Syllabus PS03CINT05 detailing
Syllabus PS03CINT05 detailingSyllabus PS03CINT05 detailing
Syllabus PS03CINT05 detailing
 
Xamarin Forms
Xamarin FormsXamarin Forms
Xamarin Forms
 
Application architecture for cloud
Application architecture for cloudApplication architecture for cloud
Application architecture for cloud
 

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

Accelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with PlatformlessAccelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with PlatformlessWSO2
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
4. Cobus Valentine- Cybersecurity Threats and Solutions for the Public Sector
4. Cobus Valentine- Cybersecurity Threats and Solutions for the Public Sector4. Cobus Valentine- Cybersecurity Threats and Solutions for the Public Sector
4. Cobus Valentine- Cybersecurity Threats and Solutions for the Public Sectoritnewsafrica
 
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)Mark Simos
 
A Glance At The Java Performance Toolbox
A Glance At The Java Performance ToolboxA Glance At The Java Performance Toolbox
A Glance At The Java Performance ToolboxAna-Maria Mihalceanu
 
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...Jeffrey Haguewood
 
Infrared simulation and processing on Nvidia platforms
Infrared simulation and processing on Nvidia platformsInfrared simulation and processing on Nvidia platforms
Infrared simulation and processing on Nvidia platformsYoss Cohen
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesBernd Ruecker
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...Karmanjay Verma
 
Irene Moetsana-Moeng: Stakeholders in Cybersecurity: Collaborative Defence fo...
Irene Moetsana-Moeng: Stakeholders in Cybersecurity: Collaborative Defence fo...Irene Moetsana-Moeng: Stakeholders in Cybersecurity: Collaborative Defence fo...
Irene Moetsana-Moeng: Stakeholders in Cybersecurity: Collaborative Defence fo...itnewsafrica
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...panagenda
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integrationmarketing932765
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observabilityitnewsafrica
 
Microservices, Docker deploy and Microservices source code in C#
Microservices, Docker deploy and Microservices source code in C#Microservices, Docker deploy and Microservices source code in C#
Microservices, Docker deploy and Microservices source code in C#Karmanjay Verma
 
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxGenerative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxfnnc6jmgwh
 
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...BookNet Canada
 

Último (20)

Accelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with PlatformlessAccelerating Enterprise Software Engineering with Platformless
Accelerating Enterprise Software Engineering with Platformless
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
4. Cobus Valentine- Cybersecurity Threats and Solutions for the Public Sector
4. Cobus Valentine- Cybersecurity Threats and Solutions for the Public Sector4. Cobus Valentine- Cybersecurity Threats and Solutions for the Public Sector
4. Cobus Valentine- Cybersecurity Threats and Solutions for the Public Sector
 
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
 
A Glance At The Java Performance Toolbox
A Glance At The Java Performance ToolboxA Glance At The Java Performance Toolbox
A Glance At The Java Performance Toolbox
 
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
 
Infrared simulation and processing on Nvidia platforms
Infrared simulation and processing on Nvidia platformsInfrared simulation and processing on Nvidia platforms
Infrared simulation and processing on Nvidia platforms
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architectures
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...
 
Irene Moetsana-Moeng: Stakeholders in Cybersecurity: Collaborative Defence fo...
Irene Moetsana-Moeng: Stakeholders in Cybersecurity: Collaborative Defence fo...Irene Moetsana-Moeng: Stakeholders in Cybersecurity: Collaborative Defence fo...
Irene Moetsana-Moeng: Stakeholders in Cybersecurity: Collaborative Defence fo...
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
 
Microservices, Docker deploy and Microservices source code in C#
Microservices, Docker deploy and Microservices source code in C#Microservices, Docker deploy and Microservices source code in C#
Microservices, Docker deploy and Microservices source code in C#
 
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxGenerative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
 
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
 

Composing Domain-Specific Languages

  • 1. Composing Domain-Specific Languages Eelco Visser Delft University of Technology http://eelcovisser.org 12/11/2009 Technical University Eindhoven
  • 2. Software Engineering implement Problem Solution Domain Domain validate
  • 4. Abstraction Scala Programming Languages machine
  • 5. Abstraction Scala garbage collection objects Programming Languages expressions structured control-flow procedures machine
  • 6. Problem GPL Machine Domain
  • 7. The Next Level of Abstraction? Formal Methods
  • 8. Spec Problem GPL Machine Domain
  • 9. Spec Problem GPL Machine Domain
  • 10. The Next Level of Abstraction? Domain-Specific Languages
  • 11. The Next Level of Abstraction? SQL Domain-Specific Languages CFG (BNF) RegExp
  • 12. Problem DSL GPL Machine Domain Domain-Specific Languages: Specialization
  • 13. Software System Composition of Specialized Sub-domains
  • 14. Software System Separation of Concerns Composition of Specialized Sub-domains
  • 15. Loose Coupling Lack of consistency checks
  • 16. Thesis Separation of Concerns requires Linguistic Integration
  • 17. Case Study World Wide Web
  • 18.
  • 19. where does that link point? is that URL unique? who may edit this entry? where is data stored?
  • 20. request Client Server response Architecture
  • 21. quest Convert Request Access Control Validate Forms Parameters Render Page Or Handle Actions Redirect ponse Update Database
  • 22. Access Data Navigation quest Convert Request Control Validation Access Control Validate Forms Parameters Forms Data Model Actions Render Page Or Handle Actions Redirect ponse Object Page Data Binding Relational Templates Mapping Update Database
  • 23. Access Data Navigation Control Validation Forms Data Model Actions Object Page Data Binding Relational Templates Mapping (Some) Concerns in Web Applications
  • 24. Access Data Navigation Control Validation Data Forms Actions Model Object Page Data Relational Templates Binding Mapping data model entity class classes orm JPA active record actions Java/Seam Ruby data validation navigation servlets controllers page templates JavaServer Faces forms JSF tags embedded html data binding JSF + Seam access control Acegi
  • 25. Access Data Navigation Control Validation Data Forms Actions Model Object Page Data Relational Templates Binding Mapping <s:link view="/entry.xhtml" value="#{entry.title}" propagation="none"> <f:param name="entry" value="#{entry.id}"/> </s:link> @Name("entry") public class EntryBean implements EntryBeanInterface { @RequestParameter("entry") private Long entryId; }
  • 26. Access Data Navigation Control Validation Data Forms Actions Model Object Page Data Relational Templates Binding Mapping map.root :controller => "homme" # should be "home" http://zef.me/2308/when-rails-fails
  • 27. Access Data Navigation Control Validation Data Forms Actions Model Object Page Data Relational Templates Binding Mapping data model entity class classes orm JPA active record actions Java/Seam boilerplate code Ruby data validation navigation loose coupling servlets controllers page templates JavaServer Faces forms no/little consistency checking JSF tags embedded html data binding JSF + Seam access control Acegi
  • 28. Access Data Navigation Control Validation Data Forms Actions Model Object Page Data Relational Templates Binding Mapping - separate languages for separate concerns - linguistically integrated - compile-time consistency checking - 100% code generation (no scaffolding)
  • 29. Access Data Navigation Control Validation Forms Data Model Actions entity Blog { name :: String (id) Object Page Templates Data Binding Relational entries -> Set<Entry> Mapping authors -> Set<User> } entity Entry { url :: String (id) title :: String (name) text :: WikiText blog -> Blog (inverse=Blog.entries) author -> User (inverse=User.entries) created :: DateTime } entity User { username :: String password :: Secret blogs -> Set<Blog> (inverse=Blog.authors) entries -> Set<Entry> (inverse=Entry.author) }
  • 30. Access Data Navigation Control Validation Data Forms Actions Model Object Page Data Relational Templates Binding Mapping define page entry(e : Entry) { header{output(e.title)} output(e.text) “Posted by “ output(e.author) “ on “ output(e.created) navigate(editentry(e)){“Edit”} }
  • 31. Access Data Navigation Control Validation Data Forms Actions Model define page editentry(e : Entry) { Object Page Data Relational Templates Binding Mapping form{ input(e.url) input(e.title) input(e.text) input(e.author) input(e.created) action(“Save”, action{ return entry(e); }) } }
  • 32. Access Data Navigation Control Validation Data Forms Actions Model Object Page Data Relational Templates Binding Mapping entity Entry { url validate(isUniqueEntry(this), “Entry with that URL already exists”) }
  • 33. Access Data Navigation Control Validation Forms Data Actions access control rules Model Page Data Object Relational principal is User Templates Binding Mapping with credentials username, password rule page entry(e : Entry) { !e.private || principal in e.blog.authors } rule page newentry(b : Blog) { principal in e.blog.authors } rule page editentry(e : Entry) { e.author == principal }
  • 34. Access Data Navigation Control Validation Data Forms Actions Model Object Page Data Relational Templates Binding Mapping - separate languages for separate concerns - linguistically integrated - compile-time consistency checking - 100% code generation (no scaffolding) - order of magnitude decrease in code size
  • 36. Access Data Navigation Control Validation Data Forms Actions Model Object Stratego/XT Page Data Relational Templates Binding Mapping Domain-Specific Language Engineering
  • 37. Access Data Navigation Control Validation Data Forms Actions Model Object Stratego/XT Page Data Relational Templates Binding Mapping WebDSL Java
  • 38. Access Data Navigation Control Validation Data Forms Actions Model Object Stratego/XT Page Data Relational Templates Binding Mapping Core WebDSL Java WebDSL
  • 39. Access Data Navigation Control Validation Data Forms Actions Model Object Stratego/XT Page Data Relational Templates Binding Mapping Python Core WebDSL Java WebDSL C#
  • 40. Access Data Navigation Control Validation Data Forms Actions Model Object Stratego/XT Page Data Relational Templates Binding Mapping Python Core WebDSL PIL Java WebDSL C#
  • 41. Access Data Navigation Control Validation Data Forms Actions Model Object Stratego/XT Page Data Relational Templates Binding Mapping Component-Based Language Engineering DM PIL Python UI PIL AC PIL + WebDSL Core WebDSL PIL Java C# DV PIL
  • 42. Access Data Navigation Control Validation Data Forms Actions Model Page Data Object Relational - separate languages for separate concerns Templates Binding Mapping - linguistically integrated - compile-time consistency checking - 100% code generation (no scaffolding) - order of magnitude decrease in code size http://webdsl.org http://strategoxt.org http://researchr.org