21
Den velsmurte udviklingsmaskine 12. juni 2012 Casper Skern Wilstrup BestBrains

Den Velsmurte udviklingsmaskine

Embed Size (px)

Citation preview

Den velsmurte udviklingsmaskine

12. juni 2012

Casper Skern WilstrupBestBrains

2

Hvor har vi vores erfaringer fra

Agenda

• Velkommen og speed dating

• Overblik over maskinen

• Proces og kultur

• Source Control

• Test

Pause

• Automatiseret build og test

• Automatiseret deployment

• 18:30 - Tak for i dag

Ingredienser vi skal bruge

• En agil proces● Kanban, Scrum, ...● Stories and Tasks

• Source control● Subversion, Mercurial, Perforce, Git, Team Server, ...

• Automated build● Team City, Hudson, CruiseControl.NET, TFS, ...

• Automated test run● Team City, Hudson, xUnit, MSTest, Selenium, ...

• Automated deployment● Hudson, Team City, Hjemmelavet, ...● Roll back capability● A/B servers

Proces og kultur

Bla bla blaSadfa s

Story

Bla bla blaSadfa s

Story

2011 2012

Oktober November December Januar Februar Marts

Bla bla blaSadfa s

Story

Bla bla blaSadfa s

Story

Bla bla blaSadfa s

Story

Bla bla blaSadfa s

Story

Bla bla blaSadfa s

Story

Bla bla blaSadfa s

Story

Bla bla blaSadfa s

Story

Bla bla blaSadfa s

Story

Bla bla blaSadfa s

Story

Nu

Theme…. ..

..

Theme…. ..

..

Theme…. ..

..

Projektplanlægning

• Backlog, Roadmap, ...

Aktuelle opgaver

Bla bla blaSadfa s

StoryBla bla blaSadfa s

StoryBla bla blaSadfa s

Story

Bla bla blaSadfa s

Story

Bla bla blaSadfa s

Story

Bla bla blaSadfa s

Story

AasdasdSdssss s Sss

AasdasdSdssss s Sss

AasdasdSdssss s Sss

AasdasdSdssss s Sss

AasdasdSdssss s Sss

AasdasdSdssss s Sss

AasdasdSdssss s Sss

AasdasdSdssss s Sss

AasdasdSdssss s Sss

AasdasdSdssss s Sss

AasdasdSdssss s Sss

AasdasdSdssss s Sss

AasdasdSdssss s Sss

AasdasdSdssss s Sss

AasdasdSdssss s Sss

AasdasdSdssss s Sss Aasdasd

Sdssss s Sss

AasdasdSdssss s Sss

Bla bla blaSadfa s

StoryBla bla blaSadfa s

Story

Bla bla blaSadfa s

Story

AasdasdSdssss s

AasdasdSdssss s

AasdasdSdssss s

AasdasdSdssss s

PlannedStories

ReadyStories+TasksWL: 3

In progressTasksWL: 6

ReviewTasksWL: 3

DoneTasks

Q/AStoriesWL: 3

DeployStoriesWL: 3

DoneStories

Bla bla blaSadfa s

Story

Bla bla blaSadfa s

Story

Bla bla blaSadfa s

Story

Bla bla blaSadfa s

Story

AasdasdSdssss s Sss

AasdasdSdssss s Sss

AasdasdSdssss s Sss

AasdasdSdssss s Sss

AasdasdSdssss s Sss

AasdasdSdssss s Sss

AasdasdSdssss s Sss

AasdasdSdssss s Sss

AasdasdSdssss s Sss

AasdasdSdssss s Sss

AasdasdSdssss s Sss

AasdasdSdssss s Sss

AasdasdSdssss s Sss

AasdasdSdssss s Sss

AasdasdSdssss s Sss

AasdasdSdssss s Sss Aasdasd

Sdssss s Sss

AasdasdSdssss s Sss

Bla bla blaSadfa s

StoryBla bla blaSadfa s

Story

Bla bla blaSadfa s

Story

Bla bla blaSadfa s

Story

Bla bla blaSadfa s

Story

Bla bla blaSadfa s

StoryAasdasdSdssss s

AasdasdSdssss s

AasdasdSdssss s

AasdasdSdssss s

Bla bla blaSadfa s

Story

• Scrum, Kanban, ...

Stories and Tasks: Et eksempel

Story

As a Calendize user I would like to be able to see previously rejected invitations.

Link to enable/disable rejected in UI

API support for rejected invitations

Update Invitation list when toggling rejected

Ready In progress

Test

✓ Timed saved on manual testing✓ Old bugs do not re-appear✓ New bugs discovered early✓ Enables refactoring✓ Improves design

✗ Manual testing✗ »Expensive« bug fixes✗ Reluctance to change smelly code✗ Unnecessary complexity

withautomated

testing

withoutautomated

testing

first time withautomated testing

Velocity

Time

Automated testing – investment profile

Onde cirkler

No test

More bugsLess time

No test

Less refactoringLess time

More complexity

More test

Fewer bugsMore time

Unit tests are about writing tests and using them to reduce complexity

En god cirkel

Stories and Tasks: Et eksempel

Story

As a Calendize user I would like to be able to see previously rejected invitations.

Link to enable/disable rejected in UI

API support for rejected invitations

Update Invitation list when toggling rejected

Ready In progress Done

Stories and Tasks: Et eksempel

Story

As a Calendize user I would like to be able to see previously rejected invitations.

Link to enable/disable rejected in UI

API support for rejected invitations

Update Invitation list when toggling rejected

Ready In progress Done

Demonstration

Continous Integration

• CruiseControl, Hudson, TeamCity● Henter kildekoden fra Subversion● Bygger den● Kører alle tests● Sender resultatet direkte til mit IDE

Continous Integration - Demonstrated

Continuous Deployment

• Til test eller produktion?

• Automatisk efter hvert succesfuldt build

• Database migrations up/down

• Backup og restore af database

• A/B servere

• Automatisk overvågning og rollback

Continuous DeploymentDemonstrated

Diskussion og tak for i dag