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