Designing the high-level architecture