In order to have a software architecture design method that achieves quality attribute requirements several aspects of the method must be in place. First there must be some way to specify quality attribute requirements so that it can be determined whether the designed architecture can achieve them. Secondly, there must be some way for modularising the knowledge associated with quality attributes so that the design method does not need to know how to reason about all of the multiplicity of quality attributes that exist. Finally, there must be some way for managing the interactions among the quality attributes so that either the requirements can be satisfied or the ones that cannot be satisfied are identified. The authors describe a structure called a 'reasoning framework' as a modularisation of quality attribute knowledge. The requirements that the architecture must satisfy are specified as concrete quality attribute scenarios. Each reasoning framework provides mechanisms that will transform the architecture with respect to a given quality attribute theory. Within a reasoning framework, the authors distinguish between an architectural model and a quality attribute model and characterise the actions that a reasoning framework undertakes as basic architectural transformations. Finally, the process of identifying interactions among reasoning frameworks is begun so that conflicting requirements can be managed. The use of reasoning frameworks is situated inside an existing architectural design method so that a useful method exists while the open issues of designing to achieve quality attribute requirements are resolved.