Establish and maintain a definition of required functionality and quality attributes.
One approach to defining required functionality and quality attributes is to analyze scenarios using what some have called a “functional analysis” to describe what the product is intended to do. This functional description can include actions, sequence, inputs, outputs, or other information that communicates the manner in which the product will be used. The resulting description of functions, logical groupings of functions, and their association with requirements is referred to as a functional architecture. (See the definitions of “functional analysis” and “functional architecture” in the glossary.)
Such approaches have evolved in recent years through the introduction of architecture description languages, methods, and tools to more fully address and characterize the quality attributes, allowing a richer (e.g., multi-dimensional) specification of constraints on how the defined functionality will be realized in the product, and facilitating additional analyses of the requirements and technical solutions. Some quality attributes will emerge as architecturally significant and thus drive the development of the product architecture. These quality attributes often reflect cross-cutting concerns that may not be allocatable to lower level elements of a solution. A clear understanding of the quality attributes and their importance based on mission or business needs is an essential input to the design process.
Example Work Products
- Definition of required functionality and quality attributes
- Functional architecture
- Activity diagrams and use cases
- Object oriented analysis with services or methods identified
- Architecturally significant quality attribute requirements
1. Determine key mission and business drivers.
2. Identify desirable functionality and quality attributes.
Functionality and quality attributes can be identified and defined through an analysis of various scenarios with relevant stakeholders as described in the previous specific practice.
3. Determine architecturally significant quality attributes based on key mission and business drivers.
4. Analyze and quantify functionality required by end users.
This analysis can involve considering the sequencing of time critical functions.
5. Analyze requirements to identify logical or functional partitions (e.g., subfunctions).
6. Partition requirements into groups, based on established criteria (e.g., similar functionality, similar quality attribute requirements, coupling), to facilitate and focus the requirements analysis.
7. Allocate customer requirements to functional partitions, objects, people, or support elements to support the synthesis of solutions.
8. Allocate requirements to functions and subfunctions (or other logical entities).