Describing software architecture styles using graph grammars | Synapse