Attribute-driven design
Attribute-driven design[1][2] (also called ADD or Attribute-driven design method) is a methodology to create software architectures that takes into account the quality attributes of the software. It was previously known as the Architecture Based Design Method (or ABD), but due to trademark issues the name was changed to Attribute-driven design around 2001.[3]
The attribute-driven design method
In the book Software architecture in practice[4] the authors describe ADD as an iterative method that, at each iteration, helps the architect to do the following steps:
- Choose a part of the system to design.
- Marshal all the architecturally significant requirements for the selected part. This means that you select all quality attributes and business goals that could affect the architecture of this phase.
- Create an architecture for the selected part that meets the selected architecturally significant requirements and test this design.
Required input
ADD can only be started successfully when the following resources are already available:
- functional requirements
- quality requirements
- constraints
Of course, we cannot wait until all these requirements are finalized since this can take a while. The ADD process can start once a set of ASRs (architecturally significant requirements, which are the three resources listed above) are available.
Process steps
- Choose an element of the system to design
- Select an element of the system that is not yet designed. In the first iteration this will be the system itself. Later on, a choice will need to be made between several elements. This choice can be based on personnel availability, input resources availability, risk mitigation, etc. In case you do not have any of these limitations, it is suggested to go for a breadth-first strategy.
- Identify the Architecturally Significant Requirements (ASR) for the chosen element
- Identify the ASRs that are most important for this selected element. You should prioritize these requirements to make sure that your design reflects the most important ASRs.
- Generate a design solution for the chosen element
- This step is the heart of ADD since the architecture will be created in this step. The architecture you create should reflect the selected ASRs. You can do this by making use of architectural patterns or tactics. Most of the times you will have to make a trade-off between several tactics and ASRs.
- Inventory remaining requirements and select the input for the next iteration
- Take a look at the listed ASRs and see whether they are already fulfilled with the design you have at the moment. For each ASR you will have to check whether it is satisfied, delegated to one of the children, distributed among the children or whether it can not be satisfied. In the last case you will need to change your architecture.
- Repeat steps 1-4 until all the ASRs have been satisfied
- Repeat!
Output
A set of sketches of architectural views, not a full-blown detailed architecture.
ADD 3.0
In recent years, ADD has been updated substantially to include platform-specific design, e.g. technology and framework choices via design concept catalogs, and to emphasize the making and documentation of architectural decisions.[5]
References
- ^ Wojcik, Rob; Bachmann, Felix; Bass, Len; Clements, Paul C.; Merson, Paulo; Nord, Robert; Wood, William G. (November 2006). "Attribute-Driven Design (ADD), Version 2.0". SEI.
- ^ "Attribute-Driven Design Method". SEI.
- ^ Bachmann, Felix; Bass, Len (2001). "Introduction to the Attribute Driven Design Method". IEEE. pp. 745–746. CiteSeerX 10.1.1.97.5395.
- ^ Bass, Len; Clements, Paul; Kazman, Rick (2013). "Chapter 17". Software Architecture in Practice (third ed.). Pearson. ISBN 978-0-321-81573-6.
- ^ Cervantes H., Kazman R., Designing software architectures, Addison Wesley, 2016.
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.