106
Sander Hoogendoorn Principal Technology Officer & Global Agile Thouhtleader Capgemini www.sanderhoogendoorn.com www.speedbird9.com @aahoogendoorn How frameworks can kill your projects And some patterns to prevent you from getting killed

How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

Embed Size (px)

DESCRIPTION

Here's the slide deck for my closing keynote at XP Days Ukraine 2013 in Kiev.

Citation preview

Page 1: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

Sander HoogendoornPrincipal Technology Officer

& Global Agile Thouhtleader Capgemini

www.sanderhoogendoorn.com

www.speedbird9.com

@aahoogendoorn

How frameworks

can kill your

projects

And some patterns

to prevent you from getting killed

Page 2: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

2Sander Hoogendoorn

Capgemini

Principal technology officer

Global agile thought leader

Chief architect Accelerated Delivery Platform

Other

Author books on UML, agile (2)

Author +200 articles

Speaker +100 international conferences

Microsoft Partner Advisory Council .NET

Editorial boards & Advisory boards

Web

www.sanderhoogendoorn.com

www.speedbird9.com | www.smartusecase.com

@aahoogendoorn

Page 3: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

Page 4: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

4On being a developer...

Page 5: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

5A small rectification …

Ukrainian

Page 6: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

6Agenda

An short story

about frameworks

How frameworks can

get you in trouble

Software architecture

versus frameworks

The layer

supertype

Introducing the

descriptor pattern

The

manager-provider

Page 7: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

7Agenda

An short story

about frameworks

How frameworks can

get you in trouble

Software architecture

versus frameworks

The layer

supertype

Introducing the

descriptor pattern

The

manager-provider

Page 8: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

It always takes longer than you expect, even when you take into account Hofstadter’s Law

Hofstadter’s Law

Page 9: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

9MyFirstSurvey

Page 10: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

10MyFirstSurvey

Page 11: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

Frameworks, like pizzas, come in only two sizes: too big and too small.

Life is never easy

Page 12: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

12MyFirstSurvey

Page 13: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

13What’s it gonna be punk?General purpose frameworks

Enterprise Library, Spring.Net, Castle,

NakedObjects, Accelerated Delivery Framework

(ADF), SubSonic

Single goaled frameworks – verticals

Dependency injection: ObjectBuilder, Unity,

Castle Windsor

Logging: Log4Net, Logging Block,

Common.Logging

Exception handling: Exception Handling Block

Apect orientation: PostSharp, SetPoint

Search: Lucene.net, NLucene

Portals: DotNetNukeSpatial, Umbraco

Single goaled frameworks – architectural

User interface: Silverlight, ASP.NET MVC, WPF,

ASP.NET Ajax, Spring MVC

Process: UI Process Application Block, WF

Domain: Entity Framework, Hibernate, NEO

Data: Entity Framework, Hibernate, Castle

ActiveRecord, CSLA

Service s: WCF, WCF RIA

Page 14: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

14Frameworks. CodePlex

Page 15: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

15Frameworks. www.csharpopensource.com

Page 16: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

16Frameworks. Microsoft Enterprise Library

Page 17: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

17Frameworks. Project Castle

Page 18: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

18Don’t believe the hype. It’s a SQL

Page 19: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

19Convincing the management to apply the framework (25.5 %)

Page 20: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

20Understanding the framework (56.4 %)

Page 21: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

21Convincing other developers to use the framework (23.6 %)

Page 22: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

22Convincing other developers to use the framework (23.6 %)

Page 23: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

23Training the developers (20 %)

Page 24: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

24The eye of the tiger

Page 25: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

25Agenda

An short story

about frameworks

How frameworks can

get you in trouble

Software architecture

versus frameworks

The layer

supertype

Introducing the

descriptor pattern

The

manager-provider

Page 26: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

My software never has bugs. It just develops random features

Applying

Frameworks

Page 27: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

27So glad you made it!

What if we require

additional features that

aren’t covered by our

framework?

What if we decide that

another framework

might be better than the

one we’re using now?

What if the author of our

favorite framework suddenly

stops developing it?

What if the framework

contains bugs?

And what if the new

version of our framework

is implemented totally

different?

Page 28: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

28More than anything, dependencies will kill your project

Page 29: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

A short story about framework developers and application developers

Kentucky Fried

Architecture

Page 30: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

30Pigs & Chickens

The

application

developer

The framework

developer

Page 31: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

31The customer is not always right

Page 32: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

32KFC Architecture. Entity Framework

Page 33: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

33KFC Architecture. Entity Framework

Page 34: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

34KFC Architecture. Entity Framework

Page 35: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

I don’t care if it works on your machine! We are not shipping your machine!

Letting

the lunatics

run the asylum

Here’s …

beta!

Page 36: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

37Hot or not?

Hot? From hot to not? Not?

WindowsRT

PCL

HTML5

LightSwitch

WCF RIA Services

Silverlight 4.0?

ASP.NET MVC 3

MEF

jQuery

NService Bus

Entity Framework -

Code First

Xamarin

TypeScript

Expression Blend

ASP.NET Ajax

REST

Unity

BizTalk

Surface

Duet

SketchFlow

Azure Services

ADO.NET Data

Services

ASP.NET Dynamic

Data

WPF

Entity Framework 2.0

LINQ2SQL

LINQ2Entities

Entity Data Model

Dublin

DSL’s

Silverlight 2.0

F#

ASP.NET

PopFly

M

Oslo

MGrammar

Page 37: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

38Be a genius

Metro?

WTF? I just figured

out ASP.NET MVC

Page 38: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

39Here’s Johnny! ASP.NET MVC

Page 39: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

40Here’s Johnny! ASP.NET MVC

Page 40: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

It’s only in theory that practice and theory are the same

No strings

attached

Page 41: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

42MyFirstSurvey

Page 42: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

43Changing base classes. NHibernate / Log4Net

Page 43: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

44Changing base classes. NHibernate / Log4Net

Page 44: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

Programming is like sex. One mistake and you

have to support it for the rest of your life

Yes, your

frameworks

version too

Page 45: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

46It ain’t over till it’s over

Page 46: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

47Missing base classes. Workflow Foundation 4.0

Page 47: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

48Missing base classes. Workflow Foundation 4.0

Page 48: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

49Enterprise Library & Retirement

Page 49: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

50“Evolving” the Reflection API

Page 50: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

51“Evolving” the Reflection API

Page 51: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

52“Evolving” the Reflection API

Page 52: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

54Agenda

An short story

about frameworks

How frameworks can

get you in trouble

Software architecture

versus frameworks

The layer

supertype

Introducing the

descriptor pattern

The

manager-provider

Page 53: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

Architecture starts when you carefully put two bricks together. There it begins.

Sound

architecture

Page 54: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

(Software.Architecture != List<Framework>)

Page 55: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

57A software architecture

Page 56: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

58Creating your architecture

What to do?

Identify your architectural requirements

Set up a (layered) architecture

Identify layers and layer elements

List the elements responsibilities

List the elements collaborations

And only then map to frameworks

Create a thin “umbrella” of independence responsible for

managing dependencies

“Wrap” frameworks to avoid too many dependencies

Page 57: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn 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]

Service gateways

Service locators

[Mapping]

Databases

Services / ESB

COBOL SAP BizTalk Java

Silverlight

XAML

ASPX

Entities

(from EF)

Domain

Services

Metadata

Entity Framework

LINQ

Nhibernate?

WCF?

MVVM?

MVP?

Page 58: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

61Agenda

An short story

about frameworks

How frameworks can

get you in trouble

Software architecture

versus frameworks

The layer

supertype

Introducing the

descriptor pattern

The

manager-provider

Page 59: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

From a developers point of view

the user is a peripheral that types

when you issue a read request.

Layer supertype

Page 60: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

63Layer Supertype

What’s a layer supertype Ollie?

Acts as a supertype for all types in

its layer

All types inherit from the layer

supertype

Well Stan, it’s characteristics are

Name expresses common behaviour

Forces common features on all inherited types

Ideal starting point for services

Initially the layer supertype is empty

Reserve layer supertype for future additions

Extension methods don’t (always) help, youknow

Page 61: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

64Layer Supertype. ASP.NET MVC

Page 62: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

65Layer Supertype. ASP.NET MVC

Page 63: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn 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]

Service gateways

Service locators

[Mapping]

Databases

Services / ESB

Exact SAP BizTalk Java

Page 64: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

67Layer Supertype. Using a layer supertype

Page 65: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

68Layer Supertype. Reasoning about layer supertypes

Page 66: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

69Layer Supertype. Extension methods on layer supertypes

Page 67: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

70Agenda

An short story

about frameworks

How frameworks can

get you in trouble

Software architecture

versus frameworks

The layer

supertype

Introducing the

descriptor pattern

The

manager-provider

Page 68: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live.

Descriptor

Page 69: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

72I know nothing. I’m from Barcelona

What is the matter

Mister Fawlty?

The problem Manuel, is that

I want to use constants in my

application

But I want to define them in my

framework and extend them in

my application

Enumeration won’t do – there’s

no inheritance

Page 70: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

73Descriptor. The problem

Page 71: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

74Descriptor. The problem

Page 72: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

75Enum?

Page 73: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

76String Collection?

Page 74: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

77String Collection

Page 75: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

78I know nothing. I’m from Barcelona

Descriptor

Defines a restricted but

application specific

extendible list of

definitions

Useful when

Enums can not be inherited

Framework defines enumerationtypes that need to be extended in application code

Define layer supertype usingreflection

Pre-define frequently usedinstances

Page 76: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

79Descriptor Pattern

Page 77: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

80Descriptor Pattern. Definition

Page 78: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

81Descriptor Pattern. Extending the definition

Page 79: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

82Descriptor Pattern. Use in framework

Page 80: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

83Descriptor Pattern. Use in application

Page 81: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

84MyFirstSurvey

Page 82: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

85Descriptor Pattern. Use in ASP.NET MVC

Page 83: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

86Descriptor Pattern. Use in ASP.NET MVC

Page 84: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

87Agenda

An short story

about frameworks

How frameworks can

get you in trouble

Software architecture

versus frameworks

The layer

supertype

Introducing the

descriptor pattern

The

manager-provider

Page 85: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

XML is like violence.

If it doesn’t solve your problems,

you are not using enough of it.

Dependency

injection

Page 86: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

89Dependency Injection. A contagious disease?

What do you think it is?

Create true separation between

definition and implementation, so that

the two can vary independently and can

be replaced easily

Looks like a typical case

of dependency injection to me

Call functionality without having to know

the actual implementation

Implement replaceable services

Apply implementations in different contexts

Plug-in services at run-time

So …

Single topic services

Single or multiple implemenations need

to be handled, which differs dependant

on context, like with Windows API,

logging or error handling

Unit testing

Page 87: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

90Different variations?Did you know that there

are different types

of this dependency injection?

Arggh…

Yeah, sure. There’s

Constructor injection

Property (setter) injection

And even manual injection

Who cares doc?

Page 88: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

92Dependency injection. Manual injection

c

Page 89: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

93Dependency injection. what to plug in

Page 90: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

"Teamwork is a lot of people doing what I say“

Marketing executive, Citrix Corporation

Manager –

Provider

Page 91: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

95Manager-Provider Pattern

Definition

Create a simple static facade (manager) for a (set of)

interfaced implementations (providers)

In practice

Manager holds one or a collection of providers

Provider implement a particular interface

Manager has methods to call methods from interface

At run-time, using dependency injection, actual providers

are injected

Page 92: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

96Manager. ValidationManager

Page 93: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

97Interface

Page 94: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

98Manager. Initialization (using dependency injection)

Page 95: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

99Configuration of implementation

Page 96: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

100Configuration of implementation

Page 97: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

101Manager. Executing methods

Page 98: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

102Client. Calling methods

Page 99: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

103Client. Extending

Page 100: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

104Manager-Provider pattern

Useful when

Generic services need to be called, which may have

different implementations

Manager prevents having to loop through each of a list of

providers

Flexibility to add or remove providers without changing

application code

Providers differ e.g. in development code, test code or

deployed code

Writing platform independent code

Page 101: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

105Manager-Provider pattern

Use for

Task Management

View Management

Binding and Persisting

Resource Management

State Management

Logging

Datasource interaction

Encryption

Authorization

Testing!

Page 102: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

Software architecture is like deodorant.Those who need it the most don’t use it.

Creating your

architecture

Page 103: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

107Creating your architecture

What to do?

Identify your architectural requirements

Set up a (layered) architecture

Identify layers and layer elements

List the elements responsibilities

List the elements collaborations

And only then map to frameworks

Create a thin “umbrella” of independence responsible for

managing dependencies

“Wrap” frameworks to avoid too many dependencies

Page 104: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

108Too many layers

Page 105: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

HOW FRAMEWORKS CAN KILL YOUR PROJECTS©2012 Sander Hoogendoorn All Rights Reserved

Page 106: How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev

www.sanderhoogendoorn.comwww.smartusecase.comwww.speedbird9.com

[email protected] [email protected]

@aahoogendoorn

References

and questions