Overview
Learning Objectives
- You know of requirements engineering.
- You know of the different phases in requirements engineering.
Requirements engineering is the process of discovering, defining, documenting and managing the requirements of a system. The goal of requirements engineering is to produce a complete and relevant — as far as possible — set of requirements that reflects what the customer wants and needs.
Software requirements describe the expected functionality of a system, including what the system should do and what services it should provide.
Documenting and understanding the needs of a customer often requires understanding the customer’s business domain, business processes, and the broader motivations and wishes of the customer. It may also involve helping the customer understand what is possible and what is not possible.
Requirements engineering is about learning about the domain and the problems in the domain. This learning should not be externalized as the knowledge formed through the requirements engineering process allows making informed decisions throughout the later parts of the software development life cycle.
At the core of requirements engineering is discussing with the customer and other stakeholders to identify what the product should do. This is often done by writing down — or otherwise documenting — the requirements, which are then verified with the customer and other stakeholders. If the requirements are faulty, the developed software will be faulty, no matter how well the software is implemented (unless, of course, the software is implemented so that it does meet the requirements).
Large language models will not be sitting in customer meetings, nor will they observe existing systems to study how the present systems support work in the business domain and aid handling the business processes. Although they can generate content that often seems meaningful, and even at times seem to reason about the world, they do not comprehend the world we live in a way as humans do — at their core, they have been trained to put words after words in a manner that very often makes sense.
Requirements engineering consists of multiple activities, including requirements gathering, requirements analysis, requirements specification, requirements validation, and requirements management. They can be seen as a linear process, but in practice, the activities are often intertwined and iterative (similar to phases in software development life cycle).
The chapters in this part discuss the activities involved in requirements engineering, which are as follows.
-
Requirements Gathering (also elicitation and inception) is the process of collecting requirements from stakeholders. This can be done by interviewing stakeholders, observing stakeholders, and by studying existing systems and documentation. The objective of requirements gathering is to understand the needs of the customer and other stakeholders, and to understand the business domain and business processes.
-
Requirements Analysis is the process of analyzing the requirements to understand what the requirements mean, and to identify possible problems and inconsistencies in the requirements, including conflicting opinions from the stakeholders. New requirements can also be identified during the requirement analysis phase. The objective of requirements analysis is to understand the requirements and to identify problems in the requirements.
-
Requirements Specification is the process of documenting the requirements in a way that is understandable to the customer and other stakeholders, possibly using a formal document template such as software requirements specification. The objective of requirements specification is to form a document of requirements that is understandable to the customer and other stakeholders, and that can be subsequently analyzed and validated.
-
Requirements Validation is the process of validating the documented requirements, i.e., checking that they match the customer’s and stakeholders’ needs and that they are complete correct, consistent, and unambiguous. The objective of requirements validation is to validate the (formal) requirements specification.
-
Requirements Management is the process of managing the requirements, including managing changes to the requirements, and managing the requirements throughout the software development life cycle. The objective of requirements management is to maintain an up-to-date view of the requirements of the software throughout the software development life cycle.
Research into using large language models for requirements engineering is still rather scarce, where researchers have e.g. looked into detecting incompleteness of written requirements through identifying relevant but absent terminology and to translating requirements into a structured form though n-shot prompting. In the next parts, we provide examples of how large language models could be used to aid in requirements engineering phases.