Post on 03-Mar-2019
10
BAB 2
LANDASAN TEORI
2.1 Teori Umum
Ada beberapa teori umum yang digunakan dalam penelitian ini yaitu:
2.1.1 Komunikasi
Berikut merupakan pengertian komunikasi, proses komunikasi, dan
contoh alat komunikasi menurut beberapa ahli.
2.1.1.1 Pengertian Komunikasi
Menurut Steinberg (2007), komunikasi dapat didefinisikan
sebagai proses mengirim dan menerima pesan dari satu orang ke orang
lain. Secara teknis, pesan dapat dikirimkan melalui saluran tertentu,
seperti kabel telepon, siaran radio, dan komputer. Komunikasi dapat
terlihat dalam beberapa wujud yaitu sandi morse, bahasa isyarat, graffiti,
tangisan bayi, dan ekspresi muka.
Menurut Suprapto (2009), komunikasi berasal dari bahasa latin
communication yang memiliki arti ‘pemberitahuan’ atau ‘pertukaran
pikiran’. Proses komunikasi dapat diartikan sebagai transfer informasi
atau pesan antara pengirim pesan (komunikator) dengan penerima pesan
(komunikan) dengan tujuan mutual understanding (saling pengertian).
2.1.1.2 Proses Komunikasi
Menurut Purwanto (2006) proses komunikasi terbagi menjadi 6
(enam) tahap yaitu:
11
1. Pengirim mempunyai suatu ide atau gagasan
2. Pengirim mengubah ide menjadi suatu pesan
3. Pengirim mengirim pesan
4. Penerima menerima pesan
5. Penerima menafsirkan pesan
6. Penerima menerima ide pesan dan memberi tanggapan atau umpan
balik ke pengirim
Dalam tahap ketiga, pengirim mengirimkan pesan melalui suatu
media komunikasi baik secara lisan maupun tulisan
Gambar 2.1
Proses Komunikasi menurut Purwanto (2006)
Menurut Adler et al. (2006), Proses komunikasi diawali ketika
pengirim pesan (sender) melakukan encode ide atau feeling ke dalam
sebuah pesan dan mengirimkannya ke penerima (reciever). Reciever
melakukan decode pesan yang telah diterimannya. Proses komunikasi
melewati suatu media komunikasi seperti telepon, email, dan instant
12
messenger. Dalam proses komunikasi terdapat beberapa gangguan (noise)
yang dapat mengganggu jalannnya komunikasi.
Gambar 2.2
Proses Komunikasi menurut Adler et al. (2006)
2.1.1.3 Alat Komunikasi
Sunarto (2006) menyebutkan beberapa alat yang digunakan
sebagai alat komunikasi, diantaranya adalah sebagai berikut: kentongan,
radio panggil atau handy talkie (HT), pager, telegraf, telepon, faksimile,
radio, dan telepon seluler.
2.1.2 Interaksi Manusia dan Komputer (IMK)
Berikut merupakan teori mengenai pengertian interaksi manusia dan
komputer, delapan aturan emas, dan lima faktor manusia terukur:
2.1.2.1 Pengertian IMK
Menurut Karray et al. (2008), IMK adalah sebuah desain yang
harus menghasilkan sebuah rancangan yang sesuai diantara user, mesin,
13
dan layanan yang dibutuhkan dalam mendapatkan kinerja tertentu di
bagian kualitas dan optimalitas dari layanan tersebut. IMK membuat user
dapat memanfaatkan teknologi secanggih apapun tanpa menghilangkan
kegunaan utama dari teknologi tersebut.
2.1.2.2 Delapan Aturan Emas
Menurut Shneiderman dan Plaisant (2010), ada delapan hal yang
harus diperhatikan dalam membuat rancangan antar muka sebuah aplikasi
atau yang sering disebut delapan aturan emas. Delapan aturan emas
tersebut adalah:
1. Berusaha untuk konsisten
Tindakan-tindakan konsisten diperlukan dalam beberapa keadaan yang
serupa. Contoh tindakan-tindakan konsisten adalah pemakaian warna,
layout, dan jenis tulisan, pembuatan prompt, menu, dan tampilan
bantuan.
2. Menyediakan fungsi yang bersifat universal atau umum
Karena adanya jenis user yang beragam dari yang baru mengenal
komputer hingga yang sudah ahli dengan komputer, dan dari anak-
anak hingga yang lanjut usia (lansia), dibutuhkan sebuah rancangan
yang memiliki fungsi-fungsi yang mudah dikenali user yang beragam
atau penjelasan pemakaian aplikasi juga memiliki fungsi tambahan
yang mendukung aplikasi tersebut untuk para ahlinya.
14
3. Memberikan umpan balik yang informatif
Untuk segala aksi yang dilakukan user, harus ada sistem yang
memberikan umpan balik dengan respons yang berbeda di setiap
kondisi yang ada.
4. Merancang dialog untuk menghasilkan penutupan
Adanya urutan-urutan dari aksi-aksi yang harus diorganisasikan
menjadi bagian awal, pertengahan, dan akhir dari aksi tersebut agar
memberikan kepuasan kepada user yang menyelesaikan aksi tersebut
dan adanya sebuah indikasi untuk mempersiapkan ke bagian
selanjutnya dari aksi tersebut.
5. Memberikan pencegahan terhadap kesalahan yang sederhana
Sebisa mungkin, desain sistem yang dibuat tidak menyebabkan user
melakukan kesalahan serius. Jika user membuat kesalahan, aplikasi
harus dapat mendeteksi kesalahan tersebut dan langsung memberikan
penanganan kesalahan dengan cara yang mudah dipahami dan instruksi
yang spesifik untuk penanganannya.
6. Memungkinkan pengembalian aksi yang sebelumnya
Sebisa mungkin, sebuah aplikasi harus memiliki fitur yang dapat
membatalkan aksi. Dengan fitur ini dapat mengurangi kecemasan
karena user mengetahui bahwa kesalahan dapat dibatalkan dan dapat
mendorong user untuk mempelajari pilihan-pilihan yang tidak biasa.
7. Mendukung pengendalian internal
User yang sudah berpengalaman juga ingin merasakan bahwa user
bertanggung jawab atas sistemnya dan sistem tersebut juga merespons
15
tindakan yang dilakukan oleh user karena user cenderung tidak
menginginkan kejutan, perubahan tentang kebiasaan yang umum,
terganggu dengan entry data yang membosankan, sulit mendapatkan
informasi, dan tidak dapat menghasilkan hasil yang diharapkan.
8. Mengurangi beban ingatan jangka pendek
Designer harus menghindari interface dimana user harus mengingat
informasi dari satu tampilan yang akan dipakai di tampilan lainnya
karena kapasitas ingatan manusia dalam hal memproses informasi
jangka pendek yang terbatas.
2.1.2.3 Lima Faktor Manusia Terukur
Menurut Shneiderman dan Plaisant (2010), terdapat lima faktor
manusia terukur yang harus diperhatikan sebelum merancang sebuah
interface yaitu:
1. Waktu untuk belajar
Merancang aplikasi yang memberikan kemudahan bagi user sehingga
user dengan cepat mengerti cara menggunakan aplikasi tersebut.
2. Kecepatan kinerja
Merancang aplikasi yang memperhatikan kecepatan lama waktu yang
dibutuhkan dalam melakukan tugas-tugas.
3. Tingkat kesalahan user
Merancang aplikasi yang dapat menghindarkan user dari jenis
kesalahan-kesalahan ketika user menggunakan aplikasi dan
16
memberikan penanganan kesalahan jika terjadi kesalahan yang serius
pada saat penggunaan aplikasi.
4. Daya ingat
Merancang aplikasi yang mudah diingat oleh user sehingga tidak
memerlukan waktu yang lama untuk mempelajari aplikasinya. Daya
ingat ini berhubungan dengan waktu belajar dan frekuensi pemakaian
yang dilakukan.
5. Kepuasan subjektif
Merancang aplikasi yang dapat memberikan kepuasan subjektif oleh
user dengan menilai dari kesukaan mengenai variasi aspek-aspek
yang ada pada sebuah interface. Kepuasan subjektif ini bisa
didapatkan dari wawancara atau kuesioner yang memasukkan skala
kepuasan dan memberikan pertanyaan yang dapat dijawab dengan
komentar pada kuesioner tersebut.
2.1.3 Unified Modelling Language (UML)
Whitten dan Bentley (2007) mengatakan Unified Modelling Language
(UML) adalah blueprint dari sistem informasi yang akan dibuat dalam
pengembangan software. Setiap UML memiliki fungsi dan tujuan yang berbeda
dalam pengembangan software sesuai dengan jenisnya. Terdapat tiga belas
diagram yang dapat dipakai untuk pengembangan software dalam UML 2.0
yaitu:
17
1. Use Case
2. Activity
3. Class
4. Object
5. State Machine
6. Composite Structure
7. Sequence
8. Communication
9. Interaction Overview
10. Timing
11. Component
12. Deployment
13. Package
18
Dalam pengembangan software, dari ketiga belas diagram tersebut tidak
semua perlu untuk digunakan. UML yang digunakan dipilih sesuai dengan
kebutuhan, dengan syarat sudah dapat menggambarkan proses pengembangan
sistem secara jelas.
2.1.3.1 Use Case Diagram
Menurut Whitten dan Bentley (2007), use case diagram
merupakan salah satu bagian dari use case modelling. Use case diagram
digunakan untuk menggambarkan secara jelas proses yang akan
dijalankan oleh sistem. Dalam use case digram terdapat tiga komponen
utama yaitu:
1. Use Case
Use case adalah aktivitas yang akan dilakukan dalam sistem berupa
interaksi antara sistem dan user untuk mencapai satu tujuan tertentu.
Use case digambarkan dalam bentuk elips mendatar yang memiliki
keterangan pada bagian atas, bawah, atau dalam dari elips tersebut.
Gambar 2.3 Contoh Use Case Diagram
19
2. Actor
Actor adalah user yang akan berinteraksi dalam sistem dengan
melaksanakan use case untuk bertukar informasi. Actor digambarkan
dalam bentuk stick figure dengan label peran actor tersebut dalam
sistem. Adapun peran actor dapat dibedakan menjadi empat, yaitu
primary business actor, primary system actor, external server actor,
dan external receiver actor.
Gambar 2.4 Simbol Actor
3. Relationship
Relationship adalah hubungan dari dua simbol dalam use case
diagram yang digambarkan dalam bentuk garis. Arti dari hubungan
tersebut berbeda-beda tergantung dari jenis garis dan simbol yang
dihubungkan. Berikut adalah hubungan yang ada dalam use case
diagram:
a. Associations
Komunikasi antara use case dan actor digambarkan sebagai
hubungan associations. Garis associations dapat memiliki anak
panah yang berarti actor berperan sebagai pelaku dari use case
tersebut, sedangkan garis tanpa anak panah berarti actor hanya
berperan sebagai external database atau penerima dari use case
tersebut.
20
Gambar 2.5 Contoh Hubungan Associations
b. Extends
Sebuah use case yang cukup kompleks dapat dipisahkan menjadi
extension use case yaitu dengan membuat hubungan extends
dengan use case lainnya. Pemisahan tersebut berguna untuk
membuat use case tetap berjalan sesuai logika, tetapi dengan
penulisan yang lebih simpel. Hubungan tersebut dapat
digambarkan menggunakan garis solid atau putus-putus dengan
anak panah dan label <<extends>> di samping garis tersebut.
Gambar 2.6 Contoh Hubungan Extends
21
c. Uses atau Includes
Dalam use case diagram sistem yang dibuat dapat memiliki
banyak use case yang fungsinya secara umum sama tetapi ditulis
berulang-ulang sehingga menyebabkan redudansi. Hal tersebut
dapat diatasi dengan hubungan uses atau includes kepada suatu
use case dengan fungsi umum tersebut yang biasa disebut abstract
use case. Hubungan tersebut dapat digambarkan dengan garis
solid atau putus-putus dengan anak panah dan label <<uses>> di
samping garis tersebut.
Gambar 2.7 Contoh Hubungan Uses (Includes)
d. Depends On
Ketergantungan antara satu use case dengan yang lain
digambarkan dengan hubungan depends on. Jika suatu use case
belum dijalankan maka use case yang memiliki ketergantungan
tersebut tidak dapat dijalankan. Hubungan tersebut dapat
22
digambarkan dengan garis solid atau putus-putus dengan anak
panah dan label <<depends on>> di samping garis tersebut.
Gambar 2.8 Contoh Hubungan Depends On
e. Inheritance
Dalam use case diagram sistem yang dibuat memungkinkan
terdapat banyak actor yang memiliki perilaku umum yang sama
tetapi ditulis berulang-ulang sehingga menyebabkan redudansi.
Hal tersebut dapat diatasi dengan hubungan inheritance kepada
suatu actor yang memiliki perilaku umum tersebut yang biasa
disebut abstract actor. Hubungan tersebut dapat digambarkan
dengan garis solid dengan anak panah.
24
2.1.3.2 Use Case Narrative
Menurut Whitten dan Bentley (2007), use case narrative
merupakan salah satu bagian dari use case modelling yang berisikan
rincian dari setiap event dan menerangkan bagaimana user berinteraksi
dengan sistem selama event terjadi.
2.1.3.3 Activity Diagram
Menurut Whitten dan Bentley (2007), activity diagram digunakan
untuk menggambarkan proses dari aktivitas dalam suatu sistem. Melalui
activity diagram dapat dilihat secara jelas urutan dari use case yang akan
dijalankan. Berikut adalah tabel notasi yang akan digunakan dalam
menggambarkan activity diagram:
Tabel 2.1 Tabel Notasi Activity Diagram
Notasi Keterangan
Initial node
Notasi ini menggambarkan awal proses
dari activity diagram
Actions
Notasi ini menggambarkan sebuah
aktivitas yang jika disusun secara
keseluruhan akan menggambarkan
keseluruhan aktivitas dalam activity
diagram
Activity
25
Notasi Keterangan
Flow
Notasi ini menggambarkan jalannya
aktivitas dalam activity diagram. Jika
notasi ini keluar dari decision, maka
dibutuhkan kata-kata untuk
mengidentifikasikannya
Decision/Merge
Notasi ini menggambarkan keadaan
bersyarat, yaitu decision dan merge.
1. Decision
Satu flow akan masuk ke dalam
decision dan menghasilkan dua atau
lebih flow lainnya yang merupakan
hasil pilihan dari kondisi yang ada.
2. Merge
Dua atau lebih flow hasil dari
decision akan masuk ke dalam
merge dan menggabungkannya
kembali menjadi satu flow.
Fork/Join
Notasi ini menggambarkan keadaan
paralel, yaitu fork dan join.
1. Fork
Satu flow akan masuk ke dalam fork
dan menghasilkan dua atau lebih
flow lainnya, menandakan dua atau
lebih actions berjalan bersamaan.
2. Join
Dua atau lebih flow akan masuk ke
dalam join dan menggabungkannya
menjadi satu flow.
26
Notasi Keterangan
Activity Final
Notasi ini menggambarkan akhir proses
dari activity diagram
Subactivity Indicator
Notasi ini menggambarkan bahwa suatu
action sudah keluar menuju activity
diagram yang lain.
Connector
Notasi ini membantu menangani
kompleksitas activity diagram. Sebuah
flow yang masuk ke connector akan
dilanjutkan dengan flow yang keluar
dari connector dengan huruf yang sama.
A
27
Gambar 2.10 Contoh Activity Diagram
2.1.3.4 Class Diagram
Menurut Whitten dan Bentley (2007), class diagram adalah
kumpulan dari objek-objek beserta hubungannya dalam suatu sistem yang
biasanya disebut sebagai class. Dalam class diagram terdapat tiga aspek
utama, yaitu:
1. Object instance
2. Attribute
3. Behavior
Activity 1
Activity 2 Activity 3
A
Activity 4 Activity 5
Activity 6
A
28
Gambar 2.11 Struktur Class
Dalam class diagram terdapat istilah visibility yang merupakan
level akses suatu objek terhadap attribute dan behavior. Terdapat tiga
level visibility dalam class diagram yaitu pada tabel berikut:
Tabel 2.2 Tabel Visibility
Visibility Simbol Keterangan
Public + Dapat digunakan oleh semua kelas
yang berhubungan
Protected # Hanya dapat digunakan oleh kelas itu
sendiri dan kelas turunannya
Private - Hanya dapat digunakan oleh kelas itu
sendiri
Hubungan dalam class diagram dilengkapi dengan multiplicity, yaitu
jumlah minimal dan maksimal suatu objek kelas yang berhubungan
dengan objek kelas lainnya.
<<instance name>>
-attribute +behavior
29
Tabel 2.3 Tabel Multiplicity
1. Generalisasi/Spesialisasi
Generalisasi/spesialisasi adalah teknik yang digunakan untuk
mengelompokkan attribute dan behavior yang sama dari suatu objek
menjadi kelas tersendiri yang disebut supertype. Attribute dan
behavior yang ada pada supertype akan diturunkan ke kelas anaknya
yang disebut subtype.
Multiplicity Notasi
Tepat 1
1
atau
kosong
0 atau 1 0..1
0 atau lebih
0..*
atau
*
1 atau lebih 1..*
Spesifik rentang 7..9
30
Gambar 2.12 Contoh Generalisasi/Spesialisasi
2. Asosiasi dan Multiplicity
Asosiasi adalah hubungan antara satu kelas dengan kelas yang lain.
Asosiasi dapat dibedakan menjadi dua jenis, yaitu:
a. Uni-directional
Hubungan ini digambarkan dengan garis yang memiliki anak
panah (navigability) yang berarti tidak semua kelas berperan dan
hanya satu kelas yang dapat mengirim pesan ke kelas lainnya
yang ditunjuk.
Manusia nama jenisKelamin berjalan() berlari()
Mahasiswa nim ipk belajar()
Dosen nip mengajar()
31
Gambar 2.13 Contoh Asosiasi Uni-Directional
b. Bi-directional
Hubungan ini digambarkan dengan garis tanpa anak panah yang
berarti semua kelas berperan dan dapat saling mengirim pesan ke
kelas lainnya yang terhubung.
Gambar 2.14 Contoh Asosiasi Bi-Directional
3. Agregasi
Agregasi adalah hubungan suatu objek yang terdiri dari objek
lainnya. Objek yang lebih besar adalah keseluruhan bagian dari objek
kecil lainnya dan objek yang lebih kecil adalah bagian dari objek
yang lebih besar tersebut.
Gambar 2.15 Contoh Agregasi
Employee
Department Works for
User
Password specifies
1 1..6
12..18
0..*
Team
Player
32
Selain itu terdapat agregasi yang lebih kuat yang biasa disebut
komposisi yaitu hubungan suatu objek dengan objek lainnya dimana
jika objek yang besar tidak ada maka objek yang kecil juga tidak
mungkin ada.
Gambar 2.16 Contoh Komposisi
2.1.3.5 Sequence Diagram
Menurut Whitten dan Bentley (2007), sequence diagram
digunakan untuk menggambarkan bagaimana actor dan sistem
berinteraksi dalam suatu skenario use case. Notasi yang digunakan dalam
sequence diagram adalah sebagai berikut:
1..*
Paragraph
Word
33
Tabel 2.4 Tabel Notasi Sequence Diagam
Notasi Keterangan
Actor/Receiver Actor
Notasi ini menggambarkan user yang
berinteraksi dengan sistem. Dapat
dibedakan menjadi dua, yaitu:
1. Actor
User yang menjalankan use case
2. Receiver Actor
User yang menerima message dari
sistem, dapat berupa actor lain atau
sistem eksternal.
System
Notasi ini menggambarkan kelas-kelas
yang ada pada class diagram
Lifelines
Notasi ini menggambarkan hidup dari
sequence
Activation Bars
Notasi ini menggambarkan waktu
dimana user sedang aktif berinteraksi
dengan sistem
Input Messages
Notasi ini menggambarkan pesan
masuk yang dikirimkan yaitu berupa
behavior
Output Messages
Notasi ini menggambarkan pesan yang
dikirimkan sebagai balasan pesan
masuk yaitu berupa attribute
:System
34
Notasi Keterangan
Frame
Notasi ini menggambarkan area pada
sistem yang mengalami perulangan
(loops), seleksi (alternate fragments),
atau kondisi opsional (optional)
Gambar 2.17 Contoh Sequence Diagram
Loop
35
2.1.4 Rekayasa Perangkat Lunak
Berikut merupakan teori mengenai rekayasa perangkat lunak, agile
development, dan extreme programming:
2.1.4.1 Pengertian Rekayasa Perangkat Lunak
Menurut Pressman (2010), rekayasa perangkat lunak adalah
penerapan prinsip-prinsip perancangan yang dapat menghasilkan software
yang ekonomis dan dapat bekerja secara handal pada mesin-mesin yang
akan dipakai.
2.1.4.2 Agile Development
Menurut Pressman (2010), Agile Development berawal pada tahun
2001, Kent Beck dan 16 orang lainnya yang dikenal dengan sebutan Agile
Alliance, menandatangani sebuah manifesto untuk Agile Software
Development. Manifesto tersebut bertuliskan bahwa untuk
mengembangkan software dengan cara yang lebih baik, dibutuhkan 4
(empat) hal utama yaitu:
1. Mementingkan interaksi antar individu dibandingkan proses dan tools
2. Mementingkan mengerjakan software dibandingkan dokumentasi
yang lengkap
3. Mementingkan kolaborasi dengan para customer dibandingkan
negosiasi kontrak
4. Mementingkan respons terhadap perubahan dibandingkan mengikuti
rencana
36
Selain membuat manifesto, Agile Alliance juga mendefinisikan 12
(dua belas) prinsip ketangkasan (agility) yaitu:
1. Prioritas utama agile adalah untuk memuaskan pelanggan dengan
memberikan perangkat lunak yang bernilai diawal dan berkelanjutan.
2. Menerima perubahan kebutuhan, sekalipun di akhir pengembangan.
3. Menyerahkan hasil/perangkat lunak dalam hitungan waktu 2 minggu
sampai 2 bulan.
4. Pengembang perangkat lunak beserta orang-orang yang
berkepentingan bekerja bersama-sama selama proyek berlangsung.
5. Membangun proyek di sekitar individu yang memiliki motivasi
tinggi. Berikan lingkungan dan dukungan yang dibutuhkan serta
percaya kepada mereka untuk menyelesaikan pekerjaan ini.
6. Komunikasi langsung adalah metode yang paling efisien dan efektif.
7. Software merupakan alat ukur utama dari kemajuan proyek.
8. Sponsor, developer, dan pengguna diperlukan untuk dapat menjaga
perkembangan.
9. Perhatian yang berkelanjutan kepada kehebatan teknis dan desain
akan meningkatkan agility.
10. Kesederhanaan itu penting.
11. Arsitektur, kebutuhan, dan desain yang terbaik muncul dari tim yang
dapat mengatur dirinya sendiri.
12. Secara periodik, tim melakukan evaluasi dan mencari cara agar lebih
efektif serta melakukannya dengan segera.
37
Beberapa kunci penting yang harus dimiliki oleh orang-orang
yang menerapkan konsep Agile Development yaitu kompetensi, fokus,
kolaborasi, kemampuan untuk mengampil keputusan, kemampuan untuk
fuzzy problem-solving, saling percaya dan hormat, dan manajemen diri.
2.1.4.3 Extreme Programming (XP)
Extreme Programming (XP) merupakan salah satu metode
pengembangan software yang termasuk dalam Agile Software
Development. XP menggunakan pendekatan object-oriented. Dalam XP,
terdapat 5 nilai yang menjadi pondasi yaitu communication, simplicity,
feedback, courage, dan respect.
Komunikasi yang efektif antara pengembang perangkat lunak dan
pihak-pihak yang terlibat sangatlah penting. Dalam XP, desain dijadikan
kebutuhan intermediate. Desain dibuat sesederhana mungkin agar mudah
mengimplementasikan code. Disini dapat terjadi perubahan struktur
desain atau perubahan source code tanpa mengubah fungsi utamanya
(refactoring). Feedback akan diberikan saat peningkatan dan
pengimplementasian perangkat lunak.
Berikut merupakan proses Extreme Programming menurut
Pressman (2010):
1. Planning
Tahap planning dimulai dengan membuat user stories yang
menggambarkan output, fitur, dan fungsi-fungsi dari software yang
akan dibuat. User stories tersebut kemudian diberikan bobot seperti
38
prioritas dan dikelompokkan untuk selanjutnya dilakukan proses
delivery secara incremental.
2. Design
Design di Extreme Programming mengikuti prinsip Keep It Simple
(KIS). Untuk design yang sulit, Extreme Programming akan
menggunaan Spike Solution dimana pembuatan design dibuat
langsung ke tujuannya. Extreme Programming juga mendukung
adanya refactoring dimana software system diubah sedemikian rupa
dengan cara mengubah stuktur kode dan menyederhanakannya namun
hasil dari kode tidak berubah.
3. Coding
Proses coding pada XP diawali dengan membangun serangkaian unit
test. Setelah itu pengembang akan berfokus untuk
mengimplementasikannya. Dalam Extreme Programming
diperkenalkan istilah Pair Programming dimana proses penulisan
program dilakukan secara berpasangan. Dua orang programmer
saling bekerjasama di satu komputer untuk menulis program. Dengan
melakukan ini akan didapat real-time problem solving dan real-time
quality assurance.
4. Testing
Tahap ini dilakukan pengujian kode pada unit test. Dalam Extreme
Programming, diperkenalkan XP acceptance test atau biasa disebut
customer test. Tes ini dilakukan oleh customer yang berfokus kepada
39
fitur dan fungsi sistem secara keseluruhan. Acceptance test ini berasal
dari user stories yang telah diimplementasikan.
2.1.4.4 Refactoring
Menurut Arsenovski (2009), refactoring merupakan teknik yang
digunakan untuk mengidentifikasi design flow dan mengubah struktur
internal code yang bertujuan untuk improvement tanpa mengubah
perlakukan kodenya.
Berikut merupakan proses refactoring menurut Arsenovski(2009):
1. Identify code smells
Langkah pertama dari proses refactoring adalah menentukan code
smells dari kode program. Code smells merupakan suatu yang
dianggap tidak sempurna dari kode program yang telah dibuat.
Dengan begitu, tentukanlah bagian mana yang tidak sempurna dari
code program untuk melakukan refactoring.
2. Apply the appropriate refactoring
Langkah yang kedua ialah mengubah struktur dari kode /
mentransformasikan refactoring. Transformasi dapat juga dilakukan
secara otomatis dan dijalankan oleh refactoring tool.
3. Execute unit tests
Langkah ke tiga adalah mengeksekusi unit test dan memastikan
perubahan dari struktur kode tidak mengubah fungsionalitas atau
behavior dari kode.
40
2.1.5 Internet
Menurut Turban et al. (2005), internet adalah sistem jaringan global dari
berbagai jaringan komputer yang dapat berjalan sendiri dan dengan bantuan
peralatan-peralatan nirkabel yang memungkinkan internet dapat diakses oleh
semua orang di seluruh dunia. Internet merupakan jaringan komunikasi
elektronik yang dapat saling bertukar informasi antara orang di seluruh dunia.
2.1.6 Instant Messenger
Berikut merupakan pengertian instant messenger dan kegunaan instant
messenger menurut Rittinghouse dan Ransome (2005):
2.1.6.1 Pengertian Instant Messenger
Menurut Rittinghouse dan Ransome (2005), instant messenger
adalah sebuah aplikasi berbasis Internet Protocol (IP) yang memberikan
kemudahan antar user yang memakai device berbeda dalam hal
berkomunikasi. Instant Messenger yang paling sering digunakan adalah
instant messenger antar komputer. Selain itu, sekarang ini sudah banyak
user memakai instant messenger di mobile phone yang mendukung suara
dan video.
2.1.6.2 Kegunaan Instant Messenger
Menurut Rittinghouse dan Ransome (2005), instant messenger
dimulai dari adanya sebuah kebutuhan dimana email dinilai tidak cukup
cepat sedangkan user ingin sebuah aplikasi yang dapat secara instant
diterima oleh user lain. Hal tersebut yang membuat instant messenger
41
semakin dikenal dan diterima dalam lingkungan masyarakat dalam hal
bekerja dan berkomunikasi antar user. Sehingga menurut Rittinghouse
dan Ransome (2005), instant messenger sangat berguna sebagai alat
untuk komunikasi real time yang membuat user dapat secara cepat
melihat siapa saja yang online dan dapat berkomunikasi secara langsung.
2.1.7 Smartphone
Berikut merupakan pengertian smartphone dan sistem operasi yang
digunakan pada smartphone:
2.1.7.1 Pengertian Smartphone
Menurut Yang et al. (2007), smartphone merupakan cellphone
yang menggabungkan fungsi-fungsi Personal Digital Assistant (PDA)
seperti kalender, personal schedule, address book, dan memiliki
kemampuan untuk mengakses internet, membuka email, membuat
dokumen, bermain game, serta membuka aplikasi lainnya.
Schmidt (2009) juga mengemukakan bahwa istilah smartphone
merupakan istilah yang digunakan untuk mendeskripsikan mobile device
yang menggabungkan fungsi cellphone, PDA, audio player, digital
camera, camcorder, Global Positioning System (GPS) reciever, dan
Personal Computer (PC).
42
2.1.7.2 Sistem Operasi Smartphone
Menurut Fling (2009), yang disadur dari bukunya yang berjudul
Mobile Design and Development, terdapat beberapa sistem operasi pada
smartphone yang umum digunakan yaitu:
1. Symbian
2. Windows Mobile
3. Palm OS
4. Linux
5. Android
2.1.8 Mobile Application
Menurut Stark (2012), smartphone dan desktop computer memiliki
banyak perbedaan seperti ukuran layar, bandwith, dan sumber daya. Perbedaan
tersebut membuat perancangan mobile application sangat berbeda dengan
perancangan desktop application. Terdapat 10 (sepuluh) prinsip dalam
merancang desain rancangan layar mobile application yaitu:
1. Mobile Mindset
Dalam merancang mobile application harus menggunakan mobile mindset,
yaitu harus fokus, unik, menarik, dan peka terhadap keinginan user.
2. Mobile Contexts
Mengetahui dan fokus pada sasaran user untuk mobile application yang akan
dirancang. Terdapat tiga jenis user, yaitu user yang menggunakan mobile
application pada saat bersantai di rumah (bored), pada saat sedang sibuk dan
43
memerlukan pengaksesan content yang cepat (busy), dan pada saat sedang
berada di daerah yang baru atau tersesat (lost).
3. Global Guidelines
Terdapat aturan umum untuk perancangan mobile application, yaitu tingkat
responsif yang tinggi, tampilan detail yang menarik, merancang dengan
menyesuaikan ukuran ibu jari dan letak user interface yang sesuai, isi yang
gampang diakses dan dimengerti, peletakkan kontrol di bawah isi, dan
menghindari scrolling.
4. Navigation Models
Terdapat banyak model navigasi dalam perancangan mobile application,
tetapi pastikan model yang dipilih sesuai dengan jenis aplikasi yang akan
dirancang. Beberapa pilihan model navigasi seperti none, tab bar, dan drill
down.
5. User Input
Terdapat banyak jenis keyboard dalam smartphone, seperti default, email,
url, dan phone. Pastikan keyboard sesuai dengan jenis input yang diinginkan,
pertimbangkan penggunaan auto correct dan pastikan memungkinkan
landscape orientation jika banyak berinteraksi menggunakan keyboard.
6. Gestures
Gesture yang ada pada mobile application bersifat tersembunyi dan pastikan
memudahkan user untuk menemukannya. Tidak semua gesture penting dan
cukup, misalnya seperti shortcut pada keyboard hanya diketahui beberapa
user dan fasilitas zoom yang memerlukan penggunaan dua tangan dapat
44
ditambah dengan tombol zoom in dan zoom out sehingga tetap dapat
digunakan dengan satu tangan.
7. Orientation
Pastikan orientasi yang didukung mobile application sesuai dengan
kebutuhan antara portrait atau landscape. Sediakan juga fitur lock
orientation jika memang dibutuhkan melihat sesuatu dalam waktu yang lama.
8. Communications
Komunikasi dengan user sangatlah penting dalam mobile application.
Pastikan setiap aktivitas yang ada diberikan feedback dari aplikasi, kurangi
penggunaan alert yang dapat mengganggu user, dan minta konfirmasi user
dengan rancangan default pilihan yang paling aman.
9. Launching
Perhatikan juga tampilan saat launching aplikasi. Pastikan menampilkan apa
yang terkahir user tinggalkan saat launching kembali dan untuk halaman
awal pilihlah gambar interaktif sehingga user tidak bosan.
10. First Impressions
Kesan pertama dari aplikasi sangatlah penting. Pastikan icon yang dipakai
dan first launch dari aplikasi dapat menarik perhatian user.
2.2 Teori Khusus
Ada beberapa teori khusus yang digunakan dalam penelitian ini yaitu:
2.2.1 Android
Berikut merupakan teori mengenai pengertian Android, versi Android,
keunggulan Android, jenis aplikasi Android, dan komponen Android:
45
2.2.1.1 Pengertian Android
Menurut Gargenta (2011), Android adalah sebuah comprehensive
open-source platform yang didesain untuk perangkat mobile.
Comprehensive platform disini adalah setumpuk lengkap perangkat lunak
yang dipakai pada perangkat mobile. Android dipelopori oleh Google dan
dimiliki oleh Open Handset Alliance. Android merupakan platform open
source pertama yang memisahkan perangkat keras dan perangkat lunak
yang berjalan.
Menurut Darcey dan Conder (2012), Android adalah sebuah
mobile platform pertama yang lengkap, open source, dan gratis yang
dikembangkan dengan menggunakan Software Development Kit (SDK)
yang comprehensive dengan tools yang cukup untuk mengembangkan
aplikasi yang powerful dan kaya akan fitur.
Menurut Meier (2011), Android merupakan gabungan dari 3 (tiga)
komponen, yaitu:
1. Sebuah sistem operasi yang open-source untuk perangkat mobile.
2. Sebuah platform pengembangan yang open-source untuk membuat
aplikasi mobile.
3. Perangkat, terutama mobile phone, yang menjalankan sistem operasi
Android dan aplikasi yang dibuat di sistem operasi itu.
2.2.1.2 Versi Android
Seperti halnya software yang lain, Android juga mengalami
perkembangan setiap waktunya yang dapat dilihat dari jumlah versinya
46
dimana terdapat perbedaan antara versi yang satu dengan yang
sesudahnya.
Tabel 2.5 Tabel Versi dan Distribusi Android
(Sumber: www.developer.android.com, 2012)
Data di tabel atas ini didapatkan pada jumlah perangkat Android
yang telah mengakses Google Play dalam periode 14 hari yang berakhir
pada tanggal 1 Oktober 2012. Berdasarkan data tersebut, banyak versi
yang ada dari versi 1.5 hingga 4.1. Perubahan versi tersebut dilakukan
setiap waktu ketika API juga berubah dan ketika melakukan perbaikan
kesalahan-kesalahan kecil atau menambah fitur-fitur yang baru.
47
2.2.1.3 Keunggulan Android
Menurut Meier (2011), ada beberapa keunggulan dan fitur-fitur
yang unik yang ada di Android, yaitu:
1. Aplikasi Google Maps
Sekarang ini aplikasi Google Maps yang disediakan untuk mobile
sangat populer dan Android menawarkan aplikasi Google Maps yang
bisa digunakan kembali untuk aplikasi lain.
2. Background services and applications
Background services memungkinkan developer untuk membuat
sebuah aplikasi yang menggunakan event, berjalan tanpa terlihat
bahwa aplikasi tersebut sedang berjalan ketika aplikasi lain sedang
dijalankan.
3. Sharing data dan interprocess communication (IPC)
Dengan menggunakan Content Provider, Android memungkinkan
pertukaran pesan, melakukan pengolahan, dan berbagi data.
4. Semua aplikasi yang dibuat sama
Android tidak membedakan antara aplikasi yang asli dengan yang
dikembangkan oleh pihak ketiga (third parties).
2.2.1.4 Jenis Aplikasi Android
Menurut Meier (2011), sebagian besar aplikasi yang buat dalam
Android akan termasuk dalam salah satu kategori berikut:
48
1. Foreground
Sebuah aplikasi yang berguna hanya ketika ada pada foreground dan
tidak efektif ketika tidak terlihat. Contoh umumnya adalah games dan
map mashups.
2. Background
Sebuah aplikasi dengan interaksi yang terbatas, kecuali ketika
dikonfigurasi, sebagian besar masa waktunya tersembunyi.
Contohnya adalah aplikasi call screening dan Short Message Service
(SMS) auto-responder.
3. Intermittent
Sebuah aplikasi yang dapat jalan di foreground dan background,
tetapi sering kali aplikasi ini akan dibentuk dan kemudian dijalankan
tersembunyi (background) dan memberitahu pengguna di saat yang
tepat. Contohnya adalah media player.
4. Widget
Aplikasi yang dibuat hanya ditampilkan sebagai widget pada screen
home.
2.2.1.5 Komponen Aplikasi pada Android
Menurut Helal et al. (2012), terdapat empat jenis komponen
dalam aplikasi Android yaitu sebagai berikut:
1. Activity
Sebuah activity mewakili tampilan pada sebuah user interface
aplikasi yang didefinisikan oleh activity class. Contohnya pada
49
aplikasi music player yang memiliki satu activity untuk memutar lagu
dan satu activity lain untuk memilih album atau audio file.
2. Service
Service berjalan secara tersembunyi untuk melakukan operasi yang
berjalan lama atau menjalankan fungsi yang tidak harus langsung
berinteraksi dengan user. Komponen ini berjalan di balik layar
(background) dan tidak memiliki user interface. Contohnya pada
aplikasi music player yang memiliki kemampuan untuk menjalankan
lagu pada background.
3. Content Provider
Content provider merupakan tempat untuk menyimpan dan
membagikan data dengan aplikasi lain yang didefinisikan oleh
ContentProvider class dan interaksinya dijalankan oleh
ContentResolver interface. Contohnya pada aplikasi music player
yang memungkinkan untuk membagikan data lagu apa yang sedang
diputar ke aplikasi lain.
4. Broadcast Receiver
Broadcast receiver didefinisikan oleh BroadcastReceiver class dan
bertugas untuk merespon seluruh pengumuman sistem siaran.
Contohnya adalah pengumuman dari Android mengenai status baterai
dan setelah berhasil mengambil gambar dari camera. Broadcast
receiver tidak memiliki user interface, tetapi komponen ini dapat
membuat notification menggunakan Notification Manager.
50
2.2.1.6 Arsitektur Android
Gambar berikut merupakan arsitektur Android yang terdiri dari
komponen-komponen utama dari sistem operasi Android yang dibagi
menjadi beberapa bagian (layer)
Gambar 2.18 Arsitektur Android
(Sumber : Professional Android 2 Application Development,
Meier, 2011)
51
2.2.1.6.1 Linux Kernel
Merupakan komponen paling bawah dari arsiktektur
Android. Linux Kernel (Linux 2.6 Kernel) menangani layanan-
layanan inti termasuk perangkat kerasnya, proses dan memory
management, sekuritas, jaringan, dan power management.
Komponen ini juga merupakan penghubung layer antara
perangkat keras dengan sisa tumpukan.
2.2.1.6.2 Libraries
Berjalan di atas dari komponen Kernel. Android
memasukkan berbagai library inti dari C / C++ termasuk libc dan
SSL, serta:
1. Media library untuk memutar kembali media audio dan video.
2. Surface manager untuk menyediakan pengaturan tampilan.
3. Graphics libraries yang mencakup SGL dan OpenGL untuk
2D dan 3D graphics.
4. SQLite untuk dukungan pada database aslinya.
5. SSL dan WebKit untuk integrasi web browser dan sekuritas
internet.
2.2.1.6.3 Android run time
Merupakan engine yang berfungsi untuk menjalankan
aplikasi Android dan bersama dengan libraries. Pada komponen
ini, terdapat dua komponen, yaitu:
52
1. Core libraries
Core Libraries atau Android libraries menyediakan sebagian
besar fungsi yang tersedia dalam inti Java libraries serta
spesifik Android libraries.
2. Dalvik virtual machine
Dalvik virtual machine adalah sebuah register-based virtual
machine yang telah dioptimalisasi untuk memastikan bahwa
sebuah perangkat dapat jalan di berbagai instance secara
efisien.
2.2.1.6.4 Application Framework
Menyediakan class-class yang digunakan untuk
membuat aplikasi Android. Komponen ini juga menyediakan
abstraksi umum untuk akses perangkat keras dan mengelola user
interface dan sumber aplikasi.
2.2.1.6.5 Application layer
Semua aplikasi, yang asli maupun third-party dibuat di
application layer dengan menggunakan library API yang sama.
Application layer ini jalan di dalam Android run time dengan
menggunakan class-class dan service yang dibuat dari application
framework.
53
2.2.2 MongoDB
Berikut merupakan teori mengenai MongoDB:
2.2.2.1 Pengenalan MongoDB
MongoDB adalah salah satu jenis dari database NoSQL, yaitu
sebuah konsep penyimpanan data non-relational. Ada empat metode
berbeda yang dipakai oleh database jenis ini untuk menyimpan data,
yaitu key-value, big table, document-oriented, dan graph. Metode yang
dipakai oleh MongoDB adalah document-oriented yang menyimpan
dokumen seperti JavaScript Object Notation (JSON) (Tiwari, 2011).
2.2.2.2 Fitur dan Kelebihan MongoDB
Menurut Idrees (2012), ada beberapa fitur utama dari MongoDB
yang membuatnya menjadi pilihan yang baik, yaitu sebagai berikut:
1. Penanganan data yang sangat besar
Sistem database relasional mulai menjadi terlalu mahal dalam hal
sumber daya sistem. Data yang sangat besar memerlukan pengolahan
yang lebih dan akan menghabiskan banyak waktu dan juga tempat.
MongoDB dapat menjadi alternatif yang lebih baik.
2. Mendukung operasi asynchronous insert
Cara kerja dari MongoDB dalam proses insert adalah dengan
memasukkan dokumen dan melanjutkan ke tugas berikutnya tanpa
menunggu respon dari server. Hal tersebut membebaskan aplikasi
untuk melakukan tugasnya tanpa terjebak pada satu operasi database
yang lama dan dapat meningkatkan respons pengguna.
54
3. Pengolahan data dengan MapReduce
MapReduce adalah sebuah pendekatan untuk pengolahan data yang
memiliki dua manfaat dibanding solusi tradisional lainnya, yaitu
performa yang lebih baik dan penulisan real code untuk mengolah
data. MapReduce juga membuat operasi aggregate dan query data
menjadi lebih mudah.
Selain fitur utama tersebut, menurut Jayathiloha et al. (2012)
terdapat beberapa alasan MongoDB dijadikan pilihan dibanding produk
database NoSQL lainnya, yaitu:
1. Schema free
MongoDB tidak memiliki schema sehingga biasa disebut schema-
free database. Hal tersebut memungkinkan penyimpanan data dengan
struktur yang berbeda dalam satu collection.
2. Agile development
MongoDB merupakan pilihan yang sangat tepat untuk
pengembangan software secara Agile. MongoDB dapat mengatasi
banyaknya perubahan dalam agile development karena sifatnya yang
schema-free sehingga schema dapat berubah sesuai dengan
perubahan persyaratan.
3. Flexible document
Penyimpanan data MongoDB berbeda dari database lainnya yaitu
dalam bentuk dokumen yang dapat berupa array dan hash. Dokumen
MongoDB disimpan sebagai objek JSON yang biasa disebut binary
JSON (BSON).
55
4. Cloud ready
MongoDB siap untuk dijalankan pada commodity hardware,
virtualized environments, dan cloud. MongoDB dapat berjalan
dengan baik pada hardware jenis apapun.
5. High performance
MongoDB tidak menggunakan join seperti database umumnya
karena MongoDB dapat berisi gabungan field seperti array dan hash.
MongoDB juga mendukung indexing yang akan meningkatkan
performa dari query.
6. Horizontally scalable
Berbeda dengan RDMS yang melakukan vertical scaling, MongoDB
termasuk horizontally scalable yang berarti skalabilitas data
dimungkinkan dengan menambahkan beberapa server dan tidak perlu
melakukan upgrade server.
2.2.2.3 Konsep Dasar MongoDB
Seguin (2012) mengatakan bahwa ada enam konsep dasar yang
perlu diketahui mengenai MongoDB, yaitu sebagai berikut:
1. MongoDB memiliki konsep yang sama dengan database pada
umumnya seperti MySQL dan Windows SQL Server. MongoDB dapat
memiliki nol atau lebih database.
2. Sebuah database dapat memiliki nol atau lebih collection yang dapat
disetarakan dengan table pada database umumnya.
56
3. Sebuah collection terdiri dari nol atau lebih dokumen yang dapat
disetarakan dengan baris pada database umumnya
4. Sebuah dokumen terdiri dari satu atau lebih fields yang dapat
disetarakan dengan kolom pada database umumnya.
5. MongoDB memiliki indeks yang memiliki fungsi sama seperti indeks
pada database umumnya.
6. Data dari MongoDB akan dikembalikan dalam bentuk kursor.
MongoDB bersifat client-server. Sisi server sebagai tempat proses
data dan untuk penulisan instruksi pada sisi client. Pengaksesan database
dilakukan dengan instruksi use DATABASE_NAME seperti use learn.
Instruksi tersebut akan mengakses database learn yang sudah ada atau
membuat baru jika belum ada ketika proses insert pertama. Instruksi yang
akan dieksekusi pada database dituliskan dengan menggunakan objek db
seperti db.help() atau db.stats(). Instruksi yang akan dieksekusi pada
collection dituliskan dengan menggunakan objek
db.COLLECTION_NAME seperti db.unicorns.help() atau
db.unicorns.count().
2.2.2.3.1 Select Data
Menurut Seguin (2012), menampilkan data pada
database MongoDB dapat dilakukan dengan menggunakan
instruksi find, misalnya db.unicorns.find(). Instruksi find juga
dapat memiliki parameter tambahan untuk pemberian syarat-
syarat khusus dan pemilihan field yang ditampilkan. Berikut
penjelasan lebih lanjut mengenai parameter pada instruksi find():
57
1. Pemberian syarat-syarat khusus
Instruksi: find({field: value})
Contoh: db.unicorns.find({gender: 'm'})
Terdapat juga beberapa operator yang dapat digunakan dalam
pemberian syarat dalam seleksi seperti pada tabel berikut
Tabel 2.6 Operator MongoDB
Operator Penjelasan
$lt less than/lebih kecil dari
$gt greater than/lebih besar dari
$lte less than or equal/
lebih kecil dari atau sama dengan
$gte greater than/
lebih besar dari atau sama dengan
$ne not equal/tidak sama dengan
$exists fields ada pada dokumen
$or operasi atau
$and operasi dan
Contoh: db.unicorns.find({gender: 'm', weight: {$gt: 700}})
58
2. Pemilihan field yang akan ditampilkan
Instruksi: find({field: value},{field: value})
Parameter pertama menunjukkan syarat seleksi dan
parameter kedua menunjukkan field yang akan ditampilkan.
Contoh: db.unicorns.find(null, {name: 1})
Field _id akan tetap tampil walaupun tidak dituliskan pada
parameter, sehingga parameter kedua dapat diganti menjadi
{name: 1, _id: 0} untuk menghilangkannya.
2.2.2.3.2 Insert Data
Menurut Seguin (2012), proses insert data pada
MongoDB dapat dilakukan dengan menggunakan instruksi insert
atau save. Penggunaan insert akan langsung menambahkan data
baru, sedangkan penggunaan save akan menyesuaikan dengan
kondisi. Jika data yang ditambahkan belum ada, maka data akan
ditambahkan, tetapi jika sudah ada maka data akan diubah.
Sebagai contoh dapat dilihat seperti di bawah ini:
db.unicorns.insert({name: ‘Aurora’, gender: ‘f’})
object={name: ‘Aurora’}
db.unicorns.save(object)
59
2.2.2.3.3 Update Data
Menurut Seguin (2012), proses update data pada
MongoDB masih sering digunakan dengan tidak tepat karena
memiliki konsep yang jauh berbeda dengan database pada
umumnya seperti SQL. Instruksi yang digunakan adalah update
dengan 2 parameter, syarat seleksi yang digunakan dan field
mana yang akan diubah. Berikut adalah contoh penggunaannya:
db.unicorns.update({name: 'Roooooodles'}, {weight: 590})
Instruksi tersebut akan menyebabkan replace data bukan update.
Dokumen yang memiliki name Roooooodles akan diganti datanya
dengan weight 590. Perubahan data untuk satu atau lebih field
yang bukan bersifat replace dilakukan dengan menggunakan
operator $set. Berikut adalah cara penggunaanya:
db.unicorns.update({weight: 590}, {$set: {name: 'Roooooodles',
dob: new Date (1979, 7, 18, 18, 44), loves: ['apple'], gender: 'm',
vampires: 99}})
2.2.2.3.4 Delete Data
Menurut Seguin (2012), menghapus data pada
MongoDB dapat dilakukan dengan menggunakan instruksi
remove. Seperti instruksi find dan update, remove juga dapat
memiliki parameter sebagai syarat data mana yang akan dihapus.
Berikut adalah cara penggunaannya:
db.unicorns.remove()
60
db.unicorns.remove({name: 'Roooooodles'})
Berbeda lagi untuk penghapusan collection dari
database. Hal tersebut dapat dilakukan dengan instruksi
db.COLLECTION_NAME.drop() menjadi db.unicorns.drop().
2.2.2.3.5 Data Modelling
Menurut Seguin (2012), MongoDB tidak menggunakan
JOIN seperti yang biasa dimiliki oleh database pada umumnya,
tetapi dapat tetap dihubungkan secara manual seperti penggunaan
foreign key di SQL. Langkah yang dapat dilakukan adalah dengan
menyimpan _id dari satu dokumen dalam dokumen yang lain.
Contohnya adalah sebagai berikut:
db.employees.insert(
{
_id:ObjectId("4d85c7039ab0fd70a117d730"),
name: 'Leto'
})
db.employees.insert(
{
_id: ObjectId("4d85c7039ab0fd70a117d731"),
name: 'Duncan',
manager: ObjectId("4d85c7039ab0fd70a117d730")
})
61
ObjectID pada dokumen yang memiliki name Leto dijadikan
sebagai manager pada dokumen yang lainnya, dengan begitu
dokumen tersebut dapat secara tidak langsung terhubung.
MongoDB juga dapat menyimpan data dalam bentuk
array dan embedded document. Hal tersebut dapat menangani
hubungan many-to-many. Berikut adalah contoh penggunaan
array pada MongoDB:
db.employees.insert(
{ _id: ObjectId("4d85c7039ab0fd70a117d733"),
name: 'Siona',
manager:
[ObjectId("4d85c7039ab0fd70a117d730"),
ObjectId("4d85c7039ab0fd70a117d732")]
})
Dapat dilihat bahwa satu karyawan tersebut memiliki lebih dari
satu manager dan data manager tersebutlah yang disimpan
sebagai bentuk array. Selanjutnya, berikut adalah contoh
penggunaan embedded document pada MongoDB:
62
db.employees.insert(
{ _id: ObjectId("4d85c7039ab0fd70a117d734"),
name: 'Ghanima',
family:
{ mother: 'Chani',
father: 'Paul',
brother: ObjectId("4d85c7039ab0fd70a117d730")
}
})
Dapat dilihat dalam dokumen terdapat dokumen lagi yaitu untuk
field family. Pengaksesan isi dari embedded document tersebut
adalah dengan menggunakan notasi titik. Contohnya saja jika
ingin mengakses data mother sebagai syarat seleksi, maka
instruksinya adalah db.employees.find({'family.mother': 'Chani'}).
Pilihan lainnya adalah dengan menggunakan DBRef
yang sudah disediakan oleh MongoDB. DBRef dapat digunakan
untuk menghubungkan antara lebih dari satu dokumen dalam
collection atau database yang berbeda. DBRef memiliki beberapa
field sebagai berikut:
1. $ref
Field $ref akan berisi nama collection dimana dokumen yang
akan dihubungkan berada.
63
2. $id
Field $id akan berisi nilai _id dari dokumen yang akan
dihubungkan.
3. $db
Field $db bersifat optional dan akan berisi nama database
dimana dokumen yang akan dihubungkan berada.
Dokumen DBRef akan terbentuk menjadi { $ref : <value>, $id :
<value>, $db : <value> }.
2.2.2.3.6 Fitur Tambahan
Menurut Seguin (2012), dalam MongoDB juga
disediakan beberapa fitur tambahan lagi yang mendukung
performa. Berikut akan dibahas beberapa hal yang akan sering
digunakan pada database MongoDB:
1. Indexes
Indeks pada MongoDB berfungsi sama dengan indeks pada
database relasional pada umumnya yang membantu performa
query dan sorting data. Penambahan indeks dapat dilakukan
dengan menggunakan instruksi ensureIndex. Penghapusan
indeks dapat dilakukan dengan menggunakan instruksi
dropIndex. Berikut adalah contoh penggunaannya:
db.unicorns.ensureIndex({name: 1});
db.unicorns.dropIndex({name: 1});
64
Pembuatan unique index dapat dilakukan dengan
menambahkan parameter kedua. Pengurutan indeks secara
ascending ditandai dengan angka 1 dan secara descending
ditandai dengan angka -1 seperti pada contoh sebagai berikut:
db.unicorns.ensureIndex({name: 1}, {unique: true});
db.unicorns.ensureIndex({name: 1, vampires: -1});
2. Explain
Pada MongoDB dapat dilakukan pengecekkan apakah suatu
collection dan query menggunakan indeks. Instruksi yang
digunakan adalah explain. Penggunaan instruksi
db.unicorns.find().explain() akan menampilkan kursor yang
digunakan adalah BasicCursor yang menandakan tidak adanya
penggunaan indeks. Penggunaan instruksi
db.unicorns.find({name: 'Pilot'}).explain() akan menampilkan
kursor yang digunakan adalah BtreeCursor adanya
penggunaan indeks.
3. Backup dan Restore
Backup dan restore pada MongoDB dapat dilakukan dengan
menggunakan file executable yang sudah disediakan oleh
MongoDB. Backup dilakukan dengan menjalankan
mongodump dengan diikuti pilihan database, collection, dan
nama file backup. Sedangkan untuk restore dengan
menjalankan mongorestore dengan pilihan yang sama. Berikut
adalah contoh penggunaannya:
65
mongodump --db learn –collection unicorns --out backup
mongorestore --collection unicorns backup/learn/
unicorns.bson
Selain backup dan restore, MongoDB juga memungkinkan
untuk proses import dan export. File executable yang
digunakan adalah mongoimport dan mongoexport. Berikut
adalah contoh penggunaannya:
mongoexport --db learn -collection unicorns
mongoexport --db learn -collection unicorns --csv -fields
name,weight,vampires
2.2.3 C# Programming
Menurut Griffiths (2012), C# (dibaca “C Sharp”) merupakan sebuah
bahasa pemrograman yang digunakan untuk membangun berbagai macam
aplikasi seperti aplikasi desktop, website, games dan phone app yang dapat
berjalan dalam .NET Framework. C# programming menyediakan fitur object-
oriented dan functional programming. C# juga menyediakan service seperti run-
time type checking, exception handling, dan thread management.
2.2.4 Windows Communication Foundation (WCF)
Menurut Cibraro et al. (2010), Windows Communication Foundation
(WCF) merupakan teknologi didalam .NET yang dapat digunakan untuk
membuat aplikasi berbasis service untuk pertukaran message antara client dan
66
server. WCF menggunakan konsep contract untuk mendefinisikan service dan
operasinya serta mendefinisikan data yang dikirimkan.
Menurut Lowy(2010), pada release ke 1 (pada .NET 3.0), WCF
menyediakan beberapa fasilitas yang berguna untuk pengembangan services
seperti hosting, service instance management, asynchronous calls, reliability,
transaction management, disconnected queued calls dan security. Pada release
ke 2 (pada .NET 3.5), WCF menyediakan tools tambahan seperti additional
communication options. Pada release ke 3 (pada .NET 4.0), menyertakan
perubahan konfigurasi dan beberapa extension serta beberapa fitur baru.
Menurut Bustamante(2007), dengan menggunakan WCF, programmer
dapat menyediakan cross process, cross mesin, dan cross corporate boundaries
dari banyak protocol. Dengan WCF, satu buah service dapat didefinisikan ke
banyak end point.
2.2.5 Web Service
Berikut merupakan teori mengenai web service, Extensible Markup
Language (XML), Simple Object Access Protocol (SOAP), Web Service
Definition Language (WSDL) dan Universal Description, Discovery, and
Integration (UDDI):
2.2.5.1 Pengertian Web Service
Menurut Kalin (2009), web service adalah aplikasi berbasis web
terdistribusi yang terdiri dari beberapa komponen code dan dapat diakses
dari berbagai macam device. Menurut Priyambodo (2005), web service
adalah antar muka yang berisi informasi, yang dapat dikembangkan
67
dengan bahasa pemrograman apapun dan diimplementasikan pada
platform manapun karena pertukaran data yang dilakukan menggunakan
standar format data universal, yaitu Extensible Markup Language
(XML).
2.2.5.2 Extensible Markup Language (XML)
Menurut Priyambodo (2005), Extensible Markup Language
(XML) adalah Markup Language untuk dokumen yang memiliki struktur
tertentu. XML memiliki standarisasi penulisan namun bisa dimodifikasi
untuk menggambarkan isi dari suatu dokumen. Kelebihan dari XML
antara lain adalah dapat digunakan pada sistem operasi manapun, hasil
pencarian datanya lebih akurat, dan dokumennya dapat diterjemahkan ke
dalam format yang berbeda-beda.
2.2.5.3 Simple Object Access Protocol (SOAP)
Menurut Priyambodo (2005), Simple Object Access Protocol
(SOAP) adalah sebuah protokol yang merupakan perpaduan dari
Hypertext Transfer Protocol (HTTP) dan XML. Pertukaran data
menggunakan protokol HTTP dan dalam format data XML. Hal tersebut
memungkinkan pertukaran data antara platform, sistem operasi, dan
perangkat lunak yang berbeda.
68
2.2.5.4 Web Service Definition Language (WSDL)
Menurut Priyambodo (2005), Web Service Description Language
(WSDL) adalah bahasa berbasis XML untuk mendefinisikan web service
dan bagaimana cara untuk mengakses web service tersebut. Ada 5 (lima)
elemen yang utama dalam WSDL, yaitu:
1. <type>
Fungsi dari elemen ini adalah untuk mendefinisikan tipe data yang
digunakan dalam pesan.
2. <message>
Fungsi dari elemen ini adalah untuk mendefinisikan format dari
sebuah pesan yang digunakan sebagai input maupun output dari
operasi.
3. <portType>
Fungsi dari elemen ini adalah untuk mendefinisikan operasi-operasi.
4. <binding>
Fungsi dari elemen ini adalah untuk menghubungkan operasi dan
pesan yang terdapat pada port type ke protokol tertentu.
5. <service>
Fungsi dari elemen ini adalah untuk mendefinisikan port yang saling
berhubungan.
2.2.5.5 Universal Description, Discovery, and Integration (UDDI)
Menurut Priyambodo (2005), Universal Description, Discovery,
and Integration (UDDI) adalah cara yang digunakan untuk
69
mempublikasikan dan menemukan informasi mengenai web service.
Fungsinya mirip dengan search engine, tetapi fokus pada web service dan
dapat melakukan hal-hal yang tidak dapat dilakukan search engine,
seperti memanggil aplikasi lain. Cara kerjanya adalah service consumer
akan mengirim query ke UDDI registry untruk menemukan sebuah
service dan mendapatkan WSDL service tersebut. Melalui deskripsi
WSDL, service consumer kemudian membuat pesan SOAP untuk
berkomunikasi dengan suatu web service.
2.2.6 Java
Menurut Schildt (2011) dalam bukunya berjudul Java: A Beginner’s
Guide, Java merupakan bahasa pemrograman yang dikembangkan oleh James
Gosling, Patrick Naughton, Chris Warth, Ed Frank, dan Mike Sheridan di Sun
Microsystems pada tahun 1991. Awalnya bahasa pemrograman ini disebut
“Oak”, pada tahun 1995 baru berubah nama menjadi Java.
Berikut merupakan beberapa kelebihan bahasa pemrograman Java:
1. Simple
Java dirancang dengan seperangkat fitur yang membuatnnya lebih mudah
untuk dipelajari dan lebih mudah untuk digunakan
2. Secure
Java menyediakan sarana yang aman untuk membuat aplikasi internet
3. Portable & Cross Platform
Program Java dapat dijalankan di environment manapun yang memiliki Java
run-time system. Selain itu, Java juga menyediakan cross-platform code.
70
4. Object-Oriented
Pusat dari Java adalah Object-Oriented Programming (OOP). Ada tiga
konsep dalam OOP yakni: encapsulation, polymorphism, dan inheritance.
5. Multithreaded
Java menyediakan dukungan terintegrasi untuk multithreading programming
2.2.7 Eclipse
Menurut Deitel (2012), Eclipse merupakan Integrated Development
Environment (IDE) yang menyediakan tools yang mendukung proses
pengembangan perangkat lunak, termasuk editor untuk menulis dan mengubah
program serta sebagai debugger untuk mencari kesalahan-kesalahan logika.
Menurut Holzner (2004), Eclipse awalnya dibuat oleh anak perusahaan
IBM yakni Object Technologies International (OTI) bersama-sama dengan
Borland, IBM, dan beberapa perusahaan lain. Eclipse yang bersifat open-source
memungkinkan pengguna untuk mengembangkan, mengubah, dan
mendistribusikan software.
Menurut Lowy (2010), Pada saat WCF dirilis pertama kali (bagian dari
.NET 3.5), WCF menyediakan fasilitas-fasilitas untuk pengembangan service
seperti hosting, service instance management, asynchronous calls, transaction
management, dan security.
71
2.2.8 Android Software Development Kit (SDK)
Menurut Meier (2011), Android SDK merupakan cakupan dari segalanya
yang dibutuhkan untuk memulai pengembangan, pengujian, dan debugging
aplikasi Android.
2.2.8.1 Android APIs
Inti dari Android SDK adalah Android APIs libraries. Android
APIs ini memungkinkan developer bisa mengakses Android stack.
Libraries yang digunakan untuk membuat aplikasi Android sama dengan
libraries yang digunakan oleh Google.
2.2.8.2 Development Tools
Development tools memungkinkan developer untuk compile dan
debug aplikasi Android untuk membuat source code menjadi aplikasi
Android yang dapat dijalankan.
2.2.8.3 The Android Virtual Device Manager and Emulator
Android Emulator adalah sebuah emulator yang interaktif dengan
menampilkan beberapa alternatif skin pada aplikasi Android. Emulator
ini jalan di dalam sebuah Android virtual device yang mensimulasikan
konfigurasi device perangkat keras.
72
2.2.8.4 Full Documentation
Android SDK menyediakan informasi mengenai code yang
dipakai untuk membuat sebuah aplikasi. Informasi tersebut berupa
dokumentasi yang menjelaskan bagaimana memulai dalam membuat
sebuah aplikasi, penjelasan detail mengenai apa yang ada di setiap
package dan class pada libraries Android juga cara pemakaiannya, dan
memberikan penjelasan mendasar yang detail mengenai pengembangan
aplikasi Android.
2.2.8.5 Sample Code
Memberikan contoh program yang mendemonstrasikan beberapa
kemungkinan yang tersedia di Android, maupun program sederhana yang
memberikan penjelasan bagaimana fitur API secara tersendiri.
2.2.8.6 Online Support
Android telah menghasilkan komunitas developer yang
berkembang sangat cepat. Oleh karena itu pengembangan aplikasi
Android didukung oleh online support.
2.2.9 Android Development Tools (ADT)
Menurut Meier (2011), ADT adalah plug-in untuk Eclipse yang
memudahkan dalam pengembangan aplikasi Android dengan mengintregasikan
alat developer, termasuk emulator dan .class-to.dex converter, langsung kedalam
Integrated Development Environment (IDE). Menggunakan ADT plug-in pada
73
Eclipse dalam merancang aplikasi Android merupakan cara tercepat dan sangat
disarankan, karena adanya komponen-komponen yang berfungsi dalam
merancang aplikasi Android yang terintegrasi dengan Eclipse. Komponen-
komponen tersebut adalah:
1. Sebuah wizard untuk membuat Android project yang memudahkan dalam
membuat project baru dan memasukkan template aplikasi yang dasar.
2. Forms-based manifest, layout, dan resource editors untuk membantu dalam
membuat, mengubah, dan memvalidasikan Extensible Markup Language
(XML) resource.
3. Automated building of Android projects, konversi menjadi aplikasi Android
yang dapat dieksekusi (.dex), packaging menjadi package files (.apk), dan
instalasi dari package ke Dalvik virtual machine.
4. The Android Virtual Device manager, yang memungkinkan developer untuk
membuat dan manage virtual device yang dapat dijalankan dengan sistem
operasi Android dan memory constraint tertentu.
5. The Android Emulator, yang mencakup kontrol dari tampilan emulator dan
konfigurasi koneksi jaringannya, dan kemampuan untuk mensimulasikan
telepon masuk dan pesan SMS.
6. The Dalvik Debug Monitoring Service (DDMS), yang mencakup port
forwarding, stack, heap, dan thread viewing, detil prosesnya, dan fasilitas
screen capture.
7. Akses ke file system sebuah device atau emulator, navigasi ke tree folder dan
pengiriman data.
74
8. Runtime debugging, sehingga dapat mengatur breakpoint dan melihat
pemanggilan stack.
Semua Android/Dalvik log dan output konsole.
2.2.10 Session Initiation Protocol (SIP)
Menurut Miller dan Gregory (2009), Session Initiation Protocol (SIP)
merupakan sebuah open signaling protocol standar yang dikembangkan oleh
Internet Engineering Task Force (IETF) yang digunakan untuk berkomunikasi
dengan menggunakan jaringan berbasis IP, seperti internet. Komunikasi yang
melalui suara, video, atau teks (instant messaging), dapat terjadi dengan
menggunakan kombinasi dari perangkat SIP yang sudah diaktifkan, seperti
softphone pada laptop, perangkat genggam nirkabel atau PDA, ponsel, instant
messaging pada PC dengan kemampuan konferensi video.
2.2.11 Google Cloud Messaging (GCM)
Menurut Android Open Source Project (2013) yang ditulis dalam
website resmi Android Developer, Google Cloud Messaging merupakan salah
satu layanan yang memungkinkan pengembang aplikasi untuk mengirimkan data
dari server ke device Android. Jika terdapat data baru yang diambil dari server,
maka GCM akan memberikan message ke aplikasi Android bahwa ada data yang
baru. Layanan GCM akan menangani antrian pesan dan mengirimkan ke aplikasi
Android. Proses utama dari GCM ada tiga (3) yaitu: