Software Architecture(26)
-
도메인 주도 개발 (DDD)
도메인 '모델링' = 비즈니스 프로세스를 모델링 소프트웨어를 개발하는 목적은 어떤 비즈니스(작업)을 전산화 하고자 하는데 있습니다. 도메인은 전산화 하고자 하는 비즈니스에 대한 내용(영역)을 의미합니다. 모델링은 비즈니스 프로세스를 S/W 설계 방법을 통해 비즈니스 처리 과정을 표현하는 것을 의미합니다. 그렇기에 모델링은 요구사항 분석 과정의 주요 도구로서 사용됩니다. 개념 정리 모델링 vs. 설계 모델링은 비즈니스 프로세스를 전산으로 표현하는 과정까지를 수행하는 것을 의미합니다. 모델링의 결과물도 설계 산출물 (광의적 의미로 보면 모델링도 설과 과정 중 일부)로 간주할 수 있습니다. 반면 설계는 모델링된 (즉, S/W 요구사항) 결과물을 통해 S/W 적으로 구현하기 위한 내용들을 설계하는..
2024.04.20 -
Test double (테스트 더블)
테스트 방식 데트스 방식에는 크게 sociable tests와 solitary tests가 있습니다. Sociable Test Sociable tests는 테스트하고자 하는 대상이 아래 그림처럼 '모델'인 경우 모델이 의존하고 있는 Repository와 SMSNotifier를 모두 함께 테스트하는 방식입니다. Solitary Test 그런데 의존관계가 복잡하고 무거우며 변경 가능한 경우 위와 같은 테스트는 의존 대상들에 의해 실패하던가 매우 많은 시간이 걸릴수 있습니다. 혹은 의존 관계의 deploy 등에 의해 불필요한 시간이 많이 소요될 수 있습니다. 이에 '모델' 부분만 테스트를 하는 것을 Solitary Test라고 합니다. Solitary Test에서는 의존 관계를 가짜의존 관계로 바뀌치는 접근을..
2023.11.25 -
entity vs. object
object 속성과 행위 그리고 상태를 지님 entity 속성들만 지니며 고유한 '개체'로 식별되는 유/무형의 존재 value type 고유한 개체로 식별되지 않는 객체
2023.11.01 -
Architecture view mode
많이 사용되는 view들이 view model입니다. Architecture를 view들로 구성할때 많이 사용하는 view model이 몇가지가 있습니다. Kruchen's 4 + 1 view model 대표적인 Kruchen의 4 + 1 view model 입니다. 여기에는 다음과 같은 view model들이 있습니다. Logical View 분석 설계 산출물들 입니다. 다음과 같은 view들이 산출됩니다. box-and-arrow, component and connector UML의 class/interaction/collaboration diagram Development View 설계 산출물 입니다. UML의 package, component diagram Proess view 물리적인 배..
2023.06.26 -
Ports and adapters architecture
Ports and Adapters Architecture는 Hexagonal Architecture로 잘 알려져 있습니다. 해당 아키텍처의 목표는 결국 "재사용성"을 높이고자 함 입니다. 이를 위해 인터페이스, 핵심 로직등을 잘 decomposition (separation of concern) 하여 의존성을 최소화 하는것이 중요합니다. 아키텍처에서 보통 말하는 포트는 interface를 노출하여 통신을 수행하는 부분을 의미합니다. C&C view에서 componenent는 포트(들)을 지닐 수 있습니다. port의 type에는 가장 간단하게 function call 부터 HTTP 통신 등 다양한 방식이 존재할 수 있습니다. 또한 port는 in/out에 대한 로직도 담당합니다. 예를들면 in port가..
2023.06.09 -
DIP Dependency Inversion Principle 의존성 역전 원칙
"의존성 역전"에 대해 검색하게 되면 concrete가 아닌 추상(interface 등)에 의존하게 하는 것이 의존성 역전이다 라고 말합니다. 맞는 말 입니다. 그러나 구체적으로 왜 이것이 역전인지를 설명하는 글이 없어서 직접 적어봅니다. 위 diagram에서 Master는 Dog에 의존합니다. Dog는 concrete한 animal 즉, concrete 한 class 입니다. Master가 다른 동물에 의존할 필요가 있다면 다음과 같이 의존 관계가 바뀌게 됩니다. 이는 Master에게 있어 Dog와 interaction하는 코드가 Cat과 interaction 하는 코드로 변경됨을 의미합니다. 아래와 같이 추상화된 Animal이라는 interface class로 Master가 의존하게 합니다. 이렇게 ..
2023.05.29