anatomy of an agile .net project
DESCRIPTION
Fredrik Kalseth presented the Anatomy of An Agile .NET Projecterer at this falls MSDN & TechNet Live.TRANSCRIPT
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.
CASE STUDYDevin Exposé, a Content Managment System
PRINCIPLESDESIGN
SO
LID
AR
CH
ITE
CTU
RE.
ONION ARCHITECTUREA modern approach to n-tier architecture.
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)
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
DEPENDENCY MANAGEMENTFollow the Dependency Inversion Principle.Manage dependencies using an IoC framework.
OBJECT/RELATIONAL MAPPINGRows in a database are just data. Objects are data (state) + behavior.
PROCESSDEVELOPMENT
IT’S
SO
FTW
AR
E
CR
AFT
MA
NS
HIP
.
TEST DRIVEN DESIGNDrive the implementation of important/complex use cases through unit and integration tests.
PROJECT STRUCTUREFew projects = faster builds.Separate assemblies != loose coupling!
BRANCH BY FEATURESeparate concerns. Merge continously.
Trunk
F12 Branch F14 Branch
F13 Branch
F15 Branch
Merge from trunk
Merge from other branch
Feature branch
CONTINUOUS INTEGRATIONMerge frequently. Build merged code frequently. Test built code frequently.
DEMONSTRATIONFixing a bug the agile way.
THE ENVELOPEPUSHING
LEA
P A
HEA
D.
DISTRIBUTED SOURCE CONTROLSource control everywhere.
AUTOTESTINGContinously running tests in the background.
CONTINOUS DEPLOYMENT“On average we deploy new code fifty times a day.” - Timothy Fitz, IMVU
PROJECT MONITORINGSmeedee, an open source project monitor.
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?