BAB 2 LANDASAN TEORI
1.1 Interaksi Manusia dan Komputer Ilmu Interaksi Manusia dan Komputer (IMK) membantu untuk memahami perbedaan antara produk software yang baik dan buruk. Namun, memahami ilmu Interaksi Manusia dan Komputer tidak menjamin kesuksesan suatu produk. Dalam hal ini, IMK dapat dikatakan sebagai arsitektur dari sebuah desain produk. Arsitek dan desainer produk mebutuhkan sebuah creative design untuk produk yang akan mereka kerjakan.
Pekerjaan mereka membutuhkan
sebuah creative design yang dipelajari dari pakar desain ataupun dari pembelajaran desain-desain yang sudah ada sebelumnya. Sedangkan dalam hal desain produk, programmer tidak melakukan creative design, namun menggunakan sebuah pendekatan yang lebih efisien, yaitu dengan memahami kebutuhan user dan memahami solusi-solusi yang dibutuhkan (Blackwell, 2010). Interaksi Manusia dan Komputer sebagai sekumpulan proses, dialog, dan aksi yang dilakukan oleh manusia (user) melalui interaksi dengan sebuah komputer. Interaksi Manusia dan Komputer juga didefinisikan sebagai sebuah disiplin ilmu yang berhubungan dengan design, evaluasi dan implementasi dari sebuah sistem komputer interaktif yang ditujukan untuk membantu pekerjaan manusia (ACM-SIGCHI, 2009).
1.1.1 Shneiderman’s Eight Golden Rules of Interface Design Delapan aturan emas yang dibuat oleh Shneiderman sebagai sebuah ringkasan dari kunci-kunci desain interface yang telah ada sebelumnya selama lebih dari 20 tahun. Delapan aturan emas tersebut ditujukan untuk digunakan pada saat proses desain. Akan tetapi, delapan aturan emas dapat juga digunakan pada saat proses evaluasi sistem (Shneiderman & Plaisant, 2005:74).
Berikut adalah delapan aturan emas yang dibuat oleh
Shneiderman:
9
10
1.
Konsistensi Layout User Interface Mengutamakan konsistensi dalam urutan tindakan, tata letak, pengunaan perintah, dan lain sebagainya. Dibutuhkan agar pengguna tidak kebingungan saat penggunaan aplikasi, agar pengguna terbiasa dan dapat memahami penggunaan aplikasi lebih cepat.
Pada
perancangan aplikasi, rangkaian aksi yang dilakukan harus memiliki kesamaan dengan aksi yang lainnya.
Selain itu, command yang
konsisten harus diimplementasikan pada aplikasi. Pada gambar 2.1 ditunjukkan konsistensi pada menu aplikasi yang terdapat di sistem operasi Macintosh.
Dari 5 jenis aplikasi yang dibuka (Keynote,
OmniFocus, Safari, Transmit & Logic Pro), semuanya memiliki pilihan menu yang konsisten yaitu File, Edit, View, Format, dan Window. Penempatan layout yang konsisten juga didapati pada tiap menu aplikasi pada Operating System Macintosh.
Gambar 2.1 Konsistensi pada Menu Mac Operating System (Jochen Wolters, 2013:14)
2.
Penggunaan Usability Universal Membuat ragam desain yang ditujukan untuk pengguna yang sudah terbiasa ataupun pengguna yang masih awam dalam penggunaan sistem.
Ragam desain yang dimaksud adalah
penggunaan shortcut, singkatan, atau urutan tombol khusus untuk melakukan sebuah aksi yang biasa dilakukan lebih cepat. Seiring dengan peningkatan dalam penggunaan aplikasi, maka keinginan
11
pengguna untuk mempercepat proses penggunaan aplikasi akan bertambah. Salah satu hal yang dapat membantu mempercepat proses penggunaan aplikasi adalah urutan tombol khusus yang digunakan untuk copy (ctrl + c) dan paste (ctrl + v). Hal ini bertujuan agar pengguna dapat menggunakan sistem dengan lebih cepat, lebih efektif dan lebih efisien. Untuk pengguna awam, halaman help atau halaman bantuan akan sangat membantu dalam penggunaan aplikasi.
3.
Pemberian Umpan Balik yang Informatif Memberikan umpan balik yang informatif pada pengguna terhadap tindakan yang dilakukan.
Umpan balik harus sepadan
dengan aksi yang dilakukan. Sebuah tugas/aksi yang sederhana harus memberikan umpan balik yang juga sederhana. Sebaliknya, tindakan yang berdampak besar juga harus memiliki umpan balik yang sepadan.
Tujuannya adalah agar pengguna memahami apa yang
sedang terjadi di dalam sistem. Gambar 2.2 menunjukkan sebuah umpan balik yang informatif pada saat melakukan copy pada sebuah data.
Gambar 2.3 menunjukkan umpan balik yang informatif
mengenai jumlah storage space yang tersedia pada komputer.
Gambar 2.2 Informative Feedback pada saat proses copy berupa ukuran, jumlah data dan estimasi waktu proses copy data (Jochen Wolters, 2013:23)
12
Gambar 2.3 Informative Feedback pada jumlah storage space yang tersedia (Jochen Wolters, 2013:23)
Gambar 2.4 Informative Feedback mengenai informasi baterai, Wi-fi, waktu, volume, hari dan tanggal, negara lokasi, dan lain-lain. (Jochen Wolters, 2013:23)
4.
Merancang Dialog untuk Hasil Penutupan Rangkaian aksi harus diorganisasi menjadi beberapa grup yang berisikan bagian “awal”, “tengah” dan “akhir”.
Membuat dialog
penutup, sehingga pengguna tahu ketika mereka telah menyelesaikan tugas. Hal ini akan memberikan rasa aman, rasa puas atau lega, sebuah tanda untuk mulai memikirkan hal lain, karena pengguna tahu bahwa ia telah mencapai hasil akhir dari sebuah tindakan.
Gambar 2.5 Tombol “OK” sebagai akhir dari aksi (Jochen Wolters, 2013:26)
13
Gambar 2.6 Tombol “Print” sebagai akhir dari aksi print setting dan awal dari proses printing (Jochen Wolters, 2013:27)
5.
Penanganan Kesalahan yang Sederhana Menyiapkan pencegah kesalahan dan penanganan kesalahan yang sederhana. Sehingga, pengguna akan dicegah dari membuat kesalahan dan jika pengguna melakukan kesalahan maka akan diberikan penjelasan yang informatif.
Selain itu, penanganan
kesalahan harus dibuat sesimpel mungkin agar dapat dipahami oleh pengguna awam.
Gambar 2.7 Error prevention berupa peringatan kententuan pembuatan e-mail (Jochen Wolters, 2013:36)
14
Gambar 2.8 Error handling saat pendaftaran account baru pada website Buzzfeed
6.
Kemudahan untuk Kembali ke Tindakan Sebelumnya Membuat pengguna dapat mengulang atau mengembalikan aksi (undo) atau meniadakan aksi (cancel). Sehingga pengguna tidak perlu cemas dan takut akan melakukan kesalahan, karena pengguna tahu bahwa keadaan dapat dikembalikan seperti sebelumnya. Proses pengulangan kembali dapat berupa sebuah aksi tunggal (tombol undo), sekumpulan data (version history) atau sekumpulan aksi.
Gambar 2.9 Melakukan undo dengan melakukan aksi tunggal (Jochen Wolters, 2013:40)
15
Gambar 2.10 Melakukan undo dengan melihat version history (Jochen Wolters, 2013:40)
Gambar 2.11 Aksi untuk melakukan undo dengan melakukan sekumpulan aksi (Jochen Wolters, 2013:38)
7.
Mendukung Pengendali Internal Pengguna
yang berpengalaman memiliki hasrat untuk
mengendalikan sistem dan sistem untuk sistem agar merenspons aktivitas pengguna. Pengguna yang merasa bahwa ia tidak memegang kendali penuh atas sistem akan merasakan ketidakpuasan atas sistem yang digunakan.
16
Gambar 2.12 Pengguna memiliki kendali penuh untuk menghentikan proses copy (Jochen Wolters, 2013:43)
Gambar 2.13 Pengguna memiliki kendali penuh untuk pemilihan aksi (Jochen Wolters, 2013:45)
8.
Mengurangi Beban Ingatan dalam Jangka Pendek Mengurangi beban ingatan jangka pendek manusia dengan cara menjaga penampilan aplikasi yang sederhana dan menyediakan waktu untuk beradaptasi dengan urutan tindakan. Hal ini bertujuan agar user tidak bingung akan banyaknya informasi yang didapatkan dalam satu waktu.
17
Gambar 2.14 Tampilan aplikasi yang menyebabkan beban ingatan jangka pendek (Jochen Wolters, 2013:59)
1.2
Rekayasa Piranti Lunak 1.2.1 Pengertian Rekayasa Piranti Lunak Software engineering atau rekayasa perangkat lunak sebagai sebuah teknologi yang sangat penting untuk masa depan umat manusia. Rekayasa perangkat lunak adalah sebuah disiplin teknik yang memperhitungkan berbagai macam aspek dari produksi perangkat lunak.
Rekayasa perangkat lunak ditujukan untuk
mendukung pengembangan perangkat lunak profesional. Disiplin ini meliputi teknik-teknik yang mendukung spesifikasi, design validasi dan evolusi dari sebuah program (Ian Sommerville, 2010). Ada dua tipe software product yang dapat diproduksi oleh software engineer: 1. Generic Products Produk generik adalah sebuah sistem yang berdiri sendiri yang diproduksi oleh sebuah organisasi pengembang (software
18
developer) dan dijual kepada pembeli yang menginginkan produknya. Contoh dari produk generik adalah software untuk PC seperti database, word processor, drawing packages, dan project management tools.
Selain itu, produk generik juga meliputi
aplikasi-aplikasi yang di desain untuk tujuan spesifik seperti library information systems, accounting systems atau sistem yang digunakan untuk pemeliharaan catatan kesehatan.
2. Customized Products Produk yang telah dikustomisasi adalah sistem yang ditugaskan oleh pelanggan tertentu dengan ketentuan dan product requirement yang diinginkan oleh pelanggan. Sistem ini dibuat khusus untuk memenuhi keinginan pelanggan dan biasanya merupakan sistem yang digunakan untuk mendukung proses bisnis tertentu, seperti sistem lalu lintas udara.
1.2.2 Agile Software Development Ian Sommerville (2010) menyatakan bahwa Agile Methods dibuat pada tahun 1990an untuk mengatasi penggunaan proses pembuatan software yang berat dan memakan waktu lama pada pembuatan sebuah program skala kecil.
Metode ini mendukung
development team untuk lebih fokus pada proses pembuatan software nya daripada design dan dokumentasi dari software itu sendiri. Agile Methods sangat efisien untuk digunakan pada pengembangan aplikasi yang memiliki sistem requirement yang biasanya akan terus berubahubah pada saat proses pengembangan. Metode ini ditujukan agar pengembang aplikasi dapat mengirimkan aplikasi secepatnya pada customer, sehingga tidak akan ada masalah apabila customer ingin memberikan perubahan sistem requirement pada iterasi berikutnya. Berikut pada tabel 2.1 adalah beberapa tipe Agile Methods yang banyak digunakan pada pengembangan software:
19
Tabel 2.1 Metode pengembangan software berdasarkan agile method Nama Metode
Pengembang
Tahun Pengembangan
Pengembangan
Extreme Programming Kent Beck
1999 & 2000
Scrum
2001, 2004 & 2009
Michael Cohn, Ken Schwaber & Mike Beedle
Crystal
Alistair
2001 & 2004
Cockburn
Adaptive Software
Jim Highsmith
Development (ADS)
& Sam Bayer
Dynamic Systems
Jennifer
Development Method
Stapleton
2000
1997 & 2003
(DSDM)
Feature Driven
Stephen R.
Development
Palmer & John
2002
M. Felsing
Agile Modelling
Scott W.
2002
Ambler & Ron Jeffries
Agile instantiations of Craig Larman the Rational Unified Process
2002
20
Walaupun pengembangan
semua dan
metode
ini
pengiriman
didasari
secara
oleh
bertahap,
gagasan semuanya
mengusulkan proses pengembangan yang berbeda-beda.
Namun,
semua metode ini tetap menggunakan prinsip pengembangan yang sama, yang didasari oleh the agile manifesto atau kebijakan agile. Berikut adalah 5 prinsip pengembangan agile method: 1.
Customer Involvement Customer harus dilibatkan selama proses pengembangan aplikasi.
Peran
customer
adalah
menyediakan
dan
memprioritaskan kebutuhan sistem yang baru dan untuk melakukan evaluasi pada iterasi sistem. 2.
Incremental Delivery Perangkat lunak harus di kembangkan secara bertahap. Tiap tahapannya harus meliputi spesifikasi kebutuhan yang diinginkan oleh customer.
3.
People not Process Kemampuan
development
dimanfaatkan.
Anggota
team tim
harus
harus
diakui
dibiarkan
dan untuk
mengembangkan cara kerjanya masing-masing tanpa harus dibatasi oleh proses preskriptif. 4.
Embrace Change Mempersiapkan diri untuk perubahan pada system requirement dan mendesain sistem yang mendukung perubahan.
5.
Maintain Simplicity Fokus pada kesederhanaan pada masing-masing software yang dikembangkan
dan
proses
pengembangannya.
Jika
memungkinkan, hilangkan segala kerumitan atau kompleksitas dari sistem. Pendekatan menggunakan Agile Methods atau pendekatan agile, adalah pendekatan yang dilakukan untuk menjadikan design dan implementasi sebagai pusat aktivitas dari software process. Agile Methods mengikutsertakan kegiatan lain seperti kebutuhan elisitasi dan testing, kedalam design dan implementasinya.
Sebaliknya,
21
sebuah
pendekatan
plan-driven
(plan-driven
approach)
mengidentifikasikan tahapan yang berbeda-beda pada software process dengan output yang diasosiasikan pada tiap tahapan. Output pada tiap tahapan akan digunakan sebagai dasar untuk perencanaan tahapan selanjutnya. Gambar 2.15 menunjukkan perbedaan antara pendekatan agile dan pendekatan plan-driven.
Gambar 2.15 Perbedaan proses pendekatan Plan-Driven dan Agile
Dalam pendekatan plan-driven, iterasi terjadi dalam tiap aktivitas dan dokumen formal (spesifikasi kebutuhan) dibutuhkan untuk melakukan komunikasi antar tahapan proses. Ketika kebutuhan telah ada, spesifikasi kebutuhan akan diproduksi.
Spesifikasi
kebutuhan akan menjadi input untuk proses desain dan implementasi kebutuhan. Sedangkan dalam pendekatan agile, iterasi terjadi pada tiap aktivitas. Hal ini menjadikan proses perancangan kebutuhan dan
22
proses desain dan implementasi dikembangkan secara bersamaan dan tidak terpisah-pisah.
1.2.2.1 Extreme Programming Extreme Programming ditemukan oleh Kent Beck pada tahun 1999.
Ian Sommervile (2010) mengutip Beck
(1999), menyatakan Extreme Programming sebagai sebuah metode pengembangan software yang fleksibel, mudah diprekdisi, efisien, mudah dipraktekkan, beresiko rendah, dan scientific. Beberapa alasan yang membuat metode ini berbeda dari metode lain adalah: 1. Metode ini memiliki siklus yang pendek. 2.
Kemampuan untuk mengubah jadwal implementasi secara fleksibel, sesuai dengan kebutuhan bisnis yang dapat berubah kapan saja.
3.
Kebutuhan untuk melakukan testing yang dilakukan oleh programmer dan customer untuk memonitor progress dari
pengembangan,
ditujukan
agar
system
dapat
berevolusi dan agar kekurangan dapat ditemukan lebih cepat. 4.
Ketergantungan
pada
sebuah
design
process
evolusioner yang harus bertahan sepanjang system digunakan. 5.
Kolaborasi yang kuat antara programmer.
6.
Ketergantungannya pada praktek yang berguna dalam jangka pendek untuk programmer dan untuk proyek jangka panjang.
23
Gambar 2.16 Siklus Release pada Extreme Programming (Ian Sommerville, 2010:65) Extreme Programming meningkatkan sebuah software project melalui 5 hal: communication, simplicity, feedback, respect dan courage. Extreme programmers berkomunikasi secara konstan dengan customer dan sesama programmer. Membuat sebuah design yang simple. Mendapatkan feedback dengan cara melakukan testing dari awal. aplikasi
secepat
mungkin
dan
Meluncurkan
mengimplementasikan
perubahan saat dibutuhkan. Tiap keberhasilan pada aplikasi akan menambah respek antar programmer yang memiliki jobdesk yang berbeda. Atas dasar ini Extreme Programmer dapat terus beradaptasi dengan user requirements dan teknologi yang terus berkembang dan berubah ubah (Don Wells, 2009). Hal yang membuat Extreme Programming spesial adalah
peraturan
simple
yang
dimilikinya.
Extreme
Programming membuat praktek - praktek yang sekilas tampak tidak berguna apabila praktek tersebut sendirian.
Namun,
apabila semua praktek itu dikolaborasikan, maka akan terlihat gambaran yang lebih besar mengenai kekuatan dari Extreme Programming.
Praktek ini didasarkan oleh beberapa nilai
(Ron Jeffries, 2014): 1.
Feedback Developer akan mendapatkan feedback secara konstan dari customer/user maupun dari rekan programmer. Customer
akan
mendapatkan
feedback
tentang
kemajuan aplikasi dan demonstrasi tiap iterasi. 2.
Simplicity Simplicity atau kesederhanaan berarti pengembangan aplikasi akan dilakukan sesuai apa yang diminta dan dibutuhkan. Pengembangan aplikasi akan dilakukan secara sederhana,
terutama saat proses coding.
24
Susunan code akan dibuat dengan sederhana dan sependek mungkin, namun tetap efisien dan membuang modul-modul yang tidak digunakan.
25
3.
Communication Extreme Programming menitik beratkan komunikasi antara customer/user dan developer sebagai sebuah tim. Kerjasama antara customer dan developer akan sangat dibutuhkan untuk mendapatkan produk dengan hasil terbaik.
4.
Courage Memberikan perkembangan progress aplikasi dan perkiraan waktu pada customer/user.
Extreme
programming menekankan pada programmer dan developer untuk menerima tekanan dari customer dan menghadapinya dengan integritas. Tim harus memiliki keyakinan dan kepercayaan bahwa aplikasi akan dapat diselesaikan sesuai dengan apa yang diharapkan.
Berikut adalah 12 praktek yang harus dilakukan dalam penggunaan Extreme Programming. Tiap praktek - praktek ini merupakan praktek yang simple dan lemah, namun kekuatan dari satu praktek akan menutupi kelemahan dari praktek lainnya (Kent Beck, 1999:47): 1.
The planning game Menggabungkan perencanaan dari sisi bisnis dan teknikal. Dalam arti lain, mencari sebuah solusi antara kebutuhan yang diinginkan dan kebutuhan yang memungkinkan.
Hal-hal yang harus dipikirkan dari
sisi bisnis adalah ruang lingkup, prioritas, komposisi dari releases dan tanggal releases. Sedangkan hal-hal yang harus dipikirkan dari sisi teknikal adalah estimasi waktu, konsekuensi, proses dan perencanaan mendetil. 2.
Small releases Releases adalah peluncuran aplikasi secara kecilkecilan. Release dilakukan setiap kali sebuah fungsi di implementasikan.
26
27
3.
Metaphor Menggunakan metafora untuk membantu semua orang yang terlibat dalam sebuah software project agar dapat memahami elemen-elemen dasar dan hubunganhubungannya. Hal ini dilakukan untuk berkomunikasi dengan mudah dan jelas.
4.
Simple design Desain dari software harus memenuhi peraturan ini: a) Dapat menjalankan dan lulus dari semua test. b) Tidak memiliki logika ganda. Terkadang logika ganda dapat tersembunyi pada hirarki dari sebuah class. c) Menyatakan setiap hal yang penting kepada programmer. d) Memiliki class dan method sesedikit mungkin.
5.
Testing Melakukan unit test setiap melakukan implementasi pada aplikasi. Unit test adalah sepotong code yang ditulis oleh programmer untuk melakukan uji coba terhadap fungsi dari sebuah code spesifik. Unit test biasanya melakukan uji coba pada metode tertentu pada sebuah bagian tertentu. Tujuan dari unit test adalah untuk membuktikan apakah sebuah code sudah mencapai hasil yang diinginkan atau belum (Hunt & Thomas, 2003:3).
6.
Refactoring Programmer melakukan proses pengubahan atau penambahan pada fitur aplikasi yang telah dibuat sebelumnya. Setelah perubahan atau penambahan pada fitur dilakukan, programmer akan mencoba mengubah program untuk menjadi lebih simple. disebuh sebagai refactoring.
Inilah yang
28
7.
Pair programming Aplikasi dibuat oleh beberapa programmer yang bekerja sama secara dinamis.
Programmer akan
menyatukan pemahaman mereka sebelum melakukan implementasi dan mengerjakan desain aplikasi yang simple agar semua programmer dapat memahami apa yang terjadi. dapat
Pemrograman secara berpasangan ini
mengurangi
resiko
melakukan
kesalahan,
overdesign, dan menyalahi aturan-aturan lainnya. 8.
Collective ownership Pada Extreme Programming, semua orang bertanggung jawab atas sistem secara menyeluruh.
Jika seorang
programmer melihat kesempatan untuk mengubah atau menambah kualitas dari code, maka programmer itu dipersilahkan untuk melakukannya. 9.
Continuous integration Code di integrasikan dan di test setelah beberapa jam dalam satu hari pengembangan.
Setelah integrasi
dilakukan, maka test harus dilakukan hingga tidak ada kesalahan sama sekali. 10.
40 hour week Agar progammer tetap fit dan sehat, maka pengerjaan aplikasi dibatasi hanya sebanyak kurang lebih 40 jam efektif dalam satu minggu.
11.
On site customer Customer, dalam hal ini adalah orang yang akan benarbenar
menggunakan
aplikasi
yang
sedang
dikembangkan. Customer bertugas untuk memberikan feedback terhadap aplikasi yang sedang dikembangkan. 12.
Coding standards Karena Extreme Programming berarti tidak melakukan pengembangan
dengan
satu
orang
programmer
melainkan beberapa programmer sekaligus yang saling
29
bertukar pasangan dan bekerja sama, maka harus dibuat sebuah standar coding yang serupa sehingga semua dapat membaca dan memahami perubahan pada code yang telah dilakukan.
2.2.2.2 Perbandingan Metode Pengembangan Software Lainnya Sebuah model programming adalah sebuah representasi abstrak yang digunakan untuk menjelaskan proses programming. Terdapat beberapa model yang paling banyak digunakan untuk metode pengembangan software, seperti: Waterfall model, Evolutionary development, Formal systems development dan lain sebagainya.
Berikut akan dijelaskan
mengenai kelebihan dan kekurangan 4 metode pengembangan software, yaitu: Waterfall model, V-shaped model, Spiral model dan Extreme model (Mohammed A.M & Govardhan, 2010:95). 1. Waterfall Model Metode waterfall adalah metode software engineering paling klasik. Model ini adalah salah satu model tertua dan yang paling banyak digunakan oleh proyek-proyek skala besar. Model ini menekanan perencanaan (planning) pada tahap awal dan memastikan kelemahan dalam desain sebelum mulai mengembangkan software.
Selain itu, dokumentasi dan
planning yang intensive memastikan bahwa metode ini dapat dipraktekkan pada proyek skala besar yang menjadikan quality control sebagai perhatian utamanya. Metode waterfall terdiri dari beberapa stage, yang dimulai dari menjelaskan system requirements dan software requirements, architectural design, detailed design, coding, testing dan maintenance.
30
Gambar 2.17 Waterfall Model (Mohammed A.M & Govardhan, 2010:95)
a. Kelebihan Waterfall Model 1. Mudah dipahami dan diimplementasikan 2. Secara teoritis, banyak digunakan dan diketahui 3. Menanamkan kebiasaan baik, design-before-design dan design-before-coding 4. Mengidentifikasi apa yang dapat dikirim dan apa yang dapat dicapai 5. Document-driven 6. Berguna untuk produk yang matang dengan tim lemah b. Kekurangan Waterfall Model 1. Ideal, tidak sesuai dengan kenyataan 2. Menginginkan requirements yang akurat di awal proyek, sehingga tidak realistis 3. Software diberikan di akhir proyek, memperlambat penemuan kesalahan fatal 4. Sulit untuk mengintegrasikan risk-management 5. Sulit dan mahal untuk melakukan perubahan pada dokumen 6. Mahal untuk tim dan proyek yang kecil
31
2. V-shaped Model V-shaped model terdiri dari tahapan-tahapan yang berurutan. Tiap tahapan harus dilakukan sebelum tahap selanjutnya dilakukan, seperti pada waterfall model.
Pada model ini
testing ditekankan lebih daripada waterfall model. Prosedur testing dikembangkan di tahapan awal, sebelum coding dilakukan. Setelah perancangan test, high-level design dan low-level design dilakukan. High-level design fokus pada perancangan arsitektur dan desain sistem.
Sedangkan low-level design
fokus pada desain komponen software dan perancangan unit test. Fase implementasi, adalah tahap akhir dimana coding dilakukan.
Setelah coding selesai, akan dilakukan testing-
testing di bagian kanan “V” yang telah dirancang sebelumnya.
Gambar 2.18 V-shaped Model (Mohammed A.M & Govardhan, 2010:98)
32
a. Kelebihan V-shaped Model 1. Simpel dan mudah digunakan 2. Tiap fase memiliki hasil yang spesifik 3. Memiliki kemungkinan sukses lebih tinggi dari waterfall karena perancangan test di awal tahap pengembangan 4. Bekerja dengan baik untuk proyek skala kecil dimana requirements mudah dipahami b. Kekurangan V-shaped Model 1. Kaku, seperti waterfall model 2. Kurang fleksibel, mahal dan sulit untuk mengubah tujuan 3. Software dikembangkan dalam fase implementasi, sehingga tidak ada prototipe dari software yang dikembangkan 4. Model ini tidak memiliki alur yang jelas apabila ditemukan masalah pada saat proses testing
3. Spiral Model Spiral model memiliki 4 fase: Planning, Risk Analysis, Engineering dan Evaluasi.
Sebuah software project harus
melalui ke-4 fase ini berkali-kali pada saar iterasi (spirals). Spiral dimulai dari fase planning, requirements dikumpulkan dan risk diperhitungkan.
Pada fase risk analysis, sebuah
proses dilakukan untuk mengidentifikasi risk dan solusi alternatifnya. Sebuah prototype di produksi di akhir fase risk analysis.
Software diproduksi pada fase engineering,
bersamaan dengan testing pada akhir fase ini. Fase evaluasi dilakukan oleh customer untuk mengevaluasi output dari proyek untuk memperhitungkan waktu sebelum proyek dilanjutkan ke spiral berikutnya.
33
Gambar 2.19: Spiral Model (Mohammed A.M & Govardhan, 2010:99)
a. Kelebihan Spiral Model 1. Risk analysis dengan jumlah besar 2. Bagus untuk proyek besar yang mission-critical 3. Software diproduksi pada awal pengembangan b. Kekurangan Spiral Model 1. Model ini bisa memiliki cost yang tinggi 2. Risk analysis membutuhkan tingkat kemampuan yang tinggi 3. Kesuksesan proyek sangat bergantung pada fase risk analysis 4. Tidak bekerja dengan baik untuk proyek kecil
4. Extreme Programming Merupakan sebuah pendekatan pada pengembangan yang didasari oleh pengembangan dan pengiriman sebuah fungsifungsi yang kecil. Bergantung pada perkembangan code yang
34
konstan, keikutsertaan user pada saat pengembangan dan pair programming. a. Kelebihan Extreme Programming 1. Metode ringan yang cocok untuk pengembangan proyek skala kecil 2. Memperkuat hubungan tim 3. Menekankan pada produk akhir 4. Iterative 5. Test-based b. Kekurangan Extreme Programming 1. Sulit untuk digunakan pada proyek skala bsar 2. Butuh kemampuan dan pengalaman 3. Pair programming membuang waktu
1.3
Unified Modelling Language (UML) Unified Modelling Language (UML) menurut Rumbaugh, Jacobson dan Booch (2004) adalah sebuah bahasa visual modelling yang digunakan untuk menyusun spesifikasi, visualisasi, konstruksi dan dokumentasi dari sebuah sistem software.
UML meliputi keputusan dan pemahaman dari
sistem yang akan dibangun. Selain itu, UML ditujukan untuk memahami, mendesain, mengkonfigurasi, me-maintain, dan mengontrol informasi tentang suatu sistem. Unified Modelling Language dapat digunakan pada berbagai metode pengembangan, lifecycle stages, application domains, dan media. UML dibuat untuk menyatukan berbagai macam pemahaman teknik modelling dan untuk menggabungkan teknik-teknik pemahaman software yang terbaik menjadi sebuah standar baru.
Spesifikasi dari UML tidak
menetapkan sebuah proses standar, melainkan dibuat untuk mengikuti proses pengembangan yang berulang dan dibuat untuk dapat bekerja pada sebagian besar object oriented development process yang ada saat ini. UML dapat dikatakan sebagai blueprint dari sebuah software. Blueprint pada bangunan biasanya menggambarkan saluran air, listrik, udara,
35
dan lain sebagainya. Dalam hal ini, UML membantu software developer untuk mengembangkan program berdasarkan gambaran yang telah dibuat di UML sebelumnya. 1.3.1 Use Case Diagram Use case menggambarkan fungsi dari sistem dalam pandangan pengguna, yang disebut actor. Sebuah use case adalah sebuah unit yang memiliki fungsi yang saling terhubung satu sama lain. Hubungan dari fungsi-fungsi itu disebut sebagai sebuah transaksi antara actor dan sistem.
Tujuan dari use case adalah untuk
menggambarkan jumlah actor dan use case, dan juga untuk menunjukkan actor dan use case mana saja yang saling berinteraksi (Rumbaugh, Jacobson dan Booch, 2004:34). Gambar 2.17 menunjukkan sebuah use case diagram untuk aplikasi pertunjukan. Actor (user) yang berpartisipasi adalah clerk (karyawan), supervisor dan kiosk (kios). Kios, adalah sistem lain yang menerima pesanan dari customer. Customer tidak tercantum pada use case, karena customer tidak berhubungan langsung dengan sistem, melainkan dengan kios ataupun dengan karyawan. Use case ini meliputi fungsi untuk membeli tiket (buy tickets), berlangganan (buy subscription) melalui karyawan, dan melalui supervisor untuk menghitung total penjualan (total sales). Pembelian melalui kartu kredit akan dikenakan biaya tambahan (make charges).
36
Gambar 2.20 Use Case Diagram (Rumbaugh, Jacobson & Booch, 1999:34) 1.3.2 Class Diagram Class diagram digunakan pada saat fase design dan analisis. Saat fase analisis, dibuat sebuah high-level conceptual design. Pada saat ini, class diagram dapat dibuat menggunakan hanya class name atau pseudocode yang menggambarkan tugas dari class tersebut. Class diagram yang dibuat pada saat fase analisis digunakan untuk menjelaskan relasi antar class di domain masalah, tetapi relasi ini tidak menentukan bagaimana sistem harus di implementasikan. Saat akhir dari fase desain, class diagram yang menjelaskan bagaimana sistem harus di implementasikan harus sudah dikembangkan. Class diagram yang dibuat setelah fase desain harus memiliki informasi implementasi yang mendetil, termasuk class name, method dan atribut dari class, dan relasi antar class (Williams, 2004:4). Rumbaugh, Jacobson dan Booch (2004:28) menyatakan bahwa class diagram, disebut demikian karena fokus utamanya adalah pada deskripsi dari class. Sebuah class adalah sebuah deskripsi dari konsep atau solusi dari suatu aplikasi/sistem.
Class adalah pusat dari
37
segalanya, dimana elemen-elemen lain pasti terkait dengan class atau berada di dalam class itu sendiri. Pada class diagram, class digambarkan menggunakan persegi. Daftar atribut dan operasi pada class berada di dalam persegi tersebut (didalam class). Daftar atribut dan operasi-operasi dapat dibuat lebih simpel apabila detail lebih dalam tidak diperlukan.
Class dapat
digunakan oleh beberapa diagram, namun atribut dan operasi yang ada di dalam class hanya dapat digunakan pada satu diagram. Gambar
2.18
menunjukan
class
diagram
yang
menggambarkan sebuah aplikasi pertunjukan. Diagram ini berisikan beberapa class yang penting yaitu Customer, Reservation, Ticket dan Performance.
Customer dapat melakukan banyak reservasi (class
Reservation).
Namun sebaliknya, sebuah reservasi (class
Reservation) hanya dapat dilakukan oleh satu Customer. Terdapat dua jenis Reservation (pemesanan), yaitu Subscription series (berlangganan) dan individual Reservations (pemesanan individual). Kedua jenis pemesanan dapat memesan satu tiket atau beberapa tiket, tetapi tidak dapat melakukan keduanya sekaligus. Tiap pertunjukan memiliki beberapa jumlah tiket dan beberapa jumlah kursi unik. Pertunjukan dibedakan berdasarkan nama pertunjukan, tanggal pertunjukan dan waktu pertunjukan.
38
Gambar 2.21 Class Diagram (Rumbaugh, Jacobson & Booch, 1999)
1.3.3 Sequence Diagram Sequence diagram digunakan pada saat fase design dan analisis. Sequence diagram biasa digunakan untuk menggambarkan aliran kronologi terstruktur melalui sebuah use case.
Dengan
membuat sebuah sequence diagram, objek-objek yang berpartisipasi di use case tersebut akan ter identifikasi. Proses dari pembuatan sebuah sequence diagram akan menghasilkan pembaharuan dari use case dan menemukan behavior yang dibutuhkan namun belum ada sebelumnya (Williams, 2004). Sequence diagram menampilakan sederetan pesan yang disusun berdasarkan urutan waktu. Tiap peran (Role) ditampilkan sebagai sebuah garis waktu. Garis ini berupa sebuah garis vertikal yang mewakili tiap-tiap Role dan seiring berjalannya waktu, tiap Role memiliki interaksi yang berbeda-beda. Pertukaran pesan antar role ditunjukkan melalui garis dengan tanda panah.
Sebuah sequence
39
diagram menunjukan riwayat dari sebuah transaksi (Rumbaugh, Jacobson dan Booch, 2004). Gambar 2.19 menujukkan sebuah sequence diagram use case pembelian tiket. Use case dimulai saat customer memesan dan kios mengakses sistem pertunjukan (box office).
Proses pembayaran
melalui kartu kredit mengikut sertakan komunikasi antara sistem pertunjukan dan jasa kartu kredit (credit card service). Ketika proses pembayaran selesai, maka sistem box office akan mengirim pesan bahwa tiket sudah bisa di-print.
Gambar 2.22 Sequence Diagram (Rumbaugh, Jacobson & Booch, 1999:34)
1.3.4 State Diagram State diagram menunjukan riwayat dari sebuah objek pada satu kelas. Sebuah state machine berisikan keadaan - keadaan yang terhubung oleh transisi-transisi.
Tiap keadaan menggambarkan
sebuah periode waktu masa hidup (lifetime) sebuah objek pada kondisi tertentu. Ketika terjadi sebuah event, akan terjadi transisi yang dapat membawa objek pada keadaan (state) yang baru (Rumbaugh, Jacobson dan Booch, 2004).
40
Williams (2004) menyatakan bahwa state diagram dibuat saat fase desain dan analisis untuk menjelaskan behavior dari objek-objek non trivial. State diagram digunakan untuk menjelaskan behavior dari sebuah objek yang digunakan pada beberapa use case dan digunakan untuk mengindentifikasi atribut objek.
Selain itu state
diagram juga digunakan untuk memperbaharui deskripsi behavior sebuah objek.
Gambar 2.23 Sebuah State Diagram (Rumbaugh, Jacobson & Booch, 1999:34)
Ditunjukan pada gambar 2.20 terdapat sebuah state diagram untuk proses penjualan tiket sebuah pertunjukan.
Keadaan awal
(initial state) dari sebuah tiket (titik hitam) adalah keadaan tiket tersedia (available).
Sebelum penjualan dimulai, pelanggan yang
sudah berlangganan akan mendapatkan kursinya lebih dahulu dan akan ditandai terjual (sold). Bagi pembeli tiket individual, ketika pelanggan
sudah
memilih
sebuah
kursi
(belum
melakukan
pembayaran), maka kursi tersebut akan masuk ke keadaan terkunci (locked). Kemudian, apabila tiket yang telah terkunci jadi dibeli (buy) maka keadaan tiket akan berubah menjadi terjual (sold). Sebaliknya, apabila tiket tidak jadi dibeli ataupun pelanggan terlalu lama (timed out) maka tiket akan kembali kepada keadaan available. Tiket milik pelanggan yang sudah berlangganan dapat ditukar (exchange) dengan
41
tiket pertunjukan lain, sehingga tiket kursi tersebut akan berubah kepada keadaan available.
1.3.5 Activity Diagram Activity diagram digunakan pada saat fase design dari methodmethod yang kompleks. Activity diagram juga dapat digunakan saat analisis untuk menguraikan aliran kompleks dari sebuah use case. Melalui activity diagram, desainer/analis dapat menspesifikasi sequencing rules yang esensial yang harus diikuti oleh use case (Williams, 2004). Rumbaugh, Jacobson dan Booch (2004) menyatakan activity diagram adalah variasi lain dari state diagram yang menunjukkan aktivitas komputasi pada saat melakukan perhitungan. Tiap activity state mewakili sebuah aktivitas, yaitu sebuah alur kerja atau pengeksekusian sebuah operasi. Gambar 2.21 menunjukkan activity diagram penjualan tiket pertunjukan.
Diagram ini menunjukkan proses saat sebuah
pertunjukan akan dilakukan. ketergantungan. kendali.
Tanda panah menunjukan urutan
Garis tebal menunjukan fork atau gabungan dari
Gambar 2.21 menunjukkan bahwa sebelum sebuah
pertunjukan dapat ditampilkan (perform), penjualan tiket dan dress rehearsal harus dilakukan terlebih dahulu.
Sedangkan untuk
melakukan dress rehearsal, harus dilakukan latihan (rehearse), pembangunan latar (build sets), desain pencahayaan (design lighting) dan pembuatan kostum (make costumes). menunjukan model dari alur kerja dunia nyata.
Activity diagram
42
Gambar 2.24 Activity Diagram (Rumbaugh, Jacobson & Booch, 1999:34)
1.4 Android James Steele dan Nelson To (2011) menyatakan Android sebagai sebuah mobile operating system yang berkembang paling cepat saat ini. Lebih dari 30 smartphone tiap tahunnya diluncurkan dan lebih dari 10.000 aplikasi (apps) di unggah ke Google Playstore tiap bulannya, membuat Android menjadi sebuah OS yang berkembang sangat pesat. Android memiliki berbagai macam jenis fitur yang dapat memenuhi kebutuhan berbagai macam pengguna. 1.4.1 Sejarah Android Android, Inc., adalah sebuah perusahaan startup yang berasal dari Palo Alto, California. Walaupun Android, Inc. sangat identik dengan Google, sebenarnya Android, Inc. baru diakusisi Google pada tahun 2005. Apple meluncurkan iPhone pada tahun 2007, sebuah touch-screen phone
43
dengan fitur multi-touch dan sebuah open market untuk applikasi (App Store). Pada saat itu Android sedang melakukan pengembangan sebuah ponsel dengan qwerty keyboard, tetapi Android dengan segera beradaptasi untuk meyaingi Apple iPhone. Android meluncurkan fitur serupa, namun dengan kelebihan yang signifikan seperti kendali lebih untuk developer (Android Software Development Kit) dan multitasking.
Selain itu,
Android memberikan fitur yang dibutuhkan perusahaan-perusahaan besar seperti remote wipe dan Virtual Private Network (VPN). Keberagaman device dan proses adaptasi yang singkat membuat Android memiliki pengguna yang terus berkembang, walaupun hal tersebut membuat tantangan bagi developer semakin meningkat. Aplikasi harus mampu beradaptasi dengan berbagai macam ukuran layar, rasio resolusi, keyboards, sensor hardware, versi OS, kualitas wireless data, dan konfigurasi sistem.
Hal ini sulit, karena aplikasi harus dapat
digunakan pada tiap jenis device, namun sangat tidak mungkin untuk melakukan testing pada tiap jenis device Android yang ada. Karena kesulitan tersebut, Android kemudian dibangun untuk memastikan agar tiap platform dapat mendapatkan pengalaman pemakaian device yang seragam.
Walaupun banyak perbedaan pada
hardware device, Android OS mencoba untuk mengisolasi perbedaan tersebut dengan tetap memberikan fleksibilitas untuk memodifikasi device sesuai kebutuhan.
Keseragaman dilakukan dengan cara memberikan
update untuk OS dan membuat sebuah Application Programming Interfaces (API) untuk pengembangan aplikasi Android (Steele & To,2011). Pada 23 September 2008, Google me-release Android 1.0, dengan fitur utamanya berupa sebuah web browser, camera, dan Google search. Setelah peluncuran perdana Android OS ini, selanjutnya tiap OS Android diberi sebuah code name yang dinamakan berdasarkan makanan pencuci mulut (dessert). Berikut adalah versi OS Android yang telah diluncurkan hingga tahun 2014:
44
Tabel 2.2 Versi Android OS Versi
Tanggal Peluncuran dan Perubahan
Android OS 1.1
SDK 1.1 di-release oleh Google pada 9 Februari 2009 sebagai update dari Android 1.0.
1.5 (Cupcake)
SDK 1.5 di-release oleh Google pada 30 April
Berdasarkan
2009. Perubahan berupa fitur untuk merekam
Linux Kernel
dan memutar video dalam format MPEG-4 dan
2.6.27
3GP, home screen (aplikasi halaman utama pada sebuah Android Device) yang dapat diisi dengan widgets (minature app view), dan animasi transisi layar.
1.6 (Donut)
SDK 1.6 di-release oleh Google pada 15
Berdasarkan
September
Linux
penambahan fungsi pada Gesture framework
Kernel
2.6.29
2009.
Perubahan
berupa
dan GestureBuilder development tool, sebuah camera/camcorder/gallery terhubung,
support
interface
yang
resolusi
layar
untuk
WVGA, dan pembaruan pada proses pencarian (Google Search). 2.0/2.1 (Éclair)
SDK 2.0 di-release oleh Google pada 26
Berdasarkan
Oktober 2009.
Linux
wallpaper (wallpaper yang memiliki gerakan
2.6.29
Kernel
Perubahan berupa live
animasi), berbagai macam fitur kamera baru (termasuk flash support, digital zoom, scene mode, white balance, color effect dan macro focus),
kecepatan
mengetik
yang
telah
dipercepat pada keyboard virtual, dictionary yang lebih pintar yang dapat belajar dari kata yang sering digunakan dan mempelajari nama kontak sebagai saran, Google Maps 3.1.2, dan Bluetooth 2.1 support.
45
Tabel 2.2 Versi Android OS Google kemudian me-release SDK 2.0.1 pada 3 Desember 2009 dan SDK 2.1 pada 12 Januari 2010/
Version 2.0.1 fokus pada
perubahan API minor, perbaikan pada bug, dan perubahan perilaku framework. Versi 2.1 menunjukkan
perbaikan
pada
API
dan
perbaikan bug. 2.2 (Froyo)
SDK 2.2 di-release oleh Google pada 20 Mei
Berdasarkan
2010.
Linux
JavaScript Engine V8 Google Chrome pada
Kernel
2.6.32
Perubahan
termasuk
integrasi
aplikasi Browser, voice dialing dan contact sharing melalui Bluetooth, Adobe Flash support,
peningkatan
kecepatan
aplikasi
menggunakan kompilasi Just-In-Time (JIT), dan fungsi USB tethering dan Wi-fi Hotspot.
Google kembali merilis sebuah update dari Froyo, yaitu SDK 2.2.1 pada 18 Januari 2011. Perubahan yang termasuk perbaikan bug, peningkatan performa.
keamanan,
dan
penambahan
Pada 22 Januari 2011, Google
kembali meluncurkan update, SDK 2.2.2 untuk memperbaiki masalah jalur pengiriman SMS yang mempengaruhi Nexus One.
Terakhir,
Google me-release update SDK 2.2.3 pada 21 November 2011
yang
memperbaiki dua
masalah keamanan. 2.3
SDK 2.3 di-release oleh Google pada 6
(Gingerbread)
Desember 2010. Perubahan termasuk garbage
Berdasarkan
collector
Linux
resposivitas aplikasi, support untuk sensor
2.6.35
Kernel
yang
meningkatkan
tingkat
gyroscope dan barometer, support untuk
46
memutar video WebM/VP8 dan AAC audio Tabel 2.2 Versi Android OS encoding, support untuk komunikasi nearfield, dan fungsi copy/paste yang telah diperbarui yang dapat digunakan user dengan menekan sebuah kata, kemudian ditahan, copy, dan paste.
Google kemudian me-release update untuk SDK 2.3.3 pada Februari 9, 2011.
Update
terbaru memiliki peningkatan dan perbaikan pada API. SDK update 2.3.4 di-release pada 28 April 2011 dengan tambahan voice chat dan video chat menggunakan Google Talk. Pada 25 Juli 2011, SDK update versi 2.3.5 memberikan sistem yang lebih berkembang, animasi
bayangan
pada
saat
scrolling,
peningkatan efisiensi baterai, dan lainnya. SDK update 2.3.6 yang di-release pada 2 September 2011 melakukan perbaikan pada voice search. SDK 2.3.7 pada 21 September 2011 memberikan support untuk penggunaan Google Wallet pada Nexus S 4G. 3.0 (Honeycomb)
SDK 3.0 di-release oleh Google pada 22
Berdasarkan
Februari 2011.
Linux
sebelumnya, versi 3.0 dibuat secara khusus
2.6.36
Kernel
Tidak seperti versi-versi
untuk tablet, seperti Motorola XOOM, tablet pertama
yang
diluncurkan
menggunakan
Android OS Honeycomb (pada 24 Februari 2011). Tambahan pada versi ini adalah user interface
yang
lebih
baik,
multitasking,
multicore processors, hardware acceleration, dan menyediakan sebuah 3d desktop dengan
47
widget yang telah di desain ulang. Tabel 2.2 Versi Android OS Selanjutnya, Google meluncurkan SDK update 3.1, 3.2, 3.2.1, 3.2.2, 3.2.4, dan 3.2.6 selama tahun 2011 hingga Februari 2012. 4.0 (Ice Cream
SDK 4.0 di-release oleh Google pada 19
Sandwich)
Oktober 2011. SDK 4.0.1 dan kelanjutan dari
Berdasarkan
seri 4, menyatukan keunggulan dari SDK 2.3
Linux
(smartphone) dan SDK 3.0 (tablet). Fitur baru
Kernel
3.0.1
yang dimasukkan berupa perekam video 1080p dan launcher yang dapat di kustomisasi. SDK update 4.0.2, 4.0.3, dan 4.0.4 diluncurkan oleh Google pada akhir 2011 hingga Maret 2012.
4.1/4.2/4.3 (Jelly
SDK 4.1 di-release oleh Google pada 27 Juni
Bean)
2012. Fitur terbaru yang dimasukan adalah
Berdasarkan
vsync timing, triple buffering, app widget yang
Linux Kernel 3.1
dapat
berubah
ukuran
secara
otomatis,
peningkatan pada voice search, mutichannel audio, dan notification yang dapat diperluas. Versi 4.1.1 di-release pada bulan Juli.
Pada awal Oktober, Google me-release SDK 4.1.2,
yang
memiliki
tambahan
berupa
lock/home screen rotation support untuk tablet Nexus 7, gesture satu jari untuk membuka dan menutup notification panel, perbaikan pada bug, dan peningkatan performa.
Kemudian
pada akhir Oktober, Google meluncurkan update terbaru yang menambahkan fitur Photo Sphere
panorama
photos,
multiple
user
accounts (khusus tablet), sebuah daydream screen saver yang otomatis berfungsi saat device terkunci atau dalam keadaan diam,
48
Tabel 2.2 Versi Android OS notification power controls dan support untuk wireless display (Miracast).
SDK 4.3, diluncurkan pada 24 Juli 2013, dengan penambahan berupa pembatasan untuk kontrol user pada multiple user account, Bluetooth LE (Smart) support, dan beberapa peningkatan Management
API
untuk
(DRM)
dan
Digital
Rights
fitur
media-
encoding. 4.4 (KitKat)
SDK 4.4 di-release oleh Google pada 31
Berdasarkan
Oktober 2013.
Linux Kernel 3.4
adalah untuk membuat Android agar dapat
Fokus utama pada versi ini
dipakai pada device dengan memory kecil dan beberapa developer tools disediakan untuk membantu aplikasi agara dapat memanage memory secara lebih baik. Fitur utama dari versi ini adalah framework yang digunakan untuk melakukan printing view contents dan mengirimkan dokumen yang ada pada device kepada operator. 4.5 (Lollipop)
SDK 4.5 di-release oleh Google pada 2014.
Berdasarkan Linux Kernel 3.5
1.4.2 Fitur-fitur Android Berikut adalah fitur-fitur yang tersedia pada Android pada umumnya, terlepas dari perbedaan vendor hardware:
49
•
Application framework yang mendukung penggunaan ulang dan pergantian komponen aplikasi
•
Mendukung Bluetooth, EDGE, 3G dan Wi-fi
•
Built-in camera, GPS, compass, dan accelerometer
•
Dalvik virtual machine yang di optimalisasikan untuk mobile device
•
Browser yang terintegrasi dan didasari oleh WebKit open source engine
•
Mendukung pemutaran media seperti audio, video dan gambar dalam format MPEG-4, H.264, MP3, AAC, AMR, JPG, PNG, dan GIF
•
Optimized graphics yang didukung oleh sebuah graphics library 2D terkustomisasi dan grafik 3D berdasarkan spesifikasi OpenGL ES 1.0,1.1 atau 2
•
Penyimpanan data yang terstruktur menggunakan SQLite
1.4.3 Lapisan Arsitektur Android Stefan Brahler, (2011:4), mendefiniskan sistem operasi Android memiliki 4 layer arsitektur yang merupakan susunan dari sistem Android. Setiap layer dari tumpukan ini menghimpun beberapa program yang saling bergantung satu sama lain dan saling mendukung untuk menjalankan fungsi-fungsi spesifik dari sistem operasi.
50
Gambar 2.25 Arsitektur Android (Stefan Brahler, 2011:4) 1.4.3.1 Linux Kernel Dasar dari lapisan arsitektur Android adalah Linux (Linux Kernel) dimana Android hanya menggunakan Kernel dari Linux. Kernel adalah lapisan abstrak antara hadrware dan software. Linux Kernel 2.6 dengan sekitar 115 patch, memberikan fungsionalitas sistem dasar seperti security, network stack, driver model, manajemen proses, manajemen memori, dan manajemen perangkat seperti kamera, keypad, tampilan dan lain sebagainya. Kernel menangani area yang sangat dikuasai oleh Linux seperti networking dan lingkup array yang luas dari device driver.
1.4.3.2 Libraries Di atas Linux Kernel terdapat sekumpulan library termasuk WebKit sebuah open source web browser engine, libc, SQLite database yang berguna untuk menyimpan dan berbagi application data, libray untuk memutar dan merekam audio maupun video, SSL library yang bertanggung jawab atas internet security, dan lain sebagainya.
51
1.4.3.3 Android Runtime Bagian ketiga dari arsitektur Android yang terdapat di lapisan kedua adalah Android Runtime. Bagian ini memiliki sebuah komponen kunci yang dimakan Dalvik Virtual Machine yang dapat dibilang merupakan sebuah Java Virtual Machine yang di optimalisasikan untuk Android. Dalvik Virtual Machine menguanakan fitur utama Linux seperti
memory
management
dan
multi
threading,
merupakan dasar dari bahasa pemrograman Java. memungkinkan
tiap
aplikasi
Android
untuk
yang
Dalvik VM menjalankan
prosesnya masing-masing dan dengan Dalvik Virtual Machine nya masing-masing. Android Runtime juga menyediakan sekumpulan library utama yang memungkinkan pengembang aplikasi Android untuk menulis aplikasi Android menggunakan bahasa pemrograman Java standard.
1.4.3.4 Application Framework Layer Application Framework
menyediakan berbagai
macam services di level yang lebih tinggi untuk aplikasi-aplikasi, dalam bentuk class Java. Developer aplikasi dapat menggunakan services-services ini pada aplikasi mereka.
1.4.3.5 Applications Layer paling atas ini berisi semua aplikasi Android. Aplikasi-aplikasi seperti Contacts, Browser, Games, dan lain-lain, adalah aplikasi yang di install di layer ini. Seorang developer dapat membuat aplikasi yang menggantikan aplikasi yang sudah ada di sistem sebelumnya.
52
Setiap aplikasi Android dibuat melalui sebuah Android Project dan memiliki berbagai macam fungsi. Fungsi-fungsi ini dapat dibagi ke 4 tipe komponen Android (App components) yang berbeda, dimana tiap komponen dibedakan melalui Java base class nya. Aspek yang berbeda dari aplikasi Android adalah dimana sebuah aplikasi dapat menjalankan komponen aplikasi lain. Jika developer menginginkan user untuk mengambil gambar dengan kamera, maka developer tidak perlu membuat aplikasi khusus untuk mengambil gambar, melainkan cukup menjalankan activity aplikasi kamera melalui aplikasi milik developer. Saat system menjalankan sebuah komponen, proses untuk aplikasi juga dimulai
dan
membuat
instance-instance
dari
class
yang
dibutuhkan untuk menjalankan komponen tersebut. System manjalankan tiap aplikasi pada proses yang berbeda menggunakan file permissions dan membatasi akses antar aplikasi, sehingga aplikasi lain tidak bisa sembarangkan mengaktivasi komponen secara langsung. Untuk mengaktifkan komponen aplikasi lain, sebuah pesan harus dikirimkan ke system, barulah system akan menjalankan komponen tersebut. Berikut adalah 4 komponen dari sebuah aplikasi Android: 1. Activities Sebuah activity merupakan sebuah tampilan dengan user interface. Sebuah aplikasi email contohnya, memiliki sebuah activity untuk mengakses inbox e-mail, activity lain untuk menulis email, dan activity lainnya lagi untuk membaca email. Activity memang memiliki keterkaitan satu sama lain untuk memberi user experience yang kohesif. Namun, tiap activity adalah independen. Dengan demikian, aplikasi lain dapat
mengakses
satu
activity
(jika
aplikasi
tersebut
memperbolehkan). Misalnya, aplikasi kamera dapat mengirim
53
email segera setelah mengambil gambar untuk mengirimkan gambar tersebut ke orang lain melalui email. 2.
Services Service adalah komponen yang berjalan di background untuk menjalankan operasi panjang atau untuk melakukan proses pekerjaan jarak jauh. Service tidak memiliki user interface. Komponen lain seperti activity dapat menjalankan service ataupun berinteraksi dengan service.
3.
Content providers Content Provider mengelola satu set app data yang dipakai bersama.
Data dapat disimpan di file system, di SQLite
database, di web, atau di data storage manapun yang dapat diakses oleh device. Melalui content provider, aplikasi lain dapat melakukan query atau memodifikasi data jika diberi izin oleh content provider.
Dengan demikian, aplikasi yang
meiliki izin dapat melakukan query pada bagian penyedia konten untuk membaca dan menulis informasi tertentu. Content provider juga berguna untuk menulis dan membaca data yang dirahasiakan khusus untuk aplikasi yang akan dibuat. 4.
Broadcast Receivers Broadcast receiver adalah sebuah komponen yang merespons pemberitahuan broadcast dari sistem. Broadcast berasal dari sistem, seperti broadcast yang memberitahukan bahwa layar sudah mati, baterai lemah ataupun ketika sebuah gambar diambil.
Aplikasi juga dapat memulai sebuah broadcast,
seperti untuk memberi pemberitahuan bahwa sebuah data sudah di download ke device dan dapat digunakan oleh aplikasi lain.
Broadcast receiver adalah sebuah “pintu”
menuju komponen lain.
54
2.4.4 Android Software Development Kit (SDK) Android SDK merupakan kumpulan dari banyak data seperti libraries,
executables,
scripts,
dokumentasi,
pemograman
API
(Application Programming Interface) dan sebagainya. SDK berisi satu atau dua folder yang digunakan sebagai alat bantu, yang pertama bernama tools dan dimulai dari SDK versi 8, yang lainnya disebut platform – tools. Android SDK juga sudah dilengkapi fitur emulator, dimana emulator digunakan untuk menjalankan aplikasi dalam tahapan pengembangan. (Steele & To, 2011)
1.5 Networking Doug Lowe (2011), mendifiniskan Network atau jaringan sebagai dua atau lebih komputer yang saling berhubungan satu sama lain sehingga mereka dapat saling bertukar informasi seperti bertukar email, dokumen, dan lain sebagainya. Pada dasarnya, koneksi ini dihubungkan menggunakan sebuah kabel listrik yang membawa informasi dalam bentuk sinyal listrik. Namun, saat ini terdapat koneksi nirkabel seperti Wi-fi, Broadband ataupun Bluetooth. Selain itu terdapat juga koneksi fiber optic yang menggunakan gelombang pantulan cahaya. Jaringan juga membutuhkan hardware-hardware yang dipakai untuk membangun sebuah network.
Software khusus juga dibutuhkan untuk
menjalankan hubungan komunikasi. Sebuah network adalah kombinasi antara hardware dan software yang saling berkirim data dari sebuah lokasi ke lokasi lainnya. Hardware terdiri dari peralatan fisik yang mengirimkan sinyal dari sebuah titik ke titik lainnya.
Sedangkan software terdiri dari kumpulan-
kumpulan instruksi yang membuat sebuah jaringan dapat berfungsi seperti yang diinginkan (Forouzan, 2007:27).
1.5.1
Kriteria Network Saat sebuah jaringan akan dibuat, jaringan tersebut harus dibuat dengan kriteria tertentu. Kriteria yang paling penting dan harus ada pada setiap jaringan adalah performance, reliability &
55
security. Berikut adalah kriteria jaringan menurut Behrouz A. Forouzan (2007): 1. Performance Performance atau kinerja dapat diukur dengan beberapa cara, salah satunya adalah dengan melakukan pengukuran pada waktu transit dan waktu respon.
Waktu
transit adalah waktu yang dibutuhkan oleh sebuah pesan untuk berpindah dari sebuah device ke device lain. Sedangkan waktu respon adalah waktu yang telah berlalu selama proses permintaan dan respon. Kinerja dari sebuah jaringan bergantung pada beberapa faktor, seperti jumlah pengguna, tipe medium yang digunakan untuk transmisi data (Ethernet / Fiber Optic / Wi-fi), kemampuan dari device yang tersambung, dan efisiensi dari software yang digunakan. Kinerja biasanya di evaluasi menggunakan dua satuan jaringan, yaitu throughput (input & output)dan delay. Sebuah jaringan membutuhkan banyak throughput dan sedikit delay. Namun, dua kriteria ini biasanya saling bertentangan. Misalnya, jika banyak data dikirim pada jaringan, tentu saja throughput akan meningkat, tapi delay yang diakibatkan oleh kemacetan jaringan juga akan meningkat. 2. Reliability Reliability atau ke diukur dari ketepatan pengiriman, frekuensi kegagalan, waktu yang dibutuhkan link untuk melakukan recovery terhadap kegagalan, dan daya tahan terhadap bencana. 3. Security Masalah keamanan termasuk melindungi data dari akses yang tidak sah, melindungi data dari kerusakan dan
56
pengembangan, dan implementasi kebijakan dan prosedur untuk pemulihan dari pelanggaran dan kerugian data.
1.5.2 Seven Layers of the OSI Model OSI model adalah sebuah framework berlapis yang digunakan untuk desain jaringan yang memungkinkan komunikasi antara berbagai jenis sistem komputer. OSI model terdiri dari 7 lapisan yang berbeda tetapi saling berhubungan.
Tiap layer
masing-masing mendefinisikan proses yang bekerja pada jaringan, seperti pada gambar 2.23.
Gambar 2.26 7 OSI Layers (Behrouz A. Forouzan, 2007:30)
1. Physical Layer Physical layer adalah bagian paling dasar dari OSI model. Physical layer ditujukan kepada karakteristik fisik dari sebuah jaringan seperti jenis kabel yang digunakan, tipe
57
konektor yang dipakai, seberapa panjang kabel yang digunakan, dan lain sebagainya. Selain karakteristik fisik, physical layer juga mencakup karakteristik elektrik seperti sinyal yang digunakan untuk mengirim data melalui kabel dari sebuah jaringan ke jaringan lainnya.
Walaupun mencakup hal tersebut, layer ini tidak
dapat menjabarkan arti dari sinyal-sinyal yang dikirimkan dan hanya dapat membedakan nilai binary 1 dan 0. Layer dengan level lebih tinggilah yang akan membaca dan mengartikan sinyal yang dikirimkan.
Gambar 2.27 Hubungan Physical layer dengan Data Link layer (Behrouz A. Forouzan, 2007:33)
2. Data Link Layer Data Link layer adalah layer yang mentransformasikan physical layer, sebuauh fasilitas transmisi “mentah”, menjadi sebuah link atau network yang dapat diandalkan. Data link protocol memberikan detail pada paket yang dikirimkan, seperti ukuran paket data yang akan dikirim, tujuan pengiriman paket sehingga paket sampai pada tujuan, dan memastikan bahwa tidak ada lebih dari dua node yang melakukan transmisi data pada waktu yang sama. Data link layer juga menyediakan fitur error detection dan error correction dasar untuk memastikan bahwa data
58
yang terkirim adalah sama dengan data yang diterima. Jika sebuah error yang tidak dapat diperbaiki terjadi, data link harus menyediakan cara bagaimana memberi informasi pada sebuah node jika terjadi sebuah error, agar node tersebut dapat mengirim data kembali.
Gambar 2.28 Hubungan Data Link layer dengan Physical layer dan Network layer (Behrouz A. Forouzan, 2007:34)
3. Network Layer Network Layer bertanggung jawab pada pengiriman paket data dari source hingga sampai ke tujuan. Data link layer memastikan bahwa pengiriman paket antar sistem dalam satu network akan sampai tujuan, sedangkan network layer memastikan pengiriman paket yang berasal dari source sampai ke tujuannya yang bisa saja berada di jaringan lain. Saat dua sistem terhubung dalam satu jaringan, biasanya tidak diperlukan sebuah network layer. Tetapi, jika dua sistem tersebut terhubung pada dua jaringan yang berbeda dengan device-device lainnya pada tiap jaringan, dibutuhkan network layer untuk memastikan pengiriman paket dari source menuju tujuan pengiriman.
59
Gambar 2.29 Hubungan Network layer dengan Data Link layer dan Transport layer (Behrouz A. Forouzan, 2007:36)
4. Transport Layer Transpot Layer bertanggung jawab pada pengiriman process-to-process dari seluruh pesan yang akan dikirimkan. Process adalah sebuah program aplikasi yang berjalan pada sebuah host. Tidak seperti Network Layer yang mengirimkan pesan tanpa mempedulikan hubungannya satu sama lain dan memperlakukan tiap pesan secara individual, transport layer memastikan bahwa pesan sampai secara utuh dan berurutan.
Gambar 2.30 Hubungan Transport layer dengan Session layer dan Network layer (Behrouz A. Forouzan, 2007:38)
5. Session Layer Session layer melengkapi layer physical, data link dan network yang tidak dapat melakukan proses-proses tertentu.
60
Session layer merupakan dialog controller dari jaringan. Session layer berfungsi untuk menghubungkan, me-maintain dan melakkan sinkronisasi interaksi antara sistem komunikasi. Sebuah session dapat berisikan banyak pertukaran data antara dua komputer yang tergabung dalam session tersebut. Setelah session dibuat, session akan di maintain hingga kedua komputer setuju untuk mengakhiri session.
Session layer
memiliki 3 jenis mode transmisi: a. Simplex: pada mode ini, data mengalir dari satu arah b. Half-duplex: pada mode ini, data mengalir dari dua arah, tetapi hanya satu arah dalam satu waktu c. Full-duplex: pada mode ini, data mengalir dari dua arah dalam satu waktu
Gambar 2.31 Hubungan Session layer dengan Transport layer dan Presentation layer (Behrouz A. Forouzan, 2007:40)
6. Presentation Layer Presentation
Layer
bertanggung
jawab
untuk
memastikan bagaimana data di representasikan pada aplikasi. Sebagian besar komputer seperti Windows, Unix, dan Macintosh menggunakan ASCII (American Standard Code for Information Exchange) untuk merepresentasikan datanya. Komputer
lain
seperti
IBM
Mainframe
Computers
61
menggunakan kode lain yang disebut sebagai EBCDIC (Extended Binary Coded Decimal Interchange Code). Kedua jenis kode tersebut tidak kompatibel satu sama lain, sehingga dibutuhkan presentation layer untuk mengkonversikan data dari ASCII ke EBCDIC dan begitu juga sebaliknya. Selain
berfungsi
untuk
mengkonversikan
data,
presentation layer juga dapat melakukan teknik kompresi yang canggih sehingga dapat mengkompresikan informasi menjadi hanya sedikit data ketika dikirim melalui jaringan. Diujung lain dari transmisi jaringan, sebuah presentation layer lainnya akan melakukan uncompress pada data tersebut sehingga informasi akan diterima sebagaimana mestinya.
Gambar 2.32 Hubungan Presentation layer dengan Session layer dan Application layer (Behrouz A. Forouzan, 2007:40)
7. Application Layer Application layer adalah layer tertinggi dari sebuah OSI model, bertanggung jawab pada teknik yang digunakan oleh program aplikasi untuk dapat terhubung pada jaringan. Application layer memungkinkan pengguna baik manusia ataupun software untuk mendapatkan akses ke jaringan. Application layer menyediakan layanan antarmuka untuk pengguna dan dukungan untuk service seperti e-mail, remote
62
file access & transfer, shared database management dan jenisjenis distributed information service lainnya.
Gambar 2.33 Hubungan Application layer dengan Presentation layer (Behrouz A. Forouzan, 2007:41)
1.5.3 TCP/IP Protocol Framework Seperti halnya pada 7 layers of the OSI model, TCP/IP protocol didasari oleh sebuah framework berlapis (layer). TCP/IP memiliki 4 layer, seperti yang ditunjukkan pada gambar 2.31 yang akan dijelaskan selanjutnya.
63
Gambar 2.34 Empat layer TCP/IP Framework beserta TCP/IP Protocol yang bersangkutan (Doug Lowe, 2011:287) 1.
Network Interface Layer / Network Access Layer Network Interface Layer merupakan lapisan terbawah dari arsitektur TCP/IP.
Network Interface Layer berhubungan
dengan lapisan Physical Layer dan Data Link Layer pada 7 lapisan OSI. Banyak protokol TCP/IP yang dapat digunakan pada Network Interface Layer, seperti Ethernet dan Token Ring untuk LAN, dan protokol seperti X.25, Frame Relay, dan ATM untuk WAN.
Namun, Network Interface Layer
cenderung dianggap tidak dapat diandalkan (unreliable). 2.
Network Layer / Internet Layer Network Layer adalah tempat dimana data akan diberikan alamat pengiriman, dipaketkan dan di-route ke jaringan. Beberapa protokol Internet penting yang beroperasi pada Network Laye adalah Internet Protocol (IP), Address Resolution Protocol (ARP), Internet Control Message Protocol (ICMP) dan Internet Group Management Protocol (IGMP).
3.
Transport Layer Transport Layer adalah tempat dimana session dibuat dan tempat pertukaran paket data antara host. Dua protokol utama dapat ditemukan pada layer ini.
Protocol tersebut adalah
Transmission Control Protocol (TCP) dan User Datagram Protocol (UDP). TCP atau Transmission Control Protocol (TCP) adalah sebuah protokol yang menyediakan koneksi end-to-end yang menentukan format data, tujuan data, transmisi data, rute data dan bagaimana data diterima di tujuan. TCP/IP adalah sebuah connection oriented protocol. Protokol ini akan memastikan semua data/segment/frame akan diterima secara utuh. Jika
64
tidak, maka server akan meminta pengiriman ulang dan menunggu hingga semua potongan yang dikirim dapat disatukan menjadi sebuah data yang utuh. Jika waktu tunggu terlalu lama, koneksi akan time-out (Berk-tek : 2014). UDP atau User Datagram Protocol (UDP) adalah sebuah transport protocol yang memperluas pengiriman paket hostto-host dari sebuah jaringan ke dalam komunikasi process-toprocess.
UDP
harus
dapat
melakukan
penambahan
demultiplexing yang dibutuhkan ketika beberapa program (misal, beberapa web browser) membutuhkan koneksi jaringan internet. Demultiplexing membuat host dapat berbagi koneksi pada tiap program yang membutuhkannya (Berk-tek : 2014).
4.
Application Layer Application Layer berhubungan pada Session, Presentation dan Application Layer pada OSI model. Application layer protocol yang populer adalah HyperText Transfer Protocol (HTTP), File Transfer Protocol (FTP), Telnet, Simple Mail Transfer Protocol (SMTP) dan Domain Name System (DNS).
1.6 Wireless Fidelity (Wi-Fi) Brodovski & Shorter (2004) mendefiniskan Wi-fi atau Wireless Fidelity sebagai sebuah teknologi nirkabel yang dapat menghubungkan device ke internet tanpa harus melakukan hubungan fisik seperti hubungan kabel atau kawat pada device. Seperti halnya pada telepon genggam, Wi-fi membuat komputer dapat mengirim dan menerima data ketika berada dalam jangkauan jaringan access point. Teknologi ini menggunakan gelombang radio untuk mengrimkan data. Nama Wi-fi, yang diciptakan oleh Wi-fi Alliance, adalah sebuah julukan yang dipakai ketika mengacu pada jaringan tipe 802.11. Wi-fi Alliance adalah sebuah organisasi yang dibangun oleh penyedia jasa perlengkapan dan software wireless yang saling bekerja sama untuk menyatukan semua produk yang didasari oleh 802.11 agar memiliki kesesuaian atau keserasian dalam pengoperasiannya. Kemampuan dari wireless network ini dapat digunakan untuk menghubungkan
65
satu komputer dengan komputer lainnya, menghubungkan komputer ke internet, atau untuk membuat jaringan yang menggunakan IEEE 802.3 atau Ethernet. Teknolog Wi-fi mengunakan frekuensi radio dalam rentang 2.4 GHz atau 5 GHz untuk menyediakan sebuah koneksi nirkabel yang cepat, aman, dan dapat diandalkan.
Selain itu, dengan bermacam-macam tipe 802.11 wireless
networking standard yang ada, wireless device dapat berkomunikasi dengan kecepatan mulai dari 2 hingga 11 Megabits tiap detiknya (Mbps) pada rentang frekuensi 2.4 Ghz dan hingga 54 Mbps pada rentang frekuensi 5 Ghz. Kecepatan koneksi tentu saja akan selalu bergantung pada kualitas sinyal.
Namun,
walaupun sinyal terganggu, kecepatan jaringan akan tetap stabil dan dapat diandalkan.
1.6.1 Keunggulan Wi-fi Wireless Fidelity berkembang dengan pesat dan semakin banyak pengguna yang menyadari betapa pentingnya sebuah koneksi Internet. Untuk dapat memahami Wi-Fi, diperlukan pengetahuan mengenai keunggulan dan kelemahan Wi-Fi. Berikut adalah beberapa keunggulan dari Wi-Fi menurut Brodovski & Shorter (2004): 1. Kecepatan Transmisi Data Wi-Fi, memiliki kecepatan transmisi data yang hampir mencapai 100 kali lipat kecepatan transmisi data pada dial-up connection. Kecepatan transmisi data pada Wi-fi dapat mencapai hingga 11 megabits per detik.
2. Dapat diandalkan (reliable) Salah satu keunggulan Wi-fi yang menjadi kunci keberhasilannya adalah karena Wi-fi dapat menyediakan koneksi bagus yang dapat diandalkan. Penggunaan Wi-fi menjamin bandwith yang baik karena standar koneksi yang diaplikasikan.
Ini berarti walaupun terjadi
interupsi pada frekuensi radio, user tidak akan terputus koneksinya karena Wi-fi hanya akan memperlambat transmisi data.
66
3. Memiliki frekuensi dan koneksi dengan rentang yang panjang Pada area terbuka yang tidak terhalan oleh tembok, furnitur ataupun alat dengan sinyal radio yang menganggu, koneksi akan bertahan kuat dan cepat. Di area tertutup, kualitas koneksi akan berkurang namun tidak secara drastis. Tabel dibawah menunjukkan kualitas koneksi Wi-fi pada kecepatan dan jarak rata-rata maupun maksimum.
Tabel 2.3 Kecepatan Wi-fi berdasarkan Lokasi Lokasi
Outdoor / Terbuka Office
/
Jarak maksimum
Jarak dengan
dengan kecepatan
kecepatan
rata-rata
maksimum
228 – 305 meter
45 – 106 meter
Perkantoran 76 – 106 meter
30 – 45 meter
Industrial Residential / Perumahan
38 – 60 meter
18 – 24 meter
4. Mudah diintegrasikan Wi-fi juga mudah diintegrasikan pada jaringan Ethernet yang sudah ada.
Pada jaringan Ethernet yang terhubung, sebuah integrated
Ethernet controller dapat digunakan untuk menghubungkan kabelkabel ke access point. Selain itu, integrated Ethernet controler juga memiliki sebuah antena multi-directional untuk menerima data yang di transmisikan oleh wireless network.
Hal ini mempermudah
pengaplikasian wireless network pada pengguna yang sudah memilki jaringan Ethernet terhubung.
1.6.2 Kelemahan Wi-fi
67
Terlepas dari kelebihan-kelebihannya, Wi-fi masih memiliki beberapa kekurangan. Berikut adalah kekurangan pada Wi-fi menurut Cisco (2012): 1. Masalah penggunaan a. Login Process Pada hotspot tertentu, user harus melakukan login terlebih dahulu melalui browser barulah user bisa mendapatkan akses internet. Hal ini terkadang merepotkan user, terutama user yang belum terbiasa.
Apabila user tidak langsung membuka browser dan
langsung membuka e-mail, misalnya. Maka akses internet tidak akan didapatkan dan akan membuat user kebingungan lantaran device telah terkoneksi dengan hotspot, namun tidak mendapatkan akses internet karena tidak login melalui browser. b. Time Limit Masalah yang terjadi pada hotspot yang memiliki time limit atau batasan waktu penggunaan (misalnya seperti di hotel tertentu). Ketika waktu penggunaan sudah mencapai batasnya, akses internet akan terputus atau hilang, namun device akan tetap terkoneksi pada Wi-fi hotspot. c. Pemilihan Hotspot Pada beberapa lokasi tertentu, terdapat beberapa Wi-fi hotspot yang berada dalam jangkauan device. Jika device sudah mengenal SSID dari sebuah hotspot, maka device akan secara otomatis melakukan koneksi ke jaringan tersebut. Namun, jika device tidak mengenal satupun SSID yang berada di lokasi tersebut, user harus melakukan serangkaian proses yang panjang untuk mendapatkan akses internet. Proses panjang ini tidak 100% tanpa error dan akan memakan daya baterai yang tidak sedikit.
2. Masalah keamanan a. Evil Twin Attack Menggunakan sebuah nama SSID yang sama dengan nama SSID yang dimiliki oleh provider hotspot terpercaya. Sehingga user
68
akan tertipu dan melakukan hubungan ke hotspot yang palsu. Penyerangan ini dapat digunakan untuk mencuri data-data identitas. b. Session hi-jacking Pada penyerangan ini, penyerang meniru access point yang terasosiasikan dengan device pengguna, sehingga device akan lepas hubungan dari jaringan Wi-fi. Kemudian penyerang akan mencuri sesi yang telah dilepas oleh device milik user. c. Session side-jacking Penyerang melakukan penyerangan dan menghadang session cookie korban. Penyerang dengan ini dapat mengambil halaman web personal / privat milik user, seperti Facebook. d. Eavesdropping Jaringan Wi-fi yang tidak di enkripsi dapat di-intercept oleh penyerang. Penyerang dapat mencuri informasi pribadi seperti password, nomor kartu kredit, foto-foto, email, dan hal pribadi lainnya.
1.6.3 Wi-Fi Tethering Wi-fi tethering, atau yang biasa disebut sebagai Mobile Hotspot, menurut Han, et al. (2012), didefinisikan sebagai kegiatan berbagi koneksi Internet melalui sebuah mobile device yang memiliki fasilitas internet dengan device lainnya menggunakan Wi-fi.
Seperti yang
ditunjukkan pada gambar 2.32, Wi-fi tethering atau mobile hotspot menjadikan smartphone sebagai sebuah mobile software access point (Mobile SoftAP).
Perangkat lainnya, seperti laptop, tablet ataupun
smartphone, dapat menjalin koneksi dengan Mobile SoftAP melalui koneksi Wi-fi mereka. Mobile SoftAP memiliki tugas seperti sebuah router, yang menjadi penghubung antara koneksi 3G dan Wi-fi interface.
69
Gambar 2.35 Sebuah Mobile Hotspot
Sebelum Android ataupun iPhone belum menyediakan fasilitas Wi-fi tethering pada Operating System nya, sudah ada beberapa software developer yang menyediakan aplikasi Wi-fi Tethering baik di Google Playstore maupun di Appstore. Ada dua alasan mengapa Wi-fi tethering sangat dibutuhkan masyarakat. Pertama, karena cellular data (3G/4G) menyediakan akses internet yang sangat dapat diandalkan kapanpun dan dimanapun.
Kedua, sudahlah umum bagi orang-orang tertentu untuk
memiliki lebih dari dua buah device. Namun, tidak semua device tersebut akan diberikan fasilitas internet. Misalnya, seseorang memiliki sebuah iPhone dan sebuah iPad Wi-fi.
Maka ia hanya perlu mendaftarkan
layanan internet pada iPhone-nya saja dan berbagi fasilitas internet menggunakan Wi-fi tethering. Oleh karena itu, dalam kasus ini Wi-fi tethering akan sangat membantu.
Menanggapi kebutuhan masyarakat
saat ini, sebagian besar operating system seperti iPhone iOS dan Android OS sudah menyediakan fitur built-in Wi-fi tethering.
70
1.7 Java 1.7.1 Java sebagai Bahasa Menurut Jeff Friesen (2010), Java adalah sebuah bahasa yang dikembangkan oleh para pengembang dengan express source code. Sintaks Java berisi sebagian motif dari bahasa C dan C++ yang digunakan oleh para pengembang dalam memperpendek kurva pembelajaran bahasa C/C++.
1.7.2 Java sebagai Platform Menurut Jeff Friesen (2010), Java adalah sebuah platform yang digunakan untuk mengeksekusi program. Java platform terdiri dari virtual machine dan terkait dengan hubungan eksekusi, berbeda dengan platform lain yang biasanya terdiri dari prosesor fisik (seperti prosesor Intel) dan sistem operasi (seperti Linux).
Pengembang menggunakan edisi berbeda dari
platform Java untuk membuat program Java yang dijalankan di komputer desktop, web browsers, web servers, mobile information devices (seperti telpon selular), dan embedded devices. Beberapa contoh platform Java : 1. Java Platform, Standart Edition (Java SE) Platform Java yang digunakan untuk mengembangakan aplikasi, program yang berdiri sendiri berjalan di desktop. Java SE hanya digunakan untuk mengembangkan applets (aplikasi yang sangat ringan), berupa program yang dijalankan dalam konteks browser web. 2. Java Platform, Enterprise Edition (Java EE) Platform Java yang digunakan untuk mengembangkan aplikasi enterprise – oriented dan servlets, yang berupa program server yang dijalankan untuk Java EE Servlet API. Java EE dibangun di atas Java SE. 3. Java Platform, Micro Edition (Java ME) Platform Java yang digunakan untuk MIDlets, yang dijalankan di mobile information devices, dan XIets, serta program dibangun di embedded devices.
71
1.8 Eclipse Jeff Friesen (2010) mendefinisikan Eclipse sebagai salah satu perangkat lunak yang biasa disebut IDE (Integrated Development Environment) yang bersifat open source dan gratis yang digunakan untuk pengembangan pemograman bahasa Java dan bahasa pemograman lainnya seperti bahasa C, COBOL, PHP, Perl dan Python. (J.F. DiMarzio,2008:11) menyatakan bahwa IDE Eclipse sangat direkomendasikan untuk aplikasi Android dikarenakan memiliki fitur paling lengkap, gratis, dan Java IDE yang tersedia. Selain itu plugin Android untuk Eclipse menciptakan elemen seperti pengaturan tertentu sebagai file dan pengaturan untuk compiler yang digunakan.
Bantuan plugin Android untuk
Eclipse ini sangat menghemat waktu pengembangan.
72