I will describe the principles involved in the design of software architecture. The premise is that the design of software architecture is determined by the quality attributes requirements for a system. The quality attributes that we have focused on are: availability, modifiability, performance, security, and usability.
I will discuss why quality attributes are important, how to specify quality attribute requirements in a common form, design primitives to support the achievement of each quality attribute and how these can be applied to the design and evaluation of software architectures.