Realizing a shift of software engineering towards a component-based approach to software development requires the development of higher level programming systems supporting the development of systems from components. This paper presents a novel approach to the design of large software systems where a program-in-thelarge describing the system's architecture is executed at run-time to rule over the assembly and dynamic cooperation of components. This approach has several advantages following from a clean separation of concerns between programming-in-the-small and programming-inthe-large issues in instantiated systems.