Friday, September 22, 2006

Selamat Menyambut Ramadhan Al-Mubarak

First sekali nak ucapkan pada sesiapalah yang masuk dlm web nie, Selamat Menyambut Ramadhan Al-Mubarak yang bakal menjelang tiba beberapa hari saja lagi. Semoga puasa kali ini lebih berkualiti dari tahun-tahun yang sebelumnya.. InsyAllah.

Dah lebih dari sebulan saya tak sempat nak update info baru, busy?? memang busy sangat sekarang ini. InsyAllah saya akan join company baru pada 9/10/2006 setelah 6 tahun di company sekarang ini, semoga pilihan kerjaya saya tepat dan berkat.

Agak berat juga hendak berhijrah ke tempat kerja yang baru, tapi insyAllah ada hikmah pada semua perkara yang berlaku.

Development plan??.. ada beberapa plan yang saya ingin buat berkaitan development tapi biarlah dulu bila dah betul boleh start dan ada masa..saya ceritalah..

Tuesday, August 08, 2006

ItemBanking - Analisa

Malam tadi saya start analisa project freelance yang baru ItemBanking, buat sikit simple requirement dan beberapa process flow. Agak menarik juga untuk design domain model bagi ItemBanking. Saya start dgn domain Course dan lebih kurang 3 jam, saya dah completekan 60% domain yang terlibat dalam ItemBanking.

Tengok jam dah pukul 1 pagi, tengok anak dah tidur, dia macam haus, saya pergi buatkan susu dan perhatikan dia minum..

Tgh hari tadi company yang pernah ambil saya buat freelance project eTender call saya, minta saya datang discuss satu lagi freelance project database driven juga. Alhamdulillah dapat satu lagi project, insyAllah rezeki anak dan keluarga. Saya berani untuk ambil project ini kerana project ItemBanking saya hanya terlibat dalam core design dan bukannya dalam UI.

Saya ada juga discuss dgn seorang kawan untuk buat 1 hari free class introduction unutk Domain Driven Design dan Test Driven Design, skrg nie nak dapatkan masa dan tempat.

Friday, August 04, 2006

Development Issue

Design domain model memerlukan latihan yang berterusan, setiap applikasi memerlukan cara yang berlainan.

Jadi perlu diingat design domain model bukan nyer didapati dalam bentuk teori, seseorang boleh tulis panjang lebar dan bermacama teknik nak buat design model, tapi unutk merasai cabaran sebenenar design domain model ialah dengan ambil kertas kosong dan conteng apa-apa domain yang terlibat dalam aplikasi, latihan demi latihan memastikan anda faham bagaimana handak menyelesaikan sesuatu masalah.

Saya juga adakala bila design domain model..memerlukan beberapa kali tune design baru dapat domain model yang pada saya, saya berpuashati.. adakala bila saya dah jalankan unit test, then saya dapati domain model saya tidak boleh menampung tambahan keperluan jika ada, jadi saya kena pergi semula ke domain model buat perubahan dari segi tambahan atau kurangkan domain model atau pun perubahan dari segi relation antara domain.

Wednesday, August 02, 2006

Update

Member dari microsoft, contact saya, minta carikan 2 org .Net developer untuk 2 bulannyer project sebagai freelance tapi nak fulltime sebab kena datang kat tempat customer.Pada sesiapa yang available sebagai fulltime freelance dan nak cuba boleh email resume kat saya .. ryzamm@yahoo.com

Seminggu tak dapat nak update pasal development SOC Application, sibuk dgn SurveyManagement application. Application nie..dah up kat server menggunakan .Net 2.0 Framework, cuma part nak build Survey presentation tak siap lagi.. skrg user dah boleh buat survey part Admin je plan dalam minggu ini.

Pasal kerja, pun masih lagi tunggu dari HR nyer confirmation, on site GM department saya, semua dah clear pasal tambahan apa yang saya minta..kena tunggu beberapa hari lagi kot.. tapi saya memang dalam delima sekarang nie,rasa segan ada juga dgn member dari company yang lagi satu sebab saya dah tandatangan persetujuan join company tersebut..

Minggu lepas bawa si comel saya Damia Bisyri pergi buat medical check up.. rutin every 3 month, Alhamdulillah berat dia bertambah dan batuk juga dah hilang.Antara masa 2 minggu yang lepas saya dapat 2 org anak sedara baru, satu adik saya sendiri, anak yang ketiga nama Youseff Ahmad Yasser dan seorang lagi wife saya nyer abg anak perempuan Nur Farahiyah. Wife saya dijangka melahirkan anak saya yang kedua bulan 2 tahun depan... Alhamdulillah.

Saya dapat email senarai barangan yang ada sangkut paut secara langsung dengan Israel laknatullah, antaranya pasaraya Tesco,Coca Cola dan Mc Donald.. dan ada beberapa lagi barangan... insyAllah saya memang tak pernah lagi membeli belah kat Tescon, Coca Cola dah lama tak minum.. Mc Donald nie nak kena asuh my family agar tak beli burger Mc Donald selepas nie ..InsyAllah.. semoga Allah beri kekuatan.

Minggu lepas juga plan nak join demo kat Kg Baru under Pas dan NGO yang lain.. tapi tak sempat nak pergi kesana ader urgent kerja kat datacenter Wangsa Maju.. baca kat online Harakahdaily je.. dgr cerita kat Masjid KLCC pun ader demo gak..heheheh... dpt tahu masa tgk berita 8.00 malam..semangat betul mamat tu..ekk..perghh :) betulke nak boikot???..Pak mentua dia tak bagi boikot pun muahahahaha......

Tuesday, July 25, 2006

First Sketch - SurveyManagement Domain Model

InsyAllah saya akan hantar beberapa domain model untuk exterprise application, tapi kebanyakkan adalah dalam initial design lagi..

Unutk SOC Application, saya akan tulis sambungan tentang development project tersebut insyAllah minggu hadapan.


Monday, July 24, 2006

Second offer dari company

Hari khamis lepas dapat call from PA AGM company T, minta saya call AGM company T sebab nak bincang tentang second offer option dari company T, saya jadi serba salah sebab saya dah sign agreement dengan company P. Hari ini saya kena detailkan dari segi gaji dan position yang saya minta kat company T, kalau dia orang boleh terima gaji dan position yang saya minta insyAllah saya pertimbangkan semula untuk resign, yang lucunya surat resignation saya kat company T dah diapprove HR company T.

Semoga Allah beri saya petunjuk untuk choose company yang mana satu.

Satu lagi freelance project - ItemBanking

Sabtu lepas saya hadir satu meeting/presentation untuk satu lagi project freelance - ItemBanking. Alhamdulillah selepas tamat project freelance ACMS, dapat lagi satu freelance project.

Cuma kali ini saya tidak akan terlibat secara langsung dalam UI Development, dimana UI part akan di buat oleh staff company tersebut, cuma saya kena juga train beliau untuk faham serba sedikit process/methodology saya akan guna dan juga bagaimana unutk guna API.

InsyAllah saya target unutk habiskan project nie dalam masa 2 bulan.

Thursday, July 20, 2006

SOC Application - Make it simple

Saya dapat beberapa feedback dari member satu office yang terlibat dalam project nie, design model saya sebelum nie dah masuk part yang agak complex , so saya fikir saya perlu jadikan design tersebut lebih simple (KISS) "Keep It Simple Stupid". Kemungkinan ada yang dah biasa dengar KISS punya cara atau kalau dari XP (Extreme Programming) "Do the simple thing that could posibble work".

Ok berbalik semula kepada SOC Application, bila saya review balik design model saya..memang saya perhatikan saya dah terover design pada peringkat awal, dan perkara ini bukan nyer satu yang buruk tapi menjadi leceh sedikit bila masuk bab test.Jadi saya fikir saya perlu redesign semula design SOC model agar nampak lebih simple dan tambah complex dari masa kesemasa. Cuba ingat semula use case saya memang cukup simple iaitu unutk create new docket yang merekodkan sesuatu masalah yang berlaku di datacenter dan juga merekodkan product apa yang terlibat. Jadi apa masalah dengan design awal saya dahulu? Design awal saya dahulu diperingkat permulaan saya dah define a few business rules yang agak complex seperti ProblemSpecification. ProblemSpecification tidak perlu diletakkan dahulu kerana perkara pertama yang kita perlu lakukan ialah create Docket baru untuk DataCenter dan Product yang bermasalah.

Jom Modeling
Dari use case tersebut terdapat 3 entity iaitu
-Docket
-DataCenter
-Product

Entity yang lain yang agak tersembunyi ialah Location. Setiap DataCenter mempunyai Location, dimana didalam satu Location boleh ada 0..* DataCenter. Entity location akan lebih jelas apabila kita mula design model. Perlu diingat, kita boleh pada bila-bila masa untuk tidak memasukkan object-object yang apabila kita design menjadikan sesuatu menjadi lebih komplex.

Design awal model.



Dari gambar design model diatas, apa yang boleh kita ceritakan ialah Location boleh mempunyai 0,1 atau lebih Docket pada satu-satu masa iaitu one-to-many manakala pada view Docket pula ialah hanya boleh ada 1 Location pada satu-satu masa.Location juga boleh mempunyai 0,1 atau lebih DataCenter pada satu-satu masa dan DataCenter mempunyai 0,1 atau lebih Product dan begitu juga sebalinya.

Ini ialah UML Diagram bukan database schema, jadi design ini tidak menggambarkan bagaimana object akan di "persist" ke dalam database sebaliknya design ini menunjukkan bagaimana kelakuan aplikasi yang kita bina.

Ok dari design model ada part yang kita boleh improvekan lagi, perlu diingat bidirectional association menjadikan object bertambah complex.Perhatikan relation antara Docket dan Location. Location akan ada senarai Docket, tetapi adakah kita perlukan semua rekod Docket dari Location. Pada kenyataan memang Location mempunyai senarai Docket, tapi kita lebih berminat hendak mengetahui Location yang mana untuk specific Docket, jadi Docket mempunyai relation pada Location tapi bukan sebaliknya.

Lepas itu, kita tengok antara Location dan DataCenter, Location mempunyai one-to-many dengan DataCenter, adakah kita hendak senarai DataCenter tanpa mengetahu dimana lokasi DataCenter tersebut? Tidak bukan, DataCenter tanpa context Location tak memberi apa-apa maklumat jadi DataCenter termasuk dalam Aggregate Boundry Location ini bermakna senarai DataCenter perlu dicapai melalui Location.DataCenter dan Product pula mempunyai hubungan one-to-many tapi yang penting DataCenter tahu Product apa yang terdapat dalam DataCenter, manakala maklumat Product mengetahui dimana ianya berada pada saya tidak penting dalam context Docket.

Dari perbincangan saya design model yang dapat saya buat adalah seperti dibawah.


perlu diingat kita boleh dapat 2 perspektif view design model dari keseluruhan process dan lagi satu apabila process create. Ok setakat yang kita bincangkan dan dari gambaran design model yang telah saya buat, design model yang ada merupakan gambaran dari view keseluruhan. Jika view create kita ambil kita perlu lihat ianya sebagai berikut.

Satu Docket akan akan hanya ada untuk satu Location dan merekodkan problem untuk satu DataCenter yang mengandungi satu Product yang bermasalah.Gambaran design untuk view dari perspektif create.



Seterusnya apabila kita dah dapat lihat dari view perspektif create dengan lebih jelas adalah mudah untuk kita memahami process seterusnya.Location,DataCenter dan Product merupakan object-object yang kebiasaanya mempunyai value, ini bermaksud bila kita hendak create Docket, value Location,DataCenter dan Product bukannya dapat dari process create Docket sebaliknya ia adalah dari process Admin Management. Kita hanya perlu dapatkan value tersebut dari Relational Database,FileSystem atau Storage System.Ok jadi disini saya akan create satu Repository untuk dapat value-value Location,DataCenter dan Product. Dari design yang kita buat calon untuk kita adakan Repository ialah pada Location.Repository hanya ada pada Aggregate Root sahaja.



Apa yang anda fikir, adakah design ini boleh mencapai objektif use case kita? Saya tidak kata domain model design yang saya buat ini betul, dan macam maner saya nak mengetahui domain model design ini ok?Saya nak supaya kita dapat berfikir sedikit dimana problem yang timbul dalam design model ini. Semuanya nampak okkan?

Sebenarnya masalah yang timbul ialah hubungan antara Docket dan Location, walaupun hubungan ini betul, tapi ini tidak dapat menjawab use case kita.
Docket merekodkan fault problem unutk product yang berlaku di dalam sesebuah DataCenter, manakala DataCenter pula berada dalam Location tertentu. Jadi kita perlu tukar sedikit design tersebut.Jadi Docket tidak perlu tahu tentang Location dimana berlaku fault , tapi Docket perlu tahu Product yang mana satu bermasalah. Jika Docket ingin tahu Location, ia boleh minta dari DataCenter dimana Location tersebut.Jika ingin menegtahui DataCenter boleh dapatkan dari Product.

Thursday, July 13, 2006

SOC Application - Analisa Domain (Repository Dan Factory)

Senarai artikel berkaitan:
SOC Application - Requirement
SOC Application - Analisa Domain

Sehingga ketahap ini kita sudah cover a few pattern dalam DDD seperti Entity,ValueObject dan Aggregate. Terdapat beberapa pattern lain yang akan saya masukkan semasa tune Domain design ini.

Motif utama kita ialah untuk membolehkan kita create Docket. Jadi kita cuba buat adakah Domain yang telah design mampu untuk create Docket berdasarkan requirement yang ada. Setiap docket perlu ada startFaultTime dan endFaultTime. Perbezaan antara waktu docket dibuka dan ditutup penting untuk mendapatkan performance report.

Object Creation - Factory
Kita boleh create object dari contructor object sendiri atau kita boleh create melalui Factory. Saya suka untuk create object dari factory, sebab ada beberapa kelebihan, insyAllah pada artikel yang akan datang saya sentuh detail kelebihan tersebut. Ok dari domain design yang ada, saya perlu memilih dimana saya perlu mempunyai factory, biasanya factory akan hanya ada di root aggregate dan factory yang akan kawal association antara domain-domain yang akan dibina.



Test Driven Design - TDD
Saya akan masuk sedikit ke bahagian TDD, unutk test beberapa domain yang telah saya buat. Saya akan menggunakan NUnit unutk melakukan test fixture.

Perkara pertama saya saya ingin test ialah untuk create docket dgn minimum maklumat.
Terdapat 2 domain yang penting unutk bahagian ini iaitu Docket sendiri dan ProblemSpecification.

Ok, let's start.
Saya kena import dahulu NUnit library seperti berikut

using NUnit;
using NUnit.Framework;


Langkah seterusnya menulis code seperti berikut

using System;
using System.Collections.Generic;
using System.Text;
using SOCManagement.Core.TestDomain;
using SOCManagement.Core.TestFactory;
using NUnit;
using NUnit.Framework;

namespace SOCManagement.Core.TestUnit
{
[TestFixture]
public class FactoryTest
{
[Test]
public void CreateDocketTest()
{
ProblemSpecification problemSpecification = DocketFactory.CreateProblemSpecification("DataCenterA","ProductA",Convert.ToDateTime("01/01/2006 10:00:00"),Convert.ToDateTime("02/01/2006 08:30:00"));
Docket docket = DocketFactory.CreateDocket(problemSpecification);
Assert.IsNotNull(docket);
}
}
}


Dalam TDD, sequence ialah fail->pass->refactor->fail->pass..
Jadi this test code diatas akan memberi anda tanda merah iaitu fail. Kenapa? itu memang cara TDD :)...

Code diatas akan fail kerana anda masih lagi tiada code untuk domain-domain tersebut.Ok jom tulis class untuk domain-domain tersebut.
Pada tahap ini, layer between code belum disentuh. Saya akan tulis class-class tersebut dahulu, kemudian saya akan sentuh pembahagian layer-layer dan dimana hendak letak class-class domain tersebut.

Class ProblemSpecification
using System;
using System.Collections.Generic;
using System.Text;

namespace SOCManagement.Core.TestDomain
{
public class ProblemSpecification
{
private string _dataCenterName;
private string _productName;
private DateTime _startFaultTime;
private DateTime _endFaultTime;

public ProblemSpecification(string dataCenterName,string productName,
DateTime startFaultTime,DateTime endFaultTime)
{
this._dataCenterName=dataCenterName;
this._productName=productName;
this._startFaultTime=startFaultTime;
this._endFaultTime=endFaultTime;
}
}
}


Class Docket:
using System;
using System.Collections.Generic;
using System.Text;

namespace SOCManagement.Core.TestDomain
{
public class Docket
{
private ProblemSpecification _problemSpecification;

public Docket(ProblemSpecification problemSpecification)
{
this._problemSpecification = problemSpecification;
}
}
}


Class DocketFactory
using System;
using System.Collections.Generic;
using System.Text;
using SOCManagement.Core.TestDomain;

namespace SOCManagement.Core.TestFactory
{
public class DocketFactory
{
public static Docket CreateDocket(ProblemSpecification problemSpecification)
{
return new Docket(problemSpecification);
}

public static ProblemSpecification CreateProblemSpecification(string dataCenterName,string productName,DateTime startFaultTime,DateTime endFaultTime)
{
return new ProblemSpecification(dataCenterName,productName,startFaultTime,endFaultTime);
}
}
}


Selepas semua class selesai ditulis, anda boleh compile dan run NUnit.

SOC Application - Analisa Domain

Artikel sebelum ini:
SOC Application - Requirement

Sebelum ini saya pilih solution proposal 2. Pada saya proposal 2 lebih jelas menerangkan kepada saya apa yang berlaku. Untuk saya buka sesuatu docket saya perlukan ProblemSpecification dimana ianya mempunyai maklumat tentang dataCenterName dan productName mungkin juga mengandungi beberapa maklumat yang lebih complex seperti startFaultTime, manakala DataCenterProduct pula merekod senarai Product yang terdapat dalam DataCenter.

ProblemSpecification menerangkan matlamat Docket, tanpa ProblemSpecification, Docket akan menjadi complex dan agak susah untuk diubah.



Untuk maklumat sesiapa yang datang dari backgroud database design, cuba ignore pasal database pada tahap ini.Anda mungkin akan bercelaru jika pada tahap ini anda bayangkan design tersebut dalam bentuk Database design.

Entity Dan ValueObject
Sekarang saya fikir untuk pergi ke langkah seterusnya, saya detailkan lagi association antara domain-domain tersebut. Docket akan ada one-to-one relation dengan ProblemSpecification. Problem Specification ialah ValueObject dimana saya hanya berminat dengan value DataCenterName dan ProductName dan beberapa maklumat lain.Jika terdapat docket yang mempunyai problem yang sama, jadi ProblemSpecification boleh dikongsi antara docket.Kebiasaanya ValueObject tidak boleh diubah jika ianya di kongsi dengan docket-docket yang lain. Jadi anda perlu analisa samaada ProblemSpecification boleh dikongsi atau tidak. Untuk makluman saya design ini secara terus dari requirement yang ada dan sambil menulis artikel, jadi anda dapat lihat process sebenar design iaitu adakalanya akan ada pertukaran semasa dalam process tune design.

Docket adalah entity, setiap docket perlu dibezakan antara satu sama lain dan perbezaan docket ini ialah di docketNumber atau docketTicket.DataCenter dan Product kedua-dua ialah entity, kita kenali kedua-dua entity melalui dataCenterCode dan productCode.

Aggregate
Ditahap ini, saya masih lagi memerlukan tune pada design domain, Ok kita tumpukan pada 2 domain, DataCenter dan Product. Disini kita memerlukan Root Aggregate, iaitu point access, dimana domain diluar aggregate boundry hanya boleh mempunyai reference pada Root Aggregate, Aggregate akan memudahkan reference antara domain supaya tidak menjadi complex.Domain hanya perlu satu point access untuk mendapat maklumat domain lain yang berada dalam aggregate boundry.

Seperti contoh kalau kita hidup berjiran, kita tidak boleh tahu kesemua maklumat dalam rumah jiran kita, yang kita perlu kenal ialah ketua rumah tersebut dan dari situ kita boleh dapat maklumat lain seperti berapa orang anak beliau. Jadi ketua keluarga tersebut yang akan menjawab.Lagi satu contoh anak kita berkawan dengan anak jiran, dan pada satu hari ada kelas tambahan, kita minta supaya anak jiran dapat pergi kesekolah dengan anak kita, jadi kita akan pergi kepada jiran kita (ketua keluarga) dan minta pada beliau agar anak beliau dapat pergi kesekolah dengan anak kita. Beliau yang mempunyai hak keatas anak beliau. Ini antara contoh Root Aggregate dan Aggregate Boundry.

Berbalik pada DataCenter dan Product, dalam context docket, kita setuju DataCenter dan Product adalah entity, perlukah kita wujudkan aggregate antara kedua-dua entity ini? Adakah kawalan khusus antara kedua-dua entity tersebut? Ya terdapat kawalan khusus iaitu senarai product berdasarkan DataCenter. Kita tidak berminat pada product tanpa mengetahui DataCenter dimana product itu berada.Jadi saya pilih DataCenter adalah Root Aggregate dan Product adalah aggregate boundry. DataCenterProduct merupakan ValueObject jadi ianya tiada masalah berada dalam aggrete boundry tersebut.

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.

Tuesday, July 11, 2006

Update SOC Application

Saya baru dapat request dari Network Operation Center department untuk update current system yang digunakan sekarang kepada new update version. System yang digunakan sekarang running on .Net 1.1, jadi ada beberapa business requirement yang bertambah dan beberapa business logic yang berubah, jadi mereka berpendapat untuk upgrade ke system yang baru. Sebenarnya saya bukan membina aplikasi yang baru, saya plan untuk extends system yang ada ke framework 2.0 yang baru dan insyAllah untuk project nie saya juga plan menggunakan TDD dan DDD methodology.

Saya masih berharap saya dapat teruskan project Electronic Research Management System dan penerangan bagaimana saya implement TDD dan DDD dalam project tersebut.

Friday, July 07, 2006

Berhijrah ke Company baru

A'salam
Lama tak dapat nak update any new, any development software, walau dihati terasa ingin meneruskan artikel berkaitan DDD and TDD tapi masih belum dapat tunaikan hajat tersebut. 2 minggu nie..saya agak pening sikit nak buat keputusan berkaitan kerja.

Pada mulanya saya senang hati untuk terima tawaran company P, memandangkan saya dah 6 tahun di company T dan terasa ingin menambah ilmu baru di persekitaran yang lain. Tapi perasaan mula berbelah bagi apabila Assistant GM jumpa dan minta saya fikirkan semula hasrat saya hendak berpindah kerja. Dia tolong push to management untuk offer saya something yang menarik tapi GM HR company T agak cerewet sikit dan saya buat keputusan untuk terima company P, cuma apa yang saya tahu GM saya masih lagi tak puas hati dan nak fight dgn GM HR untuk dapatkan apa yang saya letakkan.

Saya agak terharu dengan AGM dan juga GM company T, bersusah payah untuk bawa issue ini ke management level.. ini jugalah antara sebab saya 50-50 untuk gerak ke company lain. Semoga Allah balas jasa baik mereka berdua.

Company P, saya akan berkerja sebagi Senior Software Engineer (.Net/Microsoft Enviroment) cuma di sini saya sebagai terikat sebagai perkerjaan kontrak 3 tahun. Jika performance saya bagus, insyAllah akan disambung lagi.

Dan di company ini, cabarannya agak besar, insyAllah segala ilmu dalam OOAD, DDD dan TDD saya akan gunakan dan saya juga berharap dapat mempelajari dari mereka yang lebih berpengalaman di company P dalm bidang ini.

Notis perletakkan jawatan ialah selama 3 bulan, jadi dlm jangka masa tersebut beberapa perkara saya kena tune, seperti masa berkerja dan juga hendak cari rumah sewa yang baru..dekat sikit dengan tempat kerja tersebut.

Saya masih lagi tak boleh komen suasana kerja disana macam maner..saya hanya berdoa agar saya boleh hadapainya dengan sebaik mungkin. Saya perlukan masa yang seimbang antara kerjaya dan family 60% pada family - 40% pada kerja. Upah memang agak penting dalam ekonomi sekarang dimana semua barang keperluan rumah naik.. perbelanjaan harian juga naik.

Friday, June 23, 2006

New/Updated Features .Net

Dalam jangkamasa 2 tahun sejak .Net 1.0 hingga .Net 2.0 banyak new features yang saya tak sempat nak explore/test lagi, bnyk tumpuan saya lebih kepada solution architecture (Domain Driven Design). Kena tanam semangat juga nie nak test nie features yang ada. List new/updated technology dalam rangking yang perlu dicuba dahulu.

ASP.Net 2.0 (www.asp.net)
LINQ - Language INtergrated Query (http://msdn.microsoft.com/data/ref/linq/)
Ajax.Net - Atlas Control (http://atlas.asp.net/default.aspx?tabid=47)

Update
The ADO.NET Entity Framework Overview

Tuesday, June 13, 2006

InsyaAllah akan update info

InsyAllah saya akan update semula info setelah lama stop menulis.

Tuesday, April 18, 2006

Minggu yang busy

Saya tak dapat update sebarang code atau artikel on Software Development, agak sibuk kebelakangan ini..

Tuesday, April 04, 2006

Test Driven Design & Domain Driven Design (Design & Test) - Part 3

Artikel sebelum ini:

Test Driven Design & Domain Driven Design (Side By Side Analisa) - Part 1
Test Driven Design & Domain Driven Design (Design & Test) - Part 2

Artikel sebelum ini, saya terangkan secara ringkas bagaimana saya bina domain model dari Use Case (RUP Style) / User Story (XP Style). Sebelum saya terangkan detail sambungan artikel ini, saya nak bawa sedikit maklumat tentang TDD. Pada artikel sebelum ini, saya tak berkesempatan nak cerita tentang TDD, saya anggap sesiapa yang berminat supaya dapat cari sendiri maklumat berkaitan TDD di search engine. Cuma saya akan tulis maklumat ringkas tentang TDD.


TDD - Test Driven Design menitikberatkan supaya any software development bermula dengan simple test dan pastikan test tersebut lulus, kemudian buat lagi test untuk User Story yang lain.

Kembali ke context problem sebelum ini berkaitan Research Management. Antara point penting dalam context tersebut ialah part payment dimana payment boleh dikategory kepada beberapa type dan setiap payment mempunyai beberapa saluran kemana amount tersebut dibahagikan. Saya bawa contoh dalam gambar dibawah.


Saya ada buat beberapa perubahan pada domain model design, berdasarkan beberapa soalan yang ditanya pada Domain Expert.Contoh adalah seperti dibawah.




Memang pada permulaan saya design agak simple dan saya akan buat simple test untuk domain model ini.

using System;
using NUnit.Framework;
using System.Collections;



namespace ResearchDomainTest
{
/// <summary>
/// Summary description for ResearchTest.
/// </summary>
///
[TestFixture]
public class ResearchTest
{
private Research r;
private Payment p;
private PaymentItem pi;

[SetUp]
public void SetUp()
{
r = new Research();
p = new Payment();
pi = new PaymentItem();
}

[TearDown]
public void TearDown()
{
r = null;
p = null;
pi = null;
}

[Test]
public void TestResearchWithResearchCategory1()
{
r.ResearchCategory = "UniversityResearch";
Assert.AreEqual("UniversityResearch",r.ResearchCategory);

r.ResearchCategory = "SponsoredResearch";
Assert.AreEqual("SponsoredResearch",r.ResearchCategory);
}


[Test]
public void TestPaymentWithPaymentType()
{
p.PaymentType = "AmountApproved";
Assert.AreEqual("AmountApproved",p.PaymentType);
}

[Test]
public void TestPaymentItemWithPaymentItemType()
{
pi.PaymentItemType = "ResearchAssistant";
Assert.AreEqual("ResearchAssistant",pi.PaymentItemType);
}

[Test]
public void TestResearchWithManyPayment()
{
Payment p1 = new Payment();
p1.PaymentType = "AmountApproved";
r.payments.Add(p1);

Assert.AreEqual(1,r.payments.Count);

Payment p2 = new Payment();
p2.PaymentType = "FirstDisbursement";
r.payments.Add(p2);

Assert.AreEqual(2,r.payments.Count);

}

[Test]
public void TestPaymentWithManyPaymentItem()
{
Payment p1 = new Payment();
p1.PaymentType = "AmountApproved";

PaymentItem pit1 = new PaymentItem();
pit1.PaymentItemType = "ResearchAssistant";

p1.paymentItems.Add(pit1);

Assert.AreEqual(1,p1.paymentItems.Count);

}
}
}

Plan Project Baru

Minggu nie, saya dah start kerja semula kat DC Smk, setelah lebih 3 bulan kat DC Wm buat inventory system. Pagi nie terima request dari internal group nak tambah a few features dalam sistem Network Operation Docket. Saya plan untuk upgrade sahaja NOD kepada new system menggunakan .Net Framework 2.0 + NHibernate + SpringFramework.

Banyak juga nak kena plan jika nak upgrade ke .Net Framework 2.0. Previous NOD saya develop guna NHibernate tapi pada masa tu.. saya tiada ilmu dalam SpringFramework dan cara development process follow RUP.. :) Ialah masa tu baru lepas pergi course Rational Rose tentang RUP + OOAD , then saya bnyk juga follow buka Craig Larman -Applying ULM & Pattern.

Jadi jika ada kesempatan untuk next project saya akan guna TDD+DDD agile process.

Monday, April 03, 2006

Test Driven Design & Domain Driven Design (Design & Test) - Part 2

Test Driven Design & Domain Driven Design Part 1

Saya akan beri satu context problem dalam project yang pernah saya buat dan pada saya context problem ini pada tahap sederhana untuk diselesaikan dan InsyAllah bagaimana cara Design & Test dapat membantu dalam menghasilkan software yang berkualiti.

Sebuah University mengarahkan Research Department supaya dapat mengendalikan Research University Project secara online. Antara objective sistem tersebut ialah seperti berikut:

1. Setiap Research Project akan mendapat payment grant dan pecahan nilai amount bergantung pada jenis-jenis research.Sistem berkeupayaan untuk mengendalikan pelbagai jenis Research Project seperti SponsoredResearch, UniversityResearch, PHDResearch.
Sebagai contoh jika jenis research ialah University Research, maka terdapat 5 pecahan dimana amount akan disalurkan.
Iaitu kepada ResearchAsisstant,Book,Travelling,Misc dan Equipment

2. Selepas payment grant diluluskan, pihak pentadbir akan membuat beberapa fasa (disbursement) pembayaran seperti "First Disbursement", "Second Disbursement".

3. Setiap kali disbursement dibuat, sistem perlu merekodkan baki.

Analisa Domain Yang Terlibat
============================

Apabila saya diberi context problem sebegini, saya akan mula melukis kemungkinan-kemungkinan domain model yang terlibat. Saya listkan domain-domain yang terdapat dalam context diatas.


"Setiap Research project akan mendapat payment grant dan pecahan nilai bergantung pada jenis2 research.Sistem berkeupayaan unutk
mengendalikan pelbagai jenis Research Project seperti SponsoredResearch,UniversityResearch,PHDResearch"

Perkataan yang saya boldkan adalah kemungkinan domain-domain yang perlu ada dlm context tersebut.
- Research
- Payment
- SponsoredResearch
- UniversityResearch
- PHDResearch

Research adalah entity pattern dalam DDD analisa, kerana kita perlukan unik identity untuk setiap Research. Perlu diingatkan unik identity bukan bermaksud id didalam
database samaada sequence atau nilai yang diberi. Sehingga level design ini kita tidak akan sentuh tentang database, sebaliknya unik identity bagi Research adalah seperti research project no yang boleh didapati dari kombinasi increment_record_number+deparment_code+research_type (001MGMT-LT01)

Selepas saya kenalpasti object tersebut, saya akan mula lukis domain model sama ada menggunakan kertas, white board (jika dalam kumpulan), atau
menggunaka UML IDE seperti Argo UML atau product-product lain seperti Visual Paradigm, Micrisoft Visio dan lain-lain.

Ok saya akan guna Visual Paradigm dan design tersebut adalah seperti berikut:



Dari analisa diatas juga SponsoredResearch,UniversityResearch,PHDResearch merupakan juga subset dari Research,maka saya akan buat inheritance asscociation. Perlu diingat jika SponsoredResearch atau yang lain-lain hanya merupakan salah satu jenis Research sahaja anda tidak perlu membuat inheritance object.Penting untuk anda utarakan semula jika terdapat persoalan adakah SponsoredResearch dan yang lain-lain mempunyai ciri-ciri yang berlainan (properties), jika tidak anda bolehlah meletakkan domain ResearchType sahaja mengantikan SponsoredResearch, UniversityResearch, PHDResearch.

Selain dari itu setiap Research akan mendapat payment grant, jadi terdapat asscociation antara Research dan Payment. Pada awal design jika tidak dinyatakan directional dan multiplicity domain-domain tersebut dalam context, maka saya tak akan masukkan dahulu directional dan multiplicity. Tetapi jika anda sudah mahir dengan design domain model tiada masalah pada peringkat awal untuk masukkan directional dan multiplicity. Ok saya akan pergi ke ayat yang berikut

"Sebagai contoh jika jenis research ialah university research, maka terdapat 5 pecahan dimana amount akan disalurkan.
Iaitu kepada ResearchAssistant,Book,Travelling,Misc dan Equipment"

"Selepas payment grant diluluskan, pihak pentadbir akan membuat beberapa phasa (disbursement) pembayaran seperti "First Disbursement""

Dari perenggan ayat diatas terdapat beberapa saluran dimana amount grant yang diberi akan disalurkan iaitu ResearchAssistant,Book,Travelling,Misc dan Equipment.
Apabila saya buat analisa , jika terdapat maklumat yang kurang jelas, saya akan berjumpa semula pada (Domain Expert) - Domain Expert orang yang arif tentang process pengendalian Research Project dalam context harian seperti Pegawai Executive Research Department.

Antara soalan yang perlu saya utarakan - * Disini akan terlibat analisa pattern dalam Domain Driven Design:
1. Adakah perlu untuk mengetahui siapa ResearchAssistant yang terlibat atau hanya maklumat kemana amount tersebut diberikan?
2. Adakah perlu untuk mengetahui secara specific buku-buku yang dibeli?
3. Adakah perlu untuk merekodkan aktivity Travelling
4. Adakah perlu untuk merekodkan Misc
5. Adakah perlu untuk merekodkan Equipment

Untuk context diatas kesemua saluran dimana amount akan disalurkan tidak melibatkan sebarang maklumat terperinci bagaimana amount yang diberi akan dibelanjakan atau kepada siapa wang tersebut akan diberi, sebaliknya hanyalah untuk mengetahui
pecahan amount yang disalurkan sahaja. Maka saya dapati domain yang ada hanyalah PaymentItem dan PaymentItemType.

PaymentItem adalah entity kerana PaymentItem bertanggugjawab kepada beberapa fasa seperti fasa "AmountApproved", fasa "First Disbursement", fasa-fasa ini dikendalikan oleh domain PaymentType (dalam DDD dikenali sebagai ValueObject) manakala
PaymentItemType juga adalah ValueObject kerana saya hanya ingin mengetahui maklumat saluran mana wang disalurkan samaada disalurkan kepada ResearchAssitant,
Travelling,Book,Misc atau Equipment.

Bersambung

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.

Tuesday, March 28, 2006

Domain Driven Design, NHibernate & SpringFramework - Part 1

Saya dah lama bercadang hendak menulis tentang Domain Driven Design, NHibernate dan SpringFramework dan menggunakan ketiga-tiga teknologi ini dalam asp.net (C#) cuma masa saya agak terhad, saya juga cuba untuk sekurang-kurangnya memberi pengenalan akan teknologi-teknologi ini..InsyAllah.Saya juga akan listkan beberapa tools dan link website yang saya fikirkan menarik.

Untuk membina sesuatu software yang boleh di kategori sebagai enterprise, analisa keseluruhan perlu merangkumi design,performance dan flexiblity. Selain dari itu kebolehan code2 yang ditulis untuk menerima perubahan-perubahan baru (requirement) juga perlu di ambil kira.

Pertama sekali NHibernate library perlulah di download di NHibernate Official WebSite.
Selain dari itu saya juga menggunakan SpringFramework.Net untuk Dependency Injection. Dynamic Link Library dan source code untuk SpringFramework.Net boleh di download di SpringFramework.Net.

Domain Driven Design bukan tools atau software sebaliknya merupakan Agile process dalam software development. Terpulang kepada developer..hendak guna agile process yang sesuai.. seperti Test Driven Design, Rational Unified Process, Feature Driven Design , XP-programming atau lain-lain. Info berkaitan Domain Driven Design.

Jadi saya dah senaraikan 3 sumber utama untuk first Simple Project Tutorial ini.

Monday, March 27, 2006

Interview

Minggu lepas saya attend interview untuk jawatan .Net Software Engineer (C#), agak gemuruh jugalah..sebenarnya saya dah lama tak lalui interview untuk company luar.. , kalau internal interview untuk kenaikan level pernah lah juga..

Saya jangka dalam 30min sahaja interview tersebut.. tengok jam dah 45 min saya kat dalam bilik interview..di hadapan 2 orang panel. Soalan berkisar pada Agile Software Process .. seperti User Requirement, Software Quality,Unit Testing .. Version Control..Integration.

Jumaat lepas dpt jawapan first interview..Alhamdulillah first interview berjaya.. cuma ada perbincangan lagi berkaitan salary.. :)

Ya Allah berilah aku petunjuk..

Thursday, March 16, 2006

User Management - Domain Model

Beberapa discussion menarik tentang User Management , bagaimana hendak design very dynamic user management atau boleh di panggil Role Based Model . Saya suka design Role dan Security Access dalam domain yang berlainan, memang terdapat beberapa pakar dlm enterprise architecture suka masukkan sekali security level dlm role tapi saya tak nampak advantage yang besar dan juga tiada kelebihan dari segi dynamic access control pada object.
Person 1-* ----> 1-* Role 1.* ----> 1-*Rights

Bersambung

Wednesday, March 15, 2006

Fit: Framework for Integrated Test

Saya berkesempatan download FIT.Net dan run a few test guna code sendiri. Menarik.. test tool FIT.

Di ambil dari page FIT -
"Great software requires collaboration and communication. Fit is a tool for enhancing collaboration in software development. It's an invaluable way to collaborate on complicated problems--and get them right--early in development.
Fit allows customers, testers, and programmers to learn what their software should do and what it does do. It automatically compares customers' expectations to actual results."

Running Test - IrwanTest





IrwanTestFit.TestFit
iyAdd()
100100200
100300300


Selepas running Test

Running Test - IrwanTest






IrwanTestFit.TestFit
iyAdd()
100100200
100300300 expected

400 actual


Code Test
============
using fit;
using System;

namespace IrwanTestFit
{
public class TestFit : ColumnFixture
{
public int i;
public int y;

public int Add()
{
return i + y;
}
}
}

Tuesday, March 14, 2006

FluentInterface - update project

Saya tertarik perbincangan dlm web Jimmy Nilsson http://www.jnsk.se/weblog/posts/fluentnworkspace.htm

Jadi dlm perancangan, saya rasa baik juga jika saya cuba FluentInterface dalam project NHibernateExpression in comman English mungkin boleh juga untuk Bahasa Melayu..

IList query = new NHibernateQueryImpl(Product)
.dimana("productname").sama("UbatGigi").dan("harga").besaratausama("10.00")
.paparkan();

Problem Sql Reporting Services

Problem yang tak dijangka selepas install SQL 2005 Express Edition, instance pada SQL 2000 berubah, jadi bila nak run ReportServer ada error connection key, kena reinstall encryption key, tapi cari dalam harddisk takda buat backup rsdbkey.txt, kena cari solution lain nak selesaikan masalah nie..

Alhamdulillah setalah cuba beberapa solution dan akhirnya pagi ini berjaya buat connection semula ke ReportServer. First saya delete dulu semua configuration ReportServer. Run command rskeymgmt. Command file terdapat dalam c:\Program Files\Microsoft Sql Server\80\Tools\Binn

Step 1
======
c:\Program Files\Microsoft Sql Server\80\Tools\Binn\rskeymgmt -d

Step 2
======
c:\Program Files\Microsoft Sql Server\80\Tools\Binn\rsconfig -c -s ryzam-tmnet -d ReportServer -a windows

Step 3
======
Compile semula datasource dalam Report Designer, delete semua report file dalam ReportServer dan deploy semula.

Done!

Monday, March 13, 2006

Macam-macam pasal Development

Minggu lepas saya dah download 2 tools development
1. Visual Web Developer 2005 Express Edition
2. Visual C# 2005 Express Edition

Saya cuba lah try satu 2 contoh starter kit yang diberi download secara percuma, first sekali yang saya interesting ialah berkaitan Generic.. tapi masih kabur lagi,belum start any test guna Generic, so tak dpt nak beri input.

Cuma dalam Web Developer kita tidak boleh lagi add additional C#/VB.Net project dalam solution tersebut, dalam Web Developer ada disediakan satu special folder untuk tulis library dlm language yang dipilih , nama folder tersebut App_Code, so any c# /VB.Net class boleh tulis dlm folder tersebut.

Any project kita boleh tulis guna Visual C# dan add reference dlm Web Developer, so untuk project mcm nie... mesti buka 2 visual tools.. jika guna yang free lahh..kalau guna Visual Studio Standard Edition dan keatas, semua project boleh ada dlm satu solution dan pelbagai project boleh add dalam satu solution.

NHibernate & DDD
Development project untuk contoh NHibernate & DDD saya dah buat, Alhamdulillah setakat ini process design dan coding code berjalan lancar..cuma minggu lepas tak dpt update banyak.. a few friends dlm DDD yahoo group dah review code project ini.. and tunggu feedback je lahh..
Future plan nak masukkan generic implemantation dlm code..

Salah seorang member dlm group bagi saya contoh bagaimana dia implement nworkspace archictecture design http://www.jnsk.se/weblog/posts/nworkspacewhy.htm
.. nice design saya tgk.. but tak sama dgn konsep yang saya design.


Thursday, March 09, 2006

Damia Bisyri

Sikecil comel Damia Bisyri demam.. dapat call dari nursery kata badan dia panas sikit risau juga bila dapat tahu anak kecil demam... kesian susah dia nak tidur malam.. asyik terjaga sahaja.. Moga Allah sembuhkan puteri kesayangan kami.

Minggu nie ada 2 project maintenance nak kena selesaikan, satu ialah data migration untuk Research Center UIA, malam tadi tidur lewat cuba clean and matchkan data yang group IT UIA bagi dalam Access. Macam-macam problem timbul masa nak cari Researcher Id sebab dalam Access mereka simpan Principal Researcher dan Co-Researcher dalam satu field.

Hari sabtu ada progress meeting dengan group ACMS Project dan HeadStaters Singapore, project nie pun satu hal rumit, sebab dari awal process development dah berterabur, saya join bila project dah sakit..jadi saya pun sakit kepala.....

Update
Minggu nie saya nak start development dlm .Net 2.0 Framework, tak berkesempatan nak explore detail ASP.Net 2.0 dan C# 2.0 sebelum nie, dari apa yang saya baca ada a few features yang menarik seperti Generic.
Beberapa tool saya dah download semuanya free dan yang ok boleh digunakan dalam commercial project.
- http://msdn.microsoft.com/vstudio/express/vwd/default.aspx - Visual Web Developer Express
- http://msdn.microsoft.com/vstudio/express/vwd/default.aspx - Sql Server 2005 Express

- http://msdn.microsoft.com/vstudio/express/visualcsharp/ - Visual C# Express

Tuesday, February 21, 2006

Entity - DDD pattern

Entity pattern - Diperkenalkan dalam group DDD (Domain Driven Design), setiap entity mesti mempunyai unik identity membezakannya dengan entity objek lain. Berbeza dengan Identity database, Identity tersebut merupakan relation between table dan row.

Monday, February 20, 2006

Kerja

Alhamdulillah, awal tahun ini ada 2 offer dari company untuk ambil saya bekerja sebagai .Net Developer/Consultant, offer pertama dari company yang terlibat dengan syarikat Oil And Gas sebagai contract developer dan satu lagi company yang terlibat dengan core software development, gaji.. memang menarik. Tapi saya tak dapat nak join mereka atas sebab-sebab tertentu.. adakah saya memilih? atau saya dah selesa bekerja di company sekarang?.. ntahlah..tapi keutamaan saya dlm bekerja ialah masa yang flexible..dan juga masa bersama keluarga :)

Awal minggu nie saya terima satu lagi offer, tapi perlu hadiri interview..:) part nie memang lemah sikit..tak pandai nak cakap apa.. :) gaji saya tak plan nak letak berapa..tengoklah dalam sehari dua nie.. insyAllah..

Wednesday, February 15, 2006

Domain Driven Design

Salah satu methodology software development yang saya apply dalam industri software ialah Domain Driven Design (DDD). Cukup menarik pada pandangan saya apa yang diketengahkan oleh pakar-pakar DDD, anda boleh mendapat maklumat lanjut di
Domain Driven Design.

Update
Saya masih belum lagi explore secara mendalam .Net Framework 2.0, masih banyak lagi saya tak tahu, banyak project yang saya handle masih menggunakan Framework 1.1, Untuk start nie.. saya plan bermula dengan Visual Web Developer 2005.

Tuesday, February 14, 2006

Cuba menulis semula

Assalamualaikum,

Lama saya tidak update dalam website ini, kesibukan masa dan melayan kerenah sikecil damia bisyri.. InsyAllah saya akan update dengan latest info tentang software developement.

W'salam