Agile Software Development Overview
Upcoming SlideShare
Loading in...5
×
 

Agile Software Development Overview

on

  • 1,805 views

Agile Software Development Overview

Agile Software Development Overview

Statistics

Views

Total Views
1,805
Views on SlideShare
1,793
Embed Views
12

Actions

Likes
3
Downloads
94
Comments
0

1 Embed 12

https://jujo00obo2o234ungd3t8qjfcjrs3o6k-a-sites-opensocial.googleusercontent.com 12

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

CC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • A research and reflection of SomeBody:We are living in chaos: eco crisis, tech boom, changes …
  • How to create a software from scratch?
  • Parties:UsersHas problems to be solvedUsually disorganized, chaotic, groupCustomersProvides requirements and validationShould speak with “one voice”Developers Actually builds the stuff Lots of different roles hereBusiness Owner Manages resources and money Often ignored in Development Process…Tech concernsRequirementsDetermine What the Software has to do…Challenge: Satisfy the UsersProduction Actually Build the Software Challenge: Deliver Quality ProductMaintenance Modify Software to satisfy new requirements Challenge: Maintain Quality
  • For reference and printing if needed, not for presenting
  • cross-functional = there is no strict role for individualsCode are collectively developed
  • The importance of planning, not plan documentThe importance of responsibility -> select itemsThe importance of prioritizing -> reduce risksMake things clear
  • Image , point to position
  • Architectural spike():very simple program to explore potential solutions, Most spikes are not good enough to keepMetaphor(an du): common vision of how the program works
  • Courage(kien quyet)
  • What does it mean?

Agile Software Development Overview Agile Software Development Overview Presentation Transcript

  • Session 1
    The cooperative game
    AgileDev Tour
    Duong Trong Tan
    Hanoi, December 2010
    1
    TurboBoost your development performance
  • Objectives
    Software Engineering trends
    What is agile development?
    The agile manifesto
    The diversity of adoptions
    Scrum
    XP
    TDD
    Crystal
    Kanban
    Agile mashup
    The cooperative game
    2
    TurboBoost your development performance
  • “Agile projects succeed when the team gets the spirit of agility.” – Ron Jeffries
    TurboBoost your development performance
    3
    AgileDev Basics
    Image courtesy to Pollyanna Pixton
  • TurboBoost your development performance
    4
    Continuous improvement
    Hyper productive
    Kaizen
    Agile
    Small teams
    Incremental
    Lean
    Changes
    Earned Value Based
    Iterative
    Rapid
    Adaptive
  • About Trends
    TurboBoost your development performance
    5
    Agile techniques were in use since the beginning.
    Agile techniques did not show competitive advantage in the 1970s / 1980s,
    but did during the 1990s and do now.
    Trial runs of current agile methodologies, 1993 - 1995
    RAD Crystal
    XP Crystal
    Scrum Kanban
    In chaos, there are special kinds of controlled pattern => agile methods.
  • TurboBoost your development performance
    6
    So, what are software projects?
  • Partiesand Concerns
    Users?
    Customers?
    BO?
    Developers?
    7
    TurboBoost your development performance
  • TurboBoost your development performance
    8
    What is agile development?
  • The Agile Manifesto
    We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:
    Individuals and interactions over processes and tools
    Working software over comprehensive documentation
    Customer collaboration over contract negotiation
    Responding to change over following a plan
    9
    TurboBoost your development performance
    That is, while there is value in the items on the right, we value the items on the left more.
    AgileAlliance.org
  • The Twelve Principles of Agile Software
    TurboBoost your development performance
    10
    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 of months, with a preference to the shorter timescale.
    Business people and developers must work together daily throughout the project.
    Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
    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.
    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.
    AgileAlliance.org
  • AgileDev
    Plan-driven
    TurboBoost your development performance
    Low criticality
    Senior developers
    Objectives change very often
    Small number of developers
    Culture that thrives on chaos
    High criticality
    Junior developers
    Low objectives change
    Large number of developers
    Culture that demands order
    11
    Home ground comparison
  • The diversity of methods
    TurboBoost your development performance
    12
  • A hyper-productive development model
    TurboBoost your development performance
    13
    Scrum
  • Scrum
    TurboBoost your development performance
    14
    One of the most successful agile methods because of its hyper-productivity
    It is management – oriented
    Somewhat CMM Level 3 equivalence
    Widely used in various types of projects
    Google AdWorlds project
    3M
    Universities RnD projects
    In VN: LogiGear, KPM, FSOFT, FAT, etc.
  • TurboBoost your development performance
    15
    Image courtesy to ScrumAlliance
  • Scrum Roles
    ScrumMaster
    ProductOwner
    Scrum Team
    Other parties (all kinds of chicken)
    16
    TurboBoost your development performance
  • Scrum Team
    Team is cross-functional and consists of 5-9 people
    There are no set project roles within the team
    Team defines tasks and assignments
    Team is self-organizing and self-managing
    Maintains the Sprint Backlog
    Conducts the Sprint Review
    17
    TurboBoost your development performance
  • ScrumMaster
    Holds daily 15 minute team meeting (Daily Scrum)
    Assures every people related to the project follow the rules
    Removes obstacles
    Shields the team from external interference: “Keep Chickens away from Pigs”
    Maintains the Sprint Burndown Chart
    Conducts Sprint Retrospective at the end of a Sprint
    Is a facilitator, not a manager
    18
    TurboBoost your development performance
  • Product Owner (PO)
    Accountable for product success
    Defines all product features
    Responsible for prioritizing product features
    Maintains the Product Backlog
    Insures team working on highest valued features
    19
    TurboBoost your development performance
  • The Product Backlog
    List of all desired product features
    List can contain bugs, and non-functional items
    Product Owner responsible for prioritizing
    Items can be added by anyone at anytime
    Each item should have a business value assigned
    Maintained by the Product Owner
    20
    TurboBoost your development performance
  • A Sprint
    Time box: 2-4 weeks (why?)
    An iteration for building a piece of increment (potentially shippable) of the whole system
    It’s the working time, not planning or asking what to do.
    The team manages itself during a Sprint
    The team commits to Product Backlog during the Sprint planning meeting
    The Sprint Backlog is updated during a Sprint
    21
    TurboBoost your development performance
  • The Sprint Backlog
    Each item is prioritized and estimated
    22
    TurboBoost your development performance
  • 23
    The Scrum Skeleton
    2.Daily Scrum Meeting
    • What have you done?
    • What will you do?
    • What is impeding you?
    3. A Sprint (2-4 weeks)
    4. Sprint Review Meeting
    1. Sprint Planning Meeting
    5. Sprint Retrospective Meeting
    TurboBoost your development performance
  • Sprint Planning Meeting
    Time box: 8 hours
    Product backlog prepared prior to meeting
    First Half
    Team selects items committing to complete
    Additional discussion of Product Backlog occurs during actual Sprint
    Second Half
    Occurs after first half done – PO available for questions
    Team solely responsible for deciding how to build
    Tasks created / assigned – Sprint Backlog produced
    24
    TurboBoost your development performance
  • Scrum Daily Meeting
    Held every day during a Sprint
    Timebox:15 minutes
    Team members report to each other not Scrum Master
    Asks 3 questions during meeting
    “What have you done since last daily scrum?”
    “What will you do before the next daily scrum?”
    “What obstacles are impeding your work?”
    Opportunity for team members to synchronize their work
    It helps removing burdens between members
    25
    TurboBoost your development performance
  • Sprint Review
    Time box: 4 hours
    Team presents “done” code to PO and stakeholders
    Functionality not “done” is not shown
    Feedback generated – Product Backlog maybe reprioritized
    ScrumMaster sets next Sprint Review
    26
    TurboBoost your development performance
  • Sprint Retrospective
    Time box: 3 hours
    Participants
    ScrumMaster
    Scrum Team.
    Product Owner is optional
    Questions
    What went well and what can be improved?
    ScurmMaster helps the team in discovery – not provide answers
    27
    TurboBoost your development performance
  • The Sprint Backlog
    A kind o f To-do list for a Sprint
    Created by the Scrum Team (can be originated by one member, responsibility belongs to another)
    Product Owner has defined as highest priority
    Used for synchronizing works between team members
    28
    TurboBoost your development performance
  • The Burn-down Chart
    Burndown Chart shows the Sprint trend,
    the performancevelocity of the team through Sprints
    29
    TurboBoost your development performance
  • Potentially Shippable Product
    Selected items are fully implemented, tested and ready for use
    Small but complete, “it will be bigger”
    Scrum Team needs to define what does “done” mean, in what aspects and contexts.
    “DONE” may be executable, “passed all tests”, “approved by senior engineers”, “reviewed by peers” or just nothing to do more with the item.
    30
    TurboBoost your development performance
  • Distributed Scrum
    Isolated Scrums - Teams are isolated across geographies.
    Distributed Scrum of Scrums –Scrum teams are isolated across geographies and integrated by a Scrum of
    Totally Integrated Scrums – Scrum teams are cross-functional with members distributed across geographies.
    Sutherland et al.
    31
    TurboBoost your development performance
  • Top Distributed Scrum Issues
    Difficult leveraging available resources, best practices are often deemed proprietary, are time consuming and difficult to maintain
    Difficulty synchronizing work between distributed sites
    Lack of effective communication mechanisms
    Conflicting behaviors, processes, and technologies
    Incompatible data formats, schemas, and standards
    Ensuring electronic transmission confidentiality and privacy
    Sutherland et al.
    32
    TurboBoost your development performance
  • From hacking code to a real process
    TurboBoost your development performance
    33
    eXtreme Programming
  • eXtreme Programming Project
    TurboBoost your development performance
    34
  • XP Values
    TurboBoost your development performance
    35
    Simplicity
    encourages starting with the simplest solution
    Communication
    favors simple designs, common metaphors, collaboration of users and programmers, frequent verbal communication, and feedback
    Feedback
    From the system, customer and from the team, to avoid optimism
    Courage
    design and code for today and not for tomorrow
    Respect
    respect for others as well as self-respect
  • TurboBoost your development performance
    36
  • XP Roles
    The Customer
    Sets project goals and makes business decisions
    The Developer
    Turn customer stories into working code
    The Tracker
    Keeps track of any metrics used by team
    The Coach
    Guides and mentors the team
    37
    TurboBoost your development performance
  • TurboBoost your development performance
    38
    Test Driven Development
    This is not a complete dev strategy. It is ‘embedded’ into methods.
    Tests created before coding
    This strategy focused on quality
    Derived version: Behaviors Driven Development
  • “A human-Powered methodology for small team”
    TurboBoost your development performance
    39
    Crystal Clear
  • Crystal Clear Practices
    Frequent Delivery
    Reflective Improvement
    Osmotic Communication
    Personal Safety
    Focus
    Easy Access to Expert Users
    Automated Tests
    Configuration Management
    Frequent Integration
    40
    TurboBoost your development performance
  • Crystal Clear
    “The team can reduce intermediate work products as it produces running code more frequently, as it uses richer communication channels between people.”
    - Alistair Cockburn
    41
    TurboBoost your development performance
  • Crystal Clear
    Every product is slightly different and evolves over time, so the methodology, the set of conventions the team adopts, must be tuned and evolve.
    - Alistair Cockburn
    42
    TurboBoost your development performance
  • Crystal Clear Roles
    Sponsor
    Allocates money for the project
    Expert User
    Lead Designer
    Lead Technical person, mentors less experienced team members
    Designer-Programmer
    Each person designs and programs
    43
    TurboBoost your development performance
  • Kanban
    TurboBoost your development performance
    44
    Kanban literally means “visual card,” “signboard,” or “billboard.”
    Toyota originally used Kanban cards to limit the amount of inventory tied up in “Work In Progress” on a manufacturing floor

    Step 1
    Done
    Step 2
    Step n
    In
    Process
    In
    Process
    In
    Process
    Queue
    Queue
    Queue

    Work Items
  • TurboBoost your development performance
    45
    Why use Kanban in Software Development?
  • Time-boxed iterative development has challenges
    46
    • Short time-boxes give more frequent opportunity to measure progress and inspect software but force development items to be smaller
    • Smaller development items are often too small to be valuable and difficult to identify
    • Quality of requirements suffers as analysts rush to prepare for upcoming cycles
    • Quality of current development suffers when busy analysts are unable to inspect software or answer questions during development
    • Quality often suffers as testers race to complete work late in the development time-box
    TurboBoost your development performance
  • The time-boxed iteration drama
    TurboBoost your development performance
    47
  • TurboBoost your development performance
    48
    Using a Kanban approach in software drops time-boxed iterations in favor of focusing on continuous flow.
  • Kanban queue
    TurboBoost your development performance
    49

    Done
    Step 2
    Step n
    Work Items
    Step 1
    In
    Process
    In
    Process
    In
    Process
    Queue
    Queue
    Queue

  • Kanban queues (cont’d)
    TurboBoost your development performance
    50
    Large enough to keep the team busy
    Small enough to avoid premature prioritisation
    Ideally should be FIFO
  • Kanban - Work In Progress
    TurboBoost your development performance
    51
    Reduce multi-tasking
    Maximize throughput
    Enhances teamwork
  • The multitasking issues
    TurboBoost your development performance
    52
    Facts:
    20% time lost to context switching per ‘task
    Sequential yields results sooner
    A
    A
    A
    B
    B
    B
    C
    C
    C
    A
    B
    C
    Chart courtesy to Yahoo!
  • Throughput
    TurboBoost your development performance
    53
    Organizational overhead goes up as work in progress increases
    Total Cycle Time = Number of Things in Process
    Average Completion Rate
    to improve cycle time
    Improve Average Completion Rate
    Reduce Number of Things in Process
  • Enhances Teamwork
    TurboBoost your development performance
    54
    • Team focus on goals that add value not individual tasks
  • Kanban Example 1
    TurboBoost your development performance
    55
    Image courtesy to Jeff Patton
  • Kanban Example 2
    TurboBoost your development performance
    56
  • Kanban Example 3
    TurboBoost your development performance
    57
  • Agile Mashup
    TurboBoost your development performance
    58
    It is so-called Yet Another Agile Development Method (YAAM)
    It follows the Agile Manifesto and keeps the sprit of agility
    It utilizes practices from several methods, for example:
    Use sprint backlog and user stories with TDD and standup meeting with a kanban liked dashboard.
    Use stand up meeting in daily Scrum
    Use Burn down chart in Kanban
  • TurboBoost your development performance
    59
    Agile Software Development, it is a cooperative game.
  • Face-to-face communication is better
    Paper
    2 people at
    whiteboard
    2 people
    on phone
    Communication Effectiveness
    Videotape
    2 people
    on email
    Richness of communication channel
    Slide courtesy to Cockburn. A.
    60
    TurboBoost your development performance
  • References and Further Readings
    TurboBoost your development performance
    61
    Agile Software Development: The Cooperative Game, 2ndEdn. By Alistair Cockburn.
    Scrum Guide 2010 by Ken Schwaber and Jeff Sutherland
    Agile Project Management with Scrum by Ken Schwaber 
    Agile Java Crafting Code with Test-Driven Development By Jeff Langr
    Test-Driven Development in Microsoft .NET by James W. Newkirk and Alexei A. Vorontsov 
    Extreme Programming Explained by Kent Beck
    XP introduction,
    http://www.extremeprogramming.org/
    http://xprogramming.com/
    http://www.agilealliance.org/
    Kanban Oversimplified
    http://www.agileproductdesign.com/blog/2009/kanban_over_simplified.html