맨위로가기

도메인 (소프트웨어 공학)

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

도메인은 소프트웨어 공학에서 프로그래밍 프로젝트의 적용 대상을 나타내는 개념으로, 애플리케이션이 적용되려는 대상 영역을 의미한다. 도메인 엔지니어링은 소프트웨어 프로그램에 공통되는 요건, 용어, 기능의 경계를 명확히 정의하는 것을 말하며, 애플리케이션 도메인과 동의어로 사용되기도 한다. 도메인 주도 설계(DDD)에서는 사업 영역 내에서 같은 단어가 다른 의미를 가질 수 있으므로, 구분된 컨텍스트를 도입하여 단어의 의미를 명확히 하고, 이를 기반으로 도메인 모델을 구축한다. 도메인 모델은 구분된 컨텍스트 내에서 정의된 로직을 표현하는 객체 모델이며, 언어학의 의미론적 영역과 유사한 개념을 가진다.

더 읽어볼만한 페이지

  • 소프트웨어 설계 - 구조적 분석
    구조적 분석은 1960년대에서 1980년대 소프트웨어 개발의 복잡성을 해결하기 위해 개발된 기법으로, 다이어그램과 데이터 사전을 활용하여 시스템을 분석하고 설계했으며, 객체 지향 프로그래밍의 등장으로 활용도가 감소했다.
  • 소프트웨어 설계 - 지속적 배포
    지속적 배포(CD)는 소프트웨어 릴리스 프로세스를 자동화하는 접근 방식이며, 배포 파이프라인을 통해 구현되고 시장 출시 시간 단축, 제품 품질 향상 등의 이점을 제공하지만 테스트 자동화 부족 등의 과제도 존재한다.
도메인 (소프트웨어 공학)
소프트웨어 공학에서의 도메인
정의특정 소프트웨어 시스템이 적용되는 특정 지식, 영향 또는 활동 영역
설명소프트웨어 시스템의 범위와 초점을 정의
시스템이 해결해야 하는 문제와 관련된 개념, 용어, 규칙, 데이터, 기능, 비즈니스 프로세스 등을 포함
도메인 주도 설계 (DDD)
핵심 개념핵심 도메인: 조직의 성공에 가장 중요한 도메인
하위 도메인: 핵심 도메인을 지원하는 도메인
공통 도메인: 여러 프로젝트에서 사용되는 일반적인 도메인
중요성복잡한 소프트웨어 프로젝트에서 성공적인 설계를 위해 도메인 지식의 중요성을 강조
도메인 전문가와 개발자 간의 긴밀한 협력을 통해 도메인 모델을 구축하고 이를 기반으로 소프트웨어를 개발
도메인 분석
목적도메인을 이해하고 모델링
도메인의 요구사항을 명확하게 정의하고, 개발 프로세스 전반에 걸쳐 일관성을 유지
기법인터뷰
워크숍
문서 분석
프로토타입 제작
도메인 모델
정의도메인의 개념, 관계, 규칙을 추상화한 모델
표현 방법UML (Unified Modeling Language)
다이어그램
코드
역할개발자와 도메인 전문가 간의 의사소통을 촉진하고, 소프트웨어 설계의 기반을 제공
관련 개념
유비쿼터스 언어도메인 전문가와 개발자가 공통으로 사용하는 언어. 도메인 모델을 기반으로 하며, 코드, 문서, 의사소통 전반에서 일관성을 유지하는 데 사용
바운디드 컨텍스트도메인 모델이 적용되는 특정 영역. 각 바운디드 컨텍스트 내에서 도메인 모델은 일관성을 유지하며, 다른 컨텍스트와의 통합은 명시적인 인터페이스를 통해 이루어짐
활용 예시
금융 시스템은행, 증권, 보험 등 금융 상품, 거래, 고객 관리 등의 도메인 지식이 필요
의료 시스템환자, 진료, 약물, 질병 등 의료 관련 도메인 지식이 필요
물류 시스템창고, 배송, 재고, 운송 등 물류 관련 도메인 지식이 필요
참고 자료
서적Software Engineering 3 – Domains, Requirements, and Software Design
Domain Driven Design Reference: Definitions and Pattern Summaries
ドメイン駆動設計をはじめよう
웹사이트Domain-Driven Design - What is it and how do you use it?

2. 도메인의 정의 및 범위

도메인은 정의 범위의 넓이에 관계없이, 어떤 프로그래밍 프로젝트에서의 적용 대상을 나타낸다.[5] 예를 들어, 특정 병원을 위한 컴퓨터 프로그램 개발 프로젝트가 있다면 그 병원이 도메인이 되고, 프로젝트 대상을 "모든 병원"으로 확장하면 도메인은 "모든 병원"이 된다.

소프트웨어 공학 분야에서 도메인이란 일반적으로 애플리케이션이 적용되려고 하는 대상 영역, 즉 애플리케이션의 로직과 관련된 지식 및 활동 영역을 가리킨다.[6][7] 이는 "애플리케이션 도메인"이라는 용어와 동의어로 쓰이기도 하며, 도메인 엔지니어링을 통해 그 경계가 명확히 정의될 수 있다.[5]

2. 1. 도메인 엔지니어링

컴퓨터 프로그래밍 설계에서, 특정 문제를 해결하기 위해 만드는 소프트웨어 프로그램에 공통적으로 필요한 요건, 사용하는 용어, 그리고 기능의 범위를 명확하게 정하는 과정을 도메인 엔지니어링이라고 한다.[5]

2. 2. 애플리케이션 도메인

도메인은 정의 범위의 넓이에 관계없이, 어떤 프로그래밍 프로젝트에서의 적용 대상을 나타낸다.[5] 예를 들어, 어떤 병원을 위한 컴퓨터 프로그램 작성을 목적으로 하는 프로젝트가 있다면, 그 병원이 도메인이 된다. 만약 프로그램의 대상을 "모든 병원"으로 확장한다면, 도메인은 "모든 병원"이 된다.

컴퓨터 프로그래밍 설계에서는, 어떤 문제를 해결하기 위해 구축된 소프트웨어 프로그램에 공통되는 요건, 용어, 기능의 경계를 명확히 함으로써 도메인을 정의할 수 있으며, 이것을 도메인 엔지니어링이라고 한다.[5]

"도메인"이라는 말은 "애플리케이션 도메인"의 동의어로도 사용된다. 소프트웨어 공학 분야에서 '''애플리케이션 도메인'''이란 일반적으로 애플리케이션이 적용되려고 하는 대상 영역을 가리킨다. 앤드루 파월-모스는 이를 "애플리케이션의 로직이 관계하는 지식과 활동의 영역"이라고 정의했다.[6] Eric Evans|에릭 에반스eng는 도메인을 "지식, 영향력, 활동의 영역"으로 정의하며, "사용자가 프로그램을 적용하는 대상 영역을 소프트웨어의 도메인이라고 부른다"고 설명했다.[7]

3. 도메인 주도 설계 (DDD)에서의 도메인

도메인 주도 설계(DDD)는 복잡한 소프트웨어 시스템 개발 시 도메인 자체에 초점을 맞추는 개발 방법론이다. DDD에서는 특정 사업 영역, 즉 도메인에 대한 깊은 이해를 바탕으로 도메인 전문가와 개발자 간의 효과적인 소통을 위해 유비쿼터스 언어를 정의하고 사용하는 것을 강조한다.[4]

그러나 동일한 용어라도 사용되는 문맥에 따라 의미가 달라질 수 있는 문제를 해결하기 위해, DDD는 구분된 컨텍스트(Bounded Context)라는 개념을 도입하여 각 문맥에서의 용어 의미를 명확히 한다.[4] 각 구분된 컨텍스트 내에서는 해당 문맥에 맞는 도메인 모델을 설계하여 업무 로직을 구체적으로 표현한다.[4] 이러한 접근 방식은 언어학에서 논의되는 Semantic domain|의미론적 영역영어 개념과도 연관성을 가진다.[4]

3. 1. 구분된 컨텍스트

도메인 주도 설계 (DDD)에서는 사업 영역 내 특정 사업 활동에 대한 공통된 이해를 형성하기 위해 도메인 전문가와 엔지니어 간에 같은 단어를 사용한다.[4] 하지만 동일한 사업 영역 내에서도 문맥에 따라 같은 단어가 다른 의미를 가질 수 있다. 이러한 문제를 해결하기 위해 도메인 주도 설계에서는 구분된 컨텍스트 (Bounded Context)라는 개념을 도입하여, 각 문맥에서 사용되는 단어의 의미를 명확하게 정의한다.[4] 이 구분된 컨텍스트를 적절하게 설계하는 것은 도메인 주도 설계의 핵심적인 부분 중 하나이다.
도메인 모델은 특정 구분된 컨텍스트 내에서 명확하게 정의된 용어와 관련된 로직을 표현하는 객체 모델이다.[4] 따라서 같은 이름의 도메인 모델이라도 어떤 구분된 컨텍스트에 속하느냐에 따라 서로 다른 로직을 가질 수 있다. 예를 들어 "잠재 고객"이라는 단어는 어떤 문맥에서는 "자사 제품에 관심을 가진 사람"을 의미하지만, 다른 문맥에서는 "영업 프로세스에서 처리해야 할 대상"을 의미할 수 있다.[4] 이처럼 같은 단어라도 문맥에 따라 다른 업무 로직을 가지게 된다.

구분된 컨텍스트 개념은 언어학의 Semantic domain|의미론적 영역eng 개념에 기반한다고 볼 수 있다.[4] 의미론적 영역이란 특정 단어가 동일한 의미로 사용되는 범위를 뜻한다. 예를 들어 "토마토"는 식물학의 문맥에서는 "과일"로 분류되지만, 미국의 과세 제도 문맥에서는 "채소"로 취급된다.[4] 여기서 "식물학"과 "미국의 과세 제도"는 각각 별개의 의미론적 영역에 해당한다고 할 수 있다.

3. 2. 도메인 모델

'''도메인 모델'''은 도메인 주도 설계(DDD)에서 사용하는 개념으로, 특정 문맥 안에서 사용되는 단어의 의미와 관련된 로직을 표현하는 객체 모델이다.[4] 도메인 주도 설계에서는 같은 단어라도 문맥이 다르면 다른 의미를 가질 수 있다고 보며, 이를 명확히 하기 위해 구분된 컨텍스트라는 개념을 사용한다.[4] 도메인 모델은 바로 이 구분된 컨텍스트에 의해 명확하게 정의된 단어와 그 로직을 나타낸다.[4]

따라서 같은 이름의 도메인 모델이라도 속한 문맥이 다르면 다른 로직을 가질 수 있다. 예를 들어 "잠재 고객"이라는 단어는 어떤 문맥에서는 "자사 제품에 관심을 가진 사람"을 의미하지만, 다른 문맥에서는 "영업 프로세스에서 관리해야 할 대상"을 의미할 수 있다.[4] 이처럼 같은 단어라도 서로 다른 문맥에서는 각각 다른 업무 로직을 가지게 된다.

이러한 구분된 컨텍스트 개념은 언어학의 '의미론적 영역'(Semantic domain) 개념과 유사하다고 볼 수 있다.[4] 의미론적 영역은 특정 단어가 동일한 의미로 사용되는 범위를 뜻한다. 예를 들어 "토마토"는 식물학 문맥에서는 "과일"이지만, 미국의 과세 제도라는 문맥에서는 "채소"로 분류된다.[4] 여기서 "식물학"과 "미국의 과세 제도"는 각각의 의미론적 영역에 해당한다.

3. 3. 의미론적 영역과의 관계

도메인 주도 설계(DDD)에서는 사업 영역 내에서 같은 단어를 사용하여 도메인 전문가와 엔지니어 간의 공통 이해를 형성하고자 한다.[4] 그러나 동일한 사업 영역이라도 문맥에 따라 같은 단어가 다른 의미로 사용될 수 있다. 이러한 문제를 해결하기 위해 도메인 주도 설계는 구분된 컨텍스트라는 개념을 도입하여, 각 문맥에서 사용되는 단어의 의미를 명확하게 정의한다.[4]

이러한 구분된 컨텍스트의 개념은 언어학에서 다루는 Semantic domain|의미론적 영역영어 개념에 기반을 둔 것으로 이해할 수 있다.[4] 의미론적 영역이란 특정 단어가 동일한 의미로 사용되는 범위를 의미한다. 예를 들어 '토마토'라는 단어는 식물학의 문맥에서는 '과실'로 분류되지만, 미국 과세 제도의 문맥에서는 '채소'로 취급된다.[4] 이 경우 '식물학'과 '미국의 과세 제도'는 각각 별개의 의미론적 영역으로 볼 수 있다.

참조

[1] 서적 Software Engineering 3 – Domains, Requirements, and Software Design https://www.springer[...] Springer Verlag 2016-12-19
[2] 웹사이트 Domain-Driven Design - What is it and how do you use it? https://airbrake.io/[...] 2017-04-21
[3] 웹사이트 Domain Driven Design Reference: Definitions and Pattern Summaries https://domainlangua[...] 2015
[4] 서적 ドメイン駆動設計をはじめよう 株式会社オライリー・ジャパン 2024-07-18
[5] 서적 Software Engineering 3 – Domains, Requirements, and Software Design https://www.springer[...] Springer Verlag 2016-12-19
[6] 웹사이트 Domain-Driven Design - What is it and how do you use it? https://airbrake.io/[...] 2017-04-21
[7] 웹사이트 Domain Driven Design Reference: Definitions and Pattern Summaries https://domainlangua[...] 2015



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com