SCRUM Design Pattern

download SCRUM Design Pattern

of 56

Transcript of SCRUM Design Pattern

  • 8/3/2019 SCRUM Design Pattern

    1/56

    SCRUM - Design Pattern 1

    SCRUM A Pattern Language for

    Hyperproductive SoftwareDevelopment

    Design Patterns

    Summer 2002

    Syracuse University

    Srinivasa NeeruduVivekananthan Murugesan

  • 8/3/2019 SCRUM Design Pattern

    2/56

    SCRUM - Design Pattern 2

    Software Development

    Do we have a fixed set of rules for

    Software Development?

    Linear Sequential Model Waterfall Model

    Prototyping Model Spiral Model

    Iterative Model

    CMM [Capability Maturity Model]

  • 8/3/2019 SCRUM Design Pattern

    3/56

    SCRUM - Design Pattern 3

    Waterfall Model

  • 8/3/2019 SCRUM Design Pattern

    4/56

    SCRUM - Design Pattern 4

    Spiral Model

  • 8/3/2019 SCRUM Design Pattern

    5/56

    SCRUM - Design Pattern 5

    SCRUM

  • 8/3/2019 SCRUM Design Pattern

    6/56

    SCRUM - Design Pattern 6

    Comparison

  • 8/3/2019 SCRUM Design Pattern

    7/56

    SCRUM - Design Pattern 7

    Incorrect Assumptions

    Repeatable/Defined Problem:

    There is a step or steps to capturerequirements.

    BUT

    Systems have different applications,different environment, different end users,etc.

  • 8/3/2019 SCRUM Design Pattern

    8/56

    SCRUM - Design Pattern 8

    Incorrect Assumptions(2)

    Repeatable/Defined Solution:

    System Architecture can be fully specified.

    BUT

    In reality, it is evolved partly because of

    missing or changing requirements andpartly because of creative processinvolved.

  • 8/3/2019 SCRUM Design Pattern

    9/56

    SCRUM - Design Pattern 9

    Incorrect Assumptions(3)

    Repeatable/Defined Developers:

    All developers have same capability.

    BUT

    In reality, it varies widely so that a process

    that works for one developer may not work

    for another one.

  • 8/3/2019 SCRUM Design Pattern

    10/56

    SCRUM - Design Pattern 10

    Incorrect Assumptions(4)

    Repeatable/Defined OrganizationalEnvironment:

    Schedule, Client Behavior, Priority (QualityVs Price Vs Manpower) remain constant.

    BUT

    In reality, they are highly subjective andvery hard to define.

  • 8/3/2019 SCRUM Design Pattern

    11/56

    SCRUM - Design Pattern 11

    Solution

    SCRUM

    It offers a collection of empirical techniques

    that assume existence of uncertainties butprovide practical and specific techniques to

    tame them.

    Iterative, Incremental and Adaptive

    Software Development Model

  • 8/3/2019 SCRUM Design Pattern

    12/56

    SCRUM - Design Pattern 12

    How does SCRUM work?

    SCRUM

    MasterSprint

    DemoAfter

    Sprint

    BacklogSCRUMMeetings

  • 8/3/2019 SCRUM Design Pattern

    13/56

    SCRUM - Design Pattern 13

    How does SCRUM work? (2)

    Sprint:

    A period of approximately 30 days in which an

    agreed amount of work will be performed to create

    a deliverable.

    SCRUMs goal is to deliver as much quality

    software as possible within a series (three to

    eight) of Sprints

  • 8/3/2019 SCRUM Design Pattern

    14/56

    SCRUM - Design Pattern 14

    How does SCRUM work? (3)

    Each stage in the Development Cycle

    (Requirements, Analysis, Design,

    Evolution, Delivery) is mapped to aSprint or Series of Sprints.

    Unlike conventional way, there is nopredefined process within a Sprint

  • 8/3/2019 SCRUM Design Pattern

    15/56

    SCRUM - Design Pattern 15

    How does SCRUM work? (4)

    SCRUM Meetings drive the completion ofthe allocated activities

    Each sprint operates on a number of workitems called Backlog

    No more items are externally added into theBacklog within a Sprint, where as derivedwork items can be added.

  • 8/3/2019 SCRUM Design Pattern

    16/56

    SCRUM - Design Pattern 16

    How does SCRUM work? (5)

    SCRUM Meetings are held daily to

    determine the following

    Items completed since the last SCRUMMeeting

    Issues or Blocks that need to be resolved

    [SCRUM Masteris responsible]

    Tasks to be done before the next Meeting

  • 8/3/2019 SCRUM Design Pattern

    17/56

    SCRUM - Design Pattern 17

    How does SCRUM work? (6)

    Demonstration after Sprint is for:

    Show the customer whats going on

    Give the developer a sense ofaccomplishment

    Integrate and test a reasonable portion of

    the software being developed

    Ensure real progress in development

  • 8/3/2019 SCRUM Design Pattern

    18/56

    SCRUM - Design Pattern 18

    SCRUM Patterns

    Sprint

    Backlog

    SCRUM Meeting

  • 8/3/2019 SCRUM Design Pattern

    19/56

    SCRUM - Design Pattern 19

    Sprint - Context

    You are a software developer or a coach

    managing a software development team

    where there is a high percentage of

    discovery, creativity, or testing involved

    You are building or expanding systems,

    which allow partitioning of work, with cleaninterfacing, components, or objects

  • 8/3/2019 SCRUM Design Pattern

    20/56

    SCRUM - Design Pattern 20

    Sprint - Problem

    You want to balance the needs of

    developers to work undisturbed

    management and the customers to see the real

    progress

    AS WELL AS

    control the direction of software development

    progress.

  • 8/3/2019 SCRUM Design Pattern

    21/56

    SCRUM - Design Pattern 21

    Sprint - Forces

    Developers need to work undisturbed andneed support of logistics. Management andusers need to be convinced about real

    progress.

    Often, by the time systems are delivered theyare obsolete and may require major changes.

    The problem is the inputs are collected in thestart of the project but they undergo changesas the working model is used.

  • 8/3/2019 SCRUM Design Pattern

    22/56

    SCRUM - Design Pattern 22

    Sprint Forces (2)

    Because development process involves many

    uncertainties, it is impossible to make a

    complete, detailed specification, plan or

    schedule

    Some problems are even difficult to describe

    without a notion of the solution.Experimentation, feedback and creativity are

    required towards the same.

  • 8/3/2019 SCRUM Design Pattern

    23/56

    SCRUM - Design Pattern 23

    Solution

    Divide the project in Sprints

    A Sprint is a period of approximately 30 Days.

    Each Sprint takes a pre-allocated amount ofwork from the Backlog

    The work assigned is by priority and byapproximation of what can be accomplishedduring the Sprints length

  • 8/3/2019 SCRUM Design Pattern

    24/56

    SCRUM - Design Pattern 24

    Solution (2)

    During the sprint no items are added to theallocated spring Backlog.

    External additions are only added to theglobal Backlog, but blocks resulting from thesprint can be added to the allocated SpringBacklog

    A Sprint ends with a demonstration of addednew functionality

  • 8/3/2019 SCRUM Design Pattern

    25/56

    SCRUM - Design Pattern 25

    Solution (3)

    Sprint results in a visible and usabledeliverable that is shown to the users at thedemonstration.

    An increment can be either intermediate orshippable

    The Goal of a Sprint is to complete as muchquality software as possible and to ensurereal progress.

  • 8/3/2019 SCRUM Design Pattern

    26/56

    SCRUM - Design Pattern 26

    Rationale [Fundamental reasons; the basis]

    Development Process is fast and steady asno items are added to the backlog externally

    The ability to choose a process per Sprint isempowering and enables adaptation tochanging circumstances

    Sprints are short; therefore the problem ofcompleting a Sprint is much simpler than thatof completing a project

  • 8/3/2019 SCRUM Design Pattern

    27/56

    SCRUM - Design Pattern 27

    Rationale (2)

    Developers get feedback frequently

    [after every Sprint] and therefore feel

    their success [and failure] withoutcompromising the whole project

    Project Status is visible since the sprintproduces working code

  • 8/3/2019 SCRUM Design Pattern

    28/56

    SCRUM - Design Pattern 28

    Resulting Context

    High degree ofinvolvement by the participantsthrough Demos and the prioritizing of the Backlog

    With SCRUM we get a large amount ofpost-planningflexibility (for both customer and developer).

    Difficulties in grouping backlog for a Sprint mayindicate that priorities are not clear to management or

    to the customer.

  • 8/3/2019 SCRUM Design Pattern

    29/56

    SCRUM - Design Pattern 29

    Backlog

    Context(from: sprint).

    You are connected to a software project orany other project that is chaotic in nature

    that need information on what to do next.

  • 8/3/2019 SCRUM Design Pattern

    30/56

    SCRUM - Design Pattern 30

    Backlog contd.

    Problem:

    What is the best way to organize thework to be done next and at any stage

    of the project?

  • 8/3/2019 SCRUM Design Pattern

    31/56

    SCRUM - Design Pattern 31

    Backlog contd.

    Forces:

    Project plans captured in pert and Gantt charts

    often try to capture the tasks to be done in

    advance. They often fail in their implementations,as they lack flexibility.

    Not having a repository of tasks in any shape or

    form simply translates into project failure.

  • 8/3/2019 SCRUM Design Pattern

    32/56

    SCRUM - Design Pattern 32

    Backlog contd.

    Solution:

    Use backlog to organize the work of a

    SCRUM team.

    The backlog is a prioritized list.

    Backlog is the work to be performed and

    evolves into product

  • 8/3/2019 SCRUM Design Pattern

    33/56

    SCRUM - Design Pattern 33

    Solution (2)

    Sources of Backlog list:

    Product Marketing.

    Sales.

    Technology.

    Development.

    Customer support.

  • 8/3/2019 SCRUM Design Pattern

    34/56

    SCRUM - Design Pattern 34

    Solution (3)

    The product manager or product marketing

    manager prioritizes work and is

    responsible for meeting the product vision.

    SCRUM teams focus on highest priority

    Backlogs.

    The team decomposes the selected

    Backlog into tasks.

  • 8/3/2019 SCRUM Design Pattern

    35/56

    SCRUM - Design Pattern 35

    Resulting Context

    Project work is identified dynamically

    and prioritized according to:

    The customers needs What the team can do

  • 8/3/2019 SCRUM Design Pattern

    36/56

    SCRUM - Design Pattern 36

    SCRUM Meetings

    Context (From: Backlog).

    You are a software developer or a coachmanaging a software development team

    where there is high percentage ofdiscovery, creativity, or testing involved.

    Activities such as scientific research,innovation, invention, architecture,

    engineering and a myriad of other businesssituations may also exhibit this behavior.

  • 8/3/2019 SCRUM Design Pattern

    37/56

    SCRUM - Design Pattern 37

    Context (2)

    You may be a Knowledge worker, an

    engineer, a writer,a research scientist, or

    an artist, or a coach or manager who is

    overseeing the activities of a team in theseenvironments.

  • 8/3/2019 SCRUM Design Pattern

    38/56

    SCRUM - Design Pattern 38

    Problem

    What is the best way to control an

    empirical and unpredictable process

    such as software development,scientific research, artist projects, or

    innovative designs where its hard to

    define the artifacts to be produced and

    the processes to achieve them?

  • 8/3/2019 SCRUM Design Pattern

    39/56

    SCRUM - Design Pattern 39

    Forces

    Estimation:

    Accurate estimation for activities involving

    discovery, creativity or testing is difficult.

    Estimation is important. One must be able

    to determine what are the future tasks

    within some time horizon and prepareresources in advance.

  • 8/3/2019 SCRUM Design Pattern

    40/56

    SCRUM - Design Pattern 40

    Forces(2)

    These uncertainties come in at least five

    flavors:

    Requirements are not well understood.

    Architectural dependencies are not easy tounderstand and are constantly changing.

    Unforeseen challenges with the technology

    exist.

    Ambiguity in the solutions and related efforts toovercome challenges.

    Bugs in software that are hard to resolve.

  • 8/3/2019 SCRUM Design Pattern

    41/56

    SCRUM - Design Pattern 41

    Planning

    Planning and reprioritizing takes time.

    Involving knowledge workers in the

    time planning meeting also decreasesproductivity.

    No amount of planning in chaotic

    system may reduce uncertainties.

  • 8/3/2019 SCRUM Design Pattern

    42/56

    SCRUM - Design Pattern 42

    Planning (2)

    Detailed plans are huge and hard to

    follow.

    Cost of verifying the correctness of ahuge plan is also a costly exercise.

    No planning can increase uncertainties

    among the team members and lower

    the morale.

  • 8/3/2019 SCRUM Design Pattern

    43/56

    SCRUM - Design Pattern 43

    Tracking

    Too much monitoring wastes time andsuffocates the developers.

    Does not increase the certainty of theindicators because of the chaotic natureof the system.

    Too much data is meaningless.

    No monitoring leads to blocks andpossible idle time between assignments

  • 8/3/2019 SCRUM Design Pattern

    44/56

    SCRUM - Design Pattern 44

    Solution

    SCRUM Meetings(~15 mins) are held

    and three questions are asked by each

    participant:

    Q1. What have you worked on since the

    last SCRUM Meeting?

    The SCRUM Master logs the tasks that have

    been completed and those that are still undone

  • 8/3/2019 SCRUM Design Pattern

    45/56

    SCRUM - Design Pattern 45

    Solution (2)

    Q2. What blocks, if any have you found in

    performing your tasks in the last 24hrs?

    SCRUM Master logs all blocks and later finds a

    way to resolve the blocks.

    Q3. What will you be working on in the next

    24 hours?

    The SCRUM Master helps the team members

    choose the appropriate tasks.

  • 8/3/2019 SCRUM Design Pattern

    46/56

    SCRUM - Design Pattern 46

    SCRUM Meeting

    Typically take place at same time and

    same place. Serve to build a strong

    culture.

    Schedule task for developers and

    everybody else involved in the task.

    Allow knowledge workers to accomplish

    mid-term goals.

  • 8/3/2019 SCRUM Design Pattern

    47/56

    SCRUM - Design Pattern 47

    Rationale

    Its easy to over-or-under-estimate,which leads to either idle developer timeor delays in the completion of an

    assignment. Frequent sampling of the project status

    is good.

    Constant reprioritization of tasks offeran adaptive mechanism for sampling.

  • 8/3/2019 SCRUM Design Pattern

    48/56

    SCRUM - Design Pattern 48

    Rationale (2)

    SCRUM Meetings help in creation of an

    anticipating culture:

    They increase the overall sense of urgency They promote the sharing of knowledge

    They encourage dense communications

    They facilitate honesty among developers

    since everyone has to give a daily status.

  • 8/3/2019 SCRUM Design Pattern

    49/56

    SCRUM - Design Pattern 49

    Rationale (3) (Systems

    Dynamics)

    From the Systems Dynamics point of view,software developed has a schedulingproblem because the nature of programming

    assignments is rather probabilistic.

    Estimates are hard to come by because: Inexperienced developers, managers, and

    architects are involved in making the estimates. There are typically interlocking architectural

    dependencies that are hard to manage.

  • 8/3/2019 SCRUM Design Pattern

    50/56

    SCRUM - Design Pattern 50

    Contd.

    There are unknown or poorly documented

    requirements.

    There are unforeseen technical challenges.

    In that sense SCRUM Meeting acts like

    a thermometer that constantly samples

    the teams temperature.

  • 8/3/2019 SCRUM Design Pattern

    51/56

    SCRUM - Design Pattern 51

    Known Uses

    At Nike Securities in Chicago to run all

    their projects

    At Elementrix Technologies And many similar examples are quoted

    in the book.

  • 8/3/2019 SCRUM Design Pattern

    52/56

    SCRUM - Design Pattern 52

    Resulting Context

    The application of this pattern leads to

    Highly visible projects status

    Highly visible individual productivity Less time wasted because of blocks

    Less time wasted because of waiting for

    someone else.

    Increased team socialization.

  • 8/3/2019 SCRUM Design Pattern

    53/56

    SCRUM - Design Pattern 53

    Conclusion

    SCRUM is a knowledge creating

    process with a high level of information

    sharing during the whole cycle and work

    progress.

    Its application also generates a strong

    culture with well-defined roles and

    relationships, with meaningful andtranscending rituals.

  • 8/3/2019 SCRUM Design Pattern

    54/56

    SCRUM - Design Pattern 54

    Contd.

    The key to SCRUM is:

    Pinning the date of completion forproduction or release.

    Prioritizing functionalities

    Identifying available resources

    Decision about the architecture

  • 8/3/2019 SCRUM Design Pattern

    55/56

    SCRUM - Design Pattern 55

    References

    PLOP4 Book

    http://jeffsutherland.com/oopsla/schwap

    ub.pdf Related to PERT and Gantt

    http://studentweb.tulane.edu/~mtruill/dev-

    pert.html

  • 8/3/2019 SCRUM Design Pattern

    56/56

    Thank You