Anatomy Of An Agile .Net Project

21
By Fredrik Kalseth, Senior Consultant at Capgemini in Stavanger AGILE .NET PROJECT ANATOMY OF AN THIS IS NOT A BIOLOGY LESSON.

description

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

Transcript of Anatomy Of An Agile .Net Project

Page 1: Anatomy Of An Agile .Net Project

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

CASE STUDYDevin Exposé, a Content Managment System

Page 3: Anatomy Of An Agile .Net Project

PRINCIPLESDESIGN

SO

LID

AR

CH

ITE

CTU

RE.

Page 4: Anatomy Of An Agile .Net Project

ONION ARCHITECTUREA modern approach to n-tier architecture.

Page 5: Anatomy Of An Agile .Net Project

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

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

DEPENDENCY MANAGEMENTFollow the Dependency Inversion Principle.Manage dependencies using an IoC framework.

Page 8: Anatomy Of An Agile .Net Project

OBJECT/RELATIONAL MAPPINGRows in a database are just data. Objects are data (state) + behavior.

Page 9: Anatomy Of An Agile .Net Project

PROCESSDEVELOPMENT

IT’S

SO

FTW

AR

E

CR

AFT

MA

NS

HIP

.

Page 10: Anatomy Of An Agile .Net Project

TEST DRIVEN DESIGNDrive the implementation of important/complex use cases through unit and integration tests.

Page 11: Anatomy Of An Agile .Net Project

PROJECT STRUCTUREFew projects = faster builds.Separate assemblies != loose coupling!

Page 12: Anatomy Of An Agile .Net Project

BRANCH BY FEATURESeparate concerns. Merge continously.

Page 13: Anatomy Of An Agile .Net Project

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

CONTINUOUS INTEGRATIONMerge frequently. Build merged code frequently. Test built code frequently.

Page 15: Anatomy Of An Agile .Net Project

DEMONSTRATIONFixing a bug the agile way.

Page 16: Anatomy Of An Agile .Net Project

THE ENVELOPEPUSHING

LEA

P A

HEA

D.

Page 17: Anatomy Of An Agile .Net Project

DISTRIBUTED SOURCE CONTROLSource control everywhere.

Page 18: Anatomy Of An Agile .Net Project

AUTOTESTINGContinously running tests in the background.

Page 19: Anatomy Of An Agile .Net Project

CONTINOUS DEPLOYMENT“On average we deploy new code fifty times a day.” - Timothy Fitz, IMVU

Page 20: Anatomy Of An Agile .Net Project

PROJECT MONITORINGSmeedee, an open source project monitor.

Page 21: Anatomy Of An Agile .Net Project

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?