Requirements Engineering for Software and Systems

In this chapter we explore the many ways that requirements can be elicited that is, found, discovered, captured, coerced, whatever the term may be. Remember that requirements are usually not so easy to come by, at least not all of them. Many of the more subtle and complex ones have to be teased out through rigorous, if not, dogged processes.
There are many techniques that you can choose to conduct requirements elicitation, and you will probably need to use more than one, and perhaps different ones for different classes of users/stakeholders. The techniques that we will discuss are
Brainstorming
Card Sorting
Designer as Apprentice
Domain Analysis
Ethnographic Observation
Goal-Based Approaches
Group Work
Interviews
Introspection
Joint Application Development (JAD)
Laddering
Protocol Analysis
Prototyping
Quality Function Deployment (QFD)
Questionnaires
Repertory Grids
Scenarios
Task Analysis
User Stories
Viewpoints
Workshops
This list is based on one offered by Zowghi and Coulin (1998).
Now it is time to begin examining the elicitation techniques. We offer these techniques in alphabetical order no preference is implied. At the end of the chapter, we will discuss the prevalence and suitability of these techniques in different situations.
Brainstorming consists of informal sessions with customers and other stakeholders to generate overarching goals for the systems. Brainstorming can be formalized to include a set agenda, minutes taking, and the use of formal structures (e.g., Roberts Rules of Order). But the formality of a brainstorming meeting is probably inversely proportional to the creative level exhibited at the meeting. These...