1. Agile Software Methods (fact or fiction) Matt Ganis, IBM/Pace University [email_address] http://webpage.pace.edu/mganis presented at TCF 2010 (http://www.tcf-nj.org/) presentation available at: http://www.slideshare.net/ganis/agile-methods-fact-or-fiction (Template courtesy of: www.presentationmagazine.com )
2.
3.
4. “ Internet Time” “ The Conventional wisdom about competition in the age of the Internet is that the business world has become incredibly fast and unpredictable, and we need to throw out the old rules of the game….. For companies competing in the new information economy, the Internet is forcing managers and employees to experiment, invent, plan, and change their ideas constantly while they try to build complex new products and technologies ” Competing on Internet Time: Lessons from Netscape and it’s battle with Microsoft - Michael Cusumano and David Yoffie
5. Definition of Agile 1 Agile is an iterative and incremental (evolutionary) approach to software development which is performed in a highly collaborative manner with " just enough" ceremony that produces high quality software which meets the changing needs of its stakeholders. 1 http://www.agilemodeling.com/essays/agileSoftwareDevelopment.htm
12. Key Agile Terms The stakeholder that is responsible (i.e., has money) and “owns” the requirement Customer Software developed during one unit of time is referred to as an iteration, which may last from one to four weeks. Each iteration is an entire software project: including planning, requirements analysis, design, coding, testing, and documentation. Stories are implemented within iterations Iteration Velocity is a method for measuring the rate at which teams consistently deliver business value in a software system (at what rate can they deliver stories) Velocity A project conducted under an Agile Method is broken up into a set of very small deliverables called stories. Stories Definition Term
13. Iterative Development Flow Stories Velocity Unfinished Work New Function Bug Fixes New Velocity Refactoring Retrospective Iteration Planning Development Latest Version Release Plan Bugs Customer Interaction Iteration Plan Time (two week Iterations)
19. Less Waste ! 64% of the features in a product aren’t really useful!!! Customers often don't know exactly what they want at the beginning of a project.
20.
21.
22.
23. Cash flow starts earlier, profits are higher Opportunity costs are high in s ingle big-bang releases. Agile projects are earlier to market with faster product evolution.
24. Quality Surveys looking at the quality of code produced by teams that practice Agile methods shows a rate of quality (based on the number of reported defects in the deployed code)
31. Summary Agile is a user-centric development process that focuses on delivering systems that meet dynamic business requirements Agile is designed to not only cope but welcome changing requirements . It is efficient because it builds quality into it’s processes. The customer gives up some certainty about scope and cost. In return, they get quality, value for money and visible progress . All parties benefit from the open collaboration and transparency fostered by Agile processes
Things are moving too fast. To stay competitive we need to think differently and do our jobs differently.
This is the definition of Agile that I like best. I spend quite a bit of time on this slide emphasizing these points: Iterative and incremental – when we build software, we don’t have a long, detailed plan in front of us. We build it piece-by-piece, breaking down the development cycles into small chunks of time called iterations Highly collaborative – This means that our programmers sit in the same room, the customer (or stakeholder) works side-by-side with the developers, answering questions, providing comments and trying the code as it’s developed Just enough ceremony – in effect this means, we’re going to produce just the artifacts we need to move forward within the short iteration, and nothing more. This flies in the face of IPD that requires large amounts of information/documentation/plans to move from one phase to the next High Quality – Make no mistake, this is not a “hacking” method. This is about producing VERY high quality software – as part of the methodology code should be tested continuously Changing needs – Requirements change, it’s a fact of life, so we deal with it and move forward. There is no major ceremony (Change Request or approval process)
There are many reasons to too for alternatives to our heavy, plan-driven methods of development
XP isn’t rocket science. It takes 12 well known practices and implements them. If you can imagine that there is a degree to which you would implement these, and picture that the degree to which you implement them are on knobs or dials, XP’s approach is to turn the knobs ALL THE WAY up (take them to their extreme). For example, it’s always helpful to have a customer talk to the development team about how certain requirements are to be executed, so obviously frequent emails/conference calls, etc make sense. XP takes this communication to an extreme and suggests that the customer sit WITH the developers (in the same room) and become an active member of the team We’ll discuss these practices in a little more detail…
Just some important terms as we go through this presentation
The agile process starts with some set of requirements (or stories). The development team sets its velocity (or an estimate of how much work they believe they can get done in this iteration). The customer chooses the most important stories to have implemented (understanding open issues/bug from previous iterations) that do not exceed the development team’s stated velocity. Work progresses through the iteration with the customer staying in constant contact with the development team to ensure what gets delivered is what the customer expected. At the end of the iteration, the next release of the project is delivered which will include new features/functions and/or bug fixes. At the end of the iteration (or perhaps several iterations) the team (customer included) get together to look back at how they have been operating and make changes (hopefully for the better) to increase their efficiency.