![]() |
Site Archive (Complete) | |||
|
ABOUT US |
CONTACT |
ADVERTISE |
SUBSCRIBE |
SOURCE CODE |
CURRENT PRINT ISSUE |
NEWSLETTERS
|
RESOURCES
|
BLOGS
|
PODCASTS
|
CAREERS
|
||||
October 01, 2005
Requirements WisdomScott W. Ambler
To apply the right technique for each situation they encounter, effective developers keep multiple requirements elicitation techniques in their intellectual toolkit. Part 2 of 2.
Last
month, I discussed how to obtain access to stakeholdersor at least someone responsible for representing your stakeholders. But once you have access to your stakeholders, what do you do with them? This month, I'll describe a collection of techniques you can apply to elicit requirements from your stakeholders. Your goal should be to learn and become adept at each technique, to understand the trade-offs of each, and to recognize when to apply each one appropriately.
"Requirements Elicitation Techniques" compares various techniques' relative effectiveness. The higher the level in the diagram, the more effective the technique; for example, active stakeholder participation in requirements modeling is generally more effective than simply observing users doing their jobs, which in turn is usually more effective than reading existing documentation. But it's all situationalyou could easily learn about the most critical requirement in a face-to-face interview, even though you've had active stakeholder participation since your project's start. On the diagram's left side are collaborative techniques, and on the right side are techniques that restrict your interaction with stakeholders. In general, you should use techniques toward the top of the diagram rather than those toward the bottom, and collaborative techniques over restricted interaction techniques.
Collaboration Is Job #1
On-site customers are a second key success factor for any project because they reduce the wait time for critical information. AM takes this practice one step further by having stakeholders actively involved in your modeling effortsthey're the business experts, so they're the ones best suited to model the business. The secret? Take an inclusive approach to modeling that uses simple techniques such as sketching and paper prototyping, and simple tools such as plain old whiteboards. By adopting these techniques (see www.agilemodeling.com/essays/inclusiveModeling.htm for details), you'll discover that stakeholders can be effective members of your development team throughout your project's lifecycle.
Focus groups are another useful collaborative approach. Invite a group of actual and/or potential end users to brainstorm requirements. Focus groups work well when your stakeholders are dispersed and/or difficult to identify, which is particularly true when you're developing commercial software. They're also a great technique for defining the initial, high-level requirements at the beginning of your project.
The fourth collaborative technique is the traditional, face-to-face interview. Although interviews are sometimes impromptu events, they're usually scheduled at a specific time and place. Effective interviewers give interviewees at least an informal agenda to allow them time to prepare, as well as a copy of your interview notes with some follow-up questions for post-interview review. Interviews are great for stakeholders who have valuable information to share, but who can't be actively involved with the project team. You can often turn critics into allies simply by interviewing them to discover their requirements and then keeping them informed of your progress.
Traditional Techniques Revisited
A Joint Application Design (JAD) session is a facilitated, highly structured meeting that has defined rules of behavior. An agenda and information package; for example, your project vision and charter documents, is distributed before a JAD so that participants can come prepared. Official meeting minutes are written and distributed afterward, and the facilitator is responsible for ensuring that action items are fulfilled. By holding a JAD session early in your project, you not only elicit your system's initial requirements, you also soothe the fears of the traditionalists by getting your project started on the right foot. Observation of your end users is a critical technique for anyone involved with requirements elicitation. The goal? To watch end users do their daily work to determine what actually happens in practice instead of the often unrealistic picture you receive via other elicitation techniques. After an observation session, you should take notes and then ask questions to discover why the end users were doing what they were doing. Observation often provides those "aha!" moments, when you truly understand what you need to build.
Electronic interviews, often by telephone, video conferencing or e-mail, are also vital. Ideally, your primary elicitation approach should be based on face-to-face communication, but because your stakeholders may not always be immediately available, a quick e-mail is a great way to get the tidbits of information that you need.
Most project teams find that they must interface with, if not extend, existing legacy systems. To identify what the system currently implements, you often need to perform legacy code analysis, in which you work through the existing code and data sources to discover what was actually built.
Reading is also an effective requirements elicitation technique. Internally, you may have existing, albeit out-of-date, system documentation and/or business documentation (perhaps even enterprise business models). Externally, there may be websites describing similar systems; perhaps your competitors' sites, or even textbooks describing the domain in which you're currently working. Reading can give you a good foundation from which to ask intelligent questions using other elicitation techniques.
Grandpa Got It Right
Scott W. Ambler is a Canada-based software process improvement (SPI) consultant, mentor and trainer with AmbySoft Inc. He has written several books and is a regular speaker at software conferences worldwide.
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||