Kamis, 12 Agustus 2010

image

JIKA DIIBARATKAN manusia, database adalah sahabat yang patuh dan mengerti pada setiap perintah yang diberikan, sayangnya terkadang tidak berlaku sebaliknya, kita tidak patuh dan tidak mengerti pada “perintah” yang diberikan database.

Database kadang dapat “mengomel” dengan berbagai cara, bisa jadi dalam bentuk performance yang menurun, pesan kesala  han, atau bahkan hasil laporan yang tidak sesuai. Semua-nya dapat kita minimalisasi, bahkan sebelum hal itu terjadi.

SQL dan RDBMS

Optimasi dapat dilakukan dengan berbagai cara, dengan memahami tuning performance pada database dan best practice dari berbagai sumber, Anda dapat memiliki fundamental yang kuat dalam mengoptimalkan kinerja database.

Beberapa teknik dan metoda mungkin memerlukan perlakuan khusus yang berbeda, tergantung pada database yang Anda gunakan.

Sebagai contoh, peningkatan kinerja bisa dilakukan dari sisi administrasi database seperti konfi  gurasi file dan peng-updatean  service atau  security pack, yang tentunya masing-masing database memiliki keunikan dan teknik tersendiri.

Lalu, dengan pertimbangan kompatibilitas, adakah optimasi yang dapat dilakukan secara umum?

Terdapat seperangkat metode dan teknik yang umum diterapkan saat Anda bekerja dengan RDBMS (Relational Database Management System), mungkin tidak semuanya dapat Anda implementasikan karena sangat tergantung pada lingkungan aplikasi masing-masing, tetapi setidaknya Anda dapat meng-gunakannya sebagai panduan dan referensi untuk membentuk sistem yang terbaik sesuai dengan kondisi yang dihadapi.

Optimasi melalui perintah SQL juga memegang peranan   yang tidak kalah penting. Inti dari SQL itu sendiri adalah perintah untuk melakukan pengambilan (retrieval), penambahan (insertion), modifikasi (updating), dan penghapusan (deletion) data, disertai dengan fungsi-fungsi pendukung administrasi dan managemen database.

SQL sendiri merupakan sebuah bahasa atau pemrograman standar untuk RDBMS. Walaupun disebut bahasa, mungkin sedikit janggal saat kita menyebut bahasa pemrograman SQL, lebih familiar jika yang terdengar adalah pemrograman C, Visual Basic, Java, Delphi, dan seterusnya.

Bahasa-bahasa yang disebut belakangan termasuk dalam pemrograman imperative, mudahnya adalah bahasa yang berbentuk instruksi-instruksi inti. Sedangkan, SQL termasuk dalam pemrograman declarative, yang lebih berbentuk kalimat atau pernyataan.

Dalam pengembangannya, SQL terbagi-bagi lagi dalam berbagai extension sehingga melahirkan berbagai sebutan seperti SQL/PSM (Persistent Stored Modules) yang merupakan standar ANSI/ISO, T-SQL (Transact-SQL) dari Microsoft dan SyBase, PL/SQL (PL merupakan singkatan dari Procedural Language) yang digunakan oleh Oracle, yang kemudian dikembangkan lagi menjadi PL/pgSQL yang digunakan PostgreSQL.

Cukup membingungkan, bukan? Untungnya konsep dan elemen-elemen dasar dalam SQL seperti  statement, query, expression, ataupun clause tetap berlaku umum pada setiap SQL extension.

Kita cukupkan pembahasan teori sampai di sini, berikut adalah beberapa optimasi sederhana yang dapat Anda lakukan, untuk setidaknya memperbaiki atau mencegah permasalahan, dan meningkatkan performa RDBMS Anda.

Index

Optimasi pertama yang kita bahas adalah permasalahan index, tentu Anda mengetahui bahwa index dapat meningkatkan kecepatan pencarian pada record yang diinginkan. Tetapi, Anda harus cukup selektif dalam memilih field yang perlu di-index, karena tidak semua field memerlukannya.

Ibaratnya membaca buku, proses pencarian atau scan akan membaca dari awal hingga akhir halaman. Pada field yang di-index, pencarian dilakukan secara index scan, atau membaca pada index, tidak langsung pada table yang bersangkutan.

Sementara pencarian yang dilakukan langsung dengan membaca record demi record pada table disebut dengan table scan.

Apakah index scan selalu lebih cepat dibandingkan dengan table scan? Ternyata tidak juga, table scan bisa jadi bekerja lebih cepat saat mengakses record dalam jumlah relatif kecil, ataupun pada saat aplikasi memang memerlukan pembacaan table secara keseluruhan.

Sebaliknya dalam mengakses record yang besar pada field tertentu, index scan dapat mengurangi operasi pembacaan I/O sehingga tidak jarang menghasilkan kinerja yang lebih cepat.

Sebagai patokan, Anda dapat menentukan index pada field yang sering digunakan, misalnya field yang sering diakses oleh klausa WHERE, JOIN, ORDER BY, GROUP BY.

Menentukan Tipe Data

Tipe data merupakan permasalahan yang gampang-gampang susah. Dari sisi daya tampung, tipe data yang terlalu kecil atau sebaliknya terlalu besar bagi suatu field, dapat menimbulkan bom waktu yang menimbulkan masalah seiring dengan pertambahan data yang pesat setiap harinya.

Menentukan tipe data yang tepat memerlukan ketelitian dan analisa yang baik. Sebagai contoh, kita perlu mengetahui kapan kita menggunakan tipe data char atau varchar.

Keduanya menampung karakter, bedanya char menyediakan ukuran penyimpanan yang tetap (fi  xed-length), sedangkan varchar menyediakan ukuran penyimpanan sesuai dengan isi data (variable-length).

Patokan umum adalah menggunakan tipe data char jika fi  eld tersebut diperuntukkan untuk data dengan panjang yang konsisten. Misalnya kode pos, bulan yang terdiri dari dua digit (01 sampai 12), dan seterusnya. Varchar digunakan jika data yang ingin disimpan memiliki panjang yang bervariasi, atau gunakan varchar(max) jika ukurannya melebihi 8000 byte.

Jangan Izinkan Allow Null

Jika memungkinkan, kurangi penggunaan field yang memperbolehkan nilai null. Sebagai gantinya, Anda dapat memberikan nilai default pada field tersebut.

Nilai null kadang rancu dalam intepretasi programer dan dapat mengakibatkan kesalahan logika pemrograman. Selain itu, field null mengonsumsi byte tambahan sehingga menambah beban pada query yang mengaksesnya.

Query yang Mudah Terbaca

Karena SQL merupakan bahasa declarative, maka tidak mengherankan jika Anda membuat query berbentuk kalimat nan panjang walaupun mungkin hanya untuk keperluan menampilkan satu field!

Jangan biarkan query Anda susah dibaca dan dipahami, kecuali Anda memang berniat membuat pusing siapapun yang melihat query Anda. Query panjang yang ditulis dalam 1baris jelas akan menyulitkan modifi  kasi dan pemahaman, akan jauh lebih baik jika Anda menuliskan query dalam format yang mudah dicerna.

Pemilihan huruf besar dan kecil juga dapat mempermudah pembacaan, misalnya dengan konsisten menuliskan keyword SQL dalam huruf kapital, dan tambahkan komentar bilamana diperlukan.

Hindari SELECT *

Select mungkin merupakan keyword yang paling sering digunakan, karena itu optimasi pada perintah  SELECT sangat mungkin dapat memperbaiki kinerja aplikasi secara keseluruhan. \

SELECT * digunakan untuk melakukan query semua field yang terdapat pada sebuah table, tetapi jika Anda hanya ingin memproses field tertentu, maka sebaiknya Anda menuliskan field yang ingin diakses saja, sehingga query Anda menjadi SELECT field1, field2, field3 dan seterusnya (jangan pedulikan kode program yang menjadi lebih panjang!). Hal ini akan mengurangi beban lalu lintas jaringan dan lock pada table, terutama jika table tersebut memiliki banyak field dan berukuran besar.

Batasi ORDER BY

Penggunaan ORDER BY  yang berfungsi untuk mengurutkan data, ternyata memiliki konsekuensi menambah beban query, karena akan menambah satu proses lagi, yaitu proses sort.

Karena itu gunakan ORDER BY hanya jika benar-benar dibutuhkan oleh aplikasi Anda.

Atau jika dimungkinkan, Anda dapat melakukan pengurutan pada sisi client dan tidak pada sisi server. Misalnya dengan menampung data terlebih dahulu pada komponen grid dan melakukan sortir pada grid tersebut sesuai kebutuhan pengguna.

Subquery Atau JOIN

Adakalanya sebuah instruksi dapat dituliskan dalam bentuk subquery atau perintah JOIN, disarankan Anda memprioritaskan penggunaan JOIN karena dalam kasus yang umum akan menghasilkan performa yang lebih cepat.

Walaupun demikian, mengolah query merupakan suatu seni, selalu ada kemungkinan ternyata subquery bekerja lebih cepat dibandingkan JOIN, misalnya dalam kondisi penggunaan

JOIN yang terlalu banyak, ataupun logika query yang belum optimal.

Gunakan WHERE dalam SELECT

“Di mana ada gula di sana ada semut”. Untuk programer database, pepatah itu perlu dimodifi  kasi menjadi “di mana ada SELECT di sana ada WHERE”, untuk mengingatkan pentingnya klausa WHERE sebagai kondisi untuk menyaring record sehingga meminimalkan beban jaringan.

Saat sebuah table dengan jumlah data yang sangat besar diproses, juga terjadi proses lock terhadap table tersebut sehingga menyulitkan pengaksesan table yang bersangkutan oleh pengguna yang lain.

Bahkan jika Anda bermaksud memanggil seluruh record, tetap menggunakan WHERE merupakan kebiasaan yang baik.

Jika Anda telah menggunakan WHERE pada awal query, maka kapanpun Anda ingin menambahkan kondisi tertentu, Anda tinggal menyambung query tersebut dengan klausa AND diikuti kondisi yang diinginkan.

Tapi bagaimana menggunakan WHERE jika benar-benar tidak ada kondisi apapun? Anda dapat menuliskan suatu kondisi yang pasti bernilai true, misalnya SELECT …. WHERE 1=1. Bahkan tools open source phpMyAdmin yang berfungsi untuk mena  ngani database MySQL selalu menyertakan default klausa WHERE 1 pada perintah SELECT, di mana angka 1 pada MySQL berarti nilai true.

Kecepatan Akses Operator

WHERE 1=1 dan WHERE 0 <> 1 sama-sama merupakan kondisi yang menghasilkan nilai true. Tetapi, dalam hal ini lebih baik Anda menggunakan WHERE 1=1 daripada WHERE 0 <> 1. Hal ini dikarenakan operator = diproses lebih cepat dibandingkan dengan operator <>.

Dari sisi kinerja, urutan operator yang diproses paling cepat adalah:

1. =

2. >, >=, <. <=

3. LIKE

4. <>

Tidak dalam setiap kondisi operator dapat disubtitusikan seperti contoh sederhana di atas, tetapi prioritaskanlah penggunaan operator yang tercepat.

Membatasi Jumlah Record

Bayangkan Anda menampilkan isi sebuah table dengan menggunakan SELECT, dan ternyata table tersebut memiliki jutaan record yang sangat tidak diharapkan untuk tampil seluruhnya.

Skenario yang lebih buruk masih dapat terjadi, yaitu query tersebut diakses oleh ratusan pengguna lain dalam waktu bersamaan!

Untuk itu, Anda perlu membatasi jumlah record yang berpotensi mengembalikan record dalam jumlah besar (kecuali memang benar-benar dibutuhkan), pada SQL Server, Anda dapat menggunakan operator TOP di dalam perintah SELECT.

Contohnya SELECT TOP 100 nama…  akan menampilkan 100 record teratas field nama.

Jika menggunakan MySQL, Anda dapat menggunakan LIMIT untuk keperluan yang sama.

Batasi Penggunaan Function

Gunakan fungsi-fungsi yang disediakan SQL seperlunya saja.

Sebagai contoh, jika Anda menemukan query sebagai berikut: SELECT nama FROM tbl_teman WHERE ucase(nama) = ‘ABC’, nampak query tersebut ingin mencari record yang memiliki data berisi “abc”, fungsi ucase digunakan untuk mengubah isi field nama menjadi huruf besar dan dibandingkan dengan konstanta “ABC” untuk meyakinkan bahwa semua data “abc” akan tampil, walaupun dituliskan dengan huruf kecil, besar, ataupun kombinasinya.

Tetapi, cobalah mengganti query tersebut menjadi SELECT nama FROM tbl_teman WHERE nama = ‘ABC’, perhatikan query ini tidak menggunakan  function ucase. Apakah menghasilkan result yang sama dengan query pertama? Jika pengaturan database Anda tidak case-sensitive (dan umumnya secara default memang tidak case-sensitive), maka hasil kedua query tersebut adalah sama. Artinya, dalam kasus ini Anda sebenarnya tidak perlu menggunakan function ucase!

Baca dari Kiri ke Kanan

Query yang Anda tulis akan diproses dari kiri ke kanan, misalkan terdapat query WHERE kondisi1 AND kondisi2 AND kondisi3, maka kondisi1 akan terlebih dahulu dievaluasi, lalu kemudian kondisi2, kondisi3, dan seterusnya. Tentunya dengan asumsi tidak ada kondisi yang diprioritaskan/dikelompokkan dengan menggunakan tanda kurung.

Logika operator AND akan langsung menghasilkan nilai false saat ditemukan salah satu kondisi false, maka letakkan kondisi yang paling mungkin memiliki nilai false pada posisi paling kiri. Hal ini dimaksudkan agar SQL tidak perlu lagi mengevaluasi kondisi berikutnya saat menemukan salah satu kondisi telah bernilai false.

Jika Anda bingung memilih kondisi mana yang layak menempati posisi terkiri karena kemungkinan falsenya sama atau tidak bisa diprediksi, pilih kondisi yang lebih sederhana untuk diproses.

Gambar dalam Database

Database memang tidak hanya diperuntukkan sebagai penyimpanan teks saja, tetapi dapat juga berupa gambar. Kalau pepatah mengatakan sebuah gambar bermakna sejuta kata, tidak berarti kita harus menyediakan tempat penyimpanan seukuran sejuta kata untuk menampung satu gambar! Akan lebih baik bagi kinerja database jika Anda hanya menyimpan  link ataulokasi gambar di dalam database, dibandingkan menyimpan fisik gambar tersebut.

Kecuali jika Anda tidak memiliki pilihan lain, misalnya karena alasan keamanan atau tidak tersedianya tempat penyimpanan lain untuk gambar Anda selain di dalam database.

Tetapi, jelas jika Anda dapat memisahkan gambar secara fisik dari database, maka ukuran dan beban database akan relatif berkurang drastis, proses seperti back-up dan migrasi akan lebih mudah dilakukan.

Pengukuran Kinerja

Terdapat  tools optimizer yang bervariasi untuk tiap RDBMS, Anda dapat menggunakannya sebagai panduan untuk meningkatkan kinerja query, di mana Anda dapat mengetahui berapa lama waktu eksekusi atau operasi apa saja yang dilakukan sebuah query.

Jika Anda menemukan sebuah query tampak tidak optimal, berusahalah menulis ulang query tersebut dengan teknik dan metode yang lebih baik. Semakin banyak query yang dapat dioptimasi, akan semakin baik kinerja aplikasi Anda. Terutama saat frekuensi pemakaian query tersebut relatif tinggi.

Back-up

Buatlah back-up otomatis secara periodik, sebaiknya tes dan simulasikan prosedur restore database dan perhitungkan waktu yang diperlukan untuk membuat sistem pulih kembali jika terjadi sesuatu yang tidak diharapkan pada database.

Lakukan proses back-up pada waktu di mana aktivitas relatif rendah agar tidak mengganggu kegiatan operasional.

Banyak Jalan Menuju Roma

Berikan satu masalah pada beberapa programer, maka Anda mungkin akan mendapatkan beberapa solusi yang berbedabeda. Banyak alternatif yang dapat diciptakan untuk menghasilkan sesuatu, tetapi tentunya kita menginginkan alternatif yang terbaik.

Karena itu, jangan ragu mencoba menuliskan ulang query Anda dengan cara lain jika Anda melihat kemungkinan peningkatan kinerja, contohnya pada potongan query berikut:

WHERE SUBSTRING(nama,1,1) =’b’

Query di atas akan mengambil record dengan kondisi karakter pertama kolom nama adalah “b”, sehingga akan tampil isi record seperti “Budi”, “Badu”, “Benny” dan seterusnya. Cara lain untuk menghasilkan record yang sama adalah sebagai berikut:

WHERE nama LIKE ‘b%’

Hasil yang ditampilkan kedua query tersebut akan sama, tetapi performa yang dihasilkan (terutama untuk record berukuran besar) akan berbeda.  Umumnya kondisi LIKE akan bekerja dengan lebih cepat dibandingkan function SUBSTRING.

Contoh lain yang lebih kompleks adalah seperti query beri-kut:

SELECT NIP, nama FROM tbl_pegawai WHERE dept = ‘IT’ OR kota

= ‘jakarta’ OR divisi = ‘programer’

Perhatikan query di atas memiliki tiga kondisi yang dipisahkan oleh klausa OR. Alternatif lain adalah dengan menuliskan query sebagai berikut:

SELECT NIP, nama FROM tbl_pegawai WHERE dept = ‘IT’

UNION ALL

SELECT NIP, nama FROM tbl_pegawai WHERE kota = ‘jakarta’

UNION ALL

SELECT NIP, nama FROM tbl_pegawai WHERE divisi = ‘programer’

Walaupun penulisan query menjadi lebih panjang, bisa jadi al-ternatif ini akan lebih baik. Mengapa? Dengan asumsi field dept memiliki index, sementara field kota dan divisi tidak diindex, query pertama tidak akan menggunakan index dan melakukan table scan. Berbeda dengan query kedua, index akan tetap dilakukan pada sebagian query sehingga akan menghasilkan kinerja yang relatif lebih baik.

Ah… Beda Tipis Saja!

Pastinya masih banyak terdapat teknik lain yang tidak akan dapat dibahas semuanya dalam artikel ini. Di antara (atau mungkin semua) teknik optimasi yang dibahas di atas, mungkin Anda akan menemukan bahwa setelah diuji dengan data sampel maka kinerja sebelum dan sesudah optimasi ternyata sama sekali tidak signifikan, beda tipis, atau tidak ada bedanya sama sekali!

Memang benar, dengan spesifi  kasi hardware yang semakin meningkat, data yang relatif kecil, dan alur yang sederhana, Anda mungkin tidak akan mendapatkan perbedaan yang signifikan.

Tetapi jika Anda siap untuk terjun menghadapi tantangan menangani aplikasi yang lebih besar, maka perbedaan antara tanpa dan dengan optimasi akan sangat nyata, dengan pema-haman dan kebiasaan  coding yang baik, Anda akan dapat menghasilkan aplikasi yang juga lebih baik.

Tidak ada salahnya menerapkan optimasi yang Anda ketahui sedini mungkin dalam pengembangan sistem aplikasi Anda.

Bahkan jika sebuah aplikasi tnampaknya memiliki kinerja yang cukup baik, tidak berarti lepas dari usaha optimasi lebih lanjut.

Terutama jika Anda mengharapkan aplikasi tersebut mampu berkembang lebih jauh, tidak pernah ada kata sempurna bagi suatu sistem aplikasi, tetapi setiap sistem selalu ada kesempatan menjadi lebih berguna. Salah satunya dengan selalu mencari cara yang lebih baik

Refrensi http://tackulmine.wordpress.com/tag/database/

Alternatif

Download Database Performance Measurement

READ MORE - Teknik Optimalisasi Performa Database

Rabu, 11 Agustus 2010

 

DESKRIPSI

        • Suatu kegiatan pengaturan sumber daya dalam mencapai tujuan dan sasaran dari proyek perangkat lunak, sehingga proyek dapat berjalan sesuai dengan tahapan dan target yang dikehendaki
        • Untuk menghindari dua permasalahan yaitu over-estimates dan under-estimates

Metode-metode untuk mengukur kualitas perangkat lunak

        1. Metode LOC (Lines Of Code)
        2. Metode Function Point
        3. Metode Cocomo
      1. Metode LOC (Lines Of Code)
        • teknik pengukuran besar software dengan cara menghitung baris kode program yang ada
        • Relatif terhadap bahasa/tool pemrograman dan gaya pengkodean programer
        • Tidak bisa ditentukan sebelum proyek pengembangan menyelesaikan tahapan implementasi (pengkodean

image

Contoh perhitungan :

  • Produktivitas = KLOC (Kilo Line of Code)/Orang-Bulan

                            Kualitas = Cacat (Kesalahan)/ KLOC

                           Biaya = Satuan uang ($ atau Rp)/KLOC

                           Dokumentasi = Jumlah halaman dokumentasi/KLOC

         2.   Metode Function Point

        • Disebut sebagai matrik function point.
        • Matrik ini diperoleh dari keterhubungan dasar antara domain informasi software dan kompleksitas software
        • Menuntut untuk dilakukan oleh seorang profesional yang berpengalaman karena memiliki tingkat subyektifitas yang cukup tinggi.
        • Terdiri dari banyak variasi, yang pada pada langkah/tahapan maupun pada isi dari tiap tahapan.
        • Varian-varian ini timbul karena metode ini dapat diubah sesuai dengan kebijakan perusahaan pengembang software.

Tahapan-tahapan menentukan function point

  1. Langkah 1 : Menghitung crude function points (CFP).

         Jumlah dari komponen fungsional sistem pertama kali diidentifikasi dan dilanjutkan dengan mengevaluasi kuantitasi bobot kerumitan dari tiap komponen tersebut. Pembobotan tersebut kemudian dijumlahkan dan menjadi angka CFP.

2. Langkah 2 : Menghitung faktor pengubah kompleksitas relatif/relative complexity adjustment   factor (RCAF) untuk proyek tersebut.

3. Langkah 3 : Menghitung Function Point (FP) dengan rumus :

    FP = CFP x (0.65 + 0.01 x RCAF)

               LANGKAH 1: MENGHITUNG CRUDE FUNCTION POINTS (CFP)

Perhitungan CFP melibatkan 5 tipe komponen sistem software berikut :

1.Jumlah macam aplikasi input

2.Jumlah macam aplikasi output

3.Jumlah macam aplikasi query online (aplikasi ini berhubungan dengan query terhadap data yang tersimpan).

4.Jumlah macam file/tabel logic yang terlibat

5.Jumlah macam interface eksternal (output atau input yang dapat berhubungan dengan komputer lewat komunikasi data, CD, disket, dan lain-lain).

Langkah berikutnya adalah memberikan faktor bobot pada tiap komponen di atas berdasarkan kompleksitasnya.

image

LANGKAH 2 : MENGHITUNG FAKTOR PENGUBAH KOMPLEKSITAS RELATIF/RELATIVE COMPLEXITY ADJUSTMENT FACTOR (RCAF).

      RCAF berfungsi untuk menghitung kesimpulan kompleksitas dari sistem software dari beberapa subyek karakteristik.

     Penilaian berskala 0 sampai 5 diberikan pada tiap subyek yang paling berpengaruh terhadap usaha pengembangan yang dibutuhkan

LANGKAH 3 : MENGHITUNG FUNCTION POINT (FP)

Nilai function point untuk sistem software tersebut kemudian dihitung berdasarkan hasil dari tahap 1 dan 2 yang dimasukkan ke dalam formula:

FP = CFP x (0.65 + 0.01 x RCAF)

             KELEBIHAN METODE FUNCTION PONIT

        1. Perkiraan dapat disiapkan pada tahap pra-proyek dan oleh karena itu maka manajemen dapat didukung dalam usaha persiapan proyek.
        2. Karena metode ini berbasiskan pada dokumen spesifikasi requirement (tidak berdasarkan pada tool pengembangan atau gaya pengkodean programer), kehandalan metode ini relatif tinggi.

             KEKURANGAN METODE FUNCTION POINT

        1. Hasil perhitungan FP tergantung pada manual penggunaan function point yang digunakan.
        2. Terkadang ada beberapa proyek yang tidak memiliki dokumen spesifikasi requirement mendetail pada tahap pra-proyek.
        3. Seluruh proses penghitungan memerlukan profesional yang berpengalaman
        4. Banyaknya evaluasi yang dibutuhkan berdampak pada hasil yang terlalu subyektif
        5. Penghitungan FP dilakukan hanya didasarkan pada sistem pemrosesan data. Padahal aspek-aspek lain dari pengembangan sistem software juga ikut berpengaruh terhadap pengembangan itu sendiri. Oleh karena itu metode FP tidak dapat diterapkan secara universal atau masih membutuhkan dukungan perhitungan faktor lainn untuk memperkuat perkiraan

CONTOH KASUS:

Akan Dibangun Sebuah Sistem Presensi Karyawan Bernama Attend-master Yang Direncanakan Dapat Melayani Bisnis Kelas Kecil Sampai Menengah Dengan Karyawan Sebanyak 10-100 Orang. Sistem Tersebut Direncanakan Akan Memiliki Interface Dengan Paket Software Dari Perusahaan Lain Yaitu Human-master, Yang Melayani Sumber Daya Manusia Dan Wage-master Yang Melayani Penggajian. Attend-master Direncanakan Dapat Menghasilkan Beberapa Laporan Dan Query Online. Dari Dokumentasi Requirement Sistem Software Yang Direncanakan Ini, Didapatkan Data Flow Diagram (DFD) Yang Ditunjukkan

Pada Gambar 1

image

LANGKAH 1 : MENGHITUNG CRUDE FUNCTION POINTS (CFP)

    1. Jumlah aplikasi input = 2
    2. Jumlah aplikasi output = 3
    3. Jumlah query online = 3
    4. Jumlah file logic = 2
    5. Jumlah interface eksternal = 2

image

LANGKAH 2 : MENGHITUNG RELATIVE COMPLEXITY ADJUSTMENT FACTOR (RCAF)

image

LANGKAH 3 : MENGHITUNG FUNCTION POINT (FP)

              FP = CFP x (0.65 + 0.01 x RCAF)

                   = 81 x (0.65 + 0.01 x 41)

                   = 85.86 ( Baik )

http://sisteminfomasi.blogspot.com/

 

Apabila mau lebih lengkap dengan penjelasan tentang pengukuran kualitas software dapat dilihat DISNI

READ MORE - Teknik Pengukuran Kualitas Perangkat Lunak

Senin, 09 Agustus 2010

Cara Mengganti Icon Pada Address Bar

image  

 

    Pada saat kita membuka blog atau website seringkali kita melihat gambar ico yang unik-unik pada addressbar entah itu logo dari perusahaan ataupun gmbar kesukaan mereka. nah sekarang saya akan memberitahukan bagaimana cara mengganti icon sperti yang terlihat diatas :

    1. Login ke blog atau website pribadi anda anda.
    2. Masuk kehalaman edit HTML atau yang di website pribadi anda masuk ke index
    3. Copy paste code <link href='http://a.imageshack.us/img192/9807/echo.gif' rel='SHORTCUT ICON'/> sebelum tanda </head>
    4. Ganti huruf yang bercetak tebal dengan alamat image tempat anda menyimpan gambar
    5. Kemudian Jangan Lupa Disimpan dan Liat perubahannya

NB: Untuk gambarnya ada dapat menyimpan gambar di imageshack.us atau fasilitas yang lain yang anda inginkan

 

READ MORE - Cara Mengganti Icon Pada Address Bar

Virus yang awalnya menyebar dari berbagai situs porno, program bajakan dan konten 'abu-abu' lainnya itu cukup meresahkan. Berikut adalah langkah-langkah membasmi virus itu, seperti dituturkan oleh analis antivirus Vaksincom Adi Saputra: 

1. Menggunakan Dr Web CureIt

Adi menyarankan korban Winsta alias Stuxnet itu untuk mengunduh piranti lunak penghapus virus. Removal Tools bernama Dr.Web CureIt itu bisa diunduh dari situs FreeDrWeb.com

2. Perbaiki Registri

Kemudian, Adi menyarankan perbaikan pada regitri Windows yang sudah dimodifikasi oleh virus. Caranya, pertama-tama, salin script di bawah ini ke file Wordpad.

[Version]
Signature="$Chicago$"
Provider=Vaksincom Oyee
[DefaultInstall]
AddReg=UnhookRegKey
DelReg=del

[UnhookRegKey]
HKCU, Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced, ShowSuperHidden,0x00010001,1
HKCU, Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced, SuperHidden,0x00010001,1
HKCU, Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced, HideFileExt,0x00010001,0
HKLM, SOFTWARE\CLASSES\batfile\shell\open\command,,,"""%1"" %*"
HKLM, SOFTWARE\CLASSES\comfile\shell\open\command,,,"""%1"" %*"
HKLM, SOFTWARE\CLASSES\exefile\shell\open\command,,,"""%1"" %*"
HKLM, SOFTWARE\CLASSES\piffile\shell\open\command,,,"""%1"" %*"
HKLM, SOFTWARE\CLASSES\regfile\shell\open\command,,,"regedit.exe "%1""
HKLM, SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon, Shell,0, "Explorer.exe"

[del]
HKLM, SYSTEM\CurrentControlSet\Services\MRxCls
HKLM, SYSTEM\CurrentControlSet\Services\MRxNet
HKLM, SYSTEM\ControlSet001\Services\MRxCls
HKLM, SYSTEM\ControlSet002\Services\MRxNet
HKLM, SYSTEM\CurrentControlSet\Services\Enum\Root\LEGACY_MRXClS
HKLM, SYSTEM\CurrentControlSet\Services\Enum\Root\LEGACY_MRXNET
HKLM, SYSTEM\ControlSet001\Services\Enum\Root\LEGACY_MRXClS
HKLM, SYSTEM\ControlSet002\Services\Enum\Root\LEGACY_MRXNET

Kemudian, simpan file dengan nama 'repair.inf'. Gunakan pilihan Save as type menjadi Text Document agar tidak terjadi kesalahan. Lalu, klik kanan file 'repair.inf', pilih 'Install' dan restart komputer.

"Bersihkan temporary file, hal ini agar dapat mencegah sisa trojan yang mencoba aktif kembali. Gunakan tools seperti ATF Cleaner atau gunakan fitur Windows yaitu Disk Clean-Up," tulis Adi.

3. Solusi Darurat

Selain itu, berikut adalah script darurat yang bisa digunakan untuk mencegah agar Winsta tidak kembali menginfeksi. Simpan script berikut dengan nama Winsta.bat (tipe file: Text)

@echo off
del /f c:\windows\system32\winsta.exe
rem rd c:\windows\system32\winsta.exe
md c:\windows\system32\winsta.exe
del /f c:\windows\system32\drivers\mrxnet.sys
rem rd c:\windows\system32\drivers\mrxnet.sys
md c:\windows\system32\drivers\mrxnet.sys
del /f c:\windows\system32\drivers\mrxcls.sys
rem rd c:\windows\system32\drivers\mrxcls.sys
md c:\windows\system32\drivers\mrxcls.sys
attrib +r +h +s c:\windows\system32\winsta.exe
attrib +r +h +s c:\windows\system32\drivers\mrxnet.sys
attrib +r +h +s c:\windows\system32\drivers\mrxnet.sys

Setelah selesai, klik ganda file Winsta.bat yang dihasilkan. Untuk pembersihan yang optimal dan mencegah infeksi ulang, scan kembali menggunakan antivirus yang ter-update dan mengenali virus ini dengan baik.
READ MORE - 3 Cara Bersihkan Virus 'Pemakan Hardisk'
Ini saya kutip dari http://romisatriawahono.net/2009/04/13/wajibnya-skill-coding-bagi-mahasiswa-computing Karena stelah saya baca saya jadi bertanya buat diri saya sndiri n sebagi renungan bagi mahasiswa dan instansi-instansi pendidikan , dan mungkin hal yang sama akan terjadi pada teman-teman silahkan langsung saja di baca ^_^
netbeansMas Romi, saya mahasiswa jurusan teknik informatika, semester akhir dengan peminatan software engineering. Karena saya lemah di coding, kira-kira nanti kesulitan ga ya untuk mengerjakan tugas akhir? (Taufik, Universitas Swasta di Jakarta)
Inna lillahi wa inna ilaihi rajiun, segera lakukan taubat dan perbanyak  istighfar :) Jurusan teknik informatika semester akhir, peminatan software engineering pula, ga bisa coding? Selama ini kemana aja om? :(
Lemahnya skill coding mahasiswa di Indonesia adalah penyakit gawat, menular, mematikan dan secepatnya harus diberantas tuntas :) . Mungkinkah ini juga yang membuat produksi software kita secara kuantitas dan kualitas dibawah negara tetangga kita? Ingat bahwa menurut laporan IDC dan Gartner, jumlah developer professional Indonesia mencapai 71.600 orang di tahun 2008. Jumlah developer kita tiga kalinya malaysia dan empat kalinya singapore loh :(
Wahai para mahasiswaku, andai kau tahu, jurusan computing di Indonesia mengambil acuan kurikulum IEEE Computing Curricula 2005. Asosiasi Perguruan Tinggi Informatika dan Komputer alias APTIKOM, yang menjadi wadah universitas yang memiliki jurusan atau prodi computing, membuat kurikulum inti yang mengacu ke IEEE Computing Curricula 2005, meskipun di beberapa sisi tidak konsisten :) Tidak konsisten karena Information System (Sistem Informasi)  dan Computer Engineering (Teknik/Sistem Komputer) saja yang direkomendasikan jadi jurusan atau prodi. Computer Science (Ilmu Komputer), Information Technology (Teknologi Informasi) dan Software Engineering (Rekayasa Perangkat Lunak) disuruh tumplek beg di satu wadah namanya Teknik Informatika :(
Padahal sebenarnya pembobotan materi yang dibidik berbeda-beda. Silakan cek dari gambar di bawah, target kemampuan yang diharapkan dari lulusan masing-masing cabang ilmu computing menurut IEEE Computing Curricula 2005.
ieeecurricula2005.gif
Secara IEEE Computing Curricula 2005, mahasiswa prodi/jurusan/fakultas/ dibawah disiplin ilmu computing, boleh tidak mengerti masalah sistem informasi atau teoritika database (mahasiswa CE misalnya), boleh juga nggak ngerti arsitektur komputer (mahasiswa IS dan IT  misalnya). Tapi seluruh mahasiswa wajib hukumnya, dan ini wajib ain sifatnya :) punya skill coding.
Grafik pembobotan kurikulum menurut IEEE Computing Curricula 2005 adalah seperti di bawah. Sekedar informasi, CE=Computer Engineering (Teknik Komputer), CS=Computer Science (Ilmu Komputer),  IS=Information Systems (Sistem Informasi), IT=Information Technology (Teknologi Informasi), SE=Software Engineering (Rekayasa Perangkat Lunak). Kemampuan coding dan programming masuk di materi Software Methods and Technologies. Lihat bahwa semua cabang ilmu di bawah computing membuat lengkungan di materi itu, meskipun dengan bobot berbeda antara sisi theoritical dan applied. Dan lihatlah di cabang ilmu software engineering, bentuk ovalnya paling manis dan sempurna, khususnya bobot untuk aspek Software Methods and Technologies :)
Ketika ada dosen atau peneliti di kampus yang mengatakan bahwa coding dan programming tidak wajib bagi mahasiswa jurusan computing, itu sebenarnya mencederai dunia kurikulum IT di Indonesia dan dunia hehehe. Mahasiswa computing tanpa skill coding itu bagaikan garam tanpa asinnya :)
ce.jpg
cs.jpg
is.jpg
it.jpg
se.jpg
Wokeh, sebenarnya bagaimana kiat mendesain materi ajar dan mata kuliah supaya tidak ada mahasiswa computing yang terkena penyakit mental tersebut? :)
  • Desain mata kuliah untuk tidak mengajarkan banyak bahasa pemrograman dengan paradigma yang sama. Mengajari mahasiswa dengan banyak bahasa pemrograman, artinya mendidik mereka untuk tidak menguasai satupun bahasa pemrograman.

  • Fokuskan ke satu bahasa pemrograman utama dan gunakan untuk penugasan di setiap mata kuliah. Capai level mahir di satu bahasa programming baru berpindah ke bahasa pemrograman yang lain. Saya dulu di Saitama University sampai semester 4, hanya boleh menggunakan bahasa C untuk semua penugasan mata kuliah. Semester lima baru diajarkan Object-Oriented Programming (OOP). Konsep OOP benar-benar maknyus kita pahami, ketika kita sudah dibuat pusing memanage ribuan baris code pemrograman procedural. Konsep abstraction begitu nyata, teoritika inheritance begitu mempesona, dan hakekat class yang seperti cetakan kue dengan kuenya sendiri adalah object, begitu jelas, tuntas dan sempurna :)

  • Libatkan mahasiswa dalam berbagai project riil untuk melatih dan mendekatkan ilmu yang dipelajari ke dunia industri

  • Bila memungkinkan hindari ujian bergaya multiple choice, arahkan ke develop project atau laporan analisa
  • Bagi mahasiswa yang mengerjakan tugas akhir, khususnya untuk yang software (product) development, wajibkan menggunakan tahapan software development life cycle (specification, design, coding, testing). Latih menyusun business process dan mendesain software dengan menggunakan UML yang relatif sudah standard.
Di sisi mahasiswa, mahasiswa juga harus aktif, jangan malas untuk banyak mencoba dan mencoba. Ingat bahwa tidak akan bisa mengandalkan materi kuliah untuk menjadi mahir di pemrograman. Bila perlu bikin project software kecil-kecilan dan mulai tawarkan lewat internet. Melatih skill coding sekaligus juga jiwa entrepreneurship.
Wahai para mahasiswaku dan para pedjoeangku, ketika cintapun tak akan membunuhmu, jangan pula coding bisa membinasakanmu. Kuasai mereka, jadikanlah energi sehingga kalian mampu membuat software dan produk yang bermanfaat untuk rakyat … itulah jalan cinta para legenda!
Tetap dalam perdjoeangan!
ttd-small.jpg
READ MORE - Wajibnya Skill Coding Bagi Mahasiswa Computing

Minggu, 08 Agustus 2010

Client/Server & WEB Based

Klien-server atau client-server merupakan sebuah paradigma dalam teknologi informasi yang merujuk kepada cara untuk mendistribusikan aplikasi ke dalam dua pihak: pihak klien dan pihak server.
client-server-illustration
Dalam model klien/server, sebuah aplikasi dibagi menjadi dua bagian yang terpisah, tapi masih merupakan sebuah kesatuan yakni komponen klien dan komponen server. Komponen klien juga sering disebut sebagai front-end, sementara komponen server disebut sebagai back-end. Komponen klien dari aplikasi tersebut dijalankan dalam sebuah workstation dan menerima masukan data dari pengguna. Komponen klien tersebut akan menyiapkan data yang dimasukkan oleh pengguna dengan menggunakan teknologi pemrosesan tertentu dan mengirimkannya kepada komponen server yang dijalankan di atas mesin server, umumnya dalam bentuk request terhadap beberapa layanan yang dimiliki oleh server. Komponen server akan menerima request dari klien, dan langsung memprosesnya dan mengembalikan hasil pemrosesan tersebut kepada klien. Klien pun menerima informasi hasil pemrosesan data yang dilakukan server dan menampilkannya kepada pengguna, dengan menggunakan aplikasi yang berinteraksi dengan pengguna.
Sebuah contoh dari aplikasi client/server sederhana adalah aplikasi web yang didesain dengan menggunakan Active Server Pages (ASP) atau PHP. Skrip PHP atau ASP akan dijalankan di dalam web server (Apache atau Internet Information Services), sementara skrip yang berjalan di pihak klien akan dijalankan oleh web browser pada komputer klien. Klien-server merupakan penyelesaian masalah pada software yang menggunakan database sehingga setiap komputer tidak perlu diinstall database, dengan metode klien-server database dapat diinstal pada suatu komputer sebagai server dan aplikasinya diinstal pada client.

PERBEDAAN

     Server merupakan Penyedia layanan, seperti pengertian mentah dari Serve yang artinya melayani..
Server menyediakan segala layanan yang dapat digunakan oleh client, dan biasanya komputer server menggunakan specification yang tidak main main, sebab, server berfungsi sebagai penanggung segala aktivitas client, yang artinya server harus menjadi jembatan client untuk browsing, mencatat log dan traffic client, menggunakan firewall, dsb yang tentu tidak bisa dilakukan bahkan dengan processor pentium 4 biasa.
     Client, seperti namanya, merupakan klien, atau dengan kata lain pengguna layanan yang disediakan server.. Keuntungannya adalah, specification computer tidaklah harus tinggi.. Cukup yang standar, selama mampu melakukan networking dan browsing/gaming pun sudah cukup.

http://id.wikipedia.org/wiki/Klien-server

WEB Based

 

Kalo dulu yang namanya aplikasi musti hanya aplikasi berbasis desktop. Tapi kalo sekarang telah lahir aplikasi jenis baru yang dinamakan aplikasi berbasis web.

Secara sederhana, aplikasi berbasis desktop adalah aplikasi yang harus diinstall dulu di komputer yang akan menjalankam program tsb. Sedangkan aplikasi berbasis web merupakan aplikasi yang dijalankan melalui browser dan tidak perlu diinstall dulu.

Keunggulan aplikasi berbasis web ini antara lain:
1. Platform Independent, artinya aplikasi ini dapat dijalankan dari sistem operasi windows, linux, BSD, Mac.

2. Untuk dijalankan di banyak komputer, anda tidak perlu install di aplikasi disetiap komputer, cukup kopi aja script programnya ke server atau salah satu komputer. Untuk komputer lain yang ingin menjalankan program ini cukup buka browsernya dan membuka alamat host server dimana program ini disimpan.

3. Aplikasi ini dapat dijalankan dari jarak jauh dengan menggunakan internet.

Aplikasi berbasis web ini dibuat dengan menggunakan program server side, contohnya ASP, JSP, PHP, dan bahasa lainnya.

ASP (Active Server Side) merupakan turunan dari MS Visual Basic yang dibuat oleh Microsoft.

JSP (Java Server Page) merupakan bahasa berbasis Java yang dikembangkan oleh Sun Microsistem

Sedangkan PHP (PHP Hypertext PreProsessor) merupakan bahasa pemrograman yang paling banyak komunitasnya saat ini dan dikembangkan secara open source.

 

http://aswandi.or.id

READ MORE - Client/Server & WEB Based

Jumat, 06 Agustus 2010

Nabi Sulaiman AS dan Ratu Bilqis

 Nabi Sulaiman AS dan Ratu Bilqis


           Nabi Sulaiman AS dari negeri Ursyalim adalah putra nabi Daud AS yang memimpin negeri ini dengan sangat bijaksana. Negeri Ursyalim dikaruniai tanah yang subur dan diberikan curahan rizki yang berlimpah. Kerajaan Ursyalim merupakan kerajaan terkaya sepanjang masa. Tidak ada kerajaan manapun sebelum dan setelah kekuasaan nabi Sulaiman AS yang bisa menandingi kekayaannya. Negerinya begitu luas, bahkan di dalam istananya tebentang padang yang sebagian dihampari emas dan sebagian dihampari perak sebagai permadaninya. Dan jika tentaranya berbaris di padang itu, panjang barisannya tidak kurang dari 3 mil. Selain itu sebagai seorang nabi, nabi Sulaiman diberi mujizat yang luar biasa, dia menguasai bahasa binatang dan jin. Tidak heran jika kekuasaannya tidak hanya meliputi umat manusia tetapi juga menguasai kerajaan binatang dan kerajaan jin. Kendaraan nabi Sulaiman adalah angin, sehingga dia bisa sampai di suatu tempat hanya dengan hitungan detik.
           Meski kerajaannya begitu luas, namun nabi Daud AS dan Nabi Sulaiman AS dapat menjamin kemakmuran rakyatnya. Setiap hari beribu-ribu ternak dikurbankan dan dagingnya dibagikan kepada rakyat. Piring-piring sebesar kolam dan periuk-periuk yang tidak pernah meninggalkan tungkunya tersebar di wilayah kerajaan, sehingga rakyat tidak pernah kekurangan makanan. Selain itu kebijakan dan kearifan kedua nabi ini tidak perlu diragukan lagi.
      Suatu hari nabi Sulaiman mendengar bahwa di sebuah negeri bernama negeri Shaba, ada seorang ratu yang kecantikannya tiada tara. Sayang rakyat di negeri itu masih menyembah matahari sebagai Tuhan mereka.          
  Maka diutuslah seekor burung bulbul untuk menyampaikan surat kepada ratu Shaba. Isi surat itu adalah supaya negeri Shaba menyerahkan diri kepada negeri Ursyalim dan mengakui Alloh SWT sebagai Tuhan yang Esa.
         Sementara itu ratu Shaba yang menerima surat tersebut, mengumpulkan majlisnya dan meminta pertimbangan. Ramailah suasana di dalam majlis itu. Sebagian menginginkan perang dan sebagian lagi mengusulkan untuk berdamai. Kebetulan saat menerima surat itu, negeri Syaba sedang mengalami musibah.       
       Banyak warga Syaba yang terkena wabah yang mematikan, sehingga sebagian warga telah menjadi korban. Hal ini mebuat pertahanan negeri ini menjadi porak poranda. Dan berdasarkan pertimbangan itu pula ratu memutuskan untuk mengirimkan utusan yang akan mempersembahkan hadiah kepada raja Ursyalim sebagai tanda perdamaian. Namun ternyata raja Ursyalim menolaknya dan mengancam akan menyerang negeri syaba jika mereka tetap tidak mau bertobat.
      Akhirnya ratu memutuskan untuk datang sendiri mengunjungi negeri Ursyalim untuk bertemu dengan nabi Sulaiman AS.
      Perjalanan menuju Ursyalim membutuhkan waktu berhari-hari dan harus ditempuh dengan jalur darat dan laut. Namun lelahnya perjalanan itu terobati ketika melihat betapa indahnya negeri Ursyalim. Nabi Sulaimn AS sendiri yang menyambut rombongan ratu Syaba.
“Perkenankan aku memanggilmu Bilqis wahai ratu Shaba. Artinya adalah permaisuri yang cantik,” kata nabi Sulaiman yang membuat ratu Shaba itu tersipu.
      Di depan gerbang istana ratu tercengang melihat kemegahan istana Ursyalim. Istana itu terletak seolah di tengah-tengah sebuah kolam yang sangat jernih.
     Dan nabi pun berkata, “Wahai Bilqis masuklah engkau ke dalam istana!”
Maka ratu mengangkat sedikit roknya karena takut airnya akan membasahi roknya.
Melihat itu nabi menenangkannya dan berkata,”Jangan takut wahai Bilqis, sesungguhnya yang kaulihat ini bukan air melainkan kaca yang licin.”
     Mereka lalu masuk ke dalam istana dan nabi Sulaiman mempersilahkan ratu Shaba atau ratu Bilqis untuk duduk di singgasana. Betapa terkejutnya ratu ketika menyadari bahwa singgasana yang akan didudukinya adalah tidak lain singgasananya sendiri yang seharusnya berada di negerinya.
“Apakah singgasana ini mirip dengan singgasanamu? Tanya nabi.
“Yah, memang mirip. Hanya saja ada beberapa permata yang hilang dari tempatnya,” jawab ratu sambil meneliti singgasana tersebut.
“Itu memang singgasanamu!” kata nabi.
“Bagaimanakah caranya singgasanaku bisa sampai kemari sementara aku menguncinya di negeriku?” tanya ratu.
“Tentu atas ijin Alloh, seseorang bisa membawanya kemari bahkan sebelum aku sempat berkedip,” kata nabi.
Ratu terkagum-kagum mendengar penjelasan nabi. Kini dia semakin yakin bahwa nabi Sulaiman bukan raja sembarangan.
        Mereka lalu menuju taman istana dimana berbagai macam buah tumbuh subur dan di dalamnya mengalir sungai-sungai yang mengalirkan air dengan bermacam rasa. Sungguh anugrah Alloh yang luar biasa. Melihat semua peristiwa ini, ratu Bilqis menyatakan keimanannya kepada Alloh SWT dan mengakui nabi Sulaiman sebagai rosul utusan Alloh.
       Ternyata pertemuan dua insan ini menimbulkan rasa cinta yang mendalam, sehingga nabi Sulaiman AS meminang ratu Syaba dan mereka pun menikah.
      Cinta sejati mereka hanya terpisahkan ketika pada suatu hari di masa tuanya, nabi sedang mengawasi para jin bekerja lalu tiba-tiba jatuh tesungkur karena tongkat yang dipegangnya dimakan rayap. Rupanya nabi telah tiada sejak lama. Dan kalau bukan karena rayap yang menggerogoti tongkatnya hingga patah, tidak ada seorang pun yang menyangka bahwa nabulloh itu telah pergi. Subhanalloh semoga kita selalu menjadi hamba Alloh yang bersyukur. Amin.
READ MORE - Nabi Sulaiman AS dan Ratu Bilqis

Super Mario Game