Software Architecture/Software design(23)
-
안드로이드 아키텍처: Repository와 DataSource의 역할
핵심 원칙: 단일 책임 원칙 (SRP)소프트웨어의 각 컴포넌트는 단 하나의 변경 이유만을 가져야 한다는 원칙입니다.이 원칙을 지키면 코드의 유지보수성, 테스트 용이성, 재사용성이 극대화됩니다.각 계층의 명확한 책임 분리:DataSource: 데이터를 '어떻게(How)' 가져올 것인가를 책임집니다. 즉, 특정 데이터 소스(네트워크, DB, 시스템 API 등)와의 통신이라는 기술적인 세부사항을 담당합니다.변경 이유: 데이터 접근 기술이 바뀔 때 (e.g., RadioTunerProvider -> NewManager, Retrofit -> Ktor)Repository: '무엇을(What)' 제공할 것인가를 책임집니다. 여러 DataSource로부터 데이터를 가져와 비즈니스 규칙(캐싱, 조합, 가공 등)을 적용..
2025.09.08 -
도메인 주도 개발 (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