Friday, April 03, 2009

New PM

Emm macam mana?... ok ke tak ok.. dia reti buat programming tak?hahahah , criteria PM yang bagus tahu selok belok programming so penanda aras logik yang tinggi(ni cakap orang fanatik programming) sepatututnya PM dari mereka yang berjuang dalam OSS sebab mereka kena ikhlas membantu programmer dan rakyat jelata yang lain tanpa memikirkan fulus. Bayangkan PM nie peminat dan pejuang OSS, sure takde kes komisyen yang melampau. Nie PM bukan Project Manager, aku tak berminat pasal PM tu, yang aku tengah fikirkan nun PM pinang sebatang BIJAN. Please someone buat code boleh reverse word BIJAN->_ _ _ _ _.

public class PM

{

public Zombi EvaluateZombi(string zombi)

{

if (zombi.Equals("BIJAN"))

{

throw StackOverflowException("Dah tak ader orang lain ke..");

}

return AnyChildsSiblingsComeFromThisUglyZombyThrowAway();

}

}




Thursday, April 02, 2009

Refactoring menggunakan SRP

"A class should have one, and only one, reason to change."

Permulaan yang baik untuk refactoring ialah menggunakan guideline Single Responsibility Principle.

Aku kena buat tambahan features pada module yang sedia ada. Lama jugak tak buat programming, ialah manja sangat hari tu ada ramai penolong nah sekarang semua orang dah jadi orang besar, aku juga jadi programmer kampung.

Aku buka code module yang perlu aku tambah..perghhhh, boleh tahan:) ... terfikir aku sejenak. Code yang ditulis sudah cukup bagus, tapi kalau aku tak ubah nanti nampak macam tak ada kerja lah pulak. Aku ambil keputusan untuk ubah sedikit atleast tambah comment :)

First thing ialah identify any Value Object dalam code tersebut. Lepas aku dah tahu part maner boleh jadi Value Object kemudian aku kena map guna nhibernate mapping component.

Continue...

Refactoring cukup mencabar

Kalau aku tengok code aku semula, tak perlu lama 3 bulan lepas sure aku pun rasa kenapalah aku buat macam tu, patutnya aku buat macam nie..

Itulah kebiasaannya perasaan seram yang menyelubungi aku setiap kali aku lihat code lama aku dandalam sesi refactoring itu lagi mencabar jika code yang ditinggalkan penunggu sebelum ini tidak ada comment aduhhhh........(aku pun sama jarang nak bagi komen kat kot). Aku nak bagi suggestion setiap development team kena ada cikgu disiplin yang check code kalau tak komen kena ketuk jari dengan pembaris. Tapi cikgu disiplin nie kena faham sejarah development sesuatu project , kalau project itu project yang interim mungkin dende dia hanya dikorek hidung tak perlu diketuk jari dgn pembaris. Tapi serius kalau betul cikgu disiplin datang check..akulah yang paling banyak kena ketuk dengan pembaris adussssssssss.. sakitnya

Wednesday, April 01, 2009

Never ever underestimate person

One thing i learned when involve in management level, doesn't underestimate other person skill and knowledge even though their opinion/suggestion is sometime doesn't make sense.

Reporting services dan Linq to SQL

Untuk reporting services project aku menggunakan ReportViewer control 0.8 dan Linq to Sql. Selain dari itu untuk aku query ke database aku juga mengunakan LinqPad

Yang selebihnya insyAllah kalau dibukakan hati untuk menulis pasal reporting services aku akan tulis :)

Monday, March 30, 2009

Criteria apabila memilih service dan function skop

Aku sekarang terlibat dalam development enterprise application dalam skala yang besar. Seperti biasa cara design architecture banyak terpengaruh dengan Domain Driven Design. Aku masih lagi mentah apabila hendak memilih "Application Service" dari segi naming pattern dan skop yang di "cover" oleh sesuatu service. Secara kebiasaan kelakuan service ialah terlibat dalam coordinate lebih dari satu domain dan "Application Service" tidak sepatutnya terlibat dengan sebarang "state" dalam ertikata yang lain sesiapa sahaja boleh mengambil instance service tersebut tanpa risau akan sejarah life cycle service tersebut sebelum ini (Ini apa yang aku faham dan cuba menterjemakan kedalam bahasa biasa). Ok sebelum pergi jauh apa yang aku nak tekan kan disini ialah criteria Application Service dan bukannya Domain Service. Ada sesiapa biasa membantu?

Update
1. Apabila selesai design domain model dan cuba fikir dari model tersebut dari aspect client, apakah business service yang diperlukan. So dari point tersebut boleh dapat list service yang terlibat.

Thursday, March 26, 2009

Tidak mampu hendak puaskan hati semua orang

Buat berdasarkan apa yang mampu dan semua itu dan ditentukan oleh Allah.

Saturday, March 21, 2009

Learning Management System

Selain dari Campus Management System, aku juga terlibat dalam Learning Management System, walaupun aku tidak involve dalam programming tapi aku mesti familiar, clear setiap function/features yang ada dalam LMS. Seperti biasa bila mencari tu memang ada banyk benar LMS yang ada kat muka bumi nie, sebelum nie aku tahu Dokeos, Docebo dan Moodle rupanya kawan-kwan dia yang lain pun ramai dan beraneka ragam features. Aku jumpa satu website yang bagi list LMS

http://software.forbes.com/learning-management-system-software

Selamat mencuba : )

Friday, March 20, 2009

Mencari Enterprise Architecture Tools

Aku ada hal pagi nie, so aku ambil EL sebab nak settlekan pasal account bank rumah. Malam tadi aku ada masa nak research pasal EA tools yang available dan yang penting free. Sebelum nie untuk architecture design banyak guna sketch + argo uml + excell. Tapi aku rasa tak memadai guna tools dan tak memenuhi kehendak EA process.

Ada beberapa tools yang aku jumpa dan dalam process evaluate
1. ADONIS
2. Essential Project
3. Iteraplan

Update
Design Process Modeler :
- BizAgi ( agak menarik)
- yED Graph Editor

Thursday, March 19, 2009

Test framework tools

Sekarang nie aku guna Gallio untuk execute test fixture aku, yang best tentang Gallio dia boleh execute banyak jenis framework serentak sebagai contoh untuk layer UI aku mungkin nak guna MBUnit dan unutk layer Services aku nak guna NUnit manakala untuk DataAccess aku boleh guna XUnit. Selamat mencuba..

Real Estate - testing project

Aku sekarang tengah dalam process refactoring current Campus Management System dan aku dah beberapa bulan tak terlibat secara direct dalam coding. Kebanyakkan masa aku terlibat dengan team meeting, department meeting.

Untuk mengikuti perkembangan software development, aku rasa aku kena juga buat simple code atau simple project baru skill aku tak ketinggalan. Tapi biasanya bila aku plan nak buat project suka-suka, selalunya pertengahan jalan saja. Bahagian ini yang aku kenkadang aku ada masalah. Awal-awal mungkin aku bersemangat, tapi bila pertengahan bila dah busy dengan tanggungjawab dengan real project, aku rasa macam terbengkalai sahaja. Sudah banyak kali aku nak dokumen cara aku terlibat dalam development process tapi biasanya part 1 atau part 2, selepas tu aku dah tak boleh fokus. Macam mane nak buat tu?

Helper break in MVC 1.0

So far ada beberapa helper yang tak lagi disupport oleh MVC 1.0 kerana sebab-sebab tertentu. Aku malas nak bincang pasal kenapa function/helper tu tak support lagi tapi nak listkan beberapa code yang aku kan tukar dalam project sekarang ini:

1. Html.Form<> dah tak support, kena tukar ke Html.BeginForm
2. HtmlActionLink<> pun dah tukar kepada Html.ActionLink sahaja
3. Html.SubmitButton pun kena tukar kena normal cara
4. Html.CheckBox parameter position dan type pun dah berubah

Upgrade kepada ASP.Net MVC RC 2

Ada beberapa functionality break bila aku upgrade ke ASP.Net MVC RC 2. BTW kebanyakkan cara adalah lebih mudah dan pendek apabila mengguna version baru ini.

Upgrade ke new version nie adalah salah satu list dalam improvement session yang team aku akan focus dalam beberapa minggu mendatang ini, insyAllah.

Update
40% code dah compatible dalam ASP.Net MVC RC 2. Lagi satu hari nie Microsoft buat announcement ASP.Net Release RTW dah boleh download dan guna

ASP.Net MVC 1.0

Wednesday, March 18, 2009

Guna Balsamiq Studio

Aku dah guna Balsamiq Studio selama 2 minggu, application nie aku beli harga USD79. Alhamdulillah aku cukup puas hati. Contoh skecth UI aku ambil dari website
http://devlicio.us/blogs/casey/archive/2009/03/09/ddd-sample-application-first-steps.aspx

Campus - University enviroment

Hampir setahun lebih aku terlibat dalam pembangunan software berkaitan campus, university dan juga e-learning. Agak menarik juga kerana bidang ini terlalu luas dan berkempang dengan begitu cepat. Untuk e-learning sahaja terdapat beberapa puluh software yang berkaitan authoring tools, online video, question bank, object learning etc dan yang menarik kebanyakkan adalah open source.

Peluang di malaysia dalam bidang ini masih terbuka luas dan tak banyak lagi company yang terlibat dengan begitu mendalam total solution untuk university/campus sama ada fizikal dan juga virtual. Pengalaman sepanjang berada dalam industri ini, untuk membuat consultation cukup banyak antara larat dengan tidak sahaja.

Tuesday, March 17, 2009

Agile way - sambungan

Ok sambungan dari tulisan semalam, berkaitan user story, apakah seorang developer apabila memilih user story memang perlu buat coding dari UI hingga ke DataAccess? Jawapan nya adalah ya. Aku pun mempunyai perasaaan kurang pasti adakah betul sebegitu. Aku pernah juga berbincang dengan member dan mereka juga kurang pasti. Tapi apabila melihat sendiri dan merasa pengalaman dalam execute agile dalam team, aku rasa ada kebenaran iaitu seorang developer mesti bertanggungwab sepenuhnya pada user story itu. Cuma ada sedikit kelonggaran pada pendapat aku, ialah di layer UI, sudah semestinya developer tersebut kena terlibat dengan coding di layer UI, cuma tidak perlu sehebat web design/java script developer (jika bukan expert dalam java script). So akan ada satu lagi refactoring process terlibat hanya di UI untuk memasukkan semua element yang dapat menarik minat customer.

Agile way

Dalam agile satu user story akan di handle oleh seorang developer sahaja. Jadi jika dalam project architecture tersebut kita mempunyai 4 layer (UI,Services,Repository,Domain) maka developer tersebut mesti terlibat dalam semua layer.

Sebagai contoh base framework, standard coding dan architecture overview dah selesai dan bila process memilih user story, seorang developer kena faham dia perlu bertanggungjawab untuk coding dalam semua layer jika ada, tanggungjawab disini bukan bermakna dia perlu mahir dalam semua layer, cuma sebagai pemegang amanah untuk user story tersebut dia kena mencari solution sama ada mendapatkan khidmat nasihat senior developer dangan melakukan pair programming (teknik ini selalunya susah nak istiqamah) atau melihat contoh dari developer yang lain. Oleh kerana itu estimation untuk user story sebolehnya dilakukan oleh semua developer dari senior kepada junior dan ambil estimation yang paling memuaskan hati semua developer.

Tuesday, March 03, 2009

Catatan...

Tugas sekarang sebagai Software Architect agak mencabar tetapi bukan disebabkan masalah berkaitan software itu sendiri, cuma senario sekeliling yang membuat tumpuan kerja agak terganggu. Aku pada dasarnya tak berminat nak bincangkan masalah kerja yang tiada kaitan dengan technical/architecture/coding tapi situasi kebelakangan ini amat menghantui keupayaan aku untuk memimpin sesebuah department yang pada mulanya agak besar dan berkurang disebabkan masalah kepimpinan, kepercayaan dan ketidakpuasan hati terhadap sesuatu perkara. Tapi walaupun ada beberapa pihak tidak berapa optimist akan keupayaan organisasi ini untuk terus maju kehadapan, aku masih lagi menaruh harapan agar project ini berkembang, berjaya saing dan menjadi kebanggaan umat Islam.

Aku akui tugas aku sebagai "Head Of Department", tidak berjaya memberi impak yang positif kepada staff aku, mungkin aku masih lagi kurang ilmu, ya ilmu tu luas, semakin kita mencari ia, semakin kita akui banyak yang kita tidak tahu sebenarnya. Aku cuba sedaya munkin untuk drive team aku kepada sesuatu yang boleh dibanggakan, cuma perasaan aku, aku gagal kali ini, biar aku akui ini dari orang lain bagi tahu "you're fail". Tapi kegagalan ini bagus untuk aku, kerana sekarang aku tahu kelemahan utama aku ialah kepercayaan staff kepada aku untuk mereka membina kerjaya yang cemerlang disini kemungkinan hanyalah khayalan. Hari ini aku terima lagi satu surat perletakan jawatan kali yang keberapa ntah aku pun tak tahu. Sekrang baru terasa apabila ada staff yang hantar surat perletakan jawatan.eemm, dahulu aku yang biasanya hantar surat ini keatas. Aku tak berminat hendak salahkan pihak atasan. Aku bukannya tak kisah jika ada staff bawahan aku meletak jawatan, ia menjadi penanda aras KPI aku sebenarnya. Aku boleh terima kritikan secara terbuka, kenapa tidak sebab ianya bagus untuk terus menjadi yang terbaik.

Walau bagaimana pun insyAllah segalanya akan berjalan lancar. Aku masih lagi bersemangat untuk terus memberi kepakaran selagi diperlukan.

Friday, February 27, 2009

NHibernate Series : How to Setting up Configuration - part 1

 

On of the most important thing when you want to start with NHibernate is to know how make NHibernate configuration. I will show you using normal approach and Fluent NHibernate.

1. Configuration properties in App.config / Web.config

You need to create all NHibernate configuration properties in App.config or Web.config. This is an example of how to specify the database connection properties inside a config file.

<?xml version="1.0" encoding="utf-8"?>


<configuration>


  <configSections>


    <section name="hibernate-configuration"         


             type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate" />


  </configSections>


 


  <hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">


    <session-factory>


      <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>


      <property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>


      <property name="connection.connection_string">Server=(local);database=dbase;Integrated Security=SSPI; </property>


      <property name="dialect">NHibernate.Dialect.MsSql2005Dialect</property>


      <property name="show_sql">true</property>


    </session-factory>


 


  </hibernate-configuration>


 


  <!-- other app specific config follows... -->


  


</configuration>


 


2. Configuration properties in hibernate.cfg.xml



You can also configure NHibernate configuration properties in hibernate.cfg.xml and this file need to save into bin directory otherwise NHibernate claim it’s not found the resource file.




<?xml version="1.0" encoding="utf-8" ?>


<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">


  <session-factory name="UnitTest">


    <property name="connection.connection_string_name">Server=(local);initial catalog=Test;user id=sa;password=qwe123</property>


    <property name="dialect">NHibernate.Dialect.MsSql2005Dialect</property>


    <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>


    <property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>


    <property name="show_sql">true</property>


    <property name="connection.release_mode">auto</property>


    <property name="adonet.batch_size">500</property>


  </session-factory>


</hibernate-configuration>




Time to test.


I will use nunit to test that nhibernate can read this config file





        Configuration cfg;


 


        [TestFixtureSetUp]


        public void ConfigureUsingNormalApproach()


        {


            cfg = new Configuration().Configure();


            cfg.AddAssembly(Assembly.Load("ScrumDev.Domain"));


        }












You should get the test result in green color.

Software Design and Humanity Architecture Design

Actually I’m not very good in writing document either for technical or business proposal. My last position as Head Of Technical (.Net) doesn’t much involve to that area . The scenario is totally different now where  I have to manage few subordinates and also more then 10 staffs report directly to me. One thing I’m appreciate to work with my current team because they are open to suggestions and comments. I’m no expert and many things I need to learn. After more than one year to be Solution Architect at my current company I’m realize that I’m not only need to plan how the system/software should be look like but more than that is to plan for the people and give them a good * humanity design (environment etc) so that they can work accordingly towards the goal. Failing to do that will also impact the overall software architect design. To make your software design reality is not just related to a machine but also related to whose is the man behind that.

* humanity design refer to services, infrastructure to help rebuild from communities crisis – i believe this still can be used in software development

Thursday, February 26, 2009

I’m using Windows Live Writer

This is my second post using Windows Live Writer. I’m really like this application. You can get it from here

http://windowslivewriter.spaces.live.com/

How I do agile - Part 2

In the previous post i had written a little bit about the import thing need to do in the initial process when we start software development project.  Project Statement from the Product Owner point of view is quite important. You really need to know exactly what project/software you are dealing with. Once your have high level overview of the project you can start jump to the core process in Scrum agile framework. Product backlog is the heart of Scrum.  The product backlog is basically a prioritized list of requirements, or stories, or features, or whatevers. Things that the customer wants, described using the customer’s terminology.

Step 2 ( Define Product Backlog)

The way we define our Product Backlog is to ask our customer/domain expert to write it what they want/need in the system using their own terminology (their understanding of the process). Product backlog actually contains a list of user stories. In my experience you need to guide them how to write a good user story otherwise they will write non process statement like their dream that nothing to do with the system.  Last year I  had an opportunity to help one company to start with agile process in their company. The software is about real estate solution. I had give simple briefing how to write user story , but because I’m didn’t guide them personally, I’m quite shock many of them write user story that are not reflected to the business of real estate but more like the comment /suggestion they want from the top management. For example “As an Agent, I want more money, so that i can buy another house“.  Actually this is not wrong , this can be our guide to ask them until we get good user story. We need to go detail with this user,and ask them how to get more money using this system? and what should they expect from the system that give them more money?. This is the question that I’m dealing with when i need to know from the customer/user.

My prefered user story template is taken from Mike Cohn .

As a [user role], I want to [goal], so I can [reason].

Hopefully this can help you to start a simple agile process within your team. I will continue InsyAllah..

Friday, February 13, 2009

Domain Driven Design : How to start

Recently there is a lot of interest in DDD come from a book, article etc. You may the one who are interested to start the real project with DDD. From my experience involving in a few projects that take DDD as its core architecture guideline, i'm no expert to claim the best way to build using DDD'ish but i can share my little knowledge.

I think very few people could claim to have done full blown on DDD, you can read stuff Jimmy Nilsson, Greg Young, Colin Jack, Udi Dahan and of course Eric Evans.

For a start you can read Domain Driven Design book

Thursday, February 12, 2009

Hire People Smarter Than You

What do you think, if you have right to hire people do you will take this challenge and ignore your ego?

How I do agile in my team - Part 1

Maybe you have read many article about agile approach like xp, scrum, lean etc. You wanted to try in your team but sometime it quite difficult to implement it and after that you realize that does agile is the correct approach to go in software development. Actually you still can deliver you software project to your client without knowing or practice agile.It's only the guideline on how you manage your software development process (team, workflow, communication) from the beginning until the end of the project (release).

Based on my experience implemented agile in my team, i would like to share how i execute agile framework in my team. For your information i had failed a few times when adopting agile in my team. So my advice to you guys who plan to try agile framework in your software development don't give up if the end result is not what have you expected.

Step 1 (Overview Of The Project)
When i asked to develop new software project, the first thing i will do is to call for a discussion session with domain expert an get the overview of the project. In this session all team members must join.

Sunday, February 08, 2009

Consultation Project

Currently I'm handling 3 freelances project on software architecture as a consultant. The biggest project is an Idea Collection Management System. I'm still working at Al-Madinah International University as Software Architect and Alhamdulillah my team able to release a 2 big project since i joined in Dec 2007.

Thursday, November 06, 2008

You have something..

You have something in your mind but you don't know how to express it in non technical word..what should you do, appoint someone to write for you?.. get you friends to translate for you..or just leave it in your brain until you die. In Islam knowledge should be shared to the community even one word right. I'm trying to practice this with my team, but sometime i feel to difficult. Currently I'm in the process to discipline myself to write any knowledge that's good for my team in Wiki.. let see the result. InsyAllah, I du'a to Allah to give me the strength to continues work on that.

Friday, May 23, 2008

mood tak de nak update

Aku tak de mood sgt nak update, sebab tu lah site nie aku tak update..

Wednesday, February 20, 2008

Monday, February 11, 2008

Masa

Hampir 2 bulan 1/2 aku tak update web nie dan hampir juga 2 bulan 1/2 aku bekerja ditempat baru, perancangan awal hendak menulis tentang agile process pun tidak kesampaian. Kerja di tempat baru memang mencabar, sangat mencabar dari segi teknikal dan team management, sekarang dalam team aku 6 orang dan plan tahun nie akan bertambah menjadi 15 orang. InsyAllah , aku kena kuatkan semangat untuk bersama team aku deliver sistem-sistem yang telah di rancangkan.

Kenkadang aku terasa , dalam masa 2 bulan nie banyak ilmu,tips aku ketinggalan, aku jarang dapat cari masa nak membaca artikel atau menulis code...

Nak menulis dalam nie pun dah penat.....

Sunday, December 02, 2007

Domain Model Design :Siri 2

User Story : Siri 1

Aku akan cuba menjadi domain expert dan pada masa yang sama sebagai developer untuk menjayakan siri demo agile process ini. Maka segala user story yang ditulis adalah berdasarkan pemahaman aku sahaja tapi aku akan cuba sebaik mungkin menjadi domain expert.

Aku nak cuba pendekkan beberapa penerangan, so rancangan aku ialah dari user story aku akan terus buat simple domain model design. Cara aku nie short cut sedikit kerana jika mengikut process sebenar apabila mendapat senarai user story, team lead dengan developer/system analyst hendaklah berbincang dengan domain expert untuk dapatkan lebih maklumat berkaitan user story, ini adalah kerana user story hanya seperti check list antara domain expert dan developer team. Domain expert akan letakkan priority untuk setiap user story dan team akan berbincang dengan domain expert pemilihan user story yang akan dimasukkan kedalam iteration 1.

Aku rasa penerangan lebih lanjut berkaitan process tersebut aku biarkan dalam tulisan yang lain buat masa ini aku nak fokuskan kepada domain model design berdasarkan user story yang telah pun ditulis.

Sebagai User/Domain Expert/StakeHolder, aku boleh:
- Rekodkan maklumat user story, oleh itu aku boleh tahu detail user story yang aku rekodkan dan perlukan dalam project

Berdasarkan user story diatas context utama domain expert ialah merekodkan setiap user story kedalam sesuatu project. Jadi bila dianalisa terdapat 2 domain yang penting untuk merealisasikan context/tujuan tersebut iaitu:
- User
- UserStory
- Project

Untuk itu aku biasanya akan design seperti berikut:


Visual design diatas masih belum lengkap kerana relation antara domain-domain tersebut boleh dikategori sebagai kompleks.Perlu diingat relation bidirectioanal akan mengakibat relation domain mesti mengetahui antara satu sama lain. Jadi apabila design setiap relation memerlukan penelitian adakah perlu relation domain A ke domain B perlu saling kenal mengenali. Jika tidak perlu pastikan relation dalam satu hala (unidirectional). Aku akan bagi 2 solution unutk difikirkan solution mana yang lagi sesuai

Kerja baru

Esok aku akan berkerja ditempat baru sebagai Solution Architect, arghh terasa berat tanggungjawab yang aku ambil apabila terima tawaran berkerja di syarikat baru ini. Aku berharap aku boleh memenuhi tanggungjawab tersebut, dan sudah semestinya sokongan dari team members yang lain amat dihargai.

Aku juga berdoa perancangan aku untuk menjadikan team ini sebagai satu team yang mantap dalam agile process berjaya dan aku akui bukan satu kerja mudah untuk melaksanakan impian tersebut. Semoga Allah membantu aku Aminn!!

11.30 pm

Saturday, December 01, 2007

User Story : Siri 1

Siri pertama aku untuk demo agile teknik gabungan beberapa tools/lib dan process dalam software development.
Aku plan hendak guna style video tapi laptop kat rumah aku nie tak de microphone, kalau aku record pun tak de suara.

Pertama aku nak perkenalkan User Story, kemudian dari user story aku akan buat simple domain model dan kemudian buat unit test yang juga simple untuk melihat keberkesanan domain model tersebut dan buat refactor kepada domain model jika ada dan juga refactor semula unit test untuk kembangkan lagi kemungkinan-kemungkinan yang difikirkan sesuai. Tapi yang penting bermula dengan kecil dan yang mudah dan jgn sesekali terover design dan juga terover test tidak bagus untuk kesihatan developer :)

Aku plan untuk buat User Story Application XPProgramming dimana applikasi ini berkeupayaan untuk merekodkan user story. User story mempunyai pelbagai variasi untuk dibuat. Aku suka style BDD user story.
Start:
Sebagai User/DomainExpert/StakeHolder, aku boleh:
- Rekodkan maklumat user story, oleh itu aku boleh tahu detail user story yang aku rekodkan dan perlukan dalam sesuatu project


Sebagai Solution Architect, aku boleh:
- Rekodkan maklumat project yang akan di bina, oleh itu aku boleh perkenalkan overview tentang sesuatu project
- Boleh pilih project dan setkan berapa kali iteration untuk project, oleh itu aku boleh setkan masa mula dan expected masa tamat sesuatu project.
- Boleh pilih user story dan letakkan tugas pembinaan kepada developer yang dipilih.
- Boleh letakkan priority pada setiap user story.
- Boleh setkan point untuk setiap user story atau point untuk project.
- Boleh setkan untuk setiap iteration ada berapa minggu didalamnya.
- Boleh setkan unutk setiap iteration user story yang akan dimasukkan.


Sebagai Developer, aku boleh:
- Lihat rekod user story yang ditulis User, oleh itu aku boleh tahu senarai user story yang telah direkod oleh user.
- Lihat rekod user story yang diletakkan pada diri sendiri.
- Lihat rekod user story yang diletakkan pada developer lain.
- Boleh letakkan estimate masa untuk setiap user story yang diberi berdasarkan point.

Sejarah

Aku sengaja letak tajuk sejarah sebab tulisan ini ada kaitan dengan sejarah tetapi bukan sejarah Malaysia atau sesiapa ,tetapi serba sedikit cerita bagaimana aku terjebak dalam gejala agile methodology.

Aku memang peminat Domain Driven Design dan Test Driven Development dan aku memang practice kedua-dua cabang ilmu ini dalam software development sekarang ini. Memang niat aku dari dulu nak kongsi bersama, tetapi halangan masa dan lain-lain mengakibat niat untuk menulis dengan lebih mendalam perlaksanaan kedua-dua methodology ini belum tercapai.
Kenapa aku pilih Domain Driven Design? Permulaan perjalanan software development aku dalam Object Oriented bermula dari teknik yang dikenali sebagai Database Driven Design, segala maklumat yang disampaikan oleh pelanggan akan di terjermahkan kedalam bentuk Database Relational Design. Tapi bila semakin lama terlibat dalam analisis design dan apabila mula terlibat dengan beberapa project yang agak besar dan sebagai mana diketahui umum requirement biasanya selalu ada perubahan walaupun disaat akhir development. Kesakitan untuk membuat penukaran design amat terasa dengan penggunaan Database Driven Design. Penggunaan strored procedure seperti menjadi kepastian dalam software development aku ketika itu. Aku pernah terlibat dengan Aplikasi Pengeluaran ubat-ubatan farmasi dimana keseluruhan table berjumlah 130 dan bayangkan apabila jika logic ditulis didalam stored procedure, jika terdapat perubahan pada mana-mana bahagian business process, selalunya aku cadangkan untuk buat change request kerana untuk menyemak semula business logic mengguna Database Driven Design adalah amat mencabar. Aku mula mencari alternative lain yang memudahkan kerja aku, pada masa tersebut aku tak dengar lagi perkataan agile apatah lagi memahami process agile yang sebenar. Tapi pada masa tersebut walaupun aku mengguna Database Driven Design aku seboleh-bolehnya cuba untuk tarik keluar semaksima logic yang boleh digunakan dia dalam code, pada ketika itu aku dah mula memahami serba sedikit design pattern walaupun tidak mahir, pernah aku cuba masukkan beberapa design pattern yang mudah,tapi hampa kerana kekurangan ilmu.
Apabila didatangi masalah dan process development menjadi perlahan, aku cuba mencari maklumat berkaitan analisis pattern . Aku mula diperkenalkan dengan teknik Peter Coad iaitu UML In Color oleh brother Hamdi, aku juga mula mendapat maklumat berkaitan Hibernate/NHibernate. Setelah beberapa bulan mencuba NHibernate aku terasa development aku semakin laju sekarang tapi masih lagi kekurangan dari segi design/architecture. Alhamdulillah sekitar tahun 2004 aku terjumpa satu artikel berkaitan Domain Driven Design menerangkan kepentingan Domain Model design dan aku agak tertarik unutk mengetahui dengan lebih mendalam. Aku mula join group Domain Driven Design dan aku mula membeli buku Domain Driven Design. Pertama kali aku baca buku tersebut aku tidak faham sangat apa yang cuba disampaikan oleh penulis buku tersebut, kerana ianya agak baru benrbanding cara yang aku gunakan. Aku juga bertanya soalan didalam group tersebut dan aku cuba memahami beberapa pattern penting didalam buku tersebut dengan buat beberapa simple test project.

Semasa melayari group DDD, ada juga beberapa artikel menerangkan tentang combination TDD+DDD dan terdetik pada ketika itu aku tertarik untuk mengetahui apa itu TDD, aku start mendapat maklumat dari group XP Programing dan aku bertambah seronok dalam software development. Combination TDD+DDD=Agile.

Friday, November 30, 2007

Hari terakhir di IT Lab

Aku dah submit handover document yang perlu pada rushdan untuk dia take over software development work di IT Lab, emm semalam last demo aku pada CMS community team dan aku happy sebab dapat tunjukkan prototype CMS sebelum aku berhijrah ke tempat lain.

Sepanjang tempoh 1 tahun 2 bulan aku kat IT Lab macam-macam pengalaman menarik aku dapat disini, belajar menangani pelabagai ragam vendor yang cuba mempermainkan group kita org. Tak semua vendor yang berfikiran sebegitu , cuma sebahagian yang fikir mereka ini hebat terutama vender S*P dan apabila dibalas balik dengan fakta-fakta soft dev.. terdiam tergolek-golek mereka nak menepis serangan dari group kita orang.. hehe. Pada masa tu bos kita org..kita gelar guru Hamdi pakar OOAD, setiap pagi kita orang akan ada status update bermula seawal pukul 8pg.. yang kebiasaan nyer lewat aku le tapi lewat 10 min je selalunya, biasalah aku kat Shah Alam (alasan lemah nie..) bos aku lagi jauh, jalan Kebun 7.30 dia dah sampai.

Pada team-team member yang lain Kak Kartinah, manager yang best dan baik hati :) , guru Hafiz pakar Java, banyak agile skill dan teknik aku dapat belajar dari beliau. .Net team Rushdan , Java Team Fadhlan dan Faisal, Analyst team Yusnizam aka Bob dan Zehan, SAP Team Nani dan team-team lain yang terlibat dalam project PITTIS.

Selamat berjuang IT Lab, semoga dapat berjumpa lagi...

Tuesday, November 20, 2007

Project Structure dalam DDD


Sebelum ini aku mempunyai pelbagai versi domain model project structure berdasarkan pemahaman aku ketika itu, dan juga ada juga cara solution yang cuba-cuba. Cuma sekarang ini aku lebih tumpukan kepada style Domain Driven Design, maka domain model structure juga aku follow DDD, cuma dalam DDD group tak ada standard domain model structure.


Cara aku design ialah dengan groupkan domain model dalam Aggregate dimana nama folder akan follow nama Aggregate Root, untuk domain project diatas UML design adalah seperti berikut.

Cuma didalam domain model repository hanyalah interface bukannya concrete class. Implemantation repository boleh diletak di Infrastructure project atau DataAccess project. Cuma aku masih confuse tentang ApplicationService adakah app service juga mempunyai interface di domain model?

Friday, November 16, 2007

Test 3G Connection di rumah

Aha.. aku saja je nak test connection 3G Celcom nie kat rumah, boleh lah buat kerja unutk browse any information dan send email, sebelum nie kalau ada urgent aku kena tunggu pagi esok kat tempat kerja atau aku kena pergi Cyber Cafe. Alhamdulillah connection 3G kat area rumah aku nie nampak macam ok je. Sebelum nie aku pernah try guna Maxis broadband lagi teruk, nak buka web yang simple mcm google pun tak lepas, jadi aku pulangkan semula package tersebut.

Thursday, November 15, 2007

Agile Methodology

Aku dah lama tak update tentang cerita development, bukan sebab busy tapi tak de idea nak taip pasal apa. Aku insyAllah akan masuk company baru dalam masa 2 minggu, tapi sebelum join telah ada beberapa assigment yang kena aku kena buat untuk company tersebut dan Alhamdulillah 2 assigment besar telah berjaya disiapkan mengikut jadual.Assignment pertama ialah mengenai blue print (guideline) development process yang InsyAllah aku akan guna pakai dan juga assigment kedua ialah documentation berkaitan semua development policy yang perlu diikuti oleh team di sana. Sekarang ini untuk team application dah ada 4 termasuk aku, manakala untuk team multimedia/design dan ada 5 orang. Team application masih memerlukan 3 orang untuk buat beberapa project yang agak besar unutk 1 year punya project.

Aku berharap aku dapat gunakan ilmu-ilmu yang aku dapat semasa dalam team sekarang nie , terutama ilmu yang diturunkan oleh Guru Hamdi dan beberapa pengikut-pengikut agile di sini.

Friday, October 19, 2007

CMS UI prototype

Hari nie..kat department aku baru 3 org start kerje, aku dah tak de cuti , jadi kena lah masuk kerja awal, pagi tadi aku cuba design CMS User Interface prototype

Thursday, October 18, 2007

Happy Birthday Damia Bisyri

18/10/2005 tarikh lahir puteri ku yang sulong Damia Bisyri - makna nama(Kebijakan,Kebaikan,Yang Manis Mesra Dan Menggembirakan), hari nie 18/10/2007 genap umur dia 2 tahun, semoga hidupnya diredhai dan senantiasa dalam jagaan Allah. Dan harapan ku agar Damia Bisyri murah rezeki dan bahagia di dunia dan di akhirat Amin.

Thursday, October 11, 2007

Katakan

Selamat Hari Raya

Kepada semua pembaca blog ini, aku nak ambil kesempatan mengucapkan Selama AidilFitri Maaf Zahir & Batin. Aku start cuti esok dan masuk semula bekerja hari khamis minggu hadapan.

Friday, October 05, 2007

Berbuka Puasa dan Surat Perletakan Jawatan

Semalam aku, isteri dan anak-anak berbuka puasa di Istana Budaya bersama geng-geng office aku. Program nie untuk seorang rakan yang akan berhijrah ke company lain selepas raya. Puas hati juga lah dengan makanan yang disediakan tidaklah bnyk sangat tapi cukup berbaloi dengan kadar bayaran yang dikenakan, berbeza dengan hotel yang ada letak harga lebih dari RM 50. Memanglah dia orang letak makanan banyak sampai nak pilih makan yang maner satu pun tak tahu, pada masa tu semua makanan hendak rasa, tapi aku rasa mesti bila dah berbuka bnyk yang tak habis terbuang je makanan tu:)

03/10/2007 tarikh aku hantar surat perletakan jawatan, dah lebih setahun aku berkerja dicompany P sebagai team lead .Net, seronok dengan perangai geng-geng yang lain, walau dalam team yang berbeza tapi dibawah satu department Emerging Technlogy (Nie bukan nama company). Aku akan join company M 4/12/2007 sebagai Solution Architect dan insyAllah segala tunjuk ajar rakan-rakan disini seperti bro Hafiz(Java Guru), bro Fadhlan (Hibernate & Webwork guru), bro Faisal(Jasper Report), bro Hamdi (3 bulan yang lepas berhijrah ke WPI - Agile & Java Guru), bro Rushdan (Mobile/Scanner Guru), bro Yusnizam (System Analyst), Kak Kartinah (manager aku :) dan Zehan (System Analyst) dan ader lagi sorang walau pun bukan dalm team aku tapi ada project yang dia terlibat secara dengan team aku bro Ikhwan (aka 1kHz).

Aku masih ada lagi project kat sini yang perlu completekan sebelum pergi ke company M, at least aku nak keluarkan 2 release CMS project nie.

Ada lagi satu aku nak share senarai buku-buku yang aku baca, ada yang habis dan ada yang tak habis dibaca lagi walaupun ader buku tersebut dah lebih setahun aku beli :)
Ada lagi beberapa buku yang aku pun dah tak ingat dalam rak kat rumah aku. Emm...















Thursday, October 04, 2007

Pengalaman menginterview software developer

Aku tidak ada banyak pengalaman dalam menginterview software developer, so kira aku barulah juga menceburi (disuruh) untuk menilai calon-calon software developer. Setakat ini ada 6 orang yang telah aku interview, sebelum nie aku yang selalu kena interview. Cuma bila candidate nie masuk dalam bilik interview, aku tak sampai hati nak tanya soalan-soalan yang maut :) walupun gaji yang diorang minta tu tinggi, sebab bagi aku sessi interview hanyalah sekadar untuk menilai tahap keyakinan seseorang bukan hendak menilai sangat tahap skill, jika hendak menilai tahap skill aku prefer sediakan kertas soalan dan diorang jawab. Ada beberapa peristiwa yang agak kelakar, ada satu soalan diajukan pada seorang calon tentang keupayaan beliau untuk long hour working, dgn yakin dia jawab dia tiada masalah cuma selepas pukul 8 malam dia mesti kena stop tak boleh teruskan hahaha, dia kena balik tidur... kita org pun gelak, salah sorang yang interview tu cakap..ya kita bukan tak bagi you tidur. Ada juga yang sengaja diprovoke soalan jika gaji yang diberi sama, tapi peluang ditempat baru dari segi experiance technology lebih so bagaimana berminat? Calon tersebut dari muka berseri, tiba-tiba senyap je.. kita org tgk pun nak tergelak, tahan je dalam hati.

Ok lah criteria yang aku prefer untuk work dalam team aku tak semestinya excellent programmer, tapi aku suka ikut style XP dimana , average programmer yang active communicate dalam team lebih berjaya dari excellent programmer tapi hanya duduk dalam pulau yang tersendiri.

Monday, October 01, 2007

Problem semasa test domain menggunakan Nhibernate

Masalah yang dihadapi ini tidak terlalu besar cuma agak melambatkan development process. Seperti biasa aku akan ada 3 jenis test didalam unit test project iaitu Integration Test antara layer dari presenter<->services<->domain<->persistence dan dalam test ini penggunaan libarary mock object seperti Rhino Mock,NMock adalah mesti.

Manakala test yang paling penting ialah test domain, dimana untuk setiap method dalam domain perlulah ditest sekurang-kurangnya sekali, dan untuk mendapatkan coverage code yang dah ditest dan code yang tak disentuh lagi boleh guna NCover dan NCoverExplorer.

Masalah aku ialah bila aku buat domain test aku dah define properties name yang aku nak guna dalam test, tapi bila aku generate domain untuk persistence, ActiveWriter akan generate properties untuk aku. So nak combine apa yang dah dibuat dgn apa yang digenerate agak leceh, walaupun aku boleh guna cara partial class tapi tak best sgt.

Al-Madinah SCORM Project
Minggu lepas balik kampung dengan family semua gerak pkl 11.00 malam dari shah alam sampai melaka pkl 3 pagi.. argh aku berhenti tidur kat R&R 2 kali, sekarang nie aku cepat mengantuk bila bawa kereta kat high way... samer gak kes balik dari melaka ke shah alam malam tadi.. tapi Alhamdulillah aku berhenti rehat 1 kali je kat Hentian Senawang. Aku agak busy walaupun balik kampung, aku kena tengok SCORM LMS , macam maner fungsi SCORM , apa dia SCORM etc.. Alhamdulillah malam minggu lepas aku tidur lepas sahur. cuba buat satu test code unutk membolehkan courseware talk dengan LMS menggunakan SCORM API. Berjaya memahami API SCORM dalam 20% :) okalah tu ekk..

Aku juga kena buat comparison antara 2 open source project dokeos dan claroline.NET, nak kena submit malam nie.

Friday, September 28, 2007

16 Ramadhan 1428 Hijrah

Alhamdulillah dah 16 hari kita berada dalam bulan Ramadhan yang penuh dengan keberkatan. Hari ini di Masjid Negara ada perhimpunan membantah sistem kehakiman negara yang sedang menuju kehancuran. Negaraku semakin kalut dengan pelbagai jenayah yang sedang berlaku ianya amat merisaukan. Tak tahulah aku apa pemimpin hari ini buat, ok lah cukup dengan sedikit cerita pasal kesakitan hati aku melihat sistem yang dijalankan oleh pemimpin hari ini.

Hari ini kesakitan hati aku terubat sikit kerana berjaya memasukan NHibernate.Linq kedalam project aku, emm seronok apabila dapat query menggunakan ORM NHibernate berserta LINQ query statement. bdiaz developer yang menghack untuk integrate NHibernate & LINQ , ada beberapa contoh dlm site tersebut boleh dijadikan tutorial untuk memahami dengan lebih mendalam.

Jadi dengan beberapa tool yang digunakan sekrang aku harap development time untuk aku semakin pendek dan cepat.

Update
Salah seorang member dalam yahoo group message aku, hendak cari MS SQL DBA yang tahu buat database replication sebagai part time DBA, aku bukan expert dengan DB so tak dapat membantu, kena cari rakan-rakan lain.. siapa budak geng kat tmnet yang boleh buat ek..emmm.. kena cari maklumat nie..

Ada sesorang forward kedalam email aku menarik petikan ini


Di dalam hidup manusia, yang penting ialah BERKAT.
Bila hidup kita berkat, diri ini akan selamat.
Apabila diri selamat, rumahtangga jadi sepakat.
Apabila rumahtangga jadi sepakat, masyarakat jadi muafakat.
Apabila masyarakat jadi muafakat,

negara kita menjadi kuat.



Apabila negara menjadi kuat,

negara luar jadi hormat. Apabila negara luar

jadi hormat, permusuhan pun tersekat.

Apabila permusuhan tersekat,
pembangunan pun meningkat. Apabila pembangunan pun meningkat,
kemajuan menjadi pesat.



TETAPI AWAS, apabila pembangunan meningkat, kemajuan menjadi pesat,
kita lihat bangunan naik bertingkat-tingkat.

Ditengah-tengah itu, tempat maksiat tumbuh macam kulat. Apabila
tempat-tempat maksiat tumbuh macam kulat, KETIKA ITU manusia mula
mengubah tabiat. Apabila manusia telah mengubah tabiat,
ada yang jadi lalat ada yang jadi ulat.
Apabila manusia dah jadi ulat, sembahyang makin hari makin liat.
Apabila sembahyang jadi liat, orang baik ada yang bertukar jadi jahat.


Apabila orang baik bertukar jahat,

orang miskin pula nak kaya cepat.
Apabila orang miskin nak kaya cepat,

orang tua pula nak mati lambat.


Apabila orang tua nak mati lambat,

tak dapat minum madu telan jerla
minyak gamat.

Yang lelaki, budak budak muda pakai

seluar ketat. Semua nak tunjuk kuat.
Bila berjudi, percaya unsur kurafat.
Tapi hidup pula yang melarat.
Tali kasut dah tak berikat.
Rambut pun jarang sikat.

Yang perempuan, pakai mini sekerat.
Suka pakai baju ketat.
Suka sangat menunjukkan pusat.
Hingga tak pedulikan lagi batasan aurat.
Pakai pulak yang singkat-singkat.
Kadang-kadang ternampak benda 'bulat'.

Bila jadi macam ini, siapa lihat pasti tercegat.
Silap gaya jadi gawat, bohsia bohjan lagi hebat.
Duduk jauh berkirim surat .
Bila berjumpa, tangan berjabat.
Kemudian pakat lawan peluk siapa erat.
Masa tu, nafas naik sampai tersekat-sekat.
Usah peduli agama dan adat.
Usah takut Allah dan malaikat.
Yang penting apa kita nak buat?
Kita 'bukti' lah kita buat.
Akhirnya perut kempis dah jadi bulat.
Apabila perut kempis dah jadi bulat,

maka lahirlah
pula anak-anak yang tak cukup sifat.
Bila anak-anak tak cukup sifat, jam tu kita tengok bayi dibuang di
merata tempat.
MAKNANYA KETIKA ITU, IBLIS MULA MELOMPAT.
Dia kata apa? Habis manusia dah masuk jerat.
Habis manusia telah tersesat.
Inilah dia fenomena masyarakat.
Oleh itu wahai saudaraku dan para sahabat,
Marilah kita pakat mengingat,
Bahawa dunia hari ini makin singkat,
Esok atau lusa mungkin kiamat,
Sampai masa kita semua akan berangkat! .
Berangkat menuju ke negeri akhirat.

Di sana kita akan ditanya apa yang kita buat.
Masa tu, sindri mau ingat.

Umur mu banyak mana mu buat ibadat...?
Zaman muda mu, apa yang telah mu buat...?
Harta benda anta, dari mana anta dapat...?
Ilmu anta, adakah anta manafaat...?

Semoga ianya dapat mengingatkan kita supaya segera
meninggalkan maksiat dan memperbanyakkan ibadat.

(Petikan ucapan Ustaz Hj. Akil Hayy Rawa.
Sebarkanlah ini kepada ahli keluarga, saudara-mara, rakan-rakan dan
sahabat handai kita agar masyarakat
kita akan menjadi sebuah masyarakat yang bukan sahaja maju dari segi
duniawi malah ukhrawi. Insya-Allah...Allahhuakbar! Allahhuakbar!
Allahhuakbar!)



Thursday, September 27, 2007

Update

A'salam , aku dah lama tak dapat hendak mengupdate sebarang tulisan disini, aku akan join another company bulan 12 nie sebagai Solution Architect. Last week aku attend 2 kali sessi menginterview candidate yang insyAllah kalau dipilih akan join team aku.

Di sini masih ada lagi project ongoing yang perlu diselesaikan seperti Customer Management System.

Ada tools baru yang aku jumpa yang aku rase dpt memendekkan lagi process soft dev aku, aku dah rase menjadi semakin malas nak buat code heheh, adakah aku perlu beralih ke ruby?? emm munkin juga.. hahaha :)


Tools:
ActiveWriter

Thursday, September 13, 2007

Ramadhan

Selamat menyambut Ramadhan Al-Mubarak kepada semua yang singgah kedalam web ini :) Semoga ibadah puasa tahun ini lebih baik dari tahun-tahun sebelumnya.

Tuesday, September 04, 2007

Domain Model - Tips

Semalam aku ada update tentang bagaimana menganalisa domain dari property/attribute kepada menjadi konsep object dan akhirnya bila menbuat sekali lagi interaction object tersebut di design menjadi interface untk support pelbagai jenis kelakuan (method)

Tips
1. Mana-mana property dalam object bukannya terdiri dari simple text, ia sepatutnya dikeluarkan menjadi object yang lain dan bina hubungan antara object tersebut.

2. Hubungan antara object boleh menjadi konseptual object jika hubungan tersebut adalah kompleks

Sebagai contoh satu scenario dimana kita hendak bina sistem perkiraan harga kereta yang dijual oleh penjualkereta(salesman). Kita boleh je design seperti berikut:



Ok sekarang kita kaji hubungan salesman dan kereta, hubungan antara kedua-dua object ini dihubungankan dengan kaitan 'sale' iaitu salesman menjual kereta. Hubungan tersebut sebenarnya bukan hubungan yang simple dalam ertikata yang lain banyak perkara boleh didapati dalam hubungan tersebut. Maka hubungan 'sale' tadi boleh dijadikan konseptual object Sale

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

Tuesday, August 28, 2007

DDD and TDD document guideline

Semalam ada satu soalan ditanya kepada aku oleh seseorang, aku bercerita pasal agile methodology.. aku bercerita tentang Test Driven Design tapi dia tanya kat aku..ada any documentation guideline yang aku gunakan dalam team aku?.. argh.. sememangnya aku tak de solid documentation bagaimana nak buat nak buat DDD dan TDD, kebanyakkan cara aku..ialah mentor, ertinya aku involve dengan developer, aku terlibat dalam design..aku bercerita,ini dia base code,ini dia layer yang terlibat follow cara mcm ini.

Tapi soalan tu membuat aku berfikir yang aku perlukan juga basic documentation menerangkan methodology yang digunakan. emmmm ya masa untuk buat initial draft :)

Update
Jumpa link menarik semasa browse dlm group DomainDrivenDesign
Improving Applications Design with a Rich Domain Model

Friday, August 24, 2007

technical cms meeting

2 hari penuh kena masuk technical meeting dengan group PP/NCR/AP , discussion kali ini ialah untuk integrate CMS dengan project PP, kenkadang kita pandang tinggi pada consultant-consultant yang datang, ialah yang join tu rambut dan kulit putih , speaking pun memang ambil masa agak le nak faham hehehehe tapi ialah bila dah 2 hari discuss so kita tahu le tahap technical knowledge dia orang hahaha.. simple UML sequence diagram pun salah macam maner nak nie.. arghh bila dah join meeting banyak le kerja lain tertangguh, aku rindu dengan code , aku rindu dengan unit test... dan aku rindu dengan wife dan anak-anak aku..

Group kami masih macam biasa happy dengan enviroment kerja sekarang, aku rasa team yang ada sekarang nie team yang paling seronok aku bekerja, mereka -mereka ini semua mempunyai kepakaran masing-masing, ada seorang tu memang expert dalam java, bagus dalam algorithm senior daripada aku dan seorang lagi dari group java juga very active mencuba perkara baru dalam java dan kini mengikut jejak langkah ex bos aku menulis code generator dan seorang lagi sabar dalam meniti langkah yang mecabar dalam dunia soft dev.. aku doakan dia menjadi seperti senior beliau manakala group .net dibawah team aku nie pun bagus juga, cepat tangkap apa yang diajar dan kalau tak faham rajin bertanya. Team SA rajin dan cekap mengesan bugs :)

Aku masih belum buat keputusan untuk join company yang lagi satu walaupun offer letter dan dibagi..ada kat rumah simpan..ada masa lagi 10 hari untuk aku fikirkan, aku dah melalui 2 kali disscussion.. last discussion dengan panel advisor unutk company tersebut, nice person dan pertanyaan straight to the point dan jawapan yang dia hendak dari aku pun jawapan yang padat..tak nak pusing-pusing hehehe ..

ada beberapa orang rakan yang aku tahu kemampuan dia orang untuk buat kerja, aku rekomenkan, nak cakap aku bagi syarat kat company tu untuk aku join..tak juga tapi aku just kata kalau dapat this team join sekali sekali di bawah group aku..lagi ok.. i know they can perform, company nie ada kena mengena dengan kuwait & arab saudi.

knowledge aku dalam beberapa technology masih kurang , masa nak mendalami pun dah semakin tidak mencukupi, aku plan nak beli buku hujung minggu nie..buku tentang unit test pattern dan linq.

Monday, August 20, 2007

Start project Baru - Customer Management System CMS

Sudah lebih kurang seminggu saya mula dengan project baru, so setiap ptg selama 3 jam unutk jangkamasa 2 bulan saya akan duduk dengan domain expert dan bersoal jawab tentang CMS Domain. Saya akan lukis domain diagram, buat sequence diagram dan ajukan soalan macam-macam sperti process flow, business logic, interface dan real operation implemantation yang dia orang harapkan nanti.

Project ini agak mencabar kerana domain yang dihasilkan setakat seminggu lebih saya join session tersebut sudah agak complex kerana terlibat dengan pelbagai calculation berkaitan mail process dan logistic. Dan saya berharap saya dapat hasilkan domain ynag flexible dan skrg ini saya dah start buat test pada beberpaa use case awal untuk prototype.

Hari nie tak sihat rase macam nak demam.

Saya dapat offer kerja di sebuah international company dan package yang diberi sgt menarik.. tapi disini saya tgh handle project yang juga menarik.. experiance yang sara rasa jarang saya akan dpt dlm domain mail & logistic ini.. masih lagi berfikir..

Tuesday, August 14, 2007

IIS compression untuk ASP.Net

Untuk project Pickup Scheduling System , saya banyak menggunakan ASP.Net ATLAS Ajax, masalah utama dengan Ajax ialah untuk first loading java script file yang dihasilkan agak besar, selalunya lebih dari 100KB dan dari segi performance ianya agak slow. Masalah ini saya hadapi apabila saya mula redesign semula PSS dari asp.net biasa kepada Ajax dan tujuan utama redesign semua ini ialah kerana ASP.net biasa juga jika tidak handle viewstate dengan betul boleh mengakibatkan page file yang dihasilkan juga besar. So selepas mencuba beberapa alternatif saya buat keputusan untuk menggunakan ATLAS Ajax. Dan apabile telah mengguakan beberapa Ajax Extender seperti Modal Extender dan Dynamic Populate saya persaan script size increase sehingga 200K per page, walaupun script ini hanya diload sekali dan booeh dicache tetapi say masih tidak berpuas hati kerana first load adalah amat penting untuk mendapat first impression yang baik dari pengguna.

Saya google dan mendapat beberapa cara hendak selesaikan masalah ini, iaitu dengan menggunakan IIS compression, selain dari itu anda juga boleh menggunakan HTTP Module compression. Saya nmeilih menggunakan IIS Compression kerana pada pendapat saya ianya lebih mudah untuk di configure.

Saya terjumpa satu artikel berkaitan IIS Compression di IIS Compression in IIS6.0 , tapi setelah mencuba masih lagi tidak berhasil untuk compress page asp.net.

Setelah menggunkan cara edit script tidak berhasil saya terjumpa satu tool untuk edit metabase.xml dlm ISS. Tool tersebut boleh didownload di
Internet Information Services (IIS) 6.0 Resource Kit Tools



Step seperti berikut
- Enable Compression in IIS - Click Properti pada WebSite Node dalam IIS dan pilih tab Service, Check dalam checkbox Compress application files dan Compress static files.

- Seperti gambar yang diberi edit HcScriptFileExtensions pada gzip dan deflate dan letakkan aspx,axd,asmx,cc,js , dan edit juga HcDynamicCompressionLevel kepada 9.

Anda boleh lihat hasil menggunakan FireBug dalam browser FireFox.

Monday, August 13, 2007

Pickup Scheduling System Live today!!!

2 minggu sebelum ini saya agak busy dengan bug patch dan dateline untuk live Pickup Scheduling System, agak banyak pengalaman semasa dalam prosess untuk pindah ke production server.Tidak semua process jika berjalan di testing server akan berjalan lancar di production server. Checklist semasa hendak deploy ke production server adalah penting, sebarang langkah yang dibuat seperti server configuration , connection string dalam web config hendaklah dicatitkan dan semak semula list tersebut semasa hendak di deploy.

Saya fikir release awal small module selepas melalaui test di testing server bagus unutk mendapat signal awal problem yang berlaku di production server, jika anda mempunyai acces ke production server. Pengalaman apabila semua module complete di test di test server dan apabila hendak deploy di production tidak menjadi seprti yang diharapkan mengajar saya untuk cepat release application dan test juga di production server.

Wednesday, August 01, 2007

Abstract Domain Part 001

Kemahiran dalam merekabentuk domain yang mantap memerlukan usaha melakukan sendiri latihan dengan memodelkan problem tersebut. Cara sama seperti mana belajar matematik, iaitu kita kena rajin buat latihan dan mempunyai daya analisa yang tinggi, daya analisa yang tinggi datang InsyAllah jika anda sudah biasa dengan latihan-latihan memodelkan domain. InsyAllah semasa memodelkan domain anda akan nampak pattern-pattern analisa yang sama dengan masalah sebelumnya.

Dalam siri ini, insyAllah saya akan hasilkan beberapa abstract domain model . Abstract ertinya domain yang masih lagi bersifat "high level".

Domain Module Access Management:
Minggu lepas terdapat perbincangan antara saya dan rakan-rakan dan mereka minta analisa saya berkaitan bagaimana nak control user yang mempunyai roles supaya ada pelbagai access right terhadap module page yang dibina.

Sebagai contoh User A mempunyai 2 roles iaitu CustomerServices dan juga sebagai SeniorCourier. Untuk roles CustomerServices terdapat pelbagai access right boleh diberi kepada roles tersebut seperti FullAccess untuk Module A dan ReadOnly untuk Module B.

Contoh abstract domain seperti dibawah