Requirement Engineering

Requirement Engineering

Requirement Engineering (RE) is a systematic and disciplined approach to the specification and management of requirements throughout the entire software development life cycle. It involves processes, techniques, and methodologies aimed at discovering, analyzing, documenting, validating, and managing the requirements of a system or software project.

Based on what purpose Requirement engineering is differentiated into two sub-parts:-

  1. User requirement

  2. System requirements

Based on behaviour requirements. Requirement Engineering is differentiated into two sub-parts:-

  1. Functional requirements

  2. Non-functional requirements

Now let us understand each of them in detail. First, let us look at requirement engineering based on purpose:-

  1. User requirements:- are statesman in a natural language, plus a diagram of what service the system is expected to provide to the system user And the constraints under which it must operate The user requirement may vary from the broad statement of the system features required to detail precise description of the system functionality.

  2. System requirements: are a more detailed description of the programme/ software systems functions, services and operational constraints. The system requirement document should define exactly what is to be implemented. It may be part of the contract between the system buyer and the software developer.

Now let us understand a requirement engineering based on behaviour

  1. Functional Requirements:- They are also called as behavioural requirements.

    These are the requirements that the end user specifically demands as basic facilities That the system should offer. All these functionalities need to be incorporated into the system as a part of the contract.

    They are the requirements stated by the user which one can see directly in the final product and like the non-functional requirements.

    Example :

    1. A user shall be able to search the appointment list for all the clients.

    2. The system shall generate each day for each client a list of patients who are expected to attend appointments that day.

    3. Each staff member using the system shall be uniquely identified by his or her 8-digit employee number.

  2. Non-functional Requirements:- They are also called as non-behavioural requirements. These are the quality constraints that the system must satisfy according to the project contract. The priority or extent to which these factors are implemented varies from one project to another.

    Example-

    1. Maintainability

    2. Scalability

    3. Durability

    4. Performance

    5. Compatibility

    6. Adaptability

Non-functional requirements are mainly further divided into 3 types:-

  1. Product requirements

  2. Organisational requirements

  3. External requirements

Now let us understand each of these non-functional requirements in brief:-

  1. Product requirements:- these requirements specify or constrain the runtime behaviour of the software. Example performance: how fast the software must execute and how much money is required. Reliability, Failure rate, Security and Usability are also examples of product requirements.

  2. Organisational requirements:- these requirements are broad system requirements derived from various terms and conditions and policies in the customer and developer's organisation. Example- version control, Scalability and Compatibility.

  3. External requirements:- this broad headline covers all the requirements that are delivered from factors external to the system and its development process. These may include a regulatory requirement that sets out what must be done for the system to be approved for use by regulators such as the nuclear safety authority. These external requirements vary In different software according to the needs of the user or client.

Now let us understand the difference between functional requirements and non-functional requirements.

Functional requirementsNon-functional requirements
Help to understand the function of a systemIt helps to understand the system's performance
These are the mandatory requirementsThese are non-mandatory requirements
These are easy to defineThese are hard to define
It concentrates on the user's requirementsIt concentrates on the expectations of the user
These requirements are mandatory specified by the user and must be implemented in the softwareThese requirements are specified by the software developer, architect and technical person.
Describes what the software doesDescribes how the software does
There is functional testing such as API testing, system integration, etcThere is non-functional testing Such as Speed test, durability test Etc
The first completion of functional requirements allows the system to perform non-functional requirementsPriority is given to functional requirements over non-functional requirements
It helps us to verify software functionalityIt helps us to verify software performance
Example: authentication of the user trying to login to the systemExample speed with which a functionality works, load or storage software can handle

Now let us understand each of the non-functional requirements in detail:-

  1. Performance:- It includes the criteria related to responsiveness speed and overall efficiency of the system Example, response time, throughput and resource utilisation.

  2. Scalability:- describe the system's ability to handle an increasing amount of work without a significant degree in performance It might include aspects like several concurrent users The system should support.

  3. Reliability requirement:- Focus on the system's ability to consistently perform its intended function without failure. This includes aspects such as availability, fault tolerance and mean time between failures.

  4. Availability:- These describe the proportion of time that the system should be operational.

  5. Security:- These include encryption, authentication, authorization and protection against various threats.

  6. Maintainability:- this describes how easily the system can be modified or updated. This might include aspects like code readability, modularity and documentation.

Now let us understand the matrices that are required to specify the non-functional requirements. These Metrics for specifying non-functional requirements are:-

  1. Speed: process transaction, event response time, screen refresh time etc.

  2. Size: megabytes, number of RAM chips.

  3. Ease of use: training time and number of help frames.

  4. Reliability: Meantime to failure and rate of failure occurrence.

  5. Robustness: time to restart after failure or percentage of event causing failure.

  6. Portability: percentage of Target Development statements or number of target systems.

This is all about the requirement engineering.