anatomy of an agile .net project
DESCRIPTION
Fredrik Kalseth presented the Anatomy of An Agile .NET Projecterer at this falls MSDN & TechNet Live.TRANSCRIPT
![Page 1: Anatomy Of An Agile .Net Project](https://reader035.vdocuments.mx/reader035/viewer/2022070315/554f6237b4c9058a148b4880/html5/thumbnails/1.jpg)
By Fredrik Kalseth,Senior Consultant at Capgemini in Stavanger
AGILE .NET PROJECTANATOMY OF AN
TH
IS IS
NO
T A
BIO
LOG
Y
LES
SO
N.
![Page 2: Anatomy Of An Agile .Net Project](https://reader035.vdocuments.mx/reader035/viewer/2022070315/554f6237b4c9058a148b4880/html5/thumbnails/2.jpg)
CASE STUDYDevin Exposé, a Content Managment System
![Page 3: Anatomy Of An Agile .Net Project](https://reader035.vdocuments.mx/reader035/viewer/2022070315/554f6237b4c9058a148b4880/html5/thumbnails/3.jpg)
PRINCIPLESDESIGN
SO
LID
AR
CH
ITE
CTU
RE.
![Page 4: Anatomy Of An Agile .Net Project](https://reader035.vdocuments.mx/reader035/viewer/2022070315/554f6237b4c9058a148b4880/html5/thumbnails/4.jpg)
ONION ARCHITECTUREA modern approach to n-tier architecture.
![Page 5: Anatomy Of An Agile .Net Project](https://reader035.vdocuments.mx/reader035/viewer/2022070315/554f6237b4c9058a148b4880/html5/thumbnails/5.jpg)
Domain Model
Domain Services
Application Services
User interface Layer
Infrastructure
Tests
Application Core
OR
M
Database
Message Bus
Test
Fixture
DTO /
ViewModel
ClientASP.NET,
ASP.NET MVC, WPF...
External
Systems
Continous
Integration
Server
TFS, Team City, Cruise Control...
Mes
sage
/
Even
t
nHibernate, LLBLGEN, Linq To Sql, XPO...
NServiceBus
, MassTransit, proprietary...
Anti Corruption Layer
Directi
on of Flow (D
IP)
![Page 6: Anatomy Of An Agile .Net Project](https://reader035.vdocuments.mx/reader035/viewer/2022070315/554f6237b4c9058a148b4880/html5/thumbnails/6.jpg)
Domain Model
Domain Services
Application Services
User interface Layer
Infrastructure
Tests
Application Core
LinqToSqlRepository<T>
MediaItemVM
MediaItemTag
MediaStorage
UploadMediaItemView
IMediaStorage
IUnitOfWork
DataContext
MediaItemUploader
IRepository<T>
MediaItemController
When_uploading_MediaItem
MediaItem
![Page 7: Anatomy Of An Agile .Net Project](https://reader035.vdocuments.mx/reader035/viewer/2022070315/554f6237b4c9058a148b4880/html5/thumbnails/7.jpg)
DEPENDENCY MANAGEMENTFollow the Dependency Inversion Principle.Manage dependencies using an IoC framework.
![Page 8: Anatomy Of An Agile .Net Project](https://reader035.vdocuments.mx/reader035/viewer/2022070315/554f6237b4c9058a148b4880/html5/thumbnails/8.jpg)
OBJECT/RELATIONAL MAPPINGRows in a database are just data. Objects are data (state) + behavior.
![Page 9: Anatomy Of An Agile .Net Project](https://reader035.vdocuments.mx/reader035/viewer/2022070315/554f6237b4c9058a148b4880/html5/thumbnails/9.jpg)
PROCESSDEVELOPMENT
IT’S
SO
FTW
AR
E
CR
AFT
MA
NS
HIP
.
![Page 10: Anatomy Of An Agile .Net Project](https://reader035.vdocuments.mx/reader035/viewer/2022070315/554f6237b4c9058a148b4880/html5/thumbnails/10.jpg)
TEST DRIVEN DESIGNDrive the implementation of important/complex use cases through unit and integration tests.
![Page 11: Anatomy Of An Agile .Net Project](https://reader035.vdocuments.mx/reader035/viewer/2022070315/554f6237b4c9058a148b4880/html5/thumbnails/11.jpg)
PROJECT STRUCTUREFew projects = faster builds.Separate assemblies != loose coupling!
![Page 12: Anatomy Of An Agile .Net Project](https://reader035.vdocuments.mx/reader035/viewer/2022070315/554f6237b4c9058a148b4880/html5/thumbnails/12.jpg)
BRANCH BY FEATURESeparate concerns. Merge continously.
![Page 13: Anatomy Of An Agile .Net Project](https://reader035.vdocuments.mx/reader035/viewer/2022070315/554f6237b4c9058a148b4880/html5/thumbnails/13.jpg)
Trunk
F12 Branch F14 Branch
F13 Branch
F15 Branch
Merge from trunk
Merge from other branch
Feature branch
![Page 14: Anatomy Of An Agile .Net Project](https://reader035.vdocuments.mx/reader035/viewer/2022070315/554f6237b4c9058a148b4880/html5/thumbnails/14.jpg)
CONTINUOUS INTEGRATIONMerge frequently. Build merged code frequently. Test built code frequently.
![Page 15: Anatomy Of An Agile .Net Project](https://reader035.vdocuments.mx/reader035/viewer/2022070315/554f6237b4c9058a148b4880/html5/thumbnails/15.jpg)
DEMONSTRATIONFixing a bug the agile way.
![Page 16: Anatomy Of An Agile .Net Project](https://reader035.vdocuments.mx/reader035/viewer/2022070315/554f6237b4c9058a148b4880/html5/thumbnails/16.jpg)
THE ENVELOPEPUSHING
LEA
P A
HEA
D.
![Page 17: Anatomy Of An Agile .Net Project](https://reader035.vdocuments.mx/reader035/viewer/2022070315/554f6237b4c9058a148b4880/html5/thumbnails/17.jpg)
DISTRIBUTED SOURCE CONTROLSource control everywhere.
![Page 18: Anatomy Of An Agile .Net Project](https://reader035.vdocuments.mx/reader035/viewer/2022070315/554f6237b4c9058a148b4880/html5/thumbnails/18.jpg)
AUTOTESTINGContinously running tests in the background.
![Page 19: Anatomy Of An Agile .Net Project](https://reader035.vdocuments.mx/reader035/viewer/2022070315/554f6237b4c9058a148b4880/html5/thumbnails/19.jpg)
CONTINOUS DEPLOYMENT“On average we deploy new code fifty times a day.” - Timothy Fitz, IMVU
![Page 20: Anatomy Of An Agile .Net Project](https://reader035.vdocuments.mx/reader035/viewer/2022070315/554f6237b4c9058a148b4880/html5/thumbnails/20.jpg)
PROJECT MONITORINGSmeedee, an open source project monitor.
![Page 21: Anatomy Of An Agile .Net Project](https://reader035.vdocuments.mx/reader035/viewer/2022070315/554f6237b4c9058a148b4880/html5/thumbnails/21.jpg)
Read my blog
http://iridescence.noFollow me on Twitter
http://twitter.com/fkalseth
Fredrik Kalseth,Senior Consultant at Capgemini in Stavanger
FOR STAYING AWAKE!THANK YOU
STU
NN
ED
SIL
EN
CE
. A
PPLA
US
E?