Agile Software Development_v1 3

Embed Size (px)

Citation preview

  • 7/29/2019 Agile Software Development_v1 3

    1/29

  • 7/29/2019 Agile Software Development_v1 3

    2/29

    Presented by

    Sachin Jain

  • 7/29/2019 Agile Software Development_v1 3

    3/29

    Topics Introduction

    Terminology

    Terms Glossary Why Agile ?

    Agile Software Development

    Values of Agile Principles behind Manifesto

    Myths of Agile

    Agile Methods Conclusion

    References

  • 7/29/2019 Agile Software Development_v1 3

    4/29

    What Is Agile Agile - readiness for motion, nimbleness, activity, dexterity in

    motion

    Agility - The ability to both create and respond to change in order toprofit in a turbulent business environment

    Chaordic

    Exhibiting properties of both chaos and order

    The blend of chaos and order inherent in the external environment and in

    people themselves, argues against the prevailing wisdom about predictabilityand planning

    Things get done because people adapt, not because they slavishly followprocesses

  • 7/29/2019 Agile Software Development_v1 3

    5/29

    Why we need Agile ? Requirements Change

    Needs Change

    Priorities Change

    Schedule Change

    Technology Change

    Fashion Change

    How to deal with Change ?

  • 7/29/2019 Agile Software Development_v1 3

    6/29

    Agile Software Development Agile software development is a conceptual framework

    for software engineering that promotes development

    iterations throughout the life-cycle of the project.

    Software developed during one unit of time is referred to as

    an iteration, which may last from one to four weeks.

    Agile methods also emphasize working software as the

    primary measure of progress

  • 7/29/2019 Agile Software Development_v1 3

    7/29

    Agile Software Development: Intro Characteristics of Agile Software Development

    -- Light Weighted methodology

    -- Small to medium sized teams

    -- vague and/or changing requirements

    -- vague and/or changing techniques-- Simple design

    -- Minimal system into production

  • 7/29/2019 Agile Software Development_v1 3

    8/29

  • 7/29/2019 Agile Software Development_v1 3

    9/29

    Terms Glossary Impediments

    Anything that prevents a team member from performing work as efficiently as possible is an

    impediment. Each team member has an opportunity to announce impediments during the daily Scrum

    meeting.

    Product Owner

    Product owner is a a person who represents the business or user community and is responsible for

    working with the user group to determine what features will be in the product release.

    Story

    A story is a particular business need assigned to the software development team.

    Scrum

    Scrum is an iterative and incremental agile software development framework for managing software

    projects and product or application development. Its focus is on "a flexible, holistic product

    development strategy where a development team works as a unit to reach a common goal" as opposed

    to a "traditional, sequential approach

    ScrumMaster Scrum is facilitated by a ScrumMaster, who is accountable for removing impediments to the ability of

    the team to deliver the sprint goal/deliverables.

    Sprint

    A sprint is the basic unit of development in Scrum. The sprint is a "timeboxed" effort, i.e. it is restricted

    to a specific duration. The duration is fixed in advance for each sprint and is normally between one

    week and one month.

  • 7/29/2019 Agile Software Development_v1 3

    10/29

    Terms Glossary Daily Scrum Meeting

    A fifteen-minute daily meeting for each team member to answer three questions:

    "What have I done since the last Scrum meeting? (i.e. yesterday)"

    "What will I do before the next Scrum meeting? (i.e. today)"

    "What prevents me from performing my work as efficiently as possible?

    Release

    A release is a deployable software package that is culmination of several iterations of development.

    Product Backlog

    Prioritization of features of products with descriptions of functionality desired. Iterative Development:

    Iterative development is a way of breaking down the software development of a large application into

    smaller chunks.

    Product Owner:

    Product owner is a scrum development role for a person who represents the business or usercommunity and is responsible for working with the user group to determine what features will be in

    the product release.

  • 7/29/2019 Agile Software Development_v1 3

    11/29

    Values Agile Software Development

    Individuals and interactions over processes and tools

    Working software over comprehensive documentation

    Customer collaboration over contract negotiation

    Responding to change over following a plan

  • 7/29/2019 Agile Software Development_v1 3

    12/29

    Principles behind the Agile

    Manifesto Our highest priority is to satisfy the customer through early and

    continuous delivery of valuable software.

    Welcome changing requirements, even late in development. Agile processes

    harness change for the customer's competitive advantage.

    Deliver working software frequently, from a couple of weeks to a couple ofmonths, with a preference to the shorter timescale.

    Business people and developers must work together daily throughout the

    project.

  • 7/29/2019 Agile Software Development_v1 3

    13/29

    Principles behind the Agile

    Manifesto Build projects around motivated individuals.

    The most efficient and effective method of conveying information to and

    within a development team is face-to-face conversation.

    Working software is the primary measure of progress.

    Agile processes promote sustainable development.

    The sponsors, developers, and users should be able to maintain a constant

    pace indefinitely.

  • 7/29/2019 Agile Software Development_v1 3

    14/29

    Principles behind the Agile

    Manifesto Continuous attention to technical excellence and good design enhances

    agility.

    Simplicity--the art of maximizing the amount of work not done--is essential.

    The best architectures, requirements, and designs emerge from self-

    organizing teams.

    At regular intervals, the team reflects on how to become more effective,

    then tunes and adjusts its behavior accordingly.

  • 7/29/2019 Agile Software Development_v1 3

    15/29

    Agile Myths no design

    no testing

    no documentation

    no idea of progress

    poor quality

    no plan

    auditors wont allow it

  • 7/29/2019 Agile Software Development_v1 3

    16/29

    Human Factors Competence

    Common focus

    Collaboration

    Decision-making ability

    Fuzzy problem-solving ability

    Mutual trust and respect

    Self-organization

  • 7/29/2019 Agile Software Development_v1 3

    17/29

    Agile Methods Extreme Programming (XP)

    SCRUM

    Agile Modeling

    Agile Unified Process (AUP)

    Crystal Clear and Crystal Methods

    Dynamic Systems Development Method (DSDM)

    Feature Driven Development (FDD)

    GSD

    Kanban (development)

    Lean software development

    Velocity tracking

    Tailored

  • 7/29/2019 Agile Software Development_v1 3

    18/29

    Extreme Programming A system of practices that a community of software

    developers is evolving to address the problems of quickly

    delivering quality software, and then evolving it to meetchanging business needs.

  • 7/29/2019 Agile Software Development_v1 3

    19/29

    Agile Unified Process AUP is a simplified version of RUP (Defined by IBM)

    Phases of AUP

    Inception

    Elaboration

    Construction

    Transition

  • 7/29/2019 Agile Software Development_v1 3

    20/29

    Scrum Delivering the highest business value in the shortest time.

    Rapidly and repeatedly inspect actual working software (every two weeks

    to one month).

    The business sets the priorities. Our teams self-manage to determine the

    best way to deliver the highest priority features.

  • 7/29/2019 Agile Software Development_v1 3

    21/29

    Process Comparison

  • 7/29/2019 Agile Software Development_v1 3

    22/29

    Agile in Offshore Dev. - Challenges Customers have limited budgets

    Customers do not understand agile development

    Customers do not engage as much as some of agiledevelopment frameworks demand

    Strict timelines and launch dates

    Teams not open to changes

    Agile is seen as unorganized process

  • 7/29/2019 Agile Software Development_v1 3

    23/29

    Agile in Offshore Dev. - SolutionSOLUTION TAILORED AGILE METHODOLOGY

    Agile development is a concept and not a methodology

    XP, Scrum, AUP are examples of methodologies CMMi and other Engineering disciplines do not suggest a

    method. They provide guidelines for agile

    Basic planning, documentation and prototyping can upfront The purpose is to increase collaboration, deliver better quality,

    perform incremental development and become adaptive to

    feedback and features. Any tailored methodology with such

    characteristics is agile software development.

  • 7/29/2019 Agile Software Development_v1 3

    24/29

    Agile in Offshore Dev. - Example Sprint

    Capture Initial Requirements

    Document Functional Requirements

    Prepare a Prototype

    Fix Budgets

    Prepare Project Plan

    Incremental Development Divide Development in Sprints of 1 3 Weeks

    Bugs and QA part of Sprint

    Deploy with each Sprint

    Take customer feedback within 2 working days Incorporate feedback for next sprint

    Allow changes in sprint plans based on customer priorities, show stopper bugs

    and unexpected issues

  • 7/29/2019 Agile Software Development_v1 3

    25/29

    Agile in Offshore Dev. - Implementation Educate customer

    Educate teams and developers

    Tailor the methodology to suit environment Monitor effectiveness

    Use tools

    Do not give up when challenges arise

  • 7/29/2019 Agile Software Development_v1 3

    26/29

    Conclusion Agility is about flexibility and leanness.

    Promotes feedback based development.

    Agility != Lack of Structure.

    Agile development is a concept and can be implemented

    through different frameworks.

    Change of process control from Top-Down to Bottom-

    Up

  • 7/29/2019 Agile Software Development_v1 3

    27/29

    Conclusion a high degree of flexibility

    promises a high probability of success

    an anticipating culture

    increases the sense of urgency

    promotes the sharing of knowledge encourages dense communications

    facilitates honesty among developers

  • 7/29/2019 Agile Software Development_v1 3

    28/29

    References [1]. Abrahamsson P, Salo O and Ronkainen J. Agile

    software development methods (Review and analysis).

    [2]. Scott W Ambler. Agile model driven development. [3]. Cohen D, Lindvall M, Costa P. Agile software

    development.

    [4]. http://en.wikipedia.org/wiki/Agile_Modeling. [5] http://en.wikipedia.org/wiki/Scrum_28development29.

  • 7/29/2019 Agile Software Development_v1 3

    29/29

    Questions ?