|
| 1 | +# 09. 암시적인 개념을 명확하게 |
| 2 | + |
| 3 | +심층 모델이 강력한 이유는 심층 모델에 사용자의 행위, 문제, 문제의 해법에 대한 본질적인 지식을 간결하고 유연하게 표현하는 중심 개념과 추상화가 담겨 있기 때문이다. |
| 4 | + |
| 5 | +심층 모델로 향하는 첫걸음은 일단 도메인의 본질적인 개념을 모델 내에 표현하는 것이다. |
| 6 | + |
| 7 | +지식탐구와 리팩터링은 중요한 개념이 모델과 설계 내에 명확하게 인식되고 표현될 때에야 비로소 본 궤도에 오른다. |
| 8 | + |
| 9 | +개발자들이 토의 중에 단서를 얻거나 설계상에 암시적으로 존재하는 개념을 인지하면 도메인 모델과 관련 코드를 대량으로 변환하게 되며, 그 후 하나 이상의 객체와 객체 간의 관계를 활용해 모델 내에 해당 개념을 명확하게 표현하게 된다. |
| 10 | + |
| 11 | +대개 도약은 여러 가지 중요 개념이 모델 내에서 명확해지고 난 후에야 나타난다. 성공적인 리팩터링 과정을 거쳐 반복적으로 개념에 할당된 책임을 조정하고, 다른 객체와의 관계를 변경하며, 심지어 이름까지도 몇 번씩 수정한다. |
| 12 | + |
| 13 | +### 개념 파헤치기 |
| 14 | + |
| 15 | +개발자는 잠재해 있는 암시적인 개념을 드러내는 단서에 민감해야 하며, 이따금 한발 앞서 미리 암시적인 개념을 찾아야 할 때도 있다. |
| 16 | + |
| 17 | +### 언어에 귀 기울여라. |
| 18 | + |
| 19 | +도메인 전문가가 사용하는 언어에 귀 기울여라. 복잡하게 뒤얽힌 개념들을 간결하게 표현하는 용어가 있는가? 여러분이 선택한 단어를 고쳐주는가? 여러분이 특정 문구를 이야기할 때 도메인 전문가의 얼굴에서 곤혹스러운 표정이 사라지는가? 이 모두가 바로 모델에 기여하는 개념의 실마리에 해당한다. |
| 20 | + |
| 21 | +새로운 단어를 듣게되면 명료하고 유용한 개념을 찾기 위한 대화와 지식탐구로 이어진다. |
| 22 | + |
| 23 | +UBIQUITOUS LANGUAGE는 언어, 문서, 모델 다이어그램, 심지어 코드에도 널리 퍼져 있는 어휘로 구성돼 있다. 어떤 용어가 설계에 누락돼 있다면 누락된 용어를 설계에 포함시켜 모델과 설계를 향상시키는 기회가 될 수 있다. |
| 24 | + |
| 25 | +### 어색한 부분을 조사하라 |
| 26 | + |
| 27 | +필요한 개념이 늘 대화나 문서로 인식할 수 있을 만큼 확연히 드러나 있지는 않다. 이미 존재하는 개념을 파헤치거나 새로운 개념을 만들어내야 할지도 모른다. 아울러 설계에서 가장 어색한 부분을 조사해야 한다. |
| 28 | + |
| 29 | +객체가 모든 작업을 원활하게 수행하지만 할당된 일부 책임이 어색하다는 것을 발견할지도 모른다. 또는 뭔가가 누락됐다는 사실을 깨닫는다고 해도 모델과 관련된 문제를 어떻게 풀어야 할지 감이 잡히지 않을 수도 있다. |
| 30 | + |
| 31 | +### 모순점에 대해 깊이 고민하라. |
| 32 | + |
| 33 | +도메인 전문가는 자신의 경험과 필요에 따라 각기 다른 방식으로 사물을 바라본다. |
| 34 | + |
| 35 | +어떤 모순은 용어를 다르게 쓰는 데서 발생하며, 어떤 모순은 도메인을 잘못 이해하는 데서 발생한다. 하지만 용어와 오해의 문제 말고도 두 도메인 전문가가 서로 모순되는 사실을 진술하는 경우도 있다. |
| 36 | + |
| 37 | +모든 모순을 해소한다는 것은 현실적이지도, 바람직하지도 않다. |
| 38 | + |
| 39 | +그러나 모순되는 사항을 그대로 유지해야 하는 상황에서조차 모순되는 양측의 주장을 모두 동일한 외부 현실에 적용하는 방법을 심사숙고하는 과정에서 숨겨져 있던 사실들을 밝히는 계기가 마련될 수 있다. |
| 40 | + |
| 41 | +### 서적을 참고하라 |
| 42 | + |
| 43 | +모델의 개념을 조사할 때는 분명해 보이는 사실이라고 해서 간과해서는 안 된다. |
| 44 | + |
| 45 | +### 시도하고 또 시도하라 |
| 46 | + |
| 47 | +각 방향 선회는 모델에 좀더 심층적인 통찰력을 반영했음을 의미한다. 각 리팩터링은 더 유연하고, 차후에 좀더 변경하기 수월하며, 수정해야 할 것으로 판명된 곳을 지체하지 않고 바로 수정할 수 있게 모델의 상태를 유지해준다. |
| 48 | + |
| 49 | +어차피 선택의 여지는 없다. 실험을 유용한 것이 무엇이고 유용하지 않은 것이 무엇인지를 배우는 방법이다. |
| 50 | + |
| 51 | +--- |
0 commit comments