Weitere ähnliche Inhalte Ähnlich wie 20090410 J Spring Pragmatic Model Driven Development In Java Using Smart (20) Mehr von Sander Hoogendoorn (20) Kürzlich hochgeladen (20) 20090410 J Spring Pragmatic Model Driven Development In Java Using Smart1. Pragmatic model driven development in Java using
smart use cases and domain driven development
Sander Hoogendoorn, Capgemini
Rody Middelkoop, Avisi
<TITLE> 1
© Copyright Capgemini 2008 All Rights Reserved
2. Sander Hoogendoorn
Capgemini
Principal technology officer
Capgemini agile thought leader
Certified global software engineer (SE4)
Chief architect Accelerated Delivery Platform
Other
Author books (UML, agile) and articles
Speaker at conferences
Microsoft Partner Advisory Council .NET
Columnist Software Release Magazine, SDN Magazine
Editorial board Software Release Magazine
Editorial board Tijdschrift IT Management
Advisory board @Portunity
Member expert panel Computable
Web
www.sanderhoogendoorn.com
www.accelerateddeliveryplatform.com
<TITLE> 2
© Copyright Capgemini 2008 All Rights Reserved
3. Rody Middelkoop
Avisi
Technical consultant
Hogeschool Arnhem Nijmegen (HAN)
Lecturer Software Engineering
Other
Sun Certified Java Programmer / Developer
Author of several articles
Contributor Livre
Speaker at conferences
Web
www.avisi.nl
rodymiddelkoop.blogspot.com
<TITLE> 3
© Copyright Capgemini 2008 All Rights Reserved
4. Agenda
Introduction
Model driven development
Pragmatic model driven development
Our approach
Benefite
Smart use cases
Modeling smart use cases
Smart use cases in code
Domain driven design
Domain objects
Smart references
Value objects
Generating code
Text templating
Using Tobago MDA
Demo’s
<TITLE> 4
© Copyright Capgemini 2008 All Rights Reserved
6. Model driven development SH
Why?
Bridge gap between design and code
Improve quality of delivered software
Raise productivity
Achieve platform and framework independency
Increase testability
How?
Proprietary techniques
DSL’s (textual and graphical)
UML
Database
India
What?
Modeling tool code generation
Development tool code generation
Intermediate code generation
<TITLE> 6
© Copyright Capgemini 2008 All Rights Reserved
7. A pragmatic approach
To model driven development
<TITLE> 7
© Copyright Capgemini 2008 All Rights Reserved
8. User interface Software Architecture
specification
1. Map your 5. Finalize your
business processes application
to smart use cases
Existing
Applications Smart
use cases
Forms
Use cases
4. Generate
code using a
Tobago
text template Frameworks
MDA
engine
Specifications
Domain
Domain
objects
Model
Data / Service
Business
classes
models
2. Create the Test
3. Establish
scenario’s
domain model your software
Databases
architecture(s)
<TITLE> 8
© Copyright Capgemini 2008 All Rights Reserved
9. Smart use cases
What makes a use cases smart?
<TITLE> 9
© Copyright Capgemini 2008 All Rights Reserved
10. Different levels of use cases
Merge
companies
Cloud level High summary
Merge
mortgage systems
Kite level Summary
Place
order
Sea level User goal
Fish level Sub-function
Select
product
Clam level Too low
Insert
orderline
<TITLE> 10
© Copyright Capgemini 2008 All Rights Reserved
11. Different levels of use cases
‘Regular’ use cases
Regular Smart
Only user goal level use cases use case use case
Use cases ‘as they are intended’
Format Textual Visual
A single use case describes
a single elementary business process
Very
Differ in granularity too much Granularity Unified
different
Law of Large Numbers does not apply
Smart use cases Estimates Hard Easier
User goal and sub function level use cases
Good unit of work and estimation Unit of work Lousy Good
A single elementary business process is modeled
in a single use case diagram
Re-use Incidental Normal
A single user goal level use case
+ auxiliary use cases at sub-function level
Very similar granularity Traceability
Possible Likely
in code
<TITLE> 11
© Copyright Capgemini 2008 All Rights Reserved
13. Modeling smart use cases
Approach
Create a use case diagram for each
elementary business process
Model a (user goal level) use case that
maps to the elementary business process
Name it after the elementary business
process
Identify the actors executing the use case
Identify the sub-function level use cases
Model include and extend relationships
Identify supporting actors
<TITLE> 13
© Copyright Capgemini 2008 All Rights Reserved
14. Identifying sub-function level use cases
sub-
Guidelines
Identify re-use
Model one form per use case
Model one use case per functional web
part
Isolate unknown functionality
Identify complex functionality
Show extensive reporting
Model complex calculations
Isolate interaction with others
Avoid low level (database) interaction
<TITLE> 14
© Copyright Capgemini 2008 All Rights Reserved
16. Smart use case stereotypes
Decorating the model
<TITLE> 16
© Copyright Capgemini 2008 All Rights Reserved
17. Smart use case stereotypes RM
What?
Classify model elements
Do not add meaning to model
Define custom stereotypes
Why?
Speed up analysis and design
Map design to software architecture
Generate lots of code!
Standarize functional testing
<TITLE> 17
© Copyright Capgemini 2008 All Rights Reserved
20. Smart use case stereotypes
<TITLE> 20
© Copyright Capgemini 2008 All Rights Reserved
21. Mapping to software architecture
Smart use cases and domain design
<TITLE> 21
© Copyright Capgemini 2008 All Rights Reserved
22. Pages
UserControls
Presentation
Panels
Use cases
Process Workflow
Domain objects / Entities
Factories / Repositories
Domain
Enums / Value objects / Smart references
[Mapping]
Table Gateways
Data / Services Queries
[Mapping]
Outside world Database
<TITLE> 22
© Copyright Capgemini 2008 All Rights Reserved
23. Pages
UserControls
Presentation
Panels
Use cases
Process Workflow
Domain objects / Entities
Factories / Repositories
Domain
Enums / Value objects / Smart references
[Mapping]
Service gateways
Data / Services Service locators
[Mapping]
Exact SAP BizTalk Java
Outside world Services / ESB
<TITLE> 23
© Copyright Capgemini 2008 All Rights Reserved
24. Service contracts
Presentation Operation contracts
Data contracts
Use cases
Process Services
Domain objects / Entities
Factories / Repositories
Domain
Enums / Value objects / Smart references
[Mapping]
Table Gateways / Service Gateways
Data / Services Queries / Service Locators
[Mapping]
Exact SAP BizTalk Java
Database
Outside world
Services / ESB
<TITLE> 24
© Copyright Capgemini 2008 All Rights Reserved
25. Domain driven design
A brief introduction
<TITLE> 25
© Copyright Capgemini 2008 All Rights Reserved
26. Domain driven design
Definition
Base complex domain designs on the model
Primary focus is on the domain and domain logic
In practice
Model the domain
Apply the extended domain driven vocabulary
Build the domain layer
Hook in process layer
Plug in data / services layer
Useful when
The domain of your application is core
Two tier is not (never?) desirable
Application needs to function independent of back
office, data sources or services
<TITLE> 26
© Copyright Capgemini 2008 All Rights Reserved
27. Domain driven design
Vocabulary
Entity / Domain object
Association
Value object
Aggregate
Repository
Factory
Service
Additional vocabulary
Enumeration
Smart reference
<TITLE> 27
© Copyright Capgemini 2008 All Rights Reserved
28. Example – Class diagram
<TITLE> 28
© Copyright Capgemini 2008 All Rights Reserved
30. Properties and property types RM
Basic types
string, integer, DateTime
Include nullable wrapping
Enumerations
Set up at design time, unchangeable at run-time
Genders, Categories
Value objects
No specific instances
Isbn, Email, Url, Money
Smart references
Changeable at run-time, such as ContractType
Associations
Cached domain objects such as Country,
Nationality
First level citizens such as Customer, Product
<TITLE> 30
© Copyright Capgemini 2008 All Rights Reserved
31. Value object
<TITLE> 31
© Copyright Capgemini 2008 All Rights Reserved
32. Value object - Implementing
<TITLE> 32
© Copyright Capgemini 2008 All Rights Reserved
33. Value object – In use
<TITLE> 33
© Copyright Capgemini 2008 All Rights Reserved
34. Smart reference
<TITLE> 34
© Copyright Capgemini 2008 All Rights Reserved
35. Smart reference - Table
<TITLE> 35
© Copyright Capgemini 2008 All Rights Reserved
36. Smart reference - In entity
<TITLE> 36
© Copyright Capgemini 2008 All Rights Reserved
37. Smart reference – In use
<TITLE> 37
© Copyright Capgemini 2008 All Rights Reserved
38. Text templating
<TITLE> 38
© Copyright Capgemini 2008 All Rights Reserved
39. Model driven development – Template engines SH
How?
Define project
Define patterns
Import model
Generate deliverable
Finalize code
Additional features
Combine model elements
Combine types of model elements
Remember location
Changing the model withour losing code
Partial classes
Inherited classes
Marking code
<TITLE> 39
© Copyright Capgemini 2008 All Rights Reserved
40. Tobago MDA – www.accelerateddeliveryplatform.com
<TITLE> 40
© Copyright Capgemini 2008 All Rights Reserved
41. Tobago MDA
<TITLE> 41
© Copyright Capgemini 2008 All Rights Reserved
42. Tobago MDA
<TITLE> 42
© Copyright Capgemini 2008 All Rights Reserved
43. Model driven development - Template engines RM
Properties can
be used in
templates
Template engine
knows (part of)
the UML meta
model
<TITLE> 43
© Copyright Capgemini 2008 All Rights Reserved
44. Freemarker
Sitemesh
Presentation
DisplayTag
Struts2
Process XWork Actions
Spring
EJB3 Services
Data / Services EJB3 DataAccessObjects
Spring
JPA Domain objects
Enums
Domain
Value objects
Smart references
Outside world MySQL
<TITLE> 44
© Copyright Capgemini 2008 All Rights Reserved
46. Generate many things e.g. Table create scripts
<TITLE> 46
© Copyright Capgemini 2008 All Rights Reserved
47. Generate many things e.g. Table create scripts
<TITLE> 47
© Copyright Capgemini 2008 All Rights Reserved
48. Generating code
Demo!
<TITLE> 48
© Copyright Capgemini 2008 All Rights Reserved
50. References and questions
www.accelerateddeliveryplatform.com
sander.hoogendoorn@capgemini.com
r.r.middelkoop@avisi.nl
Twitter: aahoogendoorn LinkedIn: aahoogendoorn rodym
<TITLE> 50
© Copyright Capgemini 2008 All Rights Reserved