Formal Methods in Testing Software Architectures