Mais conteúdo relacionado Semelhante a Agile and Frameworks (20) Mais de Sander Hoogendoorn (20) Agile and Frameworks1. HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
Sander Hoogendoorn | Principal Technology Officer, Global Agile Thought Leader | Capgemini
www.sanderhoogendoorn.com | sander.hoogendoorn@capgemini.com | @aahoogendoorn
2. SANDER HOOGENDOORN
Capgemini
Principal technology officer
Global agile thought leader
Chief architect Accelerated Delivery Platform (ADP)
Other
Author books on UML, agile
Author +200 articles, columns
Speaker +100 international conferences and seminars
Microsoft Partner Advisory Council .NET
Editorial boards & Advisory boards
Capping IT Off Blog
Web
www.sanderhoogendoorn.com
www.ditisagile.nl | www.smartusecase.com
sander@ditisagile.nl
@aahoogendoorn @ditisagile
2 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
©2012 Sander Hoogendoorn. All Rights Reserved
3. 3 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
©2012 Sander Hoogendoorn. All Rights Reserved
4. 4 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
©2012 Sander Hoogendoorn. All Rights Reserved
5. AGENDA
An short story How frameworks can Software architecture
about frameworks get you in trouble versus frameworks
The layer Introducing the The
supertype descriptor pattern manager-provider
5 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
©2012 Sander Hoogendoorn. All Rights Reserved
6. AGENDA
An short story How frameworks can Software architecture
about frameworks get you in trouble versus frameworks
The layer Introducing the The
supertype descriptor pattern manager-provider
6 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
©2012 Sander Hoogendoorn. All Rights Reserved
9. THE WATERFALL DENTIST
9 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
©2012 Sander Hoogendoorn. All Rights Reserved
10. BOEHM’S LAW
10 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
©2012 Sander Hoogendoorn. All Rights Reserved
11. 11 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
©2012 Sander Hoogendoorn. All Rights Reserved
13. BOEHM’S LAW. PER ITERATION
13 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
©2012 Sander Hoogendoorn. All Rights Reserved
14. AGILE. SOME UP-FRONT
Just enough
architecting!
Frameworks?
14 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
©2012 Sander Hoogendoorn. All Rights Reserved
16. MYFIRSTSURVEY
16 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
©2012 Sander Hoogendoorn. All Rights Reserved
17. LIFE IS NEVER EASY …
Frameworks, like pizzas, come in only two sizes: too big and too small.
18. MYFIRSTSURVEY
18 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
©2012 Sander Hoogendoorn. All Rights Reserved
19. General purpose frameworks
WHAT’S IT GONNA BE PUNK?
Enterprise Library, Spring.Net, Castle, NakedObjects,
Accelerated Delivery Framework (ADF), SubSonic
Single goaled frameworks – verticals Single goaled frameworks – architectural
Dependency injection: ObjectBuilder, Unity, Castle Windsor User interface: Silverlight, ASP.NET MVC, WPF, ASP.NET
Ajax, Spring MVC
Logging: Log4Net, Logging Block, Common.Logging
Process: UI Process Application Block, WF
Exception handling: Exception Handling Block
Domain: Entity Framework, Hibernate, NEO
Apect orientation: PostSharp, SetPoint
Search: Lucene.net, NLucene Data: Entity Framework, Hibernate, Castle ActiveRecord,
CSLA
Portals: DotNetNukeSpatial, Umbraco
Service s: WCF, WCF RIA
19 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
©2012 Sander Hoogendoorn. All Rights Reserved
22. FRAMEWORKS – MICROSOFT ENTERPRISE LIBRARY
22 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
©2012 Sander Hoogendoorn. All Rights Reserved
23. FRAMEWORKS – PROJECT CASTLE
23 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
©2012 Sander Hoogendoorn. All Rights Reserved
24. DON’T BELIEVE THE HYPE – IT’S A SQL
24 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
©2012 Sander Hoogendoorn. All Rights Reserved
25. CONVINCING THE MANAGEMENT TO APPLY THE FRAMEWORK (25.5 %)
25 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
©2012 Sander Hoogendoorn. All Rights Reserved
27. CONVINCING OTHER DEVELOPERS TO USE THE FRAMEWORK (23.6 %)
27 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
©2012 Sander Hoogendoorn. All Rights Reserved
28. CONVINCING OTHER DEVELOPERS TO USE THE FRAMEWORK (23.6 %)
28 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
©2012 Sander Hoogendoorn. All Rights Reserved
29. TRAINING THE DEVELOPERS (20 %)
29 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
©2012 Sander Hoogendoorn. All Rights Reserved
30. THE EYE OF THE TIGER
30 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
©2012 Sander Hoogendoorn. All Rights Reserved
31. AGENDA
An short story How frameworks can Software architecture
about frameworks get you in trouble versus frameworks
The layer Introducing the The
supertype descriptor pattern manager-provider
31 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
©2012 Sander Hoogendoorn. All Rights Reserved
33. AGILE. SOME UP-FRONT
Just enough
architecting!
Frameworks? Just enough
re-architecting
33 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
©2012 Sander Hoogendoorn. All Rights Reserved
34. SO GLAD YOU MADE IT! What if the author of our
favorite framework suddenly
What if we require stops developing it?
additional features that
aren’t covered by our
framework?
And what if the new version
of our framework is
implemented totally
different?
What if we decide that
another framework might
be better than the one
we’re using now?
What if the framework
contains bugs?
34 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
©2012 Sander Hoogendoorn. All Rights Reserved
35. MORE THAN ANYTHING, DEPENDENCIES WILL KILL YOUR PROJECT
35 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
©2012 Sander Hoogendoorn. All Rights Reserved
37. PIGS & CHICKENS
The framework The application
developer developer
37 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
©2012 Sander Hoogendoorn. All Rights Reserved
38. KFC ARCHITECTURE – ENTITY FRAMEWORK
38 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
©2012 Sander Hoogendoorn. All Rights Reserved
39. KFC ARCHITECTURE – ENTITY FRAMEWORK
39 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
©2012 Sander Hoogendoorn. All Rights Reserved
40. KFC ARCHITECTURE – ENTITY FRAMEWORK
40 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
©2012 Sander Hoogendoorn. All Rights Reserved
41. beta!
Here’s … beta !
LETTING THE LUNATICS RUN THE ASYLUM
I don’t care if it works on your machine! We are not shipping your machine!
42. HOT OR NOT?
Hot? From hot to not? Not?
Metro Expression Blend Entity Framework 2.0
HTML5 ASP.NET Ajax LINQ2SQL
LightSwitch REST LINQ2Entities
WCF RIA Services Unity Entity Data Model
Silverlight 4.0? BizTalk Dublin
ASP.NET MVC 3 Surface DSL’s
MEF Duet Silverlight 2.0
jQuery SketchFlow F#
NService Bus Azure Services ASP.NET
Entity Framework - Code First ADO.NET Data Services PopFly
ASP.NET Dynamic Data M
WPF Oslo
MGrammar
42 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
©2012 Sander Hoogendoorn. All Rights Reserved
43. BE A F***ING GENIUS
Metro?
WTF? I just figured
out ASP.NET MVC
43 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
©2012 Sander Hoogendoorn. All Rights Reserved
44. HERE’S JOHNNY! – ASP.NET MVC
44 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
©2012 Sander Hoogendoorn. All Rights Reserved
45. HERE’S JOHNNY! – ASP.NET MVC
45 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
©2012 Sander Hoogendoorn. All Rights Reserved
47. MYFIRSTSURVEY
47 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
©2012 Sander Hoogendoorn. All Rights Reserved
48. CHANGING BASE CLASSES – – NHIBERNATE / LOG4NET
48 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
©2012 Sander Hoogendoorn. All Rights Reserved
49. CHANGING BASE CLASSES – NHIBERNATE / LOG4NET
49 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
©2012 Sander Hoogendoorn. All Rights Reserved
50. YES, YOUR FRAMEWORKS VERSION TOO
Programming is like sex.
One mistake and you have to support it for the rest of your life
51. IT AIN’T OVER TILL IT’S OVER
51 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
©2012 Sander Hoogendoorn. All Rights Reserved
52. MISSING BASE CLASSES – WORKFLOW FOUNDATION 4.0
52 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
©2012 Sander Hoogendoorn. All Rights Reserved
53. MISSING BASE CLASSES – WORKFLOW FOUNDATION 4.0
53 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
©2012 Sander Hoogendoorn. All Rights Reserved
54. AGENDA
An short story How frameworks can Software architecture
about frameworks get you in trouble versus frameworks
The layer Introducing the The
supertype descriptor pattern manager-provider
54 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
©2012 Sander Hoogendoorn. All Rights Reserved
58. Pages
Presentation Android? UserControls
XAML? Panels
What to do? ASPX?
Use cases
Process Workflow
• Identify your architectural requirements Entities
(from EF)
• Set up a (layered) architecture Domain MVVM?
Services MVP?
• Identify layers and layer elements
Domain
Domain objects / Entities
MVWTF?
Factories / Repositories
• List the elements responsibilities Enums / Value objects / Smart references
Metadata?
• List the elements collaborations JSON?
• And only then map to frameworks Service gateways
Data / Services Service locators
• Create a thin “umbrella” of independence [Mapping]
EF?
responsible for managing dependencies LINQ?
Exact SAP BizTalk Java
Nhibernate?
Databases
Outside world Services / ESB
58 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
©2012 Sander Hoogendoorn. All Rights Reserved
59. LAYER SUPERTYPE
From a developers point of view the user is a peripheral
that types when you issue a read request.
60. LAYER 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
60 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS Extension methods don’t (always) help, you know
©2012 Sander Hoogendoorn. All Rights Reserved
61. LAYER SUPERTYPE – ASP.NET MVC
61 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
©2012 Sander Hoogendoorn. All Rights Reserved
62. LAYER SUPERTYPE – ASP.NET MVC
62 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
©2012 Sander Hoogendoorn. All Rights Reserved
63. Pages
Presentation UserControls
Panels
Use cases
Process Workflow
Domain objects / Entities
Domain Factories / Repositories
Enums / Value objects / Smart references
Service gateways
Data / Services Service locators
[Mapping]
Exact SAP BizTalk Java
Databases
Outside world Services / ESB
63 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
©2012 Sander Hoogendoorn. All Rights Reserved
64. LAYER SUPERTYPE – USING A LAYER SUPERTYPE
64 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
©2012 Sander Hoogendoorn. All Rights Reserved
65. LAYER SUPERTYPE – REASON ABOUT LAYER SUPERTYPES
65 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
©2012 Sander Hoogendoorn. All Rights Reserved
66. LAYER SUPERTYPE – EXTENSION METHODS ON LAYER SUPERTYPES
66 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
©2012 Sander Hoogendoorn. All Rights Reserved
67. AGENDA
An short story How frameworks can Software architecture
about frameworks get you in trouble versus frameworks
The layer Introducing the The
supertype descriptor pattern manager-provider
67 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
©2012 Sander Hoogendoorn. All Rights Reserved
68. DESCRIPTOR
Always code as if the guy who ends up maintaining your code
will be a violent psychopath who knows where you live.
69. I 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
69 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
©2012 Sander Hoogendoorn. All Rights Reserved
70. DESCRIPTOR – THE PROBLEM (1)
70 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
©2012 Sander Hoogendoorn. All Rights Reserved
71. DESCRIPTOR – THE PROBLEM (2)
71 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
©2012 Sander Hoogendoorn. All Rights Reserved
72. ENUM?
72 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
©2012 Sander Hoogendoorn. All Rights Reserved
73. STRING COLLECTION?
73 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
©2012 Sander Hoogendoorn. All Rights Reserved
74. STRING COLLECTION
74 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
©2012 Sander Hoogendoorn. All Rights Reserved
75. I 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 enumeration types that
need to be extended in application code
Define layer supertype using reflection
Pre-define frequently used instances
75 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
©2012 Sander Hoogendoorn. All Rights Reserved
76. DESCRIPTOR PATTERN
76 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
©2012 Sander Hoogendoorn. All Rights Reserved
77. DESCRIPTOR PATTERN - DEFINITION
77 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
©2012 Sander Hoogendoorn. All Rights Reserved
78. DESCRIPTOR PATTERN – EXTENDED DEFINITION
78 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
©2012 Sander Hoogendoorn. All Rights Reserved
79. DESCRIPTOR PATTERN – USE IN FRAMEWORK
79 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
©2012 Sander Hoogendoorn. All Rights Reserved
80. DESCRIPTOR PATTERN – USE IN APPLICATION
80 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
©2012 Sander Hoogendoorn. All Rights Reserved
81. MYFIRSTSURVEY
81 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
©2012 Sander Hoogendoorn. All Rights Reserved
82. DESCRIPTOR PATTERN – USE IN ASP.NET MVC
82 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
©2012 Sander Hoogendoorn. All Rights Reserved
83. DESCRIPTOR PATTERN – USE IN ASP.NET MVC
83 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
©2012 Sander Hoogendoorn. All Rights Reserved
84. AGENDA
An short story How frameworks can Software architecture
about frameworks get you in trouble versus frameworks
The layer Introducing the The
supertype descriptor pattern manager-provider
84 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
©2012 Sander Hoogendoorn. All Rights Reserved
86. A NEW 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
So …
Single topic services
Looks like a typical case of dependency injection
Single or multiple implemenations need to
Call functionality without having to know be handled, which differs dependant on
the actual implementation context, like with Windows API, logging or
error handling
Implement replaceable services
Unit testing
Apply implementations in different contexts
Plug-in services at run-time
86 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
©2012 Sander Hoogendoorn. All Rights Reserved
87. DIFFERENT VARIATIONS? Did you know that there
are different types of this
dependency injection?
Yeah, sure. There’s Arggh…
Constructor injection
Property (setter) injection
And even manual injection Who cares doc?
87 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
©2012 Sander Hoogendoorn. All Rights Reserved
88. DEPENDENCY INJECTION – CONSTRUCTOR INJECTION
88 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
©2012 Sander Hoogendoorn. All Rights Reserved
89. DEPENDENCY INJECTION – MANUAL INJECTION
c
89 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
©2012 Sander Hoogendoorn. All Rights Reserved
90. DEPENDENCY INJECTION – WHAT TO PLUG IN
90 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
©2012 Sander Hoogendoorn. All Rights Reserved
92. MANAGER-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
92 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
©2012 Sander Hoogendoorn. All Rights Reserved
94. INTERFACE
94 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
©2012 Sander Hoogendoorn. All Rights Reserved
95. MANAGER – INITIALIZATION (USING DEPENDENCY INJECTION)
95 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
©2012 Sander Hoogendoorn. All Rights Reserved
97. MANAGER - EXECUTING METHODS
97 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
©2012 Sander Hoogendoorn. All Rights Reserved
98. CLIENT – CALLING METHODS
98 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
©2012 Sander Hoogendoorn. All Rights Reserved
99. MANAGER-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
Use for
Task Management
View Management
Binding and Persisting
Resource Management
State Management
Logging
Datasource interaction
Testing!
99 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
©2012 Sander Hoogendoorn. All Rights Reserved
101. Pages
Presentation UserControls
Panels
What to do?
Use cases
Process Workflow
• Identify your architectural requirements
• Set up a (layered) architecture
Domain
• Identify layers and layer elements Domain objects / Entities
Factories / Repositories
• List the elements responsibilities / Value objects / Smart references
Enums
• List the elements collaborations
• And only then map to frameworks Service gateways
Data / Services Service locators
• Create a thin “umbrella” of independence [Mapping]
responsible for managing dependencies
Exact SAP BizTalk Java
Databases
Outside world Services / ESB
101 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
©2012 Sander Hoogendoorn. All Rights Reserved