department of computer science and software engineering concordia university e nterprise a...

37
Department of Computer Science and Software Engineering Concordia University ENTERPRISE APPLICATION DESIGN PATTERNS: IMPROVED AND APPLIED Stuart Thiel [email protected] a.ca February 11, 2010

Upload: delilah-james

Post on 26-Dec-2015

216 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Department of Computer Science and Software Engineering Concordia University E NTERPRISE A PPLICATION D ESIGN P ATTERNS : I MPROVED AND A PPLIED Stuart

Department of Computer Science and Software

EngineeringConcordia University

ENTERPRISE APPLICATION DESIGN PATTERNS:IMPROVED AND APPLIED

Stuart [email protected]

February 11, 2010

Page 2: Department of Computer Science and Software Engineering Concordia University E NTERPRISE A PPLICATION D ESIGN P ATTERNS : I MPROVED AND A PPLIED Stuart

2

Enterprise Application Design Patterns: Improved and Applied

Outline

A Brief Overview of Development

Problems for Software Engineers

A Progression Through Fowler’s Patterns

Domain Objects and Improved Patterns

Applying Patterns with the SoenEA

Framework

February 2010 Stuart Thiel

Outline

Page 3: Department of Computer Science and Software Engineering Concordia University E NTERPRISE A PPLICATION D ESIGN P ATTERNS : I MPROVED AND A PPLIED Stuart

3

Enterprise Application Design Patterns: Improved and Applied

Developers Work With Software

Design

Implement

Test

Maintain

February 2010 Stuart Thiel

Developers Work With Software

Page 4: Department of Computer Science and Software Engineering Concordia University E NTERPRISE A PPLICATION D ESIGN P ATTERNS : I MPROVED AND A PPLIED Stuart

4

Enterprise Application Design Patterns: Improved and Applied

Developer Aids/Tools• Programming Languages

• Integrated Development Environments

• Processes / Artifacts

• Patterns / Styles

February 2010 Stuart Thiel

Developer Tools

Page 5: Department of Computer Science and Software Engineering Concordia University E NTERPRISE A PPLICATION D ESIGN P ATTERNS : I MPROVED AND A PPLIED Stuart

5

Enterprise Application Design Patterns: Improved and Applied

Problems

Fowler describes architectural patterns, but no overall

usage guidelines

• High level patterns lack broad examples

• Guidance on interrelation of patterns is sparse

• Pattern theory / implementation separation ambiguous

Cooking Analogy

February 2010 Stuart Thiel

Problems

Page 6: Department of Computer Science and Software Engineering Concordia University E NTERPRISE A PPLICATION D ESIGN P ATTERNS : I MPROVED AND A PPLIED Stuart

6

Enterprise Application Design Patterns: Improved and Applied

Problems:: Few Simple Examples

Trivial examples for Fowler’s patterns, usually

covering only a piece of functionality

February 2010 Stuart Thiel

P. Few Simple Examples

Page 7: Department of Computer Science and Software Engineering Concordia University E NTERPRISE A PPLICATION D ESIGN P ATTERNS : I MPROVED AND A PPLIED Stuart

7

Enterprise Application Design Patterns: Improved and Applied

Problems:: Interrelation Not

Described

Not usually covering more than one or two

patterns at a time

Discussion of interrelation limited

February 2010 Stuart Thiel

P. Interrelation Not Described

Page 8: Department of Computer Science and Software Engineering Concordia University E NTERPRISE A PPLICATION D ESIGN P ATTERNS : I MPROVED AND A PPLIED Stuart

8

Enterprise Application Design Patterns: Improved and Applied

Problems:: Theory Mixes with

Implementation, or is Kept Apart

Lazy Load

Unit of Work

February 2010 Stuart Thiel

P. Theory Implementation

Page 9: Department of Computer Science and Software Engineering Concordia University E NTERPRISE A PPLICATION D ESIGN P ATTERNS : I MPROVED AND A PPLIED Stuart

9

Enterprise Application Design Patterns: Improved and Applied

Problems Summary

The components of a solution are available

We can readily identify patterns in existing

software

There is no description of what to

do

February 2010 Stuart Thiel

Problem Summary

Page 10: Department of Computer Science and Software Engineering Concordia University E NTERPRISE A PPLICATION D ESIGN P ATTERNS : I MPROVED AND A PPLIED Stuart

10

Enterprise Application Design Patterns: Improved and AppliedSolutions

Solutions

Review of Existing Patterns

An Additional Patterns

Refined Patterns

SoenEA

February 2010 Stuart Thiel

Page 11: Department of Computer Science and Software Engineering Concordia University E NTERPRISE A PPLICATION D ESIGN P ATTERNS : I MPROVED AND A PPLIED Stuart

11

Enterprise Application Design Patterns: Improved and AppliedExisting Patterns

Review of Existing Patterns

Fowler identifies important patterns

They need context wrt each other

Transaction Script to complex Domain Model

February 2010 Stuart Thiel

Page 12: Department of Computer Science and Software Engineering Concordia University E NTERPRISE A PPLICATION D ESIGN P ATTERNS : I MPROVED AND A PPLIED Stuart

12

Enterprise Application Design Patterns: Improved and AppliedAdditional Patterns

Additional Pattern

Domain Object

Front Command

Dispatcher

List Proxy

February 2010 Stuart Thiel

Page 13: Department of Computer Science and Software Engineering Concordia University E NTERPRISE A PPLICATION D ESIGN P ATTERNS : I MPROVED AND A PPLIED Stuart

13

Enterprise Application Design Patterns: Improved and AppliedRefined Patterns:: Mappers

Refined Patterns

Data Mapper / Table Data GatewayInput MapperOutput MapperTable Data GatewayFinder

February 2010 Stuart Thiel

Page 14: Department of Computer Science and Software Engineering Concordia University E NTERPRISE A PPLICATION D ESIGN P ATTERNS : I MPROVED AND A PPLIED Stuart

14

Enterprise Application Design Patterns: Improved and AppliedRefined Patterns:: Others

Refined Patterns

Front Controller

Lazy Load

Identity Map

Unit of Work

February 2010 Stuart Thiel

Page 15: Department of Computer Science and Software Engineering Concordia University E NTERPRISE A PPLICATION D ESIGN P ATTERNS : I MPROVED AND A PPLIED Stuart

15

Enterprise Application Design Patterns: Improved and AppliedSoenEA:: advantages

SoenEA

help eliminate tedious tasks,

help programmers to make fewer mistakes, and

give guidance on proper practices.

February 2010 Stuart Thiel

Page 16: Department of Computer Science and Software Engineering Concordia University E NTERPRISE A PPLICATION D ESIGN P ATTERNS : I MPROVED AND A PPLIED Stuart

16

Enterprise Application Design Patterns: Improved and AppliedSoenEA:: provides

SoenEA

Patterns

Utility components

Default Implementations of Typical Components (DITCs)

Test components

February 2010 Stuart Thiel

Page 17: Department of Computer Science and Software Engineering Concordia University E NTERPRISE A PPLICATION D ESIGN P ATTERNS : I MPROVED AND A PPLIED Stuart

17

Enterprise Application Design Patterns: Improved and Applied

SoenEA Summary• Developers can use our contribution to build on their

understanding of existing patterns• They can use SoenEA to quickly develop software• SoenEA is like a jigsaw puzzle

February 2010 Stuart Thiel

Summary

February 2010 Stuart Thiel

Page 18: Department of Computer Science and Software Engineering Concordia University E NTERPRISE A PPLICATION D ESIGN P ATTERNS : I MPROVED AND A PPLIED Stuart

18

Enterprise Application Design Patterns: Improved and Applied

Conclusion

We have brought together a lot of other people’s good ideas

Our approach has been used in commercial applications

Our approach has allowed consistent and reliable

development

Our approach is readily communicable

February 2010 Stuart Thiel

Conclusion

Page 19: Department of Computer Science and Software Engineering Concordia University E NTERPRISE A PPLICATION D ESIGN P ATTERNS : I MPROVED AND A PPLIED Stuart

19

Enterprise Application Design Patterns: Improved and Applied

Future Work

Code Generation

Testing

Application Level Patterns

Validator Pattern

Refining Data Gateway Implementations

Integration with other artefacts0

February 2010 Stuart Thiel

Future Work

Page 20: Department of Computer Science and Software Engineering Concordia University E NTERPRISE A PPLICATION D ESIGN P ATTERNS : I MPROVED AND A PPLIED Stuart

20

Enterprise Application Design Patterns: Improved and Applied

Thank You!

Thank You

Page 21: Department of Computer Science and Software Engineering Concordia University E NTERPRISE A PPLICATION D ESIGN P ATTERNS : I MPROVED AND A PPLIED Stuart

21

Enterprise Application Design Patterns: Improved and Applied

Page 22: Department of Computer Science and Software Engineering Concordia University E NTERPRISE A PPLICATION D ESIGN P ATTERNS : I MPROVED AND A PPLIED Stuart

22

Enterprise Application Design Patterns: Improved and Applied

Page 23: Department of Computer Science and Software Engineering Concordia University E NTERPRISE A PPLICATION D ESIGN P ATTERNS : I MPROVED AND A PPLIED Stuart

23

Enterprise Application Design Patterns: Improved and Applied

Page 24: Department of Computer Science and Software Engineering Concordia University E NTERPRISE A PPLICATION D ESIGN P ATTERNS : I MPROVED AND A PPLIED Stuart

24

Enterprise Application Design Patterns: Improved and Applied

An Analogy

Software Development -> Cooking

WEA Development -> Baking

February 2010 Stuart Thiel

An Analogy

Page 25: Department of Computer Science and Software Engineering Concordia University E NTERPRISE A PPLICATION D ESIGN P ATTERNS : I MPROVED AND A PPLIED Stuart

25

Enterprise Application Design Patterns: Improved and Applied

An Analogy:: Styles

Layered Style, Event-based Style, Process

Control, Blackboard

Cakes/Pizza, Cookies/Muffins, Souflé,

Omlette/Pancake

February 2010 Stuart Thiel

An Analogy:: Styles

Page 26: Department of Computer Science and Software Engineering Concordia University E NTERPRISE A PPLICATION D ESIGN P ATTERNS : I MPROVED AND A PPLIED Stuart

26

Enterprise Application Design Patterns: Improved and Applied

An Analogy:: Design Patterns

Command, Factory, Adapter, Proxy

Mixing, Chopping, Heating, Greasing,

Measuring

February 2010 Stuart Thiel

An Analogy:: Design Patterns

Page 27: Department of Computer Science and Software Engineering Concordia University E NTERPRISE A PPLICATION D ESIGN P ATTERNS : I MPROVED AND A PPLIED Stuart

27

Enterprise Application Design Patterns: Improved and Applied

An Analogy:: Architectural

Patterns

Lazy Load, Pessimistic Offline Lock , Unit Of

Work

Mixing Dry Ingredients vs. Wet, Checking That

All Ingredients Are Available Before Starting,

Preparing All Ingredients

February 2010 Stuart Thiel

An Analogy:: Architectural Patterns

Page 28: Department of Computer Science and Software Engineering Concordia University E NTERPRISE A PPLICATION D ESIGN P ATTERNS : I MPROVED AND A PPLIED Stuart

28

Enterprise Application Design Patterns: Improved and Applied

An Analogy:: Frameworks

Struts 1.0 - > Waffle Iron

Hibernate -> Bread Maker

February 2010 Stuart Thiel

Analogy:: Frameworks

Page 29: Department of Computer Science and Software Engineering Concordia University E NTERPRISE A PPLICATION D ESIGN P ATTERNS : I MPROVED AND A PPLIED Stuart

29

Enterprise Application Design Patterns: Improved and Applied

Page 30: Department of Computer Science and Software Engineering Concordia University E NTERPRISE A PPLICATION D ESIGN P ATTERNS : I MPROVED AND A PPLIED Stuart

30

Enterprise Application Design Patterns: Improved and Applied

Page 31: Department of Computer Science and Software Engineering Concordia University E NTERPRISE A PPLICATION D ESIGN P ATTERNS : I MPROVED AND A PPLIED Stuart

31

Enterprise Application Design Patterns: Improved and Applied

Page 32: Department of Computer Science and Software Engineering Concordia University E NTERPRISE A PPLICATION D ESIGN P ATTERNS : I MPROVED AND A PPLIED Stuart

32

Enterprise Application Design Patterns: Improved and Applied

Cyclic Reference

Where to solve it?

• Input Mapper

Common Alternatives

• Loading other Domain Objects after

February 2010 Stuart Thiel

Cyclic Reference Solution

Page 33: Department of Computer Science and Software Engineering Concordia University E NTERPRISE A PPLICATION D ESIGN P ATTERNS : I MPROVED AND A PPLIED Stuart

33

Enterprise Application Design Patterns: Improved and Applied

Cyclic Reference alternative

Easy:

February 2010 Stuart Thiel

Page 34: Department of Computer Science and Software Engineering Concordia University E NTERPRISE A PPLICATION D ESIGN P ATTERNS : I MPROVED AND A PPLIED Stuart

34

Enterprise Application Design Patterns: Improved and Applied

public Person find(long id) {

//Check Identity Map and return if found

if(IdentityMap.has(id,Person.class))

return IdentityMap.get(id,Person.class);

//Not in Identity Map

ResultSet rs = PersonFinder.find(id);

if(!rs.next) ;//

Person p = new Person(id);

UoW.getCurrent.registerClean(p);

Person buddy = find(rs.getLong("buddy"));

p.setBuddy(buddy);

}

February 2010 Stuart Thiel

Page 35: Department of Computer Science and Software Engineering Concordia University E NTERPRISE A PPLICATION D ESIGN P ATTERNS : I MPROVED AND A PPLIED Stuart

35

Enterprise Application Design Patterns: Improved and Applied

Cyclic Reference alternative

Harder

February 2010 Stuart Thiel

Page 36: Department of Computer Science and Software Engineering Concordia University E NTERPRISE A PPLICATION D ESIGN P ATTERNS : I MPROVED AND A PPLIED Stuart

36

Enterprise Application Design Patterns: Improved and Applied

public Person find(long id) {

//Check Identity Map and return if found

if(IdentityMap.has(id,Person.class))

return IdentityMap.get(id,Person.class);

//Not in Identity Map

ResultSet rs = PersonFinder.find(id);

if(!rs.next) ;//

Person p = new Person(id);

UoW.getCurrent.registerClean(p);

Pet pet = find(rs.getLong("pet"));

p.setPet(pet);

}

February 2010 Stuart Thiel

Page 37: Department of Computer Science and Software Engineering Concordia University E NTERPRISE A PPLICATION D ESIGN P ATTERNS : I MPROVED AND A PPLIED Stuart

37

Enterprise Application Design Patterns: Improved and Applied

Proxy

public Person find(long id) {

//Check Identity Map and return if found

if(IdentityMap.has(id,Person.class))

return IdentityMap.get(id,Person.class);

//Not in Identity Map

ResultSet rs = PersonFinder.find(id);

if(!rs.next) ;//

Person p = new Person(id,

new PersonProxy(rs.getLong("buddy")));

UoW.getCurrent.registerClean(p);

}

February 2010 Stuart Thiel