What Is a Software Requirement

A software requirement is a capability that somebody needs or wants. It can be a component of an entire new application, a new feature for an existing application (an enhancement), or a request to correct a current shortcoming.

IEEE defines a requirement as: (a) a condition or capability needed by a user to solve a problem or achieve an objective; (b) a condition or capability that must be met or possessed by a system or system component to satisfy a contract, standard, specification, or other formally

imposed document; (c) a documented representation of a condition or capability as in definition (a) or (b).1—1

Types of Software Requirements

A requirement may be conscious (known, spoken)—something a stakeholder believes to be necessary. There are also "unconscious requirements," forgotten (unspoken) by the stakeholder because they aren't needed right now, or they are unknown because they are needed only by another stakeholder, or they are satisfied by some existing process, manual or automated. Weinberg and others suggest there are also "undreamed-of requirements" (unknown, unspoken)—those that the stakeholder doesn't know can be had.

A conscious, forgotten, or unknown requirement may be functional or nonfunctional. Functional requirements specify what the software has to do. They are traceable to a specific source, often to use cases or business rules. They are often called "product features."

Nonfunctional requirements are mostly quality requirements that stipulate how well the software does what it has to do. Nonfunctional quality requirements that are especially important to users include specifications of desired performance, availability, reliability, usability, and flexibility. Nonfunctional quality requirements that are especially important to developers and maintainers include specifications of desired configurability and integratability of the software system, as well as maintainability, portability, and testability. Nonfunctional requirements may also be implicit requirements for changeability, reusability, and interoperability.

Some functional/nonfunctional requirements cannot be satisfied by one, or even a small set of, system components and are therefore dependent on other parts of the system. These require systemwide properties and a superset of quality requirements.

Some requirements are architectural, such as component-naming compatibility, interfaceability, upgradability, and "system buildability."

Other requirements are constraints, such as system design constraints, standards conformance, legal issues, and organizational issues. Constraints can come from users or organizations and may be functional or nonfunctional.

* previous

* previous

Project Management Made Easy

Project Management Made Easy

What you need to know about… Project Management Made Easy! Project management consists of more than just a large building project and can encompass small projects as well. No matter what the size of your project, you need to have some sort of project management. How you manage your project has everything to do with its outcome.

Get My Free Ebook

Post a comment