Crescendo is already organized and stays organized even as it is extended.
One of the great challenges of software development is code organization. Yet "organization" seems like a dull task, the purview of bookkeepers, clerks, and secretaries, far from a great challenge—but it is. It is a challenge of execution rather than conception. Like a New Year's Resulution to exercise more, the concept of keeping code organized is easy, but the execution is difficult.
The anti-pattern of good code is spaghetti code. SIMPL signals and slots naturally become spaghetti. SIMPL modules are the first, best solution to SIMPL spaghetti. Nevertheless, many experienced SIMPL programmers are reluctant to modularize because modules make debugging and extending code difficult.
|S-2-2-1||Rooms||Discovers Room modules and provides Room data to Rooms-Sources Controller.|
|S-2-2-*||Room||Provides control of associated Switcher modules to connected controllers.|
|S-3.1.1||Touchscreen||Provides control of Room, Source, and Device modules to two-way graphical interfaces.|
|S-3.1.2||Rooms-Sources Controller||Provides the Move Rooms, Watch Source, Listen to Source, and Share Source menus.|
|S-3.1.*||Devices Controller||Provides Select Lights or Select Climates menus.|
|S-4.2.1||Sources||Discovers Source modules and provides Source data to Rooms-Sources Controller.|
|S-4.2.1||Lights||Discovers Lights Keypad modules and provides Lights Keypad data to Devices Controller.|
|S-4.2.1||Climates||Discovers Climate modules and provides Climate data to Devices Controller.|