4
BAB II TINJAUAN PUSTAKA 2.1 Gambar Digital Gambar digital merupakan suatu matriks dimana indeks baris dan kolomnya menyatakan suatu titik pada gambar tersebut dan elemen matriksnya menyatakan tingkat keabuan pada titik tersebut (Sutoyo dan Mulyanto, 2009). Pixel merupakan elemen terkecil dari suatu gambar, yakni berupa titik-titik warna yang membentuk gambar. Pada gambar digital berbagai macam pengolahan gambar dapat dilakukan terhadap gambar tersebut. Salah satu operasi pada pengolahan gambar yang diterapkan pada gambar adalah menyembunyikan data rahasia pada gambar sehingga keberadaan data rahasia tersebut tidak diketahui (steganografi). Komputer digital hanya dapat memproses gambar dalam bentuk digital.
2.1.1 Representasi Gambar Digital Sebuah gambar digital dapat direpresentasikan dalam bentuk matriks yang terdiri dari M kolom dan N baris, di mana perpotongan antara kolom dan baris disebut pixel (Sutoyo dan Mulyanto, 2009). Pixel mempunyai dua parameter, yaitu koordinat dan intensitas atau warna. Nilai yang terdapat pada koordinat (x,y) adalah f(x,y), yaitu besar intensitas atau warna dari piksel di titik itu. Oleh sebab itu , sebuah gambar digital dapat ditulis dalam bentuk matriks berikut : f (0,0) f (1,0) f ( N 1,0)
f (0,1)
f ( N 1,1)
f (0, M 1)
f (1, M 1) f ( N 1, M 1)
Berdasarkan gambaran tersebut, secara matematis gambar digital dapat dituliskan sebagai fungsi intensitas f(x,y), di mana harga x (baris) dan y (kolom) merupakan koordinat posisi dan f(x,y) adalah nilai fungsi pada setiap titik (x,y) yang menyatakan besar intensitas gambar atau tingkat keabuan atau warna dari pixel di titik tersebut.
5
2.1.2
Warna pada Gambar Digital Gambar digital memiliki beberapa jenis cara pewarnaan. Tiap jenis
pewarnaan ini memiliki karakteristik masing-masing. Jenis pewarnaan ini memberikan pengaruh pada gambar digital sehingga memiliki jumlah warna yang berbeda (perbedaan kualitas warna) dan pengaruh pada ukuran dokumen. Berikut adalah jenis-jenis pewarnaan pada gambar digital (Sutoyo dan Mulyanto, 2009) : 1. Monochrome (Hitam dan Putih) Monochrome ini disebut juga dengan warna 1-bit, karena setiap piksel hanya membutuhkan 1 bit untuk menyimpan warna piksel tersebut. Karena mode warna ini hanya menyimpan informasi kedalaman bit (bit depth) warna sebesar 1 bit, maka warna yang bisa ditampilkan hanya dua warna saja. Warna yang akan ditampilkan adalah warna hitam dan putih. Dengan penggunaan warna 1-bit, maka kualitas gambar pada citra digital tidak begitu bagus. Sebuah gambar yang menggunakan warna 1-bit sangat sederhana karena memiliki ukuran file yang jauh lebih kecil dibandingkan dengan penggunaan sistem warna lainnya. 2. Grayscale Graysacale adalah warna–warna piksel yang berada dalam rentang gradasi warna hitam dan putih. Graysacale menyimpan informasi bit depth warna sebesar 8 bit. Jadi warna yang bisa ditampilkan pada mode warna grayscale berjumlah sampai 256, dalam hal ini nilai 0 menyatakan hitam dan 255 menyatakan putih, nilai antara 0 sampai 255 menyatakan warna keabuan yang terletak antara hitam dan putih. Dengan penggunaan warna 8-bit ini maka ukuran dokumennya pun otomatis menjadi semakin besar dibandingkan dengan warna 1-bit. 3. Indexed color Indexed color merupakan citra digital berwarna yang menghasilkan gambar dengan warna maksimal terdiri atas 256 warna dan 256 warna tersebut didefenisikan ke dalam tabel warna. Nilai bit pada indexed color merupakan penunjuk (pointer) menuju tabel warna. 4. Red Green Blue (RGB) Dengan menggunakan pewarnaan ini, bit-bit pembentuk piksel merupakan perwakilan dari setiap elemen pembentuk warna yaitu merah, hijau dan biru.
6
Jumlah bit yang digunakan pada warna RGB sangat beragam, di antaranya adalah 16-bit, 24-bit dan 32-bit. Semakin banyak jumlah bit yang merepresentasikan warna, maka kualitas warna tersebut semakin baik.
2.2 Pixel Agar gambar dapat diolah oleh sebuah komputer digital, maka sebuah gambar harus disimpan pada format yang dapat diolah oleh sebuah program komputer. Cara yang paling praktis yang dapat dilakukan adalah dengan membagai gambar menjadi sekumpulan sel-sel diskret, yang disebut piksel. Pada umumnya sebuah gambar dibagi menjadi kisi-kisi persegi, sehingga piksel sendiri adalah sebuah kisi-kisi persegi yang kecil. Selanjutnya setiap piksel diberi nilai yang menyatakan warna atau menyatakan tingkat kecerahan piksel yang bersangkutan, yang sering disebut dengan intensitas piksel.
2.3 Gambar Grayscale Dalam komputasi, suatu gambar digital grayscale adalah suatu gambar dimana nilai dari setiap pixel merupakan sample tunggal. Gambar yang ditampilkan dari gambar jenis ini terdiri atas warna abu-abu, bervariasi pada warna hitam pada bagian yang intensitas terlemah dan warna putih pada intensitas terkuat. Gambar grayscale berbeda dengan gambar ”hitam-putih”, dimana pada konteks komputer, gambar hitam putih hanya terdiri atas 2 warna saja yaitu ”hitam” dan ”putih” saja. Pada gambar grayscale warna bervariasi antara hitam dan putih, tetapi variasi warna diantaranya sangat banyak. Gambar grayscale seringkali merupakan perhitungan dari intensitas cahaya pada setiap pixel pada spektrum elektromagnetik single band . Gambar grayscale disimpan dalam format 8 bit untuk setiap sample pixel, yang memungkinkan sebanyak 256 intensitas. Format ini sangat membantu dalam pemrograman karena manupulasi bit yang tidak terlalu banyak.
7
Gambar 2.1 Gambar Grayscale
2.4 BMP (Bitmap) File gambar dengan format .bmp (bitmap) adalah salah satu format standar yang digunakan dalam sistem operasi Windows (Hanif Al Fatta, 2007). File ini biasanya disimpan dengan ekstensi .bmp. Terjemahan bebas dari bitmap adalah pemetaan bit. Artinya, nilai intensitas pixel di dalam gambar dipetakan ke sejumlah bit tertentu. Peta bit yang umum adalah 8, artinya setiap pixel panjangnya 8 bit. Delapan bit ini merepresentasikan nilai intensitas pixel. Dengan demikian ada sebanyak 28 = 256 derajat keabuan, mulai dari 0 sampai 255. Pada gambar berformat .bmp pixel gambar disimpan dengan kedalaman warna 1, 4, 8, 16, 24 bit per pixel. Jumlah warna maksimum yang dapat disimpan dalam suatu bitmap adalah sebanyak 2n, dimana n adalah banyaknya bit yang digunakan untuk menyimpan satu titik dari bitmap. Pada umumnya gambar bitmap terdiri dari 4 blok data yaitu: BMP header, Bit Information (DIB header), Color Palette, dan Bitmap Data. BMP header berisi informasi umum dari gambar bitmap. Blok ini berada pada bagian awal file gambar dan digunakan untuk mengidentifikasi gambar. Beberapa aplikasi pengolah gambar digital akan membaca blok ini untuk memastikan bahwa gambar tersebut berformat bitmap dan tidak dalam kondisi rusak. Bit information berisi informasi detail dari gambar bitmap, yang akan digunakan untuk menampilkan gambar pada layar. Color palette berisi informasi warna yang digunakan untuk indeks warna bitmap, dan bitmap data berisi data citra yang sebenarnya, pixel per pixel. Gambar dalam format .bmp ada tiga macam : gambar biner, gambar berwarna, dan gambar hitam-putih (grayscale). Gambar biner hanya mempunyai
8
dua nilai keabuan, yaitu 0 dan 1. Oleh karena itu, 1 bit sudah cukup untuk merepresentasikan nilai pixel. Gambar berwarna adalah gambar yang lebih umum. Warna yang terlihat pada gambar bitmap merupakan kombinasi dari tiga warna dasar, yaitu merah, hijau, dan biru. Setiap pixel disusun oleh tiga komponen warna : R (Red), G (Green), dan B (Blue). Kombinasi dari tiga warna RGB tersebut menghasilkan warna yang khas untuk pixel yang bersangkutan. Nilai setiap pixel tidak menyatakan derajat keabuan secara langsung, tetapi nilai pixel menyatakan indeks tabel RGB yang membuat nilai keabuan merah (R), nilai keabuan hijau (G), dan nilai keabuan biru (B) untuk pixel yang bersangkutan. Pada gambar hitam-putih, nilai R = G = B untuk menyatakan bahwa gambar hitam-putih hanya mempunyai satu kanal warna. Gambar hitam-putih umumnya adalah citra 8-bit. Gambar yang lebih kaya warna adalah citra 24-bit. Setiap pixel panjangnya 24 bit, karena setiap pixel langsung menyatakan komponen warna merah, komponen warna hijau, dan komponen warna biru. Masing-masing komponen panjangnya 8 bit. Gambar 24-bit disebut juga gambar 16 juta warna, karena ia mampu menghasilkan 224 = 16.777.216 kombinasi warna.
2.5 Kompresi Data Kompresi data adalah metode yang dilakukan untuk mereduksi ukuran data atau file. Istilah kompresi tersebut diterjemahkan dari kata bahasa Inggris “compression” yang berarti pemampatan. Dalam bidang teknik, kompresi berarti proses pemampatan sesuatu yang berukuran besar sehingga menjadi kecil. Dengan demikian, kompresi data berarti proses untuk pemampatan data agar ukurannya menjadi lebih kecil. Dengan melakukan kompresi dapat mengurangi waktu transmisi saat data dikirim, dan tidak banyak menghabiskan ruang media penyimpanan. Seiring dengan bertambahnya waktu, ukuran file di dalam media penyimpanan akan semakin bertambah. Hal ini disebabkan karena semakin bertambahnya informasi yang disimpan dalam file ataupun penambahan program aplikasi baru di dalam komputer. Sementara kapasitas media penyimpanan pada
9
komputer adalah bersifat tetap, sehingga user akan mengalami masalah dengan ruang kosong (free space) yang semakin kecil. Untuk mengatasi masalah kapasitas penyimpanan, sangat penting bagi user untuk menjaga agar ruang kosong hard disk tetap optimal. Salah satu cara yang dapat dilakukan adalah dengan mengkompresi file data. Seiring itu, memasuki era internet, transfer file merupakan hal yang umum dilakukan oleh user. Transfer file dalam jaringan yang dapat dilakukan oleh user yaitu proses download (men-transfer suatu file dari komputer remote ke komputer yang meminta proses pengiriman melalui jaringan) dan upload (men-transfer file dari komputer lokal ke komputer remote). Bila file yang hendak ditransfer berukuran besar, maka dapat menyebabkan data kongesti, yaitu dalam keadaan dimana informasi yang hendak ditransfer lebih besar daripada yang dapat dibawa oleh jalur komunikasi. Untuk meminimalisasi ukuran file yang hendak di-transfer dapat dilakukan dengan cara kompresi yaitu file yang hendak di-transfer diperkecil ukurannya terlebih dahulu. Dengan teknik kompresi, file yang besar dapat diperkecil sedemikian rupa sehingga menghemat tempat namun masih dapat dikembalikan ke bentuk original ketika diperlukan. Kompresi berguna ketika hendak memadatkan sejumlah besar file ke dalam tempat penyimpanan atau hendak memperkecil waktu ketika hendak menyalin atau mentransmisi file melalui jaringan. Beberapa teknik kompresi data yang telah banyak digunakan adalah Bit Mapping, Half byte packing, Diatomic Encoding, Huffman, Arithmatic Encoding, Run Length Encoding. (Munir Rinaldi, 2005). Secara garis besar, terdapat 2 buah penggolongan algoritma kompresi data kompresi lossy, dan kompresi lossless. a. Kompresi Lossy Algoritma kompresi dikatakan lossy atau disebut juga irreversible jika tidak dimungkinkan untuk membentuk data asli yang tepat sama dari data yang sudah dikompresi. Ada beberapa detail yang hilang selama proses kompresi. Contoh penggunaan algoritma lossy seperti pada data gambar, suara dan video. Karena cara kerja sistem pengelihatan dan pendengararn manusia yang terbatas,
10
beberapa detail dapat dihilangkan, sehingga didapat data hasil kompresi yang seolah-olah sama dengan data asli. b. Kompresi Lossless Algoritma kompresi dikatakan lossless atau disebut juga reversible jika dimungkinkan untuk membentuk data asli yang tepat sama dari data yang sudah dikompresi. Tidak ada informasi yang hilang selama proses kompresi dan dekompresi. Teknik ini digunakan jika data tersebut sangat penting, jadi tidak di mungkinkan untuk menghilangkan beberapa detail. 2.6 Dekompresi Sebuah data yang sudah dikompres tentunya harus dapat dikembalikan lagi kebentuk aslinya, prinsip ini dinamakan dekompresi. Untuk dapat merubah data yang terkompres diperlukan cara yang berbeda seperti pada waktu proses kompres dilaksanakan. Jadi pada saat dekompres terdapat catatan header yang berupa byte-byte yang berisi catatan mengenai isi dari file tersebut. Catatan header akan menuliskan kembali mengenai isi dari file tersebut, jadi isi dari file sudah tertulis oleh catatan header sehingga hanya tinggal menuliskan kembali pada saat proses dekompresi. Proses dekompresi dikatakan sempurna apabila file kembali kebentuk aslinya. (Munir Rinaldi, 2005).
2.7 Algoritma Kompresi Huffman Algoritma Huffman adalah salah satu algoritma kompresi yang sudah cukup tua tetapi tetap dinilai sebagai salah satu algoritma kompresi data yang handal. Algoritma Huffman merupakan salah satu teknik kompresi dengan cara melakukan pengkodean dalam bentuk bit untuk mewakili data karakter. Algoritma Huffman ini pertama kali diterbitkan pada tahun 1952 oleh David Huffman dalam paper-nya yang berjudul “A Method for the Construction of Minimum Redundancy Codes”. Secara umum, algoritma ini dapat memberikan penghematan sebesar 20%-30%. Algoritma Huffman termasuk jenis kompresi ‘lossless’. Lossless artinya bahwa kompresi dilakukan tanpa kehilangan informasi (yaitu pada proses dekompresi menghasilkan file sebenarnya). Kelebihan algoritma ini terletak pada kebanyakan file data mengandung redundansi.
11
Huffman menemukan cara untuk memanfaatkan redundansi pada suatu file sehingga mengecilkan ukuran file tanpa kehilangan informasi yang terkandung di dalamnya. Pengertian redundansi dalam algoritma Huffman mengacu pada perulangan karakter tertentu lebih dari satu kali dalam suatu dokumen. Algoritma ini menggunakan suatu variabel sebagai representasi biner untuk setiap karakter dalam suatu dokumen, dengan memberikan biner yang terpendek dan karakter dengan frekuensi yang lebih jarang muncul sebagai representasi biner yang terpanjang. Cara ini dapat mengurangi ukuran file secara signifikan karena representasi konvensional dari karakter menggunakan panjang yang sama untuk setiap karakter, sehingga menghabiskan banyak tempat. (Wardoyo Irwan dkk, 2005) Berdasarkan tipe peta kode yang digunakan untuk mengubah pesan awal (isi data yang diinputkan) menjadi sekumpulan codeword, algoritma Huffman termasuk kedalam kelas algoritma yang menggunakan metode statik . Metode statik adalah metoda yang selalu menggunakan peta kode yang sama, metoda ini membutuhkan dua fase (two-pass): fase pertama untuk menghitung probabilitas kemunculan tiap simbol dan menentukan peta kodenya, dan fase kedua untuk mengubah pesan menjadi kumpulan kode yang akan di taransmisikan. Sedangkan berdasarkan teknik pengkodean simbol yang digunakan, algoritma Huffman menggunakan metode symbolwise. Metoda symbolwise adalah metode yang menghitung peluang kemunculan dari setiap simbol dalam satu waktu, dimana simbol yang lebih sering muncul diberi kode lebih pendek dibandingkan simbol yang jarang muncul.
2.7.1 Pembentukan Pohon Huffman Kode Huffman pada dasarnya merupakan kode prefiks (prefix code). Kode prefiks adalah himpunan yang berisi sekumpulan kode biner, dimana pada kode prefik ini tidak ada kode biner yang menjadi awal bagi kode biner yang lain. Kode prefiks biasanya direpresentasikan sebagai pohon biner yang diberikan nilai atau label. Untuk cabang kiri pada pohon biner diberi label 0, sedangkan pada cabang kanan pada pohon biner diberi label 1. Rangkaian bit yang terbentuk pada setiap
12
lintasan dari akar ke daun merupakan kode prefiks untuk karakter yang berpadanan. Pohon biner ini biasa disebut pohon Huffman. Langkah-langkah pembentukan pohon Huffman adalah sebagai berikut : 1. Baca semua karakter di dalam teks untuk menghitung frekuensi kemunculan setiap karakter. Setiap karakter penyusun teks dinyatakan sebagai pohon bersimpul tunggal. Setiap simpul di-assign dengan frekuensi kemunculan karakter tersebut. 2. Terapkan strategi algoritma greedy sebagai berikut : Gabungkan dua buah pohon yang mempunyai frekuensi terkecil pada sebuah akar. Setelah digabungkan akar tersebut akan mempunyai frekuensi yang merupakan jumlah dari frekuensi dua buah pohon-pohon penyusunnya. 3. Ulangi langkah 2 sampai hanya tersisa satu buah pohon Huffman. Agar pemilihan dua pohon yang akan digabungkan berlangsung cepat, maka semua yang ada selalu terurut menaik berdasarkan frekuensi. Sebagai contoh, dalam kode ASCII string 7 huruf “ABACCDA” membutuhkan representasi 7 × 8 bit = 56 bit (7 byte), dengan rincian sebagai berikut : A = 01000001 B = 01000010 A = 01000001 C = 01000011 C = 01000011 D = 01000100 A = 01000001 Pada string di atas, frekuensi kemunculan A = 3, B = 1, C = 2, dan D = 1. Untuk lebih jelas mengenai proses pembentukkan pohon hufman, dapat dilihat ilustrasi pembuatan pohonnya dibawah ini : 1.
13
2.
3.
BDC : 4 0
1
C:2
BD : 2 0
1
B:1
D:1
4. ABDC : 7 0
1
A:3
BDC : 4 0
1
C:2
BD : 2 0 B:1
1 D:1
Gambar 2.2 Pohon Huffman untuk Karakter “ABACCDA”
2.7.2 Proses Encoding Encoding adalah cara menyusun string biner dari teks yang ada. Proses encoding untuk satu karakter dimulai dengan membuat pohon Huffman terlebih dahulu. Setelah itu, kode untuk satu karakter dibuat dengan menyusun nama string biner yang dibaca dari akar sampai ke daun pohon Huffman.
14
Langkah-langkah untuk men-encoding suatu string biner adalah sebagai berikut : 1. Tentukan karakter yang akan di-encoding 2. Mulai dari akar, baca setiap bit yang ada pada cabang yang bersesuaian sampai ketemu daun dimana karakter itu berada 3. Ulangi langkah 2 sampai seluruh karakter di-encoding. Sebagai contoh kita dapat melihat table dibawah ini, yang merupakan hasil encoding untuk pohon Huffman pada gambar 2.2 : Tabel 2.2 Kode Huffman untuk Karakter “ABCD” Karakter
Frekuensi
Peluang
Kode Huffman
A
3
3/7
0
B
1
1/7
110
C
2
2/7
10
D
1
1/7
111
Dengan
menggunakan
kode
Huffman
ini,
string
“ABACCDA”
direpresentasikan menjadi rangkaian bit : 0 110 0 10 10 111 0. Jadi, jumlah bit yang dibutuhkan hanya 13 bit dari yang seharusnya dibutuhkan 56 bit.
2.7.3 Proses Decoding Decoding merupakan kebalikan dari encoding. Decoding berarti menyusun kembali data dari string biner menjadi sebuah karakter kembali. Decoding dapat dilakukan dengan dua cara, yang pertama dengan menggunakan pohon Huffman dan yang kedua dengan menggunakan tabel kode Huffman. Langkah-langkah men -decoding suatu string biner dengan menggunakan pohon Huffman adalah sebagai berikut : 1. Baca sebuah bit dari string biner. 2. Mulai dari akar 3. Untuk setiap bit pada langkah 1, lakukan traversal pada cabang yang bersesuaian.
15
4. Ulangi langkah 1, 2 dan 3 sampai bertemu daun. Kodekan rangkaian bit yang telah dibaca dengan karakter di daun. 5. Ulangi dari langkah 1 sampai semua bit di dalam string habis. Sebagai contoh kita akan men-decoding string biner yang bernilai ”111”
ABDC : 7 0
1
A:3
BDC : 4 0
1
C:2
BD : 2 0
B:1
1
D:1
Gambar 2.3 Proses Decoding dengan Menggunakan Pohon Huffman Setelah kita telusuri dari akar, maka kita akan menemukan bahwa string yang mempunyai kode Huffman “111” adalah karakter D. Cara yang kedua adalah dengan menggunakan tabel kode Huffman. Sebagai contoh kita akan menggunakan kode Huffman pada Tabel 2.1 untuk merepresentasikan string “ABACCDA”. Dengan menggunakan Tabel 2.1 string tersebut akan direpresentasikan menjadi rangkaian bit : 0 110 0 10 10 1110. Jadi, jumlah bit yang dibutuhkan hanya 13 bit. Dari Tabel 2.1 tampak bahwa kode untuk sebuah simbol/karakter tidak boleh menjadi awalan dari kode symbol yang lain guna menghindari keraguan (ambiguitas) dalam proses dekompresi atau decoding. Karena tiap kode Huffman yang dihasilkan unik, maka proses decoding dapat dilakukan dengan mudah. Contoh : saat membaca kode bit pertama dalam rangkaian bit “011001010110”, yaitu bit “0”, dapat langsung disimpulkan bahwa kode bit “0” merupakan pemetaan dari simbol “A”. Kemudian baca kode bit selanjutnya, yaitu bit “1”. Tidak ada kode Huffman “1”, lalu baca kode bit selanjutnya, sehingga menjadi “11”. Tidak ada juga kode Huffman “11”, lalu baca
16
lagi kode bit berikutnya, sehingga menjadi “110”. Rangkaian kode bit “110” adalah pemetaan dari simbol “B”.
2.8 Siklus Hidup Pengembangan Sistem Lima fase dasar SDLC (System Development Life Cycle) antara lain adalah perencanaan, analisis, perancangan, implementasi serta pemeliharaan dan dukungan. Tahap perencanaan meliputi identifikasi masalah dan penentuan tujuan. Sedangkan pada tahap analisis, mulai dilakukan analisis terhadap kebutuhan sistem. Tahap berikutnya adalah tahap perancangan dimana pada tahap ini mulai dilakukan perancangan terhadap sistem yang akan dibuat kemudian dilanjutkan dengan tahap implementasi yaitu mengimplementasikan rancangan yang telah dibuat sebelumnya. Tahap implementasi juga meliputi pengujian dan instalasi, kemudian tahap berikutnya setelah implementasi adalah pemeliharaan dan dukungan. (Marchewka, 2010).
Planning
Analysis
Design
Implementa tion
Maintenance & support
Gambar 2.4 System Development Life Cycle (Sumber: Marchhewka,2010)
2.9 Bahasa Pemrograman Delphi Delphi
adalah
sebuah bahasa
pemrograman
dan
lingkungan
pengembangan perangkat lunak. Produk ini dikembangkan oleh CodeGear sebagai divisi pengembangan perangkat lunak milik Embarcadero, divisi tersebut sebelumnya adalah milik
Borland. Bahasa Delphi, atau dikenal pula
sebagai object pascal (pascal dengan ekstensi pemrograman berorientasi objek (PBO/OOP)) pada mulanya ditujukan hanya untuk Microsoft Windows, namun saat ini telah mampu digunakan untuk mengembangkan aplikasi untuk Linux dan Microsoft.NET framework (lihat di bawah). Dengan menggunakan Free
17
Pascal yang merupakan proyek opensource, bahasa ini dapat pula digunakan untuk membuat program yang berjalan di sistem operasi Mac OS X dan Windows CE. Pada tanggal 8 Februari 2006, Borland mengumumkan akan melepas seluruh jajaran produk pengembangan aplikasi komputernya termasuk di antaranya Delphi. Saat ini Delphi menjadi bagian dari jajaran IDE milik Embarcadero Technologies setelah Embarcadero Technologies mengakuisisi CodeGear, anak perusahaan Borland yang menangani tool pengembangan aplikasi.
2.10
Black Box Testing Pengujian black box berfokus pada persyaratan fungsional perangkat
lunak. Dengan demikian, pengujian black box memungkinkan perekayasa perangkat lunak mendapatkan serangkain kondisi input yang sepenuhnya menggunakan semua persyaratan fungional untuk suatu program. Tidak seperti pengujian white box, yang dilakukan pada saat awal proses pengujian, pengujian black box cenderung diaplikasikan selama tahap akhir pengujian. Ujicoba blackbox berusaha untuk menemukan kesalahan dalam beberapa kategori, diantaranya : 1. Fungsi-fungsi yang salah atau hilang 2. Kesalahan interface 3. Kesalahan dalam struktur data atau akses database eksternal 4. Kesalahan performa 5. kesalahan inisialisasi dan terminasi