Requirements Engineering: The Essential Part of Delivering High-Quality Products
Aidin Ziapour, Product Management and Design Sprint Coach
Linkedin Profile: https://www.linkedin.com/in/aidinziapour
Introduction
A problem well stated is a problem half solved. For product managers, this is not only a beautiful quote from a legend, but also a permanent tip to keep in mind. Over the years of working in the software development industry, I found that one of the main reasons for the failure of highly potential products in the market is totally related to weak Requirements Engineering and Business Analysis.
I would like to call this problem a pandemic. There are a limited number of companies and mature software teams in the world that properly implement the principles of RE, fully understand their user journey map, be aware of their current customer experience, their pains, and gains.
In 2002, Jim Johnson, director of the Standish Group, presented a report about the usage of features and functions in typical systems in the 3rd International Extreme Programming Conference in Italy. According to the report, 45% of the features and capabilities of a system are never used by end-users, and only 7% of the features are used permanently. But what is the reason for this? I tell you… “weak Requirements Engineering and Business Analysis”!
What is Requirements Engineering?
Before providing a definition for RE, I prefer to describe what the requirement is in the software development context. According to IREB CPRE-FL Glossary, the requirement definition is:
“ A condition or capability needed by a user to solve a problem or achieve an objective. “
The requirements related to end-users and customers are often expressed in the form of Pains and Desires. In fact, these requirements include the conditions and capabilities that make users and customers to actively looking for a solution that helps them to achieve their desired objectives while they have a delightful experience. On the other hand, there is another concept in software product development that is known as requirements engineering. According to IREB CPRE-FL Glossary, the RE definition is:
A systematic and disciplined approach to the specification and management of requirements with the following goals:
1. Knowing the relevant requirements, achieving a consensus among the stakeholders about these requirements, documenting them according to given standards, and managing them systematically.
2. Understanding and documenting the stakeholders’ desires and needs.
3. Specifying and managing requirements to minimize the risk of delivering a system that does not meet the stakeholders’ desires and needs.
The concept of Requirements Engineering refers to the process of defining, documenting, and managing the requirements of software products. Requirements engineering is a common concept in system engineering and software engineering, which was later discussed and implemented in the Product Management concept. In general, requirements engineering includes the following phases:
- Requirements Elicitation: The first step of RE is to examine the problem space and extract the right and real needs (not the ones we assume are probably needed by users and customers). Without exaggeration, the most important phase in software product development is the proper extraction of the real needs of those who are going to use your product (or service) in the future.
- Requirements Documentation: This phase of requirements engineering is often done after extracting and analyzing the requirements. Documentation of requirements is used to describe or model software requirements. Among the items used in documenting requirements are product backlog, product roadmap, product vison board, product specifications document, and the use case diagram.
- Requirements Validation: This is the Achilles heel of many software products that initially had the unique potential for success in the market but did not achieve remarkable success. Many software teams forget that before product development, they need to validate the identified and analyzed requirements. Failure to do so will increase the chances of developing products that will not use by users and greatly increase production costs.
- Requirements Management: In the traditional approach of software development, requirements management was often an activity related to the requirements description and maintenance over time. This includes things like version management, change management, configuration management, traceability, as well as status, estimates, priorities, links to conflicting requirements, and identifying people in need. However, after the evolution of Agile product development, most of the requirements management focus is on requirements prioritization and estimation.
An important point to note in this section is that the majority of the world’s software community believes that RE is simply an upfront activity that cannot be used in Agile development environments. “This is a misconception!”
RE is a dynamic and continuous activity. The product manager and development team must be constantly extracting requirements, analyzing them, documenting them, and continuously managing requirements so that they can deliver and maintain the products that both users and customers want. Don’t forget that the software industry is constantly undergoing extreme changes. This emphasizes the need for continuous RE during the software development process.
Requirements Engineering Techniques
Requirements engineering consists of four main sections, the proper implementation of each of these sections requires the use of different methods and techniques. In the following, an attempt has been made to introduce some of these techniques in each phase of RE:
- Requirements Elicitation: Some of the most important techniques used in this section are qualitative/quantitative interviews, questionnaires, observing current user experience, UX research, Design Thinking, and Design Sprint Problem Framing.
- Requirements Documentation: Some of the most widely used requirements documentation techniques are product vision board, product roadmap board, Use case Diagram, User Story Map, Product Backlog, Conceptual Modeling.
- Requirements validation: Some of the most important requirements validation techniques include increment release, UX Testing, Design Sprint, and Regression Test.
- Requirements Management: Some of the most widely used requirements management techniques (especially in Agile environments) for requirements prioritization include the MoSCoW and Impact-Effort Matrix. In addition, various techniques are used requirements estimation such as the T-shirt Sizes, the Affinity Mapping, the Planning Poker, and the Bucket System.
The outcome is everything…!
“ People don’t buy drills, they buy holes “
Dear friends!
RE is an undeniable part of the development of successful software products. Understanding and implementing it properly will lead to the development of value-based products. Always keep in mind that the product itself is of little value to its customers and users unless the Outcome provided by it makes a significant difference to their previous experience.