Articles

Apa itu Ubiquitous Language dalam Domain-Driven Design (DDD)? | Teddy Aryono

Perhatikan diagramma e percakapan berikut. Percakapan ini terjadi antara business person (user) dengan developer tentang sebuah sistem informasi kargo.

Percakapan 1 – Minimal Abstraction of the Domain

User 😊 : Quindi quando cambiamo il punto di sdoganamento, dobbiamo rifare l’intero piano di routing.

Developer 🤓 : Giusto. Cancelleremo tutte le righe della tabella delle spedizioni con quell’id del carico, poi passeremo l’origine, la destinazione e il nuovo punto di sdoganamento al Routing Service, che ripopolerà la tabella. Dovremo avere un booleano nel Cargo per sapere che ci sono dati nella tabella delle spedizioni.

😊 : Cancellare le righe? OK, come vuoi. Comunque, se prima non avevamo nessun punto di sdoganamento, dovremo fare la stessa cosa.

🤓 : Certo, ogni volta che cambi l’origine, la destinazione o il punto di sdoganamento (o ne inserisci uno per la prima volta), controlleremo se abbiamo i dati della spedizione e poi li cancelleremo e poi lasceremo che il Routing Service li rigeneri.

😊 : Naturalmente, se il vecchio sdoganamento fosse quello giusto, non vorremmo farlo.

🤓 : Oh, nessun problema. È più facile far rifare al Routing Service i carichi e gli scarichi ogni volta.

😊 : Sì, ma è lavoro extra per noi fare tutti i piani di supporto per un nuovo itinerario, quindi non vogliamo reinstradare a meno che il cange lo richieda.

🤓 : Ugh. Bene, allora, se si entra in un punto di sdoganamento per la prima volta, dovremo interrogare la tabella per trovare il vecchio punto di sdoganamento derivato, e poi confrontarlo con quello nuovo. Poi sapremo se dobbiamo rifarlo.

😊 : Non dovrete preoccuparvi di questo sull’origine o sulla destinazione, poiché l’itinerario cambierebbe sempre allora.

🤓 : Bene. Non lo faremo.

Sekarang perhatikan diagramma e percakapan berikut. Ini adalah percakapan yang sama persis, tetapi menggunakan bahasa (kosakata) yang berbeda.

Percakapan 2 – Modello di dominio arricchito per supportare la discussione

😊 : Quindi quando cambiamo il punto di sdoganamento, dobbiamo rifare l’intero piano di instradamento.

🤓 : Giusto. Quando cambi uno qualsiasi degli attributi nella Specifica di Rotta, cancelleremo il vecchio Itinerario e chiederemo al Servizio di Routing di generarne uno nuovo basato sulla nuova Specifica di Rotta.

😊 : Se prima non avevamo specificato affatto un punto di sdoganamento, dovremo farlo nello stesso momento.

🤓 : Certo, ogni volta che cambi qualcosa nella Specifica di Rotta, rigenereremo l’Itinerario. Questo include inserire qualcosa per la prima volta.

😊 : Naturalmente, se il vecchio sdoganamento fosse quello giusto, non vorremmo farlo.

🤓 : Oh, nessun problema. È più facile fare in modo che il Routing Service rifaccia l’itinerario ogni volta.

😊 : Sì, ma è un lavoro extra per noi fare tutti i piani di supporto per un nuovo itinerario, quindi non vogliamo rifare l’itinerario a meno che il cambiamento non lo richieda.

🤓 : Oh. Allora dovremo aggiungere alcune funzionalità alla specifica dell’itinerario. Poi, ogni volta che si cambia qualcosa nella specifica, vedremo se l’itinerario soddisfa ancora la specifica. Se non lo fa, faremo in modo che il Routing Service rigeneri l’itinerario.

😊 : Non dovrai preoccuparti di questo sull’origine o sulla destinazione, poiché l’itinerario cambierebbe sempre allora.

🤓 : Bene, ma sarà più semplice per noi fare solo il confronto ogni volta. L’itinerario sarà generato solo quando la specifica del percorso non è più soddisfatta.

Gambar dibawah ini mengilustrasikan domain experts dan software developers yang sedang berdiskusi. Gli sviluppatori di software sono sviluppatori di software (che non sono in grado di fornire informazioni sulla tecnologia), mentre gli esperti di domini sono esperti di domini (che non sono in grado di fornire informazioni sulla tecnologia, ma che sono in grado di fornire informazioni sui bisnonni).

Gli esperti di dominio (dalam percakapan di atas adalah business person/user) memiliki pengetahuan yang terbatas mengenai jargon yang digunakan dalam software development, tetapi mereka memiliki jargon sendiri sesuai dengan disiplin ilmu yang mereka punyai.

Sementalmente, gli sviluppatori non sono riusciti a trovare un’istilah-istilah per lo sviluppo del software, e poi hanno iniziato ad usare il gergo minimale per gli esperti del settore (in pratica, per gli esperti del settore, gli sviluppatori hanno usato il gergo minimale per gli esperti del settore).

Nella situazione attuale, il linguaggio onnipresente è difensivo, e gli esperti di dominio e gli sviluppatori sono costretti a lavorare con un linguaggio che non è mai stato usato, anche se si tratta di un’istilah (gergo/kosakata) che non è mai stato usato. L’istilah tersebut merujuk pada hal yang sama persis, misalnya, kosakata Route Specification selalu merujuk pada hal yang terdiri dari origin, destination dan custom clearance point (lihat diagram).

Diagram venn dibawah adalah ilustrasi untuk menggambarkan ubiquitous language.