BAB II LANDASAN TEORI
2.1 Kriptografi Kriptografi (Cryptography) berasal dari gabungan dua kata dalam bahasa Yunani yaitu ”cryptós” artinya ”secret” dan ”gráphein” artinya ”writing”. Kata cryptós digunakan untuk mendeskripsikan sesuatu yang disembunyikan, rahasia atau misterius, sedangkan kata gráphein berarti tulisan. Menurut Bruce Scheiner (1996:1) dalam bukunya ”Applied Cryptography”, kriptografi adalah ilmu pengetahuan dan seni menjaga pesan agar tetap aman. Kata ”seni” di dalam definisi di atas berasal dari fakta sejarah bahwa pada masa-masa awal sejarah kriptografi, setiap orang mungkin mempunyai cara yang unik untuk merahasiakan pesan. Cara-cara unik tersebut mungkin berbeda-beda pada setiap pelaku kriptografi sehingga setiap cara menulis pesan rahasia pesan mempunyai nilai estetika tersendiri sehingga kriptografi berkembang menjadi sebuah seni merahasiakan pesan. Kriptografi didefinisikan sebagai ilmu dan pelajaran untuk tulisan rahasia dengan pertimbangan bahwa komunikasi dan data dapat dikodekan untuk mencegah dari mata-mata atau orang lain yang ingin mengetahui isinya, dengan menggunakan kode-kode dan aturan-aturan tertentu dan metode lainnya sehingga hanya orang yang berhak yang dapat mengetahui isi pesan sebenarnya. Selain pengertian tersebut terdapat pula pengertian ilmu yang mempelajari teknik-teknik matematika yang berhubungan dengan aspek keamanan informasi seperti kerahasiaan data, keabsahan data, integritas data, serta autentikasi data. (Menezes, A. dkk, 1996:4). Dalam menjaga kerahasiaan data, kriptografi mentransformasikan data jelas (plaintext) ke dalam bentuk data sandi (ciphertext) yang tidak dapat dikenali. Cipherteks inilah yang kemudian dikirimkan oleh pengirim kepada penerima. Setelah sampai di penerima, cipherteks tersebut ditranformasikan kembali ke dalam bentuk plainteks agar dapat dikenali.
7
8
Ada empat tujuan mendasar dari ilmu kriptografi ini yang juga merupakan aspek keamanan informasi yaitu : 1. Kerahasiaan, adalah layanan yang digunakan untuk menjaga isi dari informasi dari siapapun kecuali yang memiliki otoritas atau kunci rahasia untuk membuka informasi yang telah disandi. 2. Integritas data, adalah berhubungan dengan penjagaan dari perubahan data secara tidak sah. Untuk menjaga integritas data, sistem harus memiliki kemampuan untuk mendeteksi manipulasi data oleh pihak-pihak yang tidak berhak, antara lain penyisipan, penghapusan, dan pensubsitusian data lain kedalam data yang sebenarnya. 3. Autentikasi, adalah berhubungan dengan identifikasi/pengenalan, baik secara kesatuan sistem maupun informasi itu sendiri. Dua pihak yang saling berkomunikasi harus saling memperkenalkan diri. Informasi yang dikirimkan melalui kanal harus diautentikasi keaslian, isi datanya, waktu pengiriman, dan lain-lain. 4. Non-repudiasi, atau nirpenyangkalan adalah usaha untuk mencegah terjadinya penyangkalan terhadap pengiriman/terciptanya suatu informasi oleh yang mengirimkan/membuat.
2.1.1
Kriptografi Klasik Pada zaman Romawi kuno, ketika Julius Caesar ingin mengirimkan pesan
rahasia pada seorang Jendral di medan perang. Pesan tersebut harus dikirimkan melalui seorang prajurit, tetapi karena pesan tersebut mengandung rahasia, Julius Caesar tidak ingin pesan tersebut terbuka di tengah jalan. Di sini Julius Caesar memikirkan bagaimana mengatasinya yaitu dengan mengacak isi pesan tersebut menjadi suatu pesan yang tidak dapat dipahami oleh siapapun kecuali hanya dapat dipahami oleh Jendralnya saja. Tentu sang Jendral telah diberi tahu sebelumnya bagaimana cara membaca pesan yang teracak tersebut, karena telah mengetahui kuncinya. Kriptografi klasik sebagian besar menggunakan metode enkripsi yang menggunakan kertas dan pensil atau mungkin dengan bantuan alat mekanik sederhana. Secara umum algoritma kriptografi klasik dikelompokkan menjadi dua
9
kategori, yaitu algoritma transposisi (transposition cipher) dan algoritma substitusi (substitution cipher). Cipher transposisi mengubah susunan huruf-huruf di dalam pesan, sedangkan cipher substitusi mengganti setiap huruf atau kelompok huruf dengan sebuah huruf atau kelompok huruf lain. (Munir, 2006:55)
2.1.2
Kriptografi Modern Kriptografi modern menggunakan gagasan dasar yang sama seperti
kriptografi klasik (permutasi dan transposisi) tetapi penekanannya berbeda. Pada kriptografi klasik, kriptografer menggunakan algoritma yang sederhana, yang memungkinkan chiperteks dapat dipecahkan dengan mudah (melalui pengunaan statisktik, terkaan, intuisi, dan sebagainya). Algoritma kriptografi modern dibuat sedemikian kompleks sehingga kriptanalis sangat sulit memecahkan cipherteks tanpa mengetahui kunci. Algoritma kriptografi modern umumnya beroprasi dalam metode bit ketimbang mode karakter. Operasi dalam mode bit berarti semua data dan informasi (baik kunci, plainteks, maupun cipherteks) dinyatakan dalam rangkaian (string) bit biner, 0 dan 1. Algoritma enkripsi dan dekripsi memproses semua data dan informasi dalam bentuk rangkaian bit. (Munir, 2006:97) Perkembangan algoritma kriptografi modern berbasis bit didorong oleh penggunaan komputer digital yang merepresentasikan data dalam bentuk biner. Sebelum membahas algoritma tersebut secara rinci, marilah kita mengingat representasi informasi dalam biner dan memanipulasinya.
2.1.3
Rangkaian Bit dan Operasinya pada Kriptografi Modern Umumnya algoritma kriptografi modern memproses data dalam bentuk
blok-blok bit. Rangkaian bit yang dipecah menjadi blok-blok bit dapat ditulis dalam sejumlah cara bergantung pada panjang blok (Munir, 2006:98). Misalnya, plainteks 100111010110 dibagi menjadi blok bit yang panjangnya 4 menjadi 1001
1101
0110
Setiap blok menyatakan bilangan dari 0 sampai 15 9
13
6
10
Bila plainteks dibagi menjadi blok-blok berukuran 3 bit: 100
111
010
110
maka setiap blok menyatakan bilangan dari 0 sampai 7, yaitu 4
7
2
6
Bila panjang rangkaian bit tidak habis dibagi dengan ukuran blok yang ditetapkan, maka blok yang terakhir ditambah dengan bit-bit semu yang disebut padding bits. Misalnya rangkaian bit diatas dibagi menjadi blok 5-bit menjadi 10011 10101 00010 Blok yang terakhir telah ditambahkan 3 bit 0 di bagian awal (dicetek tebal) agar ukurannya menjadi 5 bit. Padding bits dapat mengakibatkan ukuran cipherteks hasil enkripsi lebih panjang daripada ukuran plainteks semula. 2.2 Algoritma dan Kunci Algoritma kriptografi harus memiliki kekuatan untuk melakukan: konfusi/pembingungan (confusion), yaitu dari teks terang sehingga sulit untuk direkonstruksikan secara langsung tanpa menggunakan algoritma dekripsinya, dan difusi/peleburan (difusion), yaitu dari teks terang sehingga karakteristik dari teks terang tersebut hilang, sehingga dapat digunakan untuk mengamankan informasi. Pada implementasinya sebuah algoritma kriptografi harus memperhatikan kualitas layanan dari keseluruhan sistem dimana dia diimplementasikan. Algoritma kriptografi yang handal adalah algoritma kriptografi yang kekuatannya terletak pada kunci, bukan pada kerahasiaan algoritma itu sendiri. Dasar matematis yang mendasari proses enkripsi dan dekripsi adalah relasi antara dua himpunan yaitu yang berisi elemen teks terang/plainteks dan yang berisi elemen teks sandi/cipherteks. Enkripsi dan dekripsi merupakan fungsi transformasi antara himpunan-himpunan tersebut (Munir, 2006:5). Apabila elemen-elemen teks terang dinotasikan dengan P, elemen-elemen teks sandi dinotasikan dengan C, kunci disimbolkan sebagai K, sedang untuk proses enkripsi dinotasikan dengan E, dekripsi dengan notasi D. Enkripsi :
Ek(P) = C
... (2.1)
Dekripsi :
Dk(C) = P
... (2.2)
11
Gambar 2.1 Proses enkripsi dan dekripsi (Sumber: muchad.com)
Dalam kriptografi, kunci adalah suatu informasi yang mengendalikan jalannya sebuah algoritma kriptografi. Dalam enkripsi, kunci memberikan cara khusus bagaimana suatu algoritma mentransformasikan teks terang (plaintext) menjadi teks tersandi (ciphertext), ataupun proses sebaliknya (disebut dekripsi). Secara umum berdasarkan kesamaan kuncinya, algoritma kriptografi dibedakan menjadi dua, yaitu : 2.2.1
Algoritma Kunci-Simetris
Gambar 2.2 Skema algoritma kunci simetris (Sumber: kryptotel.net)
Algoritma kunci-simetris mengacu pada metode enkripsi yang dalam hal ini baik pengirim maupun penerima memiliki kunci yang sama. Algoritma kuncisimetris modern beroperasi dalam mode bit dan dapat dikelompokkan menjadi dua kategori: 2.2.1.1
Cipher Aliran (Stream Cipher)
Algoritma kriptografi beroperasi pada plainteks/cipherteks dalam bentuk bit tunggal, yang dalam hal ini rangkaian bit dienkripsikan/didekripsikan bit per bit. Cipher aliran mengengkripsi satu bit setiap kali.
12
Cipher aliran mengenkripsikan plainteks menjadi cipherteks bit per bit (1 bit setiap kali transformasi) atau byte per byte (1 karakter = 1 byte). Nama lain untuk cipher aliran adalah cipher status sebab enkripsi tiap bit bergantung pada status saat ini (current state) (Munir, 2006:103). Cipher aliran pertama kali diperkenalkan oleh Vernam melalui algoritmanya yang dikenal dengan nama Vernam cipher. Vernam cipher melakukan penjumlahan modulo 2 satu bit plainteks dengan satu bit kunci: ci = (pi + ki) mod 2
... (2.3)
yang dalam hal ini, pi : bit plainteks ki : bit kunci ci : bit cipherteks Plainteks diperoleh dengan melakukan penjumlahan modulo 2 satu bit cipherteks dengan satu bit kunci: pi = (ci + ki) mod 2
... (2.4)
Mengingat operasi penjumlahan modulo 2 identik dengan operasi bit dengan operator XOR, maka persamaan diatas dapat ditulis sebagai ci = (pi ⊕ ki)
... (2.5)
dan proses dekripsi menggunakan persamaan: pi = (ci ⊕ ki) 2.2.1.2
... (2.6)
Cipher Blok (Block Cipher)
Algoritma kriptografi beroperasi pada plainteks/cipherteks dalam bentuk blok bit, yang dalam hal ini rangkaian bit dibagi menjadi blok blok bit yang panjangnya sudah ditentukan sebelumnya. Misalnya panjang blok adalah 64 bit, maka itu berarti algoritma enkripsi memperlakukan 8 karakter setiap kali enkripsi (1 karakter = 8 bit dalam pengkodean ASCII). Cipher blok mengenkripsi satu blok bit setiap kali. Pada cipher blok, rangkaian bit-bit plainteks dibagi menjadi blok-blok bit dengan panjang sama, biasanya 64 bit. Enkripsi dilakukan terhadap blok bit
13
plainteks menggunakan bit-bit kunci. Dekripsi dilakukan dengan cara yang serupa seperti enkripsi (Munir, 2006:116). Misalkan blok plainteks (P) yang berukuran n bit dinyatakan sebagai vektor
... (2.7)
P = (p1, p2, ..., pn)
yang dalam hal ini pi adalah 0 atau 1 untuk i = 1, 2, ..., n, dan blok cipherteks adalah
... (2.8)
C = (c1, c2, ..., cn)
yang dalam hal ini ci adalah 0 atau 1 untuk i = 1, 2, ..., n. Bila plainteks dibagi menjadi n buah blok, barisan blok-blok plainteks dinyatakan sebagai
... (2.9)
(P1, P2, ..., Pn)
Skema enkripsi dan dekripsi dengan cipher blok digambarkan pada Gambar 2.3. Fungsi E dan D dispesifikasikan oleh kriptografer. Blok cipherteks C
Blok plainteks Pn p1
p2
...
pn
Enkripsi, E
Kunci (K)
c1
c2
...
c1
Blok cipherteks Cn
...
cn
Dekripsi, D
Kunci (K)
cn
c2
p1
p2
...
pn
Blok plainteks P
Gambar 2.3 Skema enkripsi dan dekripsi pada cipher blok (Sumber: Kriptografi. 2006:117)
Untuk setiap blok plainteks Pi, bit-bit penyusunnya dapat dinyatakan sebagai vektor Pi = (pi1, pi2, ..., pin)
... (2.10)
14
Enkripsi dan dekripsi dengan kunci K dinyatakan berturut-turut dengan persamaan
dan
2.2.2
Enkripsi = EK (P) = C
... (2.11)
Dekripsi = DK (C) = P
... (2.12)
Algoritma Kunci-Asimetris Skema ini adalah algoritma yang menggunakan kunci yang berbeda untuk
proses enkripsi dan dekripsinya. Skema ini disebut juga sebagai sistem kriptografi kunci publik karena kunci untuk enkripsi dibuat untuk diketahui oleh umum (public-key) atau dapat diketahui siapa saja, tapi untuk proses dekripsinya hanya dapat dilakukan oleh yang berwenang yang memiliki kunci rahasia untuk mendekripsinya, disebut kunci pribadi atau private-key. Kriptografi kunci-publik dapat dianalogikan seperti kotak pos yang hanya dapat dibuka oleh tukang pos yang memiliki kunci tapi setiap orang dapat memasukkan surat ke dalam kotak tersebut. Kriptografi kunci publik berkembang menjadi besar dan menjadi revolusi baru dalam sejarah kriptografi. Tidak seperti kriptografi kunci-simetri yang didasarkan pada subtitusi, dan permutasi, kriptografi kunci-publik didasarkan pada fungsi matematika. Jika kekuatan kriptografi kunci-simetri terletak pada panjang kuncinya yang membutuhkan usaha sangat besar untuk menemukan kunci, maka kriptografi kunci-publik kekuatannya terletak pada sulitnya memecahkan masalah matematis seperti pemfaktoran dan logaritma diskrit. Kunci untuk enkripsi diumumkan kepada publik, oleh karena itu tidak rahasia sehingga dinamakan kunci publik (publickey), disimbolkan dengan e (Munir, 2006:172).
Gambar 2.4 Skema algoritma kunci asimetris (Sumber: kryptotel.net)
Kunci untuk dekripsi bersifat rahasia, sehingga dinamakan kunci pribadi (private-key), disimbolkan dengan d. Karena kunci enkripsi ≠ kunci dekripsi
15
itulah maka kriptografi kunci-publik disebut juga kriptografi nirsimetri. Misalkan E adalah fungsi enkripsi dan D adalah fungsi dekripsi. Misalkan (e, d) adalah pasangan kunci untuk enkripsi dan dekripsi sedemikian sehingga Ee (P) = C dan Dd (C) = P
... (2.13)
untuk suatu plainteks P dan cipherteks C. Kedua persamaan ini menyiratkan bahwa dengan mengetahui e dan C, maka secara komputasi hampir tidak mungkin menemukan P. Misalkan Alice berkomunikasi dengan Bob. Bob memilih pasangan kunci (e, d). Bob mengirimkan kunci enkripsi/kunci publik (e) kepada alice melalui sembarang saluran tetapi tetap menjaga kerahasiaan kunci pribadinya (d). Kemudian Alice ingin mengirim pesan (P) kepada Bob. Alice mengenkripsikan pesan P dengan menggunakan kunci publik Bob untuk mendapatkan cipherteks (C = Ee(P)), lalu mengirimkan C melalui saluran komunikasi. Bob mendekripsi cipherteks (C) dengan menggunakan kunci pribadinya (d) untuk memperoleh pesan (P = Dd(C)). 2.3 Mode Operasi Cipher Blok Algoritma blok cipher membagi plainteks menjadi beberapa blok dengan panjang tetap. Mode operasi algoritma blok cipher dapat diterapkan untuk melakukan enkripsi terhadap keseluruhan blok plainteks. Beberapa mode operasi yang lazim diterapkan pada sistem blok cipher adalah: 2.3.1
Electronic Code Book (ECB) Pada mode ini, setiap blok plainteks Pi dienkripsikan secara individual dan
independen menjadi blok cipherteks Ci . Secara matematis, enkripsi dengan metode ECB dinyatakan sebagai Ci = EK (Pi)
... (2.14)
dan dekripsi sebagai Pi = DK(Ci)
... (2.15)
16
yang dalam hal ini, K adalah kunci dan Pidan Ci masing-masing blok plainteks dan cipherteks ke-i. Gambar 2.5 memperlihatkan n buah blok plainteks (P1 ... Pn) dan dekripsi n buah blok cipherteks (C1 ... Cn) dengan metode ECB, yang
dalam
hal ini E menyatakan fungsi enkripsi terhadap blok plainteks dengan menggunakan kunci (K) dan D menyatakan fungsi dekripsi terhadap blok cipherteks dengan menggunakan kunci (K) (Munir, 2006:119). Istilah ”code book” di dalam ECB muncul dari fakta bahwa karena blok plainteks yang sama selalu dienkripsi menjadi blok cipherteks yang sama, maka secara teoritis dimungkinkan membuat buku kode plainteks dan cipherteks yang berkoresponden. Namun, semakin besar ukuran blok, semakin besar pula ukuran buku kodenya. Misalkan jika blok berukuran 64 bit, maka buku kode terdiri dari 264 – 1 buah kode (entry).
Gambar 2.5 Mode electronic code book (ECB) (Sumber: Kriptografi. 2006:120)
Ada kemungkinan panjang plainteks tidak habis dibagi dengan panjang ukuran blok yang ditetapkan. Hal ini mengakibatkan blok terakhir lebih pendek dari blok-blok lainnya. Satu cara untuk mengatasi hal ini adalah dengan padding, yaitu menambahkan blok terakhir dengan pola bit yang teratur agar panjangnya sama dengan ukuran blok yang ditetapkan. 2.3.2
Cipher Block Chaining (CBC) Mode ini menerapkan mekanisme umpan-balik (feedback) pada sebuah
blok, yang dalam hal ini hasil blok enkripsi sebelumnya di-umpan-balikkan ke
17
dalam enkripsi blok yang berikutnya (current). Caranya blok plainteks yang current di-XOR-kan terlebih dahulu dengan blok cipherteks hasil enkripsi sebelumnya, selanjutnya hasil peng-XOR-an ini masuk ke dalam fungsi enkripsi. Dengan mode CBC, setiap blok cipherteks bergantung tidak hanya pada blok plainteksnya tetapi juga pada seluruh blok plainteks sebelumnya. Dekripsi dilakukan dengan memasukkan blok cipherteks yang current ke fungsi dekripsi, kemudian meng-XOR-kan hasilnya dengan blok cipherteks sebelumnya, dalam hal ini, blok cipherteks sebelumnya berfungsi sebagai umpanmaju (feedforward) pada akhir proses dekripsi. Gambar 2.6 memperlihatkan skema mode operasi CBC (Munir, 2006:123).
C Cii
C Ci-1 i-1
C Ci-2 i-2
C Ci-2 i-2
CC i-1i-1
C Cii
Gambar 2.6 Mode cipher block chaining (CBC) (Sumber: Kriptografi. 2006:124)
Secara matematis, enkripsi dan dekripsi dengan mode CBC dinyatakan sebagai Ci = EK (Pi ⊕ Ci-1)
... (2.16)
Pi = DK (Ci) ⊕ Ci-1
... (2.17)
Pada enkripsi blok pertama, C0 = IV (initialization vector). IV dapat diberikan oleh pengguna atau dibangkitkan secara acak oleh program. Jadi, untuk menghasilkan blok cipherteks pertama (C1), IV digunakan untuk menggantikan blok cipherteks sebelumnya (C0). Sebaliknya pada dekripsi, blok plainteks
18
pertama diperoleh dengan cara meng-XOR-kan IV dengan hasil dekripsi terhadap blok cipherteks pertama. IV tidak perlu rahasia. Jadi, untuk n buah blok plainteks, enkripsinya adalah: C1 = EK (P1 ⊕ IV) C2 = EK (P2 ⊕ C1) C3 = EK (P3 ⊕ C2) ⋮ Cn = EK (Pn ⊕ Cn - 1)
... (2.18)
dan dekripsi n buah blok cipherteks adalah: P1 = DK (C1) ⊕ IV P2 = DK (C2) ⊕ C1 P3 = DK (C3) ⊕ C2 ⋮ Pn = DK (Cn) ⊕ Cn - 1
... (2.19)
Perhatikan bahwa enkripsi terhadap blok i adalah fungsi dari semua plainteks dari blok 0 sampai blok i – 1, sehingga blok plainteks yang sama menghasilkan blok cipherteks yang berbeda hanya jika blok-blok palinteks sebelumnya berbeda. Dengan kata lain, mode operasi ini menyebabkan blok plainteks yang sama belu tentu dienkripsi menjadi blok cipherteks yang sama pula. Jika blok-blok plainteks sebelumnya ada yang sama, maka ada kemungkinan cipherteksnya sama. Untuk mencegah hal ini, maka digunakan IV yang merupakan data acak sebagai blok pertama. IV tidak mempunyai makna, ia hanya digunakan untuk membuat tiap blok cipherteks menjadi unik. 2.4 Triple DES Triple DES (Triple Data Encryption Standard) atau TDES adalah salah satu algoritma simetris modern beroperasi dalam mode cipher blok yang merupakan algoritma pengembangan dari algoritma DES (Data Encryption
19
Standard). Perbedaan DES dengan Triple DES terletak pada panjangnya kunci yang digunakan. Pada DES menggunakan satu kunci yang panjangnya 56 bit, sedangkan pada Triple DES menggunakan 3 kunci yang panjangnya 168 bit (masing-masing panjangnya 56 bit). Karena tingkat kerahasiaan algoritma Triple DES terletak pada panjangnya kunci yang digunakan, maka penggunaan algoritma Triple DES dianggap lebih aman dibandingkan dengan algoritma DES (Munir, 2006:149) 2.4.1
DES DES (Data Encryption Standard) adalah algoritma cipher blok yang
populer karena dijadikan standard algoritma enkripsi kunci-simetri. Sebenarnya DES adalah nama standard enkripsi simetri, nama algoritma enkripsinya sendiri adalah DEA (Data Encryption Algorithm), namun nama DES lebih populer dibandingkan dengan DEA. DES termasuk ke dalam sistem kriptografi simetri dan tergolong jenis cipher blok. DES beroperasi pada ukuran blok 64 bit. DES mengenkripsikan 64 bit plainteks menjadi 64 bit cipherteks dengan menggunakan 56 bit kunci internal (subkey). Li – 1
Ri – 1
f
Li
Ri
Gambar 2.7 Jaringan Feistel untuk satu putaran DES (Sumber: Kriptografi. 2006:137)
Kunci internal dibangkitkan dari kunci eksternal yang panjangnya 64 bit. Skema global dari algoritma DES adalah sebagai berikut: 1.
Blok cipherteks dipermutasi dengan matriks permutasi awal (initial permutation atau IP)
20
2.
Hasil permutasi awal kemudian di-enciphering sebanyak 16 kali (16 putaran), setiap putaran menggunakan kunci internal (subkey) yang berbeda.
3.
Hasil enciphering kemudian dipermutasi dengan matriks permutasi balikan (invers initial permutation atau IP-1) menjadi blok cipherteks. Plainteks
IP
R0
L0
f
R1 = L0 ⊕ f (R0 , k1)
L1 = R0
f
R2 = L1 ⊕ f (R1 , k2)
L2 = R1
16 kali putaran
R15 = L14 ⊕ f (R14 , k15)
L15 = R14
f
R16 = L15 ⊕ f (R15 , k16)
L16 = R15
IP-1
Cipherteks
Gambar 2.8 Skema jaringan Feistel algoritma enkripsi DES secara keseluruhan (Sumber: Kriptografi. 2006:138)
21
Di dalam proses enciphering, blok plainteks terbagi menjadi dua bagian, kiri (L) dan kanan (R), yang masing-masing panjangnya 32 bit. Kedua bagian ini masuk ke dalam 16 putaran DES. Pada setiap putaran i, blok R merupakan masukan untuk fungsi transformasi yang disebut f.
Pada fungsi f, blok R
dikombinasikan dengan kunci internal ki . Keluaran dari fungsi f di-XOR-kan dengan blok L untuk mendapatkan blok R yang baru. Sedangkan blok L yang baru langsung diambil dari blok R sebelumnya. Ini adalah satu putaran DES. Secara matematis, satu putaran DES dinyatakan pada Gambar 2.7 Li = Ri – 1
... (2.20)
Ri = Li – 1 ⊕ f (Ri – 1, ki)
Gambar 2.8 memperlihatkan skema algoritma DES yang lebih rinci. Satu putaran DES merupakan jaringan Feistel. Perlu dicatat dari Gambar 2.7 bahwa jika (L16, R16) merupakan keluaran dari putaran ke-16, maka (L16, R16) merupakan pra-cipherteks (pre-cipherteks) dari enciphering ini. Cipherteks yang sebenarnya diperoleh dengan melakukan permutasi awal balikan (IP-1) terhadap blok pracipherteks tersebut. Sebelum putaran pertama, terhadap blok plainteks dilakukan permutasi awal (initial permutation atau IP). Tujuan permutasi awal adalah mengacak plainteks sehingga urutan bit-bit didalamnya berubah. 2.4.2
Proses Kunci Kunci eksternal yang diinputkan oleh pengguna akan diproses untuk
mendapatkan kunci internal (subkey). Kunci eksternal yang panjangnya 64 bit di substitusikan pada matriks permutasi kompresi PC-1. Tabel 2.1 Jumlah pergeseran bit pada setiap putaran Putaran, i
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Jumlah
1
1
2
2
2
2
2
2
1
2
2
2
2
2
2
1
pergeseran bit
Dalam permutasi ini, tiap bit kedelapan (parity bit) dari 64 bit kunci diabaikan. Hasil permutasi panjangnya menjadi 56 bit yang kemudian dibagi menjadi dua bagian, yaitu kiri (C0) dan kanan (D0) masing-masing panjangnya 28
22
bit. Selanjutnya untuk proses enkripsi, kedua bagian (bagian C0 dan D0) digeser ke kiri (left shift) sepanjang satu atau dua bit bergantung pada tiap putaran. Sedangkan untuk proses dekripsi, bit digeser ke sebelah kanan (right shift). Jumlah pergeseran pada setiap putaran ditunjukkan pada Tabel 2.1 (Munir, 2006:140).
Kunci eksternal
Permutasi PC-1
C0
D0
left shift
left shift
C1
D1
left shift
left shift
Cj
Dj
left shift
left shift
C16
D16
Permutasi PC-2
K1
Permutasi PC-2
Kj
Permutasi PC-2
K16
Gambar 2.9 Proses pembangkitan kunci-kunci internal (Sumber: Kriptografi. 2006:141)
23
Setelah mengalami pergeseran bit, Ci dan Di digabungkan dan disubtitusikan pada matriks permutasi kompresi dengan menggunakan matriks PC-2, sehingga panjangnya menjadi 48 bit, dan inilah yang disebut dengan kunci internal. Proses tersebut dilakukan sebanyak 16 kali secara berulang-ulang untuk mendapatkan kunci-kunci internal. Proses pembangkitan kunci-kunci internal ditunjukkan pada Gambar 2.9. 2.4.3
Proses Enkripsi Proses enkripsi terhadap blok plainteks dilakukan setelah permutasi awal
(lihat Gambar 2.8). Setiap blok plainteks mengalami 16 kali putaran enciphering. Setiap putaran enciphering merupakan jaringan Feistel yang secara matematis dinyatakan sebagai persamaan (2.20), yaitu Li = Ri – 1 Ri = Li – 1 ⊕ f (Ri – 1, ki) Diagram komputasi fungsi f diperlihatkan pada Gambar 2.10. Ri - 1
E(Ri - 1)
Ki
E(Ri-1) ⊕ Ki = A
S1
S8 B
P(B)
Gambar 2.10 Rincian komputasi fungsi f (Sumber: Kriptografi. 2006:142)
24
E adalah fungsi ekspansi yang memperluas blok R yang panjangnya 32 bit menjadi blok 48 bit. Kemudian hasil ekspansi, yaitu E(R) di-XOR-kan dengan kunci internal (ki) yang sudah diproses sebelumnya pada proses pembangkitan kunci (pada putaran pertama menggunakan kunci internal pertama (k1), putaran kedua menggunakan kunci internal kedua (k2), dan seterusnya) dan menghasilkan vektor A yang panjangnya 48 bit
... (2.21)
E(R) ⊕ ki = A
Vektor A dikelompokkan menjadi 8 kelompok, masing-masing 6 bit, dan menjadi masukan bagi proses subtitusi. Proses subtitusi dilakukan dengan menggunakan delapan buah kotak-S (S-box), S1 sampai S8. Setiap kotak-S menerima masukan 6 bit dan menghasilkan keluaran 4 bit. Kelompok 6 bit pertama menggunakan S1, kelompok bit kedua menggunakan S2 dan seterusnya. Keluaran proses substitusi adalah vektor B yang panjangnya 32 bit. Vektor B menjadi masukan untuk proses permutasi. Tujuan permutasi adalah untuk mengacak
hasil
proses
subtitusi
kotak-S. Permutasi
dilakukan
dengan
menggunakan matriks permutasi P (P-box). Bit-bit P(B) merupakan keluaran dari fungsi f. Akhirnya, bit-bit P(B) di-XOR-kan dengan blok Li – 1 untuk mendapatkan R yang baru dan disimpan untuk melakukan enciphering selanjutnya. Sedangkan untuk bagian L diperoleh dari bagian R yang sebelumnya (Ri – 1). Proses tersebut dilakukan sebanyak 16 kali. Setelah 16 putaran selesai, bagian blok kiri (L) dan blok kanan (R) digabungkan dan disubstitusikan pada matriks permutasi awal balikan (invers initial permutation) atau IP-1, hasilnya merupakan cipherteks 64 bit. Pada algoritma Triple DES dibagi menjadi tiga tahap, setiap tahapnya merupakan implementasi dari algoritma DES. Triple DES menggunakan tiga buah kunci eksternal, dan tiga buah kunci bisa bersifat saling bebas (K1 ≠ K2 ≠ K3) atau hanya dua buah kunci yang saling bebas, dan kunci yang ketiga sama dengan kunci yang pertama (K1 ≠ K2 dan K3 = K1). a. Tahap pertama, plainteks yang diinputkan dioperasikan dengan kunci eksternal pertama (K1) dan melakukan proses enkripsi dengan menggunakan algoritma DES. Sehingga menghasilkan pra-cipherteks pertama.
25
b. Tahap kedua, pra-cipherteks pertama yang dihasilkan pada tahap pertama, kemudian dioperasikan dengan kunci eksternal kedua (K2) dan melakukan proses enkripsi atau proses dekripsi (tergantung cara pengenkripsian yang digunakan) dengan menggunakan algoritma DES. Sehingga menghasilkan pra-cipherteks kedua. c. Tahap terkahir, pra-cipherteks kedua yang dihasilkan pada tahap kedua, dioperasikan dengan kunci eksternal ketiga (K3) dan melakukan proses enkripsi dengan menggunakan algoritma DES, sehingga menghasilkan cipherteks (C).
P K2
K1
DES
DES
K3
DES
C Gambar 2.11 Skema algoritma Triple DES (Sumber: wikipedia.org)
Plainteks yang diproses dengan kunci 1 (K1), kunci 2 (K2), dan kunci 3 (K3) menghasilkan cipherteks lebih besar, karena adanya proses padding dan disimpan dalam bentuk heksadesimal. Ada dua pilihan untuk pemilihan kunci eksternal, yaitu: a. K1dan K2 adalah kunci-kunci yang saling bebas, dan K3 sama dengan K1 K1 ≠ K2 dan K3 = K1 b.
... (2.22)
K1, K2, dan K3 adalah kunci-kunci yang saling bebas K1 ≠ K2 ≠ K3
... (2.23)
26
Algoritma Triple DES menggunakan kunci yang panjangnya 168 bit, maka jumlah seluruh kombinasi kemungkinan kunci yang harus dicoba untuk memecahkan cipherteks adalah 2168 = 3,74 x 1050 Proses enkripsi dapat dicapai dalam berbagai cara: 1. Dengan mode Triple DES EEE, karena pada proses enkripsi semuanya menggunakan enkripsi a. K1 dan K2 adalah kunci-kunci yang saling bebas, dan K3 = K1 C = EK1(EK2(EK1(P)))
... (2.24)
b. K1, K2, dan K3 adalah kunci-kunci yang saling bebas C = EK3(EK2(EK1(P)))
... (2.25)
2. Dengan mode Triple DES EDE, karena pada proses enkripsinya langkah ditengah menggunakan dekripsi a. K1 dan K2 adalah kunci-kunci yang saling bebas, dan K3 = K1 C = EK1(DK2(EK1(P))) b. K1, K2, dan K3 adalah kunci-kunci yang saling bebas C = EK3(DK2(EK1(P)))
2.4.4
Proses Dekripsi Proses dekripsi dari cipherteks merupakan kebalikan dari proses enkripsi.
Jika pada proses enkripsi urutan kunci internal yang digunakan adalah k1,k2, ... k16 maka pada proses dekripsi, urutan kunci yang digunakan adalah k16, k15, ... k1. Blok (R16, L16) diperoleh dengan mempermutasikan cipherteks dengan matriks permutasi awal balikan (IP-1). Pra-plainteks dari deciphering adalah (R0, L0). Dengan mempermutasikan (R0, L0) dengan matriks permutasi awal (IP), maka akan didapatkan kembali blok plainteks semula. Cara pendekripsian Triple DES bergantung pada mode yang digunakan:
27
Tabel 2.2 Mode enkripsi dan dekripsi Triple DES Enkripsi
Dekripsi
TDES – EEE2
TDES – DDD2
K1 ≠ K2 dan K3 = K1
K1 ≠ K2 dan K3 = K1
C = EK1(EK2(EK1(P)))
P = DK1(DK2(DK1(C)))
TDES – EEE3
TDES – DDD3
K1 ≠ K2 ≠ K3
K1 ≠ K2 ≠ K3
C = EK3(EK2(EK1(P)))
P = DK1(DK2(DK3(C)))
TDES – EDE2
TDES – DED2
K1 ≠ K2 dan K3 = K1
K1 ≠ K2 dan K3 = K1
C = EK1(DK2(EK1(P)))
P = DK1(EK2(DK1(C)))
TDES – EDE3
TDES – DED3
K1 ≠ K2 ≠ K3
K1 ≠ K2 ≠ K3
C = EK3(DK2(EK1(P)))
P = DK1(EK2(DK3(C)))
2.5 Fungsi Hash Fungsi hash adalah fungsi yang menerima masukan string yang panjangnya sembarang dan mengkonversinya menjadi string keluaran yang panjangnya tetap (fixed). Fungsi hash dapat menerima masukan string apa saja. Jika string menyatakan pesan (message), maka sembarang pesan M berukuran bebas dikompresi oleh fungsi hash H melalui persamaan h = H(M)
... (2.26)
Keluaran fungsi hash disebut juga nilai hash (hash-value) atau pesan-ringkas (message digest). Pada persamaan (2.26), h adalah nilai hash atau message digest dari fungsi H untuk masukan M. Dengan kata lain, fungsi hash mengkompresi sembarang pesan yang berukuran berapa saja menjadi message digest yang ukurannya selalu tetap.
28
2.5.1
Fungsi Hash Satu-Arah (One-way Hash) Fungsi hash satu-arah adalah fungsi hash yang bekerja dalam satu arah:
pesan yang sudah diubah menjadi message digest tidak dapat dikembalikan lagi menjadi pesan semula. Sifat-sifat fungsi hash satu-arah adalah sebagai berikut: 1. Fungsi H dapat diterapkan pada blok data berukuran berapa saja. 2. H menghasilkan nilai (h) dengan panjang tetap (fixed-length output). 3. Untuk setiap h yang dihasilkan, tidak mungkin mengembalikan nilai M sedemikian sehingga H(M) = h. Itulah sebabnya fungsi H dikatakan fungsi hash satu-arah (one-way hash function). 2.6 Short Message Service (SMS) Short Message Services atau disingkat dengan SMS adalah sebuah layanan yang dilaksanakan dengan sebuah telepon seluler atau ponsel untuk mengirim atau menerima pesan-pesan pendek.
SMSC
Pengirim
Penerima
Gambar 2.12 Skema cara kerja SMS
Dengan SMS, pengguna telepon seluler dapat mengirim dan menerima berita atau pesan singkat dan biasanya sampai dengan 160 karakter. Teks dapat berupa alfabet atau nomor atau kombinasi alfanumerik. Cara kerja SMS dapat dilihat pada Gambar 2.12 Pada saat mengirim pesan SMS dari telepon seluler, maka pesan SMS tersebut tidak langsung dikirim ke telepon seluler tujuan, akan tetapi terlebih dahulu dikirim ke SMS Center (SMSC) dengan prinsip Store and Forward, setelah itu baru dikirimkan ke telepon seluler tujuan. SMS memiliki keuntungan dan kerugian, diantara keuntungannya yaitu sebagai berikut: 1. SMS merupakan sarana yang hampir semua orang gunakan dan ketahui 2. SMS menggunakan sedikit dari jalur sinyal GSM
29
Dibalik kelebihan tersebut, terdapat beberapa kekurangan, antara lain: 1. SMS menggunakan standar pengkodingan yang seragam yaitu SMS dibangun dengan sistem bahasa program yang sejenis dengan bahasa program hardware seperti komputer dan telepon seluler dapat menerjemahkan semua data dalam frekuensi tertentu yang terbuka (di udara) sehingga tingkat keamanan SMS tidak dapat diandalkan 2. Karena menggunakan jalur sinyal yang sedikit, maka jumlah maksimal pesan per satuan terbatas. 2.7 Java Java adalah bahasa pemrograman yang dapat dijalankan di berbagai komputer termasuk telepon genggam. Bahasa ini awalnya dibuat oleh James Gosling saat masih bergabung di Sun Microsystems Inc dan dirilis tahun 1995. Bahasa pemrograman ini terlahir ketika perusahaan Sun Microsystem memulai Green Project, yakni proyek penelitian untuk membuat bahasa yang akan digunakan pada chip-chip embedded untuk customer electronic products. Bahasa tersebut haruslah multiplatform, tidak tergantung kepada vendor
yang
memanufaktur chip tersebut. Karena pada awalnya ditujukan untuk pemrograman device kecil. Java didesain sebagai bahasa pemrograman yang bebas dijalankan di mesin mana saja (machine-independent). Java memiliki karakteristik berukuran kecil, efisien dan portable untuk berbagai hardware. (Nimeyer dan Knudsen, 2005:1-2) 2.8 Extensible Markup Language (XML) Extensible Markup Language adalah bahasa yang mendefinisikan sekumpulan aturan untuk pengkodean dokumen dalam format yang dapat dibaca oleh manusia (human-readable) dan dapat dibaca oleh mesin (machine-readable). XML adalah merupakan suatu bahasa Markup. Markup yaitu bahasa yang berisikan kode-kode berupa tanda-tanda tertentu dengan aturan tertentu untuk memformat dokumen teks dengan tag sendiri agar dapat dimengerti. Seperti halnya HTML, XML juga menggunakan elemen yang ditandai dengan tag pembuka (diawali dengan ”<” dan diakhiri dengan ”>”), tag penutup (diawali dengan ”” diakhiri ”>”) dan atribut elemen (parameter yang dinyatakan dalam
30
tag pembuka misal
name=”isidata”>). Hanya bedanya, HTML
medefinisikan dari awal tag dan atribut yang dipakai didalamnya, sedangkan pada XML kita bisa menggunakan tag dan atribut sesuai kehendak kita. 2.9 Eclipse Eclipse adalah sebuah IDE (Integrated Development Environment) untuk mengembangkan perangkat lunak dan dapat dijalankan di semua platform (platform-independent). Berikut ini adalah sifat dari Eclipse: •
Multi-platform: Target sistem operasi Eclipse adalah Microsoft Windows, Linux, Solaris, AIX, HP-UX dan Mac OS X
•
Multi-language: Eclipse dikembangkan dengan bahasa pemrograman Java, akan tetapi Eclipse mendukung pengembangan aplikasi berbasis bahasa pemrograman lainnya, seperti C/C++, Cobol, Python, Perl, PHP, dan lain sebagainya.
•
Multi-role: Selain sebagai IDE untuk pengembangan aplikasi, Eclipse pun bisa digunakan untuk aktivitas dalam siklus pengembangan perangkat lunak, seperti dokumentasi, test perangkat lunak, pengembangan web, dan lain sebagainya. Eclipse merupakan perangkat lunak yang bersifat open source, yang
membuat
beberapa
orang
yakin
mengenai
hak-hak
hukum
ketika
menggunakannya. Perangkat lunak open source memberikan user akses terbuka ke kode sumber dari perangkat lunak dan hak untuk memodifikasi dan mendistribusikan perangkat lunak.
Gambar 2.13 Arsitektur dari eclipse (Sumber: Eclipse. 2004:7)
31
Selain itu, kelebihan dari Eclipse yang membuatnya populer adalah kemampuannya untuk dapat dikembangkan oleh pengguna dengan komponen yang dinamakan plug-in. Platform eclipse terdiri dari beberapa komponen: kernel platform, komponen workbench, komponen workspace, komponen team, dan komponen help. Skema arsitekturnya dapat dilihat pada Gambar 2.13 (Holzner, 2004:7). Tugas kernel platform adalah untuk mendapatkan segala sesuatu dimulai dan untuk memuat (load) plug-in yang dibutuhkan. Ini adalah komponen yang berjalan pertama kali ketika memulai eclipse. Komponen workbench merupakan graphical user interface dasar ketika bekerja dengan menggunakan eclipse. Komponen ini mempunyai beberapa macam toolbar dan menu untuk kita gunakan, dan tugasnya adalah untuk menampilkan item dan jendela internal. Workbench merupakan komponen yang paling dasar setelah kernel platform. Ketika kita memulai eclipe, workbench akan menampilkan pesan selamat datang. Komponen workspace mengelola semua sumber daya untuk kita, yaitu semua yang kita simpan di disk atau terhubung ke pada mesin lain. Komponen team adalah plug-in yang mendukung kontrol versi di eclipse. Dalam kontrol versi, kode program dicek sesuai kebutuhan sehingga perubahan perangkat lunak dapat dilacak. Komponen help, sesuai dengan namanya, komponen ini memberikan bantuan (user guide). Ini merupakan dokumentasi sistem yang dapat diperluas (extensible) untuk memberikan bantuan. Ada banyak cara untuk belajar bahasa pemrograman java. Penulis percaya bahwa ada banyak keuntungan untuk belajar bahasa pemrograman java dengan menggunakan eclipse. Beberapa diantaranya tercantum di bawah ini: •
Eclipse menyediakan sejumlah alat bantu yang membuat menulis kode java lebih cepat dan lebih mudah daripada menggunakan editor teks. Ini berarti bahwa kita dapat menghabiskan lebih sedikit waktu untuk mengetik kode
•
Debugger eclipse dan scrapbook memungkinkan kita untuk melihat ke dalam eksekusi kode java. Hal ini memungkinkan kita untuk ”melihat” objek-objek dan untuk memahami bagaimana java bekerja di belakang layar (Dexter, 2007:3)
32
Platform eclipse menyediakan banyak plug-in untuk dijalankan dan memasang plug-in - plug-in tersebut tidaklah terlalu sulit, plug-in - plug-in tersebut biasanya berbentuk .zip atau .tar. Untuk memasangnya ke eclipse, unzip file tersebut kemudian salin ke direktori plug-in eclipse dan restart eclipse (Holzner, 2004:142). Perlu dicatat bahwa meskipun eclipse dibuat dengan bahasa pemrograman java, platform tersebut dimaksudkan untuk menjadi bahasa yang netral (language-neutral). Untuk mengembangkan (develop) di setiap bahasa pemrograman apapun, yang dibutuhkan adalah plug-in yang sesuai untuk bahasa pemrograman tersebut. 2.10
Eclipse Plug-in Seperti yang disebutkan sebelumnya, eclipse tidak hanya digunakan untuk
bahasa pemrograman java. Fungsional itu sendiri dapat berbeda dari satu sama lain, tergantung pada plug-in yang terpasang. Plug-in tersebut memungkinkan eclipse untuk mengembangkan setiap bahasa pemrograman lain. Ada banyak plug-in eclipse yang tersedia, banyak yang gratis dan beberapa lainnya tidak. Sebagian besar plug-in harus diekstrak (unzipped) sebelum memasangnya. Namun beberapa mungkin harus di-instal secara online pada repositori yang terkait. Sangat dianjurkan untuk me-restart eclipse setelah berhasil memasang plug-in ke dalam eclipse. (Holzner, 2004:142). 2.10.1 Android Development Tools (ADT) Android Development Tools (ADT) adalah plug-in untuk IDE eclipse yang dirancang untuk programer dan pengembang (developer) dalam membuat aplikasi android. ADT memperluas kemampuan eclipse untuk membuat project berbasis android, membuat user interface aplikasi, menambahkan paket (package) berdasarkan pada Android Framework API, untuk memonitor eksekusi suatu aplikasi menggunakan SDK android, dan bahkan meng-export file android package (.apk) dalam rangka untuk mendistribusikan aplikasi android. ADT harus dipasang kedalam platform eclipse, karena sebagai penghubung antara android SDK dengan IDE yang digunakan sebagai tempat koding aplikasi yang berbasis android.
33
2.11
Android Android adalah sistem operasi yang berbasis Linux dan bersifat open
source untuk telepon seluler seperti telepon pintar (smartphone) dan komputer tablet yang diciptakan oleh Google dan Open Handset Alliance. Pada saat perilisan perdana Android, 5 November 2007, Android bersama Open Handset Alliance menyatakan mendukung pengembangan standar terbuka pada perangkat seluler. Di lain pihak, Google merilis kode–kode Android di bawah lisensi Apache, sebuah lisensi perangkat lunak dan standar terbuka perangkat seluler. (Brunette, 2010:10). Android selalu diperbaharui (update) sejak rilis pertamanya. Pembaruan ini biasanya memperbaiki bug dan menambah fitur baru. Saat ini android telah berada di versi 4.2 dan berbasis kernel Linux versi 3.0.31. 2.11.1 Arsitektur Perangkat Lunak Android Secara umum, arsitektur perangkat lunak android dapat digunakan berupa susunan struktural dari individu komponen sistemnya. Komponen penyusun perangkat lunak android terdiri dari beberapa tingkatan lapisan (layer) penyusun, dan keseluruhan dari semua lapisan disebut software stack. Gambar 2.14 menunjukkan komponen arsitektur utama dari sistem operasi android (Meier, 2009:12-16) •
Linux kernel Android bergantung pada kernel linux untuk layanan sistem ini seperti driver hardware, manajemen memori, manajemen proses, keamanan, network stack, dan power management. Kernel juga bertindak sebagai lapisan hardware dan seluruh software. Lapisan ini merupakan layer inti (core) dari sistem android berada.
•
Libraries Bertempat di level yang sama dengan android runtime. Android menyertakan satu set libraries dalam bahasa C/C++ yang digunakan oleh berbagai komponen pada sistem android. Kemampuan ini dapat diakses oleh programmer melewati android application framework. Sebagai contoh android mendukung pemutaran format audio, video, dan gambar.
34
Gambar 2.14 Arsitektur dari perangkat lunak sistem android (Sumber: Professional Android™ Application Development. 2009:13)
•
Android Runtime Lapisan setelah libraries adalah android runtime. Android runtime ini berisi core libraries dan dalvik virtual machine. Core libraries mencakup serangkaian inti library java, artinya android menyertakan satu set librarylibrary dasar yang menyediakan sebagian besar fungsi-fungsi yang ada pada library-library dasar pemrograman java.
•
Application Framework Merupakan open development platform yang ditawarkan android untuk dapat dikembangkan guna membangun aplikasi. Pengembang (developer) memiliki akses penuh menuju API framework sepeti yang dilakukan oleh aplikasi kategori inti. Komponen-komponen yang termasuk
dalam application
35
framework adalah sebagai berikut: servis berbasis lokasi, content provider, window manager, activity manager, package manager, telephony, P2P/IM, notification, views, resource manager. •
Application Layer Semua aplikasi, baik yang aplikasi native, atau aplikasi pihak ketiga (third party application) dibangun diatas application layer menggunakan API library yang sama. Application layer berjalan didalam android runtime menggunakan kelas dan layanan yang disediakan dari application framework. Lapisan ini merupakan lapisan dimana kita berhubungan dengan aplikasi saja. Lapisan ini yang sering diakses. Fungsi-fungsi dasar tersebut dapat diakses melalui user interface.
2.11.2 Komponen Dasar Aplikasi Android Beberapa komponen dasar yang paling penting di dalam aplikasi android adalah activities, intents, services, dan content providers (Brunette, 2010:39-40). Berikut ini merupakan penjelasan masing-masing komponen: 2.11.2.1
Activity
Activity adalah salah satu komponen aplikasi yang menyediakan sebuah layar yang mana user bisa berinteraksi dengan aplikasi, misalnya menelepon, mengambil foto, mengirim email, atau melihat peta. Setiap activity memiliki window sebagai tempat meletakkan user interface. Window tersebut biasanya memenuhi layar, bisa juga lebih kecil dari layar dan melayang di atas window lain. Sebuah aplikasi biasanya terdiri dari beberapa activity yang satu sama lain terikat secara longgar. Biasanya, satu activity dalam sebuah aplikasi dikhususkan sebagai activity ”main” (activity utama), yang mana akan ditampilkan kepada user disaat aplikasi dijalankan pertama kali. Setiap activity kemudian bisa menjalankan activity lain untuk melakukan pekerjaan yang berbeda. Setiap kali ada activity baru dijalankan, activity sebelumnya dihentikan, tetapi sistem menyimpan activity tersebut di dalam ”tumpukan” (stack). Ketika sebuah activity dimulai, activity tersebut ditempatkan ditempatkan paling atas pada stack dan mendapatkan fokus dari user. Prinsip antrian stack pada dasarnya adalah ”yang pertama masuk, yang terakhir keluar” (last in first out), jadi ketika user selesai dengan sebuah activity
36
dan menekan tombol BACK, activity tersebut dikeluarkan dari stack (dan dihancurkan) dan activity pada stack dibawahnya dikembalikan.
Gambar 2.15 Siklus hidup dari sebuah activity (Sumber: Hello, Android - Introducing Google’s Mobile Device Platform. 2010:37)
Siklus hidup dari sebuah activity terpengaruh secara langsung oleh hubungan activity tersebut dengan activity lain, tugasnya (task), dan tumpukan pada memori (back stack). Sebuah activity bisa dalam keadaan sebagai berikut: •
onCreate(): Metode ini terpanggil ketika activity pertama kali dijalankan.
•
onStart(): Metode ini menunjukkan activity akan ditampilkan ke user
•
onResume(): Metode ini terpanggil ketika activity mendapatkan fokus dari user dan berinteraksi dengan user.
•
onPause(): Metode ini terpanggil ketika activity akan pergi ke background dan user meninggalkan activity (meskipun tidak selalu activity tersebut akan
dihancurkan),
biasanya
karena
activity
lain
telah
diluncurkan/dijalankan didepan activity tersebut. •
onStop(): Metode ini terpanggil ketika activity tidak lagi terlihat oleh user dan tidak akan diperlukan untuk sementara waktu serta bisa di-kill oleh sistem sewaktu-waktu jika memori dubutuhkan untuk proses lain.
37
•
onRestart(): Jika metode ini terpanggil, maka hal tersebut mengindikasikan activity sedang ditampilkan kembali ke user dari keadaan onStop().
•
onDestroy(): Metode ini terpanggil tepat sebelum activity dihancurkan.
2.11.2.2
Intent
Sebuah aplikasi android dapat berisi satu atau lebih activity. Jika aplikasi kita
lebih
dari
satu
activity,
kita
mungkin
perlu
untuk
menavigasikan/memindahkan dari satu activity ke activity lainnya. Jika kita memindahkan dari satu activity ke activity lainnya maka inilah yang disebut dengan intent. (Lee, 2011:43). Android menggunakan kelas spesial yang disebut intent untuk berpindah dari activity satu ke activity lain. Dua bagian yang paling penting dari struktur data intent adalah sebuah aksi dan sebuah data untuk bertindak berdasarkan aksi tersebut. Data tersebut diungkapkan sebagai Uniform Resource Identifier (URI). URI merupakan sebuah karakter string digunakan untuk mengidentifikasi nama atau resource pada sebuah intent. 2.11.2.3
Service
Service merupakan tugas (task) yang berjalan di background tanpa interaksi dengan user secara langsung. Sebagai contoh yaitu aplikasi pemutar musik. Musik telah dijalankan oleh suatu activity, tetapi kita menginginkan musik itu tetap berjalan ketika kita berpindah ke aplikasi yang berbeda. Jadi, sebuah kode program yang tetap menjalankan musik di belakang layar merupakan sebuah kode program yang berjalan di service android. 2.11.2.4
Content Provider
Aplikasi dapat menyimpan data ke dalam database SQLite, preferences, atau mekanisme lain yang dapat digunakan. Content provider berguna ketika aplikasi menginginkan data itu bisa terbagi (share) dengan aplikasi lain. Content provider merupakan kelas yang mengimplementasikan metode standar untuk memperbolehkan aplikasi lain menyimpan data dan mengambil jenis data yang ditangani oleh content provider
38
2.11.3 Android Manifest Android manifest (AndroidManifest.xml) adalah file yang diperlukan untuk setiap aplikasi android. Android manifest terletak di folder root aplikasi dan menjelaskan informasi mengenai aplikasi tersebut, seperti versi dari aplikasi, nama package, tingkatan SDK yang digunakan, beserta icon dan nama yang diberikan untuk aplikasi. Android manifest digunakan sebagai pengatur activityactivity yang terdapat pada aplikasi.
Gambar 2.16 Contoh sederhana AndroidManifest.xml
Hampir setiap android manifest menyertakan deklarasi namespace (xlmns:android=http://schemas.android.com/apk/res/android) di elemen pertama. Hal tersebut membuat berbagai atribut standar dalam file, yang akan digunakan untuk menyediakan sebagian besar data untuk elemen dalam file tersebut. Sintaks ”xlmns” mengacu pada XML NameSpace. Ketika menggunakan prefix di XML, namespace untuk prefix harus didefinisikan. Namespace didefinisikan oleh atribut xlmns dalam tag awal sebuah elemen. Deklarasi namespace memiliki sintaks sebagai berikut. xlmns:prefix=”URI” Android manifest harus berisi satu tag
, dimana tag tersebut mengandung beberapa tag-tag lain untuk mendeskripsikan activity, permission, service, dan lain-lain yang berada di aplikasi tersebut. 2.12
Resources pada Android Antarmuka pengguna atau User Interface (UI) di Android dapat dibangun
dengan dua cara, yakni dengan mendefinisikan XML atau dengan menulis kode Java. Mendefinisikan struktur Graphical User Interface (GUI) dalam XML sangat
39
dianjurkan, karena sebagai salah satu dari prinsip Model-View-Controller, dimana UI haruslah selalu terpisah dari logika program. Tata letak yang berbasis XML adalah spesifikasi hubungan widget satu sama lain dan kontainer dalam format XML. Android menjadikan XML sebagai basis layout untuk menjadikannya resources, dan disimpan dalam direktori res/layout dalam project android. Resources merupakan file eksternal yang digunakan oleh kode program dan dikompilasi pada saat membangun aplikasi. Android mendukung beberapa jenis file yang berbeda sebagai resources, yakni file XML, PNG, dan file JPEG. (Gramlich, 2008:29). Tipe-tipe resources dan tempatnya: • • • • •
File layout ”res/layout/” Gambar ”res/drawable/” Animasi ”res/anim/” Styles, strings, dan array ”res/values/” Raw file seperti audio dan video ”res/raw/”
Menggunakan resources dalam kode program hanya masalah mengetahui resource ID dan jenis objek resource yang dikompilasi ke kode program. Berikut adalah sintaks untuk mengacu ke resource : R.resource_type.resource_name
dimana resource_type adalah subclass R.java yang menyimpan jenis resource tertentu. Dan resource_name adalah nama untuk resource yang didefinisikan dalam file XML. Sebuah nilai yang disediakan dalam resource juga bisa menjadi referensi untuk sebuah resource yang lain. Hal ini sering digunakan dalam file layout untuk menyediakan string (sehingga mereka dapat di terjemahkan) dan gambar (yang ada di file lain). 2.13
Rekayasa Perangkat Lunak Rekayasa
perangkat
lunak
(software
engineering)
merupakan
pembangunan dengan menggunakan prinsip atau konsep rekayasa dengan tujuan menghasilkan perangkat lunak yang bernilai ekonomi yang dipercaya dan bekerja secara efisien menggunakan mesin. Perangkat lunak banyak dibuat dan pada akhirnya sering tidak digunakan karena tidak memenuhi kebutuhan pelanggan
40
atau bahkan karena masalah non-teknis seperti keinginan pemakai perangkat lunak (user) untuk mengubah cara kerja dari manual ke otomatis, atau ketidaknyamanan user menggunakan komputer. Rekayasa perangkat lunak lebih fokus pada bagaimana membuat perangkat lunak yang memenuhi kriteria berikut: •
Dapat terus dipelihara setelah perangkat lunak selesai dibuat seiring berkembangnya teknologi dan lingkungan (maintainability)
•
Dapat diandalkan dengan proses bisnis yang dijalankan dan perubahan yang terjadi (dependability dan robust)
•
Kemampuan untuk dipakai sesuai dengan kebutuhan (usability) Dari kriteria diatas maka perangkat lunak yang baik adalah perangkat
lunak yang dapat memenuhi kebutuhan pelanggan (customer) atau user atau berorientasi pembuat pengembang perangkat lunak. 2.13.1 Metodologi Rekayasa Perangkat Lunak Untuk melakukan sebuah rekayasa perangkat lunak tahap pemodelan merupakan tahap awal yang harus dilakukan. Tahap pemodelan harus dilakukan dengan baik karena akan sangat berpengaruh pada tahap – tahap selanjutnya.
Gambar 2.17 Model waterfall
41
Model proses perangkat lunak merupakan deskripsi yang disederhanakan dari proses perangkat lunak yang dipresentasikan dengan sudut pandang tertentu. Jenis pemodelan yang digunakan dalam penyelesaian tugas akhir ini menggunakan pemodelan yang secara umum digunakan dalam rekayasa perangkat lunak yaitu model sekuensial linier atau sering disebut juga model waterfall. Model waterfall mengusulkan sebuah pendekatan kepada perkembangan perangkat lunak yang sistematik dan sekuensial yang mulai pada tingkat dan kemajuan sistem pada seluruh analisis, desain, kode, pengujian, dan pemeliharaan. Berikut di bawah ini rangkaian aktivitas proses dalam model waterfall (Pressman, 2007) : 1. Tahapan Rekayasa Sistem Tahapan ini sangat menekan pada masalah pengumpulan kebutuhan pengguna pada tingkatan sistem dengan menentukan konsep sistem beserta antarmuka yang menghubungkannya dengan lingkungan sekitar. Hasilnya berupa spesifikasi sistem. 2. Tahapan Analisis Pada tahap ini dilakukan pengumpulan kebutuhan elemen-elemen di tingkat perangkat lunak. Dengan analisis harus dapat ditentukan domain-domain data atau informasi, fungsi, proses, atau prosedur yang diperlukan beserta unjuk kerjanya, dan antarmuka. Hasilnya berupa spesifikasi kebutuhan perangkat lunak. 3. Tahapan Perancangan Pada tahap perancangan, kebutuhan-kebutuhan perangkat lunak yang dihasilkan pada tahap analisis, ditransformasikan ke dalam bentuk arsitektur perangkat lunak yang memiliki karakteristik mudah dimengerti dan tidak sulit untuk diterapkan. 4. Tahapan Pemograman Tahap ini melakukan penerapan hasil rancangan ke dalam baris-baris kode program yang dapat dimengerti oleh komputer. 5. Tahapan Pengujian Setelah perangkat lunak selesai diterapkan, pengujian dapat segera dimulai. Pengujian terlebih dahulu dilakukan pada setiap modul. Jika tidak ada
42
masalah, modul tersebut akan diintegrasikan hingga membentuk perangkat lunak secara utuh. Kemudian dilakukan pengujian di tingkat perangkat lunak yang memfokuskan pada masalah-masalah logika internal, fungsi internal, potensi masalah yang mungkin terjadi dan pemeriksaan hasil apakah sudah sesuai dengan permintaan. 6. Tahapan Pengoperasian dan Pemeliharaan Dalam operasional sehari-hari, suatu perangkat lunak mungkin saja mengalami kesalahan atau kegagalan dalam menjalankan fungsi-fungsinya. Atau, pemilik bisa saja meminta peningkatan kemampuan perangkat lunak pada pengembangnya. Dengan demikian, kedua faktor ini menyebabkan perlunya perangkat lunak dipelihara dari waktu ke waktu. Biasanya ini merupakan tahapan yang panjang dari perangkat lunak. 2.14
Unified Modelling Language Unified Modelling Language (UML) adalah salah satu alat bantu yang
sangat handal di dunia pengembangan sistem yang berorientasi objek. Hal ini disebabkan karena UML menyediakan bahasa pemodelan visual
yang
memungkinkan bagi pengembang sistem untuk membuat cetak biru atas visi mereka dalam bentuk yang baku, mudah dimengerti serta dilengkapi dengan mekanisme yang efektif untuk berbagi dan mengkomunikasikan rancangan mereka dengan yang lain. UML merupakan keluarga notasi grafis yang didukung oleh meta – model tunggal, yang membantu pendeksripsian dan desain sistem perangkat lunak, khususnya sistem yang dibangun menggunakan pemograman berorientasi objek (Fowler, 2003). UML juga merupakan suatu metode terbuka yang digunakan untuk menspesifikasi, memvisualisasi, membangun dan mendokumentasikan artifak-artifak dari suatu pengembangan sistem perangkat lunak yang berbasis pada objek. UML sudah menjadi standar industri yang dibuat dibawah pengawasan Object Management Group (OMG) (Weilkiens, 2006:143). Sebagai sebuah notasi grafis yang relatif sudah dibakukan dan dikontrol oleh OMG, UML menawarkan banyak keistimewaan. UML tidak hanya dominan dalam penotasian di lingkungan berorientasi objek, tetapi juga populer di luar lingkungan berorientasi objek.
43
Tujuan dari UML, sebagaimana yang dinyatakan oleh perancangnya adalah: •
Memodelkan sistem (dan bukan hanya perangkat lunak) menggunakan konsep object-oriented.
•
Membuat sebuah bahasa pemodelan yang dapat digunakan baik oleh manusia maupun oleh mesin.
Sebagai sebuah bahasa pemodelan berorientasi objek, seluruh elemen dan diagram di UML berdasarkan pola berorientasi objek. Gambaran utama mengenai berorientasi objek adalah: •
Object-oriented adalah sebuah teknologi untuk memproduksi model yang mewakili suatu bagian, seperti bagian mesin atau bagian logika.
•
Model-model object-oriented sudah dibuat dengan benar, mudah untuk berkomunikasi, diubah, diperluas, divalidasi dan diverifikasi.
•
Ketika konsep object-oriented telah dibuat dengan benar, sistem tersebut fleksibel untuk diubah, mempunyai arsitektur yang didefinisikan dengan bagus, menyediakan kesempatan untuk membuat dan mengimplementasikan komponen yang dapat digunakan kembali.
Model yang telah dibuat dengan konsep berorientasi objek sebaiknya dikembangkan dengan menggunakan bahasa pemrograman yang mendukung berorientasi objek Ada tiga aspek utama dalam pemodelan sistem yang mampu didukung oleh UML:. •
Model Fungsional, untuk menunjukkan fungsionalitas dari suatu sistem dari sudut pandang user atau pengguna. Ini dicapai dengan menggunakan Use Case Diagram.
•
Model Objek, untuk menunjukkan struktur dan substruktur dari suatu sistem dengan menggunakan object, atribut, operasi dan juga asosiasi. Ini dicapai dengan menggunakan Class Diagram.
•
Model Dinamis, menunjukkan internal behavior dan suatu sistem. Ini dicapai dengan menggunakan Sequence Diagram, Activity Diagram dan juga Statechart Diagram.
44
Pada UML terdapat 13 jenis diagram yang dapat dikategorikan secara hirarki seperti erti ditunjukkan pada Gambar 2.18 (Fowler, 2003).
Gambar 2.18 Hirarki diagram pada UML
Berdasarkan hirarki diagram tersebut dapat dijelaskan sebagai berikut: Diagram Struktur menegaskan apa yang harus terdapat pada sistem yang dimodelkan, terdiri dari enam diagram: Diagram Kelas (Class ( Diagram) Diagram Komponen (Component ( Diagram) Diagram Objek (Object ( Diagram) Diagram Struktur Campuran (Composite (Composite Structure Diagram) Diagram Diagram Penyebaran (Deployment ( Diagram) Diagram Paket (Package ( Diagram) Diagram Perilaku menegaskan apa yang harus harus terjadi pada sistem yang dimodelkan, terdiri dari tiga diagram: Diagram Aktivitas itas (Activity ( Diagram) Diagram Use Case (Use ( Case Diagram) Diagram Keadaan Mesin (State ( Machine Diagram) Diagram Interaksi merupakan bagian dari Diagram Perilaku, menegaskan aliran kendali dan data diantara bagian-bagian bagian bagian dalam sistem yang dimodelkan, terdiri dari empat diagram: Diagram Urutan (Sequence ( Diagram)
45
Diagram Komunikasi (Communication Diagram) Diagram Tinjauan Interaksi (Interaction Overview Diagram) Diagram Perwaktuan (Timing Diagram) 2.14.1 Diagram Use Case Diagram use case menggambarkan fungsionalitas yang diharapkan dari sebuah sistem. Yang ditekankan adalah ”apa” yang diperbuat sistem, dan bukan ”bagaimana”. Sebuah use case merepresentasikan sebuah interaksi antara aktor dengan sistem. Use case merupakan teknik untuk mengambil kebutuhan fungsional dari sistem. Use case bekerja dengan menggambarkan interaksi yang khas antara pengguna sistem dan sistem itu sendiri dan memberikan narasi tentang bagaimana sistem itu digunakan (Fowler, 2003). Tabel 2.3 Notasi diagram Use Case Notasi
Nama
Aktor
Aktor adalah entitas manusia atau sistem lain yang berinteraksi dengan sistem untuk melakukan pekerjaan-pekerjaan tertentu, segala sesuatu digunakan untuk meng-gambarkan pelaku atau pengguna yang sedang berinteraksi langsung dengan sistem
Sistem
Sistem Berupa ruang lingkup aplikasi yang dibangun
Use Case
Asosiasi / Association
<<extend>>
<>
Keterangan
Use case adalah kegiatan ata fungsi yang dilakukan oleh aktor, diberi nama sesuai dengan fungsi yang dilakukan oleh aktor Hubungan yang dilakukan oleh aktor dengan use case yang dilakukan oleh aktor tersebut.
Ekstensi / extend
Relasi use case tambahan ke sebuah use case dimana use case yang ditambahkan dapat berdiri sendiri walau tanpa use case tambahan itu.
Menggunakan / include
Relasi use case tambahan ke sebuah use case dimana use case yang ditambahkan memerlukan use case ini untuk menjalankan fungsinya atau sebagai syarat dijalankan use case ini.
46
Dalam pembicaraan tentang use case, pengguna biasanya disebut dengan aktor. Aktor adalah sebuah peran yang dimainkan oleh pengguna dalam interaksinya dengan sistem. Diagram use case dapat sangat membantu bila kita sedang menyusun kebutuhan sebuah sistem, mengkomunikasikan rancangan dengan klien, dan merancang kasus pengujian untuk semua fitur yang ada pada sistem. 2.14.2 Diagram Aktivitas (Activity Diagram) Diagram aktivitas adalah teknik untuk mendeskripsikan logika prosedural, proses bisnis dan aliran kerja dalam banyak kasus. Diagram aktivitas mempunyai peran seperti halnya flowchart, akan tetapi perbedaannya dengan flowchart adalah diagram aktivitas dapat menggambarkan proses paralel yang mungkin terjadi pada beberapa eksekusi sedangkan flowchart tidak bisa. Tabel 2.4 Notasi diagram aktivitas Notasi
Nama
Keterangan
Titik awal / Initial State
Titik awal digunakan untuk menggambarkan awal dari diagram aktivitas
Titik akhir / Final State
Titik akhir digunakan untuk menggambarkan akhir dari program aktivitas
Aktivitas / Activity
Aktivitas digunakan untuk menggambarkan aktivitas dalam diagram aktivitas
Percabangan / Decision
Pilihan untuk pengambilan keputusan, digunakan untuk menggambarkan kelakuan pada kondisi tertentu.
Fork
Fork digunakan untuk menunjukkan kegiatan-kegiatan yang dilakukan secara paralel atau untuk menggabungkan dua kegiatan paralel menjadi satu
Diagram aktivitas merupakan tahapan (state) diagram khusus, di mana sebagian besar tahapan adalah aksi dan sebagian besar transisi dipicu (trigger) oleh selesainya status sebelumnya (pemrosesan internal atau internal processing). Oleh karena itu diagram aktivitas tidak menggambarkan tingkah laku internal (behaviour internal) sebuah sistem (dan interaksi antar subsistem) secara eksak,
47
tetapi lebih menggambarkan proses-proses dan jalur-jalur aktivitas dari level atas secara umum. Sebuah aktivitas dapat direalisasikan oleh satu use case atau lebih. Aktivitas menggambarkan
proses
yang berjalan,
sementara use
case
menggambarkan bagaimana aktor menggunakan sistem untuk melakukan aktivitas. Diagram aktivitas dapat dibagi menjadi beberapa object garis batas (swimlane) untuk menggambarkan objek mana yang bertanggung jawab untuk aktivitas tertentu. Notasi – notasi yang digunakan dalam pemodelan diagram aktivitas dapat dilihat pada Tabel 2.4 (Munawar, 2005:109-110) 2.14.3 Diagram Kelas (Class Diagram) Diagram kelas menggambarkan struktur sistem dari segi pendefinisian kelas-kelas yang akan dibuat untuk membangun sistem. Kelas memiliki apa yang disebut atribut dan metode atau operasi. •
Atribut merupakan variabel-variabel yang dimiliki oleh suatu kelas
•
Operasi atau metode adalah fungsi-fungsi yang dimiliki oleh suatu kelas
Diagram kelas menggambarkan kelas dan hubungan antar-kelas di dalam sistem. Diagram kelas memberikan pandangan secara luas dari suatu sistem dengan menunjukkan kelas-kelasnya dan hubungan mereka. Diagram kelas bersifat statis, menggambarkan hubungan apa yang terjadi bukan apa yang terjadi jika mereka berhubungan. Kelas memiliki tiga area pokok : 1. Nama 2. Atribut 3. Metode atau operasi Atribut dan metode dapat memiliki salah satu sifat berikut : •
Private, tidak dapat dipanggil dari luar kelas yang bersangkutan
•
Protected, hanya dapat dipanggil oleh kelas yang bersangkutan dan anakanak yang mewarisinya
•
Public, dapat dipanggil oleh siapa saja
Berikut adalah notasi-notasi yang ada pada diagram kelas (A.S dan Shalahuddin, 2011:123):
48
Tabel 2.5 Notasi diagram kelas Notasi
Nama
Keterangan
nama_kelas + atribut + atribut + atribut
Kelas / Class
Himpunan dari objek-objek yang berbagi atribut serta operasi yang sama
Asosiasi / Association
Merupakan sebuah hubungan yang paling umum antar 2 kelas.
Agregasi / Aggregation
Relasi antar kelas dengan makna semua-bagian (whole-part), namun agregasi mungkin tidak melibatkan lebih dari dua kelas.
+ metode() + metode()
Komposisi / Composition Dependensi / Dependency
Generalisasi / Generalization
Relasi antar kelas dengan varian yang lebih kuat dari ”memiliki” atau hubungan asosiasi; komposisi lebih spesifik daripada agregasi. Menunjukkan bahwa satu kelas tergantung pada kelas yang lain karena menggunakan kelas itu pada waktu tertentu Relasi antar kelas dengan makna generalisasispesialisasi (umum khusus)
Visibilitas: Untuk menentukan visibilitas dari anggota kelas (yaitu, setiap atribut atau metode), berikut ini adalah notasi yang harus ditempatkan sebelum nama atribut atau metode (wikipedia.org): + # ~ / underline
Public Private Protected Package Derived Static
49
2.14.4 Diagram Sequence (Sequence Diagram) Diagram sequence menggambarkan perilaku objek pada use case dengan mendekripsikan waktu hidup objek dan pesan (message) yang dikirimkan dan diterima antar objek. Oleh karena itu, untuk menggambar diagram sequence maka harus diketahui objek-objek yang terlibat dalam sebuah use case beserta metodemetode yang dimiliki kelas yang diinstansiasi menjadi objek itu. Instansiasi adalah sebuah istilah yang mempunyai arti perwujudan, umumnya istilah ini digunakan untuk objek-objek yang menginisiasidari sebuah kelas. Diagram sequence terdiri atas dimensi vertikal (waktu) dan dimensi horizontal (objek-objek yang terkait). Diagram sequence biasa digunakan untuk menggambarkan skenario atau rangkaian langkah-langkah yang dilakukan sebagai respons dari sebuah event untuk menghasilkan output tertentu. Diawali dari apa yang men-trigger aktivitas tersebut, proses dan perubahan apa saja yang terjadi secara internal dan output apa yang dihasilkan. Masing-masing objek, termasuk aktor memiliki lifeline vertikal. Pesan digambarkan sebagai garis berpanah dari satu objek ke objek lainnya. Pada fase desain berikutnya, pesan akan dipetakan menjadi operasi/metode dari kelas. Activation bar menujukkan lamanya eksekusi sebuah proses, biasanya diawali dengan diterimanya sebuah pesan. Berikut adalah notasi-notasi yang ada pada diagram sequence (A.S dan Shalahuddin, 2011:138-139): Tabel 2.6 Notasi diagram sequence Notasi
atau nama_aktor
Nama
Aktor
Keterangan
Aktor adalah entitas manusia atau sistem lain yang berinteraksi dengan sistem untuk melakukan pekerjaanpekerjaan tertentu, segala sesuatu digunakan untuk menggambarkan pelaku atau pengguna yang sedang berinteraksi langsung dengan sistem
50
Tabel 2.6 Notasi diagram sequence (lanjutan)
nama_objek
2.15
Garis hidup / Lifeline
Menyatakan kehidupan suatu objek
Objek / Object
Menyatakan objek yang berinteraksi pesan
Waktu aktif / Activation
Menggambarkan waktu yang dibutuhkan suatu objek untuk menyelesaikan suatu aktivitas.
Pesan / Message
Digambarkan dengan tanda panah, yang menggambarkan komunikasi antar objek.
Pengujian Black-Box Pengujian Black-Box merupakan proses menjalankan program dengan
maksud menemukan kesalahan dan berfokus pada persyaratan fungsional perangkat lunak. Pengujian ini memungkinkan analisis sistem memperoleh kumpulan kondisi masukan yang akan mengerjakan seluruh keperluan fungsional program. Pengujian dimaksudkan untuk mengetahui apakah fungsi-fungsi, masukan, dan keluaran dari perangkat lunak sesuai dengan spesifikasi yang dibutuhkan. Dengan Black-Box analisis sistem akan memperoleh kumpulan kondisi dari input yang akan mengerjakan seluruh keperluan fungsional program. Tujuan metode ini mencari kesalahan-kesalahan pada: 1. Fungsi yang salah atau hilang 2. Kesalahan pada interface 3. Kesalahan pada struktur data atau akses database 4. Kesalahan performansi 5. Kesalahan inisialisasi dan tujuan akhir