BAB 2 LANDASAN TEORI. Ada beberapa teori umum yang digunakan dalam penelitian ini yaitu: contoh alat komunikasi menurut beberapa ahli.

Teks penuh

(1)

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:

(2)

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

(3)

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,

(4)

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.

(5)

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

(6)

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

(7)

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:

(8)

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

(9)

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.

(10)

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.

(11)

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.

(12)

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

(13)

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.

(14)
(15)

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

(16)

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.

(17)

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

(18)

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

(19)

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

(20)

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

(21)

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()

(22)

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 Works for Department

User Password specifies 1 1..6 12..18 0..* Team Player

(23)

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

(24)

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

(25)

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

(26)

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

(27)

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.

(28)

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

(29)

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

(30)

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.

(31)

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

(32)

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).

(33)

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

(34)

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

(35)

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:

(36)

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

(37)

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.

(38)

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:

(39)

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

(40)

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.

(41)

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)

(42)

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:

(43)

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.

(44)

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.

(45)

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).

(46)

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.

(47)

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():

(48)

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

(49)

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’}

(50)

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:

(51)

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") })

(52)

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:

(53)

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.

(54)

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});

(55)

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:

(56)

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

(57)

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

(58)

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.

(59)

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

(60)

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.

(61)

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.

(62)

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.

(63)

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

Figur

Gambar 2.3 Contoh Use Case Diagram

Gambar 2.3

Contoh Use Case Diagram p.9
Gambar 2.6 Contoh Hubungan Extends

Gambar 2.6

Contoh Hubungan Extends p.11
Gambar 2.5 Contoh Hubungan Associations

Gambar 2.5

Contoh Hubungan Associations p.11
Gambar 2.7 Contoh Hubungan Uses (Includes)

Gambar 2.7

Contoh Hubungan Uses (Includes) p.12
Gambar 2.8 Contoh Hubungan Depends On

Gambar 2.8

Contoh Hubungan Depends On p.13
Gambar 2.9 Contoh Hubungan Inheritance

Gambar 2.9

Contoh Hubungan Inheritance p.14
Tabel 2.1 Tabel Notasi Activity Diagram

Tabel 2.1

Tabel Notasi Activity Diagram p.15
Gambar 2.10 Contoh Activity Diagram

Gambar 2.10

Contoh Activity Diagram p.18
Tabel 2.2 Tabel Visibility

Tabel 2.2

Tabel Visibility p.19
Gambar 2.11 Struktur Class

Gambar 2.11

Struktur Class p.19
Tabel 2.3 Tabel Multiplicity

Tabel 2.3

Tabel Multiplicity p.20
Gambar 2.12 Contoh Generalisasi/Spesialisasi

Gambar 2.12

Contoh Generalisasi/Spesialisasi p.21
Gambar 2.13 Contoh Asosiasi Uni-Directional

Gambar 2.13

Contoh Asosiasi Uni-Directional p.22
Gambar  2.14 Contoh Asosiasi Bi-Directional

Gambar 2.14

Contoh Asosiasi Bi-Directional p.22
Gambar 2.16 Contoh Komposisi

Gambar 2.16

Contoh Komposisi p.23
Tabel 2.4 Tabel Notasi Sequence Diagam

Tabel 2.4

Tabel Notasi Sequence Diagam p.24
Gambar 2.17 Contoh Sequence Diagram

Gambar 2.17

Contoh Sequence Diagram p.25
Tabel 2.5 Tabel Versi dan Distribusi Android  (Sumber: www.developer.android.com, 2012)

Tabel 2.5

Tabel Versi dan Distribusi Android (Sumber: www.developer.android.com, 2012) p.37
Gambar  berikut  merupakan  arsitektur  Android  yang  terdiri  dari  komponen-komponen  utama  dari  sistem  operasi  Android  yang  dibagi  menjadi beberapa bagian (layer)

Gambar berikut

merupakan arsitektur Android yang terdiri dari komponen-komponen utama dari sistem operasi Android yang dibagi menjadi beberapa bagian (layer) p.41
Tabel 2.6 Operator MongoDB

Tabel 2.6

Operator MongoDB p.48

Referensi

Memperbarui...