Requirements Engineering in Agile Processes: Summary

Table of Contents:

 


Summary

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.

 


Exercise

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:


Comparison

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. 


References

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