66
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:

BAB 2 LANDASAN TEORI Ada beberapa teori umum yang ...thesis.binus.ac.id/doc/Bab2/2012-1-00669-IF Bab2001.pdf · contoh alat komunikasi menurut beberapa ahli. ... komunikasi berasal

Embed Size (px)

Citation preview

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.

23

Gambar 2.9 Contoh Hubungan Inheritance

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:

75

1. Mengaktifkan GCM

Aplikasi Android yang berjalan pada perangkat mobile diregistrasikan

untuk menerima pesan.

2. Mengirimkan pesan

Server akan mengirimkan pesan ke aplikasi Android.

3. Menerima pesan.

Aplikasi Android akan menerima pesan dari server GCM.