ANATOMY OF AN<br />AGILE .NET PROJECT<br />By Fredrik Kalseth,<br />Senior Consultant at Capgemini in Stavanger<br />THIS ...
CASE STUDY<br />Devin Exposé, a Content Managment System<br />
DESIGN<br />PRINCIPLES<br />SOLID ARCHITECTURE.<br />
ONION ARCHITECTURE<br />A modern approach to n-tier architecture.<br />
Client<br />User interface Layer<br />ORM<br />Test Fixture<br />DTO / ViewModel<br />Message/Event<br />ASP.NET, ASP.NET ...
MediaItemVM<br />UploadMediaItemView<br />User interface Layer<br />MediaItemController<br />MediaItemUploader<br />Applic...
DEPENDENCY MANAGEMENT<br />Follow the Dependency Inversion Principle.<br />Manage dependencies using an IoC framework.<br />
OBJECT/RELATIONAL MAPPING<br />Rows in a database are just data. <br />Objects are data (state) + behavior.<br />
DEVELOPMENT<br />PROCESS<br />IT’S SOFTWARE CRAFTMANSHIP.<br />
TEST DRIVEN DESIGN<br />Drive the implementation of important/complex use cases through unit and integration tests.<br />
PROJECT STRUCTURE<br />Few projects = faster builds.<br />Separate assemblies != loose coupling!<br />
BRANCH BY FEATURE<br />Separate concerns. Merge continously.<br />
F14 Branch<br />F12 Branch<br />Trunk<br />F13 Branch<br />F15 Branch<br />Feature branch<br />Merge from trunk<br />Merge...
CONTINUOUS INTEGRATION<br />Merge frequently. <br />Build merged code frequently. <br />Test built code frequently.<br />
DEMONSTRATION<br />Fixing a bug the agile way.<br />
PUSHING<br />THE ENVELOPE<br />LEAP AHEAD.<br />
DISTRIBUTED SOURCE CONTROL<br />Source control everywhere. <br />
AUTOTESTING<br />Continously running tests in the background.<br />
CONTINOUS DEPLOYMENT<br />“On average we deploy new code fifty times a day.” - Timothy Fitz, IMVU<br />
PROJECT MONITORING<br />Smeedee, an open source project monitor.<br />
Upcoming SlideShare
Loading in...5
×

Anatomy Of An Agile .Net Project

770

Published on

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
770
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
24
Comments
0
Likes
0
Embeds 0
No embeds

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
  • Anatomy Of An Agile .Net Project

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

      Clipping is a handy way to collect important slides you want to go back to later.

    ×