Model driven development using smart use cases and domain driven design

Preview:

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

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

sander.hoogendoorn@capgemini.com

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

@aahoogendoorn

REFERENCES AND QUESTIONS