31
Designing the Process A Brief Introduction to Agile Programming

Designing the Process · Scrum: Agile for software development Scrum is the most prominent example of agile model in the programming world Scrum describes both the process and the

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Designing the Process · Scrum: Agile for software development Scrum is the most prominent example of agile model in the programming world Scrum describes both the process and the

Designing the Process

A Brief Introduction to Agile Programming

Page 2: Designing the Process · Scrum: Agile for software development Scrum is the most prominent example of agile model in the programming world Scrum describes both the process and the

In the beginning, there was the waterfall ...

Analysis, Design, Implementation, Testing & Evaluation:− Discrete, linear tasks− Each step completed before the next step can

proceed

Page 3: Designing the Process · Scrum: Agile for software development Scrum is the most prominent example of agile model in the programming world Scrum describes both the process and the

Waterfall

Highly structured Not very adaptable

Page 4: Designing the Process · Scrum: Agile for software development Scrum is the most prominent example of agile model in the programming world Scrum describes both the process and the

Agile: a new paradigm

Process model that recognizes the significance of change and responsiveness

Emphasis on adaptability Same basic “steps” are involved (ADITE), but

throw out linearity and discreteness

Page 5: Designing the Process · Scrum: Agile for software development Scrum is the most prominent example of agile model in the programming world Scrum describes both the process and the

Agile view of programming process

Feedback at each stage− Linkage− Collaboration

Page 6: Designing the Process · Scrum: Agile for software development Scrum is the most prominent example of agile model in the programming world Scrum describes both the process and the

Scrum: Agile for software development

Scrum is the most prominent example of agile model in the programming world

Scrum describes both the process and the participants in the process

Page 7: Designing the Process · Scrum: Agile for software development Scrum is the most prominent example of agile model in the programming world Scrum describes both the process and the
Page 8: Designing the Process · Scrum: Agile for software development Scrum is the most prominent example of agile model in the programming world Scrum describes both the process and the

Scrum as process framework

Sprint: basic work cycle− 1-4 weeks in duration (assuming 40+ hour weeks)− Tasks pulled from prioritized list of requirements

(top first)− Working software delivered at end of each sprint− Fixed duration: end at predefined end date, whether

successful or not

Page 9: Designing the Process · Scrum: Agile for software development Scrum is the most prominent example of agile model in the programming world Scrum describes both the process and the

Product backlog: example

Source: onproductmanagement.net

Page 10: Designing the Process · Scrum: Agile for software development Scrum is the most prominent example of agile model in the programming world Scrum describes both the process and the

Product backlog: example

Source: http://www.mountaingoatsoftware.com/blog/a-sample-format-for-a-spreadsheet-based-product-backlog

Page 11: Designing the Process · Scrum: Agile for software development Scrum is the most prominent example of agile model in the programming world Scrum describes both the process and the

Scrum artifacts

Sprint backlog (aka release backlog)− Detailed list of requirements to be met during

current sprint− Includes time estimates (programmer-hours) for

completion of each task No more than 16 hours per task Larger tasks broken down into smaller tasks if estimate

exceeds this limit

Page 12: Designing the Process · Scrum: Agile for software development Scrum is the most prominent example of agile model in the programming world Scrum describes both the process and the

Product backlog vs. Sprint Backlog

Source: www.altexsoft.com

Page 13: Designing the Process · Scrum: Agile for software development Scrum is the most prominent example of agile model in the programming world Scrum describes both the process and the

Scrum artifacts User stories (customer requirements)

− Used in lieu of conventional (long, detailed) requirements docs

− Basic unit of backlog− Generated by customer (user)

Describe what system needs to do for them Not limited to UI Short – 2-3 sentences – non-technical

− Serve purpose similar to use cases Product owner prioritizes these, may tweak them Programming team uses these to create time estimates

for sprint

Page 14: Designing the Process · Scrum: Agile for software development Scrum is the most prominent example of agile model in the programming world Scrum describes both the process and the

User stories

Suggested formats:− As a [role], I want [feature] because [reason]− As a [role], I can [feature]− As a [role], I can [feature] so that [reason]

Examples:− As a student, I want to see a list of classes so that I

can register− As account owner, I can check my balance online − As a user, I want to search for my customers by

their first and last names.

Page 15: Designing the Process · Scrum: Agile for software development Scrum is the most prominent example of agile model in the programming world Scrum describes both the process and the

Forms of user stories*

Cards: like CRC cards, only less (or more) Conversation: discussion surrounding card: how team

interprets what's there Confirmation: tests that verify requirement(s) met

*** Source: http://xp123.com/articles/invest-in-good-stories-and-smart-tasks/

** Source:

http://www.stellman-greene.com/2009/05/03/requirements-101-user-stories-vs-use-cases/

Page 16: Designing the Process · Scrum: Agile for software development Scrum is the most prominent example of agile model in the programming world Scrum describes both the process and the

User stories

Source:http://www.stellman-greene.com/2009/05/03/requirements-101-user-stories-vs-use-cases/

Page 17: Designing the Process · Scrum: Agile for software development Scrum is the most prominent example of agile model in the programming world Scrum describes both the process and the

Product backlog vs. Sprint backlog

Source: agile.dzone.com

Page 18: Designing the Process · Scrum: Agile for software development Scrum is the most prominent example of agile model in the programming world Scrum describes both the process and the

Sprint backlog example

Source: www.mountaingoatsoftware.com/uploads/blog/SprintBacklog.jpg

Page 19: Designing the Process · Scrum: Agile for software development Scrum is the most prominent example of agile model in the programming world Scrum describes both the process and the

Scrum artifacts

Burndown chart− Shows ongoing (cumulative) work done &

remaining in sprint− Updated daily− Guide for team: on-time delivery of working product

Page 20: Designing the Process · Scrum: Agile for software development Scrum is the most prominent example of agile model in the programming world Scrum describes both the process and the

Burndown chart: example

Source: http://upload.wikimedia.org/wikipedia/commons/0/05/SampleBurndownChart.png

Page 21: Designing the Process · Scrum: Agile for software development Scrum is the most prominent example of agile model in the programming world Scrum describes both the process and the

Burndown chart: example

Source: http://agilesoftwaredevelopment.com/files/apostimages/Scrum/simple-sprint-backlog.png

Page 22: Designing the Process · Scrum: Agile for software development Scrum is the most prominent example of agile model in the programming world Scrum describes both the process and the

Kanban board

Not really a Scrum artifact (Scrum & Kanban are really two different Agile methodologies) but often associated with Scrum projects

Visual tool (like burndown chart in that sense) for monitoring project progress

May be used to visualize sprint backlog

Page 23: Designing the Process · Scrum: Agile for software development Scrum is the most prominent example of agile model in the programming world Scrum describes both the process and the

Kanban board examples

Source: http://upload.wikimedia.org/wikipedia/commons/thumb/d/d3/Simple-kanban-board-.jpg/400px-Simple-kanban-board-.jpg

Source: http://www.infoq.com/resource/articles/agile-kanban-boards/en/resources/Fig1_task-board.jpg

Page 24: Designing the Process · Scrum: Agile for software development Scrum is the most prominent example of agile model in the programming world Scrum describes both the process and the

Scrum roles

Product owner: in charge of project backlog; acts as the voice of the customer

Scrum team: develops the product− Cooperative, self-organizing− Cross-functional

Scrum master: facilitates meetings, protects & serves the team

Page 25: Designing the Process · Scrum: Agile for software development Scrum is the most prominent example of agile model in the programming world Scrum describes both the process and the

The process

Start with product backlog Sprint planning meeting

− Product owner & team review high priority items, decide what to implement during this sprint – goal is for team to understand what product owner wants

− Team then focuses on detailed task planning: Time estimates Ordering of tasks to maximize both speed & quality of

production

Page 26: Designing the Process · Scrum: Agile for software development Scrum is the most prominent example of agile model in the programming world Scrum describes both the process and the

Sprint

Basic work cycle of scrum Team works from product backlog Fixed time frame Goal: working product at end of every sprint

− “Product” may be prototype or some aspect of larger system

− Emphasis here is working product – something tangible to show for work

Page 27: Designing the Process · Scrum: Agile for software development Scrum is the most prominent example of agile model in the programming world Scrum describes both the process and the

The process

Daily scrum− Short meeting; team members report

What they did since last meeting What they plan to do before next meeting Any problems getting in the way of progress – scrum

master responsible for helping solve these

Page 28: Designing the Process · Scrum: Agile for software development Scrum is the most prominent example of agile model in the programming world Scrum describes both the process and the

The process

Sprint backlog & burndown chart updated daily Product owner works with team to “groom”

product backlog on a regular basis:− Refining requirement details− Splitting large tasks into smaller ones− Time estimation for new items− Re-estimation of existing items

Page 29: Designing the Process · Scrum: Agile for software development Scrum is the most prominent example of agile model in the programming world Scrum describes both the process and the

The process

Ending the sprint− Duration is preset – sprint is not extended − Sprint review: team & product owner inspect &

adapt whatever team has produced− Sprint retrospective: team review of sprint:

What went well What could be improved Things to try Issues to escalate

Start next sprint cycle

Page 30: Designing the Process · Scrum: Agile for software development Scrum is the most prominent example of agile model in the programming world Scrum describes both the process and the

Problems with Scrum

Mostly, it doesn't work if you don't do it right, e.g.:− Meeting rules not followed− Goals are unclear− Key players not available to answer questions− Product backlog not prioritized well− Not everyone contributes

Page 31: Designing the Process · Scrum: Agile for software development Scrum is the most prominent example of agile model in the programming world Scrum describes both the process and the

Benefits of Scrum

Puts the “agile” in agile development:− Sensitive to changing requirements− Doesn't attempt to understand entire project before

it's started – emphasizes learning along the way Delivers a working product quickly

− Customers (via product owner) set priorities− Products developed according to these priorities