The purpose of this book is to describe practical representations and techni- ques for the development of large-scale software architectures. The goal is to enable other software architects, developers, and managers to become more effective as a direct result of our experiences on several large-scal