33
With smart use cases, domain driven design and Tobago MDA MODEL DRIVEN DEVELOPMENT

Model driven development using smart use cases and domain driven design

Embed Size (px)

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.

Citation preview

Page 1: Model driven development using smart use cases and domain driven design

With smart use cases, domain driven design and Tobago MDA

MODEL DRIVEN DEVELOPMENT

Page 2: Model driven development using smart use cases and domain driven design

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

Page 3: Model driven development using smart use cases and domain driven design

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

Page 4: Model driven development using smart use cases and domain driven design

A YAGNI approach to requirements

SMART USE CASES

Page 5: Model driven development using smart use cases and domain driven design

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

Page 6: Model driven development using smart use cases and domain driven design

6INTRODUCTION TO AGILE©2011 Capgemini. All Rights Reserved

CLOUD LEVEL

Page 7: Model driven development using smart use cases and domain driven design

7INTRODUCTION TO AGILE©2011 Capgemini. All Rights Reserved

KITE LEVEL

Page 8: Model driven development using smart use cases and domain driven design

8INTRODUCTION TO AGILE©2011 Capgemini. All Rights Reserved

MODELING SMART USE CASES – SEA AND FISH LEVEL

Page 9: Model driven development using smart use cases and domain driven design

Stereotypes

SMART USE CASES

Page 10: Model driven development using smart use cases and domain driven design

A brief introduction

DOMAIN DRIVEN DEVELOPMENT

Page 11: Model driven development using smart use cases and domain driven design

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

Page 12: Model driven development using smart use cases and domain driven design

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

Page 13: Model driven development using smart use cases and domain driven design

ENTITY ATTRIBUTES

Page 14: Model driven development using smart use cases and domain driven design

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

Page 15: Model driven development using smart use cases and domain driven design

15INTRODUCTION TO AGILE©2011 Capgemini. All Rights Reserved

VALUE OBJECT – IN USE

Page 16: Model driven development using smart use cases and domain driven design

16INTRODUCTION TO AGILE©2011 Capgemini. All Rights Reserved

SMART REFERENCE - TABLE

Page 17: Model driven development using smart use cases and domain driven design

17INTRODUCTION TO AGILE©2011 Capgemini. All Rights Reserved

SMART REFERENCE – IN USE

Page 18: Model driven development using smart use cases and domain driven design

A true requirements for model driven development

SOFTWARE ARCHITECTURE

Page 19: Model driven development using smart use cases and domain driven design

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

Page 20: Model driven development using smart use cases and domain driven design

With Tobago MDA

MODEL DRIVEN DEVELOPMENT

Page 21: Model driven development using smart use cases and domain driven design

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

Page 22: Model driven development using smart use cases and domain driven design

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

Page 23: Model driven development using smart use cases and domain driven design

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

Page 24: Model driven development using smart use cases and domain driven design

24INTRODUCTION TO AGILE©2011 Capgemini. All Rights Reserved

MODEL DRIVEN DEVELOPMENT - TEMPLATES

Page 25: Model driven development using smart use cases and domain driven design

25INTRODUCTION TO AGILE©2011 Capgemini. All Rights Reserved

GENERATE MANY THINGS E.G. TABLE CREATE SCRIPTS

Page 26: Model driven development using smart use cases and domain driven design

A quick example

GENERATING CODE

Page 27: Model driven development using smart use cases and domain driven design

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»

Page 28: Model driven development using smart use cases and domain driven design

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

*

Page 29: Model driven development using smart use cases and domain driven design

29INTRODUCTION TO AGILE©2011 Capgemini. All Rights Reserved

USING TOBAGO MDA

Page 30: Model driven development using smart use cases and domain driven design

30INTRODUCTION TO AGILE©2011 Capgemini. All Rights Reserved

GENERATED CODE IN ASP.NET

Page 31: Model driven development using smart use cases and domain driven design

31INTRODUCTION TO AGILE©2011 Capgemini. All Rights Reserved

GENERATED CODE IN SILVERLIGHT

Page 32: Model driven development using smart use cases and domain driven design

www.accelerateddeliveryplatform.com

WWW.SMARTUSECASE.COM

Page 33: Model driven development using smart use cases and domain driven design

[email protected]

www.sanderhoogendoorn.com | www.smartusecase.com | www.accelerateddeliveryplatform.com

@aahoogendoorn

REFERENCES AND QUESTIONS