Syllabus: Component-based design of software systems