10 Requirement Elicitation
R. Baskaran
SOFTWARE REQUIREMENT ELICITATION TECHNIQUES
Requirement elicitation is the process of collecting the requirements of a system or requirement gathering from user, customers and stakeholders by conducting meetings, interviews, questionnaires, brainstorming sessions, prototyping etc. The major learning objectives include:
- Description of the processes of requirement elicitation.
- Introduction of requirement elicitation techniques.
- Usage of prototypes in requirement elicitation process.
REQUIREMENT ELICITATION
Elicitation is gathering of all the system requirements from the stakeholders and it encompasses all activities involved in discovering the requirements of a system. The system developers and engineers work in a close relationship with the customers and end-users to determine more about the problem to be solved and to bridge the gap between the stakeholders and the developers. Elicitation techniques facilitates this process by,
- Finding out more about the problem to be solved.
- Describing the functionalities of the system and non functional attributes.
- Enhances the performance of the system.
- Overcomes hardware constraints.
- Bridges the gap between the stakeholders and the developers.
The requirement elicitation process involves effectively designing the requirements by thorough understanding. After thorough understanding of requirements we build a use case model which is a part of analysis model. Once the use case model is defined it is expressed in terms of application domain objects which help in understanding the domain in which it has to be applied. The definition of the use case model can facilitate the process of dividing the system into subsystems using block diagrams and it is done after the analysis phase. In object design, the solutions provided by the domain objects can be realized from the plotting of the use case models. Further from the use case models, it is easy to develop and to implement the source code by dividing each and every class; further more it helps us to verify by defining the test cases early in the development cycle.
Requirement elicitations not only helps in determining the use case model, but also assists in various phases of the development cycle from analysis to testing phase.
TOP 10 REQUIREMENT TRAPS TO AVOID
If the requirements are not understood properly it may lead to the following traps which are to be avoided to develop an efficient system according to the requirements and specification of the end-users.
- Confusion over “Requirements” due to stakeholders’ requirement description or due to verbal communication which leads to confusion.
- Inadequate customer involvement.
- Vague and ambiguous requirements.
- Un-prioritized requirements may lead the developers to squander time in low prioritized activities.
- Building functionality that no one uses.
- Analysis paralysis.
- Scope creep.
- Inadequate change process.
- Insufficient change impact analysis.
- Inadequate version control.
BASIC ELICITATION ACTIVITIES
The basic elicitation activities include,
- Application domain understanding.
- Problem understanding.
- Business understanding.
- Understanding the needs and constraints of system stakeholders.
Elicitation activities gather all the requirements by posing the questions “what”, “why” and “who” dimensions. The system primarily stumbles upon problems, opportunities and composes system knowledge, whereas the system to be developed initially maintains a list of objectives. The list of objectives projects the perspective of why the new system has to be developed. The requirements, constraints and assumptions project the perspective of what services and features that are provided by the system. The assigned responsibilities include the developer, the communication media and the portability of the systems, which provides the clear understanding of who will be responsible for what in the development of the system.
Application domain understanding provides the general knowledge of the area and domain where the system has to be applied. It provides the perspective where the system has to be applied. Problem understanding provides the details of the specific customer problem, area in which the system has to be applied, determines the problem solutions and the end-users who will apply on the problem. Business understanding provides details about how the systems interact and distribute to overall business goals. Understanding the needs and constraints of system stakeholders involves thorough understanding of specific needs and constraints of the people who require support in their work.
REQUIREMENT ELICITATION PROCESS
Requirement elicitation process involves establishment of the overall organizational objectives, gathering and understanding of background information of the system, knowledge organization and collection of requirements.
Objective establishment provides the essential need for pursing the project. It provides the business goals, determines the problem to be solved and the constraints pertaining to the system. Objective establishment gives a significant view about why the system is essential, what are the goals and who are the end users who will apply the system. The effective development of the system relies on the understanding of the background such as identification of existing systems, finding out who has worked on similar type of system earlier and application domain. All the background information and the knowledge gained are organized for stakeholder identification, domain knowledge filtering and prioritization of goals of the system. After organizing the knowledge, prioritize and collate the large amount of data so that the requirements are collected effectively from the knowledge gained. The requirements are collected in terms of the stakeholders, domain an organization.
REQUIREMENT ANALYSIS
After requirement gathering, requirement analysis is done to check on why the product is needed. Requirement analysis includes:
- Necessity checking – requirements that don’t contribute to the business goals of the organization or specific problem that has to be addressed by the system are checked for necessity for the development of the system.
- Consistency and completeness checking – no contradictions and feasibility checking in terms of budget and schedule.
- Requirement discussion – highlight the requirement and discussion of problematic elements through introspection and interviews.
- Requirement prioritization – requirements are prioritized based on criticality and the highly complex and critical activities are identified for risk plot and low level activities are considered for easy implementation.
- Requirement agreement – compromised set of requirements based on feasibility checking.
PROBLEMS OF REQUIREMENT ELICITATION
Some of the problems encountered during requirement elicitation are as follows:
- Stakeholders don’t know what they really want.
- Stakeholders express requirements in their own terms.
- Different stakeholders may have conflicting requirements.
- Organizational and political factors may influence the system requirements.
- The requirements change during the analysis p New stakeholders may emerge and business environment may also likely to change.
ELICITATION TECHNIQUES
The techniques for requirement elicitation or the gathering of requirements from the stakeholders and end-users can be done using the following techniques:
- Interview
- Questionnaire
- Background Reading
- Introspection
- Social Analysis
- Requirement workshop.
- Brainstorming
- Idea Generation
- Story Boarding
- Scripted Walkthrough
- CRC Cards
- Ethnography
- Natural language descriptions
- Form Analysis
Web Links
- https://en.wikipedia.org/wiki/Requirements_engineering
- http://www.tutorialspoint.com/software_engineering/software_requirements.htm
- http://www.cs.toronto.edu/~sme/papers/2004/FoRE-chapter01-v7.pdf
Supporting & Reference Materials
- Roger S. Pressman, “Software Engineering: A Practitioner’s Approach”, Fifth Edition, McGraw Hill, 2001.
- Pankaj Jalote, “An Integrated Approach to Software Engineering”, Second Edition, Springer Verlag, 1997.
- Ian Sommerville, “Software Engineering”, Sixth Edition, Addison Wesley, 2000.