CSC/ECE 517 Fall 2007/wiki3 10 ljh: Difference between revisions
Line 42: | Line 42: | ||
==Can Agile Development Actually Produce a Robust Design?== | ==Can Agile Development Actually Produce a Robust Design?== | ||
Yes. http://portal.acm.org/citation.cfm?id=604255&coll=ACM&dl=ACM&CFID=8022253&CFTOKEN=18011744 | Yes. http://portal.acm.org/citation.cfm?id=604255&coll=ACM&dl=ACM&CFID=8022253&CFTOKEN=18011744 | ||
http://portal.acm.org/citation.cfm?id=1062473&coll=ACM&dl=ACM&CFID=8022253&CFTOKEN=18011744 | |||
==What Methodology Is Best?== | ==What Methodology Is Best?== |
Revision as of 18:52, 28 November 2007
The Agile Debate
Project Description
The Agile debate. Perhaps the most prominent controversy in o-o design today is whether it is possible to do a robust design with as little advance planning as agile methodologies recommend. Research this issue, on the Web and in the ACM DL, and report (fairly) on the major arguments of both sides, and on the evidence for both positions.
What is Plan-Driven Methodology?
Laurie Williams describes Plan-driven methods: "Plan-driven methods are those that begin with the solicitation and documentation of a set of requirements that is as complete as possible. Based on these requirements, one can then formulate a plan of development. Usually, the more complete the requirements, the better the plan." [1]
Plan-driven methodology encompasses several different processes including waterfall, Personal Software Process, and the Rational Unified Processes.
What is Agile Methodology?
Laurie Williams describes agile methodology as:
"Agile methods are a subset of iterative and evolutionary methods (Larman, 2004; Larman and Basili, June 2003) and are based on iterative enhancement (Basili and Turner, 1975) and opportunistic development processes (Curtis, 1989). In all iterative products, each iteration is a self-contained, mini-project with activities that span requirements analysis, design, implementation, and test (Larman, 2004)."[1]
Agile methodology encompasses several different processes including Extreme Programming, Crystal, Scrum, and Feature Driven Development.
Benefits of Plan-Driven Methodology
- "Thorough documentation" [2].
- "Detailed plans, workflow, roles, responsibilities, and work product descriptions" [2]
- "Focus on verification and validation" [2]
- "Predictability, stability, and high assurance" [3]
- Attractive methodology for highly critical systems [4]
Benefits of Agile Methodology
- Allows for changing requirements [1]
- Delivers working software frequently [1]
- Encourages interaction between business people and developers [1]
- Requires teams to regularly evaluate how to become more effective and modify accordingly [1]
- "Higher customer satisfaction, lower defect rates, faster development times" [3]
Can Agile Development Actually Produce a Robust Design?
Yes. http://portal.acm.org/citation.cfm?id=604255&coll=ACM&dl=ACM&CFID=8022253&CFTOKEN=18011744 http://portal.acm.org/citation.cfm?id=1062473&coll=ACM&dl=ACM&CFID=8022253&CFTOKEN=18011744
What Methodology Is Best?
While some will argue strongly for one methodology or the other, many software engineering teams are migrating to a combination methodology. Barry Beohm and Richard Turner suggest five critical dimensions when determining which methodology to use: size, criticality, dynamism, personnel, and culture [3].
For a fantastic spider-like diagram of how to choose the methodology best for your team, view Dr. Laurie Williams' slides: Choosing Your Software Development Process: Agile or Plan-driven?. Slide #4 allows you to chart where your team lies in the five critical dimensions and determine whether plan-driven, agile, or a hybrid is best for you.
Suggested Links
- Waterfall
- Personal Software Process
- Rational Unified Processes
- Extreme Programming
- Crystal
- Scrum
- Feature Driven Development
- Choosing Your Software Development Process: Agile or Plan-driven?