The goal of software engineering is to develop high quality software that is on time and on budget and that meets the customers’ needs. Therefore, as software engineers it is essential that we understand our customers’ needs in order to satisfy them. Having clear requirements early will help lower the risk of project failure and the large maintenance cost associated with defective requirements.
Where do the requirements come from?
It is important that understand that we typically have three levels of requirements: the business requirements, the user requirements and the system requirements.
Business Requirements: are statements of the business rational for authorizing the project. They typically include a project vision and scope for the product. They describe the high level purpose and needs that the product will satisfy in order to meet some business goal such as increasing revenue, reducing cost, improving customer service, or meeting government regulations. Documents that contain business requirements are referred to as project charter, business case, vision and scope, marketing requirements, statement of work, or project scope.
User Requirements: are statements that describe the tasks the users need to accomplish with software and the quality attributes of the software. It is worth noting that users can include humans, hardware and other systems as well. User requirements serve as the bridge between the business goals and the detailed software requirements. Documents that contain user requirements are often called product features, operational capabilities, concepts of operations or use cases.
Software Requirements: are detailed descriptions of the functional (things that application must do for its users or allow its users to do with the application) and non-functional requirements (characteristics and constrains for the software’s behavior) that the system must satisfy in order to meet the business and user requirements. These statements establish an agreement between technical people and business people on what the product must do. Documents that contain software requirements include the software requirements specification, technical specifications, detailed requirements, or functional specifications.
Having all three requirements levels will help us better understand the problem we are trying to solve.
What is requirements engineering?
Requirements engineering is a discipline within systems and software engineering that encompasses all of the activities and deliverables associated with defining product requirements. It is comprised of requirements development and requirements management.
A) Requirements Development is concerned with the activities of eliciting, analyzing, specifying and validating the requirements.
Elicit: identify the various stakeholders, documentation, external sources and solicit requirements from those sources.
Analyze: Define the user’s goals and product scope, explore how users will interact with the system, identify inconsistencies, omissions, errors and prioritize the requirements.
Specify: document functional and nonfunctional requirements, identify quality attributes, constraints and ensure that the requirements are clear and succinct.
Validate: examine the requirements to ensure that they satisfy the customers need.
It is worth noting that this process is iterative and it might not cover all of the requirements.
B) Requirements Management is concerned with the activities of supporting and controlling the requirements information gathered during the requirements development. These activities involved establishing a baseline, establishing a mechanism for change control and tracing requirements.
Establishing a baseline: this baseline is a set of agreed upon requirements at a particular point in time that capture important attributes about the product. This baseline will help track how requirements are evolving over time.
Change control mechanism: establish policies for recognizing, evaluating and deciding how to integrate new and evolving requirements into an existing requirements baseline.
Tracing requirements: this process involves identifying and documenting how requirements are related and identifying how requirements are related to business goals and objectives.
Having a solid requirements development and management process can lead to high quality software by ensuring that problems are found early and that the product meets the customers’ need.
What are the characteristics of good requirements?
Gathering and documenting high quality requirements are essential to the success of our software projects. We must ensure that all our requirements are:
Correct: They accurately represent the real needs of the various stakeholders.
Complete: They include all needed elements such as functionality, quality attributes, external interfaces and design constraints
Clear: They can be understood in the same way by all stakeholders with minimal explanation.
Concise: They are stated simply in the minimal possible way to be understandable.
Consistent: They do not conflict with other requirements.
Relevant: They are necessary to meet a business need, goal, or objective.
Feasible: They are possible to implement.
Verifiable: There is a finite, cost effective technique for verifying whether the requirement is satisfied.
Continuously validating the requirements and verifying the quality of the requirements early and frequently will help ensure that we are meeting all of our customers’ needs.
How are requirements documented?
There are various ways to represent requirements documents such as textual statements, tree diagrams and use case diagrams.