In some cases (e.g., a graphical user interface), a complete subsystem architecture with many components must be designed.