SlideShare a Scribd company logo
1 of 13
Download to read offline
MDSD Intro & Overview




     Model-Driven
     Software Development
                                                  Introduction and Overview




       www.mdsd-buch.de
                                                                            Markus Völter
                                                                                        voelter@acm.org
         www.mdsd-book.org                                                               www.voelter.de



         ingenieurbüro für sof twaretechnologie   w w w .voelt er.de            -1-             © 2003 - 2006 M a rk u s Vö l te r




                                                                                      MDSD Intro & Overview

Domain Driven Development

•   Domain Driven Development is about making software
    development more domain-related as opposed to
    computing related. It is also about making software
    development in a certain domain more efficient.


               Domain Concepts                                          Domain Concepts




                                    mental work
                                   of developers




             Software Technology                                       Software Technology
                  Concepts                                                  Concepts




         ingenieurbüro für sof twaretechnologie   w w w .voelt er.de            -2-             © 2003 - 2006 M a rk u s Vö l te r




                                                                                                                                     1
MDSD Intro & Overview

How MDSD works

•   Developer develops model(s)                                               Model
                                                                             Model
    based on certain                                                        Model                   Metamodel


    metamodel(s), expressed
    using a DSL.
•




                                                                                                                               optional, can be repeated
    Using code generation                                                Transformer
                                                                                                   Tranformation
                                                                                                       Rules
    templates, the model is
    transformed to executable
    code.
    • Alternative: Interpretation                                           Model                   Metamodel


•   Optionally, the generated
    code is merged with
    manually written code.                                               Transformer
                                                                                                      Code
                                                                                                    Generation

•
                                                                                                    Templates
    One or more model-to-
    model transformation steps
    may precede code generation.                                                                     Manually
                                                                        Generated Code               Written
                                                                                                      Code
                                                                                                                optional

          ingenieurbüro für sof twaretechnologie   w w w .voelt er.de               -3-             © 2003 - 2006 M a rk u s Vö l te r




                                                                                          MDSD Intro & Overview

Reasons for DDD

•   Software Development is too complex and too
    expensive (now, this is a really new finding ☺) …

    … because:
     • There is too little reuse
     • Technology changes faster than developers can learn
     • Knowledge and practices are hardly captured explicitly
       and made available for reuse
     • Domain experts cannot understand all the technology
       stuff involved in software development

•   DDD aims at attacking some of these problems.
    We shall see how on the following slides.




          ingenieurbüro für sof twaretechnologie   w w w .voelt er.de               -4-             © 2003 - 2006 M a rk u s Vö l te r




                                                                                                                                                           2
MDSD Intro & Overview

What is a „Domain“

•   A definition could be:

        A domain is a bounded area
        of knowledge or interest.

•   Examples (from the world of Software) include:
     • eBanking
     • Embedded Software
     • Web-Based eBusiness Applications
     • Control Software for 4-Cylinder Diesel Engines
     • Astronomical Image Processing Software
•   Domains can have varios „scopes“ as well as various
    „flavours“ – see next slides.




          ingenieurbüro für sof twaretechnologie    w w w .voelt er.de           -5-               © 2003 - 2006 M a rk u s Vö l te r




                                                                                        MDSD Intro & Overview

Hierarchical Structuring of Domains

•   Since Domains can be of any size or granularity, it is
    useful to structure domains hierarchically.

•   Automotive Example:                                                    Automotive
                                                                            Systems


                                               Embedded                  Engine Controllers
                                                Systems
                                                                           Diesel
                                                                                        Gasoline

•   eBanking Example:                                                       4-Cyl




                     web-based

             e-Banking
                         inv.
           money                                   eBusiness
                        bank.
          transfer                                   Apps

                                          Rich
                                         Clients




          ingenieurbüro für sof twaretechnologie    w w w .voelt er.de           -6-               © 2003 - 2006 M a rk u s Vö l te r




                                                                                                                                        3
MDSD Intro & Overview

„Kinds“ of Domains

•   In the context of software development it is also useful to
    distinguish (at least) two kinds of domains:
    • Technical Domains adress key technical issues related
       to software development such as
        • Distribution, Failover and Load-Balancin
        • Persistence and Transactions
        • GUI Design
        • Concurreny and Realtime
    • Functional Domains represent the business/professional
       issues; examples include
        • Banking
        • Human resource management
        • Insurance
        • Engine Controllers
        • Astronomical Telescope Control

          ingenieurbüro für sof twaretechnologie   w w w .voelt er.de                                         -7-                         © 2003 - 2006 M a rk u s Vö l te r




                                                                                                                                MDSD Intro & Overview

Domains in a Software System

•   As a consequence of the classifications on the previous
    slides, a software system typically consists of several
    domains:
                                                                                           Session Handling

                                                                                                                Communication
                                                                            Concurrency
                                                        Persistence




                                                                             Multi-User/
                                                                      GUI




           eBusiness                                                                                                                    System

                   Web Shop


                                  Payment

                                 Catalogue

                               Cross Selling


          ingenieurbüro für sof twaretechnologie   w w w .voelt er.de                                         -8-                         © 2003 - 2006 M a rk u s Vö l te r




                                                                                                                                                                               4
MDSD Intro & Overview

MDSD Core Concepts
             several

                                                               Metametamodel
                                    target
                                                                                       subdomains
                                   software
   design                        architecture
                                                                                                                                        bounded area of
  expertise                                                                                      partial
                                                                composable                                                             knowlege/interest


                                                         knowledge                   multiple
multi-step                       transform                                                          viewpoint
                                                                                                                             Domain
   single-step                        compile                             Model                 semantics
                                                                                                                                                  Ontology
                                             interpret
                 no                                                   precise/
              roundtrip                                                                                     Domain
                                                                     executable
                                                                                                            Specific
                                                                                                           Language


                                                                                                                           graphical
                                                                                           Metamodel
                                                                                                                       textual




                       ingenieurbüro für sof twaretechnologie         w w w .voelt er.de                     -9-                   © 2003 - 2006 M a rk u s Vö l te r




                                                                                                                       MDSD Intro & Overview

Example 1: Model and Metamodel

   interface Sensor {
       operation start():void;
       operation stop():void;
       operation measure():float;
   }
   interface Controller {
       operation reportProblem(Sensor s,
                       String errorDesc ):void;
   }


                                                                          Operation              {ordered}             Parameter
                                     Interface
                                                                      name : String                          *   name : String
                                                                      type : String                              type : String




                                                                                                             *
                                                                                                             *         Exception

                                                                                                                 type : String




                       ingenieurbüro für sof twaretechnologie         w w w .voelt er.de                     - 10 -                © 2003 - 2006 M a rk u s Vö l te r




                                                                                                                                                                        5
MDSD Intro & Overview

Example 2: Model (J2ME apps)




                       [quot;Abortquot;]
                                                                    [quot;Againquot;]                           [quot;Exitquot;]



                                                                                                            Display
                         Form                                                                  CalcResult
        NumberEntry
                                     >> a,b             c: Number;            >> c       [quot;The Result is quot;+c]
     a: Number [quot;aquot;] {a>0}
                                     [quot;Resultquot;]         c=a+b                            {align=center}
     b: Number [quot;bquot;] {b>0}




           ingenieurbüro für sof twaretechnologie       w w w .voelt er.de                - 11 -               © 2003 - 2006 M a rk u s Vö l te r




                                                                                                   MDSD Intro & Overview

Example 2: Metamodel (J2ME apps)


                                                    1     to

                              Element

                                                    1    from



               UIElement                      Calculation                    Start   End

         name : String                  declaredVars: String
                                        expression : String                   outbound                     inbound
                                                                                     *                     *
                                                                                     Flow
     Form                       Display

                         label : String
                         constraints: String
                                                                   AutoFlow                           Button

                             Field                        transportedVars: String           label : String
                                                                                            transportedVars: String
                   varName : String
                   label : String
                   constraints: String




           ingenieurbüro für sof twaretechnologie       w w w .voelt er.de                - 12 -               © 2003 - 2006 M a rk u s Vö l te r




                                                                                                                                                    6
MDSD Intro & Overview

Example 3: Model (Components, Ports, Connectors)
 <system name=”weatherStation”>
   <node name=”main”>
     <container name=”main”>
       <instance name=”controller”
                 type=”Control”/>
     </container>
   </node>        <!-- temperature sensor outside -->
   <node name=”inside”>
                    <connector name=quot;toSensorTempOutsidequot;>
     <container name=”sensorInside”>instance=quot;tempOutsidequot;
                      <providedPort
       <instance name=”tempInside” port=quot;measurementPortquot;>
                 type=”TemperatureSensor”>´
                      <requiredPort instance=quot;controllerquot;
         <param name=”unit” value=”centigrade”/>
                                    port=quot;sensorsPortquot;>
       </instance> </connector>
     </container>   <connector name=quot;fromSensorTempOutsidequot;>
   </node>            <providedPort instance=quot;controllerquot;
   <node name=”outside”>…</node>    port=quot;controllerPortquot;>
                      <requiredPort instance=quot;tempOutsidequot;
                                    port=quot;controllerPort>
                    </connector>
                    <!-- humidity sensor outside -->
                    <connector name=quot;toSensorHumOutsidequot;>…</connector>
                    <connector name=quot;fromSensorHumOutsidequot;>…</connector>
                    <!-- temperature sensor inside -->
                    <connector name=quot;toSensorTempInsidequot;>…</connector>
                    <connector name=quot;fromSensorTempInsidequot;>…</connector>
                  </system>


             ingenieurbüro für sof twaretechnologie    w w w .voelt er.de                - 13 -                 © 2003 - 2006 M a rk u s Vö l te r




                                                                                                  MDSD Intro & Overview

Example 3: Metamodel (Components, Ports, Connectors)

                      Provided                   Required
                                                                                                      ComponentRef
                       PortRef                    PortRef

                        1 source                      1 target                                              1
                                                                                                            *
                                                                                                        Component
                                                                                                         Instance

                                                                                                      name : String
                                    Connector
                                                                                                                  *
                                 id : String
                                                      context Connector
                                                      inv: source.interface == target.interface
                                         *
         1     type

                                                                 *                                *
        Connector
                                      System                                Node                         Container
          Type

                 {open}




        DirectCall                     SharedMemory                       CAN
        Connector                        Connector                      Connector




             ingenieurbüro für sof twaretechnologie    w w w .voelt er.de                - 14 -                 © 2003 - 2006 M a rk u s Vö l te r




                                                                                                                                                     7
MDSD Intro & Overview

Example 4: Workflow Model (UML + Stereotypes)

                                                     <<ProcessObject>>
                                           ReservierungDurchfuehrenPO

  + verfuegbarkeitPruefen( reservierungsBeginn : Date, reservierungsEnde: Date,
                        gewaehlteStationID : String, gewaehlteKfzKlasseID : String ) : Collection
  + getReservierungsParameter() : ReservierungsParameterVO
  + kfzReservieren( reservierungsBeginn : Date, reservierungsEnde: Date,
                 gewaehlteKfzNr : String, mitgliedsNr : String ) : ReservierungBestaetigenVO




          <<ValueObject>>                             <<ValueObject>>                          <<ValueObject>>
  ReservierungBestaetigenVO                 ReservierungsParameterVO                  VerfuegbarkeitPruefenVO

  - Mitglied : String                      - stationen : Collection
  - Station : String                       - kfzKlassen : Collection                - ReservierungsBeginn : Date
  - Kfz : String                                                                    - ReservierungsEnde : Date
  - ReservierungsBeginn : Date                                                      - Station : String
  - ReservierungsEnde : Date                                                        - KfzKlasse : String
                                                                                    - KfzBezeichnung : String
                                                                                    - KfzNr : String



            ingenieurbüro für sof twaretechnologie     w w w .voelt er.de          - 15 -                   © 2003 - 2006 M a rk u s Vö l te r




                                                                                            MDSD Intro & Overview

Example 4: Workflow Model II (UML + Stereotypes)

                  <<ActivityController>>                                                 <<Presentation>>
               BenutzerAnmeldenCtrl                                                 BenutzerAnmelden

                                                                            - kennung : String
          + AnmeldungErfolgreich() : Boolean                                - passwort : String
                                                                            + Weiter()
                                                                            + Ende()



                            <<ProcessObject>>                                            <<ValueObject>>
                       BenutzerAnmeldenPO                                         BenutzerAnmeldenVO

                                                                            - Name : String
          benutzerAnmelden( kennung : String,                               - Passwort : String
                 passwort : String ) : BenutzerAnmeldenVO                   - Kennung : String




                    <<EntityObject>>
                       Benutzer

          - <<Key>> Name : String
          - Passwort : String
          - Kennung : String



            ingenieurbüro für sof twaretechnologie     w w w .voelt er.de          - 16 -                   © 2003 - 2006 M a rk u s Vö l te r




                                                                                                                                                 8
MDSD Intro & Overview

Example 5: Power Grid


                          SomePlace: Generator
                                                                      end11
                              link13                     link14
        T11: Transformer               220KV: Bus
                                                                               transmissionLine1

                 link12


          20KV: Bus                                                                                       end21

                                                    SomeOtherPlace: SwitchingStation
                 link11                                                                                  link21

                                                                                 B21-220KV: Bus
        G11: GenerationElement
                                                                                             link22


                                                                                 T21: Transformer

                                                                                             link23


                                                                                 B22-10KV: Bus

                                                                                             link24


                                                                                               end22




                                                                               end11          end21                               end22
                                                          SomePlace:                                    SomeOtherPlace:
                                                           Generator            transmissionLine1
                                                                                                        SwitchingStation




        ingenieurbüro für sof twaretechnologie   w w w .voelt er.de                      - 17 -                   © 2003 - 2006 M a rk u s Vö l te r




                                                                                                    MDSD Intro & Overview

Example 5: Power Grid Metamodel


                                         1 targetNode     sources 0..*
                          MicroNode                                                   Link
                                         1 sourceNode      targets 0..*
                   parts    0..*



      Generation
                               Transformer                Bus                         Endpoint
       Element
                                                          sourceEndPoint          1           1       targetEndPoint



                                                    targetTransmissionLine        0..1       0..1     sourceTransmissionLine
                                        1 targetNode     sources 0..*
                                                                              Transmission
                          MacroNode                                               Line
                                         1 sourceNode      targets 0..*




                                                    Switching
     Generator              BranchPoint
                                                     Station




        ingenieurbüro für sof twaretechnologie   w w w .voelt er.de                      - 18 -                   © 2003 - 2006 M arku s Vö l te r




                                                                                                                                                       9
MDSD Intro & Overview

MDSD Core Values

•   We prefer to validate software-under-construction
    over validating software requirements

•   We work with domain-specific assets, which can be
    anything from models, components, frameworks,
    generators, to languages and techniques.

•   We strive to automate software construction from
    domain models; therefore we consciously distinguish
    between building software factories and building software
    applications

•   We support the emergence of supply chains for
    software development, which implies domain-specific
    specialization and enables mass customization



          ingenieurbüro für sof twaretechnologie   w w w .voelt er.de   - 19 -             © 2003 - 2006 M arku s Vö l te r




                                                                                 MDSD Intro & Overview

MDSD Core Building Blocks

•   domain analysis

•   meta modelling

•   model-driven generation
       (and: model transformation)

•   template languages

•   domain-driven framework design

•   the principles for agile software development

•   the development and use of Open Source infrastructure




          ingenieurbüro für sof twaretechnologie   w w w .voelt er.de   - 20 -             © 2003 - 2006 M arku s Vö l te r




                                                                                                                              10
MDSD Intro & Overview

MDSD and Requirements/Analysis

 •
                                                                                                                        Model




                                                                                                                                                                  Adapted from Frankel‘s book on MDA
       An often-asked question is: are MDSD
       models the same as requirements                                                              Business Model                  System

       /analysis models?                                                                            (Domain Model)                  Model



        • They can be, but in general, they                                                                            Logical               Physical Model

          are not.                                                                                                      Model                 (Deployment)



        • Analyis/requirements models                                                               Requirements                 Computational

          are non-computational, MDSD                                                                  Model                        Model


          models are compuatational.
                                                                                                                         PIM                       PSM



       somewhere the „intellectual work of development and
       problem solving“ has to be put into the system. Usually, this
       is on the stage from requirements/analysis to (computational)
       MDSD models.

 •     How can MDSD help with requirements?
        • Formalizing Requirements using a DSL is benefitial because
          requirements become unambigious.
                           ingenieurbüro für sof twaretechnologie    w w w .voelt er.de                     - 21 -                  © 2003 - 2006 M arku s Vö l te r




                                                                                                                      MDSD Intro & Overview

MDA and Model Driven Software Development Overview



                 several                     target                        MOF
                                            software
                                          architecture        Metametamodel
                                                                                      subdomains
     design                       Application                                                                                           bounded area of
    expertise                                                                                   partial
                                                                composable                                                             knowlege/interest
PIM, PSM, ....                          QVT
                                                                                    multiple
 multi-step                          transform                                                     viewpoint
                                                                                                                            Domain
     single-step                          compile                        Model                 semantics
                                                                                                                                                  Ontology
                                                 interpret
                    no                                               precise/
                 roundtrip                                                                                 Domain
                                                                    executable
                                                                                                           Specific
                                                                    OCL, Action                           Language
                                                                                                                                       UML+
                                                                     Semantics                                                        Profiles
                                                                                                                          graphical
                                                                                          Metamodel
                                                                                                                      textual




  •     Focus: Platform Independence, (Tool) Interop


                           ingenieurbüro für sof twaretechnologie    w w w .voelt er.de                     - 22 -                  © 2003 - 2006 M arku s Vö l te r




                                                                                                                                                                                                       11
MDSD Intro & Overview

Other related approaches

•   Microsoft’s Software Factories:
    Focus on Reuse, Efficient Development, DSLs

•   Domain-Specific (Visual) Modelling:
    Focus on (Visual) DSLs

•   Generative Programming:
    Focus on Efficiency, “Automatic Manufactoring”, Software
    System Families

•   Language-Oriented Programming:
    Focus on DSLs instead of Frameworks, incl.
    Editor/Debugger Support

                                                                 all basically the same ☺


          ingenieurbüro für sof twaretechnologie   w w w .voelt er.de     - 23 -             © 2003 - 2006 M arku s Vö l te r




                                                                                   MDSD Intro & Overview

MDSD and Agility

•   Agile Manifesto:
    We are uncovering better ways of developing software by
    doing it and helping others do it. Through this work we have
    come to value:
     - Individuals and interactions over processes and tools
     - Working software over comprehensive documentation
     - Customer collaboration over contract negotiation
     - Responding to change over following a plan
    That is, while there is value in the items on the right, we
    value the items on the left more.

•   MDSD-Models are no „paperwork“, they are the code
    which is translated to code automatically

•   Agility does not oppose tools in general – compilers are ok,
    model transformers are a kind of compiler


          ingenieurbüro für sof twaretechnologie   w w w .voelt er.de     - 24 -             © 2003 - 2006 M arku s Vö l te r




                                                                                                                                12
MDSD Intro & Overview

MDSD and Agility II

•   Project automation (ant, cruisecontrol) is ok in „agile minds“,
    so is automation of the writing of repetitive code

•   Automation of the development process makes responding
    to change easier and faster (single source principle).
     • Changes in the model respond to changes in the functional
       requirements
     • Changes in the templates/transformations can be used to
       evolve the architecture

•   The customer on-site can be integrated better, if we have
    languages that are better related to domain concepts as
    opposed to 3GL code or the like.
     • Pair programming between developer and domain expert is
       more realistic.



          ingenieurbüro für sof twaretechnologie   w w w .voelt er.de   - 25 -             © 2003 - 2006 M arku s Vö l te r




                                                                                 MDSD Intro & Overview

MDSD and Agility III

•   Tests can still be written manually (even before generation),
    generators can help is building mocks or scenarios

•   We do not recommend a waterfall that first builds generators
    and then builds apps, rather, both are iteratively evolved in
    parallel.
     • Domains Architectures are based on experience, not
       based on „big design upfront“

•   Developers can do what they can do best:
     • Some deal with applications and customer requirements,
     • Others deal with technical architecture, platforms and
       generators

•   So: There is no problem with Agility and MDSD!



          ingenieurbüro für sof twaretechnologie   w w w .voelt er.de   - 26 -             © 2003 - 2006 M arku s Vö l te r




                                                                                                                              13

More Related Content

What's hot

Developing Simulation &amp; Training Solutions With Cots
Developing Simulation &amp; Training Solutions With CotsDeveloping Simulation &amp; Training Solutions With Cots
Developing Simulation &amp; Training Solutions With CotsSimware
 
Simulation & CBTs: Mixing traditional CBT and low cost simulation in the same...
Simulation & CBTs: Mixing traditional CBT and low cost simulation in the same...Simulation & CBTs: Mixing traditional CBT and low cost simulation in the same...
Simulation & CBTs: Mixing traditional CBT and low cost simulation in the same...Jose Carlos Diaz
 
Animated transitions across UI views
Animated transitions across UI viewsAnimated transitions across UI views
Animated transitions across UI viewsVivian Motti
 
MDE 2.0.: pragmatic model verification and other stories - Habilitation publi...
MDE 2.0.: pragmatic model verification and other stories - Habilitation publi...MDE 2.0.: pragmatic model verification and other stories - Habilitation publi...
MDE 2.0.: pragmatic model verification and other stories - Habilitation publi...Jordi Cabot
 
Web technologies: Model Driven Engineering
Web technologies: Model Driven EngineeringWeb technologies: Model Driven Engineering
Web technologies: Model Driven EngineeringPiero Fraternali
 
Visualize your architecture and information
Visualize your architecture and informationVisualize your architecture and information
Visualize your architecture and informationPeter Norrhall
 
MoDisco Eclipse-OMG Symp 2010
MoDisco Eclipse-OMG Symp 2010MoDisco Eclipse-OMG Symp 2010
MoDisco Eclipse-OMG Symp 2010fmadiot
 
Frozen digit Company Profile
Frozen digit Company ProfileFrozen digit Company Profile
Frozen digit Company ProfileHardy Thomas
 
German in 7 Million Shared Objects
German in 7 Million  Shared ObjectsGerman in 7 Million  Shared Objects
German in 7 Million Shared ObjectsESUG
 
The Human Interface: Making UX An Integral Part of Your Technology Buying Dec...
The Human Interface: Making UX An Integral Part of Your Technology Buying Dec...The Human Interface: Making UX An Integral Part of Your Technology Buying Dec...
The Human Interface: Making UX An Integral Part of Your Technology Buying Dec...Effective
 
Broadway solutions brochure
Broadway solutions brochure Broadway solutions brochure
Broadway solutions brochure David Jones
 

What's hot (12)

Developing Simulation &amp; Training Solutions With Cots
Developing Simulation &amp; Training Solutions With CotsDeveloping Simulation &amp; Training Solutions With Cots
Developing Simulation &amp; Training Solutions With Cots
 
Simulation & CBTs: Mixing traditional CBT and low cost simulation in the same...
Simulation & CBTs: Mixing traditional CBT and low cost simulation in the same...Simulation & CBTs: Mixing traditional CBT and low cost simulation in the same...
Simulation & CBTs: Mixing traditional CBT and low cost simulation in the same...
 
Animated transitions across UI views
Animated transitions across UI viewsAnimated transitions across UI views
Animated transitions across UI views
 
MDE 2.0.: pragmatic model verification and other stories - Habilitation publi...
MDE 2.0.: pragmatic model verification and other stories - Habilitation publi...MDE 2.0.: pragmatic model verification and other stories - Habilitation publi...
MDE 2.0.: pragmatic model verification and other stories - Habilitation publi...
 
Web technologies: Model Driven Engineering
Web technologies: Model Driven EngineeringWeb technologies: Model Driven Engineering
Web technologies: Model Driven Engineering
 
Visualize your architecture and information
Visualize your architecture and informationVisualize your architecture and information
Visualize your architecture and information
 
MoDisco Eclipse-OMG Symp 2010
MoDisco Eclipse-OMG Symp 2010MoDisco Eclipse-OMG Symp 2010
MoDisco Eclipse-OMG Symp 2010
 
Frozen digit Company Profile
Frozen digit Company ProfileFrozen digit Company Profile
Frozen digit Company Profile
 
German in 7 Million Shared Objects
German in 7 Million  Shared ObjectsGerman in 7 Million  Shared Objects
German in 7 Million Shared Objects
 
The Human Interface: Making UX An Integral Part of Your Technology Buying Dec...
The Human Interface: Making UX An Integral Part of Your Technology Buying Dec...The Human Interface: Making UX An Integral Part of Your Technology Buying Dec...
The Human Interface: Making UX An Integral Part of Your Technology Buying Dec...
 
Broadway solutions brochure
Broadway solutions brochure Broadway solutions brochure
Broadway solutions brochure
 
Outplacement
OutplacementOutplacement
Outplacement
 

Viewers also liked

Programmable Matter with Modular Robots
Programmable Matter with Modular RobotsProgrammable Matter with Modular Robots
Programmable Matter with Modular Robotselliando dias
 
Gerenciamento de Projetos OO
Gerenciamento de Projetos OOGerenciamento de Projetos OO
Gerenciamento de Projetos OOelliando dias
 
Scrum in five minutes
Scrum in five minutesScrum in five minutes
Scrum in five minuteselliando dias
 
How to Design Frameworks
How to Design FrameworksHow to Design Frameworks
How to Design Frameworkselliando dias
 
Assembling wall panels with robotic technologies
Assembling wall panels with robotic technologiesAssembling wall panels with robotic technologies
Assembling wall panels with robotic technologieselliando dias
 
HTML5: The New html for the web
HTML5: The New html for the webHTML5: The New html for the web
HTML5: The New html for the webelliando dias
 
Scaling Rails with memcached
Scaling Rails with memcachedScaling Rails with memcached
Scaling Rails with memcachedelliando dias
 
A Brief Tour of Responsability Driven Design
A Brief Tour of Responsability Driven DesignA Brief Tour of Responsability Driven Design
A Brief Tour of Responsability Driven Designelliando dias
 
How To Build A Better Arduino
How To Build A Better ArduinoHow To Build A Better Arduino
How To Build A Better ArduinoAlastairDSilva
 
Interfaces de Usuário Ubíquas - UUI
Interfaces de Usuário Ubíquas - UUIInterfaces de Usuário Ubíquas - UUI
Interfaces de Usuário Ubíquas - UUIelliando dias
 
Enabling White-Box Reuse in a Pure Composition Language
Enabling White-Box Reuse in a Pure Composition LanguageEnabling White-Box Reuse in a Pure Composition Language
Enabling White-Box Reuse in a Pure Composition Languageelliando dias
 
Representação de Números
Representação de NúmerosRepresentação de Números
Representação de Númeroselliando dias
 
hardware de um sistema de computação
hardware de um sistema de computaçãohardware de um sistema de computação
hardware de um sistema de computaçãoelliando dias
 
Linguagens de Transformação de Modelos
Linguagens de Transformação de ModelosLinguagens de Transformação de Modelos
Linguagens de Transformação de Modeloselliando dias
 
UML-Based Web Engineering
UML-Based Web EngineeringUML-Based Web Engineering
UML-Based Web Engineeringelliando dias
 
Gerenciamento de Projeto para Desenvolvimento de Sistema
Gerenciamento de Projeto para Desenvolvimento de SistemaGerenciamento de Projeto para Desenvolvimento de Sistema
Gerenciamento de Projeto para Desenvolvimento de Sistemaelliando dias
 
Banco De Dados Básico
Banco De Dados BásicoBanco De Dados Básico
Banco De Dados Básicoelliando dias
 

Viewers also liked (20)

Algoritmo Genetico
Algoritmo GeneticoAlgoritmo Genetico
Algoritmo Genetico
 
Programmable Matter with Modular Robots
Programmable Matter with Modular RobotsProgrammable Matter with Modular Robots
Programmable Matter with Modular Robots
 
Gerenciamento de Projetos OO
Gerenciamento de Projetos OOGerenciamento de Projetos OO
Gerenciamento de Projetos OO
 
Scrum in five minutes
Scrum in five minutesScrum in five minutes
Scrum in five minutes
 
How to Design Frameworks
How to Design FrameworksHow to Design Frameworks
How to Design Frameworks
 
Assembling wall panels with robotic technologies
Assembling wall panels with robotic technologiesAssembling wall panels with robotic technologies
Assembling wall panels with robotic technologies
 
HTML5: The New html for the web
HTML5: The New html for the webHTML5: The New html for the web
HTML5: The New html for the web
 
Scaling Rails with memcached
Scaling Rails with memcachedScaling Rails with memcached
Scaling Rails with memcached
 
Acme Total
Acme TotalAcme Total
Acme Total
 
A Brief Tour of Responsability Driven Design
A Brief Tour of Responsability Driven DesignA Brief Tour of Responsability Driven Design
A Brief Tour of Responsability Driven Design
 
How To Build A Better Arduino
How To Build A Better ArduinoHow To Build A Better Arduino
How To Build A Better Arduino
 
Interfaces de Usuário Ubíquas - UUI
Interfaces de Usuário Ubíquas - UUIInterfaces de Usuário Ubíquas - UUI
Interfaces de Usuário Ubíquas - UUI
 
Enabling White-Box Reuse in a Pure Composition Language
Enabling White-Box Reuse in a Pure Composition LanguageEnabling White-Box Reuse in a Pure Composition Language
Enabling White-Box Reuse in a Pure Composition Language
 
Representação de Números
Representação de NúmerosRepresentação de Números
Representação de Números
 
hardware de um sistema de computação
hardware de um sistema de computaçãohardware de um sistema de computação
hardware de um sistema de computação
 
Linguagens de Transformação de Modelos
Linguagens de Transformação de ModelosLinguagens de Transformação de Modelos
Linguagens de Transformação de Modelos
 
Robótica Móvel
Robótica MóvelRobótica Móvel
Robótica Móvel
 
UML-Based Web Engineering
UML-Based Web EngineeringUML-Based Web Engineering
UML-Based Web Engineering
 
Gerenciamento de Projeto para Desenvolvimento de Sistema
Gerenciamento de Projeto para Desenvolvimento de SistemaGerenciamento de Projeto para Desenvolvimento de Sistema
Gerenciamento de Projeto para Desenvolvimento de Sistema
 
Banco De Dados Básico
Banco De Dados BásicoBanco De Dados Básico
Banco De Dados Básico
 

Similar to Model-Driven Software Development

Sioux Hot-or-Not: Model Driven Software Development (Markus Voelter)
Sioux Hot-or-Not: Model Driven Software Development (Markus Voelter)Sioux Hot-or-Not: Model Driven Software Development (Markus Voelter)
Sioux Hot-or-Not: Model Driven Software Development (Markus Voelter)siouxhotornot
 
Innovation in model driven software
Innovation in model driven softwareInnovation in model driven software
Innovation in model driven softwareSagi Schliesser
 
Ess "Providing Global Gateways to success!
Ess "Providing Global Gateways to success!Ess "Providing Global Gateways to success!
Ess "Providing Global Gateways to success!aj2option
 
Model Driven Architectures
Model Driven ArchitecturesModel Driven Architectures
Model Driven ArchitecturesLalit Kale
 
Software Factories in the Real World: How an IBM® WebSphere® Integration Fact...
Software Factories in the Real World: How an IBM® WebSphere® Integration Fact...Software Factories in the Real World: How an IBM® WebSphere® Integration Fact...
Software Factories in the Real World: How an IBM® WebSphere® Integration Fact...Prolifics
 
Modelling and code generation in .NET at Icinetic
Modelling and code generation in .NET at IcineticModelling and code generation in .NET at Icinetic
Modelling and code generation in .NET at IcineticIcinetic
 
From Process Design to Process Automation
From Process Design to Process AutomationFrom Process Design to Process Automation
From Process Design to Process AutomationJohan den Haan
 
MODEL DRIVEN DEVELOPMENT (1).pptx
MODEL DRIVEN DEVELOPMENT (1).pptxMODEL DRIVEN DEVELOPMENT (1).pptx
MODEL DRIVEN DEVELOPMENT (1).pptxpawan745387
 
From Requirements Management to Release with Git for Android System
From Requirements Management to Release with Git for Android System From Requirements Management to Release with Git for Android System
From Requirements Management to Release with Git for Android System Intland Software GmbH
 
Mdsd capable target architecture
Mdsd capable target architectureMdsd capable target architecture
Mdsd capable target architecturerida mariam
 
Cast Iron Overview Webinar 6.13.12 Final(Jb)
Cast Iron Overview Webinar 6.13.12 Final(Jb)Cast Iron Overview Webinar 6.13.12 Final(Jb)
Cast Iron Overview Webinar 6.13.12 Final(Jb)Carolyn Crowe
 
Providing Global Gateways to success!
Providing Global Gateways to success!Providing Global Gateways to success!
Providing Global Gateways to success!guest28a0624
 
Cast Iron Overview Webinar 6.13
Cast Iron Overview Webinar 6.13Cast Iron Overview Webinar 6.13
Cast Iron Overview Webinar 6.13gaborvodics
 
Analyze your software assets with Modisco par Frédéric Madiot
Analyze your software assets with Modisco par Frédéric MadiotAnalyze your software assets with Modisco par Frédéric Madiot
Analyze your software assets with Modisco par Frédéric MadiotEclipseDayParis
 
10 Things You Should Know About MDD
10 Things You Should Know About MDD10 Things You Should Know About MDD
10 Things You Should Know About MDDJohan den Haan
 
2013 Good Design Is Good Business MDD Embedded Systems
2013 Good Design Is Good Business MDD Embedded Systems2013 Good Design Is Good Business MDD Embedded Systems
2013 Good Design Is Good Business MDD Embedded SystemsRoger Snook
 
MOND Semantics Integration
MOND Semantics IntegrationMOND Semantics Integration
MOND Semantics IntegrationSales Emea
 

Similar to Model-Driven Software Development (20)

Sioux Hot-or-Not: Model Driven Software Development (Markus Voelter)
Sioux Hot-or-Not: Model Driven Software Development (Markus Voelter)Sioux Hot-or-Not: Model Driven Software Development (Markus Voelter)
Sioux Hot-or-Not: Model Driven Software Development (Markus Voelter)
 
Innovation in model driven software
Innovation in model driven softwareInnovation in model driven software
Innovation in model driven software
 
Ess "Providing Global Gateways to success!
Ess "Providing Global Gateways to success!Ess "Providing Global Gateways to success!
Ess "Providing Global Gateways to success!
 
Model Driven Architectures
Model Driven ArchitecturesModel Driven Architectures
Model Driven Architectures
 
Software Factories in the Real World: How an IBM® WebSphere® Integration Fact...
Software Factories in the Real World: How an IBM® WebSphere® Integration Fact...Software Factories in the Real World: How an IBM® WebSphere® Integration Fact...
Software Factories in the Real World: How an IBM® WebSphere® Integration Fact...
 
Modelling and code generation in .NET at Icinetic
Modelling and code generation in .NET at IcineticModelling and code generation in .NET at Icinetic
Modelling and code generation in .NET at Icinetic
 
From Process Design to Process Automation
From Process Design to Process AutomationFrom Process Design to Process Automation
From Process Design to Process Automation
 
MODEL DRIVEN DEVELOPMENT (1).pptx
MODEL DRIVEN DEVELOPMENT (1).pptxMODEL DRIVEN DEVELOPMENT (1).pptx
MODEL DRIVEN DEVELOPMENT (1).pptx
 
From Requirements Management to Release with Git for Android System
From Requirements Management to Release with Git for Android System From Requirements Management to Release with Git for Android System
From Requirements Management to Release with Git for Android System
 
Mdsd capable target architecture
Mdsd capable target architectureMdsd capable target architecture
Mdsd capable target architecture
 
Hi tech it services
Hi tech it servicesHi tech it services
Hi tech it services
 
Cast Iron Overview Webinar 6.13.12 Final(Jb)
Cast Iron Overview Webinar 6.13.12 Final(Jb)Cast Iron Overview Webinar 6.13.12 Final(Jb)
Cast Iron Overview Webinar 6.13.12 Final(Jb)
 
Providing Global Gateways to success!
Providing Global Gateways to success!Providing Global Gateways to success!
Providing Global Gateways to success!
 
Cast Iron Overview Webinar 6.13
Cast Iron Overview Webinar 6.13Cast Iron Overview Webinar 6.13
Cast Iron Overview Webinar 6.13
 
Analyze your software assets with Modisco par Frédéric Madiot
Analyze your software assets with Modisco par Frédéric MadiotAnalyze your software assets with Modisco par Frédéric Madiot
Analyze your software assets with Modisco par Frédéric Madiot
 
10 Things You Should Know About MDD
10 Things You Should Know About MDD10 Things You Should Know About MDD
10 Things You Should Know About MDD
 
2013 Good Design Is Good Business MDD Embedded Systems
2013 Good Design Is Good Business MDD Embedded Systems2013 Good Design Is Good Business MDD Embedded Systems
2013 Good Design Is Good Business MDD Embedded Systems
 
MOND Semantics Integration
MOND Semantics IntegrationMOND Semantics Integration
MOND Semantics Integration
 
Mendix Platform
Mendix PlatformMendix Platform
Mendix Platform
 
Digital Manufacturing
Digital ManufacturingDigital Manufacturing
Digital Manufacturing
 

More from elliando dias

Clojurescript slides
Clojurescript slidesClojurescript slides
Clojurescript slideselliando dias
 
Why you should be excited about ClojureScript
Why you should be excited about ClojureScriptWhy you should be excited about ClojureScript
Why you should be excited about ClojureScriptelliando dias
 
Functional Programming with Immutable Data Structures
Functional Programming with Immutable Data StructuresFunctional Programming with Immutable Data Structures
Functional Programming with Immutable Data Structureselliando dias
 
Nomenclatura e peças de container
Nomenclatura  e peças de containerNomenclatura  e peças de container
Nomenclatura e peças de containerelliando dias
 
Polyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better AgilityPolyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better Agilityelliando dias
 
Javascript Libraries
Javascript LibrariesJavascript Libraries
Javascript Librarieselliando dias
 
How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!elliando dias
 
A Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the WebA Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the Webelliando dias
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduinoelliando dias
 
Incanter Data Sorcery
Incanter Data SorceryIncanter Data Sorcery
Incanter Data Sorceryelliando dias
 
Fab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine DesignFab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine Designelliando dias
 
The Digital Revolution: Machines that makes
The Digital Revolution: Machines that makesThe Digital Revolution: Machines that makes
The Digital Revolution: Machines that makeselliando dias
 
Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.elliando dias
 
Hadoop and Hive Development at Facebook
Hadoop and Hive Development at FacebookHadoop and Hive Development at Facebook
Hadoop and Hive Development at Facebookelliando dias
 
Multi-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case StudyMulti-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case Studyelliando dias
 

More from elliando dias (20)

Clojurescript slides
Clojurescript slidesClojurescript slides
Clojurescript slides
 
Why you should be excited about ClojureScript
Why you should be excited about ClojureScriptWhy you should be excited about ClojureScript
Why you should be excited about ClojureScript
 
Functional Programming with Immutable Data Structures
Functional Programming with Immutable Data StructuresFunctional Programming with Immutable Data Structures
Functional Programming with Immutable Data Structures
 
Nomenclatura e peças de container
Nomenclatura  e peças de containerNomenclatura  e peças de container
Nomenclatura e peças de container
 
Geometria Projetiva
Geometria ProjetivaGeometria Projetiva
Geometria Projetiva
 
Polyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better AgilityPolyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better Agility
 
Javascript Libraries
Javascript LibrariesJavascript Libraries
Javascript Libraries
 
How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!
 
Ragel talk
Ragel talkRagel talk
Ragel talk
 
A Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the WebA Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the Web
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduino
 
Minicurso arduino
Minicurso arduinoMinicurso arduino
Minicurso arduino
 
Incanter Data Sorcery
Incanter Data SorceryIncanter Data Sorcery
Incanter Data Sorcery
 
Rango
RangoRango
Rango
 
Fab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine DesignFab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine Design
 
The Digital Revolution: Machines that makes
The Digital Revolution: Machines that makesThe Digital Revolution: Machines that makes
The Digital Revolution: Machines that makes
 
Hadoop + Clojure
Hadoop + ClojureHadoop + Clojure
Hadoop + Clojure
 
Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.
 
Hadoop and Hive Development at Facebook
Hadoop and Hive Development at FacebookHadoop and Hive Development at Facebook
Hadoop and Hive Development at Facebook
 
Multi-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case StudyMulti-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case Study
 

Recently uploaded

Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 

Recently uploaded (20)

Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 

Model-Driven Software Development

  • 1. MDSD Intro & Overview Model-Driven Software Development Introduction and Overview www.mdsd-buch.de Markus Völter voelter@acm.org www.mdsd-book.org www.voelter.de ingenieurbüro für sof twaretechnologie w w w .voelt er.de -1- © 2003 - 2006 M a rk u s Vö l te r MDSD Intro & Overview Domain Driven Development • Domain Driven Development is about making software development more domain-related as opposed to computing related. It is also about making software development in a certain domain more efficient. Domain Concepts Domain Concepts mental work of developers Software Technology Software Technology Concepts Concepts ingenieurbüro für sof twaretechnologie w w w .voelt er.de -2- © 2003 - 2006 M a rk u s Vö l te r 1
  • 2. MDSD Intro & Overview How MDSD works • Developer develops model(s) Model Model based on certain Model Metamodel metamodel(s), expressed using a DSL. • optional, can be repeated Using code generation Transformer Tranformation Rules templates, the model is transformed to executable code. • Alternative: Interpretation Model Metamodel • Optionally, the generated code is merged with manually written code. Transformer Code Generation • Templates One or more model-to- model transformation steps may precede code generation. Manually Generated Code Written Code optional ingenieurbüro für sof twaretechnologie w w w .voelt er.de -3- © 2003 - 2006 M a rk u s Vö l te r MDSD Intro & Overview Reasons for DDD • Software Development is too complex and too expensive (now, this is a really new finding ☺) … … because: • There is too little reuse • Technology changes faster than developers can learn • Knowledge and practices are hardly captured explicitly and made available for reuse • Domain experts cannot understand all the technology stuff involved in software development • DDD aims at attacking some of these problems. We shall see how on the following slides. ingenieurbüro für sof twaretechnologie w w w .voelt er.de -4- © 2003 - 2006 M a rk u s Vö l te r 2
  • 3. MDSD Intro & Overview What is a „Domain“ • A definition could be: A domain is a bounded area of knowledge or interest. • Examples (from the world of Software) include: • eBanking • Embedded Software • Web-Based eBusiness Applications • Control Software for 4-Cylinder Diesel Engines • Astronomical Image Processing Software • Domains can have varios „scopes“ as well as various „flavours“ – see next slides. ingenieurbüro für sof twaretechnologie w w w .voelt er.de -5- © 2003 - 2006 M a rk u s Vö l te r MDSD Intro & Overview Hierarchical Structuring of Domains • Since Domains can be of any size or granularity, it is useful to structure domains hierarchically. • Automotive Example: Automotive Systems Embedded Engine Controllers Systems Diesel Gasoline • eBanking Example: 4-Cyl web-based e-Banking inv. money eBusiness bank. transfer Apps Rich Clients ingenieurbüro für sof twaretechnologie w w w .voelt er.de -6- © 2003 - 2006 M a rk u s Vö l te r 3
  • 4. MDSD Intro & Overview „Kinds“ of Domains • In the context of software development it is also useful to distinguish (at least) two kinds of domains: • Technical Domains adress key technical issues related to software development such as • Distribution, Failover and Load-Balancin • Persistence and Transactions • GUI Design • Concurreny and Realtime • Functional Domains represent the business/professional issues; examples include • Banking • Human resource management • Insurance • Engine Controllers • Astronomical Telescope Control ingenieurbüro für sof twaretechnologie w w w .voelt er.de -7- © 2003 - 2006 M a rk u s Vö l te r MDSD Intro & Overview Domains in a Software System • As a consequence of the classifications on the previous slides, a software system typically consists of several domains: Session Handling Communication Concurrency Persistence Multi-User/ GUI eBusiness System Web Shop Payment Catalogue Cross Selling ingenieurbüro für sof twaretechnologie w w w .voelt er.de -8- © 2003 - 2006 M a rk u s Vö l te r 4
  • 5. MDSD Intro & Overview MDSD Core Concepts several Metametamodel target subdomains software design architecture bounded area of expertise partial composable knowlege/interest knowledge multiple multi-step transform viewpoint Domain single-step compile Model semantics Ontology interpret no precise/ roundtrip Domain executable Specific Language graphical Metamodel textual ingenieurbüro für sof twaretechnologie w w w .voelt er.de -9- © 2003 - 2006 M a rk u s Vö l te r MDSD Intro & Overview Example 1: Model and Metamodel interface Sensor { operation start():void; operation stop():void; operation measure():float; } interface Controller { operation reportProblem(Sensor s, String errorDesc ):void; } Operation {ordered} Parameter Interface name : String * name : String type : String type : String * * Exception type : String ingenieurbüro für sof twaretechnologie w w w .voelt er.de - 10 - © 2003 - 2006 M a rk u s Vö l te r 5
  • 6. MDSD Intro & Overview Example 2: Model (J2ME apps) [quot;Abortquot;] [quot;Againquot;] [quot;Exitquot;] Display Form CalcResult NumberEntry >> a,b c: Number; >> c [quot;The Result is quot;+c] a: Number [quot;aquot;] {a>0} [quot;Resultquot;] c=a+b {align=center} b: Number [quot;bquot;] {b>0} ingenieurbüro für sof twaretechnologie w w w .voelt er.de - 11 - © 2003 - 2006 M a rk u s Vö l te r MDSD Intro & Overview Example 2: Metamodel (J2ME apps) 1 to Element 1 from UIElement Calculation Start End name : String declaredVars: String expression : String outbound inbound * * Flow Form Display label : String constraints: String AutoFlow Button Field transportedVars: String label : String transportedVars: String varName : String label : String constraints: String ingenieurbüro für sof twaretechnologie w w w .voelt er.de - 12 - © 2003 - 2006 M a rk u s Vö l te r 6
  • 7. MDSD Intro & Overview Example 3: Model (Components, Ports, Connectors) <system name=”weatherStation”> <node name=”main”> <container name=”main”> <instance name=”controller” type=”Control”/> </container> </node> <!-- temperature sensor outside --> <node name=”inside”> <connector name=quot;toSensorTempOutsidequot;> <container name=”sensorInside”>instance=quot;tempOutsidequot; <providedPort <instance name=”tempInside” port=quot;measurementPortquot;> type=”TemperatureSensor”>´ <requiredPort instance=quot;controllerquot; <param name=”unit” value=”centigrade”/> port=quot;sensorsPortquot;> </instance> </connector> </container> <connector name=quot;fromSensorTempOutsidequot;> </node> <providedPort instance=quot;controllerquot; <node name=”outside”>…</node> port=quot;controllerPortquot;> <requiredPort instance=quot;tempOutsidequot; port=quot;controllerPort> </connector> <!-- humidity sensor outside --> <connector name=quot;toSensorHumOutsidequot;>…</connector> <connector name=quot;fromSensorHumOutsidequot;>…</connector> <!-- temperature sensor inside --> <connector name=quot;toSensorTempInsidequot;>…</connector> <connector name=quot;fromSensorTempInsidequot;>…</connector> </system> ingenieurbüro für sof twaretechnologie w w w .voelt er.de - 13 - © 2003 - 2006 M a rk u s Vö l te r MDSD Intro & Overview Example 3: Metamodel (Components, Ports, Connectors) Provided Required ComponentRef PortRef PortRef 1 source 1 target 1 * Component Instance name : String Connector * id : String context Connector inv: source.interface == target.interface * 1 type * * Connector System Node Container Type {open} DirectCall SharedMemory CAN Connector Connector Connector ingenieurbüro für sof twaretechnologie w w w .voelt er.de - 14 - © 2003 - 2006 M a rk u s Vö l te r 7
  • 8. MDSD Intro & Overview Example 4: Workflow Model (UML + Stereotypes) <<ProcessObject>> ReservierungDurchfuehrenPO + verfuegbarkeitPruefen( reservierungsBeginn : Date, reservierungsEnde: Date, gewaehlteStationID : String, gewaehlteKfzKlasseID : String ) : Collection + getReservierungsParameter() : ReservierungsParameterVO + kfzReservieren( reservierungsBeginn : Date, reservierungsEnde: Date, gewaehlteKfzNr : String, mitgliedsNr : String ) : ReservierungBestaetigenVO <<ValueObject>> <<ValueObject>> <<ValueObject>> ReservierungBestaetigenVO ReservierungsParameterVO VerfuegbarkeitPruefenVO - Mitglied : String - stationen : Collection - Station : String - kfzKlassen : Collection - ReservierungsBeginn : Date - Kfz : String - ReservierungsEnde : Date - ReservierungsBeginn : Date - Station : String - ReservierungsEnde : Date - KfzKlasse : String - KfzBezeichnung : String - KfzNr : String ingenieurbüro für sof twaretechnologie w w w .voelt er.de - 15 - © 2003 - 2006 M a rk u s Vö l te r MDSD Intro & Overview Example 4: Workflow Model II (UML + Stereotypes) <<ActivityController>> <<Presentation>> BenutzerAnmeldenCtrl BenutzerAnmelden - kennung : String + AnmeldungErfolgreich() : Boolean - passwort : String + Weiter() + Ende() <<ProcessObject>> <<ValueObject>> BenutzerAnmeldenPO BenutzerAnmeldenVO - Name : String benutzerAnmelden( kennung : String, - Passwort : String passwort : String ) : BenutzerAnmeldenVO - Kennung : String <<EntityObject>> Benutzer - <<Key>> Name : String - Passwort : String - Kennung : String ingenieurbüro für sof twaretechnologie w w w .voelt er.de - 16 - © 2003 - 2006 M a rk u s Vö l te r 8
  • 9. MDSD Intro & Overview Example 5: Power Grid SomePlace: Generator end11 link13 link14 T11: Transformer 220KV: Bus transmissionLine1 link12 20KV: Bus end21 SomeOtherPlace: SwitchingStation link11 link21 B21-220KV: Bus G11: GenerationElement link22 T21: Transformer link23 B22-10KV: Bus link24 end22 end11 end21 end22 SomePlace: SomeOtherPlace: Generator transmissionLine1 SwitchingStation ingenieurbüro für sof twaretechnologie w w w .voelt er.de - 17 - © 2003 - 2006 M a rk u s Vö l te r MDSD Intro & Overview Example 5: Power Grid Metamodel 1 targetNode sources 0..* MicroNode Link 1 sourceNode targets 0..* parts 0..* Generation Transformer Bus Endpoint Element sourceEndPoint 1 1 targetEndPoint targetTransmissionLine 0..1 0..1 sourceTransmissionLine 1 targetNode sources 0..* Transmission MacroNode Line 1 sourceNode targets 0..* Switching Generator BranchPoint Station ingenieurbüro für sof twaretechnologie w w w .voelt er.de - 18 - © 2003 - 2006 M arku s Vö l te r 9
  • 10. MDSD Intro & Overview MDSD Core Values • We prefer to validate software-under-construction over validating software requirements • We work with domain-specific assets, which can be anything from models, components, frameworks, generators, to languages and techniques. • We strive to automate software construction from domain models; therefore we consciously distinguish between building software factories and building software applications • We support the emergence of supply chains for software development, which implies domain-specific specialization and enables mass customization ingenieurbüro für sof twaretechnologie w w w .voelt er.de - 19 - © 2003 - 2006 M arku s Vö l te r MDSD Intro & Overview MDSD Core Building Blocks • domain analysis • meta modelling • model-driven generation (and: model transformation) • template languages • domain-driven framework design • the principles for agile software development • the development and use of Open Source infrastructure ingenieurbüro für sof twaretechnologie w w w .voelt er.de - 20 - © 2003 - 2006 M arku s Vö l te r 10
  • 11. MDSD Intro & Overview MDSD and Requirements/Analysis • Model Adapted from Frankel‘s book on MDA An often-asked question is: are MDSD models the same as requirements Business Model System /analysis models? (Domain Model) Model • They can be, but in general, they Logical Physical Model are not. Model (Deployment) • Analyis/requirements models Requirements Computational are non-computational, MDSD Model Model models are compuatational. PIM PSM somewhere the „intellectual work of development and problem solving“ has to be put into the system. Usually, this is on the stage from requirements/analysis to (computational) MDSD models. • How can MDSD help with requirements? • Formalizing Requirements using a DSL is benefitial because requirements become unambigious. ingenieurbüro für sof twaretechnologie w w w .voelt er.de - 21 - © 2003 - 2006 M arku s Vö l te r MDSD Intro & Overview MDA and Model Driven Software Development Overview several target MOF software architecture Metametamodel subdomains design Application bounded area of expertise partial composable knowlege/interest PIM, PSM, .... QVT multiple multi-step transform viewpoint Domain single-step compile Model semantics Ontology interpret no precise/ roundtrip Domain executable Specific OCL, Action Language UML+ Semantics Profiles graphical Metamodel textual • Focus: Platform Independence, (Tool) Interop ingenieurbüro für sof twaretechnologie w w w .voelt er.de - 22 - © 2003 - 2006 M arku s Vö l te r 11
  • 12. MDSD Intro & Overview Other related approaches • Microsoft’s Software Factories: Focus on Reuse, Efficient Development, DSLs • Domain-Specific (Visual) Modelling: Focus on (Visual) DSLs • Generative Programming: Focus on Efficiency, “Automatic Manufactoring”, Software System Families • Language-Oriented Programming: Focus on DSLs instead of Frameworks, incl. Editor/Debugger Support all basically the same ☺ ingenieurbüro für sof twaretechnologie w w w .voelt er.de - 23 - © 2003 - 2006 M arku s Vö l te r MDSD Intro & Overview MDSD and Agility • Agile Manifesto: We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value: - Individuals and interactions over processes and tools - Working software over comprehensive documentation - Customer collaboration over contract negotiation - Responding to change over following a plan That is, while there is value in the items on the right, we value the items on the left more. • MDSD-Models are no „paperwork“, they are the code which is translated to code automatically • Agility does not oppose tools in general – compilers are ok, model transformers are a kind of compiler ingenieurbüro für sof twaretechnologie w w w .voelt er.de - 24 - © 2003 - 2006 M arku s Vö l te r 12
  • 13. MDSD Intro & Overview MDSD and Agility II • Project automation (ant, cruisecontrol) is ok in „agile minds“, so is automation of the writing of repetitive code • Automation of the development process makes responding to change easier and faster (single source principle). • Changes in the model respond to changes in the functional requirements • Changes in the templates/transformations can be used to evolve the architecture • The customer on-site can be integrated better, if we have languages that are better related to domain concepts as opposed to 3GL code or the like. • Pair programming between developer and domain expert is more realistic. ingenieurbüro für sof twaretechnologie w w w .voelt er.de - 25 - © 2003 - 2006 M arku s Vö l te r MDSD Intro & Overview MDSD and Agility III • Tests can still be written manually (even before generation), generators can help is building mocks or scenarios • We do not recommend a waterfall that first builds generators and then builds apps, rather, both are iteratively evolved in parallel. • Domains Architectures are based on experience, not based on „big design upfront“ • Developers can do what they can do best: • Some deal with applications and customer requirements, • Others deal with technical architecture, platforms and generators • So: There is no problem with Agility and MDSD! ingenieurbüro für sof twaretechnologie w w w .voelt er.de - 26 - © 2003 - 2006 M arku s Vö l te r 13