BAEKJH BE Developer

유비쿼터스 언어(Ubiquitous language)

2021-02-08
BAEKJungHo

logo

서론

이번 시간에는 유비쿼터스 언어(Ubiquitous language)에 대해서 알아 보겠습니다.

유비쿼터스 언어(Ubiquitous language)

우선 문장을 쓰고

문장을 잘게 나눈다.

그리고 나서 무작위로

조각들을 섞은 다음 정렬한다.

구절의 순서는 아무런 차이를 만들어내지 않는다.

by. 루이스 캐롤, “시인은 태어나는 것”

언어란 사람과 사람 또는 사람과 기계 등의 소통을 가능하게 해주는 도구입니다. 프로그래밍 시 변수명과 함수, 클래스 등의 네이밍을 우리 개발자들은 신경 쓰면서 개발합니다. 왜냐하면 잘 네이밍된 언어는 의사소통을 편리하게 해주고, 유지보수에 도움을 주기 때문입니다. 고객과 대화할 때에도 의사소통을 편리하게 해주는 언어를 사용하는게 좋습니다.

이를 UBIQUITOUS LANGUAGE 라고 합니다.

유비쿼터스 언어(Ubiquitous language)란 개발자와 사용자 모두가 사용할 수 있도록 설계, 공유된 공통 언어를 말합니다.

동료나 고객과 대화할 때 소프트웨어의 다양한 기능을 어떤 공통 언어로 약속합니다. 이때 사용한 어휘를 코드로 매핑하면 코드의 어떤 부분을 바꿔야하는지 쉽게 알 수 있습니다. 이를 발견성(discoverability)이라 합니다.

훌륭한 소프트웨어 개발팀은 유비쿼터스 언어로 자신의 소프트웨어를 작성한다.

모델을 언어의 근간으로 사용하라. 팀 내 모든 의사소통과 코드에서 해당 언어를 끊임없이 적용하는 데 전념하라. 다이어그램과 문서에서, 그리고 특히 말할 때 동일한 언어를 사용하라.

대안 모델을 반영하는 대안이 되는 표현을 시도해 봄으로써 어려움을 해소하라. 그런 다음 새로운 모델에 맞게끔 클래스, 메서드, 모듈의 이름을 다시 지으면서 코드를 리팩터링 하라. 일상적으로 쓰는 단어의 의미에 동의를 이끌어내는 것과 같은 방식으로 대화할 때 쓰는 용어의 혼란도 해결하라.

UBIQUITIOUS LANGUAGE 의 변화가 곧 모델의 변화라는 것을 인식하라.

도메인 전문가는 도메인을 이해하는 데 부자연스럽고 부정확한 용어나 구조에 대해 반대 의사를 표명해야 한다. 개발자는 설계를 어렵게 만드는 모호함과 불일치를 찾아내는 데 촉각을 곤두세워야 한다.

크게 소리내어 모델링 하기

모델을 정제하는 가장 좋은 방법은 가능한 모델 변형을 구성하는 다양한 요소를 큰 소리로 말하면서 말하기를 통해 살펴보는 것이다. 다듬어지지 않은 표현은 쉽게 분간할 수 있다.

  • Routing Service 에 출발지, 목적지, 도착 시각을 전달하면 화물이 멈춰야 할 지점을 찾고, 그것을 데이터 베이스에 삽입한다. (모호하고 기술적임)
  • 출발지, 목적지 등등 이것들을 모두 Routing Service 에 넣으면 필요한 것이 모두 담긴 Itinerary(운항 일정)을 돌려 받는다. (좀 더 완전해 졌지만, 장황함)
  • Routing Service 는 Route Specification 을 만족하는 Itinerary 를 찾는다. (간결함)

소프트웨어 프로젝트에 UBIQUITIOUS LANGUAGE 를 적용하기가 말처럼 쉽지 않다. 이를 성공적으로 달성하려면 충분한 재능을 발휘해야 한다.

UBIQUITIOUS LANGUAGE 패턴의 추가 사항

시스템에 관해 이야기를 주고받을 때 모델을 사용하라. 모델의 요소와 상호작용을 이용하고 모델이 허용하는 범위에 개념을 조합하면서 시나리오를 큰 소리로 말해보라. 표현해야할 것을 더 쉽게 말하는 방법을 찾아낸 다음 그러한 새로운 아이디어를 다이어그램과 코드에 적용하라.

출처. 도메인 주도 설계(Domain-Driven Design)

참고

도메인 주도 설계(Domain-Driven Design)

Real-world Software Development


Similar Posts

Back : Authorization

Comments