Define Agile software development:
Agile methods break tasks into small increments with minimal planning, and do not directly involve long-term planning. Iterations are short time frames ("timeboxes") that typically last from one to four weeks.
Each iteration involves a team working through a full software development cycle including planning, requirements analysis, design, coding, unit testing, and acceptance testing when a working product is demonstrated to stakeholders.
This helps minimize overall risk, and lets the project adapt to changes quickly. Stakeholders produce documentation as required. An iteration may not add enough functionality to warrant a market release, but the goal is to have an available release (with minimal bugs) at the end of each iteration.Multiple iterations may be required to release a product or new features.
Team size is typically small (5-9 people)
Comparison with other methods:
Agile methods have much in common with the "Rapid Application Development" techniques from the 1980/90s as espoused by James Martin and others.
Contrasted with other iterative development methods:
Most agile methods share other iterative and incremental development methods' emphasis on building releasable software in short time periods. Agile development differs from other development models: in this model time periods are measured in weeks rather than months and work is performed in a highly collaborative manner. Most agile methods also differ by treating their time period as a timebox.
Contrasted with the Waterfall Methodology:
Agile development has little in common with the waterfall model. The Waterfall methodology is the most structured of the methods, stepping through requirements, analysis, design, coding, and testing in a strict, pre-planned, "all at once" sequence. Progress is often measured in terms of deliverable artifacts: requirement specifications, design documents, test plans, code reviews and the like.
Agile methods, in contrast, produce completely developed and tested features (but a very small subset of the whole) every few weeks. The emphasis is on obtaining the smallest workable piece of functionality to deliver business value early and continually improving it and/or adding further functionality throughout the life of the project. If a project being delivered under Waterfall is cancelled at any point up to the end, there is often nothing to show for it beyond a huge resources bill. With Agile, being cancelled at any point will still leave the customer with some worthwhile code that has likely already been put into live operation.
Some things that can negatively impact the success of an agile project are:
* Large scale development efforts (>20 developers), though scaling strategies and evidence to the contrary have been described.
* Distributed development efforts (non-co-located teams). Strategies have been described in Bridging the Distance and Using an Agile Software Process with Offshore Development
* Forcing an agile process on a development team
* Mission critical systems where failure is not an option at any cost (Software for surgical procedures).
Agile methods:
Some of the well-known agile software development methods:
* Agile Modeling
* Agile Unified Process (AUP)
* Agile Data Method
* DSDM
* Essential Unified Process (EssUP)
* Extreme Programming (XP)
* Feature Driven Development (FDD)
* Open Unified Process (OpenUP)
* Scrum
* Lean software development
No comments:
Post a Comment