Software Development The Agile Way


Published on

Topic: Software Development- The Agile Way
By: Shahzad Sarwar
To: Development Team
Date: 25th Dec 2009

Published in: Technology
  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

Software Development The Agile Way

  1. 1. Software Development- The Agile Way It is all about Common sense. Audience: Development Team
  2. 2. What is Agile Group of software development methodologies based on iterative development, where requirements and solutions evolve through collaboration between self-organizing cross-functional teams.
  3. 3. History <ul><li>Evolved in the mid-1990s as part of a reaction against &quot;heavyweight&quot; methods. </li></ul><ul><li>Heavily regulated, regimented, micro-managed use of the waterfall model of development. </li></ul><ul><li>Initially, agile methods were called &quot;lightweight methods.&quot; </li></ul><ul><li>Common Methods: Scrum (1995), Crystal Clear, Extreme Programming (1996), Adaptive Software Development, Feature Driven Development, and Dynamic Systems Development Method (DSDM) (1995) </li></ul>
  4. 4. History <ul><li>In 2001, 17 prominent figures, at the Snowbird ski resort in Utah, coined the terms &quot;Agile Software Development&quot; and &quot;agile methods&quot;, and they created the Agile Manifesto. </li></ul><ul><li>Later, The Agile Alliance , a non-profit organization that promotes agile development. </li></ul><ul><li>In 2005, Alistair Cockburn and Jim Highsmith gathered another group of people—management experts, this time—and wrote an addendum, known as the PM Declaration of Interdependence . </li></ul>
  5. 5. The Values behind the Agile Manifesto <ul><li>Individuals and interactions over processes and tools </li></ul><ul><li>Working software over comprehensive documentation </li></ul><ul><li>Customer collaboration over contract negotiation </li></ul><ul><li>Responding to change over following a plan </li></ul>
  6. 6. The principles behind the Agile Manifesto <ul><li>Customer satisfaction by rapid, continuous delivery of useful software </li></ul><ul><li>Working software is delivered frequently (weeks rather than months) </li></ul><ul><li>Working software is the principal measure of progress </li></ul><ul><li>Even late changes in requirements are welcomed </li></ul><ul><li>Close, daily cooperation between business people and developers </li></ul><ul><li>Face-to-face conversation is the best form of communication (co-location) </li></ul><ul><li>Projects are built around motivated individuals, who should be trusted </li></ul><ul><li>Continuous attention to technical excellence and good design </li></ul><ul><li>Simplicity </li></ul><ul><li>Self-organizing teams </li></ul><ul><li>Regular adaptation to changing circumstances </li></ul>
  7. 7. Problems with Suitability of agile methods <ul><li>Large scale development efforts (>20 developers), though scaling strategies and evidence to the contrary have been described. </li></ul><ul><li>Distributed development efforts (non-co-located teams). Strategies have been described in Bridging the Distance and Using an Agile Software Process with Offshore Development </li></ul><ul><li>Command-and-control company cultures. </li></ul><ul><li>Forcing an agile process on a development team </li></ul>
  8. 8. Agile methods / practices <ul><li>Agile methods </li></ul><ul><ul><li>Agile Modeling </li></ul></ul><ul><ul><li>Agile Unified Process (AUP) </li></ul></ul><ul><ul><li>Agile Data Method </li></ul></ul><ul><ul><li>DSDM </li></ul></ul><ul><ul><li>Essential Unified Process (EssUP) </li></ul></ul><ul><ul><li>Extreme programming (XP) </li></ul></ul><ul><ul><li>Feature Driven Development (FDD) </li></ul></ul><ul><ul><li>Getting Real </li></ul></ul><ul><ul><li>Open Unified Process (OpenUP) </li></ul></ul><ul><ul><li>Scrum </li></ul></ul><ul><ul><li>Lean software development </li></ul></ul><ul><li>Agile practices </li></ul><ul><ul><li>Test Driven Development (TDD) </li></ul></ul><ul><ul><li>Behavior Driven Development (BDD) </li></ul></ul><ul><ul><li>Continuous Integration </li></ul></ul><ul><ul><li>Pair Programming </li></ul></ul><ul><ul><li>Planning poker </li></ul></ul><ul><ul><li>RITE Method </li></ul></ul>
  9. 9. Agile Modeling (AM) <ul><li>Core Practices: </li></ul><ul><ul><li>Active Stakeholder Participation </li></ul></ul><ul><ul><li>including direct users, their management, senior management, operations staff, and support (help desk) staff. </li></ul></ul><ul><ul><li>Model With Others . </li></ul></ul><ul><ul><li>Apply The Right Artifact(s) . </li></ul></ul><ul><ul><li>UML diagram/ER diagram </li></ul></ul><ul><ul><li>Iterate To Another Artifact . </li></ul></ul><ul><ul><li>Prove It With Code . </li></ul></ul><ul><ul><li>Use The Simplest Tools . </li></ul></ul><ul><ul><li>Model In Small Increments . </li></ul></ul><ul><ul><li>Single Source Information . </li></ul></ul>
  10. 10. Agile Modeling (AM) <ul><ul><li>Collective Ownership . </li></ul></ul><ul><ul><li>Create Several Models in Parallel . </li></ul></ul><ul><ul><li>Create Simple Content . </li></ul></ul><ul><ul><li>Depict Models Simply . </li></ul></ul><ul><ul><li>Display Models Publicly . </li></ul></ul><ul><li>Supplementary Practices: </li></ul><ul><ul><li>Apply Modeling Standards . </li></ul></ul><ul><ul><li>Apply Patterns Gently . </li></ul></ul><ul><ul><li>Discard Temporary Models . </li></ul></ul><ul><ul><li>Formalize Contract Models . </li></ul></ul><ul><ul><li>Update Only When It Hurts . </li></ul></ul><ul><li>References: </li></ul>
  11. 11. Scrum <ul><li>Iterative incremental framework for managing complex work (such as new product development) commonly used with agile software development </li></ul>
  12. 12. Key Terms <ul><li>Product owner </li></ul><ul><li>Project’s key stakeholder and represents users, customers and others in the process. </li></ul><ul><li>Scrum Master </li></ul><ul><li>Responsible for making sure the team is as productive as possible. </li></ul><ul><li>Product backlog </li></ul><ul><li>Prioritized features list containing every desired feature or change to the product </li></ul><ul><li>Sprint: Time-boxed period of software development focused on a given list of goals (but with variable scope). </li></ul>
  13. 14. Meetings <ul><li>Daily Scrum /“the daily standup” </li></ul><ul><li>During the meeting, each team member answers three questions: </li></ul><ul><ul><li>What have you done since yesterday? </li></ul></ul><ul><ul><li>What are you planning to do today? </li></ul></ul><ul><ul><li>Do you have any problems preventing you from accomplishing your goal? </li></ul></ul><ul><li>Scrum of scrums </li></ul><ul><li>Each day normally after the daily scrum. </li></ul><ul><ul><li>These meetings allow clusters of teams to discuss their work, focusing especially on areas of overlap and integration. </li></ul></ul><ul><ul><li>A designated person from each team attends. </li></ul></ul><ul><li>The agenda will be the same as the Daily Scrum, plus the following four questions: </li></ul><ul><ul><li>What has your team done since we last met? </li></ul></ul><ul><ul><li>What will your team do before we meet again? </li></ul></ul><ul><ul><li>Is anything slowing your team down or getting in their way? </li></ul></ul><ul><ul><li>Are you about to put something in another team’s way? </li></ul></ul>
  14. 15. <ul><li>Sprint Review Meeting </li></ul><ul><ul><li>Review the work that was completed and not completed </li></ul></ul><ul><ul><li>Present the completed work to the stakeholders (a.k.a. “the demo”) </li></ul></ul><ul><ul><li>Incomplete work cannot be demonstrated </li></ul></ul><ul><ul><li>Four hour time limit </li></ul></ul><ul><li>Sprint Retrospective </li></ul><ul><ul><li>All team members reflect on the past sprint </li></ul></ul><ul><ul><li>Make continuous process improvements </li></ul></ul><ul><ul><li>Two main questions are asked in the sprint retrospective: What went well during the sprint? What could be improved in the next sprint? </li></ul></ul><ul><ul><li>Three hour time limit </li></ul></ul>
  15. 16. Burn down <ul><li>Graphical representation of work left to do versus time. </li></ul><ul><li>The outstanding work (or backlog) is often on the vertical axis, with time along the horizontal. </li></ul>
  16. 17. Burn down Types <ul><li>sprint burndown chart </li></ul><ul><li>Release Burndown Chart </li></ul><ul><li>Alternative Release Burndown Chart </li></ul>
  17. 18. General practices of Scrum <ul><li>The following are some general practices of Scrum: </li></ul><ul><li>Customers become a part of the development team (i.e., the customer must be genuinely interested in the output). </li></ul><ul><li>Scrum has frequent intermediate deliveries with working functionality, like all other forms of agile software processes. This enables the customer to get working software earlier and enables the project to change its requirements according to changing needs. </li></ul><ul><li>Frequent risk and mitigation plans are developed by the development team itself—risk mitigation, monitoring and management (risk analysis) occurs at every stage and with commitment. </li></ul><ul><li>Transparency in planning and module development—let everyone know who is accountable for what and by when. </li></ul><ul><li>Frequent stakeholder meetings to monitor progress—balanced dashboard updates (delivery, customer, employee, process, stakeholders) </li></ul><ul><li>There should be an advance warning mechanism, i.e., visibility to potential slippage or deviation ahead of time. </li></ul><ul><li>No problems are swept under the carpet. No one is penalized for recognizing or describing any unforeseen problem. </li></ul><ul><li>Workplaces and working hours must be energized—“Working more hours” does not necessarily mean “producing more output.” </li></ul>
  18. 19. Scrum Methodology
  19. 20. An other view( SCRUM Methodology )
  20. 21. SCRUM Phases <ul><li>SCRUM has the following groups of phases: </li></ul><ul><li>1.Pregame </li></ul><ul><li>2.Game </li></ul><ul><li>3.Postgame </li></ul><ul><li>Pregame </li></ul><ul><ul><li>Planning : Definition of a new release based on currently known backlog, along with an estimate of its schedule and cost. If a new system is being developed, this phase consists of both conceptualization and analysis. If an existing system is being enhanced, this phase consists of limited analysis. </li></ul></ul><ul><ul><li>Architecture : Design how the backlog items will be implemented. This phase includes system architecture modification and high level design. </li></ul></ul>
  21. 22. SCRUM Phases <ul><li>Game </li></ul><ul><ul><li>Development Sprints : Development of new release functionality, with constant respect to the variables of time, requirements, quality, cost, and competition. Interaction with these variables defines the end of this phase. There are multiple, iterative development sprints, or cycles, that are used to evolve the system. </li></ul></ul><ul><li>Postgame </li></ul><ul><ul><li>Closure : Preparation for release, including final documentation, pre-release staged </li></ul></ul><ul><ul><li>testing, and release. </li></ul></ul>
  22. 23. Planning <ul><li>Development of a comprehensive backlog list. </li></ul><ul><li>Definition of the delivery date and functionality of one or more releases. </li></ul><ul><li>Selection of the release most appropriate for immediate development. </li></ul><ul><li>Mapping of product packets (objects) for backlog items in the selected release. </li></ul><ul><li>Definition of project team(s) for the building of the new release. </li></ul><ul><li>Assessment of risk and appropriate risk controls. </li></ul><ul><li>Review and possible adjustment of backlog items and packets. </li></ul><ul><li>Validation or reselection of development tools and infrastructure. </li></ul><ul><li>Estimation of release cost, including development, collateral material, marketing, training, and rollout. </li></ul><ul><li>Verification of management approval and funding. </li></ul>
  23. 24. Architecture/High Level Design <ul><li>Review assigned backlog items. </li></ul><ul><li>Identify changes necessary to implement backlog items. </li></ul><ul><li>Perform domain analysis to the extent required to build, enhance, or update the domain models to reflect the new system context and requirements. </li></ul><ul><li>Refine the system architecture to support the new context and requirements. </li></ul><ul><li>Identify any problems or issues in developing or implementing the changes </li></ul><ul><li>Design review meeting, each team presenting approach and changes to implement each backlog item. Reassign changes as required. </li></ul>
  24. 25. Development (Sprint) <ul><li>The Development phase is an iterative cycle of development work. The management determines that time, competition, quality, or functionality are met, iterations are completed and the closure phase occurs. This approach is also known as Concurrent Engineering. </li></ul><ul><li>Development consists of the following macro processes : </li></ul><ul><ul><li>Meeting with teams to review release plans. </li></ul></ul><ul><ul><li>Distribution, review and adjustment of the standards with which the product will conform. </li></ul></ul><ul><ul><li>Iterative Sprints, until the product is deemed ready for distribution. </li></ul></ul>
  25. 26. Development (Sprint) <ul><li>Each Sprint consists of one or more teams performing the following: </li></ul><ul><li>Develop: Defining changes needed for the implementation of backlog requirements into packets, opening the packets, performing domain analysis, designing, developing, implementing, testing, and documenting the changes. Development consists of the micro process of discovery, invention, and implementation. </li></ul><ul><li>Wrap: Closing the packets, creating a executable version of changes and how they implement backlog requirements. </li></ul><ul><li>Review: All teams meeting to present work and review progress, raising and resolving issues and problems, adding new backlog items. Risk is reviewed and appropriate responses defined. </li></ul><ul><li>Adjust: Consolidating the information gathered from the review meeting into affected packets, including different look and feel and new properties. </li></ul>
  26. 27. Development (Sprint) <ul><li>Each Sprint is followed by a review, whose characteristics are: </li></ul><ul><li>The whole team and product management are present and participate. </li></ul><ul><li>The review can include customers, sales, marketing and others. </li></ul><ul><li>Review covers functional, executable systems that encompass the objects assigned to that team and include the changes made to implement the backlog items. </li></ul><ul><li>The way backlog items are implemented by changes may be changed based on the review. </li></ul><ul><li>New backlog items may be introduced and assigned to teams as part of the review, changing the content and direction of deliverables. </li></ul><ul><li>The time of the next review is determined based on progress and complexity. The Sprints usually have a duration of 1 to 4 weeks. </li></ul>
  27. 28. Closure <ul><li>When the management team feels that the variables of time, competition, requirements, cost, and quality concur for a new release to occur, they declare the release “closed” and enter this phase. This phase prepares the developed product for general release.Integration, system test, user documentation, training material preparation, and marketing material preparation are among closure tasks. </li></ul>
  28. 29. Comparison of methods
  29. 30. Key Terms <ul><li>Velocity: </li></ul><ul><ul><li>The amount of work that you can do in each iteration </li></ul></ul><ul><ul><li>How much product backlog effort a team can handle in one sprint. </li></ul></ul><ul><li>Impediment </li></ul><ul><ul><li>Anything that prevents a team member from performing work as efficiently as possible. </li></ul></ul>
  30. 31. Estimation Using Scrum <ul><li>Involve everybody you think would be part of the project. </li></ul><ul><li>The first step is to break your requirements into user stories. </li></ul><ul><li>User stories is a piece of functionality which has a functional flow and can be delivered. </li></ul><ul><li>User stories are simple, clear, brief descriptions of functionality that will be valuable to either a user or purchaser of a product </li></ul><ul><li>User stories: help deferring details till later They talk problems not solutions They fit nicely as your Product Backlog items </li></ul>
  31. 32. Scrum Planning <ul><li>The two levels of planning </li></ul><ul><ul><li>Strategic level / Story level / product backlog </li></ul></ul><ul><ul><li>Tactical level / Task level / spring backlog </li></ul></ul>
  32. 35. Estimation method
  33. 36. Example
  34. 37. Support in MS visual studio 2008 <ul><li> </li></ul>
  35. 38. Support in MS visual studio 2010 <ul><li>A special template is provided to follow Scrum </li></ul>
  36. 39. Drawback of Agile <ul><li>No process is guaranteed to work straight out of box. </li></ul>
  37. 40. References <ul><li> </li></ul><ul><li> </li></ul><ul><li> </li></ul><ul><li> </li></ul><ul><li> </li></ul><ul><li> </li></ul><ul><li> </li></ul><ul><li> </li></ul><ul><li> </li></ul>
  38. 41. Further Discussion <ul><li>A soft copy will be available at: </li></ul><ul><li> </li></ul><ul><li>For Future discussion, join </li></ul><ul><li> </li></ul>