Software Architecture/Software design(22)
-
도메인 주도 개발 (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 -
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 -
UML
UML 이란? UML class diagram = static current diagram UML 표현 방법 Visibility + - # ~ : package derivation / interface knob을 지님 Parameterized class C++의 template Nested class XOR 연산 표시로서 association처럼 표현 Composite object nested object Qualifier 연관 관계 사이에 특정 관련 부분들과 연결 짓고 싶을 때 사용하는 한정자 Association class (무형의 class) 회사(role은 employer)와 사람(role은 employee) 사이에는 Job이라는 association class가 가능 Stereotypes loc..
2022.05.06 -
Memento pattern
현재의 상태를 snapshot 하여 저장하고자 할 때, 객체의 상태를 기록해야 합니다. 이럴때 Memento pattern을 사용하여 상태를 외부에 노출하지 않고 저장합니다. Originator는 Memento를 생성하여 자신의 상태를 저장합니다. Memento 는 Originator의 상태를 저장하는 역할만 수행합니다. 이후 Originator가 상태롤 복원하고자 한다면, 복원할 Memento 객체를 선택하여 해당 객체의 상태를 자신의 상태로 저장합니다. 위 그림에서는 setMementoTo method를 사용하여 복원을 수행할 수 있습닏. 즉, 객체의 상태를 저장하는 역할을 수행하는 class를 정의하고, 이를 사용하여 객체의 상태의 저장/복원을 수행하는 pattern 입니다.
2022.02.28