BAB II
LANDASAN TEORI
2.1 Kriptografi
Kriptografi atau yang sering dikenal dengan sebutan ilmu penyandian data
adalah suatu bidang ilmu dan seni
yang bertujuan untuk menjaga kerahasiaan suatu
pesan
yang
berupa
data-data
dari
pihak lain yang tidak berhak
sehingga
tidak
menimbulkan
kerugian.
Pada
masa
sekarang ini,
kriptografi atau
ilmu
penyandian
data sering diklasifikasikan menjadi dua jenis yaitu kriptografi klasik dan kriptografi
modern.
Kriptografi klasik sudah mulai dipelajari manusia sejak tahun 400 SM, yaitu
pada
zaman
Yunani
kuno.
Kriptografi
klasik ini digunakan oleh orang-orang
terdahulu 
untuk 
menjaga 
kerahasiaan 
suatu 
pesan 
teks 
pada 
masa 
sebelum
ditemukan komputer. Kriptografi klasik
merupakan kriptografi yang berbasis
karakter. Caesar chiper dan vigenere chiper merupakan beberapa contoh algoritma
kriptografi klasik yang kita kenal saat ini. Sedangkan kriptografi
modern
adalah
kriptografi yang berkembang pada
zaman setelah ditemukan komputer. Kriptografi
modern beroperasi dalam bit, tidak seperti kriptografi klasik yang hanya beroperasi
pada karakter. Namun pada prinsipnya, metode yang digunakan pada kriptografi
modern diadopsi
dari
kriptografi
klasik,
namun
dibuat sedemikian
rupa sehingga
lebih sulit dengan bantuan komputer.
Teknik kriptografi klasik dapat dikategorikan menjadi dua bagian yaitu teknik
substitusi dan teknik transposisi. Pada teknik transposisi, huruf-huruf pada plainteks
hanya dimanipulasi letak posisinya (transpose) untuk menjadi teks sandi, sedangkan
8
  
9
pada
teknik
substitusi,
setiap
huruf
dalam
plainteks
akan
tepat
berkorespondensi
satu-satu dengan huruf dalam teks sandinya[1].
Untuk
meningkatkan
tingkat
kompleksitas, improvisasi dapat dilakukan terhadap teknik-teknik tersebut.
Pesan atau informasi dapat dikategorikan ke dalam dua jenis, yaitu pesan yang
dapat
dibaca
dengan
mudah
(plaintext) dan
pesan
yang
tidak
mudah
dibaca
(ciphertext).  Untuk
melakukan 
kriptografi 
digunakan 
algoritma 
kriptografi.
Algoritma kriptografi terdiri dari dua bagian, yaitu fungsi enkripsi dan dekripsi.
Enkripsi
adalah
proses
untuk
mengubah
plaintext
menjadi
ciphertext, sedangkan
dekripsi adalah kebalikannya yaitu mengubah ciphertext menjadi plaintext. Terdapat
dua jenis algoritma kriptografi berdasar jenis kuncinya[3], yaitu :
1. 
Algoritma
Simetri,
adalah
algoritma
yang
menggunakan
kunci
enkripsi
yang
sama dengan kunci dekripsinya. Algoritma standar yang menggunakan prinsip
kunci simetri
antara
lain OTP,
DES, RC2,
RC4,
RC5,
RC6, IDEA,
Twofish,
Blowfish, dan lain lain.
2.   Algoritma Asimetri, adalah algoritma yang kunci untuk enkripsi dan dekripsinya
jauh berbeda. Algoritma standar yang termasuk algoritma asimetri adalah ECC,
LUC, RSA, EI, Gamal dan DH.
Salah satu teknik enkripsi menggunakan kunci simetri adalah teknik subtitusi,
yaitu
mengganti setiap karakter plaintext dengan karakter lain.
Terdapat empat cara
dalam menggunakan teknik subtitusi[4], yaitu :
1.   Monoalphabet, dimana setiap karakter ciphertext mengganti satu macam karakter
plaintext tertentu.
  
10
2.   Polialphabet, dimana setiap karakter ciphertext mengganti lebih dari satu macam
karakter plaintext.
3.   Monograf/unilateral,  dimana  satu  enkripsi  dilakukan  terhadap  satu  karakter
plaintext.
4. 
Poligraf/multilateral,
dimana
satu
enkripsi
dilakukan
terhadap
lebih
dari
satu
karakter plaintext.
2.1.1 Viginere cipher
Vigenere   cipher   merupakan   salah   satu   algoritma   klasik   dengan   teknik
substitusi. Nama vigenere diambil dari seorang yang bernama Blaise de Vigenere[2].
Vigenere cipher menggunakan suatu kunci yang memiliki panjang tertentu.
Panjang kunci tersebut bisa lebih
pendek
ataupun
sama
dengan
panjang
plainteks.
Jika panjang kunci kurang dari panjang plainteks, maka kunci yang tersebut akan
diulang secara periodik hingga panjang kunci tersebut sama
dengan panjang
plainteksnya.
Algoritma enkripsi vigenere cipher :
Ci = ( Pi + Ki ) mod 95
Algoritma dekripsi vigenere cipher :
Pi = ( Ci – Ki ) mod 95
Dimana :
Ci = nilai desimal karakter ciphertext ke-i
Pi = nilai desimal karakter plaintext ke-i
Ki = nilai desimal karakter kunci ke-i
  
11
Sebagai
contoh,
jika plaintext
adalah
THEBEAUTYANDTHEBEAST
dan
kunci adalah ABC maka proses enkripsi yang terjadi adalah sebagai berikut :
Plaintext
:
THEBEAUTYANDTHEBEAST
Kunci
:
ABCABCABCABCABCABCAB
Chipertext
:
TIGBFCUUAAOFTIGBFCSU
Pada contoh di atas kata kunci ABC diulang sedemikian rupa
hingga panjang
kunci
sama
dengan
panjang
plainteksnya. Kemudian
setelah
panjang
kunci
sama
dengan panjang plainteks, proses enkripsi dilakukan dengan melakukan menggeser
setiap huruf pada plainteks sesuai dengan huruf kunci yang bersesuaian dengan huruf
plainteks tersebut. Pada contoh di atas plainteks huruf pertama adalah T akan
dilakukan pergeseran huruf dengan kunci Ki=0 (kunci huruf pertama adalah A yang
memiliki Ki=0) menjadi T. Huruf kedua pada plainteks adalah H akan dilakukan
pergeseran huruf dengan kunci Ki=1 (kunci
huruf
kedua
adalah
B
yang
memiliki
Ki=1) menjadi I. Begitu seterusnya dilakukan pergeseran sesuai dengan kunci pada
tiap huruf hingga semua plainteks telah terenkripsi menjadi ciphertext.
2.1.2 Modifikasi Vigenere Chiper
Berdasarkan tulisan sebelumnya bahwa
vigenere
cipher
memiliki
kelemahan
jika   panjang   kunci   yang   digunakan   kurang   dari   panjang   plainteks.   Kurang
panjangnya
kunci
terhadap
plainteks menyebabkan
kunci
akan
diulang
hingga
panjang
kunci
tersebut
sama
dengan
panjang plainteks. Hal ini menyebabkan
kemungkinan timbulnya perulangan string pada cipherteks hasil enkripsi yang dapat
dimanfaatkan untuk menemukan panjang kunci dan lebih lanjut dimanfaatkan untuk
memecahkan cipherteks tersebut[5].
  
12
Sebagai contoh adalah sebagai berikut :
Plainteks     
:   THEBEAUTYANDTHEBEAST
Kunci         
: ABCABCABCABCABCABCAB
Cipherteks     
:   
TIGBFCUUAAOFTIGBFCSU
Pada contoh diatas, kata THE pertama dan kata THE kedua ternyata dienkripsi
menjadi
kata
yang
sama
pula
yaitu
TIG. Hal
ini
terjadi
karena
kedua kata
THE
tersebut dienkripsi dengan menggunakan kunci yang sama yaitu ABC. Karena kunci
yang digunakan
sama,
maka pergeseran
yang dilakukan terhadap kedua kata THE
tersebut juga sama.
Dengan melihat contoh di atas maka secara intuitif kita mendapat kesimpulan
bahwa jika jarak antara dua buah string yang berulang di dalam plainteks merupakan
kelipatan dari panjang kunci, maka string yang sama tersebut akan muncul menjadi
kriptogram yang
sama
pula
di
dalam cipherteks.
Dengan
begitu,
jika
kita
dapat
menemukan 
perulangan 
string 
pada  cipherteks 
yang  telah 
dihasilkan 
melalui
vigenere
cipher,
maka besar kemungkinan bahwa panjang kunci adalah
faktor dari
jarak kedua string yang berulang tersebut.
Hal  tersebut  di  atas  tidak  akan  terjadi  apabila  panjang  kunci  asal  yang
digunakan
adalah
sepanjang
plainteks
dan
tidak ada perulangan string
pada kunci
tersebut.  Hal  tersebut  akan  sedikit  rumit  untuk  dilakukan  jika  kunci  yang  kita
gunakan merupakan suatu kata atau frasa yang memiliki arti. Namun sebaliknya, jika
kunci yang digunakan bukan merupakan kata atau
frasa
yang
memiliki
arti, kunci
tersebut akan menjadi sulit diingat. Dua hal inilah yang kemudian menjadi
pertimbangan penulis untuk mengembangkan suatu algoritma baru yang merupakan
  
13
modifikasi  dari  algoritma  vigenere  cipher  tradisional  agar  lebih  kuat  dan  tidak
mudah dipecahkan oleh pihak yang tidak berhak.
Ide penulis untuk memodifikasi algoritma vigenere cipher ini pada intinya
adalah  dengan  membangkitkan  suatu  kunci  baru  yang  memiliki  panjang  sama
dengan plainteks dan tidak memiliki perulangan string pada kunci tersebut. Kunci ini
akan dibangkitkan dari sebuah kunci asal yang mudah untuk diingat. Metode
pembangkitan kunci dari sebuah kunci asal tersebut akan dilakukan dengan
menggunakan substitusi berulang pada kunci asalnya hingga mendapat sebuah kunci
baru yang memiliki panjang sama dengan plainteksnya.
Modifikasi yang dilakukan harus dapat mengurangi kemunculan key yang
berulang atau bahkan menggunakan pendekatan One-Pad kriptografi yang mana
panjang key adalah sama dengan panjang plainteks yang digunakan dimana key akan
digenerate berbeda dengan key yang digunakan sebelumnya[7]. Modifikasi Viginere
Cipher yang dilakukan disini adalah bukan modifikasi pada algoritma utamanya.
Bentuk modifikasi yang dilakukan untuk proses enkripsi adalah :
1.   Plaintext
dibagi
menjadi
blok-blok
dengan
panjang
blok
adalah
panjang
key
yang digunakan.
2.
Setiap  pemrosesan  blok-i 
akan  memiliki 
key  Ki
masing-masing 
yang
dibangkitkan 
berdasarkan 
blok 
i-1 
sebelumnya. 
Key 
Ki 
merupakan 
hasil
Vigenere
cipher    plainteks   blok   sebelumnya   (plainteks   Pi-1)   dengan
menggunakan  key  Ki-1.  Khusus 
untuk  blok  pertama,  key-nya  adalah  key
masukan pengguna.
3.
Setiap  blok  plainteks-i  (Pi)  akan  di-enkripsi  terlebih  dahulu  dengan
menggunakan  algoritma  Caesar  Cipher.  Besar  pergeseran  Caesar  cipher-nya
  
14
ditentukan berdasarkan key masing-masing blok (Ki) dengan fungsi generate nya
adalah :
Nilai Caesar = (Ki karakter1 + Ki karakter2 + ... + Ki karakter-n ) mod 95
4.
Hasil
enkripsi
Pi
tadi
akan
dienkripsi
menggunakan Vigenere
cipher
untuk
membentuk Cipherteks blok-i (Ci) , key yang digunakan adalah Ki.
Gambar 2.1 Skema Enkripsi Vigenere Modifikasi
Bentuk modifikasi yang dilakukan untuk proses dekripsi adalah :
1.   Ciphertext
dibagi
menjadi blok-blok dengan
panjang blok
adalah
panjang
key
yang digunakan
2.
Setiap  pemrosesan  blok-i 
akan  memiliki 
key  Ki
masing-masing 
yang
dibangkitkan 
berdasarkan 
blok 
i-1 
sebelumnya. 
Key 
Ki 
merupakan 
hasil
Vigenere
cipher    plainteks   blok   sebelumnya   (plainteks   Pi-1)   dengan
menggunakan  key  Ki-1.  Khusus 
untuk  blok  pertama,  key-nya  adalah  key
masukan pengguna.
  
15
3.   Setiap ciphertext blok-i (Ci) akan didekripsi menggunakan Vigenere cipher, key
yang digunakan adalah Ki
4.   Hasil dekripsi yang diperoleh di langkah-3 akan didekripsikan Caesar Ciphernya
dengan nilai Caesar Ciphernya adalah sama dengan pada fungsi enkripsi yang
pada akhir langkah ini akan terbentuk blok plainteks-i (Pi)
Gambar 2.2 Skema Dekripsi Vigenere Modifikasi
Dikarenakan aplikasi yang dirancang pada tugas akhir ini adalah aplikasi SMS
yang
berbasis
Android,
maka
proses
enkripsi
dan
dekripsi
yang
dilakukan
tidak
hanya terpaku pada huruf abjad (A-Z) saja seperti pada aplikasi-aplikasi yang sudah
dirancang sebelumnya, melainkan dibutuhkan juga simbol-simbol lain yang lazim
digunakan dan terdapat pada keyboard maupun handphone pada umumnya. Berikut
ini adalah daftar tabel ASCII yang meliputi nilai desimal untuk setiap karakter yang
dijadikan sebagai patokan untuk
menghasilkan ciphertext dari
hasil enkripsi antara
pesan dengan password.
  
16
2.2 Teknologi Java 2
Tabel 2.1 ASCII
Java adalah bahasa pemrograman Object Oriented Programming (OOP) yang
dibuat oleh Sun Microsystem. Java dirancang untuk menjadi bahasa yang memiliki
  
17
kemampuan
tinggi
dalam
hal
portabilitas
dan
pemanfaatan
jaringan
tanpa
mengabaikan kestabilan, kemanan, serta kemudahan dari sisi desain.
Sebutan Java 2 diberikan untuk Java versi 1.2 dan versi berikutnya. Java 2
terbagi dalam 3 kategori[12], yaitu:
-
Java  2  Standard Edition (J2SE).  Kategori  ini  digunakan  untuk  menjalankan
mengembangkan aplikasi Java pada level komputer personal.
-
Java 2 Enterprise Edition (J2EE). Kategori ini dikhususkan untuk pengembangan
aplikasi Java pada lingkungan enterprise/server.
-
Java  2  Micro Edition (J2ME).  Kategori  ini  digunakan  untuk  pengembangan
aplikasi
Java
yang diimplementasikan pada
perangkat
semacam ponsel, Palm,
PDA dan PocketPC.
2.3 Java 2 Micro Edition
Java 2 Micro Edition (J2ME) dirancang untuk dapat menjalankan program Java
pada  perangkat  yang  memiliki  kemampuan  terbatas  misalnya  kecilnya  jumlah
memori yang dimiliki perangkat tersebut.
2.3.1 Konfigurasi J2ME
Konfigurasi
J2ME
adalah
spesifikasi
yang
mendefinisikan
sebuah virtual
machine dari kumpulan
API-API dasar yang dapat digunakan dalam kelas tertentu
dari
sebuah peralatan. Virtual machine pada J2ME berbeda dengan yang ada pada
J2SE karena hanya
fitur-fitur penting
yang berkaitan dengan perangkat tanpa kabel
(Wireless) saja yang diimplementasikan.
Ada 2 konfigurasi pada J2ME[12], yaitu:
1.   CLDC (Connected Limited Device Configuration)
  
18
CLDC   merupakan   perangkat   atau   konfigurasi   dasar   dari   J2ME.   CLDC
sebenarnya berupa library dan API (Application Programming Interface) jyang
diimplementasikan pada J2ME. Konfigurasi ini biasanya untuk alat kecil seperti
telepon seluler (handphone), pager dan PDA. Peralatan tersebut biasanya
mempunyai keterbatasan memori
(RAM), sumber daya, dan kemampuan
memproses.
2.   CDC (Connected Device Configuration)
CDC merupakan perangkat atau konfigurasi superset dari CLDC. Konfigurasi ini
biasanya dipakai untuk alat seperti Internet TV, Nokia Communicator dan Car
TV.
2.3.2 Profil J2ME
Sebuah
profil
dibangun
dalam sebuah
konfigurasi,
namun
ditambahkan
beberapa API khusus agar dihasilkan sebuah lingkungan yang lengkap untuk
membangun aplikasi. Profil berisi daur
hidup (life cycle), antarmuka pemakai (user
interface),
serta
penyimpanan. Salah
satu
profil J2ME
adalah
Mobile Information
Device
Profile (MIDP).
Profil MIDP
menyediakan
sebuah
platform
standar
untuk
peralatan komunikasi bergerak
yang memiliki
kapasitas
memori
terbatas sehingga
cocok untuk pengembangan aplikasi pada ponsel[10].
2.4 MIDP dan MIDlet
MIDP
merupakan profil
yang banyak digunakan dan popular dari J2ME dan
MIDlet merupakan aplikasi-aplikasi yang dibuat di dalam handphone menggunakan
profil MIDP.
  
19
2.4.1 Daur Hidup MIDlet
Daur hidup dari sebuh MIDlet ditangani oleh Aplication Management Software
(AMS). 
AMS 
adalah 
sebuah 
lingkungan 
tempat 
siklus 
dari 
sebuah 
MIDlet
diciptakan, dijalankan, dihentikan, maupun dihilangkan. AMS sering disebut dengan
Java Aplication Manager (JAM). Dalam daur hidupnya MIDlet memiliki tiga status,
yaitu
Pause, Active dan, Destroy[11].
Ketika
masing-masing
status
dipanggil,
beberapa fungsi standar yang bersesuaian akan dipanggil.
Gambar 2.3 Daur Hidup MIDlet
Dari gambar 2.3 dapat dijelaskan sebagai berikut :
-
Ketika
MIDlet pertama
kali
diciptakan
dan
diinisialisasi,
MIDlet
berada
dalam
status pause.
-
Jika  terjadi  kesalahan  selama  konstruksi  MIDlet,  MIDlet  akan  berpindah  ke
status
destroyed
dan MIDlet batal diciptakan
dengan
memanggil
fungsi
destroyApp().
  
20
-
Saat MIDlet dijalankan, MIDlet akan berada pada status active dan memanggil
fungsi startApp().
-
Jika saat
dijalankan
MIDlet dihentikan
sementara,
maka
MIDlet berada pada
status pause dan memanggil fungsi pauseApp().
2.4.2 Antarmuka Pemakai
Untuk
membuat
suatu
antarmuka
bagi
pemakai,
program MIDlet
harus
mengimpor 
paket  javac.microedition.lcdui.
Kelas  yang  dipergunakan  untuk
membuat dan
memanipulasi
antarmuka tersebut adalah kelas yang diturunkan dari
kelas
7
Displayable. Melalui
kelas-kelas
inilah sebuah aplikasi
dapat berinteraksi
dengan pemakai.
Pada MIDP, antarmuka terdiri dari API tingkat tinggi (High-level) dan API
tingkat rendah (Low-level). API tingkat tinggi berbasis pada kelas Screen, sedangkan
API
tingkat
rendah
berbasis
pada
kelas
Canvas.
Diagram hirarki
dari
kelas
Displayable[6] dapat dilihat pada gambar 2.2.
Gambar 2.4 Hirarki Kelas Displayable
Dari
gambar 2.4 dapat dilihat bahwa kelas Screen terdiri dari beberapa kelas,
yaitu :
  
21
-
Alert, merupakan kelas yang menyediakan informasi kecil kepada pemakai
yang
ditampilkan
ke
layar
sebelum kemudian
berpindah
ke
objek
lain.
Biasanya
digunakan untuk menampilkan informasi kesalahan (error).
-
TextBox, merupakan
kelas
yang
menyediakan
media
untuk
menerima
masukan
berupa teks.
-
List, merupakan kelas yang menyediakan masukan pilihan (multiple choice) pada
layar.
-
Form, merupakan kelas yang
menyediakan
fasilitas untuk
menampung beberapa
item dalam satu layar, seperti gambar (images), kolom tanggal (datefield), kolom
teks (textfield), gauge dan daftar pilihan (choice group).
2.4.3 Event
Ketika  terjadi  interaksi  antara  pengguna  dan  sebuah  perangkat,  misalnya
ponsel,
maka
akan
dihasilkan
suatu
event,
seperti
memilih
suatu menu
atau
melakukan masukan pada layar. Kelas yang bertugas untuk menerima
event dari
pengguna
harus
mengimplementasikan antarmuka CommandListener. Fungsi-fungsi
yang harus digunakan antara lain[8] :
-
command(),digunakan untuk menciptakan tombol perintah (command) baru.
-
addCommand(),  digunakan untuk mendefinisikan sebuah tombol perintah ke
dalam kelas Displayable.
-
setCommandListener(),  digunakan untuk mendengarkan aksi yang dilakukan
terhadap sebuah tombol perintah.
-
commandAction(), digunakan
untuk
menentukan aksi
yang akan dikerjakan oleh
sebuah tombol perintah.
  
22
2.4.4 Pemaketan Aplikasi MIDlet
Hasil
dari
kompilasi
program sumber
Java
adalah satu atau lebih berkas
bytecode  yang  dikenali  dengan  akhiran  “*.class”.  Pada  aplikasi  MIDlet,  semua
berkas
byte-code
dipaketkan
menjadi suatu berkas terkompresi
yang
disebut Java
Archive (JAR) yang dikenali dengan ekstensi “*.jar”.
Selain berkas JAR, terdapat juga berkas Java Application Descripter
(JAD)
yang berekstensi “*.jad”, yaitu berkas yang berisi informasi
mengenai suatu berkas
JAR. Kedua berkas inilah yang harus di-upload ke
perangkat
ponsel
agar
aplikasi
dapat dijalankan. Untuk meng-upload
berkas tersebut ke perangkat ponsel dapat
dilakukan dengan cara transfer data antara komputer dengan perangkat komunikasi
bergerak melalui media sinar infra merah, koneksi kabel data atau bluetooth.
2.5 Software Development Life Cycle
Pada setiap pengembangan perangkat lunak tidak akan terlepas dari sebuah
Software
Development
Life
Cycle
(SDLC). SDLC merupakan sebuah siklus
pengembangan perangkat lunak yang terdiri dari beberapa tahapan. Tahapan-tahapan
tersebut adalah requirements (analisis kebutuhan), analysis (analisis sistem), design
(perancangan), coding/implementation (implementasi), testing (pengujian), dan
maintenance (perawatan). Dalam SDLC terdapat banyak metode yang dapat dipakai
untuk
mengembangkan
sebuah
perangkat
lunak
misal Waterfall, Spiral,
Rapid
Application Development (RAD), dsb. Metode-metode tersebut akan dijelaskan pada
sub bab berikut.
  
23
2.5.1 Metode Waterfall
Dalam perancangan aplikasi pada tugas akhir ini penulis menggunakan metode
Waterfall. Metode Waterfall
adalah
metode
yang
menyarankan sebuah
pendekatan
yang sistematis dan sekuensial melalui tahapan-tahapan yang ada pada SDLC untuk
membangun sebuah perangkat lunak[9].
Gambar
menjelaskan
bahwa
metode Waterfall menekankan pada sebuah
keterurutan dalam proses pengembangan perangkat lunak. Metode ini adalah sebuah
metode
yang
tepat
untuk
membangun
sebuah perangkat
lunak
yang
tidak
terlalu
besar dan sumber daya manusia yang terlibat dalam jumlah yang terbatas.
Gambar 2.5 Diagram Waterfall Model
Dari
gambar 2.5
dapat
dilihat
bahwa
tahapan pada
metode Waterfall diawali
oleh
tahap
analisis
kebutuhan
yang merupakan
tahap
awal
pembangunan
sebuah
perangkat
lunak.
Tahap
ini didefinisikan sebagai
sebuah
tahap
yang
menghasilkan
sebuah kondisi yang diperlukan oleh pengguna untuk menyelesaikan permasalahan
ataupun   mencapai   sebuah   tujuan.   Tahap   ini   bertujuan   untuk   megumpulkan
  
24
kebutuhan-kebutuhan pengguna dan kemudian mentransformasikan ke dalam sebuah
deskripsi yang jelas dan lengkap.
Tahapan kedua adalah tahap analisis sistem yang bertujuan untuk menjabarkan
segala  sesuatu  yang  nantinya  akan  ditangani  oleh  perangkat  lunak.  Tahapan  ini
adalah
tahapan
dimana
pemodelan
merupakan
sebuah
representasi
dari
object
di
dunia
nyata.
Untuk
memahami
sifat
perangkat
lunak
yang
akan
dibangun,
analis
harus memahami domain informasi, dan tingkah laku yang diperlukan.
Tahap  ketiga  adalah  tahap  perancangan  perangkat  lunak  yang  merupakan
proses multi langkah dan berfokus pada beberapa atribut perangkat lunak yang
berbeda yaitu struktur data, arsitektur perangkat lunak, dan detil algoritma. Proses ini
menerjemahkan kebutuhan ke dalam sebuah model perangkat lunak yang dapat
diperkirakan kualitasnya sebelum dimulainya tahap implementasi.
Tahap implementasi adalah tahap yang mengkonversi apa yang telah dirancang
sebelumnya 
ke 
dalam 
sebuah 
bahasa 
yang 
dimengerti 
komputer. 
Kemudian
komputer akan menjalankan fungsi-fungsi yang telah didefinisikan sehingga mampu
memberikan layanan-layanan kepada penggunanya.
Tahap
selanjutnya adalah
tahap
pengujian.
Terdapat
dua
metode
pengujian
perangkat
lunak
yang
umum digunakan,
yaitu
metode black-box
dan
white-box.
Pengujian
dengan
metode black-box
merupakan pengujian
yang
menekankan
pada
fungsionalitas
dari
sebuah
perangkat lunak
tanpa
harus
mengetahui
bagaimana
struktur
di
dalam perangkat
lunak
tersebut.
Sebuah
perangkat
lunak
yang
diuji
menggunakan metode black-box dikatakan berhasil jika fungsi-fungsi yang ada telah
memenuhi spesifikasi kebutuhan
yang telah dibuat sebelumnya. Sedangkan
metode
  
25
white-box
menguji
struktur
internal
perangkat
lunak
dengan
melakukan
pengujian
pada algoritma yang digunakan oleh perangkat lunak.
Tahap
akhir
dari
metode
Waterfall adalah tahap
perawatan.
Tahap
ini dapat
diartikan sebagai tahap penggunaan perangkat lunak yang disertai dengan perawatan
dan perbaikan. Perawatan dan perbaikan suatu perangkat lunak diperlukan, termasuk
di dalamnya adalah pengembangan, karena dalam prakteknya ketika perangkat lunak
tersebut digunakan terkadang masih terdapat kekurangan ataupun penambahan fitur-
fitur baru yang dirasa perlu.
2.6  Android
Android adalah sistem operasi untuk telepon seluler yang berbasis Linux.
Android
menyediakan platform terbuka bagi
para pengembang
buat
menciptakan
aplikasi mereka sendiri untuk digunakan oleh bermacam peranti bergerak. Awalnya,
Google
Inc.
membeli
Android
Inc.,
pendatang baru yang membuat
peranti
lunak
untuk 
ponsel. 
Kemudian 
untuk 
mengembangkan 
Android, 
dibentuklah 
Open
Handset
Alliance, konsorsium dari 34 perusahaan peranti keras, peranti
lunak, dan
telekomunikasi, termasuk Google, HTC, Intel, Motorola, Qualcomm, T-Mobile, dan
Nvidia. Beberapa keunggulan dari Android antara lain :
1. 
Terbuka (open
source),
platform terbuka
yang
berdasarkan
pada
Linux
yang
merupakan platform terbuka juga. Hal ini
memungkinkan proses pembelajaran,
pembuatan,
dan
pengkostumisasian
menggunakan
platform Android
tanpa
membayar royalti.
2.   Probabilitas tinggi, karena semua program ditulis dengan bahasa pemrograman
Java.
  
26
3.   Menyediakan kualitas suara dan grafik yang tinggi, juga didukung oleh platform
seperti OpenGL.
4.   Android menyediakan berbagai macam library, sehingga tidak perlu membangun
dari awal.
5. 
Karena bersifat terbuka (open source), maka Android menyediakan Software
Development
Kit
(SDK) gratis,
dan
didukung
Integrated
Development
Environtment terbuka, yaitu Eclipse.
6.   Didukung puluhan ribu aplikasi, baik yang gratis, trial, maupun yang berbayar.