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 Testing Coding STARTEND DESIGN FROZEN Problem: When the market/technology advances at a faster pace than you can respond [3] Response Time
Agile Method A method of software development that aims for customer satisfaction through early and continuous delivery of useful software components[1]
Uncertain Environments Stable Environments: Traditional Approach Uncertain Environments: Agile Approach (Iterative ) Source [3]
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; New methodology; Fowler; Martin; Agile software development: Evidence from the field. Alan MacCormack files/AlanAgileSoftwareJun03.ppt
Q & A