Anatomy Of An Agile .Net Project

  • 706 views
Uploaded 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.

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
706
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
17
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