Monday, September 03, 2007

DDD and TDD Software Development Architecture Guideline

Cuti sempena hari kemerdekaan aku tak pergi maner, malas nak sibuk-sibuk sambut merdeka sebab dari banyak segi negaraku ni umpama negara yang benar-benar belum merdeka. Jadi aku buat initial draft untuk DDD dan TDD Software Development Architecture Guideline. Ada beberapa buku yang aku gunakan sebagai sumber seperti Domain Driven Design - Eric Evans, Apply Domain Driven Design and Pattern - Jimmy Nilsson dan beberapa web site lagi. Alhamdulillah semasa menulis draft ini nampak lagi jelas kaitan DDD dalam software development. Sebelum nie, aku baca buku bnyk juga yang aku skip, dan kenkadang maklumat tersebut penting dalam memahami software development process.

Aku dah cover beberapa point penting dalam initial draft seperti Crunching Knowledge dan Ubiquitos Language.

Update

Aku plan dah lama nak catat apa yang aku faham pasal domain, terdapat beberapa point penting semasa captured domain model bersama domain expert.

1. mana-mana property dalam object bukannya terdiri dari simple text, ia sepatutnya dikeluarkan menjadi object yang lain dan hubungankan relation antara object tersebut.

Sebagai contoh ambil scenario sistem register pendaftaran no kereta, pendaftaran no kereta boleh didapati dengan cara biasa iaitu ikut turutan, pendaftaran memilih no istimewa yang telah di paparkan oleh JPJ seperti 1111,2222 etc dan juga pendaftaran no pilihan sendiri yang kemungkinan bukan terdiri dari no istimewa yang telah di setkan oleh pihak JPJ.


Jadi jika difikirkan secara biasa no plate kereta akan menjadi property dlm class Kereta seperti contoh:



Tiada apa yang salah cuma number plat kereta berdasarkan scenario lebih dari sekadar property , number plat boleh menjadi konsep object dimana property tersebut dikeluarkan menjadi object Plat dan tambahkan association antara object tersebut.



Kemudian kita buat satu lagi analisa untuk memenuhi scenario, number plat kereta boleh di daftarkan dengan pelbagai cara seperti ikut turutan pendaftaran, booking no pilihan dengan sejumlah bayaran dan pilih number plat sendiri. Jadi design kena tukar supaya Plat akan menjadi interface IPlat dan untuk menampung cara-cara pendaftaran tadi kita akan buat 3 lagi object yang akan implement interface IPlate

2 comments:

YangArief said...

Guideline ni utk your company shj ker? ker utk public :D

ryzam said...

basically this guideline memang di request oleh sebuah company dimana saya menjadi freelance consultant, tapi idea nya insyAllah saya akan masukkan sedikit -sedikit dlm web ini.