- 도메인 모델2023년 02월 23일
- starryeye
- 작성자
- 2023.02.23.:57
들어가기 전에..
객체지향 세계를 구축하기 위해서는
사용자에게 제공할 기능과
기능을 담을 안정적인 구조라는 재료가 준비되어 있어야 한다.
구조는 사용자나 이해관계자들이 도메인에 관해 생각하는 개념과 개념들 간의 관계로 표현한다.
기능은 사용자의 목표를 만족시키기 위해 책임을 수행하는 시스템의 행위로 표현한다.
일반적으로 기능을 수집하고 표현하기 위한 기법을 유스케이스 모델링이라 한다.
구조를 수집하고 표현하기 위한 기법을 도메인 모델링이라 한다.
본격적으로 도메인 모델에 대해 알아보자.
도메인
사용자가 프로그램을 사용하는 대상 분야를 도메인이라고 한다.
모델
모델은 지식을 선택적으로 단순화하고 의식적으로 구조화한 형태이다.
복잡성의 바다에서 길을 잃지 않고 중요한 문제에 집중할 수 있도록 필요한 지식만 재구성한 것이다.
즉, 대상을 추상화 하고 단순화 한 것이다.
도메인 모델
사용자가 프로그램을 사용하는 대상 영역에 관한 지식을 선택적으로 단순화하고 의식적으로 구조화한 형태이다.
소프트웨어가 목적하는 영역 내의 개념과 개념 간의 관계, 다양한 규칙이나 제약 등을 주의 깊게 추상화한 것이다.
소프트웨어 개발과 관련된 이해관계자들이 도메인에 대해 생각하는 관점이다.
도메인 모델은 도메인에 대한 사용자 모델, 디자인 모델, 시스템 이미지를
포괄하도록 추상화한 소프트웨어 모델이다.
사용자 모델 : 사용자가 제품에 대해 가지고 있는 개념의 모습
디자인 모델 : 설계자(디자이너)가 마음 속에 갖고 있는 시스템에 대한 개념화
시스템 이미지 : 최종 제품(코드)
3가지 관점의 모델이 정확하게 일치시키도록 노력해야한다.
다행히..
객체지향 패러다임은 사용자의 관점, 설계자의 관점, 코드의 모습을
모두 유사한 형태로 유지할 수 있게 하는 유용한 사고 도구와 프로그래밍 기법을 제공한다.
도메인 모델이 제공하는 구조는 상대적으로 안정적이다.
사용자가 도메인을 바라보는 관점을 반영해 소프트웨어를 설계하고 구현하자.
왜냐하면, 사용자들이 누구보다도 도메인의 본질적인 측면을 가장 잘 이해하고 있기 때문이다.
본질적이라는 것은 변경이 적고 비교적 그 특성이 오랜 시간 유지된다는 것을 의미한다.
사용자 모델에 포함된 개념과 규칙은 비교적 변경될 확률이 적기 때문에
사용자 모델을 기반으로 설계와 코드를 만들면 변경에 쉽게 대처할 수 있을 가능성이 커진다.
따라서, 도메인 모델이 기능을 담을 수 있는 안정적인 구조를 제공할 수 있음을 의미한다.
결론적으로 안정적인 구조를 제공하는 도메인 모델을 기반으로
소프트웨어의 구조를 설계하면 변경에 유연하게 대응할 수 있는 탄력적인 소프트웨어를 만들 수 있다.
"객체지향의 사실과 오해" 책에서 발췌
'OOP' 카테고리의 다른 글
기능과 구조의 통합 (feat. 책임-주도 설계) (0) 2023.02.23 기능과 구조 설계 (0) 2023.02.23 책임의 자율성이 협력의 품질을 결정 (0) 2023.02.21 책임, 메세지 그리고 인터페이스 (0) 2023.02.13 다음글이전글이전 글이 없습니다.댓글