도메인 주도 설계 - 01. 지식 탐구

dvmflstm·2020년 2월 8일
4
post-thumbnail

개발자와 도메인 전문가

소프트웨어 설계의 단계에서는 소프트웨어가 모델링할 실세계의 영역을 잘 알고 있는 '도메인 전문가'의 존재를 전제한다.

지식 탐구

설계의 전 단계에서 개발자와 도메인 전문가는 활발히 논의해야 한다. 개발자는 도메인 영역에 대해, 도메인 전문가는 기술적인 측면에 대해 서로가 모르거나 다르게 알고 있는 부분에
대해서 끊임없이 소통해야 하며, 도메인 모델러들은 엄청난 양의 정보 속에서 미미한 관련성을 찾아내야 한다. 그들은 전체를 이해할 수 있는 간결한 관점을 찾아
체계적인 아이디어들을 차례로 시도해보며 최적의 모델을 찾아야 한다.

waterfall model과 지식 탐구

과거의 waterfall model에서는 업무 전문가가 분석가에게 설명하고 다시 분석가는 업무 전문가가 설명한 내용을 이해하고 추상화해서 소프트웨어를 코드로 작성하는
프로그래머에게 넘긴다. 모델을 만들어내는 분석가는 한방향으로만 흐르는 지식의 흐름 탓에 프로그래머로부터 지식을 배우지 못하고, 따라서 이러한 방식은 지식을 축적시키지 못하고 실패한다.

지속적인 학습

열심히 탐구한 지식을 완벽하게 보전하고 유지하는 건 힘든 일이다. 조직의 구성은 불변한 것이 아니기에, 사람들이 갖고 있는 지식도 여기저기로 흩어진다. 그리고
힘겹게 알아낸 지식이 코드와 문서에 유용하게 표현되지 못하면, 구두로 지식이 전달되는 과정에서 지식은 사라진다.
생산성이 뛰어난 팀은 의식적으로 지식을 함양하는 시간을 가짐으로써 도메인 모델링 기술과 기술적 지식을 습득하고, 뿐만 아니라 현재 종사하는 특정 도메인에 관해 진지하게
학습하기도 한다.

풍부한 지식이 담긴 설계

활발한 지식 탐구로 축적된 지식은 설계에 온전히 반영되어야 한다. 모델은 우리가 탐구한 지식을 모두 담고 있어야 한다. 모델은 풍부해야한다.

심층 모델

유용한 모델은 겉으로 드러나지 않는다. 처음에는 나타나기 힘들지만 문제의 핵심을 관통하는 포착하기 힘든 추상화가 서서히 나타나기 마련이다. 좋은 모델은
끝없는 발전을 거쳐 이러한 유용한 추상화를 잘 담고 있는 형태로 거듭나야 한다.

profile
서울대학교 컴퓨터공학부 github.com/BaekGeunYoung

0개의 댓글