The process of requirements engineering is an integral part of software and system engineering that includes identifying, analyzing, documenting, and managing the requirements of systems or software. Unfortunately, many companies still make the mistake of mixing implementation and requirements details into one large document. This often creates confusion among stakeholders and product designers, leading to delays and errors in the project. It can also increase the risk of scope creep, making it hard to trace the requirements back to their origin.
To create safe and dependable systems for the automobile sector, it is important that requirements be accurately defined, documented, and validated. This is where ISO 26262 and Automotive SPICE come into play.
The standards for the creation of safety-critical systems are outlined in ISO 26262, which also includes requirements engineering. The standard offers guidance on the procedure for identifying and documenting safety needs, including functional safety concepts, hazard analysis, and risk assessment. ISO 26262 also specifies the methods for validating and verifying the requirements to ensure that they meet the necessary safety integrity levels.
Automotive SPICE provides a framework for assessing & improving software development processes, including requirements engineering. The framework provides guidelines for developing a comprehensive set of requirements that are complete, correct, and consistent. It emphasizes the importance of involving stakeholders, such as customers and end-users, in the requirements engineering process to ensure that the requirements are aligned with their needs and expectations.
In addition, the proper level hierarchy for systems and subsystems is crucial. Requirements should be categorized according to their hierarchy levels to facilitate a better understanding of the system’s structure, components, and relationships by stakeholders and designers alike. By implementing these practices, stakeholders can ensure that the project progresses smoothly and efficiently, resulting in successful implementation.
Component selection can be considered both a requirement specification and an implementation detail, depending on the context. If the specific type or brand of a component is crucial for the proper functioning of the system or software, then it can be considered a requirement specification. However, if the performance characteristics and requirements of the component—rather than its precise location—are what matters, then it might be regarded as an implementation detail.
Unless there is a special demand for a particular component, it is advised to describe performance requirements and delegate component selection to the design and development teams. As a result, the design and development process can be more flexible and innovative, while the risk of obsolescence becomes lower, especially with regard to the future availability of a better or more affordable component.
Listed below are the benefits of separating requirements and implementation:
When requirements are separated from implementation, it allows for more creativity and innovation in the design and development process. This is because designers and developers are not limited by the details of the requirements. They can instead focus on finding the best solutions to meet the desired outcomes.
Separating requirements from implementation reduces the risk of rework, which is often caused by changes in the implementation details. Focusing the requirements on the desired outcomes allows for more flexibility in the implementation, reducing the likelihood of rework.
Separating requirements from implementation also enhances the overall quality of the system or software. This is because it allows for a more holistic approach to the design and development process. Designers and developers can focus on creating the best solution to meet the desired outcomes, without being constrained by implementation details.
Avoiding implementation details in requirements, increases the flexibility of the design and development process. This is because it allows for more options and alternatives in the implementation, which can lead to better and more efficient solutions.
The design and development process has been proven to be more affordable by separating requirements from implementation. By concentrating on the desired results, designers and software developers can find the most practical and cost-effective ways to fulfill the criteria, allowing for more effective use of resources.
Listed below are some requirements engineering best practices:
Requirements must be simple to grasp, precise, and clear. They should be written clearly and without using technical jargon.
Requirements should be grouped according to their level, from system-level to low-level software and hardware requirements. This helps stakeholders and designers better understand the system’s structure, components, and relationships.
Requirements should focus on the desired outcomes or functionality. Leave the implementation details to the design and development teams.
Using a requirements management tool can help streamline the requirements engineering process. It can help stakeholders and designers track and manage requirements, and ensure that they are properly documented and communicated.
Regular reviews of the requirements can help identify any inconsistencies, ambiguities, or missing requirements. Additionally, it can assist in ensuring that the requirements are still current and applicable.
Separating requirements from implementation is essential for successful software and system engineering. It helps promote innovation, reduce rework, enhance quality, increase flexibility, and reduce costs. By following best practices for requirements engineering, such as defining clear and concise requirements, establishing a proper hierarchy, focusing on outcomes, using a requirements management tool, and conducting regular reviews, stakeholders and designers can ensure that requirements are properly documented and communicated and that they lead to successful and high-quality products and services for end-users.