Uploaded by Gisela Ivenita Mokalu

Arithmetic

advertisement
8
BAB 2
LANDASAN TEORI
Dalam bab ini akan dijelaskan teori-teori yang akan dipakai untuk merancang
program aplikasi ini. Metode yang dipakai adalah arithmetic coding. Dalam bab ini juga
diuraikan tentang definisi yang mencakup
citra digital, kompresi, encoding dan
decoding, teori-teori umum kompresi data, serta algoritma arithmetic coding.
Setiap isi dari setiap sub-bab memiliki hubungan satu sama lain, maka itu untuk
lebih jelaskan dapat dilihat di bawah ini :
2.1 Citra Digital
Citra digital adalah hasil penangkapan suatu objek fisik menggunakan peralatan
pencitraan digital, dimana setiap bagian dari gambar tersebut direpresentasikan dalam
bentuk pixel (picture elements). Suatu citra digital dapat diedit, dimanipulasi, dikirim,
dihapus, di-copy atau dimasukkan ke berkas komputer lainnya atau ke halaman web.
Citra sebagai keluaran suatu sistem perekaman data dapat bersifat optik berupa
foto, bersifat analog berupa sinyal-sinyal video seperti gambar pada monitor televisi,
atau bersifat digital yang dapat langsung disimpan dalam pita magnetik.
Komputer hanya dapat bekerja dengan bilangan numerik yang berhingga,
sehingga gambar harus diubah ke dalam bentuk bilangan numerik berhingga (gambar
digital) sebelum diproses dalam suatu komputer. Untuk mengubah gambar yang bersifat
kontinu menjadi gambar digital diperlukan proses pembuatan kisi-kisi arah horizontal
9
dan vertikal, sehingga diperoleh gambar dalam bentuk array dua dimensi. Proses
tersebut dikenal sebagai proses digitalisasi atau sampling.
Gambar dapat direpresentasikan dengan array dua dimensi, dimana setiap elemen
array dikenal sebagai elemen gambar (pixel). Pembagian suatu gambar menjadi sejumlah
pixel dengan ukuran tertentu ini akan menentukan resolusi spatial (derajat kehalusan)
yang diperoleh. Semakin kecil ukuran pixelnya, maka akan semakin halus gambar yang
diperoleh, karena informasi yang hilang akibat pengelompokan tingkat keabuan pada
proses pembuatan kisi-kisi akan semakin kecil. Angka pada gambar digital
menggambarkan bagaimana setiap pixel menggambarkan kecerahan (brightness) gambar
tersebut pada titik yang bersangkutan.
Proses lain yang dilakukan dalam suatui gambar digital adalah proses kuantisasi
(quantization). Dalam proses ini tingkat keabuan setiap pixel dinyatakan sebagai suatu
harga integer. Batas-batas harga integer atau besarnya daerah tingkat keabuan yang
digunakan yang digunakan untuk menyatakan tingkat keabuan pixel akan menentukan
resolusi kecerahan dari gambar yang diperoleh. Kalau digunakan 3 bit untuk menyimpan
harga integer tersebut, maka akan diperoleh sebanyak 8 tingkat keabuan.
Seluruh tahapan konversi di atas dikenal sebagai konversi analog ke digital, yang
biasanya akan menyimpan hasil suatu proses pada memori gambar. Sebaliknya, sebagai
hasil suatu proses pengolahan gambar digital, kadang-kadang perlu mengeluarkan
gambar dari memori gambar ke bentuk peragaan pada monitor televisi atau ke bentuk
cetakan foto. Proses konversi balikan ini dikenal sebagai konversi digital ke analog.
10
2.1.1 Format File
Citra-citra digital sebaiknya disimpan dalam tiga jenis format utama, dengan tipe
format dan level resolusi yang berbeda-beda. Berikut ini beberapa jenis format yang
dipergunakan:
a. TIFF (Tagged Image File Format), merupakan format penyimpanan yang tidak
mengkompresi citra digital dan oleh karenanya tidak menanggalkan atau kehilangan
informasi dari penangkapan digital asli. Biasanya digunakan untuk citra-citra digital
master. TIFF merupakan format file yang disukai karena dirancang untuk semua
platform dan dapat ditempatkan di berbagai tempat. Program pengeditan citra digital
yang dibuat pada sepuluh tahun terakhir dapat membuka TIFF sehingga format ini
dapat bertahan dalam jangka waktu yang lama.
b. BMP (Windows Bitmap), biasanya digunakan oleh aplikasi dan sistem operasi
Microsoft Windows.
c. JPEG (Joint Photographic Experts Group), merupakan format yang dikompresi
dan menanggalkan beberapa informasi pixel sehingga citra digital dapat disimpan
dalam ukuran simpan yang lebih sedikit. Seringkali digunakan untuk citra-citra
digital akses dan thumbnail yang akan dipresentasikan melalui web.
d. GIF (Graphic Image File Format) merupakan format yang dikompresi dan
menanggalkan beberapa informasi piksel sehingga citra digital dapat disimpan dalam
ukuran simpan yang lebih sedikit. Seringkali digunakan untuk citra-citra digital
akses dan thumbnail yang akan dipresentasikan melalui web. Sangat tepat untuk
citra-citra digital dengan bidang yang besar dengan satu atau beberapa warna.
e. PNG (Portable Network Graphic), merupakan format penyimpanan yang
dikompresi namun tidak menanggalkan beberapa informasi pixel. Memiliki warna
11
24-bit namun tidak memungkinkan untuk menyimpan metadata seperti yang
dilakukan pada TIFF dan JPEG. Format ini masih relatif baru dan masih belum
didukung oleh semua peranti pemandang citra (image viewers).
f. JPEG 2000, merupakan format yang tidak berkaitan dengan JPEG umumnya.
Menggunakan alogaritma kompresi dengan suatu pilihan untuk tidak menghilangkan
informasi pixel. Format ini masih dalam proses pengkajian dan belum banyak
tersedia.
2.2 Kompresi
Kompresi gambar merupakan proses untuk mengurangi jumlah bit-bit data yang
merepresentasikan suatu gambar. Ada dua jenis kompresi gambar yang memberikan
hasil yang merupakan replica dari gambar awal (lossless compression) dan kompresi
yang merupakan pendekatan terhadap gambar awal (loosy compression). Format yang
umum digunakan saat ini adalah JPEG yang umumnya digunakan untuk gambar hasil
fotografi dan GIF yang digunakan untuk gambar dengan bentuk geometri yang
sederhana.
Gambar yang merupakan hasil fotografi memiliki ukuran yang cukup besar
karena memiliki gradient warna yang tinggi dan sudut-sudut kompleks dan bersifat
loosy. Kompresi gambar memanfaatkan kelebihan atau persepsi manusia terhadap
gambar visual. Persepsi manusia tidak terlalu sensitif terhadap gangguan frekuensi tinggi
dengan intensitas rendah, namun peka terhadap perubahan warna. Hal ini menyebabkan
bit-bit data yang tidak berguna dapat dihilangkan untuk mengurangi ukurannya.
12
2.2.1 Kompresi Lossless dan Lossy
Teknik kompresi pada citra ada 2, yaitu lossless dan lossy. Kompresi lossless dan
lossy merupakan istilah yang mendeskripsikan apakah seluruh informasi data dari suatu
file asli dapat dikembalikan ke seperti semula atau tidak pada proses dekompresi.
a. Lossy Compression
Kompresi
loosy
mengurangi
suatu
file
secara
permanen
dengan
menghilangkan informasi tertentum, terutama informasi yang berlebih. Ketika file
tersebut didekompres, hanya sebagian informasi dari file asli yang masih ada. Teknik
ini mengubah detail dan warna pada file citra menjadi lebih sederhana tanpa terlihat
perbedaan yang mencolok dalam pandangan manusia, sehingga ukurannya menjadi
lebih kecil. Biasanya digunakan pada citra foto atau image lain yang tidak terlalu
memerlukan detail citra, dimana kehilangan bit rate foto tidak berpengaruh pada
citra.
b. Loseless Compression
Dengan kompresi lossless, setiap bit data pada file asli akan tetap setelah file
didekompres. Semua informasi dikembalikan secara lengkap, tidak ada satupun
informasi citra yang dihilangkan. Biasa digunakan pada citra medis. Metode
loseless: Run Length Encoding, Entropy Encoding (Huffman, Arithmetic), dan
Adaptive Dictionary Based (LZW).
13
Gambar 2.1 Pembagian Metode Kompresi Data
2.3 Encoding dan Decoding
Pada umumnya pengompresan data terdiri dari dua proses yang digunakan dalam
program atau peralatan, yaitu :
a. Encoding
Encoding adalah suatu proses pada software atau hardware dimana program
atau peralatan melakukan pengkodean dalam format tertentu. Program atau peralatan
yang melakukan proses encoding disebut encoder atau coder. Dalam kompresi data,
file-file data yang akan diproses menggunakan program encoding. Bit-bit dalam file
aslinya akan di-encode dengan menggunakan algoritma pengompresan yang
diinginkan, sehingga ukuran hasil kompresi akan lebih kecil dari ukuran aslinya.
b. Decoding
Decoding adalah suatu proses pada software atau hardware dimana program
atau peralatan melakukan penguraian kode dari file hasil encoding. Program atau
peralatan yang melakukan proses decoding disebut decoder. Peralatan yang dapat
14
melakukan proses encoding dan decoding disebut codec. Dalam proses decoding, file
hasil dari proses encoding akan dikembalikan ke bentuk aslinya dengan
menggunakan algoritma pengompresan.
2.4 Rasio Kompresi
Rasio kompresi digunakan untuk menjelaskan perbedaan antara sebuah file dan
file hasil kompresinya. Rasio tersebut memberikan indikasi seberapa besar kompresi itu
berhasil dicapai untuk suatu file tertentu. Salah satu cara pengekspresian angka rasio
kompresi yang digunakan yaitu rasio antara ukuran file dan output, contoh : “rasio
kompresi 4:1”. Cara pengeksspresian lain yang lebih banyak digunakan adalah dengan
menuliskannya dengan presentase dari 0% sampai 100%, dimana 100% digunakan
sebagai rasio kompresi yang terbaik.
⎛ ukuran _ citra _ hasil _ kompresi
⎞
RK = 100% − ⎜⎜
×100% ⎟⎟
ukuran _ citra _ semula
⎝
⎠
2.5 Teori-Teori Umum Kompresi Data
Beberapa teknik pengompresan data secara lossless yang dapat digunakan pada
berbagai tipe data yaitu :
a. Huffman Coding
Huffman Coding merupakan salah satu teknik pengompresan yang banyak
digunakan dan sangat popular. Teori pengkodean ini diciptakan oleh David A.
Huffman pada tahun 1952. Huffman Coding yaitu teknik pengompresian data yang
menempatkan Variable Length Codes (VLC) ke dalam simbol-simbol, sehingga
simbol-simbol yang sering muncul memiliki kode yang paling singkat. Pada
15
pendekompresian simbol-simbol tersebut akan dikembalikan ukuran kode aslinya.
Ketika digunakan untuk mengompres text, contohnya, variable lengths codes
digunakan sebagai ganti kode-kode ASCII, dan karakter-karakter yang sering
muncul, biasanya spasi, e, dan t digunakan sebagai kode-kode terpendek. Dengan
cara ini jumlah total bit yang diperlukan untuk mentransmisikan data dapat
dipertimbangkan lebih sedikit dibandingkan dengan jumlah bit yang diperlukan jika
representasi ukuiran aslinya digunakan. Huffman Coding secara khusus lebih efektif
jika data didominasi oleh simbol-simbol yang kecil.
b. Lempel-Ziv Coding
Lempel-Ziv Coding menggunakan sebuah kamus simbol-simbol yang
berurutan. Ketika sebuah urutan tersebut diulang maka akan diganti dengan suatu
referensi ke posisinya dalam kamus tersebut. Ada beberapa variasi dari teknik
Lempel-Ziv Coding ini dan masing-masing berbeda terutama dalam pengaturan
kamus. Teknik kompresi data dari Lempel-Ziv yang paling terkenal yaitu LempelZiv-Welch.
c. Run Length Encoding
Run Length Encoding adalah suatu teknik kompresi yang menggantikan
simbol-simbol yang berurutan tersebut dengan simbol itu sendiri diikuti dengan
jumlah perulangan yang terjadi. Sebagai contoh, string 111110000003355 dapat
direpresentasikan dengan 15063252. Sudah jelas bahwa teknik kompresi ini sangat
berguna untuk simbol-simbol yang berurutan dan berulang, dan dengan demikian
kadang-kadang dapat berguna untuk file-file gambar dimana pixel-pixel gambar
tersebut mempunyai nilai yang sama, contohnya gambar kartun.
16
d. Relative Encoding
Relative Encoding adalah suatu teknik transmisi yang mencoba untuk
membuktikan efisiensi dengan mentransmisikan perbedaan antara masing-masing
nilai dan predecessor-nya, ke tempat nilai itu sendiri. Dengan demikian, nilai-nilai
15106433003 akan ditransmisikan sebagai 1+4-4-1+6-2-1+0-3+0+3. Akibatnya
transmitter memprediksikan bahwa masing-masing nilai sama seperti predecessornya dan data yang ditransmisikan merupakan perbedaan antara nilai hasil prediksi
dan nilai sebenarnya. Differential Pulse Code Modulation (DPCM) adalah contoh
dari relative encoding ini. Signal tersebut dapat mempunyai satu kemungkina dari
tujuh nilai (-3 sampai +3) dan dengan begitu akan membutuhkan 3 bit per sample.
Hanya 2 bit yang diperlukan untuk memperlihatkan hubungan antara sample-sample.
Pengkodean signal dengan cara ini menghasilkan reduksi 1/3 dalam jumlah bit.
e. Arithmetic Coding
Walaupun Huffman coding sangat efisien, teknik tersebut hanya optimal jika
kemungkinan simbol-simbol adalah 2n. Arithmetic coding tidak tergantung pada
kondisi tersebut dan biasanya lebih baik dibandingkan dengan teknik Huffman
coding yang lebih popular. Walaupun demikian arithmetic coding lebih kompleks.
17
Tabel 2.1 Perbandingan Huffman Coding dengan Arithmetic Coding
Metode kompresi
Arithmetic
Huffman
Rasio kompresi
Rendah (sangat bagus)
Tinggi (buruk)
Kecepatan kompresi
Lambat
Cepat
Kecepatan dekompresi
Lambat
Cepat
Penyimpanan memori
Sangat lambat
Lambat
Penyusunan pola terkompresi
Tidak
Ya
Mengizinkan akses secara random Tidak
Ta
2.6 Algoritma Arithmetic Coding
Pada umumnya, algoritma kompresi data melakukan penggantian satu atau lebih
simbol input dengan kode tertentu. Berbeda dengan cara tersebut, arithmetic coding
menggantikan satu deretan simbol input dengan sebuah bilangan floating point. Semakin
panjang dan semakin kompleks pesan yang dikodekan, semakin banyak bit yang
diperlukan untuk keperluan tersebut. Output dari arithmetic coding ini adalah satu angka
yang lebih kecil dari 1 dan lebih besar atau sama dengan 0. Angka ini secara unik dapat
di-decode sehingga menghasilkan deretan simbol yang dipakai untuk menghasilkan
angka tersebut. Untuk menghasilkan angka output tersebut, tiap simbol yang akan diencode diberi satu set nilai probabilitas.
Gagasan utama pada arithmetic coding adalah memberikan setiap simbol sebuah
range atau interval. Dimulai dengan range [0..1), setiap range dibagi dalam beberapa
subrange, dimana ukurannya sebanding dengan probabilitas (kemungkinan yang muncul
dari simbol-simbol yang sama). Semakin tinggi probabilitas yang dimiliki oleh suatu
18
simbol, semakin tinggi pula range yang diberikan terhadap simbol tersebut. Tanda”[..)“
berarti bahwa angka yang didalamnya diikutsertakan kecuali angka terakhir.
Setelah menentukan range dan probabilitasnya, mulai dapat melakukan proses
encoding simbol-simbol, setiap simbol menentukan dimana output angka floating point
itu berada. Sebagai contoh, jika terdapat suatu message “tawa”, maka distribusi
probabilitasnya yaitu :
Tabel 2.2 Contoh Arithmetic Coding dengan Message “tawa”
Simbol Probability Range
a
2 [0.0,0.5)
t
1 [0.5,0.75)
w
1 [0.75,1.0)
Bagian yang paling penting pada proses encoding yaitu simbol pertama. Ketika
melakukan encoding dari message baca, simbol yang pertama adalah “t”. Agar simbol
pertama dapat di-decode dengan tepat, hasil dari encode message harus sebuah angka
lebih besar atau sama dengan 0.5 dan kurang dari 0.75. Apa yang dilakukan untuk
encoding angka ini yaitu tetap menjaga agar angka ini jatuh diantara range tersebut. Jadi
setelah simbol pertama di-encode, range terendah adalah 0.5 dan range tertinggi adalah
0.75.
Setelah simbol pertama di-encode, sudah dapat diketahui range untuk output
number yang dibatasi oleh low number dan high number. Apa yang terjadi selama proses
encoding yaitu bahwa setiap simbol baru untuk di-encode lebih lanjut akan membatasi
range dari output angka. Simbol selanjutnya untuk di-encode yaitu “a”, memiliki range
0.0 hingga 0.5. Jika itu merupakan angka pertama dalam message, maka akan diset low
19
number dan high number langsung pada nilainya. Tetapi “a” adalah simbol kedua. Jadi
simbol “a” memiliki range yang sama dengan 0.0-0.5 dalam subrange yang baru 0.50.75. Ini berarti angka hasil encode yang baru akan jatuh pada bagian yang ke-0 hingga
yang ke-50 dari range sebelumnya. Dengan logika ini didapatkan angka range 0.5
hingga 0.625.
a. Algoritma Encoding
Algoritma untuk menyelesaikan penghitungan output angka dari message tersebut
adalah:
1). Set Low number pada angka 0
2). Set High number pada angka 1
3). Lakukan perulangan hingga semua simbol terproses
Range = High – Low
High = Low + Range * Angka range tertinggi dari simbol yang sedang diproses
Low = Low + Range * Angka range terendah dari simbol yang sedang diproses
Dari hasil encoding keseluruhan untuk message “tawa” didapatkan:
Tabel 2.3 Hasil Encoding untuk Message “tawa”
Simbol Range
Low number
High number
0
1
t
1
0.5
0.75
a
0.25
0.5
0.625
w
0.125
0.59375
0.625
a
0.3125
0.59375
0.609375
20
Jadi angka terakhir dari low number yaitu 0.59375 merupakan hasil output angka proses
encoding dari message “tawa”.
Setelah mengetahui pola encoding tersebut, maka dengan mudah dapat dilihat
bagaimana proses decoding bekerja. Dalam proses decoding ini pertama-tama temukan
simbol pertama yaitu dengan melihat output angka dari proses encoding itu jatuh pada
range simbol mana. Karena output angka 0.59375 jatuh pada range 0.5-0.75, dapat
diketahui bahwa simbol pertama adalah “t”. Kemudian yang harus dilakukan yaitu
mengeluarkan “t” yang telah ter-encode dengan cara membalikkan proses yang
menempatkannya. Pertama, dengan mengurangi high number dan low number yang
dimiliki simbol “t” untuk mendapatkan angka rangenya dan angka yang didapat yaitu
0.25. Selanjutnya mengurangi output angka encoding dengan angka range terendah
simbol “t” dan didapatkan angka 0.9375 untuk kemudian membagi angka tersebut
dengan range yang sebelumnya pernah didapat. Hasil yang didapat adalah 0.375.
langkah selanjutnya dengan memperhitungkan angka tersebut jatuh pada range simbol
mana, dan didapatkan simbol berikutnya yaitu “a”.
b. Algoritma Decoding
Algoritma untuk proses decoding yaitu :
1). Dapatkan angka encoded (pada variabel “Number”)
2). Dapatkan simbol dimana angka encoded (“Number”) berada dalam range-nya
3). Lakukan perulangan hingga semua simbol terproses.
Range = angka range tertinggi simbol – angka range terendah simbol
Number = Number - angka range terendah simbol
Number = Number / Range
Dari hasil proses decoding untuk message “tawa” dapat dilihat pada tabel berikut :
21
Tabel 2.4 Hasil Decoding untuk Message “tawa”
Simbol Low Range
High Range
Range
Number
t
0.5
0.75
a
0
0.5
0.5
0.375
w
0.75
1
0.25
0.75
a
0
0.5
0.5
0
Ketika
tidak
ada
lagi
simbol
yang
0.25 0.59375
tersisa
untuk
di-decode,
untuk
menghentikannya yaitu dapat dengan menyediakan range kecil khusus untuk simbol
EOF (End of File). Tetapi dalam hal pengukuran encoding tidak dibutuhkan dan juga
sebagian besar kompresor tahu kapan harus berhenti.
Proses encoding pada metode arithmetic ini merupakan cara penyempitan range
angka suatu simbol dengan simbol yang baru. Range baru tersebut sebanding dengan
probabilitas yang diberikan pada simbol tersebut. Proses decoding adalah prosedur
kebalikannya, dimana range dikembangkan dalam perbandingan terhadap probabilitas
dari setiap simbol ketika diekstrak.
2.7 Dasar Perancangan Perangkat Lunak
Menurut Mahyuzir, perancangan merupakan proses penerapan bermacam-macam
teknik dan prinsip dengan tujuan mendefinisikan peralatan, proses atau sistem secara
rinci. Perancangan dilakukan pada tahap awal. Tujuan perancangan adalah menghasilkan
model yang akan dibuat. Perancangan perangkat lunak mengalami perubahan jika
didapatkan metode yang baru, analisis yang lebih baik dan penyusunan pengertian yang
lebih luas (Licyana Suryani, 2006).
22
2.7.1 Fase Pengembangan dan Perancangan Perangkat Lunak
Menurut Mahyuzir, fase pengembangan perangkat lunak terdiri dari tiga langkah
yang jelas, yaitu (Licyana Suryani, 2006):
a. Perancangan
Metodologi perancangan terdiri dari:
1). Perancangan data yang terfokus pada pendefinisian struktur data.
2). Perancangan arsitektur yang mendefinisikan hubungan antara elemen yang
utama dari struktur program.
3). Perancangan prosedural yang merupakan transformasi elemen dari struktur
program ke dalam deskripsi prosedural perangkat lunak.
b. Membuat source code
c. Uji coba
Setelah melalui tiga langkah di atas, maka dilakukan perpaduan perangkat lunak
dan validasi.
Rekayasa piranti lunak menurut Fritz Bauer adalah penetapan dan pemakaian
prinsip-prinsip rekayasa dalam rangka mendapatkan piranti lunak yang ekonomis yaitu
terpercaya dan bekerja efisien pada mesin (komputer) (Hendra Prasetyo, 2009).
Rekayasa piranti lunak menurut Pressman adalah suatu pembentukan dan
penggunaan prinsip-prinsip rekayasa dengan tujuan menghasilkan suatu perangkat lunak
yang ekonomis dan dapat diandalkan serta dapat bekerja secara efisien pada mesin yang
sesungguhnya. Pada dasarnya rekayasa piranti lunak meliputi tiga elemen kunci yaitu
(Eka Janitra, 2009):
23
a. Methods (metode)
Mengenai bagaimana membangun suatu perangkat lunak, di mana metode
terdiri dari beberapa tugas yaitu perencanaan proyek dan estimasi, analisis kebutuhan
perangkat lunak, perancangan struktur data, arsitektur program, prosedur algoritma,
pengkodean, testing dan pemeliharaan.
b. Tools (alat bantu)
Tools menyediakan dukungan baik secara otomatis maupun semi otomatis
untuk metode. Tools diintegrasikan dengan tujuan informasi yang dihasilkan oleh
suatu tools dapat digunakan oleh tools lainnya.
c.
Procedures (prosedur)
Procedures merupakan perekat antara metode. Tools dan procedures juga
memungkinkan pembangunan perangkat lunak secara rasional dan berkala.
2.7.2 Classic Life Cycle
Dalam membuat suatu program aplikasi terdapat beberapa paradigma atau model
proses, satu di antaranya adalah classic life cycle atau yang biasa dikenal dengan
waterfall model. Model ini adalah model yang muncul pertama kali yaitu sekitar tahun
1970 sehingga sering dianggap kuno, tetapi merupakan model yang paling banyak
dipakai di dalam pembuatan program. Model ini disebut dengan waterfall karena tahap
demi tahap yang dilalui harus menunggu selesainya tahap sebelumnya dan berjalan
berurutan (Yolanda, 2009).
Terdapat 6 tahapan dalam model waterfall. Berikut adalah penjelasan dari tahaptahap yang dilakukan di dalam model ini (Yolanda, 2009):
24
a. Analisis dan perancangan sistem
Pemodelan ini diawali dengan mencari kebutuhan dari keseluruhan sistem
yang akan diaplikasikan ke dalam program aplikasi. Hal ini sangat penting,
mengingat program aplikasi harus dapat berinteraksi dengan elemen-elemen yang
lain seperti hardware, database, dsb. Tahap ini sering disebut dengan project
definition.
b. Analisis kebutuhan
Proses pengumpulan elemen sistem ditingkatkan dan dipusatkan secara
khusus untuk mengerti karakteristik dari program yang akan dibuat. Kebutuhan
maupun sistem harus dibicarakan bersama dengan pelanggan.
c. Perancangan
Proses perancangan menerjemahkan kebutuhan elemen sistem yang
direpresentasikan ke dalam sebuah blueprint yang dapat diperkirakan kualitasnya
sebelum dilakukan pengkodean.
d. Pengkodean
Untuk dapat dimengerti oleh komputer, maka desain tadi harus diubah
bentuknya menjadi bentuk yang dapat dimengerti oleh komputer, yaitu ke dalam
bahasa
pemrograman
melalui
proses
pengkodean.
Tahap
ini
merupakan
implementasi dari tahap desain yang secara teknis nantinya dikerjakan oleh
programmer.
e. Pengujian
Pengujian dilakukan untuk memastikan hasilnya sesuai dengan kebutuhan
yang sudah didefinisikan sebelumnya.
25
f. Pemeliharaan
Pemeliharaan suatu program diperlukan karena program yang dibuat tidak
selamanya hanya seperti itu. Pengembangan merupakan salah satu bagian dari
pemeliharaan. Pengembangan terjadi untuk memperbaiki error kecil yang tidak
ditemukan sebelumnya, atau ada penambahan fitur-fitur yang belum ada pada
program tersebut.
Gambar 2.2
Life Cycle Model Waterfall
Model ini menjadi terkenal karena pengaplikasian yang mudah, dan ketika semua
kebutuhan sistem dapat didefinisikan secara utuh, eksplisit, dan benar di awal proyek,
maka pembuatan program dapat berjalan dengan baik dan tanpa masalah. Tetapi karena
model ini melakukan pendekatan secara berurutan, maka ketika suatu tahap terhambat,
tahap selanjutnya tidak dapat dikerjakan dengan baik dan hal itu menjadi salah satu
kekurangan dari model ini. Kesimpulannya adalah ketika suatu proyek skalanya sedang
mengarah kecil cocok menggunakan model ini, akan tetapi bila mengerjakan proyek
yang besar, tampaknya akan kesulitan jika menggunakan model waterfall ini (Yolanda,
2009).
26
Fase pengembangan menerapkan 75% atau lebih biaya dalam perekayasaan
perangkat lunak. Keputusan yang diambil akan mempengaruhi keberhasilan penerapan
dan mengurangi pekerjaan pada fase pemeliharaan. Hal yang terpenting dalam
perancangan perangkat lunak adalah kualitas. Perancangan menyediakan gambaran atau
model yang dapat dinilai segi kualitasnya. Perancangan perangkat lunak merupakan
landasan untuk seluruh fase pengembangan dan pemeliharaan. Tanpa perancangan, akan
dihasilkan sistem yang tidak stabil (Licyana Suryani, 2006).
2.7.3 Proses Perancangan
Perancangan perangkat lunak adalah suatu proses di mana informasi-informasi
yang telah diperoleh diterjemahkan ke dalam model perangkat lunak. Model perangkat
lunak memegang peranan penting dalam penulisan program (Licyana Suryani, 2006).
Berdasarkan manajemen proyek, perancangan perangkat lunak dikerjakan dalam
2 langkah, yaitu (Licyana Suryani, 2006)
a. Perancangan awal
Yakni transformasi informasi-informasi ke dalam arsitektur data dan
perangkat lunak.
b. Perancangan rinci
Perancangan ini terfokus pada perbaikan model arsitektur yang memegang
peranan penting dalam pembuatan struktur data dan algoritma secara rinci dari
perangkat lunak.
27
2.8
Interaksi Manusia dan Komputer
Manusia adalah makhluk yang sering berinteraksi dengan manusia lain. Oleh
karena itulah maka penggunaan komputer dibuat sesederhana mungkin sehingga
manusia dapat berinteraksi dengan komputer semudah berinteraksi dengan manusia lain.
Proses penyederhanaan ini dikenal dengan interactive user interface (Yolanda, 2009).
Menurut Shneiderman, interaksi manusia dan komputer merupakan disiplin ilmu
yang berhubungan dengan perancangan, evaluasi, dan implementasi sistem komputer
interaktif untuk digunakan oleh manusia, serta studi fenomena-fenomena besar yang
berhubungan dengannya (Ade Arisandi, 2009).
Pada interaksi manusia dan komputer ditekankan pada pembuatan antarmuka
pemakai (user interface). User interface yang dibuat diusahakan sedemikian rupa
sehingga seorang user dapat dengan baik dan nyaman menggunakan aplikasi perangkat
lunak dibuat (Ade Arisandi, 2009).
Antar muka pemakai (user interface) adalah bagian sistem komputer yang
memungkinkan manusia berinteraksi dengan komputer. Tujuan antar muka pemakai
adalah agar sistem komputer dapat digunakan untuk menunjuk pada kemampuan yang
dimiliki oleh piranti lunak atau program aplikasi yang mudah dioperasikan dan dapat
membantu menyelesaikan suatu persoalan dengan hasil yang sesuai dengan keinginan
user, sehingga user merasa nyaman mengoperasikan program tersebut (Ade Arisandi,
2009).
28
2.8.1
Program Interaktif
Suatu program yang interaktif dan baik harus bersifat user friendly. Ada lima
kriteria yang harus dimiliki oleh suatu program sehingga dapat berinteraksi dengan baik
dan bersifat user friendly. Lima kriteria tersebut adalah (Yolanda, 2009):
a.
Memiliki waktu belajar yang relatif singkat.
b. Mampu memberikan informasi yang diperlukan dengan cepat.
c. Mudah untuk dioperasikan oleh user.
d. Kemudahan untuk mengingat program tersebut walaupun telah lama tidak
mengoperasikannya.
e. Kepuasan pribadi.
2.8.2
Pedoman Merancang User Interface
Beberapa pedoman yang dianjurkan dalam merancang suatu program, guna
mendapatkan suatu program yang user friendly adalah sebagai berikut (Ade Arisandi,
2009):
Untuk merancang sistem interaksi manusia dan komputer yang baik, harus
memperhatikan delapan aturan emas (eight golden rules) dalam perancangan antar
muka. Eight golden rules tersebut yaitu (Hendra Prasetyo, 2009):
a. Strive for consistency
Konsistensi dalam perancangan antar muka dan bertahan untuk konsistensi.
b. Enable frequent user to use shortcuts
Memungkinkan/ memperbolehkan user menggunakan shortcuts secara berkala.
c. Over informative feed back
Memberikan umpan balik yang informatif.
29
d. Design dialogs to yield closure
Pengorganisasian yang baik sehingga user mengetahui kapan awal dan akhir dari
suatu action serta merancang dialog untuk menghasilkan keadaan akhir.
e. Over simple error handling
Memberikan penanganan kesalahan yang sederhana sehingga user mampu
mengetahui dan memperbaiki kesalahan dengan mudah.
f. Permit easy reversal of actions
Mengijinkan pembalikan action dengan mudah.
g. Support internal locus of control
Mendukung user menguasai sistem yang dibuat sehingga user mampu aktif dalam
mengambil langkah selanjutnya bukan hanya merespon pesan yang muncul.
h. Short-term memory load
Mengurangi beban ingatan jangka pendek kepada user sehingga perancangannya
harus sederhana.
Waktu respon dalam sistem komputer menurut Scheiderman adalah jumlah detik
dari saat user program memulai aktivitas sampai menampilkan hasilnya di layar atau
printer. Pemakai lebih menyukai waktu respon yang pendek, waktu respon yang panjang
mengganggu, waktu respon yang pendek menyebabkan waktu user berpikir lebih
pendek. Waktu respon harus sesuai dengan tugasnya, dan pemakai harus diberi tahu
mengenai penundaan yang panjang.
30
2.9
Perancangan Program Aplikasi
2.9.1 Bentuk Program
Suatu program dapat dibuat dengan dua cara yaitu secara OOP (Object Oriented
Programming) atau secara procedural (Ade Arisandi, 2009).
Object Oriented Programming adalah sebuah paradigma pemrograman yang
menggunakan ”objek” dan interaksinya untuk mendesain aplikasi dan program
komputer. Keunggulan yang membuat OOP semakin banyak digunakan adalah karena
sifatnya yang reusable, sehingga sangat cocok untuk membuat aplikasi atau program
yang besar. Untuk aplikasi dengan struktur yang sederhana, OOP akan mempersulit
pembuatan program karena programmer harus merancang objek satu per satu (Ade
Arisandi, 2009).
Sedangkan procedural programming atau yang dikenal juga dengan imperative
programming adalah pemrograman berdasarkan konsep pemanggilan procedures atau
yang sering dikenal sebagai routines, subroutines, methods, dan functions. Setiap
procedure mengandung sederetan langkah perhitungan yang harus dijalankan.
Procedures dapat dipanggil kapan saja dalam program, termasuk di dalam procedure itu
sendiri. Jika dibandingkan dengan OOP, procedural programming diperuntukkan bagi
pembuatan program dengan struktur yang sederhana dengan algoritma yang juga
sederhana maupun yang rumit (Ade Arisandi, 2009).
2.9.2
Pemrograman Berorientasi Objek
Object-oriented mencakup bidang aplikasi yang sangat luas. Para pengguna
sistem komputer dan sistem lain yang didasarkan atas teknologi komputer merasakan
efek object-oriented dalam bentuk meningkatnya aplikasi software yang mudah
31
digunakan dan servis yang lebih fleksibel, yang muncul dalam berbagai bidang industri,
seperti dalam perbankan, telekomunikasi, dan sebagainya. Sedangkan bagi software
engineer, object-oriented berpengaruh dalam bahasa pemrograman, metodologi
rekayasa, manajemen proyek, hardware, dan sebagainya (Prins Carl Santoso, 2009).
Analisis dan perancangan berorientasi objek amat sangat perlu dilakukan dalam
pengembangan sistem berorientasi objek. Hanya dengan kemampuan menggunakan
bahasa pemrograman berorientasi objek yang andal, kita dapat membangun suatu sistem
berorientasi objek, namun sistem aplikasi yang dibangun akan menjadi lebih baik lagi
bila langkah awalnya didahului dengan proses analisis dan perancangan berorientasi
objek, terutama untuk membangun sistem yang mudah dipelihara (Prins Carl Santoso,
2009).
Analisis berorientasi objek adalah metode analisis yang memeriksa requirements
(syarat/ keperluan yang harus dipenuhi suatu sistem) dari sudut pandang kelas-kelas dan
objek-objek yang ditemui dalam ruang lingkup permasalahan. Sedangkan perancangan
berorientasi objek adalah metode untuk mengarahkan arsitektur software yang
didasarkan pada manipulasi objek-objek sistem atau subsistem (Prins Carl Santoso,
2009).
Pemrograman berorientasi objek merupakan kelanjutan dari proses analisis dan
desain berorientasi objek. Dalam pemrograman berorientasi objek ini, komponen yang
didesain dalam proses desain kemudian diimplementasikan dengan menggunakan
bahasa pemrograman berorientasi objek. Syarat sebuah bahasa pemrograman
berorientasi objek adalah bila bahasa pemrograman tersebut memiliki fitur untuk
mengimplementasikan
keempat
konsep
berorientasi
objek,
yaitu
abstraksi,
encapsulation, polymorphism, dan inheritance. Dikenal beberapa bahasa pemrograman
32
berorientasi objek, seperti C++, Java, Visual Basic, dan sebagainya (Prins Carl Santoso,
2009).
Download