Using dependency models to manage complex software architecture | Synapse