References</li></li></ul><li>What is Agile development?<br />Agile development is a relatively new way of approaching the software development lifecycle<br />It is an alternative to documentation-driven, heavyweight software development processes<br />Agile stresses iterative development over the linear waterfall methodology<br />Introduction to Agile<br />3<br />
“We are uncovering better ways of developingsoftware by doing it and helping others do it.Through this work we have come to value:<br />Individuals and interactions over processes and toolsWorking softwareover comprehensive documentationCustomer collaborationover contract negotiationResponding to changeover following a plan<br /> That is, while there is value in the items onthe right, we value the items on the left more.”<br />Manifesto for Agile Software Development (2001)<br />4<br />
1) Our highest priority is to satisfy the customerthrough early and continuous deliveryof valuable software. <br /> 2) Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage. <br /> 3) Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale. <br />4) Business people and developers must work together daily throughout the project.<br />Twelve Principles of Agile Software<br />5<br />
5) Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done. <br />6) The most efficient and effective method of conveying information to and within a development team is face-to-face conversation. <br />7) Working software is the primary measure of progress. <br />8) Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely. <br />Twelve Principles of Agile Software<br />6<br />
Twelve Principles of Agile Software<br />9) Continuous attention to technical excellence and good design enhances agility.<br /> 10) Simplicity--the art of maximizing the amount of work not done--is essential.<br />11) The best architectures, requirements, and designs emerge from self-organizing teams. <br />12) At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.<br />7<br />
Why Transition to Agile?<br />8<br />Agile development is not a “silver bullet” that solves all development problems. If waterfall methodologies work well for an organization, it should consider sticking with them. However, there are many advantages to agile development:<br /><ul><li>Accelerate Time to Market – Deliver product features in weeks instead of months or longer.
Enhance Ability to Manage Changing Priorities – Business owners set priorities for each release.
Increase Productivity – Collaboration is improved between business owners and developers through frequent communication.
Manage Outsourced Agile Projects – Many external vendors have made the move to Agile or are claiming to. Managing them is difficult without competency in Agile.</li></li></ul><li>Types of Agile Processes<br />9<br /><ul><li>Scrum - An iterative, incremental methodology for project management. Scrum is a process skeleton that contains sets of practices and predefined roles such as Product Owner and Scrum Master.
Extreme Programming (XP) - Advocates frequent "releases" in short development cycles (timeboxing), which is intended to improve productivity and introduce checkpoints where new customer requirements can be adopted. Other elements include programming in pairs or doing extensive code review, unit testing of all code.</li></li></ul><li>Scrum - History<br />10<br /><ul><li>The word “Scrum” comes from a Rugby term for a huddle. In Scrum practice, the development team meets in a daily huddle to set priorities and raise issues.
Scrum was invented by Jeff Sutherland and Ken Schwaber in 1995, and has been adopted by leading companies such as Microsoft, Fidelity, and GE.</li></li></ul><li>Scrum Process Overview<br />11<br /><ul><li>Product requirements are collected in a backlog.
A subset of those requirements is developed into a release called a Sprint that is shipped every two to four weeks.
A daily meeting is used to keep the whole process on track.</li></li></ul><li>Scrum Artifacts<br />12<br />Product Backlog - is a prioritized list of everything that might be needed in the product. <br />Sprint Backlog - is a list of tasks to turn the Product Backlog for one Sprint into an increment of potentially shippable product. A burndown is a measure of remaining backlog over time. <br />Release Burndown - measures remaining Product Backlog across the time of a release plan. <br />Sprint Burndown - measures remaining Sprint Backlog items across the time of a Sprint. <br />
Scrum Roles<br />13<br />Product Owner – A representative from the business who owns the requirements for the product and sets priorities for the development team. The product owner dictates the contents of each sprint and represents the interests of business stakeholders.<br />Scrum Master – Replacing the traditional role of the project manager, the Scrum Master is the coach of the development team. Primary responsibility is to manage the scrum process and remove impediments to success. <br />Team - Teams of developers turn Product Backlog into increments of potentially shippable functionality every Sprint. Teams are also self-organizing. The optimal size for a Team is seven people, plus or minus two. The team should include QA, BA, and even architects.<br />
Scrum – Pigs and Chickens<br />14<br /><ul><li>Scrum Team members are called “pigs.” The Product Owner is the “pig” of the Product Backlog. The Team is the “pig” of the Sprint work. The Scrum Master is the “pig” of the Scrum process.
Everyone else is a “chicken.” Chickens cannot tell “pigs” how to do their work. Chickens and pigs come from the story: </li></li></ul><li>Scrum - Timeboxes<br />15<br />Release Planning Meeting - The purpose of release planning is to establish a plan and goals that the Scrum Teams and the rest of the organizations can understand and communicate. Release planning answers the questions, “How can we turn the vision into a winning product in best possible way? <br />Sprint - A Sprint is an iteration. Sprints are time-boxed. A timebox is a fixed unit of development capacity. Cost and time are fixed for an iteration. During the Sprint, the Scrum Master ensures that no changes are made that would affect the Sprint Goal. <br />Sprint Planning Meeting - The Sprint Planning meeting is when the iteration is planned. It is time-boxed to eight hours for a one month Sprint. <br />
Scrum - Timeboxes<br />16<br />Sprint Review - At the end of the Sprint, a Sprint Review meeting is held. During the Sprint Review, the Scrum Team and stakeholders collaborate about what was just done. <br />Sprint Retrospective - After the Sprint Review and prior to the next Sprint Planning meeting, the Scrum Team has a Sprint Retrospective meeting. At this meeting, the Scrum Master encourages the Scrum Team to revise, within the Scrum process framework and practices, its development process to make it more effective and enjoyable for the next Sprint. <br />
Scrum - Timeboxes<br />17<br />Daily Scrum - Each Team meets daily for a 15-minute inspect and adapt meeting called the Daily Scrum. The Daily Scrum is at the same time and same place throughout the Sprints. During the meeting, each Team member explains: <br />1. What he or she has accomplished since the last meeting; <br />2. What he or she is going to do before the next meeting; and <br />3. What obstacles are in his or her way. <br />
Scrum - Burndown<br />18<br />A burndown is a measure of remaining backlog over time. <br />Burndown charts can be used to project development activity into the future and estimate delivery dates.<br />
Scrum - Velocity<br />19<br />Velocity is a measure of productivity for a development team. It is the sum of the estimates of delivered features per iteration.<br />The initial velocity of a new team is unknown. Team velocity will typically stabilize between 3 and 6 iterations<br />
Traditional functional requirements documents are replaced by user stories in most Agile development practices.<br />A user story is one or more sentences in the business language of the end user that captures what the user wants to achieve.<br />Typical format: "As a <role>, I want <goal/desire> so that <benefit>" <br />Ex: As a mobile application tester, I want to test my test cases and report results to my management so that I can look good. <br />What About Requirements?<br />20<br />
User stories are small enough to fit on a post-it note, which are typically used for requirements management in sprint planning meetings.<br />What About Requirements?<br />21<br />
Acceptance test criteria are written along with the user stories. This brings test cases into the picture early in the development process.<br />QA plays an active role with the development team. They are integrated with the Scrum to ensure that quality is built in from the start.<br />Due to the frequent Agile releases, testing should be automated as much as possible to reduce the workload on QA.<br />What About QA?<br />22<br />
Agile development stresses face-to-face communication and close collaboration among developers.<br />The offshore development model is not a natural fit for Agile development, but it can be achieved with effort.<br />Distributed scrums require the coordination of two or more Scrum Masters for daily meetings.<br />What About Offshore Development?<br />23<br />
Agile can be adopted across the board <br /> in a “big bang” manner or selectively <br /> across projects.<br />Implementing Agile / Scrum in a pilot<br /> project isolates the risk associated with <br /> doing something new.<br />Transitioning from a traditional waterfall <br /> structure to agile does not happen <br /> overnight. The total transformation can take over a year.<br />To be successful, investments need to be made in tools, best practices, and training.<br />Adopting Agile / Scrum<br />24<br />
It is easy to misunderstand Agile methods. Many organizations implement short waterfall cycles and think they are agile.<br />Agile / Scrum requires heavy interaction from the product owner. If the business isn’t committed, it won’t work.<br />Agile also makes the development process more transparent to the business. This can pose a risk if the business isn’t committed to the inevitable learning curve.<br />Agile challenges the notion that a project end date can be determined when it starts. Teams need to establish velocity before target dates can be committed. You don’t know what your team is capable of until you are at least a few releases in. Then delivery dates can start to be estimated.<br />Risks and Concerns<br />25<br />