Requirements Engineering

Requirements engineering is concerned with systems where a system is a set of components (humans, human procedures, physical devices, software) interacting with each other to meet global objectives.

Why: From a system-as-is we find objectives to create a system-to-be. We start from problems, opportunities and domain knowledge. What: We figure out the requirements, constraints and assumptions. Who: Find out what can meet the requirements. (software-to-be, people, devices, processes, existing software)

Stakeholders can provide requirements, impose constraints or invalidate assumptions. If you fail to consult the correct stakeholders, you may miss out on a set of requirements.

  • System-to-be: developers
  • Operational area: normal and maintenance operators
  • Containing business: customer, sponsor, functional beneficiaries
  • Wider environment: subject matter expert, negative stakeholders, financial beneficiaries, political beneficiaries, regulators

A typical process model works by:

  1. Taking information from stakeholders, existing systems, documents.
  2. Elicitation & domain analysis Finding functional requirements: what the system can do Finding non-functional requirements: how the software / system should work We could do a background study, interview, workshop, observation / user study, survey / questionnaire, or user forum / feature requests.
  3. Negotiation & Prioritisation Goals are broken down into sub-goals which may show if there are any conflicts
  4. Specification & Documentation` Authoring a specification documents, may use different visual tools.
Link to original

Looking at the world

Between “the world” and “the machine”:

Descriptive Statement

Descriptive statements express something that is true about a system.

Link to original

Prescriptive Statement

Prescriptive statements express something that should be true about a system.

Link to original

From requirements to specifications

A complete requirements specification satisfies the following property: Any set of specification and domain properties / assumptions must entail a set of requirements. They must also be consistent with one another.

We form the following from different scenarios:

World phenomenaShared phenomenaMachine phenomena
DescriptiveDomain property
PrescriptiveRequirement / domain assumptionMachine specification

Analysis

Domain Analysis

A domain analysis should include:

  • Requirements
  • Machine specifications
  • Domain properties
  • Domain assumptions
  • Definitions of key terms
Link to original

Seven sins of the specifier

We can define bad requirements using the Seven sins of the specifier (Meyer, 1985):

  1. Noise: irrelevant information
  2. Silence: the problem has a feature that is not mentioned by the text
  3. Over-specification: specification of a solution to the problem, not the problem
  4. Contradiction: text contains elements that describe the same feature in incompatible ways
  5. Ambiguity: text can be interpreted in different, mutually incompatible ways
  6. Forward reference: text uses a feature that is not defined until later
  7. Wishful thinking: description of a problem does not permit realistic validation
Link to original