agile software development mark duvall @ USC, november 2011
Mar 28, 2015
agile software development
mark duvall @ USC, november 2011
• practicing agile development since 2002• csm x 4, cspo x 2• contracted ken schwaber• taught agile to 100s• agile alliance, acm, ieee• mike cohn disciple • delivered dozens of projects w/agile• been through 100s of sprints
agile bio
references mike cohn, http://www.mountaingoatsoftware.com/ agile alliance, http://www.agilealliance.org/ scrum alliance, http://scrumalliance.org/ crisp blog, http://blog.crisp.se/
a great time to be in software development agile development is a well established practice agile adoption is high many companies practicing agile development many companies are in agile transition
• software anthropology• empowers the team• leverages collaboration• focus on organizing your work• continuously improve• adoption of best practices• creating a cadence
preface
software development• notoriously difficult to deliver
• on-time • on-budget
• quest for determinism • estimation models• formalized processes • organizations to manage process• documentation driven
differences
command & control
document driven
serial in nature
big upfront design
test late
bureaucratic
Heavy, rigid process
team & roles
self managing team
high bandwidth communication
iterative
evolutionary/iterative design
test early
collaboration
Lightweight, tailorable process
team & roles
non-agile development agile development
waterfallsystem
requirements
detailedrequirements
functionalspecification
high level design
detailed design
code
test
delivery
system requirements specification
software requirements specificationmarketing requirements document
functional specification
high level design document
detailed design document
code complete milestone
qa acceptance document
product launch
scrum
design + code + testplandefine review
iterate
user stories functional software
agile manifesto 2001
individuals and interactions over processes and tools working software over comprehensive documentation customer collaboration over contract negotiation responding to change over following a plan
agile tenants build software incrementally deliver value quickly commitment driven self organizing and managing teams continuous improvement high bandwidth communications evolutionary design customer intimacy success is functioning software maintain a sustainable pace
scrum oopsla 1995, schwaber & southerland lightweight process framework ability to incorporate best practices inspection and adaptation - error correction iterate and refactor time-boxes collocated teams quality never sacrificed for dates shippable product quality at each sprint definition of “done”
done code complete all code checked into source code control (TFS) all tests checked into source code control passes coding standards (stylecop) passes peer code review (team review) passes static code analysis (ndepend) builds on build server (tfs) builds with no warnings in pre-build area (shelf set) all unit test & test automation executes in dev/qa/pre-prod environments all unit test pass unit test code coverage is 65% no priority 1 defects no profiling issues (dotTrace) documented accepted by product owner
scrum team pigs (no chickens) team size 7-12 pigs cross functional
sm, po, dev, qa, ia, design self managing collocated
roles product owner
classically the product managermaximizes roi of each sprintmanages the product backlog
scrum masterdevelopment manager or project managerenforces process, insures process adherence impediment removalfacilitates communications
scrum teamcross functional team that builds the productmaintains sprint backlog
user stories a feature description as a <role>, i want <goal> so that <reason> invest
independentnegotiablevaluable to usersestimate-ablesmalltestable
product backlog the new age requirement specification/mrd/prd live repository of all project work
user stories defects
managed by product owner contributed to by anyone prioritized estimated
by scrum team story points
subset moved to sprint backlog; every sprint
scrum basic mechanics
Product Owner Defining user stories Refines user stories Release planning
User Story Estimation Scrum team together estimates each user story (points)
Task Breakdown Scrum team together creates tasks (hrs) for each user story
Sprint Planning Sprint ReviewDaily Scrum Daily Scrum
Daily Scrum Daily meeting Standup Same time, same place 15min time-box All Scrum team members Task movement
Answer 3 questions Accomplished in last 24hrs Working on next 24hrs Impediments
Review Burndown
…
Demo PO demos each completed user story for acceptance
Retrospective Scrum team does a post mortem on the sprint
Product Backlog
Sprint Backlog
2 Time-boxed meetings User Story Estimation Task Breakdown
2 Time-boxed meetings Demo Retrospective
New age MRD/PRD Live repository
flow
sprint planning
first day of the sprintproduct backlog - n hour time-boxed
○ backlog walkthrough
○ estimate and prioritize storiessprint backlog - n hour time-boxed
○ list tasks for implementing stories
○ assign hours and resources
estimation
story pointsrelativistic educated guessimate of effortnot directly correlated to time non-linear numbers like fibonacci sequencet-shirt sizing (xs,x,m,l,xl)use for sprint planning (capacity)
epicstory too large to fit in a sprintbroken down into smaller stories
estimation process product backlog estimation
discuss of each story planning poker - team until backlog empty or time-box expires prioritize – by po
assign stories to sprint backlog based on team’s velocity assume initial velocity as 65%
assign tasks to sprint stories <8 hour tasks *assign owners
adjustments move stories back if velocity is exceeded
planning poker• iterative approach• adapted from delphi• entire scrum team participates• everyone has a deck of story point cards
• user story discussion • everyone selects a card privately• cards are revealed• discuss outliers • re-estimate till convergence or timebox
• http://www.planningpoker.com
sprint backlog repository of work for each sprint
user stories○ broken down into tasks○ task granularity 8-16hrs
managed by scrum team updated daily, in real-time
composition
electronic task board
physical task board
daily scrum daily meeting same place, same time time-boxed 15 minutes standup $1 for being late no one can interrupt the current speaker keep details post daily scrum 3 questions
what did you accomplish in the last 24 hrs? what are you going to work on in the next 24hrs? any impediments?
review burndowns post scrum
daily scrum
burndown chart
sprint review
last day of the sprint demo - n hour time-boxed
○ demonstrate sprint accomplishments○ story acceptance walk through○ log defects for next sprint
retrospective - n hour time-boxed
○ what went right?○ what went wrong?○ what can we do to improve?
best practices • relativistic estimation• evolutionary design• vertical slices• continuous integration• test early, test often• high flow • eliminate waste • fail quickly • shorter sprints• test driven development• pair programming• peer code review• information radiators
scrum anti-patterns
“manager” estimates work developers not doing their own task breakdowns untrackable sprints no customer value in sprint partially complete sprints story or task creep in sprint backlog no definition of “done” working on tasks not in the sprint backlog qa under utilized testable software completed late in the sprint lack of peer accountability or commitment impediments not immediately addressed floating timeboxes
continuous integration
build automation systembuilds are triggered by source code check-insunit tests are executed as part of each buildtests are executed in the context of a profilerstatic code analysiseach build is versionedeach build is deployedtest automation scripts execute
real world agile web development
site development team composition6 developers2 qa engineers1 ia1 designer1 scrum master1 product owner
site development
• established cadence• 1 week sprints
• cascading deliverables• 5 weeks of ia & design• 6 weeks of development• ~390 us, ~4000 tasks• velocity: 69-79%
wireframing & user stories
graphic design/site layout
development
development environment rally for agile lifecycle management
product backlogsprint backlogproject boardsburndowns & metrics
microsoft shopc#, .net framework 4.0asp.net mvc 3.0castle windsor diendeca search enginecruisecontrol .netsubversionndependsnunit, selenium
page template inventory
n page typeshome departmentbrand browsesearch resultsbest sellingspecial, gift, promotioncollectionskucart / accounthelp and other static content
page decomposition
page elementsheaderfooterleft navigationright spinebody
page element decomposition
header (user controls)main imageprimary navigationsecondary navigationsearchminicartaccount/sign inbreadcrumbs
sashimi slices
vertical sliverpresentation tier
○ mvc user controlsbusiness logic/application tier
○ injected via dirules for content acquisition/filtering/sortingpage rules
- seo, microformats, analytics, remarketing data tier
○ content retrieval
release planning
4hr timebox release 1
minimal deliverable feature set release 2
defectsinternational shippingreporting
release 3site enhancements
sprint planning
2hr timebox consume 2-4 page types per sprint address higher risk stories first critical tasks addressed first
sprint review
2hr timebox capture defects add to product backlog retrospective iterate until product backlog is empty
what’s next
it’s all about flowkanban
○ managing wip○ value streams
questions