Software Engineering | Classification of Software Requirements
According to IEEE standard 729, a requirement is defined as follows:
- A condition or capability needed by a user to solve a problem or achieve an objective
- A condition or capability that must be met or possessed by a system or system component to satisfy a contract, standard, specification or other formally imposed documents
- A documented representation of a condition or capability as in 1 and 2.
A software requirement can be of 3 types:
- Functional requirements
- Non-functional requirements
- Domain requirements
Functional Requirements: These are the requirements that the end user specifically demands as basic facilities that the system should offer. It can be a calculation, data manipulation, business process, user interaction, or any other specific functionality which defines what function a system is likely to perform. All these functionalities need to be necessarily incorporated into the system as a part of the contract. These are represented or stated in the form of input to be given to the system, the operation performed and the output expected. They are basically the requirements stated by the user which one can see directly in the final product, unlike the non-functional requirements. For example, in a hospital management system, a doctor should be able to retrieve the information of his patients. Each high-level functional requirement may involve several interactions or dialogues between the system and the outside world. In order to accurately describe the functional requirements, all scenarios must be enumerated. There are many ways of expressing functional requirements e.g., natural language, a structured or formatted language with no rigorous syntax and formal specification language with proper syntax. Functional Requirements in Software Engineering are also called Functional Specification.
Non-functional requirements: These are basically the quality constraints that the system must satisfy according to the project contract.Nonfunctional requirements, not related to the system functionality, rather define how the system should perform The priority or extent to which these factors are implemented varies from one project to other. They are also called non-behavioral requirements. They basically deal with issues like:
NFR’s are classified into following types:
- Interface constraints
- Performance constraints: response time, security, storage space, etc.
- Operating constraints
- Life cycle constraints: maintainability, portability, etc.
- Economic constraints
The process of specifying non-functional requirements requires the knowledge of the functionality of the system, as well as the knowledge of the context within which the system will operate.
They are divided into two main categories: Execution qualities like security and usability, which are observable at run time. Evolution qualities like testability, maintainability, extensibility, and scalability that embodied in the static structure of the software system.
Domain requirements: Domain requirements are the requirements which are characteristic of a particular category or domain of projects. Domain requirements can be functional or nonfunctional. Domain requirements engineering is a continuous process of proactively defining the requirements for all foreseeable applications to be developed in the software product line. The basic functions that a system of a specific domain must necessarily exhibit come under this category. For instance, in an academic software that maintains records of a school or college, the functionality of being able to access the list of faculty and list of students of each grade is a domain requirement. These requirements are therefore identified from that domain model and are not user specific.
Software requirements can be classified into several categories based on their characteristics and the level of detail. The following are the most common types of software requirements:
Functional requirements: These are the requirements that define the functions and features of the software system. They describe what the software should do, and how it should behave when specific user actions or inputs are provided. Functional requirements are often documented as use cases or user stories.
Non-functional requirements: These requirements define the quality attributes of the software system, such as performance, reliability, scalability, usability, security, and compatibility. Non-functional requirements are critical for ensuring that the software meets the user’s needs and expectations.
Business requirements: These requirements describe the business needs and objectives that the software system is intended to fulfill. They define the problem or opportunity that the software is addressing, and the benefits that it is expected to provide.
User requirements: These requirements describe the needs and expectations of the end-users of the software system. They include information about the users’ tasks, workflows, and preferences, and how the software should support them.
System requirements: These requirements describe the hardware and software infrastructure that the software system needs to operate correctly. They include information about the operating system, database management system, network protocols, and other components required to run the software.
Design requirements: These requirements describe the technical design of the software system. They include information about the software architecture, data structures, algorithms, and other technical aspects of the software.
Interface requirements: These requirements describe the interfaces between the software system and other systems, devices, or services. They include information about the data formats, protocols, and communication channels that the software should use to integrate with other systems.
By categorizing software requirements, software engineers and project managers can ensure that all aspects of the software system are covered, and that the software meets the user’s needs and expectations
Please Login to comment...