model driven development using smart use cases and domain driven design
DESCRIPTION
Short presentation of how smart use cases and domain driven design can trigger model driven development. Note: there is a very good white paper on the Capgemini website about the same approach.TRANSCRIPT
With smart use cases, domain driven design and Tobago MDA
MODEL DRIVEN DEVELOPMENT
2INTRODUCTION TO AGILE©2011 Capgemini. All Rights Reserved
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
SANDER HOOGENDOORN
3INTRODUCTION TO AGILE©2011 Capgemini. All Rights Reserved
Today’s topics
� Smart use cases
� Domain driven design
� Software architecture
� Model driven development
with Tobago MDA
� Generating code
with Tobago MDA
� Demo(s)!
AGENDA
A YAGNI approach to requirements
SMART USE CASES
5INTRODUCTION TO AGILE©2011 Capgemini. All Rights Reserved
AGILE REQUIREMENTS - APPROACH
D
E
F
SmartUse Cases
A
Project
Scope
D
Use Cases
A
B C
Hierarchical
Processes
B
D
D
Hierarchical
Processes
Chronological
Processes
Cloud Level Kite Level Sea Level Fish Level
C
6INTRODUCTION TO AGILE©2011 Capgemini. All Rights Reserved
CLOUD LEVEL
7INTRODUCTION TO AGILE©2011 Capgemini. All Rights Reserved
KITE LEVEL
8INTRODUCTION TO AGILE©2011 Capgemini. All Rights Reserved
MODELING SMART USE CASES – SEA AND FISH LEVEL
Stereotypes
SMART USE CASES
A brief introduction
DOMAIN DRIVEN DEVELOPMENT
11INTRODUCTION TO AGILE©2011 Capgemini. All Rights Reserved
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
DOMAIN DRIVEN DEVELOPMENT - VOCABULARY
12INTRODUCTION TO AGILE©2011 Capgemini. All Rights Reserved
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
DOMAIN DRIVEN DEVELOPMENT – EXTENDED VOCABULARY
ENTITY ATTRIBUTES
14INTRODUCTION TO AGILE©2011 Capgemini. All Rights Reserved
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
ENTITY ATTRIBUTES – TYPES OF ATTRIBUTES
15INTRODUCTION TO AGILE©2011 Capgemini. All Rights Reserved
VALUE OBJECT – IN USE
16INTRODUCTION TO AGILE©2011 Capgemini. All Rights Reserved
SMART REFERENCE - TABLE
17INTRODUCTION TO AGILE©2011 Capgemini. All Rights Reserved
SMART REFERENCE – IN USE
A true requirements for model driven development
SOFTWARE ARCHITECTURE
19INTRODUCTION TO AGILE©2011 Capgemini. All Rights Reserved
Presentation
Process
Domain
Data / Services
Outside world
Pages
UserControls
Panels
Use cases
Workflow
Domain objects / Entities
Factories / Repositories
Enums / Value objects / Smart references
[Mapping]
Table Gateways
Queries
[Mapping]
Database
With Tobago MDA
MODEL DRIVEN DEVELOPMENT
21INTRODUCTION TO AGILE©2011 Capgemini. All Rights Reserved
Forms
Use cases
Domain
objects
Data / Serviceclasses
Databases
Software Architecture
TobagoMDA
Test
scenario’s
Frameworks
Specifications
Existing
Applications
Businessmodels
DomainModel
Smartuse cases
User interface
specification1. Map your
business processes
to smart use cases
1. Map your
business processes
to smart use cases
2. Set up your
domain model
2. Set up your
domain model3. Establish
your software
architecture(s)
3. Establish
your software
architecture(s)
4. Generate
your code using
a text template
engine
4. Generate
your code using
a text template
engine
5. Finalize your
application
5. Finalize your
application
22INTRODUCTION TO AGILE©2011 Capgemini. All Rights Reserved
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
MODEL DRIVEN DEVELOPMENT – TEMPLATE ENGINES
23INTRODUCTION TO AGILE©2011 Capgemini. All Rights Reserved
MODEL DRIVEN DEVELOPMENT - TEMPLATE ENGINES
Template engine knows (part of) the UML meta
model
Template engine knows (part of) the UML meta
model
Properties can be used in templates
Properties can be used in templates
24INTRODUCTION TO AGILE©2011 Capgemini. All Rights Reserved
MODEL DRIVEN DEVELOPMENT - TEMPLATES
25INTRODUCTION TO AGILE©2011 Capgemini. All Rights Reserved
GENERATE MANY THINGS E.G. TABLE CREATE SCRIPTS
A quick example
GENERATING CODE
27INTRODUCTION TO AGILE©2011 Capgemini. All Rights Reserved
A SIMPLE SMART USE CASE MODEL
uc Manage Customer
Site Administrator
(from A ctors)
«master detail»
Manage Customer
«search»
Select Customer
«define»
Define Contact
«extend»
«incl ude»
28INTRODUCTION TO AGILE©2011 Capgemini. All Rights Reserved
A SIMPLE DOMAIN MODEL
class Budapest.Business
«business class»
Cust omer
+ Name: string
+ Address: string
+ Postcode: Postcode
+ City: string
+ Country: SmartRef
+ Website: Url [0..1]
«business class»
Contact
+ Name: string
+ Email: Email [0..1]
+ Phone: PhoneNumber [0..1]
+ Department: Departments
«enumeration»
Depart ments
Sal es
Purchasing
Helpdesk
Management
*
29INTRODUCTION TO AGILE©2011 Capgemini. All Rights Reserved
USING TOBAGO MDA
30INTRODUCTION TO AGILE©2011 Capgemini. All Rights Reserved
GENERATED CODE IN ASP.NET
31INTRODUCTION TO AGILE©2011 Capgemini. All Rights Reserved
GENERATED CODE IN SILVERLIGHT
www.accelerateddeliveryplatform.com
WWW.SMARTUSECASE.COM
www.sanderhoogendoorn.com | www.smartusecase.com | www.accelerateddeliveryplatform.com
@aahoogendoorn
REFERENCES AND QUESTIONS