Requirement

From CNM Wiki
Revision as of 00:27, 3 April 2020 by Gary (talk | contribs) (Process)
Jump to: navigation, search

A requirement is an expressed demand, desire, expectation, and/or wish to have or not to have a certain product and/or a certain capability, condition, feature, and/or property. The plural term, requirements, may refer to the aggregate of various requirements that the product owner or another authority for the requested product and/or its development process has approved, verified, and/or validated. Those requirements that limit the product's or process of the production's capabilities and/or conditions are called constraints.


Definitions

Common definitions

The common-style definitions particularly include:

Engineering definitions

According to the Rational Unified Process (RUP), which is an iterative software development process framework that IBM markets,
A requirement describes a condition or capability to which a system must conform; either derived directly from user needs, or stated in a contract, standard, specification, or other formally imposed document.
According to the second version of the A Guide to the Business Analysis Body of Knowledge® (BABOK Guide), a requirement is:
  1. A condition or capability needed by a stakeholder to solve a problem or achieve an objective;
  2. A condition or capability that must be met of possessed by a deliverable or its component to satisfy a contract, standard, specification, or other formally imposed documents; AND/OR
  3. A documented representation of a condition or capability as in (1) or (2).
The IEEE Standard Glossary of Software Engineering Terminology defines a requirement similarly to the two definitions above.

Stakeholder definitions

From a stakeholder perspective, a requirement is anything that helps:
  1. Customers to describe what they wish to obtain;
  2. Suppliers to understand what the customer wants;
  3. Requirements staffers to substantively develop requirements blueprints for their own organizations, as well as other requirements documents such as requirements quality checklists, requirements creator's handbooks, etc.

Applications

Requirements are widely used in business analysis, process optimization, procurement, product development, project management, systems engineering, and many other areas. Because of variety of applications, several views of what requirements are, how they should be organized and how they should be utilized compete against each other.

Business analysis

Requirements for the solutions to be designed, developed, and delivered are in the core of business analysis.

New product development

Requirements for the products to be designed, developed, and delivered are in the core of new product development. Hewlett-Packard developed the FURPS system, which is quite popular in the software development and particularly promoted by IBM. The Agile methodologies widely use product requirements in forms of user story, epic story, and so on.

Procurement

Requirements for the products to be purchased are in the core of procurement. Forms of the procurement requirements range from oral statements such as I would like to buy the cheapest soap you carry and up to procurement statements of work, business cases, etc.

Project management

Requirements for the unique product, service, or result to be designed, created, and delivered are in the core of project management. AXELOS Ltd and the PMI lead the industry research on requirements.

Sales engineering

Requirements for the products to be sold are in the core of sales engineering. Regardless of the fact whether anyone in marketing and sales knows what the term, requirement, means, any good sales representative asks a potential buyer about what he or she wants to buy at least and, probably, on what conditions and at what price.

Systems engineering

Requirements for the systems to be designed, developed, and delivered are in the core of systems engineering. The IEEE and the INCOSE lead the industry research on requirements.

Natural classifications

Categorized by audiences

Requirements developers develop requirements. There two major pairs of audiences that primarily consume those requirements:
  1. Customer and contractor when the requirements are needed to understand or confirm what needs to be done and, possibly, how what needs to be done would be done.
  2. Contractor's management and implementing staffers when a set of requirements needs to be bettered and/or broken-down in order to be implemented by a contractor's team and/or subcontractors. This type of requirements is often called technical requirements.

Categorized by imposing party

Any requirement can be imposed by one or more of the following three:
  1. Customer, who states what is needed to be solved and, possibly, how what needs to be solved should be solved;
  2. Contractor, who has its own circumstances, both resources and limitations;
  3. Third party such as:
Some requirements are originated from the sources such as demographics, economy, and geography that are outside of those three, but they need to be brought to the operations or project by one of those three.

Categorized by progress

Requirements can be categorized based on their state in the requirement lifecycle:
  1. Stated requirement. A requirement articulated by a stakeholder that has not been analyzed, verified, or validated. Stated requirements frequently reflect the desires of a stakeholder rather than the actual need.
  2. Confirmed requirement.
  3. Prioritized requirement.
  4. Organized requirement.
  5. Modeled requirement.
  6. Verified requirement. Requirements that have been shown to demonstrate the characteristics of requirements quality and as such are cohesive, complete, consistent, correct, feasible, modifiable, unambiguous, and testable.
  7. Validated requirement. A requirement that has been demonstrated to deliver business value and to support the business goals and objectives.
  8. Reviewed requirement.
  9. Approved requirement.
  10. Implemented requirement.

Product vs process

With regard to its nature, a requirement may refer to:

Modeled classifications

Because of the variety of research frameworks, a few competitive taxonomies exist.

IIBA-marketed taxonomy

Particularly through their BABOK Guide, the IIBA markets the following taxonomy:
  1. Business requirement. The highest level of the the IIBA's hierarchy of requirements. Business requirement is a business rationale for one or more changes that, when implemented, will permit the organization to increase revenue, avoid costs, improve service, or meet regulatory requirements. The rationale commonly includes the organizational goals, objectives, and needs; it usually describes opportunities that an organization wants to realize or problems that they want to solve. A business case is the common form of a business requirement.
  2. Stakeholder requirement. Mid-level statements of the needs of a particular stakeholder or group of stakeholders. They usually describe how someone wants to interact with the intended solution. Often acting as a mid-point between the higher-level business requirements and more detailed solution requirements.
  3. Solution requirement, including architecturally significant requirements.
  4. Transition requirement. The lowest level of the the IIBA's hierarchy of requirements. Transition requirements are statements of capabilities or behavior required only to enable the transition from the current state of the enterprise to the desired future state, but that will thereafter no longer be required. Examples include recruitment, role changes, education, migration of data from one system to another.

FURPS+ system

The FURPS+ system for requirements classification has been initially developed by Robert Grady at Hewlett-Packard and is now used widely in the industry, most notably, by IBM. The acronym FURPS represents:
  1. Functionality
  2. Usability
  3. Reliability
  4. Performance
  5. Supportability
The "+" in FURPS+ indicates concerns related to design requirements, implementation requirements, interface requirements, and/or physical requirements.

Forms

Artifacts

Those artifacts that serve as requirements can be divided into two categories:
  1. Concept artifacts such as wireframes, mockups, prototypes, etc.
  2. Existing products, especially competitor's ones.

Initiating documents

Specifications

Main wikipage: Requirements specification
  1. Business requirements document (BRD). Also known as a Business Needs Specification, a BRD is the first stage in a product life cycle. It details the problems that a product/service/system is trying to solve by logically listing high-level business requirements in relation to customers’ needs.
  2. Functional requirements document (FRD). An FRD defines in logical terms, how a system or project will accomplish the requirements laid out in the BRD. It outlines the functionality of the system in detail by capturing the intended behaviour of the system, expressed as services, tasks or functions that the developers have agreed to provide.
  3. Market requirements document (MRD). Sometimes referred to as a Marketing Requirements Document, an MRD focuses on the target market’s needs. It typically explains: What the product is, who the target customers are, what products are in competition with it and why customers are likely to want this product.
  4. Product requirements document (PRD). A PRD is used to communicate everything that must be included in a product release for it to be considered complete. It is written from a user’s point-of-view to understand what a product should do. It usually includes the same content as an FRD, but with ‘non-functional requirements’ added. Although non-functional requirements are not related to the functionality of the product, it’s often important to identify them - they may include such needs as reliability, security and scalability.
  5. Quality requirements document. The quality requirements document outlines the expectations of the customer for the quality of the final product. It consists of various criteria, factors and metrics that must be satisfied.
  6. Software requirements specification (SRS). An SRS outlines the features and the intended behaviour of a system. It describes the business’s understanding of the end user’s needs while laying out functional and nonfunctional requirements.
  7. Technical requirements document (TRD). A TRD contains the software, hardware and platform requirements of the product. It includes requirements like the programming language the system should be developed in and the processor speed required to run the system.
  8. User interface requirements document (UIRD). A UIRD describes the look and feel of the User Interface (UI) of the system.
  9. User requirements document (URD). A requirements document written for a user audience, describing user requirements and the impact of the anticipated changes on the users.

Undocumented requests

Workteam documents

To organize implementation of higher-level requirements, workteams casually use the following lower-level documents:
  • In the Agile methodology:
    1. Product backlog.
    2. Sprint backlog.
    3. Epic story. A large user story that, in its current state, would be difficult to estimate or to complete in a single iteration. Epic stories are typically lower priority and are waiting be broken down into smaller components.
    4. User story. A high-level, informal, brief, non-technical description of a solution capability that provides value to a stakeholder. In other words, a user story is description of a system requirement written from the customer's or end-user's point of view. A user story is typically one or two sentences long and provides the minimum information necessary to allow a developer to estimate the work required to implement it. Either the product owner or the team writes user stories according to the following structure: as a [type of user], I want to [perform some task (or execute some function)], so I can [achieve some goal].
  • In the Waterfall model:
    1. Project task.
    2. Work order.

Features

Correctness

4.3.1 CorrectAn SRS is correct if, and only if, every requirement stated therein is one that the software shall meet.There is no tool or procedure that ensures correctness. The SRS should be compared with any applicablesuperior specification, such as a system requirements specification, with other project documentation, andwith other applicable standards, to ensure that it agrees. Alternatively the customer or user can determine ifthe SRS correctly reflects the actual needs. Traceability makes this procedure easier and less prone to error(see 4.3.8).


Clearness

An SRS is unambiguous if, and only if, every requirement stated therein has only one interpretation. As aminimum, this requires that each characteristic of the final product be described using a single unique term. In cases where a term used in a particular context could have multiple meanings, the term should be includedin a glossary where its meaning is made more specific. An SRS is an important part of the requirements process of the software life cycle and is used in design,implementation, project monitoring, verification and validation, and in training as described in IEEE Std1074-1997. The SRS should be unambiguous both to those who create it and to those who use it. However,these groups often do not have the same background and therefore do not tend to describe software requirements the same way. Representations that improve the requirements specification for the developer may be counterproductive in that they diminish understanding to the user and vice versa.Subclauses 4.3.2.1 through 4.3.2.3 recommend how to avoid ambiguity.4.3.2.1 Natural language pitfallsRequirements are often written in natural language (e.g., English). Natural language is inherently ambigu-ous. A natural language SRS should be reviewed by an independent party to identify ambiguous use oflanguage so that it can be corrected.4.3.2.2 Requirements specification languagesOne way to avoid the ambiguity inherent in natural language is to write the SRS in a particular requirementsspecification language. Its language processors automatically detect many lexical, syntactic, and semanticerrors.One disadvantage in the use of such languages is the length of time required to learn them. Also, many non-technical users find them unintelligible. Moreover, these languages tend to be better at expressing certaintypes of requirements and addressing certain types of systems. Thus, they may influence the requirements insubtle ways. 4.3.2.3 Representation toolsIn general, requirements methods and languages and the tools that support them fall into three general cate-gories—object, process, and behavioral. Object-oriented approaches organize the requirements in terms of real-world objects, their attributes, and the services performed by those objects. Process-based approaches organize the requirements into hierarchies of functions that communicate via data flows. Behavioral approaches describe external behavior of the system in terms of some abstract notion (such as predicate calculus), mathematical functions, or state machines.The degree to which such tools and methods may be useful in preparing an SRS depends upon the size andcomplexity of the program. No attempt is made here to describe or endorse any particular tool.When using any of these approaches it is best to retain the natural language descriptions. That way, custom-ers unfamiliar with the notations can still understand the SRS.

Completeness

An SRS is complete if, and only if, it includes the following elements:a)All significant requirements, whether relating to functionality, performance, design constraints,attributes, or external interfaces. In particular any external requirements imposed by a system speci-fication should be acknowledged and treated.

b)Definition of the responses of the software to all realizable classes of input data in all realizableclasses of situations. Note that it is important to specify the responses to both valid and invalid inputvalues.c)Full labels and references to all figures, tables, and diagrams in the SRS and definition of all termsand units of measure.4.3.3.1 Use of TBDsAny SRS that uses the phrase “to be determined” (TBD) is not a complete SRS. The TBD is, however, occa-sionally necessary and should be accompanied bya)A description of the conditions causing the TBD (e.g., why an answer is not known) so that the situ-ation can be resolved;b)A description of what must be done to eliminate the TBD, who is responsible for its elimination, andby when it must be eliminated.

Consistency

Consistency refers to internal consistency. If an SRS does not agree with some higher-level document, suchas a system requirements specification, then it is not correct (see 4.3.1).4.3.4.1 Internal consistencyAn SRS is internally consistent if, and only if, no subset of individual requirements described in it conflict.The three types of likely conflicts in an SRS are as follows:a)The specified characteristics of real-world objects may conflict. For example,1)The format of an output report may be described in one requirement as tabular but in another astextual.2)One requirement may state that all lights shall be green while another may state that all lightsshall be blue.b)There may be logical or temporal conflict between two specified actions. For example,1)One requirement may specify that the program will add two inputs and another may specifythat the program will multiply them.2)One requirement may state that “A” must always follow “B,” while another may require that “Aand B” occur simultaneously.c)Two or more requirements may describe the same real-world object but use different terms for thatobject. For example, a program’s request for a user input may be called a “prompt” in one require-ment and a “cue” in another. The use of standard terminology and definitions promotes consistency.4.3.5 Ranked for importance and/or stabilityAn SRS is ranked for importance and/or stability if each requirement in it has an identifier to indicate eitherthe importance or stability of that particular requirement.Typically, all of the requirements that relate to a software product are not equally important. Some require-ments may be essential, especially for life-critical applications, while others may be desirable. Each requirement in the SRS should be identified to make these differences clear and explicit. Identifyingthe requirements in the following manner helps:a)Have customers give more careful consideration to each requirement, which often clarifies anyhidden assumptions they may have.b)Have developers make correct design decisions and devote appropriate levels of effort to the differ-ent parts of the software product.4.3.5.1 Degree of stabilityOne method of identifying requirements uses the dimension of stability. Stability can be expressed in termsof the number of expected changes to any requirement based on experience or knowledge of forthcomingevents that affect the organization, functions, and people supported by the software system.4.3.5.2 Degree of necessityAnother way to rank requirements is to distinguish classes of requirements as essential, conditional, andoptional.a)Essential. Implies that the software will not be acceptable unless these requirements are provided inan agreed manner.b)Conditional. Implies that these are requirements that would enhance the software product, but wouldnot make it unacceptable if they are absent.c)Optional. Implies a class of functions that may or may not be worthwhile. This gives the supplier theopportunity to propose something that exceeds the SRS.

Verifiability

An SRS is verifiable if, and only if, every requirement stated therein is verifiable. A requirement is verifiableif, and only if, there exists some finite cost-effective process with which a person or machine can check thatthe software product meets the requirement. In general any ambiguous requirement is not verifiable.Nonverifiable requirements include statements such as “works well,” “good human interface,” and “shallusually happen.” These requirements cannot be verified because it is impossible to define the terms “good,”“well,” or “usually.” The statement that “the program shall never enter an infinite loop” is nonverifiablebecause the testing of this quality is theoretically impossible.An example of a verifiable statement isOutput of the program shall be produced within 20 s of event ¥ 60% of the time; and shall beproduced within 30 s of event ¥ 100% of the time.This statement can be verified because it uses concrete terms and measurable quantities.If a method cannot be devised to determine whether the software meets a particular requirement, then thatrequirement should be removed or revised.

Modifiability

An SRS is modifiable if, and only if, its structure and style are such that any changes to the requirements canbe made easily, completely, and consistently while retaining the structure and style. Modifiability generallyrequires an SRS toa)Have a coherent and easy-to-use organization with a table of contents, an index, and explicit cross-referencing;b)Not be redundant (i.e., the same requirement should not appear in more than one place in the SRS);c)Express each requirement separately, rather than intermixed with other requirements.Redundancy itself is not an error, but it can easily lead to errors. Redundancy can occasionally help to makean SRS more readable, but a problem can arise when the redundant document is updated. For instance, arequirement may be altered in only one of the places where it appears. The SRS then becomes inconsistent.Whenever redundancy is necessary, the SRS should include explicit cross-references to make it modifiable.

Traceability

An SRS is traceable if the origin of each of its requirements is clear and if it facilitates the referencing ofeach requirement in future development or enhancement documentation. The following two types of trace-ability are recommended:a)Backward traceability (i.e., to previous stages of development). This depends upon each requirementexplicitly referencing its source in earlier documents.b)Forward traceability (i.e., to all documents spawned by the SRS). This depends upon each require-ment in the SRS having a unique name or reference number.The forward traceability of the SRS is especially important when the software product enters the operation and maintenance phase. As code and design documents are modified, it is essential to be able to ascertain thecomplete set of requirements that may be affected by those modifications.

Process

Lifecycle

Main wikipage: Requirement lifecycle
A requirement lifecycle is the cycle through which requirements tend to go through from their collection to implementation.

MoSCoW method

The MoSCoW method (alternatively known as MoSCoW analysis, MoSCoW prioritization) is a prioritization technique used in business analysis, enterprise administration, project management, and new product development to reach a common understanding with stakeholders on the importance they place on the delivery of each requirement.
The term, MoSCoW, itself is an acronym derived from the first letter of each of four prioritization categories. Two interstitial Os are added to make the word pronounceable:
  1. Must have. The must-have requirements are critical to the current sprint; missing any of them constitutes a project failure.
  2. Should have. The should-have requirements are important, but not necessary in the current sprint.
  3. Could have. The could-have requirements are desirable but not necessary and can be included if time and other resources permit.
  4. Won't have at this time. The won't-have-this-time requirements are the least-critical, lowest-payback items, or not appropriate in the current sprint.

Responsible staffers

The customers' needs are the origin of the project, so the customer is ultimately responsible for determining their requirement. Governments are responsible for regulations. Other third parties impose expectations, standards, etc. Within the contractor organization, the following staffers are casually involved in developments of requirements, usually the technical ones:
  1. Business analyst. is responsible for discovering the problem/requirements and determining the solution.
  2. Marketing manager. develops the marketing strategy for the project in line with its requirements.
  3. Product manager. is responsible for defining the why, when, and what of the product that the development team will build.
  4. Product owner.
  5. Project manager. is responsible for delivering the solution to a problem.
  6. Systems analyst. uses analysis and design to satisfy business requirements using information technology.
  7. Team lead.

Related concepts

  1. Business need. A type of high-level business requirement that is a statement of a business objective, or an impact the solution should have on its environment.
  2. Use case. An analysis model that describes the tasks that the system will perform for actors and the goals that the system achieves for those actors along the way.
    • Included use case. A use case composed of a common set of steps used by multiple use cases.
    • Use case diagram. A type of diagram defined by UML that captures all actors and use cases involved with a system or product.
    • Work product. A document or collection of notes or diagrams used by the business analyst during the requirements development process.

Related lectures

See also