A framework for integration of functional and non-functional analysis of software architectures