Note

A software artifact should be open for extension but closed for modification.

Accomplished by partitioning the system into components, and arranging those components into a dependency hierarchy that protects higher-level components from changes in lower-level components

See also