Problem Domain and Things in the Problem Domain
Problem domain adalah sebuah area spesifik yang butuh dianalisa dan diteliti untuk menyelesaikan masalah yang ada. Problem domain menjadi bagian yang sangat penting bagi orang-orang yang ini membangun sebuah software dalam bisnis mereka. Problem domain ini perlu dikontrol, diawasi, dan dikendalikan oleh tim-tim ahli sistem informasi. Jika analisa berhasil dilakukan, maka solusi akan didapatkan dari problem domain ini. Lalu, problem domain ini memiliki objek di dalamnya yang kerap disebut “Things in the problem domain”.
“Things” ini mengacu kepada objek-objek yang ada di dalam problem domain yang sedang diteliti, dianalisa, dan dikontrol. Jadi things ini juga bisa disebut sebagai objek yang dikerjakan oleh user sehari-hari. Things juga merupakan objek yang bersifat unik, dan bisa dibedakan dari yang satu dengan yang lainnya. Ada beberapa tipe things dalam problem domain, antara lain:
- Tangible things: Objek nyata yang dapat diobservasi serta memiliki sifat unik.
- The Roles played
- Organizational units: Bagian atau divisi dalam sebuah organisasi
- Devices: Mengacu terhadap peralatan/hardware yang terlibat
- Sites/locations: Mengacu pada lokasi atau tempat yang masih berhubungan dengan problem domain.
- Incidents, events, or financial transactions: Hal-hal ini biasanya dicatat karena cukup penting.
Ada beberapa contoh things dalam problem domain yang dapat dilihat dari kasus nyata
seperti products, sales, suppliers, staffs, vendors, invoices, orders, payments, dll. Setelah things ini dikumpulkan, maka things ini dapat dijadikan satu model yang kerap disebut domain class. Domain class ini serupa dengan entities yang ada di database.
Berikut di atas ini adalah contoh gambar domain class yang memiliki things di dalamnya. Pada nomer
satu di atas adalah nama dari domain class tersebut, dalam contoh tersebut nama domain classnya adalah “Customer”. Sedangkan objek yang ada di dalam domain class tersebut adalah things, dimana masing-masing objeknya memiliki sifat unik yang membedakan satu dengan yang lainnya.
Interaksi juga dapat terjadi antar things dalam problem domain, sehingga satu hubungan dapat terbentuk antar things. Hubungan ini disebut dengan “Relationship”. Relationship adalah hubungan yang terjadi antara things, dan hal ini terjadi secara natural dan tidak membutuhkan faktor lain untuk dapat terjadi. Contohnya: Supplier mengurus supply, customer memesan order, staff mengecek transaksi. Berikut ini adalah beberapa tipe relationship yang dapat terjadi:
- Binary relationship: Sebuah relationship antara dua things yang berbeda dan unik.
- Unary (recursive) relationship: Sebuah relationship antara dua things yang sama.
- Ternary relationship: Sebuah relationship antara tiga things.
- N-ary relationship: Sebuah relationship antara n (Sebanyak yang ada) things.
Relationship/hubungan antar things juga kerap dikenal sebagai cardinality dan multiciplity. Contohnya adalah seorang customer dapat melakukan banyak transaksi, seorang supplier dapat menyuplai berbagai cabang, seorang staff hanya dapat berada di satu cabang. Berikut di bawah ini adalah contoh gambar untuk cardinality dan multiciplity.
Ada dua teknik untuk mengidentifikasi dan mengetahui things yang ada di dalam sebuah problem domain. Teknik pertama adalah teknik brainstorming. Teknik ini mengandalkan brainstorming sebagai pusatnya, lalu mengidentifikasi dan mencatat domain class untuk setiap tipe ada apa saja. Berikut ini adalah step-step untuk teknik brainstorming:
- Pertama-tama, mengidentifikasi user dan use cases yang ada
- Brainstorming dengan user untuk mengidentifikasi dan menemukan things yang ada
- Mengategorikan things ke beberapa kategori berdasarkan tipe mereka. Hal ini berguna agar analisis dapat berjalan dengan lebih efektif.
- Setelah semua ini selesai, satukan semua hasil yang didapat agar mendapatkan hasil akhir yang diinginkan.
Teknik kedua yang dapat digunakan adalah teknik noun. Teknik ini menggunakan noun sebagai pusat dari analisanya. Teknik ini bekerja dengan cara mengidentifikasi noun yang ada dan mengategorikannya menjadi domain class, atribut, things, atau hal yang tidak dibutukan. Setelah itu, sebuah list panjang akan dibuat, dan dengan list tersebut kita dapat memperoleh hasil yang diinginkan.
References:
- http://learn-informationsystem.blogspot.com/2015/01/things-in-problem-domain.html#:~:text=The%20problem%20domain%20are%20the,information%20system%20will%20be%20built.
- https://sis.binus.ac.id/2016/06/20/domain-class-diagram/
- https://www.alibabacloud.com/topic-center/knowledge/3/gddtqgw0sk-what-is-problem-domain-in-software-engineering