SlideShare una empresa de Scribd logo
1 de 102
Descargar para leer sin conexión
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
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   HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
    ©2012 Sander Hoogendoorn. All Rights Reserved
4   HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
    ©2012 Sander Hoogendoorn. All Rights Reserved
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
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
WATERFALL? BIG-UP FRONT?




Architecture!




    7   HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
        ©2012 Sander Hoogendoorn. All Rights Reserved
WATERFALL? BIG-UP FRONT?




 8   HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
     ©2012 Sander Hoogendoorn. All Rights Reserved
THE WATERFALL DENTIST




 9   HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
     ©2012 Sander Hoogendoorn. All Rights Reserved
BOEHM’S LAW




10   HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
     ©2012 Sander Hoogendoorn. All Rights Reserved
11   HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
     ©2012 Sander Hoogendoorn. All Rights Reserved
AGILE. NO UP-FRONT?




Architecture?




    12   HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
         ©2012 Sander Hoogendoorn. All Rights Reserved
BOEHM’S LAW. PER ITERATION




13   HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
     ©2012 Sander Hoogendoorn. All Rights Reserved
AGILE. SOME UP-FRONT


Just enough
architecting!




                            Frameworks?




14   HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
     ©2012 Sander Hoogendoorn. All Rights Reserved
HOFSTADTER’S LAW
It always takes longer than you expect, even when you take into account Hofstadter’s Law
MYFIRSTSURVEY




16   HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
     ©2012 Sander Hoogendoorn. All Rights Reserved
LIFE IS NEVER EASY …
Frameworks, like pizzas, come in only two sizes: too big and too small.
MYFIRSTSURVEY




18   HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
     ©2012 Sander Hoogendoorn. All Rights Reserved
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
FRAMEWORKS - CODEPLEX




20   HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
     ©2012 Sander Hoogendoorn. All Rights Reserved
FRAMEWORKS – WWW.CSHARPOPENSOURCE.COM




21   HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
     ©2012 Sander Hoogendoorn. All Rights Reserved
FRAMEWORKS – MICROSOFT ENTERPRISE LIBRARY




22   HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
     ©2012 Sander Hoogendoorn. All Rights Reserved
FRAMEWORKS – PROJECT CASTLE




23   HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
     ©2012 Sander Hoogendoorn. All Rights Reserved
DON’T BELIEVE THE HYPE – IT’S A SQL




 24   HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
      ©2012 Sander Hoogendoorn. All Rights Reserved
CONVINCING THE MANAGEMENT TO APPLY THE FRAMEWORK (25.5 %)




 25   HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
      ©2012 Sander Hoogendoorn. All Rights Reserved
UNDERSTANDING THE FRAMEWORK (56.4 %)




26   HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
     ©2012 Sander Hoogendoorn. All Rights Reserved
CONVINCING OTHER DEVELOPERS TO USE THE FRAMEWORK (23.6 %)




 27   HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
      ©2012 Sander Hoogendoorn. All Rights Reserved
CONVINCING OTHER DEVELOPERS TO USE THE FRAMEWORK (23.6 %)




 28   HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
      ©2012 Sander Hoogendoorn. All Rights Reserved
TRAINING THE DEVELOPERS (20 %)




29   HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
     ©2012 Sander Hoogendoorn. All Rights Reserved
THE EYE OF THE TIGER




30   HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
     ©2012 Sander Hoogendoorn. All Rights Reserved
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
APPLYING FRAMEWORKS
My software never has bugs. It just develops random features
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
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
MORE THAN ANYTHING, DEPENDENCIES WILL KILL YOUR PROJECT




 35   HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
      ©2012 Sander Hoogendoorn. All Rights Reserved
KENTUCKY FRIED ARCHITECTURE
A short story about framework developers and application developers
PIGS & CHICKENS




The framework                                          The application
  developer                                              developer



  37   HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
       ©2012 Sander Hoogendoorn. All Rights Reserved
KFC ARCHITECTURE – ENTITY FRAMEWORK




38   HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
     ©2012 Sander Hoogendoorn. All Rights Reserved
KFC ARCHITECTURE – ENTITY FRAMEWORK




39   HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
     ©2012 Sander Hoogendoorn. All Rights Reserved
KFC ARCHITECTURE – ENTITY FRAMEWORK




40   HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
     ©2012 Sander Hoogendoorn. All Rights Reserved
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!
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
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
HERE’S JOHNNY! – ASP.NET MVC




44   HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
     ©2012 Sander Hoogendoorn. All Rights Reserved
HERE’S JOHNNY! – ASP.NET MVC




45   HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
     ©2012 Sander Hoogendoorn. All Rights Reserved
NO STRINGS ATTACHED
It’s only in theory that practice and theory are the same
MYFIRSTSURVEY




47   HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
     ©2012 Sander Hoogendoorn. All Rights Reserved
CHANGING BASE CLASSES – – NHIBERNATE / LOG4NET




48   HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
     ©2012 Sander Hoogendoorn. All Rights Reserved
CHANGING BASE CLASSES – NHIBERNATE / LOG4NET




49   HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
     ©2012 Sander Hoogendoorn. All Rights Reserved
YES, YOUR FRAMEWORKS VERSION TOO
Programming is like sex.
One mistake and you have to support it for the rest of your life
IT AIN’T OVER TILL IT’S OVER




 51   HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
      ©2012 Sander Hoogendoorn. All Rights Reserved
MISSING BASE CLASSES – WORKFLOW FOUNDATION 4.0




52   HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
     ©2012 Sander Hoogendoorn. All Rights Reserved
MISSING BASE CLASSES – WORKFLOW FOUNDATION 4.0




53   HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
     ©2012 Sander Hoogendoorn. All Rights Reserved
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
SOUND ARCHITECTURE
Architecture starts when you carefully put two bricks together. There it begins.
(SOFTWARE.ARCHITECTURE != LIST<FRAMEWORK>)
A SOFTWARE ARCHITECTURE




57   HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
     ©2012 Sander Hoogendoorn. All Rights Reserved
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
LAYER SUPERTYPE
From a developers point of view the user is a peripheral
that types when you issue a read request.
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
LAYER SUPERTYPE – ASP.NET MVC




61   HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
     ©2012 Sander Hoogendoorn. All Rights Reserved
LAYER SUPERTYPE – ASP.NET MVC




62   HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
     ©2012 Sander Hoogendoorn. All Rights Reserved
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
LAYER SUPERTYPE – USING A LAYER SUPERTYPE




64   HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
     ©2012 Sander Hoogendoorn. All Rights Reserved
LAYER SUPERTYPE – REASON ABOUT LAYER SUPERTYPES




65   HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
     ©2012 Sander Hoogendoorn. All Rights Reserved
LAYER SUPERTYPE – EXTENSION METHODS ON LAYER SUPERTYPES




 66   HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
      ©2012 Sander Hoogendoorn. All Rights Reserved
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
DESCRIPTOR
Always code as if the guy who ends up maintaining your code
will be a violent psychopath who knows where you live.
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
DESCRIPTOR – THE PROBLEM (1)




70   HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
     ©2012 Sander Hoogendoorn. All Rights Reserved
DESCRIPTOR – THE PROBLEM (2)




71   HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
     ©2012 Sander Hoogendoorn. All Rights Reserved
ENUM?




72   HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
     ©2012 Sander Hoogendoorn. All Rights Reserved
STRING COLLECTION?




73   HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
     ©2012 Sander Hoogendoorn. All Rights Reserved
STRING COLLECTION




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




       75   HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
            ©2012 Sander Hoogendoorn. All Rights Reserved
DESCRIPTOR PATTERN




76   HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
     ©2012 Sander Hoogendoorn. All Rights Reserved
DESCRIPTOR PATTERN - DEFINITION




77   HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
     ©2012 Sander Hoogendoorn. All Rights Reserved
DESCRIPTOR PATTERN – EXTENDED DEFINITION




78   HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
     ©2012 Sander Hoogendoorn. All Rights Reserved
DESCRIPTOR PATTERN – USE IN FRAMEWORK




79   HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
     ©2012 Sander Hoogendoorn. All Rights Reserved
DESCRIPTOR PATTERN – USE IN APPLICATION




80   HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
     ©2012 Sander Hoogendoorn. All Rights Reserved
MYFIRSTSURVEY




81   HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
     ©2012 Sander Hoogendoorn. All Rights Reserved
DESCRIPTOR PATTERN – USE IN ASP.NET MVC




82   HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
     ©2012 Sander Hoogendoorn. All Rights Reserved
DESCRIPTOR PATTERN – USE IN ASP.NET MVC




83   HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
     ©2012 Sander Hoogendoorn. All Rights Reserved
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
DEPENDENCY INJECTION
XML is like violence. If it doesn’t solve your problems, you are not using enough of it.
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
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
DEPENDENCY INJECTION – CONSTRUCTOR INJECTION




88   HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
     ©2012 Sander Hoogendoorn. All Rights Reserved
DEPENDENCY INJECTION – MANUAL INJECTION




                                                     c




89   HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
     ©2012 Sander Hoogendoorn. All Rights Reserved
DEPENDENCY INJECTION – WHAT TO PLUG IN




90   HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
     ©2012 Sander Hoogendoorn. All Rights Reserved
MANAGER – PROVIDER
"Teamwork is a lot of people doing what I say“ - Marketing executive, Citrix Corporation
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
MANAGER – VALIDATIONMANAGER




93   HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
     ©2012 Sander Hoogendoorn. All Rights Reserved
INTERFACE




94   HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
     ©2012 Sander Hoogendoorn. All Rights Reserved
MANAGER – INITIALIZATION (USING DEPENDENCY INJECTION)




 95   HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
      ©2012 Sander Hoogendoorn. All Rights Reserved
CONFIGURATION OF IMPLEMENTATION




96   HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
     ©2012 Sander Hoogendoorn. All Rights Reserved
MANAGER - EXECUTING METHODS




97   HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
     ©2012 Sander Hoogendoorn. All Rights Reserved
CLIENT – CALLING METHODS




98   HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS
     ©2012 Sander Hoogendoorn. All Rights Reserved
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
ARCHITECTURAL CHANGES IN AGILE?
Re-factoring or re-architecting?
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
REFERENCES AND QUESTIONS
sander.hoogendoorn@capgemini.com | sander@ditisagile.nl | @aahoogendoorn | @ditisagile
www.sanderhoogendoorn.com | www.ditisagile.nl | www.smartusecase.com | www.accelerateddeliveryplatform.com

Más contenido relacionado

Similar a Agile and Frameworks

How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev
How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in KievHow Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev
How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in KievSander Hoogendoorn
 
20101109 (tech ed) how frameworks kill projects
20101109   (tech ed) how frameworks kill projects20101109   (tech ed) how frameworks kill projects
20101109 (tech ed) how frameworks kill projectsSander Hoogendoorn
 
20081027 Smart Use Cases Hogeschool Arnhem Nijmegen
20081027   Smart Use Cases   Hogeschool Arnhem Nijmegen20081027   Smart Use Cases   Hogeschool Arnhem Nijmegen
20081027 Smart Use Cases Hogeschool Arnhem NijmegenSander Hoogendoorn
 
Open stack summit spring 2014 hybrid cloud landmines - 2014-05-15
Open stack summit spring 2014   hybrid cloud landmines - 2014-05-15Open stack summit spring 2014   hybrid cloud landmines - 2014-05-15
Open stack summit spring 2014 hybrid cloud landmines - 2014-05-15drumulonimbus
 
Responsive Design with Backbone
Responsive Design with BackboneResponsive Design with Backbone
Responsive Design with BackboneMauvis Ledford
 
Micro Frontends.pptx
Micro Frontends.pptxMicro Frontends.pptx
Micro Frontends.pptxShanAli738907
 
ICONUK 2014 - From Idea To App
ICONUK 2014 - From Idea To AppICONUK 2014 - From Idea To App
ICONUK 2014 - From Idea To AppRené Winkelmeyer
 
Max flash based code quality is there a canary in your coal mine-
Max  flash based code quality  is there a canary in your coal mine-Max  flash based code quality  is there a canary in your coal mine-
Max flash based code quality is there a canary in your coal mine-Xavier Agnetti
 
Cloud Foundry Introduction and Overview
Cloud Foundry Introduction and OverviewCloud Foundry Introduction and Overview
Cloud Foundry Introduction and OverviewAndy Piper
 
Introduction_to_Scrum_Agile_Values
Introduction_to_Scrum_Agile_ValuesIntroduction_to_Scrum_Agile_Values
Introduction_to_Scrum_Agile_ValuesLaszlo Szalvay
 
Get the Exact Identity Solution You Need - In the Cloud - Overview
Get the Exact Identity Solution You Need - In the Cloud - OverviewGet the Exact Identity Solution You Need - In the Cloud - Overview
Get the Exact Identity Solution You Need - In the Cloud - OverviewForgeRock
 
Modeling, Deploying & Managing Applications on IBM Blue Box with Cloudsoft AMP
Modeling, Deploying & Managing Applications on IBM Blue Box with Cloudsoft AMPModeling, Deploying & Managing Applications on IBM Blue Box with Cloudsoft AMP
Modeling, Deploying & Managing Applications on IBM Blue Box with Cloudsoft AMPDuncan Johnston-Watt
 
Docker and microservices - moving from a monolith to microservices
Docker and microservices - moving from a monolith to microservicesDocker and microservices - moving from a monolith to microservices
Docker and microservices - moving from a monolith to microservicesJohan Louwers
 
Case Study: Practical tools and strategies for tackling legacy practices and ...
Case Study: Practical tools and strategies for tackling legacy practices and ...Case Study: Practical tools and strategies for tackling legacy practices and ...
Case Study: Practical tools and strategies for tackling legacy practices and ...Alejandro S.
 
For a Social Local and Mobile Drupal
For a Social Local and Mobile DrupalFor a Social Local and Mobile Drupal
For a Social Local and Mobile DrupalAdyax
 
Introduction to Marketing Cloud UI, Adobe Summit 2014
Introduction to Marketing Cloud UI, Adobe Summit 2014Introduction to Marketing Cloud UI, Adobe Summit 2014
Introduction to Marketing Cloud UI, Adobe Summit 2014Damien Antipa
 
Morden F2E Education - Think of Progressive Web Apps
Morden F2E Education - Think of Progressive Web AppsMorden F2E Education - Think of Progressive Web Apps
Morden F2E Education - Think of Progressive Web AppsCaesar Chi
 

Similar a Agile and Frameworks (20)

How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev
How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in KievHow Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev
How Frameworks Can Kill Your Projects at XP Days Ukraine 2013 in Kiev
 
20101109 (tech ed) how frameworks kill projects
20101109   (tech ed) how frameworks kill projects20101109   (tech ed) how frameworks kill projects
20101109 (tech ed) how frameworks kill projects
 
20081027 Smart Use Cases Hogeschool Arnhem Nijmegen
20081027   Smart Use Cases   Hogeschool Arnhem Nijmegen20081027   Smart Use Cases   Hogeschool Arnhem Nijmegen
20081027 Smart Use Cases Hogeschool Arnhem Nijmegen
 
What is this cloud thing?
What is this cloud thing?What is this cloud thing?
What is this cloud thing?
 
Open stack summit spring 2014 hybrid cloud landmines - 2014-05-15
Open stack summit spring 2014   hybrid cloud landmines - 2014-05-15Open stack summit spring 2014   hybrid cloud landmines - 2014-05-15
Open stack summit spring 2014 hybrid cloud landmines - 2014-05-15
 
7+1 myths of the new os
7+1 myths of the new os7+1 myths of the new os
7+1 myths of the new os
 
Responsive Design with Backbone
Responsive Design with BackboneResponsive Design with Backbone
Responsive Design with Backbone
 
Micro Frontends.pptx
Micro Frontends.pptxMicro Frontends.pptx
Micro Frontends.pptx
 
ICONUK 2014 - From Idea To App
ICONUK 2014 - From Idea To AppICONUK 2014 - From Idea To App
ICONUK 2014 - From Idea To App
 
Max flash based code quality is there a canary in your coal mine-
Max  flash based code quality  is there a canary in your coal mine-Max  flash based code quality  is there a canary in your coal mine-
Max flash based code quality is there a canary in your coal mine-
 
Cloud Foundry Introduction and Overview
Cloud Foundry Introduction and OverviewCloud Foundry Introduction and Overview
Cloud Foundry Introduction and Overview
 
CloudCamp
CloudCampCloudCamp
CloudCamp
 
Introduction_to_Scrum_Agile_Values
Introduction_to_Scrum_Agile_ValuesIntroduction_to_Scrum_Agile_Values
Introduction_to_Scrum_Agile_Values
 
Get the Exact Identity Solution You Need - In the Cloud - Overview
Get the Exact Identity Solution You Need - In the Cloud - OverviewGet the Exact Identity Solution You Need - In the Cloud - Overview
Get the Exact Identity Solution You Need - In the Cloud - Overview
 
Modeling, Deploying & Managing Applications on IBM Blue Box with Cloudsoft AMP
Modeling, Deploying & Managing Applications on IBM Blue Box with Cloudsoft AMPModeling, Deploying & Managing Applications on IBM Blue Box with Cloudsoft AMP
Modeling, Deploying & Managing Applications on IBM Blue Box with Cloudsoft AMP
 
Docker and microservices - moving from a monolith to microservices
Docker and microservices - moving from a monolith to microservicesDocker and microservices - moving from a monolith to microservices
Docker and microservices - moving from a monolith to microservices
 
Case Study: Practical tools and strategies for tackling legacy practices and ...
Case Study: Practical tools and strategies for tackling legacy practices and ...Case Study: Practical tools and strategies for tackling legacy practices and ...
Case Study: Practical tools and strategies for tackling legacy practices and ...
 
For a Social Local and Mobile Drupal
For a Social Local and Mobile DrupalFor a Social Local and Mobile Drupal
For a Social Local and Mobile Drupal
 
Introduction to Marketing Cloud UI, Adobe Summit 2014
Introduction to Marketing Cloud UI, Adobe Summit 2014Introduction to Marketing Cloud UI, Adobe Summit 2014
Introduction to Marketing Cloud UI, Adobe Summit 2014
 
Morden F2E Education - Think of Progressive Web Apps
Morden F2E Education - Think of Progressive Web AppsMorden F2E Education - Think of Progressive Web Apps
Morden F2E Education - Think of Progressive Web Apps
 

Más de 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
 

Más de 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)
 

Último

Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 

Último (20)

Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 

Agile and Frameworks

  • 1. 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
  • 7. WATERFALL? BIG-UP FRONT? Architecture! 7 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS ©2012 Sander Hoogendoorn. All Rights Reserved
  • 8. WATERFALL? BIG-UP FRONT? 8 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
  • 12. AGILE. NO UP-FRONT? Architecture? 12 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
  • 15. HOFSTADTER’S LAW It always takes longer than you expect, even when you take into account Hofstadter’s Law
  • 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
  • 20. FRAMEWORKS - CODEPLEX 20 HOW FRAMEWORKS CAN KILL YOUR AGILE PROJECTS ©2012 Sander Hoogendoorn. All Rights Reserved
  • 21. FRAMEWORKS – WWW.CSHARPOPENSOURCE.COM 21 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
  • 26. UNDERSTANDING THE FRAMEWORK (56.4 %) 26 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
  • 32. APPLYING FRAMEWORKS My software never has bugs. It just develops random features
  • 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
  • 36. KENTUCKY FRIED ARCHITECTURE A short story about framework developers and application developers
  • 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
  • 46. NO STRINGS ATTACHED It’s only in theory that practice and theory are the same
  • 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
  • 55. SOUND ARCHITECTURE Architecture starts when you carefully put two bricks together. There it begins.
  • 57. A SOFTWARE ARCHITECTURE 57 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
  • 85. DEPENDENCY INJECTION XML is like violence. If it doesn’t solve your problems, you are not using enough of it.
  • 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
  • 91. MANAGER – PROVIDER "Teamwork is a lot of people doing what I say“ - Marketing executive, Citrix Corporation
  • 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
  • 93. MANAGER – VALIDATIONMANAGER 93 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
  • 96. CONFIGURATION OF IMPLEMENTATION 96 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
  • 100. ARCHITECTURAL CHANGES IN AGILE? Re-factoring or re-architecting?
  • 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
  • 102. REFERENCES AND QUESTIONS sander.hoogendoorn@capgemini.com | sander@ditisagile.nl | @aahoogendoorn | @ditisagile www.sanderhoogendoorn.com | www.ditisagile.nl | www.smartusecase.com | www.accelerateddeliveryplatform.com