SW Design Principle 에 대해서 이야기 할 때 중요한 개념이자 원칙인 SOLID 를 소개하려고 합니다.
SOLID 는 Robert C. Martin 이 자신의 논문에서 처음 소개하였고, SOLID 약어는 나중에 다른 분에 의해 붙여지게 되었다고 하네요. 이 분은 Clean Code and Clean Architecture 의 저자이고 Agile 개발 방법론을 생각하고 선언한 Agile Manifesto 의 한명이기도 합니다.
"The Future of Programming with Uncle Bob Martin" 유투브 영상도 참고하세요.
( ↓더보기↓ 클릭 )
#1 SOLID
SOLID 의 각 원칙의 항목들을 하나씩 살펴보면, 결국 목적은
프로그램을 개발할 때 유지 보수를 쉽게 하면서도 확장성을 가질 수 있도록 설계하기 위해 적용해야 하는 것임을 알 수 있습니다.
Single Responsibility Principle : 단일 책임의 원칙
클래스는 하나의 책임만을 가져야하며, 책임은 변경하려는 이유, 관심사이다.
하나의 관심사(책임)에 집중하여 응집도를 높여야한다.
Open Closed Principle : 개방 폐쇄의 법칙
변경에 대해서는 Close, 확장에 대해서는 Open.
기존 코드를 변경하지 않으면서 기능을 추가할 수 있도록 설계하는 것을 의미한다.
Liskov Substitution Principle : 리스코프 치환 법칙
두 클래스가 상속관계에 있을때
자식클래스가 부모클래스를 치환할수 있어야 하는 것을 의미.
자식이 부모 클래스의 역할을 항상 충실히 수행해야 한다.
맞지 않다면 상속관계를 없애거나 수정이 필요하다
Interface Segregation Principle : 인터페이스 분리 법칙
사용하지 않는 인터페이스는 영향을 받지 않도록 별도로 분리해야 한다는 것을 의미
불필요한 책임을 분리해준다는 것으로 생각하면 SRP와도 관계가 있다.
Dependency Inversion Principle : 의존성 역전 법칙
자신보다 변하기 쉬운 하위 모듈에 의존성이 있어서는 안된다는 의미, 하위 모듈을 변경할 때마다 함께 수정 가능성이 발생하기 때문이다. 이를 위해 변화하는 부분을 추상화 클래스 또는 인터페이스로 정의하여 서로 의존성을 분리하는 것이 가능하다.
다음에는 SOLID 와 관련된 Design Pattern 을 찾아보고 내용을 더 소개하려고 합니다.
그리고 추가적으로 또다른 OOP Design Principle 인 GRASP Pattern 도 소개하도록 하겠습니다.
'IT > SW Architecture' 카테고리의 다른 글
디자인 패턴 : Strategy Pattern (0) | 2023.05.27 |
---|---|
디자인 패턴 : GoF (Gang of Four) Design Patterns (0) | 2023.05.27 |
웹에서 다이어그램 그리기 - draw.io (0) | 2023.04.21 |
SW 개발과 Architecture 에 대한 단상 (0) | 2023.04.19 |