Foundations for the study of software architecture | Synapse