Requirements for Software Architects – Part 2
Agile Requirements Engineering and their Roles
Welcome back to the second article in our “Requirements for Software Architects” blog series. We will dedicate this article to agile requirements engineering and their roles.
Basic terms of software architecture
Definition
There are numerous definitions of software architecture, which is why we are limiting ourselves to just two:
The fundamental principles or properties of a system in its environment, embodied in its elements, relationships, and in the principles of its design and development. (ISO/IEC/IEEE 42010)
A software or computer system’s software architecture is one or several structures of a system that comprises the software elements, the externally visible properties of these elements, and the relationship between the same. (Bass, Clements, Kazman Software Architecture in Practice, Addison Wesley, 2003.)
The tasks of software architects
Software architects are tasked with actively designing the software architecture and ensuring its implementation and effectiveness. In the process, they are essentially required to meet the following objectives in a project:
- Assist with the design, implementation, maintenance, and operation of the system
- Ensure that the functional requirements can be fulfilled
- Achieve quality requirements to the desired extent
- Systematically reduce complexity
- Specify architecture-related guidelines for implementation and operation
An architect’s work can be broken down into six activities:
- Clarify requirements
- Draft structures
- Create cross-cutting concepts
- Assess architectures
- Supervise implementation
- Communicate architectures
The first step of “clarifying requirements” constitutes the interface with requirements engineering, among other things. In the process, the architect attempts to determine which requirements are architecturally relevant.
ASR: Architecturally Significant Requirements
Architecturally Significant Requirements (ASRs) comprise the most important architectural requirements. Whether they are functional or non-functional requirements is irrelevant. Therefore, ASRs are requirements that directly impact architectural design.
An architect should have coordinated and documented all the NFRs with the stakeholders. A functional or non-functional requirement can often obtain or lose ASR status in different phases of the software lifecycle.
Its design and particularly its design decisions should therefore create transparency based on which ASRs a decision or design is based on to achieve comprehensibility and ensure an effective architecture.
Figure 1: Architecture in technical perspective view
In order to achieve this, software architects should consistently review these requirements and explain the differences and particularities. Awareness should be raised among the PO, RE, and BA in particular, as well as with other actors, for a better understanding and improved communication.
Some common sources for ASRs include:
- Requirements documentation (e.g., product backlog)
- Stipulation with the service level (SLA)
- Specialized knowledge
- Applicable standards or guidelines
As long as ASRs exist in the documentation, they can be analyzed and improved by software architects. However, if they are not documented or incompletely documented, there is the risk of an ineffective architecture. An ineffective architecture is unable to meet functional and non-functional requirements and not only poses a significant project risk but is furthermore expensive to change the longer the project progresses.
Therefore, to put architectural design on the right track, Architecturally Significant Requirements (ASR) must have priority in identification and documentation.
Agile requirements engineering
As previously established, requirements should not only be properly surveyed but also understandably communicated. They should also be checked to see if they are being met. Requirements are constantly changing and require maintenance.
Agile requirements engineering is a cooperative, iterative, and incremental approach that is intended to achieve this goal. It is largely divided into two phases: The definition phase (creating the requirements) and the actual implementation phase (development). Unlike conventional procedures, both the definition and implementation phase take place in parallel.
This results in many advantages, which include quickly and flexibly responding to changed or new conditions.
This is guaranteed by the fact that the requirements description is never concluded and is constantly re-written and amended during the entire development period. In other words, if individual aspects of a process differ from acceptable thresholds or if the resulting product is unacceptable, the process or the achieved results must be adjusted. Adjustments should be made as quickly as possible to reduce further deviations. This approach pursues four objectives:
- Familiarization with the relevant requirements at an adequate level of detail (at each point in time during the system development process).
- Reach an adequate consensus on requirements among the stakeholders.
- Record and document the requirements according to the constraints and requirements of the organization.
- Perform all requirements-related activities according to the principles of agile manifest.
Requirements engineering activities are highly diversified and depend on the type of system and organization specification to be developed. Nevertheless, agile requirements engineering also includes the following four central activities that have been established by IREB:
- Surveying requirements: Requirements are determined as efficiently, thoroughly, and error-free as possible using many different methods, which also includes detailing and refinements.
- Documenting requirements: Requirements must be adequately described with high quality so as to create the requirements specification with all the relevant requirements.
- Reviewing and coordinating requirements: The overall quality of the requirements specification is reviewed, which also includes coordinating its contents with the stakeholders.
- Requirements management: Requirements management deals with preparing requirements for use, managing the versions, setting priorities, etc.
The difference between requirements engineering and requirements management
Often times, the terms “Requirements Engineering” and “Requirements Management” are erroneously used interchangeably. When referring to a holistic requirements engineering approach, it must always be done strictly within the meaning of requirements management. Looking back at the aforementioned, four central activities, requirements engineering mainly relates to the first three items. Requirements engineering is requirements management and comprises the fourth central activity.
However, both specialized terms are inextricably linked with each other and go hand-in-hand with requirements management: You cannot manage without investigation, and there is no benefit in investigating requirements without efficient management and preparation.
The Product Owner (PO), Business Analyst (BA), and Requirements Engineer (RE) roles
Agile requirements engineering is not carried out in an ad-hoc manner; rather, it is accomplished via different roles. In practice, there is often only one role (such as PO, BA, RE, or all combined). Regardless of how many roles exist in practice, the subdivision can be used to profitably arrange the different activities and responsibilities of requirements engineering and management, and structure your actual work.
The Product Owner is responsible for increasing value – i.e., profitability (ROI = Return of Investment) – not just in terms of the product but also in terms of the product team. Therefore, it is a demanding job, and he/she is assigned with carrying out three essential tasks:
- Represent the interests of customers
- Collaborate with the development team and the Scrum Master
- Manage the product backlog
He/she is supposed to bring the right functionality to the project in the right priority. Accordingly, he/she is supposed to master the following skills and tasks:
- Stakeholder analysis
- Surveying techniques
- Conflict management
- Prioritization (e.g., priority poker)
Similar to the PO role, the Business Analyst (BA) is supposed to have creativity and surveying techniques. Furthermore, they assist the Product Owner with surveying business requirements, their acceptance criteria and checking if and how the requirements suit the business processes.
Finally, the Requirements Engineer (RE) handles specifying requirements over the long term and translating them into the technical field.
All three roles should have the following skills:
- Stakeholder analysis
- Creativity techniques
- Surveying techniques (typically via interviews, design thinking, persona, etc.),
- Documentation techniques
- Modeling (typically via UML)
- Prioritizing requirements
All these skills can be used based on requirements and the area of responsibility.
In the next and last part of this blog series, we will look at the different, modern techniques that can be used in requirements engineering. We look forward to seeing you again.
Sources:
- Sommerville, Ian (2009). Softwareengineering (9th ed.). Addison-Wesley. ISBN 978–0‑13–703515‑1.
- Andreas Wintersteiger, Scrum Schnelleinstieg [a quick introduction to Scrum]
- McGreal, Don; Jocham, Ralph (June 4, 2018). The Professional Product Owner: Leveraging Scrum as a Competitive Advantage. Addison-Wesley Professional. ISBN 9780134686653.
- https://t2informatik.de/
- North, Introducing Behaviour Driven Development
- Dan North et al.: Question about Chapter 11: Writing software that matters. (no longer available online.) Archived from the original on November 7, 2009; retrieved on November 9, 2011: “The phrase ‘BDD is TDD done well’, while a nice compliment, is a bit out of date. […] BDD has evolved considerably over the years into the methodology we describe in the book. Back when it was focused purely on the TDD space– around 2003–2004 – this was a valid description. Now it only covers a small part of the BDD proposition”
- Schwaber, Ken; Sutherland, Jeff (November 2017), The Scrum Guide: The Definitive Guide to Scrum: The Rules of the Game, retrieved May 13, 2020
- “Lessons learned: Using Scrum in non-technical teams”. Agile Alliance. May 18, 2018. Retrieved April 8, 2019.
- Ken Schwaber; Jeff Sutherland. “The Scrum Guide”.org. Retrieved October 27, 2017.
- https://www.scrum.org/
- http://agilemanifesto.org/
- https://www.isaqb.org/
- https://swissq.it/agile/die-rollen-des-po-re-und-ba-im-vergleich/
Figures:
Figure 1: https://media.geeksforgeeks.org/wp-content/uploads/20200704172739/Untitled-Diagram160.png
This is a translation of ITech Progress’ blog post “Requirements for Software Architects – Agile Requirements Engineering und seine Rollen”. Here you can find the original blog post in German.