Designing models so independent components can be used, removed, or composed separately without performance loss.