SlideShare ist ein Scribd-Unternehmen logo
1 von 96
Downloaden Sie, um offline zu lesen
And patterns to help you avoid getting killed
Sander Hoogendoorn | Principal Technology Officer | Capgemini | @aahoogendoorn
ARC203 - HOW FRAMEWORKS CAN KILL YOUR PROJECTS
2HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
Capgemini
Principal technology officer
Global agile thought leader
Chief architect Accelerated Delivery Platform (ADP)
Other
Microsoft Partner Advisory Council .NET
Author books and articles in international
magazines
Appreciated speaker at international conferences
Columns in several magazines
Editorial boards
Web
www.sanderhoogendoorn.com
www.smartusecase.com
Twitter: @aahoogendoorn
SANDER HOOGENDOORN
3HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
ARC203 – How frameworks can kill your
projects
Tuesday 12:00
Hall 3.2 Interactive 2
ARC202 - How frameworks can kill your
projects
Wednesday 13:20
Hall 7.1b London 2
ARC203 – How frameworks can kill your
projects (repeat)
Thursday 10:30
Hall 3.2 Interactive 6
ARC205 – How smart use cases drive web
development
Friday 10:30
Hall 7.3 Berlin 1
SANDER HOOGENDOORN – TECHED 2010 SESSIONS
4HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
AGENDA
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
5HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
AGENDA
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
It always takes longer than you expect,
even when you take into account Hofstadter’s Law
HOFSTADTER’S LAW
7HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
MYFIRSTSURVEY
8HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
MYFIRSTSURVEY
Frameworks, like pizzas, come in only two sizes: too big and too small.
LIFE IS NEVER EASY …
10HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
MYFIRSTSURVEY
11HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
WHAT’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
12HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
FRAMEWORKS - CODEPLEX
13HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
FRAMEWORKS – WWW.CSHARPOPENSOURCE.COM
14HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
FRAMEWORKS – MICROSOFT ENTERPRISE LIBRARY
15HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
FRAMEWORKS – PROJECT CASTLE
16HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
DON’T BELIEVE THE HYPE – IT’S A SQL
17HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
CONVINCING THE MANAGEMENT TO APPLY THE FRAMEWORK (25.5 %)
18HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
UNDERSTANDING THE FRAMEWORK (56.4 %)
19HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
CONVINCING OTHER DEVELOPERS TO USE THE FRAMEWORK (23.6 %)
20HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
TRAINING THE DEVELOPERS (20 %)
21HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
THE EYE OF THE TIGER
22HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
AGENDA
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
My software never has bugs. It just develops random features
APPLYING FRAMEWORKS
24HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
SO 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?
25HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
MORE THAN ANYTHING, DEPENDENCIES WILL KILL YOUR PROJECT
A short story about framework developers and application developers
KENTUCKY FRIED ARCHITECTURE
27HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
THE CUSTOMER IS NOT ALWAYS RIGHT
28HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
PIGS & CHICKENS
The application
developer
The framework
developer
29HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
KFC ARCHITECTURE – ENTITY FRAMEWORK
30HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
KFC ARCHITECTURE – ENTITY FRAMEWORK
31HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
KFC ARCHITECTURE – ENTITY FRAMEWORK
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!
33HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
ON THE WRONG TRACK
34HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
HOT OR NOT?
Hot? From hot to not? Not?
HTML5
LightSwitch
WCF RIA Services
Silverlight 4.0
ASP.NET MVC 2 (3?)
ASP.NET Dynamic Data
ADO.NET Data Services
MEF
Azure Services
jQuery
NService Bus
Oslo
M
MGrammar
Expression Blend
ASP.NET Ajax
REST
Dublin
BizTalk
Surface
Duet
SketchFlow
Entity Framework 2.0
LINQ2SQL
LINQ2Entities
Entity Data Model
WPF
Unity
DSL’s
Silverlight 2.0
F#
ASP.NET
PopFly
35HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
HERE’S JOHNNY! – ASP.NET MVC
36HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
HERE’S JOHNNY! – ASP.NET MVC
It’s only in theory that practice and theory are the same
NO STRINGS ATTACHED
38HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
MYFIRSTSURVEY
39HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
CHANGING BASE CLASSES – – NHIBERNATE / LOG4NET
40HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
CHANGING BASE CLASSES – NHIBERNATE / LOG4NET
Programming is like sex.
One mistake and you have to support it for the rest of your life
YES, YOUR FRAMEWORKS VERSION TOO
42HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
IT AIN’T OVER TILL IT’S OVER
43HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
MISSING BASE CLASSES – WORKFLOW FOUNDATION 4.0
44HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
MISSING BASE CLASSES – WORKFLOW FOUNDATION 4.0
HOW TO AVOID GETTING KILLED
46HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
AGENDA
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
Architecture starts when you carefully put two bricks together. There it begins.
SOUND ARCHITECTURE
(SOFTWARE.ARCHITECTURE != LIST<FRAMEWORK>)
49HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
A SOFTWARE ARCHITECTURE
50HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 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]
Service gateways
Service locators
[Mapping]
Databases
Services / ESB
Exact SAP BizTalk Java
Silverlight
XAML
Entities
(from EF)
Domain
Services
Metadata
Entity Framework
LINQ
Nhibernate?
MVVM?
MVP?
51HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
THE GOOD, THE BAD AND THE UGLY
Dependencies
Using frameworks is simply good, gringo
However, being dependant on third parties
can put your project at risk
How stable are the frameworks you use?
How stable is the framework vendor?
Minimize dependencies
Map frameworks to your software architecture,
not vice versa
Define your own layer supertypes
Wrap framework functionality
Apply manager-provider pattern
Implement extension methods if all fails
52HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
AGENDA
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
From a programmer's point of view the user is a peripheral
that types when you issue a read request.
LAYER SUPERTYPE
54HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
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
Extension methods don’t (always) help, you know
55HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
LAYER SUPERTYPE – ASP.NET MVC
56HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
LAYER SUPERTYPE – ASP.NET MVC
57HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 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]
Service gateways
Service locators
[Mapping]
Databases
Services / ESB
Exact SAP BizTalk Java
58HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
LAYER SUPERTYPE – USING A LAYER SUPERTYPE
59HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
LAYER SUPERTYPE – DEFINE SERVICES ON LAYER SUPERTYPES
60HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
LAYER SUPERTYPE – EXTENSION METHODS ON LAYER SUPERTYPES
61HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
AGENDA
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
Always code as if the guy who ends up maintaining your code
will be a violent psychopath who knows where you live.
DESCRIPTOR
63HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
I KNOW NOTHING. I’M FROM BARCELONA
What is the matter
Mister Fawlty?
The problem Manual, 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
64HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
DESCRIPTOR – THE PROBLEM (1)
65HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
DESCRIPTOR – THE PROBLEM (2)
66HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
ENUM?
67HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
STRING COLLECTION?
68HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
STRING COLLECTION
69HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
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
70HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
DESCRIPTOR PATTERN
71HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
DESCRIPTOR PATTERN - DEFINITION
72HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
DESCRIPTOR PATTERN – EXTENDED DEFINITION
73HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
DESCRIPTOR PATTERN – USE IN FRAMEWORK
74HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
DESCRIPTOR PATTERN – USE IN APPLICATION
75HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
MYFIRSTSURVEY
76HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
DESCRIPTOR PATTERN – USE IN ASP.NET MVC
77HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
DESCRIPTOR PATTERN – USE IN ASP.NET MVC
78HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
AGENDA
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
XML is like violence.
If it doesn’t solve your problems, you are not using enough of it.
DEPENDENCY INJECTION
80HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
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
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
81HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
DIFFERENT 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?
82HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
DEPENDENCY INJECTION – CONSTRUCTOR INJECTION
83HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
DEPENDENCY INJECTION – MANUAL INJECTION
c
84HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
DEPENDENCY INJECTION – WHAT TO PLUG IN
Yes, XML will hurt you too!
"Teamwork is a lot of people doing what I say“
Marketing executive, Citrix Corporation
MANAGER – PROVIDER
86HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
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
MANAGER-PROVIDER PATTERN
87HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
MANAGER – VALIDATIONMANAGER
88HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
INTERFACE
89HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
MANAGER – INITIALIZATION (USING DEPENDENCY INJECTION)
90HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
CONFIGURATION OF IMPLEMENTATION
91HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
MANAGER - EXECUTING METHODS
92HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
CLIENT – CALLING METHODS
93HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
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!
MANAGER-PROVIDER PATTERN
94HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
THE GOOD, THE BAD AND THE UGLY
Dependencies
Using frameworks is simply good, gringo
However, being dependant on third parties
can put your project at risk
How stable are the frameworks you use?
How stable is the framework vendor?
Minimize dependencies
Map frameworks to your software architecture,
not vice versa
Define your own layer supertypes
Wrap framework functionality
Apply manager-provider pattern
Implement extension methods if all fails
www.accelerateddeliveryplatform.com
WWW.SMARTUSECASE.COM
sander.hoogendoorn@capgemini.com
www.sanderhoogendoorn.com | www.smartusecase.com
Twitter: @aahoogendoorn
REFERENCES AND QUESTIONS

Weitere ähnliche Inhalte

Ähnlich wie 20101109 (tech ed) how frameworks kill projects

20101007 how smart use cases drive web development
20101007   how smart use cases drive web development20101007   how smart use cases drive web development
20101007 how smart use cases drive web developmentSander Hoogendoorn
 
SignalR Intro + WPDev integration @ Codetock
SignalR Intro + WPDev integration @ CodetockSignalR Intro + WPDev integration @ Codetock
SignalR Intro + WPDev integration @ CodetockSam Basu
 
Project SpaceLock - Architecture & Design
Project SpaceLock - Architecture & DesignProject SpaceLock - Architecture & Design
Project SpaceLock - Architecture & DesignAbhishek Mishra
 
The complex IoT equation, and FLOSS solutions, OW2con'18, June 7-8, 2018, Paris
The complex IoT equation, and FLOSS solutions, OW2con'18, June 7-8, 2018, ParisThe complex IoT equation, and FLOSS solutions, OW2con'18, June 7-8, 2018, Paris
The complex IoT equation, and FLOSS solutions, OW2con'18, June 7-8, 2018, ParisOW2
 
The Complex IoT Equation (and FLOSS solutions)
The Complex IoT Equation (and FLOSS solutions)The Complex IoT Equation (and FLOSS solutions)
The Complex IoT Equation (and FLOSS solutions)Samsung Open Source Group
 
Onion Architecture with S#arp
Onion Architecture with S#arpOnion Architecture with S#arp
Onion Architecture with S#arpGary Pedretti
 
Cloud-Native Modernization or Death? A false dichotomy. | DevNation Tech Talk
Cloud-Native Modernization or Death? A false dichotomy. | DevNation Tech TalkCloud-Native Modernization or Death? A false dichotomy. | DevNation Tech Talk
Cloud-Native Modernization or Death? A false dichotomy. | DevNation Tech TalkRed Hat Developers
 
Codecentric At Ajax World Conference San Jose
Codecentric At Ajax World Conference San JoseCodecentric At Ajax World Conference San Jose
Codecentric At Ajax World Conference San JoseFabian Lange
 
Presentation of OCCIware, a standard, extensible Cloud consumer platform at P...
Presentation of OCCIware, a standard, extensible Cloud consumer platform at P...Presentation of OCCIware, a standard, extensible Cloud consumer platform at P...
Presentation of OCCIware, a standard, extensible Cloud consumer platform at P...OCCIware
 
OCCIware @ Paris Open Source Summit 2017 - a standard, extensible Cloud consu...
OCCIware @ Paris Open Source Summit 2017 - a standard, extensible Cloud consu...OCCIware @ Paris Open Source Summit 2017 - a standard, extensible Cloud consu...
OCCIware @ Paris Open Source Summit 2017 - a standard, extensible Cloud consu...Marc Dutoo
 
Flex For Java Architects Ledroff Breizh Jug V Blog Cc
Flex For Java Architects Ledroff Breizh Jug V Blog CcFlex For Java Architects Ledroff Breizh Jug V Blog Cc
Flex For Java Architects Ledroff Breizh Jug V Blog CcFrançois Le Droff
 
SUGCON EU 2023 - Secure Composable SaaS.pptx
SUGCON EU 2023 - Secure Composable SaaS.pptxSUGCON EU 2023 - Secure Composable SaaS.pptx
SUGCON EU 2023 - Secure Composable SaaS.pptxVasiliy Fomichev
 
Stateful mock servers to the rescue on REST ecosystems
Stateful mock servers to the rescue on REST ecosystemsStateful mock servers to the rescue on REST ecosystems
Stateful mock servers to the rescue on REST ecosystemsNuno Caneco
 
#OSSPARIS17 - Développeurs, urbanisez la consommation de vos Clouds et APIs a...
#OSSPARIS17 - Développeurs, urbanisez la consommation de vos Clouds et APIs a...#OSSPARIS17 - Développeurs, urbanisez la consommation de vos Clouds et APIs a...
#OSSPARIS17 - Développeurs, urbanisez la consommation de vos Clouds et APIs a...Paris Open Source Summit
 
Cloud development technology sharing (BlueMix premier)
Cloud development technology sharing (BlueMix premier)Cloud development technology sharing (BlueMix premier)
Cloud development technology sharing (BlueMix premier)湯米吳 Tommy Wu
 
Node.js Development Tools
 Node.js Development Tools Node.js Development Tools
Node.js Development ToolsSofiaCarter4
 

Ähnlich wie 20101109 (tech ed) how frameworks kill projects (20)

20101007 how smart use cases drive web development
20101007   how smart use cases drive web development20101007   how smart use cases drive web development
20101007 how smart use cases drive web development
 
SignalR Intro + WPDev integration @ Codetock
SignalR Intro + WPDev integration @ CodetockSignalR Intro + WPDev integration @ Codetock
SignalR Intro + WPDev integration @ Codetock
 
Project SpaceLock - Architecture & Design
Project SpaceLock - Architecture & DesignProject SpaceLock - Architecture & Design
Project SpaceLock - Architecture & Design
 
The complex IoT equation, and FLOSS solutions, OW2con'18, June 7-8, 2018, Paris
The complex IoT equation, and FLOSS solutions, OW2con'18, June 7-8, 2018, ParisThe complex IoT equation, and FLOSS solutions, OW2con'18, June 7-8, 2018, Paris
The complex IoT equation, and FLOSS solutions, OW2con'18, June 7-8, 2018, Paris
 
webthing-floss-iot-20180607rzr
webthing-floss-iot-20180607rzrwebthing-floss-iot-20180607rzr
webthing-floss-iot-20180607rzr
 
The Complex IoT Equation (and FLOSS solutions)
The Complex IoT Equation (and FLOSS solutions)The Complex IoT Equation (and FLOSS solutions)
The Complex IoT Equation (and FLOSS solutions)
 
Onion Architecture with S#arp
Onion Architecture with S#arpOnion Architecture with S#arp
Onion Architecture with S#arp
 
agile microservices @scaibo
agile microservices @scaiboagile microservices @scaibo
agile microservices @scaibo
 
Education&work experience
Education&work experienceEducation&work experience
Education&work experience
 
Cloud-Native Modernization or Death? A false dichotomy. | DevNation Tech Talk
Cloud-Native Modernization or Death? A false dichotomy. | DevNation Tech TalkCloud-Native Modernization or Death? A false dichotomy. | DevNation Tech Talk
Cloud-Native Modernization or Death? A false dichotomy. | DevNation Tech Talk
 
Codecentric At Ajax World Conference San Jose
Codecentric At Ajax World Conference San JoseCodecentric At Ajax World Conference San Jose
Codecentric At Ajax World Conference San Jose
 
Presentation of OCCIware, a standard, extensible Cloud consumer platform at P...
Presentation of OCCIware, a standard, extensible Cloud consumer platform at P...Presentation of OCCIware, a standard, extensible Cloud consumer platform at P...
Presentation of OCCIware, a standard, extensible Cloud consumer platform at P...
 
OCCIware @ Paris Open Source Summit 2017 - a standard, extensible Cloud consu...
OCCIware @ Paris Open Source Summit 2017 - a standard, extensible Cloud consu...OCCIware @ Paris Open Source Summit 2017 - a standard, extensible Cloud consu...
OCCIware @ Paris Open Source Summit 2017 - a standard, extensible Cloud consu...
 
Flex For Java Architects Ledroff Breizh Jug V Blog Cc
Flex For Java Architects Ledroff Breizh Jug V Blog CcFlex For Java Architects Ledroff Breizh Jug V Blog Cc
Flex For Java Architects Ledroff Breizh Jug V Blog Cc
 
SUGCON EU 2023 - Secure Composable SaaS.pptx
SUGCON EU 2023 - Secure Composable SaaS.pptxSUGCON EU 2023 - Secure Composable SaaS.pptx
SUGCON EU 2023 - Secure Composable SaaS.pptx
 
Stateful mock servers to the rescue on REST ecosystems
Stateful mock servers to the rescue on REST ecosystemsStateful mock servers to the rescue on REST ecosystems
Stateful mock servers to the rescue on REST ecosystems
 
#OSSPARIS17 - Développeurs, urbanisez la consommation de vos Clouds et APIs a...
#OSSPARIS17 - Développeurs, urbanisez la consommation de vos Clouds et APIs a...#OSSPARIS17 - Développeurs, urbanisez la consommation de vos Clouds et APIs a...
#OSSPARIS17 - Développeurs, urbanisez la consommation de vos Clouds et APIs a...
 
Cloud development technology sharing (BlueMix premier)
Cloud development technology sharing (BlueMix premier)Cloud development technology sharing (BlueMix premier)
Cloud development technology sharing (BlueMix premier)
 
DevCon5 (July 2014) - Acision SDK
DevCon5 (July 2014) - Acision SDKDevCon5 (July 2014) - Acision SDK
DevCon5 (July 2014) - Acision SDK
 
Node.js Development Tools
 Node.js Development Tools Node.js Development Tools
Node.js Development Tools
 

Mehr von Sander Hoogendoorn

Flow. The official worst software development approach in history
Flow. The official worst software development approach in historyFlow. The official worst software development approach in history
Flow. The official worst software development approach in historySander Hoogendoorn
 
It's a small world after all. How thinking small changes software big time
It's a small world after all. How thinking small changes software big timeIt's a small world after all. How thinking small changes software big time
It's a small world after all. How thinking small changes software big timeSander Hoogendoorn
 
Welcome to the world of micro-apps
Welcome to the world of micro-appsWelcome to the world of micro-apps
Welcome to the world of micro-appsSander Hoogendoorn
 
Welcome to the world of micro-applications
Welcome to the world of micro-applicationsWelcome to the world of micro-applications
Welcome to the world of micro-applicationsSander Hoogendoorn
 
Wat is agile en wat betekent het voor mij?
Wat is agile en wat betekent het voor mij?Wat is agile en wat betekent het voor mij?
Wat is agile en wat betekent het voor mij?Sander Hoogendoorn
 
20180509 - It's a small world after all. How thinking small is changing softw...
20180509 - It's a small world after all. How thinking small is changing softw...20180509 - It's a small world after all. How thinking small is changing softw...
20180509 - It's a small world after all. How thinking small is changing softw...Sander Hoogendoorn
 
W-JAX 2017 Keynote. It's a small world after all. How thinking small is chang...
W-JAX 2017 Keynote. It's a small world after all. How thinking small is chang...W-JAX 2017 Keynote. It's a small world after all. How thinking small is chang...
W-JAX 2017 Keynote. It's a small world after all. How thinking small is chang...Sander Hoogendoorn
 
Swanseacon 2017 Keynote - It's a small world after all.
Swanseacon 2017 Keynote - It's a small world after all.Swanseacon 2017 Keynote - It's a small world after all.
Swanseacon 2017 Keynote - It's a small world after all.Sander Hoogendoorn
 
Geecon Prague 2016 - Thirty months of microservices
Geecon Prague 2016 - Thirty months of microservicesGeecon Prague 2016 - Thirty months of microservices
Geecon Prague 2016 - Thirty months of microservicesSander Hoogendoorn
 
Thirty months of microservices. Stairway to heaven or highway to hell
Thirty months of microservices. Stairway to heaven or highway to hellThirty months of microservices. Stairway to heaven or highway to hell
Thirty months of microservices. Stairway to heaven or highway to hellSander Hoogendoorn
 
Beyond breaking bad. The current state of agile in ten easy lessons
Beyond breaking bad. The current state of agile in ten easy lessonsBeyond breaking bad. The current state of agile in ten easy lessons
Beyond breaking bad. The current state of agile in ten easy lessonsSander Hoogendoorn
 
Beyond breaking bad. The current state of agile in ten easy lessons
Beyond breaking bad. The current state of agile in ten easy lessonsBeyond breaking bad. The current state of agile in ten easy lessons
Beyond breaking bad. The current state of agile in ten easy lessonsSander Hoogendoorn
 
Microservices. Stairway to heaven or highway to hell
Microservices. Stairway to heaven or highway to hellMicroservices. Stairway to heaven or highway to hell
Microservices. Stairway to heaven or highway to hellSander Hoogendoorn
 
Microservices. The good, the bad and the ugly.
Microservices. The good, the bad and the ugly.Microservices. The good, the bad and the ugly.
Microservices. The good, the bad and the ugly.Sander Hoogendoorn
 
Designing and building a micro-services architecture. Stairway to heaven or a...
Designing and building a micro-services architecture. Stairway to heaven or a...Designing and building a micro-services architecture. Stairway to heaven or a...
Designing and building a micro-services architecture. Stairway to heaven or a...Sander Hoogendoorn
 
Microservices. The good the bad and the ugly
Microservices. The good the bad and the uglyMicroservices. The good the bad and the ugly
Microservices. The good the bad and the uglySander Hoogendoorn
 
Scaling agile from the ground up
Scaling agile from the ground upScaling agile from the ground up
Scaling agile from the ground upSander Hoogendoorn
 
Growing a microservices landscape (with smart use cases)
Growing a microservices landscape (with smart use cases)Growing a microservices landscape (with smart use cases)
Growing a microservices landscape (with smart use cases)Sander Hoogendoorn
 

Mehr von Sander Hoogendoorn (20)

Flow. The official worst software development approach in history
Flow. The official worst software development approach in historyFlow. The official worst software development approach in history
Flow. The official worst software development approach in history
 
It's a small world after all. How thinking small changes software big time
It's a small world after all. How thinking small changes software big timeIt's a small world after all. How thinking small changes software big time
It's a small world after all. How thinking small changes software big time
 
Welcome to the world of micro-apps
Welcome to the world of micro-appsWelcome to the world of micro-apps
Welcome to the world of micro-apps
 
Welcome to the world of micro-applications
Welcome to the world of micro-applicationsWelcome to the world of micro-applications
Welcome to the world of micro-applications
 
Wat is agile en wat betekent het voor mij?
Wat is agile en wat betekent het voor mij?Wat is agile en wat betekent het voor mij?
Wat is agile en wat betekent het voor mij?
 
20180509 - It's a small world after all. How thinking small is changing softw...
20180509 - It's a small world after all. How thinking small is changing softw...20180509 - It's a small world after all. How thinking small is changing softw...
20180509 - It's a small world after all. How thinking small is changing softw...
 
W-JAX 2017 Keynote. It's a small world after all. How thinking small is chang...
W-JAX 2017 Keynote. It's a small world after all. How thinking small is chang...W-JAX 2017 Keynote. It's a small world after all. How thinking small is chang...
W-JAX 2017 Keynote. It's a small world after all. How thinking small is chang...
 
Swanseacon 2017 Keynote - It's a small world after all.
Swanseacon 2017 Keynote - It's a small world after all.Swanseacon 2017 Keynote - It's a small world after all.
Swanseacon 2017 Keynote - It's a small world after all.
 
Building Better Software Faster
Building Better Software FasterBuilding Better Software Faster
Building Better Software Faster
 
Geecon Prague 2016 - Thirty months of microservices
Geecon Prague 2016 - Thirty months of microservicesGeecon Prague 2016 - Thirty months of microservices
Geecon Prague 2016 - Thirty months of microservices
 
Thirty months of microservices. Stairway to heaven or highway to hell
Thirty months of microservices. Stairway to heaven or highway to hellThirty months of microservices. Stairway to heaven or highway to hell
Thirty months of microservices. Stairway to heaven or highway to hell
 
Beyond breaking bad. The current state of agile in ten easy lessons
Beyond breaking bad. The current state of agile in ten easy lessonsBeyond breaking bad. The current state of agile in ten easy lessons
Beyond breaking bad. The current state of agile in ten easy lessons
 
Beyond breaking bad. The current state of agile in ten easy lessons
Beyond breaking bad. The current state of agile in ten easy lessonsBeyond breaking bad. The current state of agile in ten easy lessons
Beyond breaking bad. The current state of agile in ten easy lessons
 
Microservices. Stairway to heaven or highway to hell
Microservices. Stairway to heaven or highway to hellMicroservices. Stairway to heaven or highway to hell
Microservices. Stairway to heaven or highway to hell
 
Microservices. The good, the bad and the ugly.
Microservices. The good, the bad and the ugly.Microservices. The good, the bad and the ugly.
Microservices. The good, the bad and the ugly.
 
Modeling Microservices
Modeling MicroservicesModeling Microservices
Modeling Microservices
 
Designing and building a micro-services architecture. Stairway to heaven or a...
Designing and building a micro-services architecture. Stairway to heaven or a...Designing and building a micro-services architecture. Stairway to heaven or a...
Designing and building a micro-services architecture. Stairway to heaven or a...
 
Microservices. The good the bad and the ugly
Microservices. The good the bad and the uglyMicroservices. The good the bad and the ugly
Microservices. The good the bad and the ugly
 
Scaling agile from the ground up
Scaling agile from the ground upScaling agile from the ground up
Scaling agile from the ground up
 
Growing a microservices landscape (with smart use cases)
Growing a microservices landscape (with smart use cases)Growing a microservices landscape (with smart use cases)
Growing a microservices landscape (with smart use cases)
 

Kürzlich hochgeladen

Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGSujit Pal
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 

Kürzlich hochgeladen (20)

Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAG
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 

20101109 (tech ed) how frameworks kill projects

  • 1. And patterns to help you avoid getting killed Sander Hoogendoorn | Principal Technology Officer | Capgemini | @aahoogendoorn ARC203 - HOW FRAMEWORKS CAN KILL YOUR PROJECTS
  • 2. 2HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved Capgemini Principal technology officer Global agile thought leader Chief architect Accelerated Delivery Platform (ADP) Other Microsoft Partner Advisory Council .NET Author books and articles in international magazines Appreciated speaker at international conferences Columns in several magazines Editorial boards Web www.sanderhoogendoorn.com www.smartusecase.com Twitter: @aahoogendoorn SANDER HOOGENDOORN
  • 3. 3HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved ARC203 – How frameworks can kill your projects Tuesday 12:00 Hall 3.2 Interactive 2 ARC202 - How frameworks can kill your projects Wednesday 13:20 Hall 7.1b London 2 ARC203 – How frameworks can kill your projects (repeat) Thursday 10:30 Hall 3.2 Interactive 6 ARC205 – How smart use cases drive web development Friday 10:30 Hall 7.3 Berlin 1 SANDER HOOGENDOORN – TECHED 2010 SESSIONS
  • 4. 4HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved AGENDA 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
  • 5. 5HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved AGENDA 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
  • 6. It always takes longer than you expect, even when you take into account Hofstadter’s Law HOFSTADTER’S LAW
  • 7. 7HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved MYFIRSTSURVEY
  • 8. 8HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved MYFIRSTSURVEY
  • 9. Frameworks, like pizzas, come in only two sizes: too big and too small. LIFE IS NEVER EASY …
  • 10. 10HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved MYFIRSTSURVEY
  • 11. 11HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved WHAT’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
  • 12. 12HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved FRAMEWORKS - CODEPLEX
  • 13. 13HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved FRAMEWORKS – WWW.CSHARPOPENSOURCE.COM
  • 14. 14HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved FRAMEWORKS – MICROSOFT ENTERPRISE LIBRARY
  • 15. 15HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved FRAMEWORKS – PROJECT CASTLE
  • 16. 16HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved DON’T BELIEVE THE HYPE – IT’S A SQL
  • 17. 17HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved CONVINCING THE MANAGEMENT TO APPLY THE FRAMEWORK (25.5 %)
  • 18. 18HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved UNDERSTANDING THE FRAMEWORK (56.4 %)
  • 19. 19HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved CONVINCING OTHER DEVELOPERS TO USE THE FRAMEWORK (23.6 %)
  • 20. 20HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved TRAINING THE DEVELOPERS (20 %)
  • 21. 21HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved THE EYE OF THE TIGER
  • 22. 22HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved AGENDA 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
  • 23. My software never has bugs. It just develops random features APPLYING FRAMEWORKS
  • 24. 24HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved SO 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?
  • 25. 25HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved MORE THAN ANYTHING, DEPENDENCIES WILL KILL YOUR PROJECT
  • 26. A short story about framework developers and application developers KENTUCKY FRIED ARCHITECTURE
  • 27. 27HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved THE CUSTOMER IS NOT ALWAYS RIGHT
  • 28. 28HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved PIGS & CHICKENS The application developer The framework developer
  • 29. 29HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved KFC ARCHITECTURE – ENTITY FRAMEWORK
  • 30. 30HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved KFC ARCHITECTURE – ENTITY FRAMEWORK
  • 31. 31HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved KFC ARCHITECTURE – ENTITY FRAMEWORK
  • 32. 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!
  • 33. 33HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved ON THE WRONG TRACK
  • 34. 34HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved HOT OR NOT? Hot? From hot to not? Not? HTML5 LightSwitch WCF RIA Services Silverlight 4.0 ASP.NET MVC 2 (3?) ASP.NET Dynamic Data ADO.NET Data Services MEF Azure Services jQuery NService Bus Oslo M MGrammar Expression Blend ASP.NET Ajax REST Dublin BizTalk Surface Duet SketchFlow Entity Framework 2.0 LINQ2SQL LINQ2Entities Entity Data Model WPF Unity DSL’s Silverlight 2.0 F# ASP.NET PopFly
  • 35. 35HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved HERE’S JOHNNY! – ASP.NET MVC
  • 36. 36HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved HERE’S JOHNNY! – ASP.NET MVC
  • 37. It’s only in theory that practice and theory are the same NO STRINGS ATTACHED
  • 38. 38HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved MYFIRSTSURVEY
  • 39. 39HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved CHANGING BASE CLASSES – – NHIBERNATE / LOG4NET
  • 40. 40HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved CHANGING BASE CLASSES – NHIBERNATE / LOG4NET
  • 41. Programming is like sex. One mistake and you have to support it for the rest of your life YES, YOUR FRAMEWORKS VERSION TOO
  • 42. 42HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved IT AIN’T OVER TILL IT’S OVER
  • 43. 43HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved MISSING BASE CLASSES – WORKFLOW FOUNDATION 4.0
  • 44. 44HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved MISSING BASE CLASSES – WORKFLOW FOUNDATION 4.0
  • 45. HOW TO AVOID GETTING KILLED
  • 46. 46HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved AGENDA 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
  • 47. Architecture starts when you carefully put two bricks together. There it begins. SOUND ARCHITECTURE
  • 49. 49HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved A SOFTWARE ARCHITECTURE
  • 50. 50HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 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] Service gateways Service locators [Mapping] Databases Services / ESB Exact SAP BizTalk Java Silverlight XAML Entities (from EF) Domain Services Metadata Entity Framework LINQ Nhibernate? MVVM? MVP?
  • 51. 51HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved THE GOOD, THE BAD AND THE UGLY Dependencies Using frameworks is simply good, gringo However, being dependant on third parties can put your project at risk How stable are the frameworks you use? How stable is the framework vendor? Minimize dependencies Map frameworks to your software architecture, not vice versa Define your own layer supertypes Wrap framework functionality Apply manager-provider pattern Implement extension methods if all fails
  • 52. 52HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved AGENDA 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
  • 53. From a programmer's point of view the user is a peripheral that types when you issue a read request. LAYER SUPERTYPE
  • 54. 54HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved 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 Extension methods don’t (always) help, you know
  • 55. 55HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved LAYER SUPERTYPE – ASP.NET MVC
  • 56. 56HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved LAYER SUPERTYPE – ASP.NET MVC
  • 57. 57HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 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] Service gateways Service locators [Mapping] Databases Services / ESB Exact SAP BizTalk Java
  • 58. 58HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved LAYER SUPERTYPE – USING A LAYER SUPERTYPE
  • 59. 59HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved LAYER SUPERTYPE – DEFINE SERVICES ON LAYER SUPERTYPES
  • 60. 60HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved LAYER SUPERTYPE – EXTENSION METHODS ON LAYER SUPERTYPES
  • 61. 61HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved AGENDA 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
  • 62. Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. DESCRIPTOR
  • 63. 63HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved I KNOW NOTHING. I’M FROM BARCELONA What is the matter Mister Fawlty? The problem Manual, 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
  • 64. 64HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved DESCRIPTOR – THE PROBLEM (1)
  • 65. 65HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved DESCRIPTOR – THE PROBLEM (2)
  • 66. 66HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved ENUM?
  • 67. 67HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved STRING COLLECTION?
  • 68. 68HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved STRING COLLECTION
  • 69. 69HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved 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
  • 70. 70HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved DESCRIPTOR PATTERN
  • 71. 71HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved DESCRIPTOR PATTERN - DEFINITION
  • 72. 72HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved DESCRIPTOR PATTERN – EXTENDED DEFINITION
  • 73. 73HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved DESCRIPTOR PATTERN – USE IN FRAMEWORK
  • 74. 74HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved DESCRIPTOR PATTERN – USE IN APPLICATION
  • 75. 75HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved MYFIRSTSURVEY
  • 76. 76HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved DESCRIPTOR PATTERN – USE IN ASP.NET MVC
  • 77. 77HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved DESCRIPTOR PATTERN – USE IN ASP.NET MVC
  • 78. 78HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved AGENDA 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
  • 79. XML is like violence. If it doesn’t solve your problems, you are not using enough of it. DEPENDENCY INJECTION
  • 80. 80HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved 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 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
  • 81. 81HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved DIFFERENT 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?
  • 82. 82HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved DEPENDENCY INJECTION – CONSTRUCTOR INJECTION
  • 83. 83HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved DEPENDENCY INJECTION – MANUAL INJECTION c
  • 84. 84HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved DEPENDENCY INJECTION – WHAT TO PLUG IN Yes, XML will hurt you too!
  • 85. "Teamwork is a lot of people doing what I say“ Marketing executive, Citrix Corporation MANAGER – PROVIDER
  • 86. 86HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved 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 MANAGER-PROVIDER PATTERN
  • 87. 87HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved MANAGER – VALIDATIONMANAGER
  • 88. 88HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved INTERFACE
  • 89. 89HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved MANAGER – INITIALIZATION (USING DEPENDENCY INJECTION)
  • 90. 90HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved CONFIGURATION OF IMPLEMENTATION
  • 91. 91HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved MANAGER - EXECUTING METHODS
  • 92. 92HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved CLIENT – CALLING METHODS
  • 93. 93HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved 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! MANAGER-PROVIDER PATTERN
  • 94. 94HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved THE GOOD, THE BAD AND THE UGLY Dependencies Using frameworks is simply good, gringo However, being dependant on third parties can put your project at risk How stable are the frameworks you use? How stable is the framework vendor? Minimize dependencies Map frameworks to your software architecture, not vice versa Define your own layer supertypes Wrap framework functionality Apply manager-provider pattern Implement extension methods if all fails