CSC/ECE 517 Fall 2007/wiki3 10 ljh: Difference between revisions

From Expertiza_Wiki
Jump to navigation Jump to search
No edit summary
 
 
(38 intermediate revisions by the same user not shown)
Line 1: Line 1:
=The Agile Debate=
=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 [http://courses.cs.vt.edu/~csonline/SE/Lessons/Waterfall/index.html Waterfall], [http://www.sei.cmu.edu/tsp/psp.html Personal Software Process], and the [http://en.wikipedia.org/wiki/Rational_Unified_Process Rational Unified Processes].
===When are Plan-Driven Methods Most Appropriate?===
Plan-driven methods are most appropriate when software is highly critical and the requirements can be determined to be stable at the beginning of the project.
As Barry Boehm explains, "Plan-driven methods work best when developers can determine the requirements in advance...and when the requirements remain relatively stable...This emphasis is vital for stable, safety-critical embedded software." [5]
==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 [http://www.extremeprogramming.org/ Extreme Programming], [http://agile.csc.ncsu.edu/crystal.html Crystal], [http://agile.csc.ncsu.edu/scrum.html Scrum], and [http://agile.csc.ncsu.edu/fdd.html Feature Driven Development].
===When are Agile Methods Most Appropriate?===
Agile methodology evolved in the mid-1990s as software development teams began to notice that the rate of change of requirements was far larger than the rate of change allowed by the the current methodologies.  Agile methodology is most appropriate when customers are unable to express the requirements upfront and when change in requirements in highly probable. [5]
==Benefits of Plan-Driven Methodology==
Since Plan-Driven Methodology encompasses several different processes, the following are general benefits common to all.  For more specific and elaborated benefits, look into the individual processes ([http://courses.cs.vt.edu/~csonline/SE/Lessons/Waterfall/index.html Waterfall], [http://www.sei.cmu.edu/tsp/psp.html Personal Software Process], and [http://en.wikipedia.org/wiki/Rational_Unified_Process Rational Unified Processes]). 
* "Thorough documentation" [2]
* "Detailed plans, workflow, roles, responsibilities, and work product descriptions" [2]
* "On-going risk management" [2]
* "Focus on verification and validation" [2]
* "Predictability, stability, and high assurance" [3]
* Attractive methodology for highly critical systems [4]
* Allows for stable requirements [5]
* Good for large teams and requirements [5]
* Primary objective is "high assurance" [5]
==Benefits of Agile Methodology==
Since Agile Methodology encompasses several different processes, the following are general benefits common to all.  For more specific and elaborated benefits, look into the individual processes ([http://www.extremeprogramming.org/ Extreme Programming], [http://agile.csc.ncsu.edu/crystal.html Crystal], [http://agile.csc.ncsu.edu/scrum.html Scrum], and [http://agile.csc.ncsu.edu/fdd.html Feature Driven Development]).
* 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]
* Refactoring is inexpensive [5]
* Good for small teams and requirements [5]
* Primary objective is "rapid value" [5]
==Can Agile Development Actually Produce a Robust Design?==
Yes!  Microsoft, a well known industry leader in software development, is migrating towards a more agile methodology.  This paper describes how Microsoft has become more successful by becoming more agile.  They are shifting to a view that bugs are unacceptable, and, therefore, the development process should be more flexible.  [http://portal.acm.org/citation.cfm?id=1062473&coll=ACM&dl=ACM&CFID=8022253&CFTOKEN=18011744 Journey of enlightenment: the evolution of development at Microsoft]
In 2002, eighteen Agile experts got together to discuss the pros and cons of Agile methodology.  They made the following conclusion about using Agile methodology to create reliable and safety-critical projects:
"Reliable and safety-critical projects can be conducted using Agile Methods. The key is that performance requirements are made explicit early, and proper levels of testing are planned. It is easier to address critical issues using Agile Methods since the customer gives requirements, makes important things explicit early and provides continual input." [http://www.lib.ncsu.edu:2097/content/54rr5mbq291rc5cy/ Taken from Empirical Findings in Agile Methods]


==Project Description==
 
==What Methodology Is Best?==
 
While some will argue strongly for one methodology or the other, many software engineering teams are migrating to a hybrid methodology.  Barry Beohm and Richard Turner suggest five critical dimensions when determining which methodology to use:  size, criticality, dynamism, personnel, and culture [3].
 
"Both agile and plan-driven methods have a home ground of project characteristics in which each clearly works best, and where the other will have difficulties.  Hybrid approaches that combine both methods are feasible and necessary for projects that combine a mix of agile and plan-driven home ground characteristics." [5]
 
For a fantastic spider-like diagram of how to choose the methodology best for your team, view Dr. Laurie Williams' slides: [http://courses.ncsu.edu/csc326/lec/001/lectures/ChooseProcess.pdf 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==
* [http://courses.cs.vt.edu/~csonline/SE/Lessons/Waterfall/index.html Waterfall]
* [http://www.sei.cmu.edu/tsp/psp.html Personal Software Process]
* [http://en.wikipedia.org/wiki/Rational_Unified_Process Rational Unified Processes]
* [http://www.extremeprogramming.org/ Extreme Programming]
* [http://agile.csc.ncsu.edu/crystal.html Crystal]
* [http://agile.csc.ncsu.edu/scrum.html Scrum]
* [http://agile.csc.ncsu.edu/fdd.html Feature Driven Development]
* [http://courses.ncsu.edu/csc326/lec/001/lectures/ChooseProcess.pdf Choosing Your Software Development Process: Agile or Plan-driven?]
* [http://portal.acm.org/citation.cfm?id=1062473&coll=ACM&dl=ACM&CFID=8022253&CFTOKEN=18011744 Journey of enlightenment: the evolution of development at Microsoft]
* [http://www.lib.ncsu.edu:2097/content/54rr5mbq291rc5cy/ Taken from Empirical Findings in Agile Methods]
* [http://www.agilealliance.org/ Agile Alliance]




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.
==References==
* [1] [http://agile.csc.ncsu.edu/SEMaterials/AgileMethods.pdf A Survey of Agile Development Methodologies]
* [2] [http://agile.csc.ncsu.edu/SEMaterials/PlanDriven.pdf A Survey of Plan-Driven Development Methodologies]
* [3] [http://portal.acm.org/citation.cfm?id=999485&coll=ACM&dl=ACM&CFID=43700200&CFTOKEN=87947446 Balancing Agility and Discipline: Evaluating and Integrating Agile and Plan-Driven Methods ]
* [4] [http://www.agilealliance.org/system/article/file/923/file.pdf Agile and Plan-Driven Methods Oil and Water?]
* [5] [http://www2.umassd.edu/swpi/xp/papers/r1064.pdf Get Ready for Agile Methods, with Care]

Latest revision as of 03:15, 29 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.

When are Plan-Driven Methods Most Appropriate?

Plan-driven methods are most appropriate when software is highly critical and the requirements can be determined to be stable at the beginning of the project.

As Barry Boehm explains, "Plan-driven methods work best when developers can determine the requirements in advance...and when the requirements remain relatively stable...This emphasis is vital for stable, safety-critical embedded software." [5]


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.

When are Agile Methods Most Appropriate?

Agile methodology evolved in the mid-1990s as software development teams began to notice that the rate of change of requirements was far larger than the rate of change allowed by the the current methodologies. Agile methodology is most appropriate when customers are unable to express the requirements upfront and when change in requirements in highly probable. [5]


Benefits of Plan-Driven Methodology

Since Plan-Driven Methodology encompasses several different processes, the following are general benefits common to all. For more specific and elaborated benefits, look into the individual processes (Waterfall, Personal Software Process, and Rational Unified Processes).

  • "Thorough documentation" [2]
  • "Detailed plans, workflow, roles, responsibilities, and work product descriptions" [2]
  • "On-going risk management" [2]
  • "Focus on verification and validation" [2]
  • "Predictability, stability, and high assurance" [3]
  • Attractive methodology for highly critical systems [4]
  • Allows for stable requirements [5]
  • Good for large teams and requirements [5]
  • Primary objective is "high assurance" [5]


Benefits of Agile Methodology

Since Agile Methodology encompasses several different processes, the following are general benefits common to all. For more specific and elaborated benefits, look into the individual processes (Extreme Programming, Crystal, Scrum, and Feature Driven Development).

  • 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]
  • Refactoring is inexpensive [5]
  • Good for small teams and requirements [5]
  • Primary objective is "rapid value" [5]


Can Agile Development Actually Produce a Robust Design?

Yes! Microsoft, a well known industry leader in software development, is migrating towards a more agile methodology. This paper describes how Microsoft has become more successful by becoming more agile. They are shifting to a view that bugs are unacceptable, and, therefore, the development process should be more flexible. Journey of enlightenment: the evolution of development at Microsoft

In 2002, eighteen Agile experts got together to discuss the pros and cons of Agile methodology. They made the following conclusion about using Agile methodology to create reliable and safety-critical projects: "Reliable and safety-critical projects can be conducted using Agile Methods. The key is that performance requirements are made explicit early, and proper levels of testing are planned. It is easier to address critical issues using Agile Methods since the customer gives requirements, makes important things explicit early and provides continual input." Taken from Empirical Findings in Agile Methods


What Methodology Is Best?

While some will argue strongly for one methodology or the other, many software engineering teams are migrating to a hybrid methodology. Barry Beohm and Richard Turner suggest five critical dimensions when determining which methodology to use: size, criticality, dynamism, personnel, and culture [3].

"Both agile and plan-driven methods have a home ground of project characteristics in which each clearly works best, and where the other will have difficulties. Hybrid approaches that combine both methods are feasible and necessary for projects that combine a mix of agile and plan-driven home ground characteristics." [5]

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


References