Wednesday, July 12, 2006

SOC Application - Requirement

Kerjaya saya dalam analisa sistem bermula pada peringkat awal dengan Database Centric Design. Apabila sesuatu sistem hendak dibina saya dan beberapa rakan akan mengambil user requirement dan kemudian berdasarkan requirement tersebut saya akan membincangkan platform apa yang sesuai, language yang akan digunakan, berapa developer yang diperlukan dan dateline untuk project tersebut.

Kemudian perbincangan tertumpu kepada database design, saya menyedari cara ini agak susah ialah apabila development time masuk ke 50% - 60% dan user memerlukan beberapa perubahan yang agak drastik dan besar. Database Centric Design tak berkemampuan untuk memenuhi perubahan tersebut. Ianya boleh dicapai tetapi mengambil masa dan tenaga yang lebih untuk membuat perubahan tersebut.Walaupun saya mengambil pendekatan OOAD dalam design tersebut, tetapi masih lagi banyak kelemahan yang saya pelajari untuk digunakan dalam Database Design Centric.

Pendekatan sebenar OOAD saya apabila saya menggunakan Domain Driven Design (DDD) didalam analisa saya, tapi sebelum DDD saya mencuba juga analisa menggunakan Color Modeling. So secara umumnya kedua-dua cara ini saya akan praktik didalam sesuatu analisa.

Berbalik kepada SOC Application, mari kita lihat 2 senarai awal requirement yang diperlukan dalam SOC Application.

1) Staff boleh create docket untuk record issue untuk datacenter dan product apa yang mempunyai masalah.

2) Boleh mencari senarai docket dgn flexible seperti dari masa problem mula, mencari berdasarkan status (Open/Close/Pending), mencari docket untuk datacenter dan product.

Pada tahap ini saya tak perlukan terlalu detail requirement dan juga design. Apa saya asaya perlukan adalah asas utama (context) sistem yang dibina. Jadi context sistem ini ialah untuk merekodkan sebarang masalah yang berlaku didatacenter dan product apa yang berkaitan dengan masalah tersebut.


Domain
Seperti artikel saya sebelum ini, apabila saya bercerita tentang DDD maka Domain unutk sesuatu context tersebut diberi perhatian yang lebih.

Bagaimana agaknya rupa design yang saya akan bina berdasarkan requirement diatas?

1) Staff boleh create docket untuk record issue untuk datacenter dan product apa yang mempunyai masalah.





Dari requirement diatas ada 3 domain yang saya perolehi iaitu Docket,DataCenter dan juga Product tetapi saya masih lagi tak menghubungkan sebarang relation dalam Domain tersebut. Requirement tersebut masih kurang jelas dan saya memerlukan maklumat yang lebih.Setiap DataCenter mempunyai 1 atau lebih Product dan saya memerlukan problem specification untuk merekodkan problem yang berlaku.


Solution Proposal 1



Untuk solution proposal 1 ini, saya just tambah DataCenterProduct bertujuan untuk rekodkan DataCenter dan senarai Product yang ada.

Solution Proposal 2


Solution proposal 2 saya tambah ProblemSpecification (ValueObject) dimana bila query ProblemSpecification sebagai default dihanya akan ada dataCenterName dan productName.

Jadi dari kedua-dua proposal ini yang mana lagi sesuai?.. Disini kita boleh mengguna TDD untuk lihat yang mana satu lebik ok.

0 comments: