Agile Software Development By Kshitij Limaye CSC 532
Current Software Development Situation • Systems are regularly delivered late and over budget • Customer hardly works with developers after the requirements phase. • In radically changing market it is not possible to gather customer requirements that are stable and unchanging • Customer is not always sure of what he wants
Problems with Traditional Processes Concept design Product and feature specifications Coding Testing Response Time DESIGN FROZEN START END Problem: When the market/technology advances at a faster pace than you can respond 
Agile Method A method of software development that aims for customer satisfaction through early and continuous delivery of useful software components
Uncertain Environments Stable Environments: Traditional Approach Uncertain Environments: Agile Approach (Iterative) Source 
Key Differences • Agile methods are adaptive rather than predictive • Agile methods are people oriented rather than process oriented.
Agile Process Philosophy • Individuals and interactions over processes and tools. • Working software over comprehensive documentation • Customer collaboration over contract negotiations. • Responding to change over following a plan.
Individuals & Interactions • Face to face meetings lead to faster transfer of ideas & quicker response. • Pair Programming • Individual not a replaceable part of system • Team takes technical decisions
Working Software • Source code is most important document. • Working model makes understanding better. • Simplicity approach in XP. • Maintainers normally go through source code first.
Customer Collaboration Vs Contract Negotiations • Preference to fixed price contracts. • Customer on site. • Customer has finer control over the project. • Different kind of business model needed. • Definition of Success
Responding to change • Responding to change than following laid out plan • In predictable processes, difficulty in mapping new requirement to additional cost. • Iterative approach • Teams with onsite customer produce better code.
Examples of Agile processes • Extreme Programming • Crystal • Adaptive software development • Feature driven development • Dynamic systems development method
Implementing Agile Processes • Job profiles will change, so resistance. • Management is also uncomfortable with agile processes. • agile processes decisions are not experimentation.
Conclusion: When go agile? • Uncertain & volatile requirements. • Responsible & motivated developers • Customers who understand and willing to get involved.
References • Manifesto for Agile software development; http://agilealliance.com • New methodology; Fowler; Martin; http://www.martinfowler.com/articles/newMethodology.html • Agile software development: Evidence from the field. Alan MacCormack http://www.agiledevelopmentconference.com/2003/ files/AlanAgileSoftwareJun03.ppt