Agile Development Processes “Make the Customer Successful” CSC 3380 Lecture 04
Source CrossTalk issue on Agile Software Development, vol. 15, n. 10 http://www.agilealliance.org/home http://agiledevelopmentconference.com http://www.alistair.cockburn.us/crystal http://www.xbreed.net
Nature of the Agile Development Process Deliver customer value Process tailored to the problem; not static, possibly not even well-defined Work in a turbulent, uncertain, changing environment; NOT PLAN-DRIVEN Take competitive advantage of change Use in exploratory development Expects volatile requirements; rework is less costly than unnecessary up-front work Clean, simple code is easy to modify
Some Agile models/methodologies Extreme Programming Scrum Rapid Application Development Dynamic Systems Development Methodology Adaptive Software Development Crystal Methodologies
Characteristics of Agile Processes Frequent re-planning Rapid releases Self-organizing teams Simple Design Continuous Test Constant collaboration High communication bandwidth/interaction Minimal methodology Individuals over processes Working software over big documents Customer collaboration over contract negotiation Flexibility over plans
Observations Process repeatability is unattainable Managers can’t demand certainty Technical excellence is more valuable than process Instead of plan-design-build, speculate-collaborate-learn Detailed specs may hinder collaboration We are moving from armor to mobility Can be quite productive (43 lines per hour)
Implementation Suggestions Focus on results (features) Use time-boxing with variable functionality for control Utilize individual strengths and skills Convince top management Consider risk and decide accordingly; but remember long projects are more risky Prototypes can replace documents Choose between flexibility and information
Management Suggestions Look for the sweet spot Choose the process to fit the need Foster communication, but document when necessary Use concurrent development Only bottlenecks demand efficiency Be a methodology minimalist Customers won’t be nervous if software is delivered frequently
Problems for Agile Development Can disguise hacking – “We don’t document anything” Need competent, motivated workers Work best for small projects and teams No architecture Tacit rather than explicit knowledge Not trustworthy for life-critical systems
More Problems for Agile Development Experienced management is vital Requirements creep (although a small time-box will deliver the product before requirements have a chance to creep) Public acquisition rules don’t work with flexible requirements