Archive

Posts Tagged ‘DDD’

[DDDD] Delta based dan Domain

April 3, 2009 1 comment

Delta based change merupakan konsep utama

Pada pendekatan repository terdahulu adalah kita menyimpan object pada state yg terakhir ke data store. Pendekatan yg dilakukan oleh greg young adalah dia tidak melakukan hal tersebut tetapi menyimpan perubahan2 atau delta perubahan dari aggregate root tersebut.
Pada pendekatan repository yg terdahulu konsep perubahan tersebut pada domain object implicit. Kita hanya mengetahui state sekarang tanpa mengetahui apa2 saja yg telah terjadi pada object itu mulai dari dia di create.

Pada DDDD implicit konsep tersebut diubah jadi explicit dan merupakan bagian dari domain language/Ubiquitos Language.
Read more…

Categories: DDDD, Domain Driven Design Tags: ,

[DDDD] Perubahan pada Repository

April 3, 2009 Leave a comment

Sebagian besar orang menggap bahwa repository merupakan abstraksi dari collection dimana object tinggal disana. Perubahan yg dilakukan pada DDDD adalah object2 yg tinggal pada repository bertanggung jawab untuk mengetahui perubahan statenya.

Contoh nyatanya adalah Order yg berinteraksi dengan Repository. Order hidup di dalam repository. Order akan memberikan perubahan2 yg terjadi pada dirinya semenjak dia dibuat. Repository kemudian menanyakan perubahan itu dan bertanggung jawab terhadap apa yg akan dilakukan perubahan tersebut. Salah satu yg dapat dilakukan oleh repository adalah melewatkannya ke pipeline atau langsung melakukan processing ke database.
Read more…

Penggunaan dan Best Practice pada DDD

April 3, 2009 Leave a comment

DDD cocok untuk digunakan pada project yg memiliki lifetime yg lama dan memiliki kompleksitas yg tinggi. Meskipun demikian banyak juga project kecil yg dapat menerapkan sebagian dari DDD sebagai Pattern language. Pada DDD sebagai Pattern Language hubungan dengan domain expert dan Ubiquitos language akan dihilangkan atau dikurangi. Karena kedua bagian tersebut merupakan hal yg paling sulit dilakukan dan time consuming process.

Salah satu best practice pada orang yg masih baru di DDD adalah selalulah menggunakan bahasa. Bahasa yg dimaksud tentu saja Ubiquitous Language. Bahasa merupakan kunci yg paling penting dalam membuat system yg baik. Bahasa membuat kita tahu bahwa system kita buruk atau tidak.
Read more…

Getter and Setter adalah Domain Anti-Pattern

April 3, 2009 5 comments

Object haruslah kaya akan behavior. Object tidak memiliki bentuk. Jika kita mengekspose state dari object tersebut dengan getter dan setter, maka object yg menggunakannya akan bergantung kepada shape tersebut. Terjadilah coupling terhadap object tersebut. Internal state dari object hanya boleh diubah berdasarkan behavior object tersebut saja.

Jika kita mengeset suatu field pada sebuah object saya yakin sebenarnya ada behavior yg menuntuk kita melakukannya. Pasti ada behavior yg melatarbelakanginya tetapi kita mungkin salah menempatkannya. Mungkin kita menempatkannya di Service Layer atau bisa saja pada object yg berinteraksi langsung dengan object tersebut.
Read more…

DDD Notes

April 3, 2009 Leave a comment

Diambil dan disarikan dari casey charlton

Bounded Context

Context merupakan sisi yg berhubungan dengan bisnis sedangkan bounded context merupakan hal yg berhubungan dengan teknikal implementation
Dengan membagi aplikasi kita menjadi banyak context kita mendukung modularity, separation of concern dan loose coupling. Karena satu model tidaklah cukup untuk menggambarkan suatu permasalahan. Karena masing2 memiliki sudut pandang yg berbeda2
Read more…

Greg Young DDD version

March 6, 2009 Leave a comment

Cara yg terbaik untuk belajar adalah dengan melihat bagaimana orang melakukannya. Nah sama halnya dengan DDD. Salah satu pakarnya adalah greg young. Bisa diliat di sini. Ini salah satu favouriteku di DDD. Hehehe.

Nah saya baca2 dari blognya. Ide yg dapat saya tangkap salah satunya adalah mengenai Command Query Separation(CQS). Pemisahan method untuk membaca atau read only dengan method untuk write(mengubah state).

Nah jadi hal ini diterapkan pada DDD. Mmm… jadi berdasarkan penjelasannya pada Repository hanya ada satu operasi Read saya yaitu method read untuk meload instance dari aggregate root berdasarkan Unique IDNy. Wow. Pdahal selama ini saya menjejali repository dengan method2 yg bertujuan untuk read. Tapi ini hanya satu. Dan itupun untuk retrive berdasarkan ID.
Read more…

Categories: Domain Driven Design, Messaging, SOA Tags: ,

Service (Part 3) Domain Layer dan Application Layer

February 10, 2009 1 comment

Term service ini merupakan term yg overload. Domain Service. Application Service, Infrastructure Service. Jadi kita harus bisa menentukan operasi tersebut diletakkan di layer yg mana. Domain service dan Application Service berkolaborasi dengan Infrastructure service.

Contohnya aplikasi bank memiliki fitur mengirimakn email ke nasabahnya jika account balancenya melewati batas yg ditentukan. Nah service dari email atau notifikasi ini merupakan kepemilikan dari infrastructure layer.

Nah sekarang yg kita harus pisahkan adalah domain dan application service. Hal tersebut tergantung dengan domainya. Jika dia mengandung bisnis rule maka letakkan di domain service dan jika tidak letakkan di application service. Tidak boleh ada bisnis logic pada application service.
Read more…