BAB II LANDASAN TEORI
2.1 Aplikasi Aplikasi berasal dari kata application yang artinya penerapan, lamaran, penggunaan. Secara istilah aplikasi adalah program siap pakai yang direka untuk melaksanakan suatu fungsi bagi pengguna atau aplikasi yang lain dan dapat digunakan oleh sasaran yang dituju. Menurut Dhanta (2009), aplikasi (application) adalah software yang dibuat oleh suatu perusahaan komputer untuk
mengerjakan
tugas-tugas
tertentu,
misalnya
Microsoft
Word,
Microsoft Excel. Sedangkan menurut Anisyah (2000), aplikasi adalah penerapan, penggunaan atau penambahan . Dari pengertian tersebut, dapat disimpulkan bahwa berbagai
aplikasi bentuk
merupakan pekerjaan
software yang berfungsi atau
tugas-tugas
tertentu
untuk
melakukan
seperti penerapan,
penggunaan dan penambahan data.
2.2 Android Android adalah sebuah system operasi untuk perangkat mobile berbasis linux yang mencakup system operasi, middleware dan aplikasi,(8). Android dipuji sebagai “platform mobile pertama yang lengkap, terbuka dan bebas”,yaitu: a. Lengkap(Complete Platform): Para desainer dapat melakukan pendekataan yang komprehensif ketika mereka sedangkan mengembangkan platform
11
12
android. Android merupakan system operasi yang aman dan banyak menyediakan tools dalam membangun software dan memungkinkan untuk peluang pengembangan aplikasi. b. Terbuka (Open Source Platform): Platform Android disediakan melalui lisensi open source. Pengembang dapat dengan bebas mengembangkan aplikasi. Android sendiri menggunakan Linux Kernel 2.6. c. Free (Free Platform): Android adalah platform yang bebas untuk develop. Tidak ada lisensi atau biaya royaliti untuk dikembangkan pada platform Android. Tidak ada biaya keanggotaan diperlukan. Secara garis besar Arsitektur Android dapat dijelaskan sebagai berikut : a. Application dan Widget Adalah layer dimana kita berhubungan dengan aplikasi saja, dimana biasanya kita download aplikasi kemudian kita lakukan instalasi dan jalankan aplikasi tersebut. Dilayer terdapat aplikasi inti termasuk klien e-mail, program sms, calendar, maps, browser, contac, dan lain-lain. Semua aplikasi ditulis menggunakan bahasa Pemrograman Java. b. Application Frameworks Adalah Layer dimana para pembuat aplikasi melakukan pengembangan yang akan dijalankan disistem operasi Android, karena pada layer inilah aplikasi dapat dirancang dan dibuat, seperti content-providers yang berupa sms dan panggilan telepon. Komponen-komponen yang termasuk didalam application frameworks adalah sebagai berikut:
13
a. Views. b. Content Provider. c. Resource Manager. d. Notification Manager. e. Activity Manager. c. Libraries Adalah Layer dimana fitur-fitur Android berada, biasanya para pembuat aplikasi mengakses libraries untuk menjalankan aplikasinya. Layer ini meliputi berbagai library C/C++ inti seperti Libc dan SSL, serta: a. Libraries media untuk pemutaran media audio dan video. b. Libraries untuk manajemen tampilan. c. Libraries Graphics mencakup SGL dan OpenGL untuk grafis 2D dan 3D. d. Libraries SQLite untuk dukungan database. e. Libraries SSL dan Webkit terintegrasi dengan web browser dan security. f. Libraries LiveWebcore mencakup modern web browser dengan engine embedded web view. g. Libraries 3D yang mencakup implementasi OpenGL ES 1.0 API’s. h. Android Run Time Adalah layer yang membuat aplikasi Android dapat dijalankan dimana dalam prosesnya menggunakan implementasi Linux. Didalamnya terbagi menjadi dua bagian, yaitu: a. Core Libraries: Aplikasi Android dibangun dalam bahasa java, sedangkan DVM sebagai mesinnya sehingga core libraries dapat berfungsi sebagai penerjemahnya.
14
b. Dalvik Virtual Machine: Virtual mesin berbasis register yang dioptimalkan untuk menjalankan fungsi-fungsi secara efisien dimana merupakan pengembangan yang mampu membuat linux kernel untuk melakukan threading dan manajemen tingkat rendah. i.
Linux Kernel Linux kernel adalah layer dimana inti dari operating system dari Android itu berada. Berisi file-file system yang mengatur system processing, memory, resource, drivers, dan system-system operasi Android lainnya.
2.3 Kriptografi Kriptografi adalah ilmu yang mempelajari teknik-teknik matematika yang berhubungan dengan aspek keamanan informasi seperti kerahasian, integritas data, serta otentifikasi, (5). Tujuan penerapan kriptografi adalah untuk membuat sesuatu yang tersembunyi, dapat suatu pesan rahasia berupa teks, suara, gambar dan video. Di dalam kriptografi sering ditemukan berbagai istilah atau terminologi, beberapa istilah yang penting untuk diketahui diantaranya adalah: a. Pesan (message) adalah data atau informasi yang dapat dibaca atau dimengerti maknanya. Nama lainnya untuk pesan adalah plainteks (plaintext) atau teks jelas (clear text). b. Pengirim (sender) adalah entitas yang melakukan pengiriman pesan kepada entitas lainnya. c. Kunci (cipher) adalah aturan atau fungsi matematika yang digunakan untuk melakukan proses enkripsi dan dekripsi pada plaintext dan ciphertext.
15
d. Enkripsi adalah mekanisme yang dilakukan untuk merubah plaintext menjadi ciphertext. e. Dekripsi adalah mekanisme yang dilakukan untuk merubah ciphertext menjadi plaintext. f. Penerima
(recipient)
adalah
entitas
yang
menerima
pesan
dari
pengirim/entitas yang berhak atas pesan yang dikirim.
2.3.1 Ron Rivest Adleman (RSA) Algoritma
RSA
sebagai
salah
satu
algoritma
kriptografi
kunci
publik(asimetris), yaitu kunci yang digunakan untuk enkripsi berbeda dengan kunci yang digunakan untuk dekripsi, sehingga memungkinkan kedua belah pihak yang saling bertukar pesan memiliki kunci enkripsi dan dekripsi masing masing. Algoritma ini ditemukan oleh tiga orang peneliti dari MIT(Massachussets Institute of Technology) pada tahun 1976, mereka adalah Ron (R)ivest, Adi (S)hamir, dan Leonard (A)dleman,(2). Berikut ini akan dijelaskan mengenai proses enkripsi dan dekripsi dari metoda RSA:
1. Enkripsi RSA Berikut ini adalah langkah-langkah dalam proses enkripsi algoritma RSA: (9) 1. Menentukan besaran-besaran yang digunakan pada algoritma RSA: a. p dan q bilangan Prima
(rahasia)
b. n = p * q
(tidak rahasia)
c. Tetha/ Ø (n) = (p-1) (q-1)
(rahasia)
16
d. E(kunci enkripsi)
(rahasia)
e. D(kunci Dekripsi)
(tidak rahasia)
f. M(plainteks)
(rahasia)
g. C(cipherteks)
(tidak rahasia)
2. Membangkitkan pasangan kunci public dan kunci privat. a. Pilih dua buah bilangan prima sembarang, p dan q. b. Hitung n = p*q sebaiknya p ≠ q, sebab jika p = q maka n = p 2 sehingga p dapat diperoleh dengan menarik akar pangkat dua dari n. c. Hitung Ø(n) = (p-1) (q-1). d. Pilih kunci public e yang relative prima terhadap Ø(n). e. E relatif prima terhadap Ø(n) jika, PBB(e, Ø(n)) =1. f. PBB adalah pembagi bersama terbesar atau greatest common divisior(gcd). g. Bangkitkan kunci private dengan persamaan.
3. Mengubah plaintext dari karakter ke ASCII. Kode Standar Amerika untuk Pertukaran Informasi atau ASCII (American Standard Code for Information Interchange) merupakan suatu standar internasional dalam kode huruf dan simbol seperti Hex dan Unicode tetapi ASCII lebih bersifat universal, contohnya 124 adalah untuk karakter "|". Ia selalu digunakan oleh komputer dan alat komunikasi lain untuk menunjukkan teks. Kode ASCII sebenarnya memiliki komposisi bilangan biner sebanyak 8 bit. Dimulai dari 0000 0000 hingga 1111 1111. Total
17
kombinasi yang dihasilkan sebanyak 256, dimulai dari kode 0 hingga 255 dalam sistem bilangan Desimal. Berikut ini adalah bentuk dari tabel ASCII:
Gambar 2.1 Tabel ASCII. (http://id.wikipedia.org/wiki/ASCII)
4. Membuat fungsi array dari plainteks yang telah dirubah ke ASCII {M[1], M[2], M[3], M[4], M[5], M[6]} Keterangan : Masukan semua hasil ASCII kedalam array. 5. Lakukan proses enkripsi dengan rumus pada algoritma RSA C = Me mod n
18
Keterangan:
C = Ciphertext M = Plaintext yang telah diubah ke ASCII dan array, berarti telah melewati langkah 3 dan 4 e = Kunci public n=p*q
6. Terdapat hasil dari enkripsi algoritma RSA.
2. Dekripsi Algoritma RSA Berikut ini adalah langkah-langkah dalam proses enkripsi algoritma RSA: (9) 1. Menentukan besaran-besaran yang digunakan pada algoritma RSA: a. p dan q bilangan Prima
(rahasia)
b. n = p * q
(tidak rahasia)
c. Tetha/ Ø (n) = (p-1) (q-1)
(rahasia)
d. E(kunci enkripsi)
(rahasia)
e. D(kunci Dekripsi)
(tidak rahasia)
f. M(plainteks)
(rahasia)
g. C(cipherteks)
(tidak rahasia)
2. Membangkitkan pasangan kunci public dan kunci privat. a. Pilih dua buah bilangan prima sembarang, p dan q. b. Hitung n = p*q sebaiknya p ≠ q, sebab jika p = q maka n = p 2 sehingga p dapat diperoleh dengan menarik akar pangkat dua dari n. c. Hitung Ø(n) = (p-1) (q-1). d. Pilih kunci public e yang relative prima terhadap Ø(n).
19
e. E relatif prima terhadap Ø(n) jika, PBB(e, Ø(n)) =1. f. PBB adalah pembagi bersama terbesar atau greatest common divisior(gcd). g. Bangkitkan kunci private dengan persamaan
3. Membuat fungsi array dari chipertext yang telah dienkripsi oleh RSA. { C[1], C[2], C[3], C[4], C[5], C[6]} Keterangan : Masukan semua chipertext hasil dari RSA. 4. Bangkitkan kunci private dengan persamaan.
Keterangan: Untuk k lakukan fungsi array sampai d adalah bilangan bulat.K[1];K[2];……K[n] 5. Lakukan proses dekripsi dengan rumus pada algoritma RSA. M = Cd mod n Keterangan:
C = Ciphertext M = Plaintext d = Kunci private n=p*q
6. Terdapat hasil dari dekripsi algoritma RSA dalam bentuk ASCII. 7. Kemudian dilakukan proses ASCII to Char. 8. Hasil Akhirnya adalah plaintext awal.
20
2.3.2 Algoritma Advanced Encryption Standard(AES)-128 Salah satu agoritma enkripsi modern yang menjadi standar saat ini adalah algoritma AES(Advanced Encryption Standard), algoritma AES merupakan salah satu algoritma enkripsi kunci simetris, yaitu algoritma yang menggunakan kunci enkripsi yang sama dengan kunci yang digunakan untuk dekripsi, sehingga hanya pihak yang memiliki kuncinya saja yang dapat membaca isi data yang telah dienkripsi tersebut. Sejak November 2001 AES telah digunakan oleh NIST(National Institute of Standards an Technology) sebagai standar pemrosesan data untuk informasi federal, kemudian dilanjutkan pada bulan Juni 2003 pemerintah Amerika mengumumkan bahwa AES cukup aman untuk memproteksi informasi, (2). AES ini merupakan algoritma block cipher dengan menggunakan sistem permutasi dan substitusi (P-Box dan S-Box) bukan dengan jaringan Feistel sebagaiman block cipher pada umumnya. Jenis AES terbagi 3, yaitu : AES-128 , AES-192, dan AES-256. Berikut ini akan dipaparkan mengenai proses dari enkripsi dan dekripsi metoda AES-128: 1. Enkripsi Algoritma AES-128 1. Plaintext untuk proses ini adalah hasil enkripsi dari algoritma RSA. 2. Menentukan kunci simetri untuk proses enkripsi dan merubah string kunci ke ASCII kemudian di ubah lagi ke hexadecimal. 3. Memasukan plaintext pada blox state dan kunci pada blox cipherkey. Contoh:
21
Tabel 2.1 Tabel Kolom State dan CipherKey (4)
32
88
31
E0
2b
28
Ab F7
43
5a
31
37
7e
Ae
F7
Cf
F6
30
98
07
15
D2 15
4f
A8
8d
A2
34
16
A6 88
3c
State
CipherKey
4. Proses AddRoundKey. 5. Transformasi SubBytes SubBytes adalah mensubstitusikan 1 sel pada State dengan 1 sel yang bersesuaian pada tabel S-Box. Elemen-elemen pada SBox itu sendiri telah ditentukan sebelumnya. Pada tahapan ini matriks yang ada akan disubstitusikan kepada tabel yang sudah menjadi standarisasi dunia yang difungsikan menyulitkan para pembongkar sandi dengan menggunakan brute force. Tabel ini adalah tabel rijndael S-Box, berikut ini gambar dari tabel tersebut:
Gambar 2.2 Rijndael S-BOX (4)
22
6. Transformasi ShiftRows ShiftRow ini adalah pergeseran cell-cell yang terdapat pada matrik sebanyak kunci jenisnya. Jika menggunakan AES 128 maka perputarannya adalah matriks pada baris 2 akan dipindahkan ke cell kiri sebanyak satu kali atau satu byte, matriks pada baris 3 akan dipindahkan ke cell kiri sebanyak 2 kali atau 2 byte dan baris terakhir akan di lakukan pergeseran sebanyak 3 kali atau 3 byte. 7. Transformasi MixColumns MixColumns adalah tahapan dimana matriks state akan dikalikan dengan matriks yang sudah ditentukan.Misalnya pada hasil shiftrows diatas akan ditransformasikan dengan mixcolumns: Tabel 2.2 Hasil Transformasi MixColumns (4)
D4 E0
B8
1e
02 01 01 03
Bf
B4
41
27
03 02 01 01
5d
52
11
98
30
Ae
F1
E5
X
01 03 02 01 = 01 01 02 03
04
E0
48
28
66
cb
F8
06
81
19
D3
26
E5
9a
7a
4c
Kesimpulan dari perhitungan tranformasi MixColumns() adalah: a. Pertama hexa pada hasil shiftrows dirubah dulu ke bilangan biner. b. Apabila dikali dengan 02 atau 03, nilai binernya digeser 1 bit. c. Apabila dikali dengan 02 atau 03, dan nilai depan aslinya=1 maka di XOR kan dengan 1b. d. Apabila dikali dengan 02 atau 03, dan nilai depan aslinya=0 maka tidak di XOR kan dengan 1b.
23
e. Pada perkalian 03 diteruskan dengan di xor kan nilai aslinya. 8. Transformasi AddRoundKey Kunci dari bit dihasilkan dari kunci chiper yang asli dengan menggunkan tarnsformasi key expansion yang dijumlahkan bit pada array dari state dengan operasi XOR yang sederhana. 9. Langkah-langkah diatas dilakukan sebanyak 9 kali atau 9 round kemudian untuk round ke 10 transformasi mixcolumns tidak dilakukan lagi, setelah round ke 10 baru dihasilkan chipertext.
2. Dekripsi Algoritma AES-128 1. Chipertext untuk proses dekripsi adalah enkripsi dari algoritma AES-128. 2. Menentukan kunci simetri untuk proses dekripsi dan merubah string kunci ke ASCII kemudian di ubah lagi ke hexadecimal. 3. Memasukan chipertext pada blox state dan kunci pada blox cipherkey. Tabel 2.3 Kolom State dan CipherKey (4)
39
02
Dc
19
2b
28
ab
F7
25
dc
11
6a
7e
Ae
F7
Cf
84
09
85
0b
15
D2 15
4f
1d
fb
97
32
16
A6 88
3c
State 4. Proses Inv AddRoundKey. 5. Transformasi Inv ShiftRows.
CipherKey
24
6. Transformasi Inv SubBytes. 7. Transformasi Inv AddRoundKey. 8. Transformasi Inv MixColumns. 9. Langkah-langkah diatas dilakukan sebanyak 9 kali atau 9 round kemudian untuk round ke 10 transformasi invmixcolumns tidak dilakukan lagi, setelah round ke 10 baru dihasilkan chipertext.
2.3.3 Kriptografi Hibrida Kriptografi Hibrida adalah suatu algoritma yang memadukan kriptografi kunci simetris dengan kriptografi kunci public. Kriptografi hibrida ini memanfaatkan dua tingkatan kunci yaitu kunci simetri untuk enkripsi dan dekripsi pesan dan pasangan kunci privat dengan kunci publik untuk melindungi kunci simetri,(1). Sistem ini mengggabungkan chiper simetrik dan asimetrik. Proses ini dimulai dengan negosiasi menggunakan chiper asimetrik dimana kedua belah pihak setuju dengan private key/session key yang akan dipakai. Kemudian session key digunakan dengan teknik chiper simetrik untuk mengenkripsi conversation ataupun tukar-menukar data selanjutnya. Suatu session key hanya dipakai sekali sesi. Untuk sesi selanjutnya session key harus dibuat kembali.
2.4 Rational Unified Process (RUP) Rational Unified Process (RUP) merupakan suatu metode rekayasa perangkat lunak yang dikembangkan dengan mengumpulkan berbagai best practises yang
25
terdapat dalam industri pengembangan perangkat lunak,(10). Ciri utama metode ini adalah menggunakan use-case driven dan pendekatan iteratif untuk siklus pengembangan
perankat
lunak.
Gambar
dibawah
menunjukkan
secara
keseluruhan arsitektur yang dimiliki RUP.
Gambar 2.3 Gambar Arsitektur Rational Unified Process (10)
RUP menggunakan konsep object oriented, dengan aktifitas yang berfokus pada pengembangan model dengan menggunakan Unified Model Language (UML).
Berikut
ini
akan dijelaskan
mengenai
fase-fase
RUP
dalam
pengembangan perangkat lunak: a. Inception a. Menentukan Ruang lingkup proyek. b. Membuat ‘Business Case’ c. Menjawab pertanyaan “apakah yang dikerjakan dapat menciptakan ‘good business sense’ sehingga proyek dapat dilanjutkan.
26
b. Elaboration a. Menganalisa berbagai persyaratan dan resiko. b. Menetapkan ‘base line’. c. Merencanakan fase berikutnya yaitu construction. c. Construction a. Melakukan sederetan iterasi. b. Pada setiap iterasi akan melibatkan proses berikut: analisa desain, implementasi dan testing. d. Transistion a. Membuat apa yang sudah dimodelkan menjadi suatu produk jadi b. Dalam fase ini dilakukan: a. Beta dan performance testing. b. Membuat dokumentasi tambahan seperti; training, user guides dan sales kit.
2.5
Unified Modeling Language UML (Unified Modeling Language) adalah “bahasa standar untuk
penulisan
cetak
biru
perangkat
lunak.
UML
dapat
digunakan
untuk
memvisualisasikan, menentukan, mengonstruksi, dan mendokumentasikan artifakartifak suatu sistem software-intensive”,(11). 2.5.1 Use Case Diagram Use case adalah deskripsi fungsi dari sebuah sistem dari perspektif/sudut pandang para pengguna. Use case mendefinisikan “apa” yang dilakukan oleh
27
sistem dan elemen-elemennya, bukan “bagaimana” sistem & elemen-elemennya saling berinteraksi. Use case bekerja dengan menggunakan “scenario”, yaitu deskripsi urutan-urutan langkah yang menerangkan apa yang dilakukan pengguna terhadap sistem. Komponen simbol dasar yang dipunyai oleh usecase diagram adalah aktor, use-case, dan association seperti terlihat pada Tabel 2.4 dibawah ini. Tabel 2.4 Simbol pada use case diagram (http://www.cs.uakron.edu/~xiao/oop/UML1.ppt)
Simbol
Nama Actor
Use Case
Association
Keterangan Actor adalah pengguna sistem. Actor tidak terbatas hanya manusia saja, jika sebuah sistem berkomunikasi dengan aplikasi lain dan membutuhkan input atau memberikan output, maka aplikasi tersebut juga bisa dianggap sebagai actor. Use case digambarkan sebagai lingkaran elips dengan nama use case dituliskan didalam elips tersebut. Asosiasi digunakan untuk menghubungkan actor dengan use case. Asosiasi digambarkan dengan sebuah garis yang menghubungkan antara Actor dengan Use Case.
2.5.2 Class Diagram Class Diagram adalah sebuah spesifikasi yang jika diinstansiasi akan menghasilkan sebuah obyek dan merupakan inti dari pengembangan dan desain berorientasi obyek. Class menggambarkan keadaan (atribut/properti) suatu sistem, sekaligus menawarkan layanan untuk memanipulasi keadaan tersebut (metoda/fungsi). Class diagram menggambarkan struktur dan deskripsi class, package dan object beserta hubungan satu sama lain seperti containment, pewarisan, dan lain-lain.
28
1. Nama, merupakan nama dari sebuah kelas 2. Atribut, merupakan peroperti dari sebuah kelas. Atribut melambangkan batas nilai yang mungkin ada pada obyek dari class 3. Operasi, adalah sesuatu yang bisa dilakukan oleh sebuah class atau yang dapat dilakukan oleh class lain terhadap sebuah class. Tabel 2.5 Simbol pada class diagram (http://www.cs.uakron.edu/~xiao/oop/UML1.ppt)
Simbol
Nama Class
Keterangan Sebuah class digambarkan sebagai sebuah kotak yang terbagi atas 3 bagian. Bagian atas adalah bagian nama dari class. Bagian tengah mendefinisikan property / atribut class. Bagian akhir mendefinisikan method dari sebuah class. Association Sebuah asosiasi merupakan sebuah relationship paling umum antara 2 class, dan dilambangkan oleh sebuah garis yang menghubungkan antara 2 class. Garis ini bisa melambangkan tipe-tipe relationship dan juga dapat menampilkan hukum-hukum multiplisitas pada sebuah relationship: Composition Jika sebuah class tidak bisa berdiri sendiri dan harus merupakan bagian dari class yang lain, maka class tersebut memiliki relasi Composition terhadap class tempat dia bergantung tersebut. Dependency Umumnya penggunaan dependency digunakan untuk menunjukkan operasi pada suatu class yang menggunakan class yang lain. Aggregation Aggregation mengindikasikan keseluruhan bagian relationship dan biasanya disebut sebagai relasi “mempunyai sebuah” atau “bagian dari”. Generalization Sebuah relasi generalization sepadan dengan sebuah relasi inheritance pada konsep berorientasi obyek.
29
2.5.3 Statechart Diagram Diagram statechart memungkinkan untuk memodelkan bermacammacam state yang mungkin dialami oelh objek tunggal. Diagram statechart digunakan untuk menggambarkan perilaku dinamik sebuah objek tunggal. Berikut adalah simbol-simbol yang ada pada diagram statechart seperti terlihat pada Tabel 2.6 dibawah ini. Tabel 2.6 Simbol statechart diagram (http://www.cs.uakron.edu/~xiao/oop/UML1.ppt)
Simbol
Nama Keterangan Start (Initial State) Start atau initial state adalah state atau keadaan awal pada saat sistem mulai hidup End (Final State) End atau final state adalah state keadaan akhir dari daur hidup suatu sistem. Event Event adalah kegiatan yang menyebabkan berubahnya status mesin. State
State
State atau status adalah keadaan sistem pada waktu tertentu. State dapat berubah jika ada event tertentu yang memicu perubahan tersebut.
2.5.4 Activity Diagram Activity diagram digunakan untuk mendokumentasikan alur kerja pada sebuah sistem. Pada dasarnya, activity diagram merupakan variasi dari statechart diagram. Berikut adalah simbol activity diagram seperti terlihat pada Tabel 2.7 dibawah ini.
30
Tabel 2.7 Simbol pada activity diagram (http://www.cs.uakron.edu/~xiao/oop/UML1.ppt)
Simbol
Nama
Deskripsi
Swimline
Memisahkan pelaku yang bertanggung jawab terhadap aktivitas yang terjadi.
Titik Awal
Status awal aktivitas sistem, sebuah diagram aktivitas memiliki status awal Status akhir yang dilakukan sistem, sebuah diagram aktivitas memiliki sebuah status akhir. State atau status adalah keadaan sistem pada waktu tertentu. State dapat berubah jika ada event tertentu yang memicu perubahan tersebut.
Titik Akhir
State
Activity
Percabangan
Fork
Aktivitas yang dilakukan sistem, aktivitas biasanya diawali dengan kata kerja Asosiasi percabangan dimana jika ada pilihan aktivitas lebih dari satu yang terjadi Digunakan untuk menunjukkan kegiatan yang dilakukan secara parallel atau untuk menggabungkan dua kegiatan parallel menjadi satu.
2.6 FlowChart
Flowchart
merupakan metode untuk menggambarkan tahap-tahap
pemecahan masalah dengan merepresentasikan simbol-simbol tertentu yang mudah dimengerti. program flowchart merupakan bagan untuk menggambarkan urutan logika dari suatu prosedur pemecahan masalah. Berikut adalah notasi yang digunakan dalam program flowchart.
31
Tabel 2.8 Simbol Program Flowchart (Sutedjo, 2002)
Notasi
Nama Proses
Input/ Output
Keterangan
Pengujian
Awal/ akhir program
Konektor pada satu halaman
Konektor pada satu halaman
Arah
Pemberian nilai awal
2.7 Teknik Pengujian Pentingnya pengujian perangkat lunak mengacu pada kualitas perangkat lunak yang melibatkan sederetan aktivitas produksi di mana peluang terjadinya kesalahan manusia sangat besar dan karena ketidak mampuan manusia dalam melakukan komunikasi dengan sempurna terhadap kebutuhan yang diinginkan user maka pengembangan perangkat lunak harus diiringi dengan aktivitas jaminan kualitas dengan melakukan pengujian terhadap perangkat lunak tersebut. Pada
32
dasarnya, pengujian merupakan satu langkah dalam proses rekayasa perangkat lunak unuk mencari kesalahan yang terdapat pada perangkat lunak sebelum perangakat lunak tersebut digunakan. Sejumlah aturan yang berfungsi sebagai sasaran pengujian pada perangkat lunak adalah: (11) 1. Pengujian adalah proses eksekusi suatu program dengan maksud menemukan kesalahan. 2. Test case yang baik adalah test case yang memiliki probabilitas tinggi untuk menemukan kesalahan yang belum pernah ditemukan sebelumnya. 3. Pengujian yang sukses adalah pengujian yang mengungkap semua kesalahan yang belum pernah ditemukan sebelumnya. Untuk mendapatkan kesalahan pada perangkat lunak, digunakan beberapa teknik pengujian diantaranya : 1. Pengujian White-Box Pengujian white-box adalah metode disain test case yang meggunakan struktur kontrol disain prosedural untuk memperoleh test case. Dengan menggunakan metode pengujian white-box, perekayasa dapat melakukan test case, yang: (11) 1.
Memberikan jaminan bahwa semua jalur independen pada suatu modul telah digunakan paling tidak satu kali.
2.
Mengguanakan semua keputusan logis pada sisi true dan false.
3.
Mengeksekusi semua loop pada batasan mereka dan pada batas operasional meraka.
33
4.
Menggunkan
struktur
data
internal
untuk
menjamin
validasinya. Berikut ini adalah teknik pengujian dari white-box: 1. Uji Coba Basis Path Merupakan teknik uji coba white box yang diusulkan Tom McCabe. Metode ini memungkinkan perancang test case mendapatkan ukuran kekompleksan logical dari perancangan prosedural dan menggunakan ukuran ini sebagai petunjuk untuk mendefinisikan basis set dari jalur pengerjaan. Test case yang didapat digunakan untuk mengerjakan basis set yang menjamin pengerjaan setiap perintah minimal satu kali selama uji coba. 2. Notasi FlowGraph
Gambar 2.4 Notasi FlowGraph (avi.staff.gunadarma.ac.id/Downloads/.../M5+WhiteBox+Testing.pdf)
Lingkaran (node), menggambarkan satu/lebih perintah prosedural. Urutan proses dan keputusan dapat dipetakan dalam satu node. Tanda panah (edge), menggambarkan aliran kontrol. Setiap node harus mempunyai tujuan node. Region adalah daerah yang dibatasi oleh edge dan node.
34
3. Cyclomatic Complexity Cyclomatic complexity adalah metrik software yang menyediakan ukuran kuantitatif dari kekompleksan logikal program. Apabila digunakan dalam konteks metode uji coba basis path, nilai yang dihitung untuk cyclomatic complexity menentukan jumlah jalur independen dalam basis set suatu program dan memberi batas atas untuk jumlah uji coba yang harus dikerjakan untuk menjamin bahwa seluruh perintah sekurang-kurangnya telah dikerjakan sekali. Cyclomatic complexity digunakan untuk mencari jumlah path dalam satu flowgraph. Dapat dipergunakan rumusan sebagai berikut : 1. Jumlah region grafik alir sesuai dengan cyclomatic complexity. 2. Cyclomatix complexity V(G) untuk grafik alir dihitung dengan rumus: V(G) = E - N + 2 Dimana: E = jumlah edge pada grafik alir N = jumlah node pada grafik alir 3. Cyclomatix complexity V(G) juga dapat dihitung dengan rumus: V(G) = P + 1 Dimana P = jumlah predicate node pada grafik alir 4. Graph metric Graph metrik merupakan software yang dikembangkan untuk membantu uji coba basis path atau struktur data. Graph metrik adalah
35
matrik empat persegi yang mempunyai ukuran yang sama dengan jumlah node pada flowgraph. Masing-masing baris dan kolom mempunyai hubungan dengan node yang telah ditentukan dan pemasukan data matrik berhubungan dengan hubungan (edge) antar node. Contoh sederhana pemakaian graph metrik dapat digambarkan sebagai berikut :
Gambar 2.5 Graph Matrik (avi.staff.gunadarma.ac.id/Downloads/.../M5+WhiteBox+Testing.pdf)
2. Pengujian Black-Box Pengujian black-box memungkinkan perekayasa perangkat lunak mendapatkan serangakaian kondisi input yang sepenuhnya menggunakan semua persyaratan fungsional untuk suatu program. Pengujian black-box berusaha menemukan kesalahan dalam kategori sebagai berikut : 1.
Fungsi-fungsi yang tidak benar atau hilang.
2.
Kesalahan interface.
3.
Kesalahan dalam struktur data atau akses database.
4.
Kesalahan kinerja.
5.
Inisaialisasi dan kesalahan terminasi.