Monday, January 18, 2010

Model Pengembangan Sistem

  1. Waterfall Development Model

Model ini adalah model klasik yang bersifat sistematis, berurutan dalam membangun software. Berikut ini ada dua gambaran dari waterfall model. Sekalipun keduanya menggunakan nama-nama fase yang berbeda, namun sama dalam intinya.

Fase-fase dalam Waterfall Model menurut referensi Pressman:






Fase-fase dalam Waterfall Model menurut referensi Sommerville :







a. Requirements analysis and definition

Mengumpulkan kebutuhan secara lengkap kemudian kemudian dianalisis dan didefinisikan kebutuhan yang harus dipenuhi oleh program yang akan dibangun. Fase ini harus dikerjakan secara lengkap untuk bisa menghasilkan desain yang lengkap.

b. System and software design

Desain dikerjakan setelah kebutuhan selesai dikumpulkan secara lengkap.
c. Implementation and unit testing
Desain program diterjemahkan ke dalam kode-kode dengan menggunakan bahasa pemrograman yang sudah ditentukan. Program yang dibangun langsung diuji baik secara unit.

d.Integration and system testing

Penyatuan unit-unit program kemudian diuji secara keseluruhan (system testing).

e.Operation and maintenance

Mengoperasikan program dilingkungannya dan melakukan pemeliharaan, seperti penyesuaian atau perubahan karena adaptasi dengan situasi sebenarnya.


Kekurangan yang utama dari model ini adalah kesulitan dalam mengakomodasi perubahan setelah proses dijalani. Fase sebelumnya harus lengkap dan selesai sebelum mengerjakan fase berikutnya.

Masalah dengan waterfall :

- Perubahan sulit dilakukan karena sifatnya yang kaku.

- Karena sifat kakunya, model ini cocok ketika kebutuhan dikumpulkan secara lengkap sehingga perubahan bisa ditekan sekecil mungkin. Tapi pada kenyataannya jarang sekali konsumen/pengguna yang bisa memberikan kebutuhan secara lengkap, perubahan kebutuhan adalah sesuatu yang wajar terjadi.

- Waterfall pada umumnya digunakan untuk rekayasa sistem yang besar dimana proyek dikerjakan di beberapa tempat berbeda, dan dibagi menjadi beberapa bagian sub-proyek.


  1. Spiral Development Model








Proses digambarkan sebagai spiral. Setiap loop mewakili satu fase dari software process. Loop paling dalam berfokus pada kelayakan dari sistem, loop selanjutnya tentang definisi dari kebutuhan, loop berikutnya berkaitan dengan desain sistem dan seterusnya. Setiap Loop dibagi menjadi beberapa sektor :


  1. Objective settings (menentukan tujuan)

Menentukan tujuan dari fase yang ditentukan. Batasan-batasan pada proses dan produk sudah diketahui. Perencanaan sudah disiapkan. Resiko dari proyek sudah diketahui. Alternatif strategi sudah disiapkan berdasarkan resiko-resiko yang diketahui, dan sudah direncanakan.


  1. Risk assessment and reduction (Penanganan dan pengurangan resiko)

Setiap resiko dianalisis secara detil pada sektor ini. Langkahlangkah penanganan dilakukan, misalnya membuat prototype untuk mengetahui ketidakcocokan kebutuhan.


  1. Development and Validation (Pembangunan dan pengujian):

Setelah evaluasi resiko, maka model pengembangan sistem dipilih. Misalnya jika resiko user interface dominan, maka membuat prototype User Interface. Jika bagian keamanan yang bermasalah, maka menggunakan model formal dengan perhitungan matematis, dan jika masalahnya adalah integrasi sistem model waterfall lebih cocok.


  1. Planning

Proyek dievaluasi atau ditinjau-ulang dan diputuskan untuk terus ke fase loop selanjutnya atau tidak. Jika melanjutkan ke fase berikutnya rencana untuk loop selanjutnya.


Pembagian sektor tidak bisa saja dikembangkan seperti pada pembagian sektor berikut pada model variasi spiral di bawah ini:









  1. Customer communication

Membangun komunikasi yang baik dengan pengguna/customer.

  1. Planning

Mendefinisikan sesumber, batas waktu, informasi-informasi lain seputar proyek

  1. Risk analysis

Identifikasi resiko managemen dan teknis

  1. Engineering

Pembangunan contoh-contoh aplikasi, misalnya prototype

  1. Construction and release

Pembangunan, test, install dan support.

  1. Customer evaluation

Mendapatkan feedback dari pengguna beradasarkan evaluasi PL pada fase engineering dan fase instalasi.


Pada model spiral, resiko sangat dipertimbangkan. Resiko adalah sesuatu yang mungkin mengakibatkan kesalahan. Model spiral merupakan pendekatan yang realistik untuk PL berskala besar. Pengguna dan pembangun bisa memahami dengan baik software yang dibangun karena setiap kemajuan yang dicapai selama proses dapat diamati dengan baik. Namun demikian, waktu yang cukup panjang mungkin bukan pilihan bagi pengguna, karena waktu yang lama sama dengan biaya yang lebih besar.


  1. Incremental Development Model












    1. Kombinasikan element-element dari waterfall dengan sifat iterasi/perulangan.

    2. Element-element dalam waterfall dikerjakan dengan hasil berupa produk dengan spesifikasi tertentu, kemudian proses dimulai dari fase pertama hingga akhir dan menghasilkan produk dengan spesifikasi yang lebih lengkap dari yang sebelumnya. Demikian seterusnya hingga semua spesifikasi memenuhi kebutuhan yang ditetapkan oleh pengguna.

    3. Produk hasil increment pertama biasanya produk inti (core product), yaitu produk yang memenuhi kebutuhan dasar. Produk tersebut digunakan oleh pengguna atau menjalani review/pengecekan detil. Hasil review tersebut menjadi bekal untuk pembangunan pada increment berikutnya. Hal ini terus dikerjakan sampai produk yang komplit dihasilkan.

    4. Model ini cocok jika jumlah anggota tim pengembang/pembangun PL tidak cukup.

    5. Mampu mengakomodasi perubahan secara fleksibel.

    6. Produk yang dihasilkan pada increment pertama bukanlah prototype, tapi produk yang sudah bisa berfungsi dengan spesifikasi dasar.


Masalah dengan Incremental model:

    1. cocok untuk proyek berukuran kecil (tidak lebih dari 200.000 baris coding)

    2. mungkin terjadi kesulitan untuk memetakan kebutuhan pengguna ke dalam rencana spesifikasi masing-masing hasil increment



  1. Evolutionary Development Model

  • Pengembangan yang berdasarkan penyidikan

Tujuannya untuk mengaktifkan pengguna dan memperolah model final berasal dari initial spesifikasi awal. Seharusnya diawali dengan kebutuhan yang sudah dimengerti.

  • Throw-away prototyping

Tujuannya adalah untuk memahami kebutuhan sistem. Biasanya diawali dengan pemahaman kebutuhan yang minim.







Permasalahan dalam model pengembangan yang berevolusi:

  1. Kekurangan visibilitas proses

  2. Model sistem biasanya tidak terstruktur

  3. Membutuhkan kemampuan khusus (mis.: bahasa pemrograman untuk rapid prototyping).


Pemakaian model pengembangan yang berevolusi:

  1. Untuk sistem interaktif yang kecil atau menengah

  2. Untuk salah satu bagian dari sistem yang besar (mis. User Interface)

  3. Untuk sistem yang digunakan tidak terlalu lama (short lifetime).




Tuesday, January 5, 2010

Perintah-Perintah Linux

&
Perintah & digunakan untuk menjalan perintah di belakang (background). Contoh :
wget http:/ / id. wikibooks.org &
Perintah & dipakai dibelakang perintah lain untuk menjalankannya di background. Apa itu jalan di background? Jalan dibackground maksudnya adalah kita membiarkan sistem untuk menjalankan perintah sendiri tanpa partisipasi kita dan membebaskan shell / command prompt agar bisa dipergunakan menjalankan perintah yang lain. Silahkan lihat juga perintah bg dan fg.

adduser
Perintah adduser digunakan untuk menambahkan user. Biasanya hanya dilakukan oleh root untuk menambahkan user atau account yang baru. Setelah perintah ini bisa dilanjutkan dengan perintah passwd, yaitu perintah untuk membuat password bagi user tersebut. Contoh :
# adduser Turyanto
# passwd anakkampung
Perhatikan bahwa semua perintah yang membutuhkan akses root, di sini saya tulis dengan dengan menggunakan tanda #, untuk memudahkan Anda membedakannya dengan perintah yang tidak perlu akses root. Jika Anda menjalankan perintah adduser, Anda akan diminta memasukkan password untuk user yang Anda buat. Isikan password untuk user baru tersebut dua kali dengan kata yang sama.

alias
Digunakan untuk memberi nama lain dari sebuah perintah. Alias digunakan untuk memudahkan agar tidak harus mengetikkan perintah yang panjang, tapi cukup aliasnya saja. Misalnya bila Anda ingin perintah ls dapat juga dijalankan dengan mengetikkan perintah dir, maka buatlah aliasnya sbb :
$ alias dir=ls
Kalau Anda suka dengan tampilan berwarna-warni, cobalah bereksperimen dengan perintah berikut :
$ alias dir="ls -ar --color:always"
Untuk melihat perintah-perintah apa saja yang mempunyai nama lain saat itu, cukup ketikkan alias saja (tanpa argumen). Lihat juga perintah unalias.

bg
Untuk memaksa sebuah proses yang dihentikan sementara(suspend) agar berjalan di background. Misalnya Anda sedang menjalankan sebuah perintah di foreground (tanpa diakhiri perintah &) dan suatu saat Anda membutuhkan shell tersebut maka Anda dapat memberhentikan sementara perintah tersebut dengan Ctrl-Z kemudian ketikan perintah bg untuk menjalakannya di background. Dengan cara ini Anda telah membebaskan shell tapi tetap mempertahankan perintah lama berjalan di background. Lihat juga perintah fg.

cat
Menampilkan isi dari sebuah file di layar. Contoh :
$ cat /nama/suatu/file

cd
Change Directory atau untuk berpindah direktori dan saya kira Anda tidak akan menemui kesulitan menggunakan perintah ini karena cara penggunaanya mirip dengan perintah cd di DOS.

chgrp
Perintah ini digunakan untuk merubah kepemilikan kelompok file atau direktori. Misalnya untuk memberi ijin pada kelompok atau grup agar dapat mengakses suatu file. Sintaks penulisannya adalah sbb:
# chgrp

chmod
Digunakan untuk menambah dan mengurangi ijin pemakai untuk mengakses file atau direktori. Anda dapat menggunakan sistem numeric coding atau sistem letter coding. Ada tiga jenis permission / perijinan yang dapat dirubah yaitu:
r untuk read,
w untuk write dan
x untuk execute.
Dengan menggunakan letter coding, Anda dapat merubah permission diatas untuk masing-masing u (user), g (group), o (other) dan a (all) dengan hanya memberi tanda plus (+) untuk menambah ijin dan tanda minus (-) untuk mencabut ijin. Misalnya untuk memberikan ijin baca dan eksekusi file coba1 kepada owner dan group, perintahnya adalah:
$ chmod ug+rx coba1
Untuk mencabut ijin-ijin tersebut :
$ chmod ug-rx coba1
Dengan menggunakan sitem numeric coding, permission untuk user, group dan other ditentukan dengan menggunakan kombinasi angka-angka, 4, 2 dan 1 dimana 4 (read), 2 (write) dan 1 (execute). Misalnya untuk memberikan ijin baca(4), tulis(2) dan eksekusi(1) file coba2 kepada owner, perintahnya adalah :
$ chmod 700 coba2
Contoh lain, untuk memberi ijin baca(4) dan tulis(2) file coba3 kepada user, baca(4) saja kepada group dan other, perintahnya adalah :
$ chmod 644 coba3
Perhatian : Jika Anda hosting di server berbasis Linux, perintah ini sangat penting sekali bagi keamanan data Anda. Saya sarankan semua direktori yang tidak perlu Anda tulis di chmod 100 (jika Apache jalan sebagai current user (Anda)) atau di chmod 501 jika Apache jalan sebagai www-data atau nobody (user lain).

chown
Merubah user ID (owner) sebuah file atau direktori
$ chown

cp
Untuk menyalin file atau copy. Misalnya untuk menyalin file1 menjadi file2 :
$ cp

fg
Mengembalikan suatu proses yang dihentikan sementar (suspend) agar berjalan kembali di foreground. Lihat juga perintah bg diatas.

find
Untuk menemukan dimana letak sebuah file. Perintah ini akan mencari file sesuai dengan kriteria yang Anda tentukan. Sintaksnya adalah perintah itu sendiri diikuti dengan nama direktori awal pencarian, kemudian nama file (bisa menggunakan wildcard, metacharacters) dan terakhir menentukan bagaimana hasil pencarian itu akan ditampilkan. Misalnya akan dicari semua file yang berakhiran .doc di current direktori serta tampilkan hasilnya di layar :
$ find . -name *.doc -print
Contoh hasil :
. /public/docs/account.doc
. /public/docs/balance.doc
. /public/docs/statistik/prospek.doc
./public/docs/statistik/presconf.doc

grep
Global regular expresion parse atau grep adalah perintah untuk mencari file-file yang mengandung teks dengan kriteria yang telah Anda tentukan. Format perintah :
$ grep
Misalnya akan dicari file-file yang mengandung teks marginal di current direktori :
$ grep marginal
diferent.doc: Catatan : perkataan marginal luas dipergunakan di dalam ilmu ekonomi prob.rtf: oleh fungsi hasil marginal dan fungsi biaya marginal jika fungsi prob.rtf: jika biaya marginal dan hasil marginal diketahui maka biaya total.

gzip
Ini adalah software kompresi zip versi GNU, fungsinya untuk mengkompresi sebuah file. Sintaksnya sangat sederhana :
$ gzip
Walaupun demikian Anda bisa memberikan parameter tertentu bila memerlukan kompresi file yang lebih baik, silakan melihat manual page-nya. Lihat juga file tar, unzip dan zip.

halt
Perintah ini hanya bisa dijalankan oleh super user atau Anda harus login sebagai root. Perintah ini untuk memberitahu kernel supaya mematikan sistem atau shutdown.

hostname
Untuk menampilkan host atau domain name sistem dan bisa pula digunakan untuk mengeset nama host sistem. Contoh pemakaian :
[user@localhost mydirectoryname] $ hostname
localhost.localdomain

kill
Perintah ini akan mengirimkan sinyal ke sebuah proses yang kita tentukan. Tujuannya adalah menghentikan proses. Format penulisan :
$ kill
PID adalah nomor proses yang akan di hentikan. Tidak tahu PID proses mana yang mau dibunuh? Cobalah bereksperimen dengan perintah :
ps aux | grep

less
Fungsinya seperti perintah more.

login
Untuk masuk ke sistem dengan memasukkan login ID atau dapat juga digunakan untuk berpindah dari user satu ke user lainnya.

logout
Untuk keluar dari sistem.

ls
Menampilkan isi dari sebuah direktori seperti perintah dir di DOS. Anda dapat menggunakan beberapa option yang disediakan untuk mengatur tampilannya di layar. Bila Anda menjalankan perintah ini tanpa option maka akan ditampilkan seluruh file nonhidden (file tanpa awalan tanda titik) secara alfabet dan secara melebar mengisi kolom layar. Option -la artinya menampilkan seluruh file / all termasuk file hidden (file dengan awalan tanda titik) dengan format panjang.

man
Untuk menampilkan manual page atau teks yang menjelaskan secara detail bagaimana cara penggunaan sebuah perintah. Perintah ini berguna sekali bila sewaktu-waktu Anda lupa atau tidak mengetahui fungsi dan cara menggunakan sebuah perintah.
$ man
Untuk keluar dari halaman manual, tekan tombol "q".


mesg
Perintah ini digunakan oleh user untuk memberikan ijin user lain menampilkan pesan dilayar terminal. Misalnya mesg Anda dalam posisi y maka user lain bisa menampilkan pesan di layar Anda dengan write atau talk.
$ mesg y atau mesg n
Gunakan mesg n bila Anda tidak ingin diganggu dengan tampilan pesan-pesan dari user lain.

mkdir
Membuat direktori baru, sama dengan perintah md di DOS. Contoh :
mkdir kemudian enter
$mkdir mahasiswa

more
Mempaging halaman, seperti halnya less

mount
Perintah ini akan me-mount filesystem ke suatu direktori atau mount-point yang telah ditentukan. Hanya superuser yang bisa menjalankan perintah ini. Untuk melihat filesystem apa saja beserta mount-pointnya saat itu, ketikkan perintah mount. Perintah ini dapat Anda pelajari di bab mengenai filesystem. Lihat juga perintah umount.
$ mount
/dev/hda3 on / type ext2 (rw)
none on /proc type proc (rw)
/dev/hda1 on /dos type vfat (rw)
/dev/hda4 on /usr type ext2 (rw)
none on /dev/pts type devpts (rw,mode=0622)

mv
Untuk memindahkan file dari satu lokasi ke lokasi yang lain. Bila argumen yang kedua berupa sebuah direktori maka mv akan memindahkan file ke direktori tersebut. Bila kedua argumen berupa file maka nama file pertama akan menimpa file kedua. Akan terjadi kesalahan bila Anda memasukkan lebih dari dua argumen kecuali argumen terakhir berupa sebuah direktori.

passwd
Digunakan untuk mengganti password. Anda akan selalu diminta mengisikan password lama dan selanjutnya akan diminta mengisikan password baru sebanyak dua kali. Password sedikitnya terdiri dari enam karakter dan sedikitnya mengandung sebuah karakter.

pwd
Print working directory, atau untuk menampilkan nama direktori dimana Anda saat itu sedang berada.

rm
Untuk menghapus file dan secara default rm tidak menghapus direktori. Gunakan secara hati-hati perintah ini terutama dengan option -r yang secara rekursif dapat mengapus seluruh file.
Sekali lagi : Hati-hati dengan perintah ini!

rmdir
Untuk menghapus direktori kosong.

shutdown
Perintah ini untuk mematikan sistem, seperti perintah halt. Pada beberapa sistem anda bisa menghentikan komputer dengan perintah shutdown -h now dan merestart sistem dengan perintah shutdown -r now atau dengan kombinasi tombol Ctr-Alt-Del.

su
Untuk login sementara sebagai user lain. Bila user ID tidak disertakan maka komputer menganggap Anda ingin login sementara sebagai super user atau root. Bila Anda bukan root dan user lain itu memiliki password maka Anda harus memasukkan passwordnya dengan benar. Tapi bila Anda adalah root maka Anda dapat login sebagai user lain tanpa perlu mengetahui password user tersebut.

tail
Menampilkan 10 baris terakhir dari suatu file. Default baris yang ditampilkan adalah 10 tapi Anda bisa menentukan sendiri berapa baris yang ingin ditampilkan :
$ tail

talk
Untuk mengadakan percakapan melalui terminal. Input dari terminal Anda akan disalin di terminal user lain, begitu sebaliknya.

tar
Menyimpan dan mengekstrak file dari media seperti tape drive atau hard disk. File arsip tersebut sering disebut sebagai file tar. Sintaknya sebagai berikut :
$ tar
Contoh:
$ tar -czvf namaFile.tar.gz /nama/direktori/*
Perintah di atas digunakan untuk memasukkan semua isi direktori, lalu dikompres dengan format tar lalu di zip dengan gzip, sehingga menghasilkan sebuah file bernama namaFile.tar.gz
$ tar -xzvf namaFile.tar.gz
Perintah di atas untuk mengekstrak file namaFile.tar.gz

umount
Adalah kebalikan dari perintah mount, yaitu untuk meng-unmount filesystem dari mount-pointnya. Setelah perintah ini dijalankan direktori yang menjadi mount-point tidak lagi bisa digunakan.
# umount

unalias
Kebalikan dari perintah alias, perintah ini akan membatalkan sebuah alias. Jadi untuk membatalkan alias dir seperti telah dicontohkan diatas, gunakan perintah :
$ unalias dir

unzip
Digunakan untuk mengekstrak atau menguraikan file yang dikompres dengan zip. Sintaknya sederhana dan akan mengekstrak file yang anda tentukan :
$ unzip
Lihat juga perintah-perintah gzip dan unzip.

wall
Mengirimkan pesan dan menampilkannya di terminal tiap user yang sedang login. Perintah ini berguna bagi superuser atau root untuk memberikan peringatan ke seluruh user, misalnya pemberitahuan bahwa server sesaat lagi akan dimatikan.
# wall Dear, everyone..... segera simpan pekerjaan kalian, server akan saya matikan 10 menit lagi.

who
Untuk menampilkan siapa saja yang sedang login. Perintah ini akan menampilkan informasi mengenai login name, jenis terminal, waktu login dan remote hostname untuk setiap user yang saat itu sedang login. Misalnya:
$ who
root ttyp0 May 22 11:44
flory ttyp2 May 22 11:59
pooh ttyp3 May 22 12:08

xhost +
Perintah ini digunakan untuk memberi akses atau menghapus akses (xhost -) host atau user ke sebuah server X.

xset
Perintah ini untuk mengeset beberapa option di X Window seperti bunyi bel, kecepatan mouse, font, parameter screen saver dan sebagainya. Misalnya bunyi bel dan kecepatan mouse dapat Anda set menggunakan perintah ini :
$ xset b
$ xset m

zip
Perintah ini akan membuat dan menambahkan file ke dalam file arsip zip. Lihat juga perintah gzip dan unzip.





Monday, January 4, 2010

Memahami Cara Kerja VB.NET

Untuk memahami pengembangan Visual Basic dalam lingkungan .Net, pertama-tama kita tentu saja harus memahami beberapa komponen dari lingkungan .Net dan bagaimana mereka berinteraksi.

Program Visual Basic .Net dicompile dan berjalan didalam kerangka kerja .Net. Mesin untuk mengeksekusi perintah-perintah yang dibuat oleh visual basic dikenal dengan nama common language runtime (CLR). CLR bertugas untuk meloading dan mengeksekusi perintah (kode) dan juga menangani masalah manajemen memori, keamanan, dan tipe-tipe data.

Pada level teratas dari semua ini adalah bahasa visual basic sendiri, atau bahasa-bahasa lain yang digunakan untuk membuat kode-kode perintah yang nantinya mengacu pada CLR. Kompiler VB mengambil kode-kode yang ditulis oleh programmer dan kemudian membuat intermediate language (IL) . Sebagai contoh, file-file DLL dan EXE mengandung IL yang dimengerti oleh CLR. Setiap kode yang dibuat untuk dijalankan dalam CLR dikenal sebagai managed code, karena kode tersebut berjalan dibawah kontrol dari CLR. Managed code adalah sebuah IL , karena setengahnya merupakan high level language (VB) dan setengahnya lagi adalah bahasa tingkat rendah (assembly / bahasa mesin).

Pada saat run-time, CLR mengkompile IL kedalam bentuk native code pada saat program berjalan dengan menggunakan kompiler Just-In-Time (JIT). Kompiler JIT membuat native code sesuai dengan spesifikasi CPU, jadi kita bisa membuat IL dari VB kemudian mengkompilenya untuk komputer dengan arsitektur yang berbeda. Ini kelihatan seolah-olah pemborosan karena mengkompile kode yang sangat banyak pada saat run time, padahal sebenarnya kompiler JIT tidak mengkonversi semua IL menjadi native code, namun hanya mengkonversi yang dibutuhkan / yang akan gunakan.

Keuntungan dari mengkompile dengan menggunakan JIT adalah ruang kerja dari aplikasi bisa dikurangi, karena penggunaan memori komputer untuk memproses intermediate code jauh lebih kecil. Didalam mengeksekusi aplikasi, hanya kode-kode yang dibutuhkan yang dikompile. Kode yang tidak digunakan, seperti kode untuk memprint jika si pengguna tidak memprint maka tidak akan dikompile oleh JIT, selanjutnya CLR bisa mengoptimasi eksekusi program on the fly pada saat run time. Sebagai contoh, dalam platform Windows, CLR mungkin mencari jalan untuk mengurangi page fault dalam memory manager dengan mengatur kembali kode yang sudah dikompile di memori, dan ini bisa dilakukan semua pada saat run time. Dikatan, ada waktu ketika hasil kompilasi JIT bisa meningkatkan performance komputer. Dalam kasus ini, kita bisa menggunakan native image generation (NGen) untuk mencompile IL di tempat program tersebut berjalan.

Dapat dilihat, bahwa teknologi CLR menggantikan file-file runtime VB dan juga mengeliminir penggunaan dari COM, DCOM, MTS, or COM+. Aplikasi VB sekarang berjalan dalam konteks CLR, jadi tidak dibutuhkan lagi kumpulan dll yang cukup merepotkan, tentu saja VB net masih bisa menggunakan COM components jika nanti dibutuhkan melalui fitur .NET.