로버트 마틴이 제창한 객체 지향 프로그래밍의 다섯가지 설계 원칙으로, 유지보수가 용이하고 유연한 소프트웨어를 만들기 위한 지침이다.
S: Single responsibility principle (단일 책임 원칙)
O: Open/closed principle (개방-폐쇄 원칙)
L: Liskov substitution principle (리스코프 치환 원칙)
I: Interface segregation principle (인터페이스 분리 원칙)
D: Dependency inversion principle (의존관계 역전 원칙)