25 Apr 2019

도메인 주도 설계 02 - 의사소통과 언어사용

도메인 모델은 프로젝트를 위한 공통 언어의 핵심이 될 수 있다. 모델은 프로젝트에 참여한 사람들의 머릿속에 축적된 개념을 모아 놓은 것으로, 도메인에 대한 통찰력을 반영하는 용어와 관계로 표현된다.

이러한 용어와 상호관계는 기술적인 개발을 할 수 있을 만큼 충분히 정확한 동시에 도메인에 맞게 조정된 언어의 의미체계를 제공하며, 이는 모델을 개발 활동과 결부시키고 코드와 연계하는 데 매우 중요한 연결고리 역할을 한다.

모델 기반의 의사소통은 UML의 다이어그램으로 한정되어서는 안되고, 모든 의사소통 수단에 스며들 필요가 있다. 이렇게 해야 형식에 얽매이지 않는 의사소통을 이룰 수 있고, 개발 문서의 유용성도 향상된다. 또한 코드 자체 혹은 해당 코드의 테스트를 토대로 의사소통의 향상을 꾀할 수도 있다.


UBIQUITOUS LANGUAGE (보편 언어)

유연하고 풍부한 지식이 담긴 설계를 만들려면 다양한 용도로 사용될 수 있는 팀의 공유 언어와 그 언어에 대한 활발한 실험이 필요하다.

도메인 전문가는 개발에 사용되는 기술적인 전문 용어를 이해하는 데 한계가 있지만, 자신이 종사하는 분야의 전문 용어는 다양하게 사용할 것이다. 반면에 개발자는 시스템을 서술적이고 기능적인 용어로 이해하고 토론하겠지만 전문가들의 언어에 담긴 의미를 알지 못한다.

이렇게 언어적으로 어긋남으로써 생기는 문제로 서로가 모호하게 이해하고 이야기하게 되며, 이는 모델의 개념을 혼란스럽게 만들어 해로운 코드 개발, 리팩터링으로 이어진다. 즉, 조화가 깨진 신뢰할 수 없는 소프트웨어가 만들어지는 것이다.

프로젝트에서 사용하는 언어가 분열, 즉 서로가 모호한 단어를 사용하거나 불분명한 문장으로 말하게 된다면 심각한 문제가 발생한다. 지식 탐구를 빈약하게 만들어내고, 도메인의 표현이 코드나 문서에도 담기지 않는 결과가 나타난다.

쓸모 있는 모델을 만들어낼 수 있는 지식 탐구 과정은 모델 기반 언어에 팀 전체가 헌신할 때 비로소 가능해진다. UBIQUITOUS LANGUAGE를 지속적으로 사용하다 보면 모델의 취약점이 드러나게 될 것이고, 부자연스러운 용어나 결합의 대안을 찾게 될 것이다. 이러한 언어의 변화는 도메인 모델의 변화로 인식될 것이며 이는 코드의 변화까지 이어지게 될 것이다.

프로젝트에서 서로가 의식적인 노력을 기울인다면, 도메인 모델이 서로가 이해하는 공통 언어의 근간을 제공하고 의사소통을 소프트웨어의 구현에 이르기까지 연결시킬 수 있다. 도메인 모델을 공통 언어의 근간으로 사용한다면, 도메인을 원활하게 이해하고 더욱 쓸모 있는 모델을 만들어 낼 수 있다.


한 팀, 한 언어

설계에는 도메인 전문가와 관련없는 기술적인 요소도 있지만, 모델의 핵심은 도메인 전문가의 관심을 끌어야 한다. 도메인 전문가로부터 피드백을 받는 등의 협업을 통해 끊임없이 모델을 검증하면서 정제해나가야 되기 때문이다.

UBIQUITOUS LANGUAGE가 마련되면, 개발자 간의 대화, 도메인 전문가 간의 논의, 코드 자체에까지 모든 것이 공유된 도메인 모델에서 비롯된 동일한 언어를 기반으로 사용한다.

이를 통해 프로젝트에 참여한 인원끼리 의사소통을 원활히 할 수 있으며, 모호한 개념이 없는 정제된 풍부한 모델을 바탕으로 신뢰성있는 코드 구현에 도달할 수 있을 것이다.


Tags:
Stats:
0 comments