유지가능(Maintainable)하고 확장가능(Extensible)한 시스템을 위한 객체 지향 디자인을 위한 5가지 기본 원칙
SRP: Single Responsibility Principle
OCP: Open-Closed Principle
LSP: Liskov Substitution Principle
ISP: Interface Segregation Principle
DIP: Dependency Inversion Principle
SRP: Single Responsibility Principle
하나의 모듈은 변경을 위한 하나의 이유만 있어야 한다.
모듈을 변경해야 할 이유가 두개 이상이라면 해당 모듈은 두개 이상의 책임을 가지고 있다는 의미로 SRP를 지키지 못한 것이다.
OCP: Open-Closed Principle
수정에는 닫혀 있고, 확장에는 열려있다.
즉, 수정 없이 모듈의 기능을 확장할 수 있어야 한다는 것이다.
LSP: Liskov Substitution Principle
파생 모듈은 기본 모듈로 교체 가능해야 한다.
ISP: Interface Segregation Principle
Client는 사용하지 않는 Interface에 의해 영향을 받지 않아야 한다.
범용 Interface 하나를 사용하기 보다는 응집도가 높은 여러개의 interface로 분리하여 사용해야 한다.
DIP: Dependency Inversion Principle
구현이 아니라 Interface에 의존해야 한다.
응집도: SRP 와 관련
규모: SRP 와 관련
복잡도: DIP 와 관련
결합도: LSP, ISP, DIP와 관련
'Software architecture' 카테고리의 다른 글
마이크로 서비스 아키텍처 (Microservice Architecture) (0) | 2021.01.03 |
---|---|
Use Case Model - Use Case Diagram (0) | 2020.12.07 |
Quality Attribute Scenario (0) | 2020.12.06 |
Architectural Drivers - 핵심 요구 사항 (0) | 2020.12.06 |