SlideShare a Scribd company logo
1 of 36
Download to read offline
AMIR BARYLKO
                            DECOUPLING
                                     USING THE

                              EVENT
                            AGGREGATOR

                                 .NET USER GROUP
                                     MAR 2011

Amir Barylko - .NET UG Mar ‘11                     MavenThought Inc.
Wednesday, March 30, 2011
WHO AM I?

    • Quality               Expert

    • Architect

    • Developer

    • Mentor

    • Great            cook

    • The         one who’s entertaining you for the next hour!
Amir Barylko - .NET UG Mar ‘11                                    MavenThought Inc.
Wednesday, March 30, 2011
RESOURCES

    • Email: amir@barylko.com

    • Twitter: @abarylko

    • Blog: http://www.orthocoders.com

    • Materials: http://www.orthocoders.com/presentations




Amir Barylko - .NET UG Mar ‘11                          MavenThought Inc.
Wednesday, March 30, 2011
INTRO
                                      Coupling
                                      Cohesion
                                    Dependencies
                                 Dependency Injection
                                   IoC Containers


Amir Barylko - .NET UG Mar ‘11                          MavenThought Inc.
Wednesday, March 30, 2011
COUPLING & COHESION




Amir Barylko - .NET UG Mar ‘11    MavenThought Inc.
Wednesday, March 30, 2011
COUPLING
                                  (WIKIPEDIA)



    Degree to which
    each program module relies
    on each one
            of the other modules

Amir Barylko - .NET UG Mar ‘11                  MavenThought Inc.
Wednesday, March 30, 2011
COUPLING II

    Is usually contrasted
                     with cohesion



Amir Barylko - .NET UG Mar ‘11                 MavenThought Inc.
Wednesday, March 30, 2011
COUPLING III

    Invented by Larry Constantine,
    an original developer of
               Structured Design


Amir Barylko - .NET UG Mar ‘11              MavenThought Inc.
Wednesday, March 30, 2011
COUPLING IV

    Low coupling is often a
    sign of a well-structured
    computer system and a
                      good design

Amir Barylko - .NET UG Mar ‘11             MavenThought Inc.
Wednesday, March 30, 2011
COUPLING V

    When combined with
    high cohesion,
    supports high
                  readability and
                  maintainability
Amir Barylko - .NET UG Mar ‘11                MavenThought Inc.
Wednesday, March 30, 2011
COHESION
                                  (WIKIPEDIA)



    measure of how
    strongly-related the
    functionality expressed by the
    source code of a
              software module is
Amir Barylko - .NET UG Mar ‘11                  MavenThought Inc.
Wednesday, March 30, 2011
IS ALL ABOUT
                            DEPENDENCIES




Amir Barylko - .NET UG Mar ‘11              MavenThought Inc.
Wednesday, March 30, 2011
HARDCODED
                            DEPENDENCIES
    public MovieLibrary()
    {
        this._storage = new LocalStorage();


             this._critic = new JaySherman();


             this._posterService = new IMDBPosterService();
    }



                            Impossible to test
                              or maintain!

Amir Barylko - .NET UG Mar ‘11                                MavenThought Inc.
Wednesday, March 30, 2011
EXTRACT INTERFACES
    private JaySherman _critic;

    private IMDBPosterService _posterService;

    private LocalStorage _storage;



    private IMovieCritic _critic;

    private IMoviePosterService _posterService;

    private IMovieStorage _storage;




Amir Barylko - .NET UG Mar ‘11                    MavenThought Inc.
Wednesday, March 30, 2011
DEPENDENCY INJECTION
    public MovieLibrary(IMovieStorage storage,
                                 IMovieCritic critic,
                                 IMoviePosterService posterService)
    {
              this._storage = storage;
              this._critic = critic;
              this._posterService = posterService;
    }


                            Better for testing... but who
                             is going to initialize them?

Amir Barylko - .NET UG Mar ‘11                                  MavenThought Inc.
Wednesday, March 30, 2011
INVERSION OF CONTROL




Amir Barylko - .NET UG Mar ‘11   MavenThought Inc.
Wednesday, March 30, 2011
POOR’S MAN DI
    public MovieLibrary()
    {
              this._storage = new LocalStorage();

              this._critic = new JaySherman();

              this._posterService = new IMDBPosterService();

    }



                                 Still testeable...
                                   but smells!

Amir Barylko - .NET UG Mar ‘11                                 MavenThought Inc.
Wednesday, March 30, 2011
USING IOC CONTAINER
    Container.Register(
        Component
            .For<IMovieCritic>()
            .ImplementedBy<JaySherman>(),
        Component
            .For<IMoviePosterService>()
            .ImplementedBy<IMDBPosterService>(),
        Component
            .For<IMovieStorage>()
            .ImplementedBy<LocalStorage>());




Amir Barylko - .NET UG Mar ‘11                     MavenThought Inc.
Wednesday, March 30, 2011
REFACTORING
                                   What’s wrong?
                                 Event Aggregator
                                      Demo
                             Desktop &Web applications



Amir Barylko - .NET UG Mar ‘11                           MavenThought Inc.
Wednesday, March 30, 2011
WHAT’S WRONG?




Amir Barylko - .NET UG Mar ‘11              MavenThought Inc.
Wednesday, March 30, 2011
TOO MANY DEPENDENCIES




Amir Barylko - .NET UG Mar ‘11   MavenThought Inc.
Wednesday, March 30, 2011
LET’S THINK

    • Why the critic has to know the library (or
         viceversa)?

    • Or the poster service?
    • If I need more services, do I add more
         dependencies to the library?


Amir Barylko - .NET UG Mar ‘11                 MavenThought Inc.
Wednesday, March 30, 2011
DECENTRALIZE

    • Identify boundaries
    • Identify clear responsibilities
    • Reduce complexity
    • Find notification mechanism

Amir Barylko - .NET UG Mar ‘11             MavenThought Inc.
Wednesday, March 30, 2011
WHAT I’D LIKE


                                          Reviews


                    Library        ????

                                              Posters



Amir Barylko - .NET UG Mar ‘11                    MavenThought Inc.
Wednesday, March 30, 2011
EVENT AGGREGATOR




Amir Barylko - .NET UG Mar ‘11             MavenThought Inc.
Wednesday, March 30, 2011
THE PATTERN

       Channel events
       from multiple
       objects into a
       single object to
       s i m p l i f y
       registration for
       clients
Amir Barylko - .NET UG Mar ‘11            MavenThought Inc.
Wednesday, March 30, 2011
TRAITS

    • Based                 on subject - observer
    • Centralize                 event registration logic
    • No            need to track multiple objects
    • Level                 of indirection


Amir Barylko - .NET UG Mar ‘11                              MavenThought Inc.
Wednesday, March 30, 2011
DEMO




Amir Barylko - .NET UG Mar ‘11          MavenThought Inc.
Wednesday, March 30, 2011
WHAT WE NEED

    •Register                    events
    •Raise                  events
    •Subscribe                    to events

Amir Barylko - .NET UG Mar ‘11                MavenThought Inc.
Wednesday, March 30, 2011
IMPLEMENTATION




Amir Barylko - .NET UG Mar ‘11               MavenThought Inc.
Wednesday, March 30, 2011
WHAT’S NEXT?

    •Show                    movies
    •Add                    notification to show posters
    •Add                    notification to show reviews


Amir Barylko - .NET UG Mar ‘11                       MavenThought Inc.
Wednesday, March 30, 2011
QUESTIONS?




Amir Barylko - .NET UG Mar ‘11                MavenThought Inc.
Wednesday, March 30, 2011
RESOURCES

    • Email: amir@barylko.com

    • Twitter: @abarylko

    • Presentation: http://www.orthocoders.com/presentations

    • Source                Code: https://github.com/amirci/decoupling_mar_11




Amir Barylko - .NET UG Mar ‘11                                        MavenThought Inc.
Wednesday, March 30, 2011
RESOURCES II

    •Coupling: http://en.wikipedia.org/wiki/Coupling_(computer_programming)

    •Event Aggregator: http://martinfowler.com/eaaDev/EventAggregator.html
    MavenThought Commons:https://github.com/amirci/mt_commons
    •Bootstrapper:http://bootstrapper.codeplex.com/
    •Windsor Container:http://www.castleproject.org/container/



Amir Barylko - .NET UG Mar ‘11                                                MavenThought Inc.
Wednesday, March 30, 2011
TDD TRAINING

    • When: May             26 & 27

    • More            info: http://www.maventhought.com

    • Goal: Learn TDD            with real hands on examples




Amir Barylko - .NET UG Mar ‘11                                 MavenThought Inc.
Wednesday, March 30, 2011
AGILE USER GROUP

    • Check             it out! : http://www.agilewinnipeg.com

    • Apr         5: Agile Planning

    • May: Agile            Stories

    • Jun: Testing?




Amir Barylko - .NET UG Mar ‘11                                   MavenThought Inc.
Wednesday, March 30, 2011

More Related Content

What's hot (7)

prdc10-Bdd-real-world
prdc10-Bdd-real-worldprdc10-Bdd-real-world
prdc10-Bdd-real-world
 
PRDC-ror-trilogy-part1
PRDC-ror-trilogy-part1PRDC-ror-trilogy-part1
PRDC-ror-trilogy-part1
 
CodeCamp 2012-mvc-vs-ror-2
CodeCamp 2012-mvc-vs-ror-2CodeCamp 2012-mvc-vs-ror-2
CodeCamp 2012-mvc-vs-ror-2
 
Cpl12 continuous integration
Cpl12 continuous integrationCpl12 continuous integration
Cpl12 continuous integration
 
PRDCW-avent-aggregator
PRDCW-avent-aggregatorPRDCW-avent-aggregator
PRDCW-avent-aggregator
 
obs-tdd-intro
obs-tdd-introobs-tdd-intro
obs-tdd-intro
 
Capybara1
Capybara1Capybara1
Capybara1
 

More from Amir Barylko

Beutiful javascript with coffeescript
Beutiful javascript with coffeescriptBeutiful javascript with coffeescript
Beutiful javascript with coffeescript
Amir Barylko
 
Rich UI with Knockout.js &amp; Coffeescript
Rich UI with Knockout.js &amp; CoffeescriptRich UI with Knockout.js &amp; Coffeescript
Rich UI with Knockout.js &amp; Coffeescript
Amir Barylko
 

More from Amir Barylko (20)

Functional converter project
Functional converter projectFunctional converter project
Functional converter project
 
Elm: delightful web development
Elm: delightful web developmentElm: delightful web development
Elm: delightful web development
 
Dot Net Core
Dot Net CoreDot Net Core
Dot Net Core
 
No estimates
No estimatesNo estimates
No estimates
 
User stories deep dive
User stories deep diveUser stories deep dive
User stories deep dive
 
Coderetreat hosting training
Coderetreat hosting trainingCoderetreat hosting training
Coderetreat hosting training
 
There's no charge for (functional) awesomeness
There's no charge for (functional) awesomenessThere's no charge for (functional) awesomeness
There's no charge for (functional) awesomeness
 
What's new in c# 6
What's new in c# 6What's new in c# 6
What's new in c# 6
 
Productive teams
Productive teamsProductive teams
Productive teams
 
Who killed object oriented design?
Who killed object oriented design?Who killed object oriented design?
Who killed object oriented design?
 
From coach to owner - What I learned from the other side
From coach to owner - What I learned from the other sideFrom coach to owner - What I learned from the other side
From coach to owner - What I learned from the other side
 
Communication is the Key to Teamwork and productivity
Communication is the Key to Teamwork and productivityCommunication is the Key to Teamwork and productivity
Communication is the Key to Teamwork and productivity
 
Acceptance Test Driven Development
Acceptance Test Driven DevelopmentAcceptance Test Driven Development
Acceptance Test Driven Development
 
Refactoring
RefactoringRefactoring
Refactoring
 
Agile requirements
Agile requirementsAgile requirements
Agile requirements
 
Agile teams and responsibilities
Agile teams and responsibilitiesAgile teams and responsibilities
Agile teams and responsibilities
 
Refactoring
RefactoringRefactoring
Refactoring
 
Beutiful javascript with coffeescript
Beutiful javascript with coffeescriptBeutiful javascript with coffeescript
Beutiful javascript with coffeescript
 
Sass & bootstrap
Sass & bootstrapSass & bootstrap
Sass & bootstrap
 
Rich UI with Knockout.js &amp; Coffeescript
Rich UI with Knockout.js &amp; CoffeescriptRich UI with Knockout.js &amp; Coffeescript
Rich UI with Knockout.js &amp; Coffeescript
 

Recently uploaded

Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Recently uploaded (20)

Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 

decoupling-ea

  • 1. AMIR BARYLKO DECOUPLING USING THE EVENT AGGREGATOR .NET USER GROUP MAR 2011 Amir Barylko - .NET UG Mar ‘11 MavenThought Inc. Wednesday, March 30, 2011
  • 2. WHO AM I? • Quality Expert • Architect • Developer • Mentor • Great cook • The one who’s entertaining you for the next hour! Amir Barylko - .NET UG Mar ‘11 MavenThought Inc. Wednesday, March 30, 2011
  • 3. RESOURCES • Email: amir@barylko.com • Twitter: @abarylko • Blog: http://www.orthocoders.com • Materials: http://www.orthocoders.com/presentations Amir Barylko - .NET UG Mar ‘11 MavenThought Inc. Wednesday, March 30, 2011
  • 4. INTRO Coupling Cohesion Dependencies Dependency Injection IoC Containers Amir Barylko - .NET UG Mar ‘11 MavenThought Inc. Wednesday, March 30, 2011
  • 5. COUPLING & COHESION Amir Barylko - .NET UG Mar ‘11 MavenThought Inc. Wednesday, March 30, 2011
  • 6. COUPLING (WIKIPEDIA) Degree to which each program module relies on each one of the other modules Amir Barylko - .NET UG Mar ‘11 MavenThought Inc. Wednesday, March 30, 2011
  • 7. COUPLING II Is usually contrasted with cohesion Amir Barylko - .NET UG Mar ‘11 MavenThought Inc. Wednesday, March 30, 2011
  • 8. COUPLING III Invented by Larry Constantine, an original developer of Structured Design Amir Barylko - .NET UG Mar ‘11 MavenThought Inc. Wednesday, March 30, 2011
  • 9. COUPLING IV Low coupling is often a sign of a well-structured computer system and a good design Amir Barylko - .NET UG Mar ‘11 MavenThought Inc. Wednesday, March 30, 2011
  • 10. COUPLING V When combined with high cohesion, supports high readability and maintainability Amir Barylko - .NET UG Mar ‘11 MavenThought Inc. Wednesday, March 30, 2011
  • 11. COHESION (WIKIPEDIA) measure of how strongly-related the functionality expressed by the source code of a software module is Amir Barylko - .NET UG Mar ‘11 MavenThought Inc. Wednesday, March 30, 2011
  • 12. IS ALL ABOUT DEPENDENCIES Amir Barylko - .NET UG Mar ‘11 MavenThought Inc. Wednesday, March 30, 2011
  • 13. HARDCODED DEPENDENCIES public MovieLibrary() { this._storage = new LocalStorage(); this._critic = new JaySherman(); this._posterService = new IMDBPosterService(); } Impossible to test or maintain! Amir Barylko - .NET UG Mar ‘11 MavenThought Inc. Wednesday, March 30, 2011
  • 14. EXTRACT INTERFACES private JaySherman _critic; private IMDBPosterService _posterService; private LocalStorage _storage; private IMovieCritic _critic; private IMoviePosterService _posterService; private IMovieStorage _storage; Amir Barylko - .NET UG Mar ‘11 MavenThought Inc. Wednesday, March 30, 2011
  • 15. DEPENDENCY INJECTION public MovieLibrary(IMovieStorage storage, IMovieCritic critic, IMoviePosterService posterService) { this._storage = storage; this._critic = critic; this._posterService = posterService; } Better for testing... but who is going to initialize them? Amir Barylko - .NET UG Mar ‘11 MavenThought Inc. Wednesday, March 30, 2011
  • 16. INVERSION OF CONTROL Amir Barylko - .NET UG Mar ‘11 MavenThought Inc. Wednesday, March 30, 2011
  • 17. POOR’S MAN DI public MovieLibrary() { this._storage = new LocalStorage(); this._critic = new JaySherman(); this._posterService = new IMDBPosterService(); } Still testeable... but smells! Amir Barylko - .NET UG Mar ‘11 MavenThought Inc. Wednesday, March 30, 2011
  • 18. USING IOC CONTAINER Container.Register( Component .For<IMovieCritic>() .ImplementedBy<JaySherman>(), Component .For<IMoviePosterService>() .ImplementedBy<IMDBPosterService>(), Component .For<IMovieStorage>() .ImplementedBy<LocalStorage>()); Amir Barylko - .NET UG Mar ‘11 MavenThought Inc. Wednesday, March 30, 2011
  • 19. REFACTORING What’s wrong? Event Aggregator Demo Desktop &Web applications Amir Barylko - .NET UG Mar ‘11 MavenThought Inc. Wednesday, March 30, 2011
  • 20. WHAT’S WRONG? Amir Barylko - .NET UG Mar ‘11 MavenThought Inc. Wednesday, March 30, 2011
  • 21. TOO MANY DEPENDENCIES Amir Barylko - .NET UG Mar ‘11 MavenThought Inc. Wednesday, March 30, 2011
  • 22. LET’S THINK • Why the critic has to know the library (or viceversa)? • Or the poster service? • If I need more services, do I add more dependencies to the library? Amir Barylko - .NET UG Mar ‘11 MavenThought Inc. Wednesday, March 30, 2011
  • 23. DECENTRALIZE • Identify boundaries • Identify clear responsibilities • Reduce complexity • Find notification mechanism Amir Barylko - .NET UG Mar ‘11 MavenThought Inc. Wednesday, March 30, 2011
  • 24. WHAT I’D LIKE Reviews Library ???? Posters Amir Barylko - .NET UG Mar ‘11 MavenThought Inc. Wednesday, March 30, 2011
  • 25. EVENT AGGREGATOR Amir Barylko - .NET UG Mar ‘11 MavenThought Inc. Wednesday, March 30, 2011
  • 26. THE PATTERN Channel events from multiple objects into a single object to s i m p l i f y registration for clients Amir Barylko - .NET UG Mar ‘11 MavenThought Inc. Wednesday, March 30, 2011
  • 27. TRAITS • Based on subject - observer • Centralize event registration logic • No need to track multiple objects • Level of indirection Amir Barylko - .NET UG Mar ‘11 MavenThought Inc. Wednesday, March 30, 2011
  • 28. DEMO Amir Barylko - .NET UG Mar ‘11 MavenThought Inc. Wednesday, March 30, 2011
  • 29. WHAT WE NEED •Register events •Raise events •Subscribe to events Amir Barylko - .NET UG Mar ‘11 MavenThought Inc. Wednesday, March 30, 2011
  • 30. IMPLEMENTATION Amir Barylko - .NET UG Mar ‘11 MavenThought Inc. Wednesday, March 30, 2011
  • 31. WHAT’S NEXT? •Show movies •Add notification to show posters •Add notification to show reviews Amir Barylko - .NET UG Mar ‘11 MavenThought Inc. Wednesday, March 30, 2011
  • 32. QUESTIONS? Amir Barylko - .NET UG Mar ‘11 MavenThought Inc. Wednesday, March 30, 2011
  • 33. RESOURCES • Email: amir@barylko.com • Twitter: @abarylko • Presentation: http://www.orthocoders.com/presentations • Source Code: https://github.com/amirci/decoupling_mar_11 Amir Barylko - .NET UG Mar ‘11 MavenThought Inc. Wednesday, March 30, 2011
  • 34. RESOURCES II •Coupling: http://en.wikipedia.org/wiki/Coupling_(computer_programming) •Event Aggregator: http://martinfowler.com/eaaDev/EventAggregator.html MavenThought Commons:https://github.com/amirci/mt_commons •Bootstrapper:http://bootstrapper.codeplex.com/ •Windsor Container:http://www.castleproject.org/container/ Amir Barylko - .NET UG Mar ‘11 MavenThought Inc. Wednesday, March 30, 2011
  • 35. TDD TRAINING • When: May 26 & 27 • More info: http://www.maventhought.com • Goal: Learn TDD with real hands on examples Amir Barylko - .NET UG Mar ‘11 MavenThought Inc. Wednesday, March 30, 2011
  • 36. AGILE USER GROUP • Check it out! : http://www.agilewinnipeg.com • Apr 5: Agile Planning • May: Agile Stories • Jun: Testing? Amir Barylko - .NET UG Mar ‘11 MavenThought Inc. Wednesday, March 30, 2011