PARADIGMA PENGEMBANGAN PERANGKAT LUNAK

PARADIGMA PENGEMBANGAN PERANGKAT LUNAK

Pengembangan perangkat lunak dapat diartikan sebagai proses membuat suatu perangkat lunak baru untuk menggantikan perangkat lunak lama secara keseluruhan atau memperbaiki perangkat lunak yang telah ada. Agar lebih cepat dan tepat dalam mendeskripsikan solusi dan mengembangkan perangkat lunak, juga hasilnya mudah dikembangkan dan dipelihara, maka pengembangan perangkat lunak memerlukan suatu metodologi khusus. Metodologi pengembangan perangkat lunak adalah suatu proses pengorganisasian kumpulan metode dan konvensi notasi yang telah didefinisikan untuk mengembangkan perangkat lunak. Secara prinsip bertujuan untuk membantu menghasilkan perangkat lunak yang berkualitas (Jaidan Jauhari .pdf). Berikut batu landasan yang menopang rekayasa perangkat lunak (Rogers S. Pressman, 2002:28):

Gb.1

Metodologi pengembangan perangkat lunak (atau disebut juga model proses atau paradigma rekayasa perangkat lunak) adalah suatu strategi pengembangan yang memadukan proses, metode, dan perangkat (tools) (Modul RPL.pdf). Metode-metode rekayasa perangkat lunak, memberikan teknik untuk membangun perangkat lunak. Berkaitan dengan serangkaian tugas yang luas yang menyangkut analisis kebutuhan, konstruksi program, desain, pengujian, dan pemeliharaan (Rogers S. Pressman:2002).
Untuk menyelesaikan masalah di dalam pengembangan perangkat lunak, tim perekayasa harus menggabungkan strategi pengembangan yang melingkupi lapisan proses, metode, dan alat bantu. Model proses rekayasa perangkat lunak dipilih berdasarkan sifat aplikasi dan proyeknya, metode dan alat-alat bantu yang akan dipakai, dan control serta penyampaian yang dibutuhkan.
Berikut Metode-Metode Pengembangan Perangkat Lunak (Model Proses Pengembangan Perangkat Lunak) yaitu metode sekuensial linier, prototype, RAD, Fourth Generation Techniques (4GT) dan spiral (dalam Jaidan Jauhari.Pdf). Selain metode-metode tersebut Roger S. Pressman (2002:45), mengungkapkan dua metode lagi yaitu metode Proses Perangkat Lunak Evolusioner (pertambahan, spiral, konkruen), dan metode formal. Berikut Metode-metode tersebut :
1. Model Sekuensial Linier
Sering juga disebut dengan “siklus kehidupan klasik” atau “model air terjun.” Penggambaran model ini :

Gb. Fase lingkaran pemecahan masalah

Gb. Model sekuensial linier
Metode pengembangan perangkat lunak dengan pendekatan pada perkembangan perangkat lunak yang sistematik dan sekuensial yang mulai pada tingkat dan kemajuan system pada seluruh analisis, desain, kode, pengujian, dan pemeliharaan. Model ini melingkupi aktivitas-aktivitas :
a. Rekayasa dan pemodelan system/informasi
Karena perangkat lunak adalah bagian dari sistem yang lebih besar, pekerjaan dimulai dari pembentukan kebutuhan-kebutuhan untuk seluruh elemen sistem dan kemudian memilah mana yang untuk pengembangan perangkat lunak. Hal ini penting, ketika perangkat lunak harus berkomunikasi dengan hardware, orang dan basis data
b. Analisis kebutuhan perangkat lunak
Pengumpulan kebutuhan dengan fokus pada perangkat lunak, yang meliputi : Domain informasi, fungsi yang dibutuhkan, unjuk kerja/performansi dan antarmuka. Hasilnya harus didokumentasi dan direview ke pelanggan
c. Desain
Ada 4 atribut untuk program yaitu : Struktur Data, Arsitektur perangkat lunak, Prosedur detil dan Karakteristik Antarmuka. Proses desain mengubah kebutuhan-kebutuhan menjadi bentuk karakteristik yang dimengerti perangkat lunak sebelum dimulai penulisan program. Desain ini harus terdokumentasi dengan baik dan menjadi bagian konfigurasi perangkat lunak.
d. Generasi kode
Penterjemahan perancangan ke bentuk yang dapat dimengerti oleh mesin, dengan menggunakan bahasa pemrograman
e. Pengujian
Setelah kode program selesai testing dapat dilakukan. Testing memfokuskan pada logika internal dari perangkat lunak, fungsi eksternal dan mencari segala kemungkinan kesalahan dan memriksa apakah sesuai dengan hasil yang diinginkan.
f. Pemeliharaan
Merupakan bagian paling akhir dari siklus pengembangan dan dilakukan setelah perangkat lunak dipergunakan. Pemeliharaan perangkat lunak mengaplikasikan lagi Setiap fase program sebelumnya dan tidak membuat yang baru. Kegiatan :
• Corrective Maintenance : Mengoreksi kesalahan pada perangkat lunak, yang baru terdeteksi pada saat perangkat lunak dipergunakan.
• Adaptive Maintenance : Penyesuaian dengan lingkungan baru, misalnya sistem operasi atau sebagai tuntutan atas perkembangan sistem komputer, misalnya penambahan printer driver
• Perfektive Maintenance : Bila perangkat lunak sukses dipergunakan oleh pemakai. Pemeliharaan ditujukan untuk menambah kemampuannya seperti memberikan fungsi-fungsi tambahan, peningkatan kinerja dan sebagainya
Model sekuensial adalah paradigm rekayasa perangkat lunak yang paling luas dipakai dan paling tua. Kelemahan model ini antara lain :
• Proyek yang sebenarnya jarang mengikuti alur sekuensial seperti diusulkan, sehingga perubahan yang terjadi dapat menyebabkan hasil yang sudah didapat tim harus diubah kembali/iterasi sering menyebabkan masalah baru.
• Linear sequential model mengharuskan semua kebutuhan pemakai sudah dinyatakan secara eksplisit di awal proses, tetapi kadang-kadang ini tidak dapat terlaksana karena kesulitan yang dialami pemakai saat akan mengungkapkan semua kebutuhannya tersebut.
• Pemakai harus bersabar karena versi dari program tidak akan didapat sampai akhir rentang waktu proyek.
• Adanya waktu menganggur bagi pengembang, karena harus menunggu anggota tim proyek lainnya menuntaskan pekerjaannya.

2. Model Prototype

Gb. Prototype paradigma
Model ini dimulai dengan pengumpulan kebutuhan. Pendekatan prototyping model digunakan jika pemakai hanya mendefenisikan objektif umum dari perangkat lunak tanpa merinci kebutuhan input, pemrosesan dan outputnya, sementara pengembang tidak begitu yakin akan efisiensi algoritma, adaptasi sistem operasi, atau bentuk antarmuka manusia-mesin yang harus diambil. Cakupan aktivitas dari prototyping model terdiri dari :
a. Mendefinisikan objektif secara keseluruhan dan mengidentifikasi kebutuhan yang sudah diketahui.
b. Melakukan perancangan secara cepat sebagai dasar untuk membuat prototype.
c. Menguji coba dan mengevaluasi prototype dan kemudian melakukan penambahan dan perbaikan-perbaikan terhadap prototype yang sudah dibuat.
secara ideal prototype berfungsi sebagai sebuah mekanisme untuk mengidentifikasi kebutuhan perangkat lunak. Bila prototype yang sedang bekerja dibangun, pengembang harus menggunakan fragmen-fragmen program yang ada atau mengaplikasikan alat-alat bantu (contoh: window manager, dsb) yang memungkinkan program yang bekerja agar dimunculkan secara cepat.
Kelemahan prototyping model :
a. Pelanggan yang melihat working version dari model yang dimintanya tidak menyadari, bahwa mungkin saja prototype dibuat terburu-buru dan rancangan tidak tersusun dengan baik
b. Pengembang kadang-kadang membuat implementasi sembarang, karena ingin working version bekerja dengan cepat.

3. Model RAD (Rapid Application Development)
Merupakan model proses pengembangan perangkat lunak secara linear sequential yang menekankan pada siklus pengembangan yang sangat singkat/pendek. Jika kebutuhan dipahami dengan baik, proses RAD memungkinkan tim pengembangan menciptakan “sistem fungsional yang utuh” dalam periode waktu yang sangat pendek (kira-kira 60-90 hari). Pendekatan RAD model menekankan cakupan :
a. Pemodelan bisnis (Bussiness Modelling)
Aliran informasi diantara fungsi-fungsi bisnis dimodelkan dengan suatu cara untuk menjawab pertanyaan-pertanyaan berikut : Informasi apa yang mengendalikan proses bisnis ? Kemana informasi itu pergi? Siapa yang memprosesnya ?
b. Pemodelan data (Data Modelling)
Aliran informasi yang didefinisikan sebagai bagian dari fase pemodelan bisnis disaring ke dalam serangkaian objek data yang dibutuhkan untuk menopang bisnis tersebut. Karakteristik/atribut dari masing-masing objek diidentifikasi dan hubungan antara objek-objek tersebut didefinisikan.
c. Pemodelan proses (Process Modelling)
Aliran informasi yang didefinisikan dalam fase pemodelan data ditransformasikan untuk mencapai aliran informasi yang perlu bagi implementasi sebuah fungsi bisnis. Gambaran pemrosesan diciptakan untuk menambah, memodifikasi, menghapus atau mendapatkan kembali sebuah objek data.
d. Pembuatan aplikasi (Application generation)
Selain menciftakan perangkat lunak dengan menggunakan bahasa pemrograman generasi ketiga yang konvensional, RAD lebih banyak memproses kerja untuk memakai lagi komponen program yang telah ada atau menciftakan komponen yang bias dipakai lagi. Pada semua kasus, alat-alat Bantu otomatis dipakai untuk memfasilitasi kontruksi perangkat lunak.
e. Pengujian dan pergantian (Testing and turnover)
Karena proses RAD menekankan pada pemakaian kembali, banyak komponen yang telah diuji. Hal ini mengurangi keseluruhan waktu pengujian. Tapi komponen baru harus diuji.

Gb. Model RAD

Kelemahan model RAD :
a. Untuk proyek dengan skala besar, RAD membutuhkan sumber daya manusia yang cukup untuk membentuk sejumlah tim RAD yang baik.
b. RAD membutuhkan pengembang dan pemakai yang mempunyai komitmen dalam aktivitas rapid-fire untuk melaksanakan aktivitas melengkapi sistem dalam kerangka waktu yang singkat. Jika komitmen tersebut tidak ada, proyek RAD gagal.
Tidak semua aplikasi sesuai untuk RAD.bila system tidak dapat dimodulkan dengan teratur, pembangunan komponen penting pada RAD akan menjadi sangat problematic. RAD menjadi tidak sesuai jika risiko teknisnya tinggi.

4. Model Proses Perangkat Lunak Evolusioner
Model evolusioner adalah model iterative, ditandai dengan tingkah laku yang memungkinkan perekayasa perangkat lunak mengembangkan versi perangkat lunak yang lebih lengkap sedikit demi sedikit. Kebutuhan produk dan bisnis kadang-kadang berubah seiring dengan laju perkembanganya. Dalam situasi tersebut maupun lainya, perekayasa perangkat lunak membutuhkan sebuah model proses yang sudah dirancang secara eksplisit untuk mengakomodasi produk perkembangan sepanjang waktu. Model ini bukan termasuk rekayasa perangkat lunak klasik. Model evolusioner meliputi :
a. Model pertambahan
Model incremental menggabungkan elemen-elemen model sekuensial linier (diaplikasikan secara berulang) dengan filosofi prototype iterative. Model ini memakai urutan-urutan linier di dalam model yang membingungkan, seiring dengan laju waktu kalender. Setiap urutan linier menghasilkan pertambahan, perangkat lunak “yang bisa disampaikan.” Contoh, perangkat lunak pengolah kata yang dikembangkan dengan menggunakan paradigm pertambahan akan menyampaikan manajemen file, editing, serta fungsi penghasilan dokumen pada pertambahan pertama, dan selanjutnya. Pertambahan pertama dapat disebut sebagai produk inti (core product).
Model ini berfokus pada penyampaian produk operasional dalam Setiap pertambahanya. Pertambahan awal ada di versi stripped down dari produk akhir, tetapi memberikan kemampuan untuk melayani pemakai dan juga menyediakan platform untuk evaluasi oleh pemakai.

Gb. Model Incremental
Perkembangan pertambahan, khususnya berguna pada staffing, tidak bisa dilakukan menggunakan implementasi lengkap oleh batas waktu bisnisyang sudah disepakati untuk proyek tersebut. jika produk inti diterima dengan baik, maka staf tambahan bisa ditambahkan untuk mengimplementasi pertambahan selanjutnya.
b. Model spiral
Awalnya diusulkan oleh Boehm (BOE88), adalah model proses perangkat lunak yang evolusioner, merangkai sifat iterative dari prototype dengan cara control dan aspek sistematis dari model sekuensial linier. Model yang berpotensi untuk pengembangan versi pertambahan perangkat lunak secara cepat. Model spiral dibagi menjadi sejumlah aktifitas kerangka kerja atau wilayah tugas, antara lain :
• Komunikasi pelanggan, tugas-tugas yang dibutuhkan untuk membangun komunikasi yang efektif diantara pengembang dan pelanggan.
• Perencanaan, tugas-tugas yang dibutuhkan untuk mendefinisikan sumber-sumber daya, ketepatan waktu, dan proyek informasi lain yang berhubungan.
• Analisis resiko, tugas-tugas yang dibutuhkan untuk menaksir resiko-resiko, baik manajemen maupun teknis.
• Perekayasaan, tugas-tugas yang dibutuhkan untuk membangun satu atau lebih representasi dari aplikasi tersebut.
• Konstruksi dan peluncuran, tugas-tugas yang dibutuhkan untuk mengkonstruksi, menguji, memasang (instal), dan memberikan pelayanan kepada pemakai (contohnya pelatihan dan dokumentasi)
• Evaluasi pelanggan, tugas-tugas untuk memperoleh umpan balik dari pelanggan dengan didasarkan pada evaluasi representasi perangkat lunak, yang dibuat selama masa perekayasaan, dan dimplementasikan selama masa pemasangan.

Model spiral menjadi pendekatan yang realistis bagi perkembangan system dan perangkat lunak skala besar. Karena perangkat lunak terus bekerja selama proses bergerak, pengembang dan pemakai memahami, dan bereaksi lebih baik terhadap resiko dari Setiap tingkat evolusi. Model spiral menggunakan prototype sebagai mekanisme pengurangan resiko.
Model spiral membutuhkan keahlian penafsiran resiko yang masuk akal, dan sangat bertumpu pada keahlian ini untuk mencapai keberhasilan. Jika sebuah resiko tidak dapat ditemukan dan diatur, pasti akan terjadi masalah. Model ini membutuhkan waktu bertahun-tahun sampai kehandalannya bisa dipertimbangkan dengan kepastian absolute.
c. Model rakitan komponen
Model ini menggabungkan beberapa karakteristik model spiral. Bersifat evolusioner, sehingga membutuhkan pendekatan iterative untuk menciptakan perangkat lunak. Tetapi model ini merangkai aplikasi dari komponen perangkat lunak sebelum dipaketkan (kadang disebut kelas).
Aktivitas perangkat lunak dimulai dengan identifikasi calon kelas. Dipenuhi dengan mengamati data yang akan dimanipulasi oleh aplikasi dan algoritma-algoritma yang akan diaplikasikan. Data dan algoritma yang berhubungan dikemas ke dalam kelas. Kelas-kelas tersebut disimpan dalam class library (tempat penyimpanan).
Model ini membawa pada penggunaan kembali perangkat lunak, dan kegunaan kembali itu memberi sejumlah keuntungan yang bisa diukur pada rekayasa perangkat lunak.
d. Model perkembangan konkruen
Representasi aktivitas dalam model ini, meliputi aktivitas analisis, bisa berada dalam salah satu dari keadaan-keadaan yang dicatat pada saat tertentu. Dengan cara yang sama, aktivitas yang lain (desain atau komunikasi pelanggan) dapat direpresentasikan dalam sebuah sikap yang analog. Semua aktifitas ada secara konkruen tetapi dia tinggal didalam keadaan yang berbeda. Model ini sering digunakan sebagai paradigm bagi pengembangan aplikasi klien/server.
Kenyataanya model proses konkruen bisa diaplikasikan ke dalam semua tipe perkembangan perangkat lunak, dan memberikan gambaran akurat mengenai keadaan tertentu dari sebuah proyek. Selain membatasi ajtivitas perekayasa ke dalam sederetan kejadian, model proses juga mendefinisikan jaringan aktivitas.

5. Model Formal
Model metode formal mencangkup sekumpulan aktivitas yang membawa kepada spesifikasi matematis perangkat lunak computer. Metode ini memungkinkan perekayasa perangkat lunak untuk mengkhususkan, mengembangkan, dan memverifikasi system berbasis computer dengan menggunakan notasi matematis yang tepat.variasi dalam pendekatan ini, disebut clean-room rekayasa perangkat lunak, sedang diaplikasikan oleh banyak organisasi pengembang perangkat lunak.
Bila metode formal dipakai selama masa pengembangan, maka akan memberikan mekanisme untuk mengeliminasi banyak masalah yang sulit dipecahkan menggunakan paradigm perangkat lunak yang lain. Ambiguitas, ketidaklengkapan, dan ketidak-konsitenan bisa ditemukan dan diperbaiki secara mudah, tidak melalui kajian ad hoc tetapi melalui aplikasi analisis matematis. Jika metode ini dipakai selama proses perancangan, maka berfungsi sebagai dasar bagi verifikasi program sehingga memungkinkan perekayasa untuk menemukan dan memperbaiki kesalahan yang mungkin saja tidak terdeteksi.
Metode formal akan banyak memperoleh penganut diantara pengembang perangkat lunak yang harus membangun perangkat lunak yang kritis untuk keselamatan (missal : pengembangan perangkat medis, dan penerbangan pesawat), serta diantara yang harus menderita karena faktor ekonomis yang harus dialami oleh perangkat lunak.

6. Fourth Generation Techniques (4GT)
Istilah generasi ke empat, mengarah ke perangkat lunak yang umum yaitu tiap pengembang perangkat lunak menentukan beberapa karakteristik perangkat lunak pada level tinggi. Saat ini pengembangan perangkat lunak yang mendukung 4GT, berisi tool-tool berikut : i) Bahasa non prosedural untuk query basis data; ii) Report generation; iii) Data manipulation ; iv) Interaksi layar ; v) Kemampuan grafik level tinggi ; vi) Kemampuan spreadsheet . Tiap tool ini ada tapi hanya untuk sauatu aplikasi khusus.
Menggunakan perangkat bantu (tools) yang akan membuat kode sumber secara otomatis berdasarkan spesifikasi dari pengembang perangkat lunak. Hanya digunakan untuk menggunakan perangkat lunak yang menggunakan bahasa khusus atau notasi grafik yang diselesaikan dengan syarat yang dimengerti pemakai. Cakupan aktivitas 4GT :
1. Pengumpulan kebutuhan, idealnya pelanggan akan menjelaskan kebutuhan yang akan ditranslasikan ke prototype operasional.
2. Translasi kebutuhan menjadi prototype operasional, atau langsung melakukan implementasi secara langsung dengan menggunakan bahasa generasi keempat (4GL) jika aplikasi relatif kecil.
3. Untuk aplikasi yang cukup besar, dibutuhkan strategi perancangan sistem walaupun 4GL akan digunakan.
4. Pengujian.
5. Membuat dokumentasi.
6. Melaksanakan seluruh aktivitas untuk mengintegrasikan solusi-solusi yang membutuhkan paradigma rekayasa perangkat lunak lainnya.

Salah satu keuntungan penggunaan model 4GT adalah pengurangan waktu dan peningkatan produktivitas secara besar, sementara kekurangannya terletak pada kesulitan penggunaan perangkat bantu (tools) dibandingkan dengan bahsa pemrograman, dan juga kode sumber yang dihasilkannya tidak efisien.
Untuk aplikasi yang yang kecil, adalah mungkin untuk langsung berpindah dari pengumpulan kebutuhan ke implementasi dengan menggunakan 4GL. Tapi untuk aplikasi yang besar, dibutuhkan pengembangan strategi desain untuk sistem, walau digunakan 4GL. Penggunaan 4GT tanpa perencanaan yang matang (untuk proyek skala besar) akan meyebabkan kesulitan yang sama (kualitas dan pemeliharaan yang jelek, ketidakpuasan pelanggan) seperti dengan metode konvensional.

DAFTAR PUSTAKA
Jauhari, Jaidan. ___.“Modul Rekayasa Perangkat Lunak.”__:__.pdf. http://heckerlaye.files.wordpress.com/2009/11/modul-rekayasa-perangkat-lunak.pdf
Pressman, Roger S. 2002.”Rekayasa Perangkat Lunak (Pendekatan Praktis).” Yogyakarta : Andi.

SUMBER : kinanth.googlecode.com/

tugas pengantar multimedia kompresi data

1.KOMPRESI DATA

kompresi data adalah sebuah cara untuk memadatkan data sehingga hanya memerlukan ruangan penyimpanan lebih kecil sehingga lebih efisien dalam menyimpannya atau mempersingkat waktu pertukaran data tersebut. Ada terdapat dua jenis pemampatan data, yaitu pemampatan tanpa kehilangan (lossless data compression) dan pemampatan berkehilangan (lossy data compression).

Pemampatan data tanpa kehilangan

Teknik ini mampu memadatkan data dan mengembalikannya sama persis seperti semula. Tidak ada informasi yang hilang atau harus dikurangi dalam proses untuk mengurangi ukuran besar data. Biasanya algoritma pemadatan data jenis ini menggunakan prinsip kelebihan statistik (statistical redundancy) supaya data bisa disimpan dengan lebih ringkas. Karena kebanyakan data yang dipakai sehari-hari memiliki bagian yang berulang atau berlebihan (redundant data), pemampatan tanpa kehilangan bisa terjadi.

Contoh mudahnya, apabila berkas gambar berukuran 256×256 berwarna polos (setiap pixel berwarna sama) dan tiap pixelnya berukuran 4 byte, tanpa pemadatan, berkas harus disimpan berukuran 4 kali 256×256, sama dengan 262144 byte. Namun, dengan pemadatan, maka data yang perlu disimpan hanyalah data satu warna tersebut dan informasi bahwa seluruh pixel gambar memiliki satu warna yang sama. Jadi, data yang perlu disimpan hanyalah 4 byte tambah beberapa byte untuk menandakan pengulangan pixel yang sama. Ingatlah ini hanya contoh yang simpel.

Pemadatan tanpa kehilangan memiliki batas rendah di mana berkas tidak bisa dipadatkan lebih jauh lagi. Teorem Shannon menunjukkan bahwa pemadatan data tidak bisa menghasilkan kadar kode yang lebih rendah daripada entropi Shannon berkas, tanpa menyebabkan kehilangan informasi. Maka, apabila suatu berkas sudah dipadatkan (misalnya, berkas gambar disimpan di berkas .zip), berkas .zip tersebut tidak bisa lagi dipadatkan.

Mengapa kompresi diperlukan pada data multimedia?

Ada empat pendekatan yang digunakan pada kompresi suatu data, yaitu:
1. Pendekatan statistik
Kompresi didasarkan pada frekuensi kemunculan derajat keabuan pixel didalam seluruh bagian.
Contoh metode : Huffman Coding.
2. Pendekatan ruang
Kompresi didasarkan pada hubungan spasial antara pixel-pixel di dalam suatu kelompok yang memiliki derajat keabuan yang sama dalam suatu daerah gambar atau data.
Contoh metode : Run-Length Encoding.
3. Pendekatan kuantisasi
Kompresi dilakukan dengan mengurangi jumlah derajat keabuan yang tersedia.
Contoh metode : kompresi kuantisasi (CS&Q).
4. Pendekatan fraktal
Kompresi dilakukan pada kenyataan bahwa kemiripan bagian-bagian didalam data atau citra atau gambar dapat dieksploitasi dengan suatu matriks transformasi.
Contoh metode : Fractal Image Compression.

Metode pemampatan data atau kompresi data dapat dikelompokan dalam dua kelompok besar, yaitu:

I. Metode lossless
Lossless data kompresi adalah kelas dari algoritma data kompresi yang memungkinkan data yang asli dapat disusun kembali dari data kompresi. Lossless data kompresi digunakan dalam berbagai aplikasi seperti format ZIP dan GZIP. Lossless juga sering digunakan sebagai komponen dalam teknologi kompresi data lossy. Kompresi Lossless digunakan ketika sesuatu yang penting pada kondisi asli. Beberapa format gambar sperti PNG atau GIF hanya menggunakan kompresi lossless, sedangkan yang lainnya sperti TIFF dan MNG dapat menggunakan metode lossy atau lossless.
Metode lossless menghasilkan data yang identik dengan data aslinya, hal ini dibutuhkan untuk banyak tipe data, contohnya: executable code, word processing files, tabulated numbers,dan sebagainya. Misalnya pada citra atau gambar dimana metode ini akan menghasilkan hasil yang tepat sama dengan citra semula, pixel per pixel sehingga tidak ada informasi yang hilang akibat kompresi. Namun ratio kompresi (Rasio kompresi yaitu, ukuran file yang dikompresi dibanding yang tak terkompresi dari file) dengan metode ini sangat rendah. Metode ini cocok untuk kompresi citra yang mengandung informasi penting yang tidak boleh rusak akibat kompresi, misalnya gambar hasil diagnosa medis. Contoh metode lossless adalah metode run-length, Huffman, delta dan LZW.

TEKNIK KOMPRESI LOSSLESS

Kebanyakan program kompresi lossless menggunakan dua jenis algoritma yang berbeda: yang satu menghasilkan model statistik untuk input data, dan yang lainnya memetakan data input ke rangkaian bit menggunakan model ini dengan cara bahwa “probable” data akan menghasilkan output yang lebih pendek dari “improbable” data. algoritma encoding yang utama yang dipakai untuk menghasilkan rangkaian bit adalah Huffman coding dan Aritmatik Coding.
II. Metode lossy
Lossy kompresi adalah suatu metode untuk mengkompresi data dan men-dekompresinya, data yang diperoleh mungkin berbeda dari yang aslinya tetapi cukup dekat perbedaaanya. Lossy kompresi ini paling sering digunakan untuk kompres data multimedia (Audio, gambar diam). Sebaliknya, kompresi lossless diperlukan untuk data teks dan file, seperti catatan bank, artikel teks dll.
Format kompresi lossy mengalami generation loss yaitu jika melakukan berulang kali kompresi dan dekompresi file akan menyebabkan kehilangan kualitas secara progresif. hal ini berbeda dengan kompresi data lossless. ketika pengguna yang menerima file terkompresi secara lossy (misalnya untuk mengurangi waktu download) file yang diambil dapat sedikit berbeda dari yang asli dilevel bit ketika tidak dapat dibedakan oleh mata dan telinga manusia untuk tujuan paling praktis.
Metode ini menghasilkan ratio kompresi yang lebih besar daripada metode lossless. Misal terdapat image asli berukuran 12,249 bytes, kemudian dilakukan kompresi dengan JPEG kualitas 30 dan berukuran 1,869 bytes berarti image tersebut 85% lebih kecil dan ratio kompresi 15%. Contoh metode lossy adalah metode CS&Q (coarser sampling and/or quantization), JPEG, dan MPEG.

Ada dua skema dasar lossy kompresi :
• Lossy transform codec, sampel suara atau gambar yang diambil, di potong kesegmen kecil, diubah menjadi ruang basis yang baru, dan kuantisasi. hasil nilai kuantisasi menjadi entropy coded
• Lossy predictive codec, sebelum dan/atau sesudahnya data di-decode digunakan untuk memprediksi sampel suara dan frame picture saat ini. kesalahan antara data prediksi dan data yang nyata, bersama-sama dengan informasi lain digunakan untuk mereproduksi prediksi, dan kemudian dikuantisasi dan kode.
Dalam beberapa sistem kedua teknik digabungkan, dengan mengubah codec yang digunakan untuk mengkompresi kesalahan sinyal yang dihasilkan dari tahapan prediksi

Ada berapa jenis kompresi data yang dapat digunakan pada tipe data multimedia?

Ada terdapat dua jenis kompresi data , yaitu kompresi tanpa kehilangan (lossless data compression) dan kompresi berkehilangan (lossy data compression)

Jelaskan perbedaan antara teknik kompresi lossy dan lossless, berikan contoh yang sesuai.

LOSSY Vs LOSSLESS

• Keuntungan dari metode lossy atas lossless adalah dalam bebeapa kasus metode lossy dapat menghasilkan file kompresi yang lebih kecil dibandingkan dengan metode lossless yang ada, ketika masih memenuhi persyaratan aplikasi.
• Metode lossy sering digunakan untuk mengkompresi suara, gambar dan video. karena data tersebut dimaksudkan kepada human interpretation dimana pikiran dapat dengan mudah “mengisi bagian-bagian yang kosong” atau melihat kesalahan masa lalu sangat kecil atau inkonsistensi-idealnya lossy adalah kompresi transparan, yg dapat diverifikasi dengan tes ABX. Sedangkan lossless digunakan untuk mengkompresi data untuk diterima ditujuan dalam kondisi asli seperti dokumen teks.
• Lossy akan mengalami generation loss pada data sedangkan pada lossless tidak terjadi karena data yang hasil dekompresi sama dengan data asli.

 

Klasifikasi Teknik Kompresi

  •   Entropy Encoding

Bersifat loseless

Tekniknya tidak berdasarkan media dengan spesifikasi dan karakteristik tertentu namun berdasarkan urutan data.

Statistical encoding, tidak memperhatikan semantik data.

Mis: Run-length coding, Huffman coding, Arithmetic coding

  •   Source Coding

Bersifat lossy

Berkaitan dengan data semantik (arti data) dan media.

Mis: Prediction (DPCM, DM), Transformation (FFT, DCT), Layered Coding (Bit position, subsampling, sub-band coding), Vector quantization

  • Hybrid Coding

Gabungan antara lossy + loseless

mis: JPEG, MPEG, H.261, DVI

Secara umum kompresi data terdiri dari dua kegiatan besar, yaitu Modeling dan Coding. Proses dasar dari kompresi data adalah menentukan serangkaian bagian dari data (stream of symbols) mengubahnya menjadi kode (stream of codes). Jika proses kompresi efektif maka hasil dari stream of codes akan lebih kecil dari segi ukuran daripada stream of symbols. Keputusan untuk mengindentikan symbols tertentu dengan codes tertentu adalah inti dari proses modeling. Secara umum dapat diartikan bahwa sebuah model adalah kumpulan data dan aturan yang menentukan pasangan antara symbol sebagai input dan code sebagai output dari proses kompresi. Sedangkan coding adalah proses untuk menerapkan modeling tersebut menjadi sebuah proses kompresi data.

I.Coding

Melakukan proses encoding dengan menggunakan ASCII atau EBDIC yang merupakan standar dalam proses komputasi memberikan kelemahan mendasar apabila dilihat dari paradigma kompresi data. ASCII dan EBDIC menggunakan jumlah bit yang sama untuk setiap karakter, hal ini menyebabkan banyak bit yang ”terbuang” untuk merepresentasikan karakter-karakter yang sebenarnya jarang muncul pada sebuah pesan.

Salah satu cara mengatasi permasalahan di atas adalah dengan menggunakan Huffman-coding. Huffman-coding yang dikembangkan oleh D.A. Huffman mampu menekan jumlah redundancy yang terjadi pada sebuah pesan yang panjangnya tetap. Huffman-coding bukanlah teknik yang paling optimal untuk mengurangi redundancy tetapi Huffman-coding merupakan teknik terbaik untuk melakukan coding terhadap symbol pada pesan yang panjangnya tetap. Permasalahan utama dengan Huffman-coding adalah hanya bisa menggunakan bilangan bulat untuk jumlah bit dari setiap code. Jika entropy dari karakter tersebut adalah 2,5 maka apabila melakukan pengkodean dengan Huffman-coding karakter tersebut harus terdiri dari 2 atau 3 bit. Hal tersebut membuat Huffman-coding tidak bisa menjadi algoritma paling optimal dalam mengatasi redundancy ini.

Huffman-coding memang kurang efisien karena untuk melakukan pengkodean kita harus menggunakan bilangan bulat. Walaupun demikian Huffman-coding sangat mudah digunakan dan sampai awal era 90-an di mana prosesor komputer masih sulit untuk melakukan komputasi bilangan pecahan Huffman-coding dianggap paling rasional untuk diaplikasikan pada proses kompresi data. Setelah kelahiran prosesor yang mampu melakukan operasi bilangan pecahan dengan cepat maka banyak algoritma coding baru bermunculan dan salah satunya adalah Arithmatic-coding.

Arithmatic coding lebih kompleks dan rumit dibandingkan Huffman-coding, tetapi di sisi lain Arithmatic-coding memberikan optimalisasi yang lebih tinggi. Arithmatic-coding memungkinkan jumlah bit dalam pecahan karena arithmatic coding tidak bekerja per karakter dari pesan tetapi langsung pada keseluruhan pesan. Misalnya entropy dari karakter e pada pesan adalah 1,5 bit maka pada output code pun jumlah bit-nya adalah 1,5 dan bukan 1 atau 2 seperti pada Huffman-coding.

ALGORITMA KOMPRESI DATA

Algoritma Shannon-Fano dan Algortima Huffman. Walaupun saat ini sudah bukan lagi proses coding yang menghasilkan kompresi paling optimal namun algoritma Shannon-Fano dan Algoritma Huffman adalah dua algoritma dasar yang sebaiknya dipahami oleh mereka yang mempelajari tentang kompresi data.

1. Algoritma Shannon-Fano

Teknik coding ini dikembangkan oleh dua orang dalam dua buah proses yang berbeda, yaitu Claude Shannon di Bell Laboratory dan R.M. Fano di MIT, namun karena memiliki kemiripan maka akhirnya teknik ini dinamai dengan mengggabungkan nama keduanya. Pada dasarnya proses coding dengan algoritma ini membutuhkan data akan frekuensi jumlah kemunculan suatu karakter pada sebuah pesan. Tiga prinsip utama yang mendasari algoritma ini adalah:

a.  Simbol yang berbeda memiliki kode yang berbeda

b. Kode untuk symbol yang sering muncul memiliki jumlah bit yang lebih sedikit dan  sebaliknya symbol yang jarang muncul memiliki kode dengan jumlah bit lebih besar.

c. Walaupun berbeda jumlah bit-nya tetapi kode harus tetap dikodekan secara pasti (tidak     ambigu).

Berikut adalah langka-langkah Algoritma Shannon-Fano :

1. Buatlah tabel yang memuat frekuensi kemunculan dari tiap karakter.

2. Urutkan berdasar frekuensi tersebut dengan karakter yang frekuensinya paling sering muncul berada di atas dari daftar (descending).

3. Bagilah 2 tabel tersebut dengan jumlah total frekuensi pada bagian atas mendekati jumlah total frekuensi pada bagian bawah (lihat tabel 3).

4. Untuk bagian paro atas berikan kode 0 dan pada paro bawah berikan kode

5. Ulangi langkah 3 dan 4 pada masing-masing paro tadi hingga seluruh symbol selesai dikodekan.

2. Algoritma Huffman

Algoritma Huffman memiliki kemiripan karakteristik dengan Algoritma Shannon-Fano. Masing-masing simbol dikodekan dengan deretan bit secara unik dan simbol yang paling sering muncul mendapatkan jumlah bit yang paling pendek. Perbedaan dengan Shannon-Fano adalah pada proses pengkodean. Jika algoritma Shannon-Fano membangun tree dengan pendekatan top-down, yaitu dengan memberikan bit pada tiap-tiap simbol dan melakukannya secara berurutan hingga seluruh leaf mendapatkan kode bit masing-masing. Sedangkan algoritma Huffman sebaliknyamemberikan kode mulai dari leaf secara berurutan hingga mencapai root.

Prosedur untuk membangun tree ini sederhana dan mudah dipahami. Masing-masing simbol diurutkan sesuai frekuensinya, frekuensi ini dianggap sebagai bobot dari tiap simbol, dan kemudian diikuti dengan langkah-langkah sebagai berikut:

1. Dua node bebas dengan bobot terendah dipasangkan.

2. Parent node untuk kedua node pada langkah sebelumnya dibuat. Jumlahkan frekuensi keduanya dan gunakan sebagai bobot.

3. Sekarang parent node berperan sebagai node bebas.

4. Berikan kode 0 untuk node kiri dan 1 untuk node kanan.

5. Ulangi langkah di atas sampai hanya tersisa satu node. Sisa satu node inilah yang disebut sebagai root.

II. Modeling

Jika coding adalah roda dari sebuah mobil maka modeling adalah mesinnya. Sebaik apapun algoritma untuk melakukan coding tanpa model yang baik kompresi data tidak akan pernah terwujud. Kompresi Data Lossless pada umumnya diimplementasikan menggunakan salah satu dari dua tipe modeling, yaitu statistical atau dictionary-based. Statistical-modeling melakukan prosesnya menggunakan probabilitas kemunculan dari sebuah symbol sedangkan dictionary-based menggunakan kode-kode untuk menggantikan sekumpulan symbol.

1. Statistical Modeling

Pada bentuk paling sederhananya, statistical-modeling menggunakan tabel statis yang berisi probabilitas kemunculan suatu karakter atau symbol. Tabel ini pada awalnya bersifat universal, sebagai contoh pada bahasa Inggris karakter yang paling sering muncul adalah huruf “e” maka karakter ini memiliki 9 probabilitas tertinggi pada file teks yang berbahasa Inggris.

Menggunakan tabel universal pada akhirnya tidak memuaskan para ahli kopresi data karena apabila terjadi perubahan pada subyek yang dikompresi dan tidak sesuai dengan tabel universal maka akan terjadi penurunan rasio kompresi secara signifikan. Akhirnya muncul modeling dengan menggunakan tabel yang adaptif, di mana tabel tidak lagi bersifat statis tetapi bisa berubah sesuai dengan kode. Pada prinsipnya dengan model ini, sistem melakukan penghitungan atau scan pada keseluruhan data setelah itu barulah membangun tabel probabilitas kemunculan dari tiap karakter atau symbol.

Model ini kemudian dikembangkan lagi menjadi adaptive statistical modeling di mana sistem tidak perlu melakukan scan ke seluruh symbol untuk membangun tabel statistik, tetapi secara adaptif melakukan perubahan tabel pada proses scan karakter per karakter.

2. Dictionary Based Modeling

buat kodenya maka dictionary-based modeling menggunakan mekanisme yang berbeda. Dictionary-based modeling membaca input data dan membandingkannya dengan isi dictionary. Jika sekumpulan string sesuai dengan isi dictionary maka indeks dari dictionary entry lah yang dikeluarkan sebagai output dan bukan kodenya. Sebagai perumpamaan dari dictionary-based dapat digunakan makalah ilmiah sebagai contoh. Saat kita membaca makalah ilmiah kita sering membaca nomor-nomor referensi yang bisa kita cocokkan dengan daftar pustaka di belakang. Hal ini mirip dengan proses pada dictionary-based modeling.à hitung probabilitas àJika statistical model pada umumnya melakukan proses encode simbol satu per satu mengikuti siklus: baca karakter

PERBANDINGAN ALGORITMA PADA KOMPRESI DATA

Symbol Jumlah Kode

Shannon

Fano

Kode

Huffman

Ukuran

Shannon-

Fano

Jumlah

Bit

Shannon-

Fano

Ukuran

Hufman

Jumlah

Bit

Huffman

A 15 00 0 2 30 1 15
B 7 01 100 2 14 3 21
C 6 10 101 2 12 3 18
D 6 110 110 3 18 3 18
E 5 111 111 3 15 3 15
TOTAL BIT 89 87

KESIMPULAN

Berdasarkan penjelasan di atas, kita dapat menyimpulkan bahwa Kompresi Data dapat mempermudahkan dalam hal penyimpanan file yang begitu besar. Dan media penyimpanan kita bisa menampung data sebanyak- banyaknya.

REFERENSI

Nelson, M., Gailly, J.L., The Data Compression Book, Second Edition. M&T Books, New

York, 1996

www.google.com

www.wikipedia.com

 

Selamat Menulis

Selamat Datang di Dunia Blog, dan selamat menulis…

Pengelola blog kembali mengingatkan akan peraturan pemakaian Blog Universitas Widyatama Bandung adalah sebagai berikut :

  1. Blog ini merupakan milik Universitas Widyatama termasuk didalamnya seluruh sub domain yang digunakan sehingga apa yang terdapat didalam blog ini secara umum akan mengikuti aturan dan kode etik yang ada di Universitas Widyatama Bandung.
  2. Blog ini dibuat dengan menggunakan aplikasi pihak ke tiga (WordPress), dan lisensi plugin plugin didalamnya terikat terhadap developer pembuat plugin tersebut.
  3. Blog ini dapat digunakan oleh Karyawan, Dosen dan Mahasiswa Universitas Widyatama Bandung.
  4. Dilarang melakukan registrasi username atau site/subdomain blog dengan menggunakan kata yang tidak pantas.
  5. Dilarang memasukkan konten dengan unsur SARA, pornografi, pelecehan terhadap seseorang ataupun sebuah institusi.
  6. Dilarang menggunakan blog ini untuk melakukan transaksi elektronik dan pemasangan iklan.
  7. Usahakan sebisa mungkin untuk melakukan embed video atau gambar di bandingkan dengan melakukan upload secara langsung pada server.
  8. Pelanggaran yang dilakukan akan dikenakan sanksi penutupan blog dan atau sanksi yang berlaku pada aturan Universitas Widyatama sesuai dengan jenis pelanggaran yang dilakukan.
  9. Administrator berhak melakukan pembekuan account tanpa pemberitahuan terlebih dahulu jika dianggap ada hal hal yang melanggar peraturan.
  10. Aturan yang ada dapat berubah sewaktu waktu.

Beberapa Link terkait Universitas Widyatama

  1. Fakultas Ekonomi - http://ekonomi.widyatama.ac.id
  2. Fakultas Bisnis & Manajemen – http://manajemen.widyatama.ac.id
  3. Fakultas Teknik – http://teknik.widyatama.ac.id
  4. Fakultas Desain Komunikasi Visual – http://dkv.widyatama.ac.id
  5. Fakultas Bahasa – http://bahasa.widyatama.ac.id

Layanan Digital Universitas Widyatama

  1. Biro Akademik – http://akademik.widyatama.ac.id
  2. Rooster Kuliah – http://rooster.widyatama.ac.id
  3. Portal Mahasiswa – http://mhs.widyatama.ac.id
  4. Portal Dosen – http://dosen.widyatama.ac.id
  5. Digital Library – http://dlib.widyatama.ac.id
  6. eLearning Portal – http://learn.widyatama.ac.id
  7. Dspace Repository – http://repository.widyatama.ac.id
  8. Blog Civitas UTama – http://blog.widyatama.ac.id
  9. Email – http://email.widyatama.ac.id
  10. Penerimaan Mahasiswa Baru – http://pmb.widyatama.ac.id/online

Partner UTama

  1. Putra International College – http://www.iputra.edu.my
  2. Troy University – http://www.troy.edu
  3. Aix Marsielle Universite – http://www.univ-amu.fr
  4. IAU – http://www.iau-aiu.net/content/institutions#Indonesia
  5. TUV – http://www.certipedia.com/quality_marks/9105018530?locale=en
  6. Microsoft – https://mspartner.microsoft.com/en/id/Pages/index.aspx
  7. Cisco – http://www.cisco.com/web/ID/index.html
  8. SAP – http://www.sap.com/asia/index.epx
  9. SEAAIR – http://www.seaair.au.edu

Academic Research Publication

  1. Microsoft Academic  -  http://academic.research.microsoft.com/Organization/19057/universitas-widyatama?query=universitas%20widyatama
  2. Google Scholar – http://scholar.google.com/scholar?hl=en&q=Universitas+Widyatama&btnG=

Info Web Rangking

  1. Webometric – http://www.webometrics.info/en/detalles/widyatama.ac.id
  2. 4ICU – http://www.4icu.org/reviews/10219.html