-
클린 아키텍처 - 로버트 C. 마틴책 2022. 11. 8. 13:56728x90
클린 아키텍처 (http://www.yes24.com/Product/Goods/77283734)
소프트웨어 구조와 설계의 원칙로버트 C. 마틴 저/송준이 역 | 인사이트(insight) | 2019년 08월 20일 | 원제 : Clean Architecture: A Craftsman’s Guide to Software Structure and Design
- 설계와 아키텍처란?
- 어떠한 경우라도 개발 조직이 할 수 있는 최고의 선택은 조직에 스며든 과신을 인지하여 방지하고, 소프트웨어 아키텍처의 품질을 심각하게 고민하기 시작하는 것이다.
- 두 가지 가치에 대한 이야기
- 기능(행위)인가 아키텍처인가
- 아이젠하워 매트릭스
- 긴급한 문제는 중요하지 않으며, 중요한 문제는 절대 긴급하지 않습니다.
- 첫 번째 가치인 행위는 긴급하지만 매번 높은 중요도를 가지는 건 아니다.
- 두 번째 가치인 아키텍처는 중요하지만 즉각적인 긴급성을 필요로 하는 경우는 절대 없다.
- 패러다임 개요
- 구조적 프로그래밍
- 제어흐름의 직접적인 전환에 대해 규칙을 부과한다.
- 객체지향 프로그래밍
- 제어흐름의 간접적인 전환에 대해 규칙을 부과한다.
- 함수형 프로그래밍
- 할당문에 대해 규칙을 부과한다.
- 구조적 프로그래밍
- 구조적 프로그래밍
- 아키텍처 관점에서는 기능적 분해를 최고의 실천법 중 하나로 여기는 이유이기도 하다.
- 가장 작은 기능에서부터 가장 큰 컴포넌트에 이르기까지 모든 수준에서 소프트웨어는 과학과 같고, 따라서 반증 가능성에 의해 주도된다.
- 소프트웨어 아키텍트는 모듈, 컴포넌트, 서비스가 쉽게 반증 가능하도록(테스트하기 쉽도록) 만들기 위해 분주히 노력해야 한다.
- 구조적 프로그래밍과 유사한 제한적인 규칙들을 받아들여 활용해야 한다.
- 객체지향 프로그래밍
- .
- SRP : 단일원칙
- OCP : 개방-폐쇄 원칙
- 목표는 시스템을 확장하기 쉬운 동시에 변경으로 인해 시스템이 너무 많은 영향을 받지 않도록 하는 데 있다.
- LSP : 리스코프 치환 원칙
- 위반하는 전형적인 문제 : 정사각형 <> 직사각형 문제
- ISP : 인터페이스 분리 원칙
- 의존성 문제
- 짐을 싫은 무언가에 의존하면 예상치도 못한 문제에 빠진다는 사실
- DIP : 의존성 역전 원칙
- 유연성이 극대화된 시스템이란 소스코드 의존성이 추상(Abstraction)에 의존하며 구체(Concretion)에는 의존하지 않는 시스템
- 변동성이 큰 구체 클래스를 참조하지 말라
- 변동성이 큰 구체 클래스로부터 파생하지 말라
- 구체 함수를 오버라이드 하지 말라
- 구체적이며 변동성이 크다면 절대로 그 이름을 언급하지 말라
'책' 카테고리의 다른 글
훅(Hooked) 모델 - 니르 이얄 (0) 2022.11.08 개발자의 글쓰기 - 김철수 (0) 2022.11.08 소프트 스킬 - 존 손메즈 (1) 2022.11.08 - 설계와 아키텍처란?