Requirements Engineering — Elicitation & Analysis (Part 2)

The activity of generating the requirements of a system from users, customers and other stakeholders.

Omar Elgabry
Sep 13, 2016 · 6 min read

After the feasibility study, we head into the next phase; elicitation and analysis.

Requirements Elicitation & Analysis

Domain requirements reflect the environment in which the system operates so, when we talk about an application domain we mean environments such as train operation, medical records, e-commerce etc.

It may also involve a different kinds of stockholders; end-users, managers, system engineers, test engineers, maintenance engineers, etc.

A stakeholder is anyone who has direct or indirect influence on the requirements.

The requirements elicitation and analysis has 4 main process

Then you organize the related requirements into sub components and prioritize them, and finally, you refine them by removing any ambiguous requirements that may raise from some conflicts.

Here are the 4 main process of requirements elicitation and analysis.

The process of requirements elicitation and analysis

It shows that it’s an iterative process with a feedback from each activity to another. The process cycle starts with requirements discovery and ends with the requirements document. The cycle ends when the requirements document is complete.

1. Requirements Discovery

It can be done using some techniques, like interviews, scenarios, prototypes, etc, which help the stockholders to understand what the system will be like.

Gathering and understanding the requirements is a difficult process

They may give different requirements, which will result in conflict between the requirements, so we have to discover and resolve these conflicts.

Also there might be some factors that influence on the stakeholder’s decision, like for example, managers at a company or professors at the university want to take a full control over the management system.


The questions fall under two categories:

  1. Closed-Ended questions: A pre-defined set of question.
  2. Open-Ended questions: There is no a pre-defined expected answer, they are more of generic questions. It’s used to explore issues that’s not clear in a less structured way.

In practice, interviews usually use mixture of both. Usually, start with the open-ended questions, and then use the closed-ended questions to be more specific about some requirements that aren’t clear yet.

Interviews are good to get an overall understanding of what stakeholders need, how they might interact with the new system, and the difficulties they face with the current system.

However, interviews aren’t so helpful in understanding the domain requirements. This is for two reasons:

  1. Domain requirements may be expressed using special domain terminologies, and software engineers often find it difficult to understand and it’s easy for them to misunderstand.
  2. Sometimes stakeholders won’t tell you some requirements because they assume it’s so fundamental and it doesn’t worth mentioning, or they find it difficult to explain, which won’t be taken into consideration in the requirements.

Use Cases & Scenarios

Use cases identify interactions between the system and it’s users or even other external systems (using graphical notations), while a scenario is a textual description of one or more of these interactions.

Use case involves some symbols to describe the system:

Use case diagram symbols and an example
  1. Actors: Are those who interact with the system; human or other systems
  2. Interaction (Use Case): It denotes the name of the interaction (verb). It’s represented as a named ellipse.
  3. Connection: Lines that links between the actors and the interactions.
  4. Include Relationship: It denotes a connection between two interactions when an interaction is invoked by another. As an example, splitting a large interaction into several interactions.
  5. Exclude Relationship: It denotes a connection between two interactions when you want to extend an interaction by adding an optional behavior, but you can use the main interaction on it’s own without the extending interaction.

Now, we are going to use scenarios to describe the interactions in each use case textually. They should have a format and include the following:

  1. A description of the initial situation.
  2. A description of the flow of the events or interactions with the system
  3. A description of the exceptions, or in other words, what can go wrong, and how it can be handled.
  4. Any concurrent activities should be mentioned
  5. A description of the final state.

Here is the example for a scenario for the use case example above.


Use case and scenarios are effective techniques for eliciting the requirements. But, because they focus on the interactions with the system, they aren’t effective for eliciting high-level business, non-functional, or domain requirements.

The next two phases are about analyzing requirements: determining whether the stated requirements are clear, complete, consistent and unambiguous, group related requirements and organize them into related components, and resolving any apparent conflicts.

2. Requirements Classification & Organization

Putting related requirements together, and decomposing the system into sub components of related requirements. Then, we define the relationship between these components.

What we do here will help us in the decision of identifying the most suitable architectural design patterns.

3. Requirements Prioritization & Negotiation

One of the reasons is the conflicts that may arise as a result of having different stakeholders involved. Why? because it’s hard to satisfy all parties, if it’s not impossible.

This activity is concerned with prioritizing requirements and finding and resolving requirements conflicts through negotiations until you reach a situation where some of the stakeholders can compromise.

We shouldn’t reach a situation where a stakeholder is not satisfied because his requirements is not taken into consideration.

Prioritizing your requirements will help you later to focus on the essentials and core features of the system, so you can meet the user expectations. It can be achieved by giving every piece of function a priority level. So, functions with higher priorities need higher attention and focus.

4. Requirements Specification

OmarElgabry's Blog

This is my freedom area.

Medium is an open platform where 170 million readers come to find insightful and dynamic thinking. Here, expert and undiscovered voices alike dive into the heart of any topic and bring new ideas to the surface. Learn more

Follow the writers, publications, and topics that matter to you, and you’ll see them on your homepage and in your inbox. Explore

If you have a story to tell, knowledge to share, or a perspective to offer — welcome home. It’s easy and free to post your thinking on any topic. Write on Medium

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store