Persiapan dalam Pembangunan Perisian

Posted by mkhairul

Bagaimana anda bersiap sedia untuk pergi ke shopping complex dengan awek? Gel letak banyak-banyak (kasi bersinar sikit), minyak wangi satu botol (dari jauh orang dah boleh tau), kasut branded, tali pinggang, check kat cermin supaya kemas, baca bismillah dan kemudian bertolak.

Begitu juga dalam programming, terdapat beberapa langkah persediaan yang perlu dilaksanakan sebelum memulakan aktiviti ini.

Jika hanya anda seorang:

Jika lebih dari seorang:

  • version control
  • issue tracking (jika lebih dari seorang) ataupun mana mana perisian yang dapat senaraikan tugas / isu.
  • wiki
  • coding guideline
  • terdapat beberapa lagi yang tidak akan disentuh disini seperti automated testing, automated build/deployment

Version Control

checkout_editWalaupun anda seorang, version control dapat menyelamatkan anda (dan tentunya disaat yang genting) apabila anda membuat pengubahsuaian pada kod. Contohnya, anda implement suatu feature pada perisian anda yang diminta oleh pelanggan. Kemudiannya mereka tidak mahu pula feature tersebut, adakah anda akan komen kod tu  (risau mereka mahu pula kemudiannya) ? ataupun anda akan hasilkan fail baru dan namakan fail lama sebagai filename.php.old ?

Cara-cara begini telah banyak saya saksikan, selain daripada menyerabutkan mata dan kepala ia juga menganggu keyakinan diri (mungkin), kerana anda takut replace fail yang penting. Dengan menggunakan ‘version control’, anda hanya perlu ‘commit’ (lebih kurang macam save) perubahan yang anda lakukan akan direkod sebagai, contohnya, revision 2. Dan jika user tidak mahu feature tersebut, anda hanya perlu ambil fail pada revision 1 untuk kembalikannya pada yang asal sebelum anda melakukan perubahan. DAN JIKA user nak tambah balik, retrieve aje lah revision 2. Tak perlu pening pening kepala, tapi jangan cakap kat user senang untuk membuat perubahan (supaya boleh caj tinggi sikit – jahatnya, hehe).

Paling penting sekali penggunaan VCS (version control system) ni apabila ramai pengaturcara, sekejap si Ahmad nak edit fileX, dalam masa yang sama si Abu pun nak edit. Haaa, macam mana? Sila rujuk topik ‘merging‘ dalam perisian VCS anda.

Perisian yang saya gunakan untuk version control adalah Subversion (SVN) dan pada bahagian client adalah TortoiseSVN. Jika anda menggunakan windows dan ingin memudahkan proses install dan konfigurasi, gunakan VisualSVN. Saya menggunakan Subversion biasa dan apache untuk mengakses repository.

Terdapat beberapa juga jenis VCS yang berpusat (centralized) dan teragih (distributed). SVN adalah centralized. Git adalah distributed. Maklumat lanjut akan dihuraikan dalam post yang akan datang.

Issue Tracking

Dalam pembangunan perisian, gerenti banyak isu atau tugasan (jangan letak dalam kepala, kepala kita ni bukan harddisk sekejap je boleh lupa), anda perlulah menulisnya samada dalam buku nota, Google Notebook, ataupun pada perisian issue tracking.

Perisian yang saya selalu gunakan adalah Mantis BugTracker, walaupun dia tulis situ ‘BugTracker’, ia boleh digunakan untuk kegunaan umum bukan hanya pada ‘bug’. Tak percaya? Hubungilah saya, saya kan menerangkan dengan lebih lanjut. Aplikasi web ini agak rumit untuk difahami secara menyeluruh, anda perlu menggunakannya untuk mengenalinya dengan lebih cepat.

Dengan menggunakan issue tracking ini juga, anda dapat menjejak isu isu agar ianya tidak hilang ditelan zaman (selalu berlaku pada email), ataupun masuk telinga kanan keluar telinga kiri.

Wiki

600px-Wikipedia-logo.svgAnda tahu apa itu wiki? Tak tahu? Jika anda pernah menggunakan wikipedia, maka anda menggunakan wiki tanpa menyedarinya. Saya menggunakan wikipedia pada awal tahun 2004 (atau mungkinkah lebih awal? saya tak berapa ingat). Pada ketika itu, tidak banyak maklumat didalamnya. Setelah beberapa tahun berlalu, ramai orang mencurahkan maklumat kedalamnya dan sedikit demi sedikit ianya disunting untuk memperbaiki kualitinya. Sehinggalah sekarang, ia menjadi rujukan utama apabila seseorang itu berada didepan komputer yang mempunyai internet.

Saya pernah menceritakan kepentingan wiki didalam blog saya bertajuk, Why an internal wiki is important for a growing development team (or an entire company), (fuh, panjang betul tajuk tu) dimana didalam konteks pembangunan perisian, ia dapat digunakan sebagai developer-level documentation. Kebanyakan tempat tidak mempunyai developer-level documentation, dimana ia selalu disanggah seperti “Ah, tak payah la tu, ko baca je komen dalam kod“, “Kod aku tu jelas, terang dan simple, ko tengok je mesti ko paham”, dan pelbagai lagi.

Antara kepentingan wiki (saya terjemah dari blog saya):

  • Mempermudahkan ahli baru pasukan merujuk maklumat mengenai projek
  • Mengajar bagaimana untuk menyusun maklumat anda dan rakan anda supaya senang difahami (dapat membantu dalam menulis kod yang lebih baik).
  • Menggalakkan dokumentasi, dan juga cara berkomunikasi dalam bentuk bertulis.

Jika persekitaran anda masih tidak mempunyai wiki, disarankan untuk mewujudkannya. Selalunya  jika anda memperkenalkan sesuatu yang baru, tentangan (“resisting change”) pasti akan berlaku, dalam keadaan sebegini, cuba menerangkan lagi kebaikan wiki untuk memupuk semangat (ataupun keinginan) untuk memperbaiki cara kerja kearah yang lebih baik. Jika semua gagal, cuba raih sokongan bos ataupun pihak pengurusan supaya menurunkan arahan supaya pengaturcara digalakkan (ataupun diharuskan) sumbang pada wiki (KUKU BESI! WAAARGGH!).

Saya menggunakan mediawiki untuk perisian wiki.

Coding Guideline

Coding guideline selalunya termasuk didalam wiki. Ianya penting dan tak banyak syarikat yang ada. “Coding ni proses kreatif, mana boleh semua kena ikut macam ni”, taik unta, mahu tak mahu satu pasukan kena setuju dengan suatu garis panduan yang dibincangkan terlebih dahulu. Lepas tu semua kena ikut. Dalam IDE, automatically convert tabs to space, satu tab sama dengan 4 space. Gaya curly brace ( { ), samada 1TBS (One True Bracing Style), Allman(BSD style), Whitesmith ataupun GNU.

Saya lebih menggemari gaya BSD
foreach($somearray as $key => $value)
{

}
Berbincang dan bersetuju dengan satu garis panduan, atau paling malas pun ambil mana mana coding guideline dari Zend ke, Drupal ke, ataupun Mozilla.

Harap tips dan huraian ini dapat membantu anda samada didalam kerjaya ataupun hobi.

Selamat programming!

This entry was posted on Monday, August 24th, 2009 at 1:23 pm and is filed under Tip, programming. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

5 Responses to “Persiapan dalam Pembangunan Perisian”

  1. kamal Says:

    Laman seperti BitBucket dan GitHub menyediakan perkhidmatan revision control, issue tracker dan wiki bersepadu. Dengan hanya caj yang minimum setiap bulan (utk private project), lebih senang daripada menguruskan sistem scm, issue tracker dan wiki sendiri.

    Me – 1TBS ;)

    p/s: Saya tiada sebarang kaitan dengan GitHub atau BitBucket.

  2. mkhairul Says:

    @kamal Sekarang ni makin banyak perkhidmatan seperti yang dikatakan untuk memudahkan proses Software Configuration Management (SCM). Dan ianya banyak memudahkan kerja dan tak memeningkan kepala.

    Memang disyorkan untuk mengguna servis-servis seperti ini.

  3. paan Says:

    salam,semua yang dibincangkan dalam blog ni bertumpu kepada web programming ye ?? macam php and javascript tue ?? xde pengalaman dalam language tue…juz besa ngan c++ ngan java..xtau camne nak implements apa yang dapat kat sini dalam kehidupan programming saya..

    -newbie-

  4. mkhairul Says:

    Untuk post ni, boleh digunakan pada mana mana bahasa pengaturcaraan kerana ianya umum.

    Version Control, Issue Tracking, Wiki, Coding Guideline, semua ni umum dan merupakan antara tiang-tiang penting dalam mengukuhkan lagi pembangunan perisian. Benda-benda ni boleh digunapakai tak kira bahasa pengaturcaraan yang digunakan.

    Walaupun pada masa ni banyak post yang banyak merujuk pada PHP (antara bahasa pengaturcaraan utama yang digunakan oleh saya), pada masa akan datang saya juga akan post tentang python, perl dan mungkin juga C++ / OpenGL (yang berkaitan dalam pembangunan permainan komputer).

  5. cyberfly Says:

    En MK, apa yg saya dapat katakan, saya sangat teruja kerana wujudnya blog ini.

    Hope adakan tutorial design simple photoshop -> xhtml + css.lagi bagus kalau terus ke wordpress themes ;)

Leave a Comment