본문 바로가기

아키텍처

SOLID 원칙

SOLID 원칙의 목적

중간 수준―원칙을 모듈에 적용 할 수 있는 수준―의 소프트웨어 구조가 아래와 같도록 만드는 데에 있다.

  • 유연한 변경
  • 쉬운 이해
  • 많은 소프트웨어 시스템에 사용될 수 있는 컴포넌트의 기반

SOLID 원칙 요약

  1. SRP (단일 책임 원칙 Single Responsibility Principle)
    소프트웨어의 모듈은 변경의 이유가 단 하나여야만 한다. 하나의 모듈은 하나의 액터에 대해서만 책임져야 한다. 소프트웨어 시스템이 가질 수 있는 최적의 구조는 시스템을 만드는 조직 구조에 영향을 받는다는 콘웨이 법칙의 따름정리. 
  2. OCP (개방 폐쇠 법칙 Open-Colsed Principle)
    기존 코드를 수정하기 보다는 새로운 코드를 추가하는 방식으로 시스템 행위를 변경할 수 있도록 설계해야 한다. 확장에는 열려있고 변경에는 닫혀있어야 한다. 1980년대 버트란트 마이어에 의해 유명해진 원칙.
  3. LSP (리스코프 치환 법칙 Liskov Subsitiution Principle)
    상호 대체 가능한 구성요소를 이용해 소프트웨어 시스템을 만들 수 있으려면 구성요소끼리 치환 가능해야 한다. 1988년 바바라 리스코브가 정의한 하위 타입에 관한 원칙. 
  4. ISP (인터페이스 분리 원칙 Interface Segregation Principle)
    사용하지 않은 것에 의존하지 않아야 한다.
  5. DIP (의존성 역전 원칙 Dependency Inversion Principle)
    고수준 정책을 구현하는 코드는 저수준 세부사항을 구현하는 코드에 절대 의존해서는 안된다. 세부사항이 정책에 의존해야 한다. 구체적이고 변동성이 크다면 그 이름을 언급하면 안된다. 즉, 변동성이 큰 구체 클래스를 참조하거나 파생하지 않아야하며, 구체 함수를 오버라이드 하지 않는 것이 좋다.