Skip to content

2.2 소프트웨어 설계의 추상화 레벨 #1473

@jongfeel

Description

@jongfeel

2.2 소프트웨어 설계의 추상화 레벨

2.2.1 네 가지 추상화 레벨

클래스 설계

클래스 설계는 프로그램의 최소 단위가 되는 구성 요소를 설계하는 과정입니다.

컴포넌트 설계

컴포넌트 설계는 클래스 설계보다 높은 추상화 레벨에서 컴포넌트의 구성 방식과 협력 방식을 결정하는 과정입니다.

컴포넌트란 특정한 동작을 수행하는 책임을 가지며, 명확한 인터페이스로 정의된 소프트웨 어의 구성 요소를 의미합니다.
여러 클래스로 구성되기도 합니다.

컴포넌트가 명확한 인터페이스를 가진다는 것은 목적에 따라 구현 클래스를 쉽게 대체할 수 있다는 뜻입니다.

소스 코드에서는 컴포넌트를 구성하는 클래스들을 패키지 package 나 네임스페이스 namespace 단위로 그룹화하여 한곳에 모아 관리합니다.

모듈 설계

모듈 설계는 시스템을 구성하는 모듈 구조를 결정하는 설계입니다. 모듈이란 컴포넌트의 집합체를 말합니다.

아키텍처 설계

아키텍처 설계는 가장 추상적인 설계 단계입니다.
소프트웨어 구조라는 관점에서 마이크로서비스 아키텍처와 같은 시스템 전체의 구조나 레이어드 아키텍처와 같은 애플리케이션의 기본 구조를 검토하고 결정합니다.

2.2.2 네 가지 추상화 레벨의 구체적인 예시

한 기업의 판매 업무를 지원하는 시스템을 개발한다고 가정해 보겠습니다.

가장 상위 레벨의 아키텍처 설계에서는 주문, 재고, 출하를 각각 마이크로서비스로 시스템을 구성하고 서비스 간의 연동 방식을 정합니다.
또한 각 서비스의 내부 구조로는 레이어드 아키텍처를 채택하는 방침을 세웁니다.

마이크로서비스 아키텍처에서는 그 특성상 각 서비스를 물리적으로 분리된 독립 모듈로 구성하여 개별적으로 배포하는 방식이 기본적인 구조입니다.
각 모듈 간의 연동 방식(API 연계인지, 메시징인지 등)도 함께 결정해야 합니다.

컴포넌트 설계에서는 예를 들어 ‘주문 등록’ 유스케이스를 구현하기 위해 필요한 컴포넌트를 도출하고 이들 간의 상호작용을 설계합니다.

클래스 설계에서는 각 컴포넌트를 클래스로 분할하고, 여러 클래스가 협력하여 컴포넌트의 책임을 구현할 수 있도록 설계합니다.

Metadata

Metadata

Assignees

Projects

Status

Done

Relationships

None yet

Development

No branches or pull requests

Issue actions