- Today
- Total
목록Web Development/Clean Architecture (8)
개성있는 개발자 되기
아키텍처란? 소프트웨어 시스템의 아키텍처란 시스템을 구축했던 사람들이 만들어낸 시스템의 형태다. 그 모양은 시스템을 컴포넌트로 분할하는 방법, 분할된 컴포넌트를 배치하는 방법, 컴포넌트가 서로 의사소통하는 방식에 따라 정해진다. 아키텍처의 주된 목적은 (1)시스템의 생명주기를 지원하는 것이다. 즉, 시스템을 쉽게 이해하고, 쉽게 개발하며, 쉽게 유지보수하고, 또 쉽게 배포하게 해준다. 또한 궁극적인 목표는 (2)시스템의 수명과 관련된 비용은 최소화하고, 프로그래머의 생산성은 최대화하는 데 있다. 1) 개발 시스템 아키텍처는 개발팀들이 시스템을 쉽게 개발할 수 있도록 뒷받침해야만 한다. 팀 구조가 다르다면 아키텍처 관련 결정에서도 차이가 난다. - 개발자가 다섯 명으로 구성될 정도로 작다면, 모노리틱 시스..
컴포넌트 구성방법을 앞장에서 살펴봤다면, 이번 장에서는 컴포넌트 사이의 관계를 설명한다. ADP (Acyclic Dependency Policy) : 의존성 비순환 원칙 SDP (Stability Dependency Policy) : 안정된 의존성 원칙 SAP (Stablility Abstract Policy) : 안정된 추상화 원칙 1) ADP (Acyclic Dependency Policy) : 의존성 비순환 원칙 컴포넌트 의존성 그래프에 Cycle이 있어서는 안된다. 많은 개말자가 동일한 소스파일을 수정하는 환경에서 "Morning after Syndrome" 이 발생한다. 즉, 내가 잘 동작하도록 만들어 놓은 소스를 다음날 아침이 되보니 다른 사람이 수정해서 제대로 작동하지 않는 현상을 말한다. ..
컴포넌트를 어떤 클래스로 구성할지 결정하는데 도움이 되는 세 가지 원칙을 설명한다. REP : 재사용/릴리스 등가 원칙 Reuse/Reloease Equivalence Principle CCP : 공통 폐쇄 원칙 Common Closure Principle CRP : 공통 재사용 원칙 Common Reuse Principle 1) REP : 재사용/릴리스 등가 원칙 컴포넌트는 응집성 높은 클래스와 모듈들로 구성되어야 함을 뜻하는 원칙 컴포넌트를 구성하는 모든 모듈은 서로 공유하는 중요한 테마나 목적이 있어야 한다. 따라서 반드시 함께 릴리스할 수 있어야 한다. 쉽게 Git으로 비유해서 생각해보면, 배포 버전(릴리스번호)이 있어야 컴포넌트들이 재사용될 수 있으며, 변경사항을 추적할 수 있다. 2) CCP ..
1. 컴포넌트 컴포넌트는 시스템의 구성 요소로 배포할 수 있는 가장 작은 단위다. ex) 자바의 jar파일, 루비의 gem파일, 닷넷에서 DLL 잘 설계된 컴포넌트라면 반드시 독립적으로 배포 가능한, 따라서 독립적으로 개발 가능한 능력을 갖춰야 한다. 1) 컴포넌트의 간략한 역사 소프트웨어 개발 초창기에는 메모리에서의 프로그램 위치와 레이아웃을 프로그래머가 직접 제어했다. 즉, 프로그램을 빌드하기 위해서 어떤 소스가 어느 메모리 주소에 위치해야 하는지 프로그래머가 설정했어야했다. - 컴파일 후 프로그램의 위치가 한번 결정되면 재배치가 불가능 - 함수 라이브러리가 크면 클수록 컴파일은 더 오래 걸림 따라서 컴파일 시간을 단축시키기 위해 프로그래머는 함수 라이브러리의 소스코드를 애플리케이션 코드로부터 분리했..