Requirements engineering

From Infogalactic: the planetary knowledge core
Jump to: navigation, search

Lua error in package.lua at line 80: module 'strict' not found. Requirements engineering (RE)[1] refers to the process of defining, documenting and maintaining requirements[2][3] to the sub-fields of systems engineering and software engineering concerned with this process.

The first use of the term 'requirements engineering' was probably in 1979 in a TRW technical report[4] but did not come into general use until the 1990s with the publication of an IEEE Computer Society tutorial[5] and the establishment of a conference series on requirements engineering that has evolved into the current International Requirements Engineering Conference.

In the waterfall model,[6] requirements engineering is presented as the first phase of the development process. Later software development methods, including the Rational Unified Process (RUP), extreme programming (XP) and Scrum assume that requirements engineering continues through the lifetime of a system.

Alan M. Davis maintains an extensive bibliography of requirements engineering.[7]

Requirement management which is a sub-function of Systems Engineering practices are also indexed in the INCOSE (International Council on Systems Engineering) manuals.

Requirements engineering activities

The activities involved in requirements engineering vary widely, depending on the type of system being developed and the specific practices of the organization(s) involved.[8] These may include:

  1. Requirements inception or requirements elicitation -
  2. Requirements identification - identifying new requirements
  3. Requirements analysis and negotiation - checking requirements and resolving stakeholder conflicts
  4. Requirements specification (e.g., software requirements specification; SRS) - documenting the requirements in a requirements document
  5. Systems modeling - deriving models of the system, often using a notation such as the Unified Modeling Language (UML)
  6. Requirements validation - checking that the documented requirements and models are consistent and meet stakeholder needs
  7. Requirements management - managing changes to the requirements as the system is developed and put into use

These are sometimes presented as chronological stages although, in practice, there is considerable interleaving of these activities.

Problems

Requirements engineering is a difficult process having to deal with interdisciplinary issues and uncertainty. The most important problems experienced by practitioners are:[9]

  • Incomplete/hidden requirements
  • Moving targets
  • Time boxing
  • Not separating requirements from known solutions
  • Underspecified requirements
  • Communication flaws with the customer
  • Inconsistent requirements
  • Communication flaws inside the team
  • Missing traceability
  • Gold plating

Criticism

Some recent research suggests that software requirements are often an illusion misrepresenting design decisions as requirements in situations where no real requirements are evident.[10]

See also

References

  1. Lua error in package.lua at line 80: module 'strict' not found.
  2. Lua error in package.lua at line 80: module 'strict' not found.
  3. Lua error in package.lua at line 80: module 'strict' not found.
  4. Software Requirements Engineering Methodology (Development) Alford, M. W. and Lawson,J. T. TRW Defense and Space Systems Group. 1979.
  5. Lua error in package.lua at line 80: module 'strict' not found.
  6. Lua error in package.lua at line 80: module 'strict' not found.
  7. Requirements bibliography Reviewed November 10th 2011
  8. Lua error in package.lua at line 80: module 'strict' not found.
  9. Lua error in package.lua at line 80: module 'strict' not found.
  10. Lua error in package.lua at line 80: module 'strict' not found.

External links