SlideShare a Scribd company logo
1 of 33
Download to read offline
MODEL DRIVEN DEVELOPMENT
With smart use cases, domain driven design and Tobago MDA
SANDER HOOGENDOORN

Capgemini
      Principal technology officer
      Chief architect Accelerated Delivery Platform (ADP)
      Global agile thought leader
Other
      Author books and articles
      Speaker at international conferences
      Microsoft Partner Advisory Council .NET
      Capping IT Off Blog
      Magazine columns
      Editorial boards & Advisory boards
Web
      www.sanderhoogendoorn.com
      www.smartusecase.com
      Twitter: @aahoogendoorn
      LinkedIn: aahoogendoorn



                                                                INTRODUCTION TO AGILE              2
                                                            ©2011 Capgemini. All Rights Reserved
AGENDA

Today’s topics
    Smart use cases
    Domain driven design
    Software architecture
    Model driven development
    with Tobago MDA
    Generating code
    with Tobago MDA
    Demo(s)!




                                   INTRODUCTION TO AGILE              3
                               ©2011 Capgemini. All Rights Reserved
SMART USE CASES
A YAGNI approach to requirements
AGILE REQUIREMENTS - APPROACH
          Cloud Level               Kite Level      Sea Level                       Fish Level




                                       B

                                            D


                        A
                                  Hierarchical                                                         E
  A                                                    D                                    D
                                   Processes
                        B   C                                                                          F

                                                    Use Cases                      Smart
Project            Hierarchical                 C
                                                                                  Use Cases
Scope               Processes
                                           D

                                  Chronological
                                   Processes


                                                                    INTRODUCTION TO AGILE                  5
                                                                ©2011 Capgemini. All Rights Reserved
CLOUD LEVEL




                  INTRODUCTION TO AGILE              6
              ©2011 Capgemini. All Rights Reserved
KITE LEVEL




                 INTRODUCTION TO AGILE              7
             ©2011 Capgemini. All Rights Reserved
MODELING SMART USE CASES – SEA AND FISH LEVEL




                                                INTRODUCTION TO AGILE              8
                                            ©2011 Capgemini. All Rights Reserved
SMART USE CASES
Stereotypes
DOMAIN DRIVEN DEVELOPMENT
A brief introduction
DOMAIN DRIVEN DEVELOPMENT - VOCABULARY

 Entity
      Object in the domain model not defined by its attributes,
      but by a thread of continuity and identity
 Value object
      Has no conceptual identity.
      Describe a characteristic of a thing
 Repository
      Methods for retrieving domain objects should delegate to a
      specialized 'repository' object such that alternative
      implementations may be easily interchanged.
 Factory
      Methods for creating domain objects should delegate to a
      specialized 'factory' object such that alternative
      implementations may be easily interchanged.
 Service
      Implement if an operation does not conceptually belong to
      any entity
      Implement these operations in services




                                                                       INTRODUCTION TO AGILE              11
                                                                   ©2011 Capgemini. All Rights Reserved
DOMAIN DRIVEN DEVELOPMENT – EXTENDED VOCABULARY

 Enumeration *
     Restricted and limited set of possible values
     Apply only when set of values never changes

 Smart reference *
     Generic reference entity
     Restricted but unlimited list of possible
     values
     Apply when only reference matters, not
     additional values, like in reports or drop
     downs




                                                         INTRODUCTION TO AGILE              12
                                                     ©2011 Capgemini. All Rights Reserved
ENTITY ATTRIBUTES
ENTITY ATTRIBUTES – TYPES OF ATTRIBUTES

 Basic types
     string, integer, DateTime
     Including nullable wrapping
 Enumerations
     Genders, Categories
 Value objects
     No specific instances
     Isbn, Postcode, Bsn
 Simple references
     Smart references, such as Language, County
 Associations
     Other entities such as Customer, Product
     Within or outside aggregate



                                                      INTRODUCTION TO AGILE              14
                                                  ©2011 Capgemini. All Rights Reserved
VALUE OBJECT – IN USE




                            INTRODUCTION TO AGILE              15
                        ©2011 Capgemini. All Rights Reserved
SMART REFERENCE - TABLE




                              INTRODUCTION TO AGILE              16
                          ©2011 Capgemini. All Rights Reserved
SMART REFERENCE – IN USE




                               INTRODUCTION TO AGILE              17
                           ©2011 Capgemini. All Rights Reserved
SOFTWARE ARCHITECTURE
A true requirements for model driven development
Pages
Presentation                                        UserControls
                                                         Panels



                                                           Use cases
Process                                                    Workflow



                                 Domain objects / Entities
Domain                            Factories / Repositories
                  Enums / Value objects / Smart references
                                                [Mapping]


                                              Table Gateways
Data / Services                                       Queries
                                                     [Mapping]




Outside world                                               Database



                                          INTRODUCTION TO AGILE              19
                                      ©2011 Capgemini. All Rights Reserved
MODEL DRIVEN DEVELOPMENT
With Tobago MDA
User interface            Software Architecture
                                       specification
                     1. Map your                                                 5. Finalize your
                 business processes                                                application
  Existing       to smart use cases
Applications               Smart
                          use cases
                                                                Forms

                                                                               Use cases
                                                           4. Generate
                                                         your code using
                                                Tobago
                                                 MDA     a text template                                           Frameworks
Specifications                                                engine
                                                                                 Domain
                             Domain
                             Model                                               objects




                                                                         Data / Service
  Business
                                                                            classes
  models


                      2. Set up your         Test
                                                                                             3. Establish
                                          scenario’s
                      domain model                                                         your software
                                                                   Databases
                                                                                           architecture(s)

                                                                                       INTRODUCTION TO AGILE              21
                                                                                   ©2011 Capgemini. All Rights Reserved
MODEL DRIVEN DEVELOPMENT – TEMPLATE ENGINES

 Characteristics
     Load UML model (expressed in XMI)
     Load templates (from flat files)
     Combine elements from UML model with
     templates to generate deliverables
 Templates
     Templates contains code that runs in template
     engine
     Templates might use a folder model
 Generation process
     Ability to generate all or individual UML model
     elements
     Which UML model elements are supported?
     Generated deliverables can be code but also
     any other document type



                                                           INTRODUCTION TO AGILE              22
                                                       ©2011 Capgemini. All Rights Reserved
MODEL DRIVEN DEVELOPMENT - TEMPLATE ENGINES


                   Properties can
                     be used in
                     templates
Template engine
 knows (part of)
 the UML meta
     model




                                               INTRODUCTION TO AGILE              23
                                           ©2011 Capgemini. All Rights Reserved
MODEL DRIVEN DEVELOPMENT - TEMPLATES




                                           INTRODUCTION TO AGILE              24
                                       ©2011 Capgemini. All Rights Reserved
GENERATE MANY THINGS E.G. TABLE CREATE SCRIPTS




                                                INTRODUCTION TO AGILE              25
                                            ©2011 Capgemini. All Rights Reserved
GENERATING CODE
A quick example
A SIMPLE SMART USE CASE MODEL

       uc Manage Customer



                                                               «search»
                                                            Select Customer


                                          «incl ude»




                             «master detail»
                            Manage Customer
       Site Administrator
         (from A ctors)
                                                 «extend»

                                                                 «define»
                                                               Define Contact




                                                                                    INTRODUCTION TO AGILE              27
                                                                                ©2011 Capgemini. All Rights Reserved
A SIMPLE DOMAIN MODEL

      class Budapest.Business

              «business class»                  «business class»
                 Cust omer                          Cont act
         +   Name: string              +   Name: string
         +   Address: string         * +   Email: Email [0..1]
         +   Postcode: Postcode        +   Phone: PhoneNumber [0..1]
         +   City: string              +   Department: Departments
         +   Country: SmartRef
         +   Website: Url [0..1]




                                   «enumeration»
                                    Depart ments
                                   Sal es
                                   Purchasing
                                   Helpdesk
                                   Management




                                                                           INTRODUCTION TO AGILE              28
                                                                       ©2011 Capgemini. All Rights Reserved
USING TOBAGO MDA




                       INTRODUCTION TO AGILE              29
                   ©2011 Capgemini. All Rights Reserved
GENERATED CODE IN ASP.NET




                                INTRODUCTION TO AGILE              30
                            ©2011 Capgemini. All Rights Reserved
GENERATED CODE IN SILVERLIGHT




                                    INTRODUCTION TO AGILE              31
                                ©2011 Capgemini. All Rights Reserved
WWW.SMARTUSECASE.COM
www.accelerateddeliveryplatform.com
REFERENCES AND QUESTIONS
sander.hoogendoorn@capgemini.com
www.sanderhoogendoorn.com | www.smartusecase.com | www.accelerateddeliveryplatform.com
@aahoogendoorn

More Related Content

What's hot

New Zealand Premiere! A first look at Rational Insight
New Zealand Premiere! A first look at Rational InsightNew Zealand Premiere! A first look at Rational Insight
New Zealand Premiere! A first look at Rational InsightVincent Kwon
 
Business Patterns presentation @ Oredev 2012
Business Patterns presentation @ Oredev 2012Business Patterns presentation @ Oredev 2012
Business Patterns presentation @ Oredev 2012allan kelly
 
A Graphical Language for Real-Time Critical Robot Commands
A Graphical Language for Real-Time Critical Robot CommandsA Graphical Language for Real-Time Critical Robot Commands
A Graphical Language for Real-Time Critical Robot CommandsSerge Stinckwich
 
A balanced metrics set for software business
A balanced metrics set for software businessA balanced metrics set for software business
A balanced metrics set for software businessTowo Toivola
 
Riverbed - Maximizing Your Cloud Applications Performance and Availability
Riverbed - Maximizing Your Cloud Applications Performance and AvailabilityRiverbed - Maximizing Your Cloud Applications Performance and Availability
Riverbed - Maximizing Your Cloud Applications Performance and AvailabilityRightScale
 

What's hot (11)

01 Concept Discovery
01   Concept Discovery01   Concept Discovery
01 Concept Discovery
 
New Zealand Premiere! A first look at Rational Insight
New Zealand Premiere! A first look at Rational InsightNew Zealand Premiere! A first look at Rational Insight
New Zealand Premiere! A first look at Rational Insight
 
Ops cockpit sitnl
Ops cockpit sitnlOps cockpit sitnl
Ops cockpit sitnl
 
Kanban for sw projects v1.5 final
Kanban for sw projects v1.5 finalKanban for sw projects v1.5 final
Kanban for sw projects v1.5 final
 
Obelisk Profile
Obelisk ProfileObelisk Profile
Obelisk Profile
 
Kanban by Mayur Gupta
Kanban by Mayur GuptaKanban by Mayur Gupta
Kanban by Mayur Gupta
 
Business Patterns presentation @ Oredev 2012
Business Patterns presentation @ Oredev 2012Business Patterns presentation @ Oredev 2012
Business Patterns presentation @ Oredev 2012
 
Upk presentation insync
Upk presentation insync Upk presentation insync
Upk presentation insync
 
A Graphical Language for Real-Time Critical Robot Commands
A Graphical Language for Real-Time Critical Robot CommandsA Graphical Language for Real-Time Critical Robot Commands
A Graphical Language for Real-Time Critical Robot Commands
 
A balanced metrics set for software business
A balanced metrics set for software businessA balanced metrics set for software business
A balanced metrics set for software business
 
Riverbed - Maximizing Your Cloud Applications Performance and Availability
Riverbed - Maximizing Your Cloud Applications Performance and AvailabilityRiverbed - Maximizing Your Cloud Applications Performance and Availability
Riverbed - Maximizing Your Cloud Applications Performance and Availability
 

Viewers also liked

From Programming to Modeling And Back Again
From Programming to Modeling And Back AgainFrom Programming to Modeling And Back Again
From Programming to Modeling And Back AgainMarkus Voelter
 
Domain-Driven Design at ZendCon 2012
Domain-Driven Design at ZendCon 2012Domain-Driven Design at ZendCon 2012
Domain-Driven Design at ZendCon 2012Bradley Holt
 
An Introduction to Domain Driven Design for Product Managers
An Introduction to Domain Driven Design for Product ManagersAn Introduction to Domain Driven Design for Product Managers
An Introduction to Domain Driven Design for Product Managersr4isstatic
 
Model driven development and code generation of software systems
Model driven development and code generation of software systemsModel driven development and code generation of software systems
Model driven development and code generation of software systemsMarco Brambilla
 
Hexagonal architecture - message-oriented software design
Hexagonal architecture  - message-oriented software designHexagonal architecture  - message-oriented software design
Hexagonal architecture - message-oriented software designMatthias Noback
 
Kata: Hexagonal Architecture / Ports and Adapters
Kata: Hexagonal Architecture / Ports and AdaptersKata: Hexagonal Architecture / Ports and Adapters
Kata: Hexagonal Architecture / Ports and Adaptersholsky
 
The framework as an implementation detail
The framework as an implementation detailThe framework as an implementation detail
The framework as an implementation detailMarcello Duarte
 
Use Case Driven Development in Symfony
Use Case Driven Development in SymfonyUse Case Driven Development in Symfony
Use Case Driven Development in SymfonyBartosz Zasada
 

Viewers also liked (9)

From Programming to Modeling And Back Again
From Programming to Modeling And Back AgainFrom Programming to Modeling And Back Again
From Programming to Modeling And Back Again
 
Domain-Driven Design at ZendCon 2012
Domain-Driven Design at ZendCon 2012Domain-Driven Design at ZendCon 2012
Domain-Driven Design at ZendCon 2012
 
An Introduction to Domain Driven Design for Product Managers
An Introduction to Domain Driven Design for Product ManagersAn Introduction to Domain Driven Design for Product Managers
An Introduction to Domain Driven Design for Product Managers
 
Hexagonal symfony
Hexagonal symfonyHexagonal symfony
Hexagonal symfony
 
Model driven development and code generation of software systems
Model driven development and code generation of software systemsModel driven development and code generation of software systems
Model driven development and code generation of software systems
 
Hexagonal architecture - message-oriented software design
Hexagonal architecture  - message-oriented software designHexagonal architecture  - message-oriented software design
Hexagonal architecture - message-oriented software design
 
Kata: Hexagonal Architecture / Ports and Adapters
Kata: Hexagonal Architecture / Ports and AdaptersKata: Hexagonal Architecture / Ports and Adapters
Kata: Hexagonal Architecture / Ports and Adapters
 
The framework as an implementation detail
The framework as an implementation detailThe framework as an implementation detail
The framework as an implementation detail
 
Use Case Driven Development in Symfony
Use Case Driven Development in SymfonyUse Case Driven Development in Symfony
Use Case Driven Development in Symfony
 

Similar to Model driven development using smart use cases and domain driven design

Pragmatic Model Driven Development In Java Using Smart Use Cases
Pragmatic Model Driven Development In Java Using Smart Use CasesPragmatic Model Driven Development In Java Using Smart Use Cases
Pragmatic Model Driven Development In Java Using Smart Use CasesRody Middelkoop
 
Agile at The Open Group Conference
Agile at The Open Group ConferenceAgile at The Open Group Conference
Agile at The Open Group ConferenceCapgemini
 
Freenet project ralf_sigmund_opitz_activiti_days_2012
Freenet project ralf_sigmund_opitz_activiti_days_2012Freenet project ralf_sigmund_opitz_activiti_days_2012
Freenet project ralf_sigmund_opitz_activiti_days_2012Ralf Sigmund
 
Framework Engineering_Final
Framework Engineering_FinalFramework Engineering_Final
Framework Engineering_FinalYoungSu Son
 
New Features of OBIEE 11.1.1.6.x
New Features of OBIEE 11.1.1.6.x New Features of OBIEE 11.1.1.6.x
New Features of OBIEE 11.1.1.6.x Capgemini
 
LSM 2011 AdaLabs presentation slides: How to make my business opensource & vi...
LSM 2011 AdaLabs presentation slides: How to make my business opensource & vi...LSM 2011 AdaLabs presentation slides: How to make my business opensource & vi...
LSM 2011 AdaLabs presentation slides: How to make my business opensource & vi...AdaLabs
 
Begroten als het model = de applicatie = de documentatie - Gerard Ohm - NESMA...
Begroten als het model = de applicatie = de documentatie - Gerard Ohm - NESMA...Begroten als het model = de applicatie = de documentatie - Gerard Ohm - NESMA...
Begroten als het model = de applicatie = de documentatie - Gerard Ohm - NESMA...Nesma
 
20101007 how smart use cases drive web development
20101007   how smart use cases drive web development20101007   how smart use cases drive web development
20101007 how smart use cases drive web developmentSander Hoogendoorn
 
SAP NetWeaver Portal Portfolio (2012)
SAP NetWeaver Portal Portfolio (2012)  SAP NetWeaver Portal Portfolio (2012)
SAP NetWeaver Portal Portfolio (2012) SAP Portal
 
Distributed Software Development with Scrum and Social Coding
Distributed Software Development with Scrum and Social Coding Distributed Software Development with Scrum and Social Coding
Distributed Software Development with Scrum and Social Coding Intland Software GmbH
 
In sync10 nadiabendjedou-10things-final
In sync10 nadiabendjedou-10things-finalIn sync10 nadiabendjedou-10things-final
In sync10 nadiabendjedou-10things-finalBendjedou Nadia
 
In sync10 nadiabendjedou-10things-final
In sync10 nadiabendjedou-10things-finalIn sync10 nadiabendjedou-10things-final
In sync10 nadiabendjedou-10things-finalInSync Conference
 
Imaginea - Ideas to Life - About Us
Imaginea - Ideas to Life - About UsImaginea - Ideas to Life - About Us
Imaginea - Ideas to Life - About UsImaginea
 
Siebel 8.1.1.0 innovation pack 2013 spring release
Siebel 8.1.1.0 innovation pack 2013 spring releaseSiebel 8.1.1.0 innovation pack 2013 spring release
Siebel 8.1.1.0 innovation pack 2013 spring releaseJeroen Burgers
 
Intel IT OpenStack Journey - OpenStack Fall 2012 Summit.pdf
Intel IT OpenStack Journey - OpenStack Fall 2012 Summit.pdfIntel IT OpenStack Journey - OpenStack Fall 2012 Summit.pdf
Intel IT OpenStack Journey - OpenStack Fall 2012 Summit.pdfOpenStack Foundation
 
Enterprise Integration of Disruptive Technologies
Enterprise Integration of Disruptive TechnologiesEnterprise Integration of Disruptive Technologies
Enterprise Integration of Disruptive TechnologiesDataWorks Summit
 
Tata steel sap bpm espresso session
Tata steel sap bpm espresso sessionTata steel sap bpm espresso session
Tata steel sap bpm espresso sessionrtiesma
 
Framework Engineering
Framework EngineeringFramework Engineering
Framework EngineeringYoungSu Son
 

Similar to Model driven development using smart use cases and domain driven design (20)

Pragmatic Model Driven Development In Java Using Smart Use Cases
Pragmatic Model Driven Development In Java Using Smart Use CasesPragmatic Model Driven Development In Java Using Smart Use Cases
Pragmatic Model Driven Development In Java Using Smart Use Cases
 
Agile at The Open Group Conference
Agile at The Open Group ConferenceAgile at The Open Group Conference
Agile at The Open Group Conference
 
Freenet project ralf_sigmund_opitz_activiti_days_2012
Freenet project ralf_sigmund_opitz_activiti_days_2012Freenet project ralf_sigmund_opitz_activiti_days_2012
Freenet project ralf_sigmund_opitz_activiti_days_2012
 
Framework Engineering_Final
Framework Engineering_FinalFramework Engineering_Final
Framework Engineering_Final
 
New Features of OBIEE 11.1.1.6.x
New Features of OBIEE 11.1.1.6.x New Features of OBIEE 11.1.1.6.x
New Features of OBIEE 11.1.1.6.x
 
LSM 2011 AdaLabs presentation slides: How to make my business opensource & vi...
LSM 2011 AdaLabs presentation slides: How to make my business opensource & vi...LSM 2011 AdaLabs presentation slides: How to make my business opensource & vi...
LSM 2011 AdaLabs presentation slides: How to make my business opensource & vi...
 
Begroten als het model = de applicatie = de documentatie - Gerard Ohm - NESMA...
Begroten als het model = de applicatie = de documentatie - Gerard Ohm - NESMA...Begroten als het model = de applicatie = de documentatie - Gerard Ohm - NESMA...
Begroten als het model = de applicatie = de documentatie - Gerard Ohm - NESMA...
 
20101007 how smart use cases drive web development
20101007   how smart use cases drive web development20101007   how smart use cases drive web development
20101007 how smart use cases drive web development
 
Blue Ruby SDN Webinar
Blue Ruby SDN WebinarBlue Ruby SDN Webinar
Blue Ruby SDN Webinar
 
SAP NetWeaver Portal Portfolio (2012)
SAP NetWeaver Portal Portfolio (2012)  SAP NetWeaver Portal Portfolio (2012)
SAP NetWeaver Portal Portfolio (2012)
 
Distributed Software Development with Scrum and Social Coding
Distributed Software Development with Scrum and Social Coding Distributed Software Development with Scrum and Social Coding
Distributed Software Development with Scrum and Social Coding
 
In sync10 nadiabendjedou-10things-final
In sync10 nadiabendjedou-10things-finalIn sync10 nadiabendjedou-10things-final
In sync10 nadiabendjedou-10things-final
 
In sync10 nadiabendjedou-10things-final
In sync10 nadiabendjedou-10things-finalIn sync10 nadiabendjedou-10things-final
In sync10 nadiabendjedou-10things-final
 
Imaginea - Ideas to Life - About Us
Imaginea - Ideas to Life - About UsImaginea - Ideas to Life - About Us
Imaginea - Ideas to Life - About Us
 
Siebel 8.1.1.0 innovation pack 2013 spring release
Siebel 8.1.1.0 innovation pack 2013 spring releaseSiebel 8.1.1.0 innovation pack 2013 spring release
Siebel 8.1.1.0 innovation pack 2013 spring release
 
Intel IT OpenStack Journey - OpenStack Fall 2012 Summit.pdf
Intel IT OpenStack Journey - OpenStack Fall 2012 Summit.pdfIntel IT OpenStack Journey - OpenStack Fall 2012 Summit.pdf
Intel IT OpenStack Journey - OpenStack Fall 2012 Summit.pdf
 
ABAP Course Content
ABAP Course ContentABAP Course Content
ABAP Course Content
 
Enterprise Integration of Disruptive Technologies
Enterprise Integration of Disruptive TechnologiesEnterprise Integration of Disruptive Technologies
Enterprise Integration of Disruptive Technologies
 
Tata steel sap bpm espresso session
Tata steel sap bpm espresso sessionTata steel sap bpm espresso session
Tata steel sap bpm espresso session
 
Framework Engineering
Framework EngineeringFramework Engineering
Framework Engineering
 

More from Sander Hoogendoorn

Flow. The official worst software development approach in history
Flow. The official worst software development approach in historyFlow. The official worst software development approach in history
Flow. The official worst software development approach in historySander Hoogendoorn
 
It's a small world after all. How thinking small changes software big time
It's a small world after all. How thinking small changes software big timeIt's a small world after all. How thinking small changes software big time
It's a small world after all. How thinking small changes software big timeSander Hoogendoorn
 
Welcome to the world of micro-apps
Welcome to the world of micro-appsWelcome to the world of micro-apps
Welcome to the world of micro-appsSander Hoogendoorn
 
Welcome to the world of micro-applications
Welcome to the world of micro-applicationsWelcome to the world of micro-applications
Welcome to the world of micro-applicationsSander Hoogendoorn
 
Wat is agile en wat betekent het voor mij?
Wat is agile en wat betekent het voor mij?Wat is agile en wat betekent het voor mij?
Wat is agile en wat betekent het voor mij?Sander Hoogendoorn
 
20180509 - It's a small world after all. How thinking small is changing softw...
20180509 - It's a small world after all. How thinking small is changing softw...20180509 - It's a small world after all. How thinking small is changing softw...
20180509 - It's a small world after all. How thinking small is changing softw...Sander Hoogendoorn
 
W-JAX 2017 Keynote. It's a small world after all. How thinking small is chang...
W-JAX 2017 Keynote. It's a small world after all. How thinking small is chang...W-JAX 2017 Keynote. It's a small world after all. How thinking small is chang...
W-JAX 2017 Keynote. It's a small world after all. How thinking small is chang...Sander Hoogendoorn
 
Swanseacon 2017 Keynote - It's a small world after all.
Swanseacon 2017 Keynote - It's a small world after all.Swanseacon 2017 Keynote - It's a small world after all.
Swanseacon 2017 Keynote - It's a small world after all.Sander Hoogendoorn
 
Geecon Prague 2016 - Thirty months of microservices
Geecon Prague 2016 - Thirty months of microservicesGeecon Prague 2016 - Thirty months of microservices
Geecon Prague 2016 - Thirty months of microservicesSander Hoogendoorn
 
Thirty months of microservices. Stairway to heaven or highway to hell
Thirty months of microservices. Stairway to heaven or highway to hellThirty months of microservices. Stairway to heaven or highway to hell
Thirty months of microservices. Stairway to heaven or highway to hellSander Hoogendoorn
 
Beyond breaking bad. The current state of agile in ten easy lessons
Beyond breaking bad. The current state of agile in ten easy lessonsBeyond breaking bad. The current state of agile in ten easy lessons
Beyond breaking bad. The current state of agile in ten easy lessonsSander Hoogendoorn
 
Beyond breaking bad. The current state of agile in ten easy lessons
Beyond breaking bad. The current state of agile in ten easy lessonsBeyond breaking bad. The current state of agile in ten easy lessons
Beyond breaking bad. The current state of agile in ten easy lessonsSander Hoogendoorn
 
Microservices. Stairway to heaven or highway to hell
Microservices. Stairway to heaven or highway to hellMicroservices. Stairway to heaven or highway to hell
Microservices. Stairway to heaven or highway to hellSander Hoogendoorn
 
Microservices. The good, the bad and the ugly.
Microservices. The good, the bad and the ugly.Microservices. The good, the bad and the ugly.
Microservices. The good, the bad and the ugly.Sander Hoogendoorn
 
Designing and building a micro-services architecture. Stairway to heaven or a...
Designing and building a micro-services architecture. Stairway to heaven or a...Designing and building a micro-services architecture. Stairway to heaven or a...
Designing and building a micro-services architecture. Stairway to heaven or a...Sander Hoogendoorn
 
Microservices. The good the bad and the ugly
Microservices. The good the bad and the uglyMicroservices. The good the bad and the ugly
Microservices. The good the bad and the uglySander Hoogendoorn
 
Scaling agile from the ground up
Scaling agile from the ground upScaling agile from the ground up
Scaling agile from the ground upSander Hoogendoorn
 
Growing a microservices landscape (with smart use cases)
Growing a microservices landscape (with smart use cases)Growing a microservices landscape (with smart use cases)
Growing a microservices landscape (with smart use cases)Sander Hoogendoorn
 

More from Sander Hoogendoorn (20)

Flow. The official worst software development approach in history
Flow. The official worst software development approach in historyFlow. The official worst software development approach in history
Flow. The official worst software development approach in history
 
It's a small world after all. How thinking small changes software big time
It's a small world after all. How thinking small changes software big timeIt's a small world after all. How thinking small changes software big time
It's a small world after all. How thinking small changes software big time
 
Welcome to the world of micro-apps
Welcome to the world of micro-appsWelcome to the world of micro-apps
Welcome to the world of micro-apps
 
Welcome to the world of micro-applications
Welcome to the world of micro-applicationsWelcome to the world of micro-applications
Welcome to the world of micro-applications
 
Wat is agile en wat betekent het voor mij?
Wat is agile en wat betekent het voor mij?Wat is agile en wat betekent het voor mij?
Wat is agile en wat betekent het voor mij?
 
20180509 - It's a small world after all. How thinking small is changing softw...
20180509 - It's a small world after all. How thinking small is changing softw...20180509 - It's a small world after all. How thinking small is changing softw...
20180509 - It's a small world after all. How thinking small is changing softw...
 
W-JAX 2017 Keynote. It's a small world after all. How thinking small is chang...
W-JAX 2017 Keynote. It's a small world after all. How thinking small is chang...W-JAX 2017 Keynote. It's a small world after all. How thinking small is chang...
W-JAX 2017 Keynote. It's a small world after all. How thinking small is chang...
 
Swanseacon 2017 Keynote - It's a small world after all.
Swanseacon 2017 Keynote - It's a small world after all.Swanseacon 2017 Keynote - It's a small world after all.
Swanseacon 2017 Keynote - It's a small world after all.
 
Building Better Software Faster
Building Better Software FasterBuilding Better Software Faster
Building Better Software Faster
 
Geecon Prague 2016 - Thirty months of microservices
Geecon Prague 2016 - Thirty months of microservicesGeecon Prague 2016 - Thirty months of microservices
Geecon Prague 2016 - Thirty months of microservices
 
Thirty months of microservices. Stairway to heaven or highway to hell
Thirty months of microservices. Stairway to heaven or highway to hellThirty months of microservices. Stairway to heaven or highway to hell
Thirty months of microservices. Stairway to heaven or highway to hell
 
Beyond breaking bad. The current state of agile in ten easy lessons
Beyond breaking bad. The current state of agile in ten easy lessonsBeyond breaking bad. The current state of agile in ten easy lessons
Beyond breaking bad. The current state of agile in ten easy lessons
 
Beyond breaking bad. The current state of agile in ten easy lessons
Beyond breaking bad. The current state of agile in ten easy lessonsBeyond breaking bad. The current state of agile in ten easy lessons
Beyond breaking bad. The current state of agile in ten easy lessons
 
Microservices. Stairway to heaven or highway to hell
Microservices. Stairway to heaven or highway to hellMicroservices. Stairway to heaven or highway to hell
Microservices. Stairway to heaven or highway to hell
 
Microservices. The good, the bad and the ugly.
Microservices. The good, the bad and the ugly.Microservices. The good, the bad and the ugly.
Microservices. The good, the bad and the ugly.
 
Modeling Microservices
Modeling MicroservicesModeling Microservices
Modeling Microservices
 
Designing and building a micro-services architecture. Stairway to heaven or a...
Designing and building a micro-services architecture. Stairway to heaven or a...Designing and building a micro-services architecture. Stairway to heaven or a...
Designing and building a micro-services architecture. Stairway to heaven or a...
 
Microservices. The good the bad and the ugly
Microservices. The good the bad and the uglyMicroservices. The good the bad and the ugly
Microservices. The good the bad and the ugly
 
Scaling agile from the ground up
Scaling agile from the ground upScaling agile from the ground up
Scaling agile from the ground up
 
Growing a microservices landscape (with smart use cases)
Growing a microservices landscape (with smart use cases)Growing a microservices landscape (with smart use cases)
Growing a microservices landscape (with smart use cases)
 

Model driven development using smart use cases and domain driven design

  • 1. MODEL DRIVEN DEVELOPMENT With smart use cases, domain driven design and Tobago MDA
  • 2. SANDER HOOGENDOORN Capgemini Principal technology officer Chief architect Accelerated Delivery Platform (ADP) Global agile thought leader Other Author books and articles Speaker at international conferences Microsoft Partner Advisory Council .NET Capping IT Off Blog Magazine columns Editorial boards & Advisory boards Web www.sanderhoogendoorn.com www.smartusecase.com Twitter: @aahoogendoorn LinkedIn: aahoogendoorn INTRODUCTION TO AGILE 2 ©2011 Capgemini. All Rights Reserved
  • 3. AGENDA Today’s topics Smart use cases Domain driven design Software architecture Model driven development with Tobago MDA Generating code with Tobago MDA Demo(s)! INTRODUCTION TO AGILE 3 ©2011 Capgemini. All Rights Reserved
  • 4. SMART USE CASES A YAGNI approach to requirements
  • 5. AGILE REQUIREMENTS - APPROACH Cloud Level Kite Level Sea Level Fish Level B D A Hierarchical E A D D Processes B C F Use Cases Smart Project Hierarchical C Use Cases Scope Processes D Chronological Processes INTRODUCTION TO AGILE 5 ©2011 Capgemini. All Rights Reserved
  • 6. CLOUD LEVEL INTRODUCTION TO AGILE 6 ©2011 Capgemini. All Rights Reserved
  • 7. KITE LEVEL INTRODUCTION TO AGILE 7 ©2011 Capgemini. All Rights Reserved
  • 8. MODELING SMART USE CASES – SEA AND FISH LEVEL INTRODUCTION TO AGILE 8 ©2011 Capgemini. All Rights Reserved
  • 10. DOMAIN DRIVEN DEVELOPMENT A brief introduction
  • 11. DOMAIN DRIVEN DEVELOPMENT - VOCABULARY Entity Object in the domain model not defined by its attributes, but by a thread of continuity and identity Value object Has no conceptual identity. Describe a characteristic of a thing Repository Methods for retrieving domain objects should delegate to a specialized 'repository' object such that alternative implementations may be easily interchanged. Factory Methods for creating domain objects should delegate to a specialized 'factory' object such that alternative implementations may be easily interchanged. Service Implement if an operation does not conceptually belong to any entity Implement these operations in services INTRODUCTION TO AGILE 11 ©2011 Capgemini. All Rights Reserved
  • 12. DOMAIN DRIVEN DEVELOPMENT – EXTENDED VOCABULARY Enumeration * Restricted and limited set of possible values Apply only when set of values never changes Smart reference * Generic reference entity Restricted but unlimited list of possible values Apply when only reference matters, not additional values, like in reports or drop downs INTRODUCTION TO AGILE 12 ©2011 Capgemini. All Rights Reserved
  • 14. ENTITY ATTRIBUTES – TYPES OF ATTRIBUTES Basic types string, integer, DateTime Including nullable wrapping Enumerations Genders, Categories Value objects No specific instances Isbn, Postcode, Bsn Simple references Smart references, such as Language, County Associations Other entities such as Customer, Product Within or outside aggregate INTRODUCTION TO AGILE 14 ©2011 Capgemini. All Rights Reserved
  • 15. VALUE OBJECT – IN USE INTRODUCTION TO AGILE 15 ©2011 Capgemini. All Rights Reserved
  • 16. SMART REFERENCE - TABLE INTRODUCTION TO AGILE 16 ©2011 Capgemini. All Rights Reserved
  • 17. SMART REFERENCE – IN USE INTRODUCTION TO AGILE 17 ©2011 Capgemini. All Rights Reserved
  • 18. SOFTWARE ARCHITECTURE A true requirements for model driven development
  • 19. Pages Presentation UserControls Panels Use cases Process Workflow Domain objects / Entities Domain Factories / Repositories Enums / Value objects / Smart references [Mapping] Table Gateways Data / Services Queries [Mapping] Outside world Database INTRODUCTION TO AGILE 19 ©2011 Capgemini. All Rights Reserved
  • 21. User interface Software Architecture specification 1. Map your 5. Finalize your business processes application Existing to smart use cases Applications Smart use cases Forms Use cases 4. Generate your code using Tobago MDA a text template Frameworks Specifications engine Domain Domain Model objects Data / Service Business classes models 2. Set up your Test 3. Establish scenario’s domain model your software Databases architecture(s) INTRODUCTION TO AGILE 21 ©2011 Capgemini. All Rights Reserved
  • 22. MODEL DRIVEN DEVELOPMENT – TEMPLATE ENGINES Characteristics Load UML model (expressed in XMI) Load templates (from flat files) Combine elements from UML model with templates to generate deliverables Templates Templates contains code that runs in template engine Templates might use a folder model Generation process Ability to generate all or individual UML model elements Which UML model elements are supported? Generated deliverables can be code but also any other document type INTRODUCTION TO AGILE 22 ©2011 Capgemini. All Rights Reserved
  • 23. MODEL DRIVEN DEVELOPMENT - TEMPLATE ENGINES Properties can be used in templates Template engine knows (part of) the UML meta model INTRODUCTION TO AGILE 23 ©2011 Capgemini. All Rights Reserved
  • 24. MODEL DRIVEN DEVELOPMENT - TEMPLATES INTRODUCTION TO AGILE 24 ©2011 Capgemini. All Rights Reserved
  • 25. GENERATE MANY THINGS E.G. TABLE CREATE SCRIPTS INTRODUCTION TO AGILE 25 ©2011 Capgemini. All Rights Reserved
  • 27. A SIMPLE SMART USE CASE MODEL uc Manage Customer «search» Select Customer «incl ude» «master detail» Manage Customer Site Administrator (from A ctors) «extend» «define» Define Contact INTRODUCTION TO AGILE 27 ©2011 Capgemini. All Rights Reserved
  • 28. A SIMPLE DOMAIN MODEL class Budapest.Business «business class» «business class» Cust omer Cont act + Name: string + Name: string + Address: string * + Email: Email [0..1] + Postcode: Postcode + Phone: PhoneNumber [0..1] + City: string + Department: Departments + Country: SmartRef + Website: Url [0..1] «enumeration» Depart ments Sal es Purchasing Helpdesk Management INTRODUCTION TO AGILE 28 ©2011 Capgemini. All Rights Reserved
  • 29. USING TOBAGO MDA INTRODUCTION TO AGILE 29 ©2011 Capgemini. All Rights Reserved
  • 30. GENERATED CODE IN ASP.NET INTRODUCTION TO AGILE 30 ©2011 Capgemini. All Rights Reserved
  • 31. GENERATED CODE IN SILVERLIGHT INTRODUCTION TO AGILE 31 ©2011 Capgemini. All Rights Reserved
  • 33. REFERENCES AND QUESTIONS sander.hoogendoorn@capgemini.com www.sanderhoogendoorn.com | www.smartusecase.com | www.accelerateddeliveryplatform.com @aahoogendoorn