0% found this document useful (0 votes)
15 views6 pages

Understanding Attribute-Driven Design (ADD)

Attribute-Driven Design (ADD) is a structured methodology in software engineering that focuses on fulfilling a system's quality attribute requirements through a series of design iterations. The process involves identifying architectural drivers, decomposing the system, allocating functionality, defining interfaces, and verifying the architecture. ADD offers a systematic approach, emphasizes quality attributes, and is flexible enough to be applied to various projects, ensuring robust and adaptable system architectures.

Uploaded by

Sandra Sreekutti
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
15 views6 pages

Understanding Attribute-Driven Design (ADD)

Attribute-Driven Design (ADD) is a structured methodology in software engineering that focuses on fulfilling a system's quality attribute requirements through a series of design iterations. The process involves identifying architectural drivers, decomposing the system, allocating functionality, defining interfaces, and verifying the architecture. ADD offers a systematic approach, emphasizes quality attributes, and is flexible enough to be applied to various projects, ensuring robust and adaptable system architectures.

Uploaded by

Sandra Sreekutti
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd

Attribute-Driven Design (ADD)

In the realm of software engineering, Attribute-Driven


Design (ADD) stands out as a methodical approach to
ensure that a system’s architecture fulfills its quality
attribute requirements. This article delves deeper into the
intricacies of ADD, outlining its key concepts, steps, and
benefits.

Architecture design is performed in a series of rounds across


the development of a software project. Each design round
may take place within a project increment such as a sprint.
Within these rounds, a number of design iterations are
performed. Perhaps the most important charac- teristic of
the ADD method is that it provides detailed, step-by-step
guidance on the tasks that have to be performed during the
design iterations.

ADD has been used successfully for more than 20 years.


Version 2.0 was published in 2006, and version 3.0 was
published in 2016, in the first edition of this book. While
dramatic changes have occurred in the development
landscape since the publication of version 3.0, the method
itself remains unchanged. That attests to the general
applicability of ADD.
Key Concepts of ADD
ADD is centered around several fundamental concepts:

 Quality Attributes: These are non-functional


requirements such as usability, reliability, performance,
and scalability that the system must meet.

 Architectural Tactics: Strategies or patterns employed


to achieve the desired quality attributes.

 Architectural Views: Different representations of the


system from various perspectives, including logical,
development, and physical views.

Steps in the ADD Process


The ADD process is a structured sequence of steps designed
to create a robust architecture:

1. Identify the Architectural Drivers: Start by identifying


the functional requirements, quality attributes (like
performance, modifiability, security), and constraints that
will guide the architecture design.

2. Decompose the System: Break down the system into


smaller, manageable modules or components.
3. Allocate Functionality: Assign specific functionalities to
different modules or components.

4. Define Interfaces: Specify the interfaces between


components to ensure they can communicate and interact
correctly.

5. Verify and Refine the Architecture: Continuously


check if the architecture meets the requirements and
make necessary adjustments.

Applying ADD: A Practical Example


Imagine you are tasked with designing a web application that
needs to be highly scalable and secure. Here’s how you
might apply the ADD process:

1. Identify Architectural Drivers: Determine that


scalability, security, and performance are the primary
concerns.

2. Decompose the System: Split the system into front-end,


back-end, and database components.

3. Allocate Functionality: Assign user interface handling to


the front-end, business logic to the back-end, and data
storage to the database.
4. Define Interfaces: Specify RESTful APIs for
communication between the front-end and back-end, and
SQL queries for database interactions.

5. Verify and Refine: Test the architecture against


scalability and security requirements, and make
adjustments to improve performance or address any
issues.

Benefits of ADD
The ADD methodology offers several significant advantages:

 Systematic Approach: Provides a structured method for


designing architectures, ensuring that all essential
aspects are considered.

 Focus on Quality Attributes: Ensures that non-


functional requirements such as performance and security
are addressed from the outset.

 Flexibility: Can be applied to various types of systems


and projects, making it a versatile tool for software
architects.

By following the ADD methodology, software architects can


create robust and high-quality system architectures that
meet both functional and non-functional requirements. This
systematic approach not only aids in addressing the critical
aspects of the system but also ensures that the architecture
can adapt to future changes and requirements

Common questions

Powered by AI

ADD compares favorably to other architectural methodologies by inherently incorporating flexibility through its focus on quality attributes and systematic design structured around architectural drivers. This approach inherently considers future adaptability and integration of evolving requirements and technologies. By prioritizing these factors from the start, ADD designs are naturally more robust and adaptable, capable of accommodating changes without significant restructuring, unlike methodologies that may prioritize functional requirements over adaptability .

The ADD approach ensures architectural decisions are aligned with a system’s quality attribute requirements by systematically identifying and focusing on architectural drivers from the outset. This involves determining crucial non-functional requirements and constraints, which guide the decomposition of the system into components and define their interactions and functionality allocations. The continuous verification and refinement steps ensure these decisions remain aligned with changing requirements and ensure the fulfillment of quality attributes like scalability, security, and performance .

The ADD methodology addresses the focus on non-functional requirements by prioritizing quality attributes from the onset of architectural design. It ensures that factors like performance and security are integral considerations throughout the development process, thus guaranteeing these non-functional requirements are explicitly addressed rather than being an afterthought. The systematic approach of ADD ensures that these attributes are foundational to the architecture, promoting robust and adaptable system architectures that can accommodate future changes .

The benefits of using the Attribute-Driven Design (ADD) methodology include providing a systematic approach for architecture design, ensuring comprehensive consideration of essential aspects. It focuses specifically on quality attributes to ensure that non-functional requirements such as performance and security are integral to the design. Furthermore, ADD is flexible and can be applied to various types of systems and projects, enhancing its versatility for software architects .

In a practical application, ADD would handle the architectural design of a highly secure and scalable web application by first identifying the architectural drivers such as scalability, security, and performance. It would then decompose the system into main components like the front-end, back-end, and database. Functionality would be allocated by assigning user interface tasks to the front-end, business logic to the back-end, and data storage to the database. Interfaces would be defined using RESTful APIs and secure SQL queries to facilitate safe and efficient communication. Finally, the architecture would be continually verified and refined against the scalability and security requirements .

The Attribute-Driven Design (ADD) has remained largely unchanged because its core methodology, which systematically structures architectural design around quality attributes and architectural drivers, is fundamentally sound and universally applicable. This timeless applicability ensures the method remains relevant despite evolving technologies and practices. The unchanged nature of ADD signifies its robustness and effectiveness in creating architectures that fulfill both current and evolving requirements .

The primary steps involved in the Attribute-Driven Design (ADD) process include: 1. Identifying the Architectural Drivers by considering functional requirements, quality attributes (e.g., performance, modifiability, security), and constraints. 2. Decomposing the System into smaller, manageable modules or components. 3. Allocating Functionality by assigning specific functionalities to different modules or components. 4. Defining Interfaces to ensure components can communicate and interact correctly. 5. Verifying and Refining the Architecture by checking if it meets the requirements and making necessary adjustments .

The modular decomposition aspect of ADD benefits the architecture design of complex systems by breaking down the system into smaller, manageable modules or components. This decomposition facilitates understanding, implementation, and maintenance of each module independently. It supports parallel development and allows teams to focus on specific components while simultaneously considering how they integrate within the overall system architecture. This approach enhances system modularity, scalability, and flexibility, crucial for evolving and complex system requirements .

Architectural tactics in the Attribute-Driven Design (ADD) approach are strategies or patterns employed to achieve desired quality attributes. They support the architecture by outlining specific ways to fulfill non-functional requirements such as performance, security, and scalability. These tactics guide the ADD process, particularly during system decomposition and interface definition, by providing a framework to apply best practices and patterns aimed at addressing architectural drivers effectively .

Defining interfaces early in the ADD process is crucial as it establishes how different components of the system will interact and communicate. This step ensures compatibility and integration are seamlessly planned, reducing the risk of misalignment and incompatibilities later in the development. Early definition of interfaces supports clarity and consistency in the design process, promoting more efficient collaboration and implementation of functional and non-functional requirements .

You might also like