Table of Contents:
The Meriam Webster dictionary defines the word "agile" as:
"1 : marked by ready ability to move with quick easy grace
2 : having a quick resourceful and adaptable character"
The highest priority of Agile methods is to satisfy the customer through quick sofware releases. Work on the sofware project would be done in short increments to keep the customer working effectively. In between these increments, Agile processes welcome change in requirements to improve the software, and to impove the customer's competitive performance. The developers must communicate with the users frequently, and cooperate throughout the project. Face to face meetings and discussions must be the preferred method of collecting the requirements. The development team then discusses those changes and discusses their own work effort, then quickly tries to adapt the new decisions they made into their project. Self evaluation of the development team is very important. Little documentation is written about the system. Some analysis and modeling are used in some agile methods. A requirements document is not written because they requirements are elicited from the users as the project is being developed. All the requirements of the customer have equal priority and business value. The focus of Agile methods is the business value which is decided upon by evaluating the tradeoffs between the cost, the time, the functionality, and the quality of the software.
Extreme Programming (XP)
XP is a one of the first Agile methods. It was introduced in the late 1980s as a
software development technique that focuses on customer satisfaction. XP adapts
itself in an environment of changing requirements. Customer communication,
feedback, and testing are the driving forces in XP. Iterative frequent releases
are preferred. Small develpment teams work best using XP and it gets
harder as the team grows. Pair programming is commonly used in XP.
The tools used by XP are user stories and the planning game. A user story is a
written statement by the user detailing what he/she does in one of their work
tasks. The user is trained how to write effective user stories for the
developers. The user stories should be testable. The developers use these
stories as the backbone of the requirements elecitation. The planning game
involved one developer and one business analyst. The game is to gather
requirements and start planning. According to LaFournie,
XP defines the following constructs in the game:
Crystal
Crystal is less structured than XP. It was introduced in the 1990s with a
focus on two priorities: Habitibility and Productivity. Habitibility
refers to the survival of the team, meaning the team releases the software while
it is still intact and will to continue in the next iteration.
Productivity means to get rid of anything that hinders the software
development. The Crystal family concept refers to the size of the
development team, and it ranges from clear to darker colors. Crystal Clear
involves less than 10 developers and the user would part of the team and the
incremental releases would every two to three months. In the Crystal
Yellow, orange and red, the team gets largers as the color gets darker.
Crytal makes use of any tools that are used by other methods. Usually it
uses the Use Cases or user stories, and other communication tools
available. The development team has more options to chose from as it
sees fit in the project.
You are the customer of a development company specializing in
development tools. You have contracted them to produce a from end for an
existing JAVE IDE. Write a user story that:
- Gives you business value
- Concentrates on "What" to do rather than "how" to do it
- Is written in plain English
Solution: (Typed by my group partner Qun Zhou)
The user story is:
In this IDE we need editor, compiler, debugger and help of system utilization.
Editor is required to have some functionality like syntax corrector.
Editor must highlight key words in different color.
Editor is required to have the basic file editing functions.
Editor must give automatic indentation.
Compiler requires error warning.
Compiler requires error location.
Debugger must allow us to view value of variables.
All information must be displayed by textual documentation except highlighting key words.
Must provide buttons to select functionality in the open like task bars.
Agile Methods Versus CSE:
Both methodologies place the priority on eliminating the unnecessary
requirements. In CSE, all the requirements must be elicited ahead of time, but
using Agile Methods the requirements can be collected as programming in stages
as the system is being built. Agile Methods methods requires interaction with
the user during development, but in CSE the analysts are the only ones involved
during development. CSE uses models and formal specifications to produce a
complete high quality system, while Agile Methods use the quickest and least
expensive ways to develop the system to get the best business value for the
customer.
Agile Methods Versus QFD:
Both methods focus on giving the customer the best business value for the
sofware to help face the competition. Both methods require the
involvement of the customer. Both methods use prioritization of the
requirements.
As for the differences, there are many. QFD is a well structure method
that gives step by step instructions on the process of requirements analysis,
while Agile method is less structured with the suggestion of some tools for use
in the requirements elicitation. Agile methods are incremental and
iterative, while QFD is more sequential and costly to use in iterations.
In the Agile, the user is involved in the all phases, even the development
phase, while in QFD the users are in the early stages only. QFD uses
prioritization of requirements for competition purposes, while Agile methods use
it to eliminate unimportant requirements. In QFD, changes to
the requirements can be very costly, but Agile methods can accomodate changing
requirement more easily. Agile methods don't allow for too much
planning because the idea is to get the software done as quick and as
economiclly as possible, while QFD takes time to evaluate the market, the
competitors, and the customer's needs.
Agile Methods Versus SASD:
There are no similarities that I can think of between SASD and Agile Methods.
SASD focuses on building a design model, or software plan. Agile methods don't
allow for too much planning because the idea is to get the software done as
quick and as economiclly as possible. Agile methods use prototyping with short
iterative life cycles. SASD requires longer life cycles because of the analysis
and design involved. SASD requires great effort in the analysis and design which
leads to a more stable system and makes maintenance easier later on, but Agile
methods might make maintenance impossible in later stages. SASD is good for long
term planning while Agile Methods is good for short term quick software
releases. Agile methods require frequent user interaction, and group work, while
SASD doesn't.
Agile Methods Versus JAD/PD:
Both methods are similar in that they require the customer's continuous
involvement. PD and Agile make use of the customers in testing. But
Agile methods require the customer in the developement and testing while JAD
doesn't. Agile is incremental in nature, and JAD/PD can be repeated
as well. Agile methods provide instructions for the entire software life cycle,
while JAD is used mostly in the requirements elicitation and analysis.
JAD/PD use group session that involves all the stakeholders to elicit
requirements and produce and a professional requirements document, while
Agile stresses on minimal documentation and on eliminating unneeded
requirements.
Filip Balas, Chad La Fournie & George Luo (2002). Group 5: Requirements Engineering in Agile Processes - Class Presentaion. http://pages.cpsc.ucalgary.ca/~laf/613/Group/
Filip Balas (2002), Agile Summary. http://pages.cpsc.ucalgary.ca/~balas/SENG/613/agile.html
Chad La Fournie (2002). Requirements Engineering in Agile Processes – Summary, University of Calgary, Canada. http://pages.cpsc.ucalgary.ca/~laf/613/RE_in_Agile_Processes.htm