Friday, March 31, 2006

Test Driven Design & Domain Driven Design (Side By Side Analisa)

Sebelum saya teruskan perbincangan tentang Domain Driven Design, saya nak cerita sikit pasal Test Driven Design, banyak sangat agile process sekarang ini dan saya pun bukan expert sangat nak bercerita detail pasal Agile Process, cuma kalau ada pengalaman menggunakannya InsyaAllah saya ceritalah serba sedikit.

Saya pada asas nya tak berapa follow pure Test Driven Design, saya lebih suka very light bila implement dalam satu-satu project. Kebiasaanya saya akan buat (analisa-test) nyer cara side by side.

Sebelum saya menggunakan Test Driven Design, saya lebih mengikut cara Rational Unified Process, dari user requirement,analisa , coding dan documentation. Tapi apabila project yang semakin besar dan perubahan dari customer sentiasa ada dan masa untuk deliver skrg semakin pendek, saya tak pasti RUP adalah cara yang sesuai. Mungkin saya tak expert dgn RUP, sebab itu saya tak boleh catch up perubahan-perubahan yang dikehendaki oleh customer.Oklah Saya tak nak bercerita panjang berkaitan RUP, tapi nak tumpukan pada bagaimana Test Driven Design & Domain Driven Design boleh digabungkan didalam project.

Bila saya terlibat didalam sesuatu project, skrg nie saya tidak lagi buat fully analisa dengan Domain Model, saya akan go step by step.. saya akan define dahulu object yang terlibat yang hanya mempunyai simple association tetapi bukan semua domain terlibat mungkin 2 atau 3 domain model dahulu dan saya tak letak any properties dan method dalam domain tersebut. Domain tersebut saya akan transfer ke code menjadi class-class. Kemudian saya akan buat simple unit test untuk saya test domain tersebut memenuhi keperluan2 yanag diperlukan, jika test tersebut berjaya saya akan tambah lagi domain-domain lain dan buat unit test lagi.

Pada pendapat saya, saya juga akan buat full domain model dengan association jika perlu tetapi masih lagi mengekalkan teknik tidak meletakkan sebarang properties dan method dalam domain model tersebut. Properties dan method hanya akan diletakkan semasa membuat unit test code. Semasa process define domain-domain model yang ada dalam sesuatu context problem saya akan gunakan any Domain Driven Pattern yang sesuai seperti Entity,Value Object,Aggregate Boundry.

0 comments: