CSC/ECE 517 Fall 2009/wiki3 7 dEaN: Difference between revisions
No edit summary |
No edit summary |
||
Line 12: | Line 12: | ||
requirements and solutions evolve through collaboration between self-organizing cross-functional teams | requirements and solutions evolve through collaboration between self-organizing cross-functional teams | ||
In a brief session, team members report to each other what they did yesterday, what they intend to do today, and what their roadblocks are | In a brief session, team members report to each other what they did yesterday, what they intend to do today, and what their roadblocks are | ||
Agile emphasizes working software as the primary measure of progress. | Agile emphasizes working software as the primary measure of progress. five dimensions of a software project (duration, risk, novelty, effort, and interaction). | ||
rapid delivery of high-quality software | rapid delivery of high-quality software | ||
Agile methods are ''adaptive'' as compared to ''predictive'' when constrasted with other plan-driven methodologies. | |||
Adaptive methods focus on adapting quickly to changing realities. When the needs of a project change, an adaptive team changes as well. Predictive methods, in contrast, focus on planning the future in detail. A predictive team can report exactly what features and tasks are planned for the entire length of the development process. | |||
principles behind the Agile Manifesto[5] are: | |||
* Customer satisfaction by rapid, continuous delivery of useful software | |||
* Working software is delivered frequently (weeks rather than months) | |||
* Working software is the principal measure of progress | |||
* Even late changes in requirements are welcomed | |||
* Close, daily cooperation between business people and developers | |||
* Face-to-face conversation is the best form of communication (co-location) | |||
* Projects are built around motivated individuals, who should be trusted | |||
* Continuous attention to technical excellence and good design | |||
* Simplicity | |||
* Self-organizing teams | |||
* Regular adaptation to changing circumstances | |||
== Example of agile practices == | == Example of agile practices == | ||
Line 20: | Line 36: | ||
== Scenarios where other methodologies are feasible but not complete == | == Scenarios where other methodologies are feasible but not complete == | ||
The waterfall model is the most structured of the methods, stepping through requirements-capture, analysis, design, coding, and testing in a strict, pre-planned sequence. Progress is generally measured in terms of deliverable artifacts: requirement specifications, design documents, test plans, code reviews and the like. | |||
The main problem with the waterfall model is the inflexible division of a project into separate stages, so that commitments are made early on, and it is difficult to react to changes in requirements. Iterations are expensive. This means that the waterfall model is likely to be unsuitable if requirements are not well understood or are likely to change in the course of the project. | |||
== How can Agile complement other design methodologies in such scenarios == | == How can Agile complement other design methodologies in such scenarios == | ||
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. | |||
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 adding further functionality throughout the life of the project. If a project being delivered under the waterfall method is cancelled at any point up to the end, there is nothing to show for it beyond a huge resources bill. With the agile method, being cancelled at any point will still leave the customer with some worthwhile code that has likely already been put into live operation. | |||
== Overview of work in this area == | == Overview of work in this area == | ||
== | == Experience Reports == | ||
== Current research == | == Current research == | ||
Large scale agile software development remains an active research area. | |||
== Conclusion == | == Conclusion == | ||
Agile home ground: | |||
* Low criticality[clarification needed] | |||
* Senior developers | |||
* Requirements change often | |||
* Small number of developers | |||
* Culture that thrives on chaos[clarification needed] | |||
Plan-driven home ground: | |||
* High criticality[clarification needed] | |||
* Junior developers | |||
* Requirements do not change often | |||
* Large number of developers | |||
* Culture that demands order | |||
== References == | == References == |
Revision as of 07:50, 10 November 2009
How can Agile complement other development methodologies?
In class, we talked about how it might not be possible to introduce all of the agile practices at the same time. Where this is not feasible, how can Agile complement other design methodologies? Give an overview of work on the topic. Look for research results and experience reports.
What are agile practices
development iterations, teamwork, collaboration, and process adaptability throughout the life-cycle of the project break tasks into small increments with minimal planning Each iteration involves a team working through a full software development cycle iterative development An iteration may not warrant a market release 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 requirements and solutions evolve through collaboration between self-organizing cross-functional teams In a brief session, team members report to each other what they did yesterday, what they intend to do today, and what their roadblocks are Agile emphasizes working software as the primary measure of progress. five dimensions of a software project (duration, risk, novelty, effort, and interaction). rapid delivery of high-quality software Agile methods are adaptive as compared to predictive when constrasted with other plan-driven methodologies. Adaptive methods focus on adapting quickly to changing realities. When the needs of a project change, an adaptive team changes as well. Predictive methods, in contrast, focus on planning the future in detail. A predictive team can report exactly what features and tasks are planned for the entire length of the development process.
principles behind the Agile Manifesto[5] are:
* Customer satisfaction by rapid, continuous delivery of useful software * Working software is delivered frequently (weeks rather than months) * Working software is the principal measure of progress * Even late changes in requirements are welcomed * Close, daily cooperation between business people and developers * Face-to-face conversation is the best form of communication (co-location) * Projects are built around motivated individuals, who should be trusted * Continuous attention to technical excellence and good design * Simplicity * Self-organizing teams * Regular adaptation to changing circumstances
Example of agile practices
A brief overview on other methodologies
Scenarios where other methodologies are feasible but not complete
The waterfall model is the most structured of the methods, stepping through requirements-capture, analysis, design, coding, and testing in a strict, pre-planned sequence. Progress is generally measured in terms of deliverable artifacts: requirement specifications, design documents, test plans, code reviews and the like.
The main problem with the waterfall model is the inflexible division of a project into separate stages, so that commitments are made early on, and it is difficult to react to changes in requirements. Iterations are expensive. This means that the waterfall model is likely to be unsuitable if requirements are not well understood or are likely to change in the course of the project.
How can Agile complement other design methodologies in such scenarios
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.
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 adding further functionality throughout the life of the project. If a project being delivered under the waterfall method is cancelled at any point up to the end, there is nothing to show for it beyond a huge resources bill. With the agile method, being cancelled at any point will still leave the customer with some worthwhile code that has likely already been put into live operation.
Overview of work in this area
Experience Reports
Current research
Large scale agile software development remains an active research area.
Conclusion
Agile home ground:
* Low criticality[clarification needed] * Senior developers * Requirements change often * Small number of developers * Culture that thrives on chaos[clarification needed]
Plan-driven home ground:
* High criticality[clarification needed] * Junior developers * Requirements do not change often * Large number of developers * Culture that demands order