티스토리 뷰

 

도메인의 사전적 정의는 아래와 같다.

 

A domain is a field of study that defines a set of common requirements, terminology, and functionality for any software program constructed to solve a problem in the area of computer programming, known as domain engineering.

컴퓨터 프로그래밍으로 문제를 해결하기 위해 만들 소프트웨어 프로그램을 위한 요구사항, 용어, 기능을 정의하는 학문 영역이 도메인 공학이다. - 위키백과

 

간단히 말하면 해결하고자 하는 문제의 영역 을 도메인이라고한다.

소프트웨어 입장에서 다시 해석하면 개발하고자 하는 소프트웨어의 요구사항 , 문제 영역 정도로 생각할 수 있다. 예를 들어 쇼핑몰을 만든다고 했을 때, 게시글, 댓글, 결제, 정산 등을 도메인이라고 할 수 있다.

 

데이터베이스의 모델링에서 비슷한 개념이 있는데, 데이터베이스를 설계할 때 개념,논리,물리 설계 모델링에 대해 배운 적이 있다.(개논물로 외웠던...)

도메인 모델은 여기서 개념 모델링에 가깝다고 할 수 있다.

분류 가능한 업무(요구사항)를 분석해서, 주제 영역을 도출하고 핵심 엔터티를 추출하고 그들 간의 관계를 정의하여 데이터의 골격을 생성하는 것 도메인 모델링과 가깝다고 할 수 있을 것 같다. 더 쉽게 이해해보면, 사용자 요구사항에 따른 상위 수준의(크게 잡은?) 개발 범위를 도메인이라고 할 수 있다.

 

검색중에 "객체지향설계의 사실과 오해"의 저자이신 조영호 개발자님의 인터뷰를 찾을 수 있었다.

조영호 님 : 도메인은 저희 입장에서 소프트웨어를 개발하는 대상 영역정도로 생각해도 무방합니다. 택시 앱을 만든다면 택시 기사님께 콜을 하고, 탑승하고, 요금을 지불하는 전 과정이 도메인이 됩니다. 물론 프로젝트를 할 때는 이 중에서 소프트웨어로 개발될 범위로 한정해서 범위를 좁하게 됩니다. 이렇게 개발 대상과 범위를 간단히 도메인이라고 봐도 무방할 것 같습니다. 도메인 모델이란 도메인을 모든 사람이 동일한 관점에서 이해할 수 있고 공유할 수 있도록 단순화시킨 것이라고 보시면 됩니다. 이게 꼭 클래스 다이어그램의 형식으로 표현될 필요는 없지만 객체지향 프로그래밍을 하는 경우에는 일반적으로 클래스 다이어그램의 표기법을 사용해서 도메인 모델을 정리하는게 여러모로 유용합니다. 이렇게 하는 이유는 객체지향 패러다임에서 사용하는 유사한 기법에 기반하는게 코드와 모델을 유사한 형태로 유지하는데 이롭기도 하고 일단 도메인 모델을 이해하면 그 모델을 기반으로 코드를 쉽게 이해하고 수정할 수 있기 때문이죠. 다른 패러다임인 경우에는 그 패러다임에서 구현하기 쉬운 형태로 작성하면 되겠죠. 마지막에 아키텍처 상에서 말하는 도메인 모델은 마틴 파울러가 PEAA에서 언급한 것으로 도메인 레이어를 객체지향적으로 구현하는 패턴을 가리키는 용어입니다. 즉 패턴의 일종이고 원래의 도메인 모델과는 약간 거리가 있습니다.

 

도메인에 대해서 찾아본 결과 아직 구체적인 표준으로 정의된 것이 부족하다는 내용이 많았다.

도메인 - 요구사항에서 도출한 개발 대상 범위 정도로 기억하면 될 것 같다.(느낌적인 느낌...)

 

 

참고자료

https://javacan.tistory.com/entry/what-is-a-domain-model

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함