A Framework for the Integration of Functional and Non-functional Analysis of Software Architectures