Your SlideShare is downloading. ×
Anatomy Of An Agile .Net Project
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Anatomy Of An Agile .Net Project

739

Published on

Fredrik Kalseth presented the Anatomy of An Agile .NET Projecterer at this falls MSDN & TechNet Live.

Fredrik Kalseth presented the Anatomy of An Agile .NET Projecterer at this falls MSDN & TechNet Live.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
739
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
22
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • Emphasizes use of interfaces for behavior contractsExternalization of infrastructureDomain model – state and behaviorDomain services – typically interfaces for repositories etc.Application services – orchestrate the finer grained domain services. Concerns such as transactionality and persistence are typically dealt with by application services. ”Task services”Outer layer reserved for things that change often. UI, implementations of infrastructure stuff (Repository) etc.
  • http://www.lostechies.com/blogs/derickbailey/archive/2009/07/21/branch-per-feature-source-control-part-2-how-theory.aspx
  • http://timothyfitz.wordpress.com/2009/02/10/continuous-deployment-at-imvu-doing-the-impossible-fifty-times-a-day/
  • Capgemini’s Smeedee Open source project monitor: http://www.smeedee.org
  • Transcript

    • 1. ANATOMY OF AN
      AGILE .NET PROJECT
      By Fredrik Kalseth,
      Senior Consultant at Capgemini in Stavanger
      THIS IS NOT A BIOLOGY LESSON.
    • 2. CASE STUDY
      Devin Exposé, a Content Managment System
    • 3. DESIGN
      PRINCIPLES
      SOLID ARCHITECTURE.
    • 4. ONION ARCHITECTURE
      A modern approach to n-tier architecture.
    • 5. Client
      User interface Layer
      ORM
      Test Fixture
      DTO / ViewModel
      Message/Event
      ASP.NET, ASP.NET MVC, WPF...
      Anti Corruption Layer
      Application Services
      Domain Services
      Domain Model
      Direction of Flow (DIP)
      nHibernate, LLBLGEN, Linq To Sql, XPO...
      Application Core
      Database
      Continous Integration Server
      Tests
      Infrastructure
      Message Bus
      External Systems
      TFS, Team City, Cruise Control...
      NServiceBus, MassTransit, proprietary...
    • 6. MediaItemVM
      UploadMediaItemView
      User interface Layer
      MediaItemController
      MediaItemUploader
      Application Services
      Domain Services
      IRepository<T>
      Domain Model
      MediaItem
      IUnitOfWork
      MediaItemTag
      IMediaStorage
      Application Core
      MediaStorage
      LinqToSqlRepository<T>
      DataContext
      Tests
      Infrastructure
      When_uploading_MediaItem
    • 7. DEPENDENCY MANAGEMENT
      Follow the Dependency Inversion Principle.
      Manage dependencies using an IoC framework.
    • 8. OBJECT/RELATIONAL MAPPING
      Rows in a database are just data.
      Objects are data (state) + behavior.
    • 9. DEVELOPMENT
      PROCESS
      IT’S SOFTWARE CRAFTMANSHIP.
    • 10. TEST DRIVEN DESIGN
      Drive the implementation of important/complex use cases through unit and integration tests.
    • 11. PROJECT STRUCTURE
      Few projects = faster builds.
      Separate assemblies != loose coupling!
    • 12. BRANCH BY FEATURE
      Separate concerns. Merge continously.
    • 13. F14 Branch
      F12 Branch
      Trunk
      F13 Branch
      F15 Branch
      Feature branch
      Merge from trunk
      Merge from other branch
    • 14. CONTINUOUS INTEGRATION
      Merge frequently.
      Build merged code frequently.
      Test built code frequently.
    • 15.
    • 16. DEMONSTRATION
      Fixing a bug the agile way.
    • 17. PUSHING
      THE ENVELOPE
      LEAP AHEAD.
    • 18. DISTRIBUTED SOURCE CONTROL
      Source control everywhere.
    • 19. AUTOTESTING
      Continously running tests in the background.
    • 20. CONTINOUS DEPLOYMENT
      “On average we deploy new code fifty times a day.” - Timothy Fitz, IMVU
    • 21. PROJECT MONITORING
      Smeedee, an open source project monitor.
    • 22. Read my blog
      http://iridescence.no
      Follow me on Twitter
      http://twitter.com/fkalseth
      THANK YOU
      STUNNED SILENCE. APPLAUSE?
      FOR STAYING AWAKE!
      Fredrik Kalseth,
      Senior Consultant at Capgemini in Stavanger

    ×