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 aplikasi merupakan software yang berfungsi untuk melakukan berbagai bentuk pekerjaan atau tugas-tugas tertentu seperti penerapan, penggunaan dan penambahan data.
2.2 Teori Dasar Kriptografi Kriptografi berasal dari bahasa yunani, crypto dan graphia. Crypto berarti secret (rahasia) dan graphia berarti writing (tulisan). Jadi kriptografi berarti secret writing (tulisan rahasia). Menurut terminologinya, kriptografi adalah ilmu dan seni untuk menjaga keamanan pesan ketika pesan dikirim dari suatu tempat ke tempat lain. Kriptografi pada dasarnya sudah dikenal sejak lama, menurut catatan sejarah, Kriptografi sudah digunakan bangsa Mesir sejak 4000 tahun yang lalu oleh raja-raja Mesir pada saat perang untuk mengirimkan pesan rahasia kepada panglima perangnya melalui kurir-kurirnya. Orang yang melakukan penyandian ini disebut kriptografer.
8
9
Teknik pengacakan data yang disebut enkripsi, telah membentuk suatu bidang keilmuan yang disebut kriptografi. Kriptografi adalah suatu ilmu dan seni dalam menjaga kerahasiaan suatu pesan (kode). Kriptografi juga dapat diartikan sebagai ilmu yang mempelajari teknik-teknik matematika yang berhubungan dengan aspek keamanan informasi seperti kerahasiaan data, keabsahan data, integritas data, serta autentikasi data (A. Menezes, P. Van Oorschot and S. Vanstone). Namun, pada kriptografi tidak semua aspek keamanan informasi akan ditangani. Ada empat tujuan mendasar dari kriptografi yang juga merupakan aspek keamanan informasi, yaitu sebagai berikut : 1. Kerahasiaan (confidentiality) Kerahasiaan layanan yang digunakan untuk menjaga agar pesan tidak dapat dibaca oleh pihak-pihak yang tidak berhak. 2. Integritas Data (data integrity) Integritas data adalah layanan yang menjamin bahwa pesan masih asli/utuh atau belum pernah dimanipulasi selama pengiriman. 3. Otentikasi (authentication) Otentikasi adalah layanan yang berhubungan dengan identifikasi, baik mengidentifikasi
kebenaran
pihak-pihak
yang
berkomunikasi
(user
authentication atau entity authentication). Dua pihak yang saling berkomunikasi harus dapat mengontetikasi satu sama lain sehingga dapat memastikan sumber pesan. 4. Nirpenyangkalan (non-repudiation) Nirpenyangkalan (non-repudiation) adalah layanan untuk mencegah entitas yang berkomunikasi melakukan penyangkalan, yaitu pengirim pesan menyangkal
10
melakukan pengiriman pesan atau penerima pesan menyangkal telah menerima pesan. Plaintext adalah pesan yang akan dirahasiakan, dinotasikan dengan m (Message), yang dapat berupa bit tream, file text, digitized voice stream, digital video image atau lebih singkatnya m adalah data binary. Enkripsi adalah proses pengaman data atau informasi dengan membuat informasi tersebut seolah tidak bermakna atau tidak dapat dibaca, enkripsi dinotasikan dengan E, berfungsi untuk mengubah m menjadi c, dalam matematika dinotasikan dengan: E(m) = c. Keterangan rumus: E = enkripsi m = plaintext c = ciphertext Ciphertext adalah hasil dari proses enkripsi, dinotasikan dengan c, juga berupa data binary yang kadang-kadang mempunyai ukuran yang sama dengan m, lebih kecil dari m atau lebih besar dari m. Dekripsi adalah kebalikan dari enkripsi yaitu proses mengubah data menjadi bermakna. Fungsi dekripsi D, berfungsi untuk mengubah c menjadi m, dalam matematika dinotasikan dengan: D(c) = m. Keterangan rumus: D = dekripsi c = ciphertext m = plaintext
11
Crypanalyst adalah orang mempelajari ilmu dan seni ilmu membongkar ciphertext. Menurut ISO 7498-2 istilah yang lebih tepat untuk decryption adalah ”dechiper” Chiper adalah kata lain dari algoritma yang digunakan untuk melakukan melakukan proses kriptografi. Chiper juga sering disebut teknik yang digunakan untuk proses enkripsi dan deskripsi.
2.3 Algoritma Kriptografi Algoritma kriptografi atau sering disebut dengan chiper adalah suatu fungsi matematis yang digunakan untuk melakukan enkripsi dan dekripsi (Schneier, 1996). Ada dua macam algoritma kriptografi, yaitu algoritma simetris (symmetric algorithms) dan algoritma asimetris (asymmetric algorithms). Algoritma kriptografi terdiri dari tiga fungsi dasar, yaitu : 1. Enkripsi : proses menyandikan plainteks menjadi ciphertext. Dimana plainteks disebut dengan pesan asli (pesan yang ingin dikirim), sedangkan ciphertext adalah pesan ter-enkrips (tersandi) yang merupakan hasil enkripsi. Plaintext
Enkripsi
Chipertext
Gambar 2.1 Proses Enkripsi (Andri Kristanto; 2003) 2.
Dekripsi : adalah kebalikan dari enkripsi yakni mengubah ciphertext menjadi plaintext.
Plaintext
Dekripsi
Chipertext
Gambar 2.2 Proses Dekripsi (Andri Kristanto; 2003)
12
3. Kunci : yang dimaksud disini adalah kunci yang dipakai untuk melakukan enkripsi dan dekripsi. Kunci terbagi menjadi dua bagian, kunci rahasia (private key) dan kunci umum (public key) 2.3.1 Algoritma Simetris Algoritma simetris adalah algoritma kriptografi yang menggunakan kunci enkripsi yang sama dengan kunci dekripsinya. Algoritma ini mengharuskan pengirim dan penerima menyetujui suatu kunci tertentu sebelum mereka saling berkomunikasi. Keamanan algoritma simetris tergantung pada kunci, membocorkan kunci berarti bahwa orang lain dapat mengenkripsi dan mendekripsi pesan. Agar komunikasi tetap aman, kunci harus tetap dirahasiakan. Algoritma simetris sering juga disebut dengan algoritma kunci rahasia, algoritma kunci tunggal, atau algoritma satu kunci. Sifat kunci yang seperti ini membuat pengirim harus selalu memastikan bahwa jalur yang digunakan dalam pendistribusian kunci adalah jalur yang aman atau memastikan bahwa seseorang yang ditunjuk membawa kunci untuk dipertukarkan adalah orang yang dapat dipercaya. Masalahnya akan menjadi rumit apabila komunikasi dilakukan secara bersama-sama oleh sebanyak n pengguna dan setiap dua pihak yang melakukan pertukaran kunci, maka akan terdapat sebanyak C =
=
kunci rahasia yang harus
dipertukarkan secara aman.
Plainteks
Enkripsi
Kunci enkripsi (K)
Cipherteks
Dekripsi
Plainteks
Kunci dekripsi (K)
Gambar 2.3 Skema algoritma simetris (Rinaldi Munir; 2006)
13
Contoh dari algoritma kriptografi simetris adalah Chiper Permutasi, Chiper Substitusi, Chiper Hill, OTP, RC6, Twofish, Magenta, FEAL, SAFER, LOKI,CAST, Rijndael (AES), Blowfish, GOST, A5, Kasumi, DES dan IDEA.
2.3.2 Algoritma Asimetris Algoritma asimetris, sering juga disebut dengan algoritma kunci publik, menggunakan dua jenis kunci, yaitu kunci publik (public key) dan kunci rahasia (secret key). Kunci publik merupakan kunci yang digunakan untuk mengenkripsi pesan, sedangkan kunci rahasia digunakan untuk mendekripsi pesan. Kunci publik bersifat umum, artinya kunci ini tidak dirahasiakan sehingga dapat dilihat oleh siapa saja. Sedangkan kunci rahasia adalah kunci yang dirahasiakan dan hanya orang-orang tertentu saja yang boleh mengetahuinya. Keuntungan utama dari algoritma ini adalah memberikan jaminan keamanan kepada siapa saja yang melakukan pertukaran informasi meskipun diantara mereka tidak ada kesepakatan mengenai keamanan pesan terlebih dahulu maupun saling tidak mengenal satu sama lainnya.
Plainteks
Enkripsi
Kunci enkripsi (K1)
Cipherteks
Dekripsi
Plainteks
Kunci dekripsi (K2)
Gambar 2.4 Skema algoritma asimetris (Rinaldi Munir; 2006)
Algoritma asimetris pertama kali dipublikasikan oleh Diffie dan Hellman pada tahun 1976 dalam papernya yang berjudul “New Directions in Cryptography”. Menurut Diffie dan Hellman, ada beberapa syarat yang perlu diperhatikan pada algoritma asimetris, yaitu:
14
1. Penerima B membuat pasangan kunci, yaitu kunci publik k
pB
dan kunci
rahasia k rB 2. Pengirim A dengan kunci publik B dan pesan x, pesan dienkripsi dan
diperoleh ciphertext c = E k pB(x) 3. Penerima B untuk mendekripsi ciphertext menggunakan kunci privat B untuk
mendapatkan kembali pesan aslinya d= k rB [d= k rB (x)] d= k rB (c) = x 4. Dengan mengetahui kunci publik k
pB,
bagi penyerang akan kesulitan dalam
melakukan untuk mendapatkan kunci rahasia. 5. Dengan mengetahui kunci publik k
pB
dan ciphertext c, bagi penyerang akan
mengalami kesulitan untuk mengetahui pesan x. Contoh dari algoritma asimetris adalah RSA, ElGamal, McEliece, LUC dan DSA (Digital Signature Algorithm). Dalam melakukan proses enkripsi, sering digunakan plainteks berupa data ataupun pesan yang besar, sehingga membutuhkan waktu yang lama apabila dilakukan proses sekaligus pada plainteks tersebut. Oleh karena itu, plainteks dapat dipotong- potong menjadi beberapa blok-blok yang sama panjang. Kemudian dari blokblok yang diperoleh tersebut dilakukan proses enkripsi, dan hasil ciphertext-nya dapat didekripsi dan digabungkan kembali menjadi plainteks. Algoritma kriptografi yang menggunakan mekanisme seperti ini disebut dengan cipher (block cipher).
2.4 Teknik Dasar Kriptografi Berikut ini dicontohkan motode atau cipher yang menjadi dasar dalam melakukan proses enkripsi dan deskripsi pada suatu data.
15
2.4.1. Metode Subtitusi Metode ini berkerja dengan menukar satu karakter yang lain. Langkah pertama adalah membuat suatu tabel substitusi. Tidak ada aturan khusus dalam membuat tabel subsitusi, dapat dibuat sesuai keinginan, dengan catatan bahwa penerima pesan memiliki tabel yang sama utuk keperluan deskripsi. Semakin acak tabel subtitansi maka semakin sulit pemecahan ciphertext. Salah satu contoh teknik ini adalah Cesar cipher. Tabel 2.1. Tabel Subtitusi A B C D E F G H I E F G H I
J K L M N O P Q R S T U V W X Y Z
J K L M N O P Q R S T U V W X Y Z A B C D
Plaintext : METODE SUBTITUSI Ciphertext : QIXSHI WYFXMXYWM
2.4.2. Teknik blok (blocking) Sistem enkripsi kadang membagi plaintext menjadi blok-blok yang terdiri atas beberapa karakter yang kemudian dienkripsikan secara independen (masing-masing). Contoh plaintext yang dienkripsikan dengan menggunakan teknik blocking adalah : Tabel 2.2 Teknik blok (blocking) E
P
K
N
S
R
BLOK 2
K
I
I
BLOK 3
R D
P
BLOK 4
I
S
BLOK 5
E
I
BLOK 1
16
Dengan menggunakan teknik blok dipilih jumlah lajur dan kolom untuk penulisan pesan. Jumlah lajur atau kolom menjadi kunci bagi kriptografi dengan teknik ini. Plaintext dituliskan secara vertikal ke bawah berurutan pada lajur, dan dilanjutkan pada kolom berikutnya sampai seluruhnya tertulis. Ciphertext-nya adalah hasil pembacaan plaintext secara horizontal berurutan sesuai dengan bloknya. Jadi ciphertext yang dihasilkan dengan teknik ini adalah “EPKI NSR KII RDP IES”. Plaintext dapat pula ditulis secara horizontal dan ciphertext-nya adalah hasil pembacaan secara vertikal.
2.4.3. Teknik permutasi atau teknik transposisi Teknik ini memindahkan atau merotasikan karakter dengan aturan tertentu. Prinsipnya adalah berlawanan dengan teknik subtitusi. Dalam teknik subtitusi, karakter berada posisi yang tetap tetapi identitasnya yang diacak. Pada teknik permutasi, identitas karakternya tetap, namun posisinya yang diacak sebelum dilakukan permutasi, umumnya plaintext dibagi menjadi blok-blok dengan panjang yang sama. Contoh: Plaintext
Ciphertext
1
2
3
4
1
2
3
4
Gambar 2.5 Permutasi
2.5 Algoritma DES DES, akronim dari Data Encryption Standard, adalah nama dari Federal Information Processing Standard (FIPS) 46-3, yang menggambarkan Data Encryption Algorithm
17
(DEA). DEA juga didefinisikan dalam ANSI standard X3.92. DEA merupakan perbaikan dari algoritma Lucifer yang dikembangkan oleh IBM pada awal tahun 1970-an. Meskipun algoritmanya pada intinya dirancang oleh IBM, NSA dan NBS (sekarang NIST (National Institute of Standards and Technology)) memainkan peranan penting pada tahap akhir pengembangan. DEA, sering disebut DES, telah dipelajari secara ekstensif sejak publikasinya dan merupakan algoritma simetris yang paling dikenal dan paling banyak digunakan. DEA memiliki ukuran blok 64-bit dan menggunakan kunci 56-bit kunci selama eksekusi (8 bit paritas dihilangkan dari kunci 64 bit). DEA adalah symmetric cryptosystem, khususnya chipher Feistel 16-rounddan pada mulanya dirancang untuk implementasi hardware. Saat digunakan untuk komunikasi, baik pengirim maupun penerima harus mengetahui kunci rahasia yang sama, yang dapat digunakan untuk mengenkrip dan mendekrip pesan, atau untuk menggenerate dan memverifikasi message authentication code (MAC). DEA juga dapat digunakan untuk enkripsi single user, seperti untuk menyimpan file pada harddisk dalam bentuk terenkripsi. Dalam lingkungan multiuser, distribusi kunci rahasia akan sulit. Public-key cryptography menyediakan solusi yang ideal untuk masalah ini. NIST telah mensertifikasi kembali DES (FIPS 46-1, 46-2, 46-3) setiap 5 tahun. FIPS 46-3 mensahkan kembali penggunaan DES sampai Oktober 1999, namun single DES hanya diijinkan untuk legacy systems. FIPS 46-3 mencakup definisi dari triple-DES (TDEA, menurut X9.52); TDEA adalah "pilihan algoritma simetris yang disetujui oleh FIPS." Dalam beberapa tahun, DES dan triple-DES akan digantikan dengan AES (Advanced Encryption Standard).
18
2.5.1 Cara kerja Algoritma DES DES merupakan block-chiper, artinya dalam sekali proses, data dienkrip (atau didekrip) sekaligus dalam beberapa byte, bukan hanya satu byte seperti pada algoritma klasik. Lihat Gambar 2.6. Ukuran blok DES ialah 64 bit. Ke-64 bit ini ditransformasi dengan cara tertentu sehingga cara yang sama hanya dapat dilakukan untuk mendekrip hasil enkripsi. DES menggunakan kunci 56 bit. Sebenarnya kunci yang dimasukkan juga 64 bit, namun 8 bit digunakan untuk keperluan pengecekan paritas (parity checking). Bitbit ini berada pada posisi 8, 16, 24, 32, 40, 48, 56, serta 64 dan pada proses enkripsidekripsi akan dihilangkan sehingga tersisa hanya 56 bit.
Gambar 2.6 Proses iterasi dalam DES.
Ada 16 tingkat proses yang disebut ronde (round). Ke-16 round ini diapit permutasi awal IP dan permutasi akhir FP yang masing-masing merupakan kebalikan. Artinya, permutasi FP akan membalik permutasi yang dilakukan IP, dan sebaliknya. Sebenarnya penggunaan IP dan FP di sini tidak signifikan terhadap keseluruhan proses. Namun
19
kelihatannya kedua permutasi ini sengaja dihadirkan untuk memfasilitasi perangkat keras tahun 1970-an yang sulit memproses masukan dan keluaran dengan ukuran blok yang panjang. Sebelum diproses oleh seluruh round di atas, blok data input dipecah menjadi 2 bagian, masing-masing 32 bit, dan diproses bergantian (secara menyilang), proses ini dikenal dengan istilah Skema Fiestel. Skema ini memastikan agar enkripsi dan dekripsi merupakan 2 proses yang amat mirip. Perbedaannya ialah bahwa pada proses dekripsi, subkey (di sini kunci juga dipecah) digunakan dengan urutan yang terbalik. Selebihnya sama. Dengan demikian, implementasi DES amat sederhana, terutama bila ditanamkan ke dalam perangkat keras. Artinya, tidak dibutuhkan proses enkripsi dan dekripsi yang terpisah. Fungsi F pada Gambar 2.6 ialah Fungsi Feitsel. Fungsi ini memroses 32 bit data dan terdiri dari 4 tahap. Lihat Gambar 2.7 Keempat tahap ini ialah: 1. Expansion. 2. Key mixing. 3. Substitusion. 4. Permutation.
Gambar 2.7 Fungsi Feitsel dalam DES.
20
DES beroperasi pada ukuran blok 64 bit. DES mengenkripsikan 64 bit plainteks menjadi 64 bit chiperteks dengan menggunakan 56 bit kunci internal (internal key). kunci internal dibangkitkan dari kunci eksternal (external key) yang panjangnya 64 bit. Algoritma dasarnya adalah pertama-tama dengan mempermutasikan dengan matriks permutasi awal (initial permutation), kemudian menchiperkannya dengan sebuah fungsi F sebanyak 16 putaran, dan terakhir adalah dengan mempermutasikannya lagi dengan invers dari matriks yang dipakai sebelumnya (invers initial permutation). Plaintext Initial permutation
16 kali
Enciphering
Invers Initial Permutation
Ciphertext Gambar 2.8 Skema DES (Rinaldi Munir; 2006)
Proses enkripsi dan dekripsi pada DES dilakukan 16 tahap, pada awal enkripsi terlebih dahulu dilakukan Initial Permutation (IP) terhadap plaintext dan pada akhir enkripsi dilakukan IP kembali. Pada saat dekripsi prosesnya sama dengan enkripsi, tetapi kunci yang digunakan untuk awal dekripsi dimulai dari K16 …K1. Matriks P, E, S-Boxes, IP, PC-1 dan PC-2 yang digunakan juga sama dengan pada saat enkripsi.
21
Plainteks
IP
L0
R0
f
K1
R1 L0 f ( R0 , K 1 )
L1 = R0
f
K2
L2 = R1
R 2 L1 f ( R1 , K 2 )
L15 = R14
R15 L14 f ( R14 , K 15 )
f
R16 L15 f ( R15 , K 16 )
L16 = R15
IP -1
Cipherteks
Gambar 2.9 Algortima Enkripsi DES
K16
22
Proses enkripsi dimulai dengan mengubah pesan (m) menjadi biner dengan ukuran blok 64 bit. Kemudian terhadap pesan dalam biner diacak dengan menggunakan IP, kemudian pesan dibagi 2 @ 32 bit Left dan Right. Untuk setiap putaran (round); terhadap Li dan Ri dilakukan pertukaran dari kanan ke kiri. Sementara untuk mendapatkan Ri digunakan f dan dilakukan operasi XOR dengan Li; kecuali putaran terakhir (round 16) dilakukan sebaliknya. Jadi Li = Ri-1 dan Ri = Li-1 f(Ri-1, Ki) i = 1,2,...15. Sementara untuk i=16 dilakukan dengan cara sebaliknya yaitu L16 = L15 f(R15, K16) dan R16= L15. f adalah sebuah fungsi yang memetakan (map) string 32-bit ke string 32-bit yang dihitung dari kunci dan Ri-1. Pertama, bagian kanan Ri-1 di-expand menjadi 48 bit dengan menggunakan bitselection table (matrix) E. Kemudian, lakukan operasi XOR string 48-bit yang baru dengan Ki. Lalu string hasil 48-bit dikompress menjadi 32 bit dengan menggunakan S-Boxes. Kedelapan S-Boxes dirancang untuk memetakan string 6-bit menjadi string 4-bit. Misalkan satu string 6-bit adalah matriks 4 x 16 [0..3, 0..15]. Bit pertama dan ke 6 diinterpretasikan sebagai string 2-bit untuk menghasilkan baris [0..3]; bit ke-2 sampai ke-5 diinterpretasikan sebagai string 4-bit untuk menghasilkan kolom [0..15]. Contoh, sebuah string 6-bit 101011 akan diinterpretasikan sebagai posisi array [3,5]. Elemen pada posisi tersebut adalah string 4-bit dalam bentuk biner. Jadi string 48-bit dianggap sebagai 8 blok masing-masing 6-bit; dengan transformasi menggunakan salah satu dari 8 S-Boxes akan menghasilkan 8 blok dengan panjang 4; sehingga diperoleh string 32-bit. Dengan menggunakan string 6-bit 101011 di atas sebagai input terhadap S2-Box yaitu baris ke-3 kolom ke-5 menghasilkan output = 15 (1111). Akhirnya, blok 32-bit ini dipermutasikan dengan P dan di-XOR-kan dengan Li-1 untuk menghasilkan Ri. Secara singkat fungsi f dapat dituliskan sebagai: F(Ri-1, Ki) = P(S(E(Ri-1) Ki)); yang diuraikan menjadi :
23
1. Expansikan Ri-1 2. XOR-kan Ri-1 yang telah di-expand dengan Ki 3. Gunakan S-Box terhadap hasil langkah 2 untuk mengubah string 48 bit jadi 32bit 4. Gunakan permutasi P dan XOR-kan dengan Li-1 untuk menghasilkan Ri
Yang menjadi pertanyaan, adalah bagaimana kunci 48 bit pada setiap round dari 16 diperoleh? Untuk itu kita perlu memperhatikan/menggunakan PC-1, PC-2 dan The Key Schedule of Left Shift LS berikut : Iterasi Ke
1 2 3
4
5
6
7
8
9
10
11
12
13
14
15
16
#LeftShift
1 1 2
2
2
2
2
2
1
2
2
2
2
2
2
1
Pada setiap tahap, kunci 56-bit mula-mula digunakan untuk menghasilkan kunci 48bit Ki (i=1,2..16). Pada round pertama, keseluruhan kunci (56-bit) di-injeksikan ke string 64-bit, dengan bit ke 8, 16, 24 dan seterusnya dianggap parity check; kemudian hasil tersebut diberikan kepada permutasi 64-bit PC-1, yang juga membuang parity bit. Kemudian pada setiap tahap, kunci 56-bit dipecah menjadi 2 bagian kiri dan kanan masingmasing 28-bit (Ci-1 dan Di-1). Potongan 28 bit ini akan dilakukan shift left 1 kali atau 2 kali sehubungan dengan iterasi dan key schedule di atas. Penggabungan Ci-1 dan Di-1 kemudian mempunyai 48 bit yang dipilih dari PC-2. Cara menghitung kunci (lihat gambar 3.1).
24
2.6 Rational Unified Process (RUP) Rational Unified Process (RUP) merupakan suatu metode rekayasa perangkat lunak yang dikembangkan dengan mengumpulkan berbagai best practises yang terdapat dalam industri pengembangan perangkat lunak. Ciri utama metode ini adalah menggunakan usecase driven dan pendekatan iteratif untuk siklus pengembangan perankat lunak. Gambar dibawah menunjukkan secara keseluruhan arsitektur yang dimiliki RUP.
Gambar 2.10 Arsitektur Rational Unified Process
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. B. Elaboration a. Menganalisa berbagai persyaratan dan resiko.
25
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: 1. Beta dan performance testing. 2. Membuat dokumentasi tambahan seperti; training, user guides dan sales kit. 3. Membuat rencana peluncuran produk ke komunitas pengguna.
2.7 Unified Modelling Language Unified Modeling Language (UML) adalah metode pemodelan secara visual sebagai sarana untuk merancang software berorientasi objek. Karena UML ini merupakan bahasa visual untuk pemodelan bahasa berorientasi objek, maka semua elemen dan diagram berbasiskan pada paradigma object oriented.
Gambar 2.11 Unsur-unsur pembentuk UML
26
Gambar diatas adalah unsur-unsur yang membentuk UML. Dengan UML, metode Booch, OMT dan OOSE digabungkan dengan membuang elemen-elemen yang tidak praktis ditambah dengan elemen-elemen dari metode lain yang lebih efektif dan elemenelemen baru yang belum ada pada metode terdahulu sehingga UML lebih ekspresif dan seragam daripada model lainnya.
2.8 Use Case Diagram Use case adalah deskripsi fungsi dari sebuah sistem dari perspektif atau sudut pandang para pengguna. Use case mendefinisikan “apa” yang dilakukan oleh 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 use case diagram adalah aktor, use case, dan association seperti terlihat pada Tabel 2.3 di bawah ini. Tabel 2.3 Simbol pada use case diagram Simbol
Nama
Keterangan
Actor
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
Use case digambarkan sebagai lingkaran elips dengan nama use case dituliskan didalam elips tersebut.
27
Tabel 2.3 Simbol pada use case diagram (lanjutan) Simbol
Nama
Keterangan
Association
Asosiasi digunakan untuk menghubungkan actor dengan use case. Asosiasi digambarkan dengan sebuah garis yang menghubungkan antara Actor dengan Use Case.
2.9 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 (metode/ fungsi). Class diagram menggambarkan struktur dan deskripsi class, package dan object beserta hubungan satu sama lain seperti containment, pewarisan, asosiasi, dan lain-lain. Sebuah Class memiliki tiga area pokok : 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. Berikut adalah simbol-simbol yang ada pada class diagram seperti terlihat pada Tabel 2.4 di bawah ini.
28
Tabel 2.4 Simbol pada class diagram Simbol
Nama
Keterangan
Class
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 hukumhukum
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”.
29
Tabel 2.4 Simbol pada class diagram (lanjutan) Simbol
Nama
Keterangan
Generalization
Sebuah relasi generalization sepadan dengan sebuah relasi inheritance pada konsep berorientasi obyek.
2.10 Statechart Diagram Diagram statechart memungkinkan untuk memodelkan bermacam-macam state yang mungkin dialami oleh objek tunggal. Jika pada diagram kelas menunjukkan gambaran statis kelas-kelas dan relasinya, diagram statechart digunakan untuk menggambarkan perilaku dinamik sebuah objek tunggal. Berikut adalah simbol-simbol yang ada pada diagram statechart seperti terlihat pada Tabel 2.5 di bawah ini. Tabel 2.5 Simbol statechart diagram 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
menyebabkan
kegiatan
yang
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.
30
2.11 Activity Diagram Activity diagram digunakan untuk mendokumentasikan alur kerja pada sebuah sistem. Pada dasarnya, activity diagram merupakan variasi dari statechart diagram. Activity diagram mempunyai peran seperti halnya flowchart. Berikut adalah simbol activity diagram seperti terlihat pada Tabel 2.6 di bawah ini. Tabel 2.6 Simbol pada activity diagram 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
Titik Akhir
Status akhir yang dilakukan sistem, sebuah
diagram
aktivitas
memiliki
sebuah status akhir. State
State atau status adalah keadaan sistem pada waktu tertentu. State dapat berubah jika ada event tertentu yang memicu perubahan tersebut.
Activity
Aktivitas
yang
dilakukan
sistem,
aktivitas biasanya diawali dengan kata kerja Percabangan
Asosiasi percabangan dimana jika ada pilihan aktivitas lebih dari satu yang terjadi
31
Tabel 2.6 Simbol pada activity diagram (lanjutan) Simbol
Nama
Deskripsi
Fork
Digunakan untuk menunjukkan kegiatan yang dilakukan secara parallel atau untuk menggabungkan dua kegiatan parallel menjadi satu.
2.12 Bahasa Pemrograman Java adalah bahasa pemrograman yang dapat dijalankan di berbagai komputer termasuk telepon genggam. Bahasa pemrograman ini awalnya dibuat oleh James Gosling saat masih bergabung di Sun Microsystem saat ini merupakan bagian dari Oracle dan dirilis tahun 1995. Bahasa pemrograman ini banyak mengadopsi sintaksis yang terdapat pada C dan C++ namun dengan sintaksis model objek yang lebih sederhana. Aplikasi-aplikasi berbasis java umumnya dikompilasi ke dalam p-code (bytecode) dan dapat dijalankan pada berbagai Java Virtual Machine (JVM). Java merupakan bahasa pemrograman yang bersifat umum atau non-spesifik (general purpose), dan secara khusus didisain untuk memanfaatkan dependensi implementasi seminimal mungkin. Karena fungsionalitasnya yang memungkinkan aplikasi java mampu berjalan di beberapa platform system operasi yang berbeda, java dikenal pula dengan slogannya, "Tulis sekali, jalankan di mana pun". Saat ini java merupakan bahasa pemrograman yang paling populer digunakan, dan secara luas dimanfaatkan dalam pengembangan berbagai jenis perangkat lunak aplikasi ataupun aplikasi berbasis web.
32
2.13 Teknik Pengujian Pentingnya pengujian perangkat lunak mengacu pada kualitas perangkat lunak yang melibatkan sederetan aktivitas produksi dimana 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 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: 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 (Pressman, 2002). Untuk mendapatkan kesalahan pada perangkat lunak, digunakan beberapa teknik pengujian diantaranya :
2.13.1 Pengujian White-Box Pengujian white-box adalah metode desain test case yang meggunakan struktur kontrol disain prosedural untuk memperoleh test case. Dengan menggunakan metode pengujian white-box, perekayasa dapat melakukan test case yang :
33
1. Memberikan jaminan bahwa semua jalur independen pada suatu modul telah digunakan paling tidak satu kali; 2. Menggunakan semua keputusan logis pada sisi true dan false; 3. Mengeksekusi semua loop pada batasan mereka dan pada batas operasional; 4. Menggunakan struktur data internal untuk menjamin validasinya.
2.13.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 (Ayuliana, 2009).