PROCESSI DI PRODUZIONE E GESTIONE DEL SOFTWARE Improving Software Productivity with Agile Methodologies Ing. Paola Turci Status of SE in the New Millennium To date Current tendency to make software functionalities and business cases coincide - stimulated by the Internet era and reinforced by the dot com economy Leads to linking software construction and business dynamics more closely than ever In industry there is a need for swiftly-developed, complex software projects that are both research-like and mission-critical Software development must no longer be thought of as oriented toward a product BUT it is an ongoing process which continually delivers value (continuous evolution) Software crisis Hardware costs were decreasing while software costs were increasing. 2 1
Standish Group In the 1994, published a landmark white paper Each year, reports on success, failure and challenge rates. Its 2000 report Chaos in the new millennium Only 28% of software projects succeeded Outright failures 23% Challenged projects 49% 3 CIO Magazine, July 2001 Almost ¾ of all software development in the Internet era suffered from one or more of the following: Total failure Cost overruns Rollout with fewer features or functions than promised Nike's glitch with i2's inventory software, which prompted Nike CEO Phil Knight to wail, "This is what we get for our $400 million? Sobey, a Canadian grocery chain that in February suddenly and publicly canned a SAP project $50 million into the trash bin CIO Magazine The secret to software success 4 2
from: Rapid Application Development Steve McConnell Use of Modern Programming Practises (percentage of total system) Percentage Low Medium High of Nominal (0-25%) (26-75%) (76-100%) Productivity +200 +100 0 (average) -100 5 Remarks The use of any specific best practice is necessary but not sufficient for achieving maximum development speed Doing few things right doesn t guarantee rapid development avoid making any big mistakes 6 3
Document Oriented (instead of functional oriented) design up-front Undermined Motivations - Maslow Unrealistic Expectations overly optimistic schedules lack effort estimation "The Mytichal Man-Month" Brooks Weak Personnel / Turn Over semantic gap Adding People to Late Project Uncontrolled Problem Employees Unsatisfactory Working Conditions PEOPLE PROCESS Shortchanged Upstream Activities Code-like-hell Programming Insufficient Plannig jumping into coding tests at the end of the project planning to catch it later abandonment of planning under pressure Lack of Stakeholder Buy-In Insufficient Management Controls insufficient risk management Contractor Failure Why Projects Fail Sylver-Bullet Syndrome Overestimated Savings from New Tools or Methods Switching Tools in the Middle of a Project TECHNOLOGY PRODUCT Requirements Creeping increase complexity Developer Gold-Plating Requirements Gold-Plating Research-Oriented Development 7 PEOPLE 8 4
PROCESS 9 Unrealistic Expectations overly optimistic schedules lack effort estimation 10 5
Shortchanged Upstream Activities jumping into coding tests at the end of the project 11 PROCESS 12 6
Insufficient Planning planning to catch it later abandonment of planning under pressure 13 Insufficient Management Controls insufficient risk management 14 7
PROCESS 15 PRODUCT 16 8
TECHNOLOGY 17 Building a product the right way still sounds like a laudable goal, but what really matters today is building it fast. We have asked, What shall we add to our process to deal with this new situation? No answer to that question is going to be right because the question itself is wrong. What the mobility imperative requires is that we subtract from the process: We need to get light! Tom DeMarco 18 9
From Nothing, to Monumental, to Agile Most software development is a chaotic activity, often characterized by the phrase code and fix (works pretty well as the system is small) Heavy Methodologies; disciplined process with the aim of making software development more predictable and more efficient New group of methodologies have appeared in the last few years: Agile Methodologies 19 Agile Alliance Manifesto for Agile Software Development, a statement of the common values and principles of agile processes Agile methods are adaptive rather than predictive Agile methods are people-oriented rather than process-oriented 20 10
The Agile Manifesto We are uncovering better ways of developing software by doing it helping others to 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 That is, while we value the items on the right, we value the items on the left more. 21 The Agile Manifesto (cont (cont d) We follow the following principles: Our highest priority is to satisfy the customer through early and continuous delivery of valuable software Deliver working software frequently, from a couple of weeks to a couple of months, with preference for the shorter timescale. Welcome changing requirements, even late in development. Agile processes harness change for the customer s competitive advantage. 22 11
The Agile Manifesto (cont Business people and developers work together daily throughout the project. (cont d) 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-toface conversation. 23 The Agile Manifesto (cont (cont d) 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 24 12
The Agile Manifesto (cont (cont d) 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 25 13