A software design where new features can be added as independent modules without modifying the core codebase.