Nemanja Grubor
20 Apr 2021
•
9 min read
In this article, we'll talk about software requirements, software requirements engineering, and the process of software requirements.
Software requirement is a specification of what the software should do, as well as limitations concerning its use. Software requirement should represent clearly defined user needs in terms of the software system which will be designed for them. The basic characteristic of software requirements is that they can be verified as individual software properties, that are then viewed as functional requirements, or as properties at the system level, which are viewed as nonfunctional requirements. Software requirements are derived from user requirements, which represent what the service or the system should provide to the user and what limitations exist. Besides software requirements, system requirements are also derived based on user requirements, which refer to the system as a whole and encompass software, hardware, people, services, and processes.
Software requirements are divided into:
Functional requirements are requirements that describe how the system behaves in certain situations. Nonfunctional requirements are requirements that most commonly relate to some limitations of the system. These limitations are most often imposed by standards that apply in the domain of the problem, but they may also be time limitations or limitations of individual processes.
Functional requirements can be common in terms of what the system should do, but they can also be very specific and determined by local rules and work methods in a small subsystem. Functional requirements must be complete, which means that all functionalities must be defined.
Nonfunctional requirements usually are very strict concerning the system characteristics, and if their implementation is avoided, the system could be unusable. Implementation of nonfunctional requirements is usually related to the whole system or its individual segments. There are three sources of nonfunctional requirements:
Product requirements refer to limitations relating to the software product and its performances, such as execution speed, memory usage, usability, etc.
Organizational requirements refer to limitations derived from the rules and procedures of an organization that is a purchaser of the software and also, to limitations derived from the rules and procedures of an organization that produces the software. This group includes requirements that are related to the choice of an operating system for software execution, how to use the software, choice of a programming language (or more of them) for designing the software, as well as respecting processes and standards in the domain of application and software development.
External requirements refer to all requirements that don't apply to the software product and organizations that are included in its development and usage. This group includes limitations regarding various business regulations, legislative restrictions, and ethical aspects of software usability.
Nonfunctional requirements arise from user needs, due to the existence of budget constraints, organization rules, procedures, software interoperability needs, and hardware requirements.
Recap of nonfunctional requirements:
Product requirements include:
Organizational requirements include:
External requirements include:
Software requirement engineering is the field of software engineering which refers to the systematic handling of software requirements and encompasses requirements specification, analysis, documentation, control, and validation. Although it is at the software life cycle's very beginning stage, software requirements engineering is connected with all phases in its life cycle.
Software requirements engineering and phases in the software life cycle:
Project planning. Software and system requirements represent the basis for project planning within the software life cycle. Requirements define the project's flow, roles within the project, deadlines, use of appropriate methods and tools, as well as the flow of software life cycle. Also, software and system requirements serve as the basis for risk management, expenses, and limitations in project development.
Software design and construction. Software design and construction rely on minutely specified software requirements. During the design and construction, there might be a need for changing requirements.
Testing. Software testing consists of testing individual parts and the whole system by the organization that produces the software, where specification verification is performed, i.e. checking if the software is created according to the specification. After that, the acceptance test is done (by an organization that is the software user), where specification validation is performed, i.e. checking if the software satisfies the requirements specified by the user.
Documentation. Software requirements are documented in the form of a specification that is later used during the next phases in the software life cycle. During the software life cycle, software requirements can change, which usually happens during the iterative cycle of software development, or later, when changes are done during the maintenance.
Maintenance. This is the last phase in the software life cycle. As said in the previous phase, changes can be done during the maintenance.
Software requirements engineering - main activities recap:
The process of software requirements covers activities of acquisition, analysis, specification, and validation of requirements.
Starting assumptions for the process of software requirements are clearly defined strategic and operating requirements of an organization that needs the software. Before initialization of the process, it is sometimes necessary to create a feasibility study to see all factors and limitations that can affect the process, and later, to the whole software life cycle.
Requirements Acquisition is the first phase in building and understanding the software that is developed. This phase represents a relationship between the problem domain and the technical domain where the software is developed. In this process phase, the project scope and software product are defined. In this phase, all potential requirement sources and goals must be perceived:
Software requirements acquisition is related to information acquisition, from where software requirements will be derived and defined. Techniques for software requirements acquisition are:
Software requirements analysis is the set of activities that has the following goals:
The basic activities in a phase of software requirements analysis are:
Requirements specification is the activity during which documents that can be reviewed, evaluated, and approved, are created. Usually, the following documents are created:
Software requirements analysis is the set of activities that has the following goals:
The basic activities in a phase of software requirements analysis are:
Requirements validation provides achievement of the following goals:
Techniques for requirements validation are:
The question is, why should you care about software requirements engineering?
If you (as an organization or an individual) plan to design a large-scale software system, then software requirements engineering is recommended as the first phase of the software life cycle. On the other hand, if you plan to design a short-term software project (e.g. freelance software project) that needs to be done ad-hoc and quickly, then probably you won't have the time to deal with software requirements engineering.
Nemanja Grubor
Experienced in Oracle (SQL, PL/SQL, APEX) Database Development, Core PHP, and Delphi. He is currently working as a research analyst and educator (CentOS Linux, Oracle SQL, PL/SQL, APEX). He also has experience in tutoring (C++).
See other articles by Nemanja
Ground Floor, Verse Building, 18 Brunswick Place, London, N1 6DZ
108 E 16th Street, New York, NY 10003
Join over 111,000 others and get access to exclusive content, job opportunities and more!