본문 바로가기

SRP4

아키텍처 - 정책과 수준 - 이 글은 로버트 C.마틴의 Clean Architecture를 기반으로 작성되었습니다. (가능하면 책을 읽어보는것을 추천한다.) - 개요 소프트웨어 시스템 및 아키텍처를 정책이라는 관점에서 무엇인지 생각해보고, 여태까지 살펴보았던 내용을 돌이켜보자. 소프트웨어 시스템이란 입력을 출력으로 변환하는 과정의 정책을 상세하게 기술한것이다. 또한 하나의 큰 정책은 작은 여러 정책으로 나누어지며 아키텍처라는것은 이런 정책을 분리 및 재배치 한다. 같은 시점에 같은 이유로 변경되는 것들을 하나의 컴포넌트로 모으고, 다른 시점에 다른 이유로 변경된다면 분리한다. 하나의 컴포넌트는 다른 컴포넌트에 의존한다. 컴포넌트를 정점으로, 의존성을 방향이 있는 간선으로 본다면 방향그래프로 나타낼 수 있다. 이 때 비순환이 되도.. 2021. 2. 10.
컴포넌트 결합 - ADP(의존성 비순환 원칙) - 이 글은 로버트 C.마틴의 Clean Architecture를 기반으로 작성되었습니다. (가능하면 책을 읽어보는것을 추천한다.) - 개요 컴포넌트 의존성 그래프에 순환이 있어서는 안 된다. 소스를 수정한 후, 테스트를 하고 뿌듯한 마음으로 퇴근을 하였다. 그런데 다음날 회사에 와서 보니 소스가 수정한대로 동작하지 않는다. 이게 뭔일이지 하고 원인을 추적해보니 다른사람이 고친 부분때문에 내 코드가 동작하지 않는다. 작은 프로젝트에서는 이런일이 일어날 가능성이 작고, 일어난다고 해도 금방 고칠 수 있다. 하지만 프로젝트가 크면 문제가 심각해진다. 이를 위한 해결책에 두 가지 방법이 있다. 첫번째는 주 단위 빌드이며, 두번째는 의존성 비순환 원칙(ADP)이다. - 주 단위 빌드 주 단위 빌드 과정은 다음과.. 2021. 2. 10.
설계원칙 - SOLID(SRP) - 이 글은 로버트 C.마틴의 Clean Architecture를 기반으로 작성되었습니다. (가능하면 책을 읽어보는것을 추천한다.) - 개요 단일 책임 원칙은 가장 많은 오해를 사고 있는 원칙이다. 이름만 보면 마치 하나의 모듈은 하나의 일만 해야하는 것처럼 느껴진다. 하지만 이는 오해이다. 하나의 모듈은 하나의 액터(사용자 및 이해관계자)에 대해서만 책임져야 한다. 모듈이란 보통의 경우엔 소스파일이다. SRP를 위반하는 원칙들을 살펴보면서 SRP를 이해해보자. - 징후: 우발적 증복 급여 어플리케이션에서 Employee 클래스가 있고, 해당 클래스에서 calculatePay(), reportHours(), save() 메소드를 제공한다고 해보자. 이 클래스는 SRP를 위반한다고 할 수 있는데, diag.. 2021. 2. 10.
UML - 유스 케이스 - 개요와 내용 - 이 글은 UML Distilled (마틴 파울러)책을 기반으로 작성하였습니다. - 유스 케이스 유스 케이스는 시스템의 기능적인 요구사항을 잡아내는 기술이다. 유스케이스는 시스템과 사용자간의 교류를 기술한다. 유스 케이스를 곧바로 판별해내는것은 사실 어려운일이다. 보통은 시나리오를 생각해본 뒤 유스케이스를 식별한다. 시나리오는 사용자와 시스템간의 교류를 단계적으로 나타낸것이다. 예를 들어 온라인 쇼핑몰에서 물건을 산다면 시나리오는 아래와 같다. 고객은 상품 목록을 보고 원하는것을 선택하여 장바구니에 담는다. 물건을 구매하기 위해 배송지 및 신용카드 정보를 기술한다. 시스템은 신용카드 승인을 확인하고 물건 구매 확정을 한다. 그리고 그 결과를 이메일로 발송한다. 위의 시나리오는 개발자가 구현하기 좋은 전.. 2021. 2. 10.