ADD is concerned with explicitly identifying the desired quality attributes of an architecture. Many of us know that simply implementing the (functional) requirements correctly is just the beginning of any good design, and possibly not even the most important attribute of the design. In addition to other attributes like security or availability, there are also attributes like modifiability of an architecture. And it is often these attributes that, if attained, are the true indication of whether or not we've done a good job.
Some of the more commonly desired quality attributes are:
- Availability
- Modifiability
- Performance
- Security
- Testability
- Usability
ADD also explicitly mentions the use of patterns and tactics as part of its methodology for achieving quality attributes and making design tradeoffs (quality attributes are often the "forces" for a pattern). For each of the common quality attributes above, it identifies a taxonomy of common tactics and patterns used to make good tradeoff decisions for particular aspects of the design.
Although it look s a bit heavyweight, ADD looks promising in its use of patterns and tactics and recursive/iterative nature. But what I like most about it is that fact that it makes explicit the kinds of quality attributes and their non-functional use-cases or "stories" which can then have business value/priority associated with it, and thereby justify the existence of activities that help realize those attributes of the system.
For some more information on ADD, see the following:
- Software Architecture in Practice
- The SEI webpage on Attribute-Driven Design
- The paper Quality Attribute Design Primitives and ADD
- Introduction to the ADD Method
- A Practical Example of Applying ADD (SEI Technical Report)
- Links from Real-world Software Architecture in .NET Developer's Journal
- Presentation from Paul Clements on Designing Software Architectures
- The paper Generalizing a Model of Software Architecture Design from Five Industrial Approaches (by a star-studded list of authors in the field)
4 comments:
Hi Bradd,
Interesting to read your thoughts.
However, 1 point regarding the following quote of yours
---------------------------------------
--quote
---------------------------------------
Seems to me that in Agile development, we're really not anti-process, but there are some really important things (quality attributes of a process?) that we feel are often left out to pasture by a lot of the very formal, CMMI-based processes we witness. Perhaps they're ignoring these important process-design quality attributes? (as embodied in the Agile Manifesto?)
---------------------------------------
--unquote------------------------------
---------------------------------------
Question / Request for verification/explanation of the above after reading the below link
http://www.sei.cmu.edu/pub/documents/07.reports/07tn002.pdf
Hi Anilkuppa,
I;m not sure I understand your question. I'm not sure what specific part or parts of the paper you reference you feel relate to what I said. I didn't see any examples of CMMI-based process there. I saw things that described the CMMI framework and principles and concepts.
What I didn't see was one or examples of instances of CMMI-based processes. I think there are lots of things that get left out when folks try to apply CMM or CMMI in their own environment. That includes a great many things that even the CMM/CMMI say is important, but which are all too commonly passed over somehow (despite even CMM/CMMI saying they are important)
" But what I look most about it is that fact that it makes explicit the kinds of quality attributes and their non-functional use-cases or "stories" which can then have business value/priority associated with it, and thereby justify the existence of activities that help realize those attributes of the system."
Brad thanks for making me aware of ADD. I wasn't. And should be.
I have campaigned since 'time immemorial' (Software Metrics book 1976 for example) to get quality factors integrated into our development process. There is some progress, but the Agile community is a step backward in that they really manage to ignore qualities, and focus on coding functions etc.
I have a great deal more to say with pragmatic detail at www.gilb.com
Tom@Gib.com
Hi Braad,
I have begun my PhD in Software Architecture Qualities. I read your post and it cleared a lot of ideas in my mind. Now I will read and know more about your Blog.
Thank you so much for your contributions.
Eudis
Post a Comment