Requirement engineering is the process of collecting, validating and managing the requirements essential for the development of the software, specified by the clients or the end-users. This task is performed at the initial stages of software development.
The requirement engineering process involves a team of software developers or engineers, business analysts, customers and end-users. Requirement engineering provides the basic idea to the software developer of what the client or the end-user wants the software to do.
Content: Requirement Engineering
- What is Requirement Engineering?
- Importance of Requirement Engineering
- Qualities of Requirements
- Types of Requirements
- Requirement Engineering Process
What is Requirement Engineering?
Requirement engineering is a process that is performed in the initial stages of any software development. It includes analyzing the customer’s requirement and various tasks such as:
- At first, identify the user’s requirement, what does it want the operational system to perform?
- Analyze the requirements gathered from the customer.
- Evaluate the feasibility of the operational system.
- Propose some unambiguous solutions.
- Validate the requirement provided by the customer.
- Manage the requirements as far as they are modelled into an operational system.
Importance of Requirement Engineering
Requirement engineering is an important stage in any software development. It is also believed if the requirement engineering is done appropriately then we can expect that the final software developed doesn’t lag behind in terms of design or functionality leading to successful and profitable software.
- The requirement engineering provides a vision of the final software i.e. what the software would do? This creates a sense of mutual understanding between the customer and the software developer.
- Requirement engineering also helps in defining the scope of the software i.e. what will be the functionalities of the final software.
- It also helps in perceiving the cost of the final software.
- It also helps in perceiving the schedule up to which the software will be delivered to the customer.
Qualities of Requirements
The requirements collected from the customer must be precise and must convey the customer need to the software developer. Quality requirements possess the following features:
- Complete: The specified requirements must be complete, there must be nothing missing that is important for the development of the software.
- Consistent: If the software requirements are provided by more than one customer. Then the software engineer must ensure that the requirements provided by an individual must not contradict the requirements provided by another customer.
- Unambiguous: Each specified requirement must be unambiguous i.e. it must specify a single meaning.
- Functions: The requirement must specify what functions or computations must the software perform and not how they must be implemented.
- Concise: Each requirement must be specified only once and there should not be duplication of any requirement statement.
- Minimum: The specified requirements must not carry unnecessary details.
- Understandable: The specified requirements must be understandable by both customer and software developer.
- Achievable: The requirement must be technically feasible.
- Testable: It can be verified that the requirements are collected completely.
Types of Requirements
Requirements can be classified into the following ways:
1. Business Requirements
Business requirements specify the software’s business demand. The business requirement identifies why the software is required, who will be the end-users of the software, how the software will benefit its end users.
The business requirement does specify the technicality of the software i.e. how it should be implemented it focuses only on what software must do for them.
2. Users Requirements
The user requirements specify the need and expectations of the end-users of the software. Although the user’s requirement is sometimes incorporated with the business requirements. But sometimes requirements of software with more complex functionality or more complex user interface must be documented separately.
3. Software Requirements
The software requirements specify what the software must do and it define how the software is expected to perform. Type of software requirement are as follow:
- Functional: The functional requirements describe what the software must deliver and what it must not. How the software must respond to incorrect inputs. Thus, the functional requirement describes the behaviour of the software.
- Non-Functional: The non-functional requirements describe the non-behavioural aspects of the system such as its scalability, reliability, performance, security, its portability, reusability and flexibility.
- Domain Requirements: The domain requirement describes the realm, area, group for which the software is to be developed. Such as for college, office, military, hospital, students, teachers, patients etc.
Requirement Engineering Process
The requirement engineering process involver certain steps that must be followed to collect the entire specifications about the project.
In the inception phase we how the concept of the software has evolved. Does there was any catalyst event that triggered the need for the software or its need has evolved over time? Although there is no precise answer to this question the conversation starts with these basic questions.
In the inception phase, the business requirements are identified where first the business need is identified, the scope of the software in the market is analysed, a rough feasibility analysis is done and the functioning of the software is discussed. Though all these requirements are subject to change they are enough to start a conversation between business analysts or customers or stakeholders and the software developers.
2. Requirement Elicitation
If the inception report is positive to undertake the project the next step is to gather the requirement from the clients. This phase is the requirement elicitation phase where the system analyst or the software developers communicate with the clients or the end-users of the system to elicit more information.
There are many things that the software analyst come across while eliciting the requirements such as:
- The problem statement defined by the client or the end-user may have ill-defined boundaries or the technical details provided by them might confuse the analyst or the developer regarding the objective of the software to be developed.
- Even the clients or the end-user of the software are not sure about what they want. They are unaware of the potential of their computing environment and even find it difficult to convey the problem statement to the software engineer.
- In some cases, the client or end-user misses the most important information to convey to the software engineer or provide ambiguous requirements.
- Sometimes the requirements of the clients or users change with time which raises confusion among the software developers.
3. Requirement Specification
In terms of the software, the requirement specification can be a written document, a mathematical model, graphical models, some usage scenarios, some sort of sample model, some sort of code etc.
4. Negotiating Requirements
Now each client associated with the same project might have different versions of requirements and they think that their aspect is more useful to develop software. Observing the conflicting requirements, the software engineer has to reconcile and negotiate the facts with the clients and end-users.
Negotiation is an iterative process where each client is asked to rank the requirement in terms of priority. Parallelly the software engineer also assesses the cost associated with the project, risk factors.
While addressing the conflicting requirements they may eliminate, add, combine or modify the conflicting requirements so that each client sense some sort of satisfaction that their requirements are essential for the development of the software.
5. Requirement Validation
Whatever is gathered, understood during the process of the requirement of engineering must be validated to ensure that all the software requirements are specified. The software developer or engineer must also ensure that the requirements are unambiguous, correct, consistent, essential.
The requirement validation phase requires the presence of all like software developers, clients, end-users and stakeholders. The specified requirements are checked thoroughly for any missing, redundant, inconsistent information.
6. Requirement Management
Requirements of any software keep on changing and the business and technical change throughout the life of the software. Requirement management is subject to keep track of the requirements and the changes that occur during the development of the software.
So, these are the steps or tasks that must be performed in the requirement engineering process. The efficient requirement engineering promises that developed software satisfies each requirement specified and up to the standards.