1
BAB 2
Landasan Teori
Untuk membantu pembahasan, pada bab ini akan diuraikan landasan teori yang meliputi: Pothole Detection System, Android, dan akselerometer. Di samping itu akan dibahas pula Metode Perancangan Program serta teknologi pendukung yang digunakan. Dalam bab ini juga akan dibahas mengenai proyek terkait yang sudah pernah dilakukan peneliti-peneliti sebelumnya. 2.1
Rekayasa Piranti Lunak Piranti lunak atau lebih dikenal dengan software adalah sekumpulan instruksi
yang jika dijalankan akan menyediakan fitur, fungsi dan performa yang diinginkan; struktur data yang memungkinkan program untuk memanipulasi informasi; dan dokumen yang menyatakan operasi dan kegunaan program (Pressman, 2011: 4). Proses pembuatan piranti lunak atau disebut juga dengan software engineering menyatakan definisi di atas ke dalam aksi. Pendekatan
dalam
pembangunan sebuah piranti lunak harus sistematis, disiplin, dan terukur. Rekayasa piranti lunak adalah teknologi dengan beberapa lapisan sebagai berikut
Gambar 2.1 Software engineering layers (Pressman, 2011:14)
Dasar pendukung dari piranti lunak adalah lapisan quality focus. Pada lapisan ini akan diatur manajemen pengerjaan, sehingga pekerjaan dapat dilaksanakan secara efektif dan menghasilkan produk berkualitas. Fondasi dari pembuatan suatu piranti lunak terletak pada lapisan process. Lapisan ini mendefinisikan kerangka kerja, bagian penting untuk dapat menghasilkan keluaran efektif. Proses pembuatan piranti lunak membentuk basis manajemen kontrol projek dan menentukan metode kerja yang digunakan. Selain itu juga 5
6 ditentukan bagaimana bentuk produk hasil keluaran, tenggat kerja, keyakinan kualitas dan pengaturan perubahan. Lapisan methods membahas teknik yang diperlukan dalam pembentukan piranti lunak. Termasuk di dalamnya, memberi arah tujuan komunikasi, analisis kebutuhan, desain model, konstruksi program, uji coba program, dan juga dukungan teknik. Terdapat prinsip dasar yang mengatur setiap aktivitas dan teknologinya. Pada lapisan teratas terdapat tools yang menyediakan dukungan otomatis atau semi-otomatis untuk methods dan process. Ketika tools terintegrasi, sehingga informasi yang dihasilkan suatu alat dapat digunakan oleh yang lain, diterapkan sistem pendukung pengembangan piranti lunak yang disebut
computer-aided
software engineering (Pressman, 2011: 13-14).
2.2
Rapid Application Development (RAD) Metodologi perancangan program yang akan digunakan dalam perancangan
aplikasi ini adalah Rapid Application Development. Metode ini digunakan untuk memenuhi kebutuhan akan suatu piranti lunak, namun tidak semua persyaratan kebutuhan serta fitur-fitur yang hendak dimasukkan ada pada saat perencanaan. Dengan menggunakan purwarupa (prototype) sebagai gambaran akan hasil akhir, maka client dapat segera memberikan tanggapan untuk perubahan atau penambahan fitur. Pendekatan ini diperkenalkan oleh James Martin pada awal tahun 90–an. ada empat tahapan dalam paradigma pembuatan piranti lunak dengan purwarupa: 1.
Requirement Planning Phase: gabungan antara analisis perencaan dan analisis sistem. Dalam tahap ini, programmer dan client membahas mengenai garis besar sistem, cangkupan dan batasan, serta kebutuhan sistem.
2.
User Design Phase: pada tahap ini dibuat sebuah purwarupa dari hasil pembicaraan sebelumnya, yang sudah merepresentasi kerja sistem, proses input, dan proses output. Kemudian client dapat memberikan tanggapan atas model tersebut, untuk memperbaiki purwarupa sesuai dengan kebutuhan.
3.
Construction Phase: pengembangan piranti lunak dan sistem dilakukan pada tahap ini. Meskipun proses yang dilakukan dengan merujuk pada tahap sebelumnya, namun client dihimbau untuk turut berpartisipasi memberikan masukan maupun perubahan.
7 4.
Cutover Phase: setelah didapatkan hasil purwarupa sesuai kebutuhan, maka selanjutnya dapat diimplementasi untuk menjadi satu sistem yang utuh. Termasuk di dalamnya adalah testing dan user training.
Gambar 2.2 Proses RAD
Menurut CMS (2005), manfaat dari penggunaan RAD dalam pengembangan sistem antara lain adalah kepuasan client. Dengan partisipasi dan intervensi langsung dari end–user, maka dapat dibuat sistem yang benar-benar sesuai dengan kebutuhan dan kenyamanan kerja. Maka dari itu, peran client di sini sangat penting dalam memberikan masukan. Keterlibatan dari kedua pihak juga akan meminimalkan resiko. Hasil keluaran purwarupa pada awal pengembangan dapat memberikan gambaran jelas mengenai sistem yang tengah dihadapi, serta kesulitan apa saja yang mungkin akan menghadang. Sehingga dari awal tahapan, resiko sudah dapat diantisipasi terlebih dahulu. Kecepatan juga menjadi faktor penting dalam membangun sistem. Metode ini didesain untuk membangun sistem berskala sedang dan dengan menggunakan RAD, sistem dapat dihasilkan dengan lebih cepat daripada metode Waterfall, Incremental, atau Spiral. Juga anggaran dapat diatur supaya tidak meluap, dan dengan segera diberikan batasan pengembangan bahkan sebelum sistem selesai.
8 2.3
Unified Modeling Language (UML) Menurut Pressman (2011 : 841), UML adalah bahasa standar dalam penulisan
cetak biru piranti lunak yang dapat digunakan sebagai bantuan visual, untuk menspesifikasi, membangun, maupun sebagai dokumentasi sistem software– intensive. Hanya dengan membiasakan diri pada UML, setiap orang dapat menjelaskan desain sistem atau cetak biru sistem kepada orang lain. Standar UML yang saat ini digunakan adalah UML 2.0 yang menyediakan 13 diagram yang dapat digunakan untuk memodelkan piranti lunak. Namun demikian, hanya 4 diagram utama yang akan dibahas dan digunakan, yaitu: Use Case Diagram, Activity Diagram, Class Diagram, dan Sequence Diagram. 2.3.1 Use Case Diagram Menurut Whiten dan Bentley (2007), Use Case digunakan untuk menggambarkan relasi antara sistem; dengan sistem eksternal; dan dengan pengguna. Use Case adalah inti dari pemodelan piranti lunak karena mempengaruhi dan memberikan arah tujuan untuk elemen-elemen lainnya. 2.3.1.1 Elemen dalam Use Case Ada tiga elemen wajib di dalam sebuah diagram use case, yaitu : 1.
Aktor, atau pelaku yang berinteraksi dengan sistem untuk saling bertukar informasi. Aktor tidak selalu manusia, namun dapat berupa badan organisasi, perusahan, atau sistem informasi. Aktor digambarkan dengan stickman.
2.
Use Case, atau skenario adalah proses yang menjelaskan interaksi antara aktor dengan sistem. Di dalamnya dijelaskan fungsi sistem, dilihat dari sudut pandang pengguna.
Gambar 2.3 Simbol aktor (stickman) dan use case (elips)
9 3.
Relationships (hubungan), menggambarkan interaksi antara aktor dengan use case
dan
disimbolkan
dengan
garis
berpanah.
Berdasarkan
jenis
hubungannya, ada beberapa jenis relationships. 2.3.1.2 Use Case Relationships Whitten dan Bentley (2007: 248-250) menyatakan ada lima hubungan yang digunakan dalam use case diagram: 1.
Association: menggambarkan relasi antara aktor dengan use case. Association dimodelkan dengan garis lurus dengan, atau tanpa, tanda panah di ujungnya. Pemodelan dengan tanda panah (1) disebut dengan unidirectional association, yang menunjukan aktor sebagai inisiator dari relasi tersebut. Sedangkan pemodelan tanpa tanpa tanda panah (2) mengindikasikan aktor sebagai penerima hasil relasi.
Gambar 2.4 Association
2.
Extends: digunakan jika use case meliputi beberapa tahap. Jenis relasi ini berguna untuk menghasilkan use case baru yang mewakili fungsi suatu use case bertahap. Hasil dari extends disebut sebagai extended use case.
Gambar 2.5 Extended Use Case
10 3.
Includes (Uses): digunakan jika ada dua atau lebih use case yang melakukan tahapan yang sama. Includes bertujuan untuk mengurangi redundansi melalui penggabungan tersebut.
Gambar 2.6 Includes
4.
Depends On: digunakan jika ada use case pendahulu yang harus diselesaikan untuk dapat mencapai suatu use case lainnya.
Gambar 2.7 Depends On
11 5.
Inheritance: digunakan jika pada dua atau lebih aktor melakukan tahapan yang sama. Inheritance akan membentuk aktor abstrak. Seperti include, inheritance dilakukan untuk mengurangi redundansi pada use case.
Gambar 2.8 Inheritance
2.3.2 Activity Diagram Menurut Whitten dan Bentley (2007: 390), Activity Diagram digunakan untuk menggambarkan rangkaian alur berurutan dari aktifitas use case, proses bisnis, maupun logika perilaku suatu objek. Selain itu diagram ini digunakan untuk memodelkan action pada eksekusi operasi, juga hasil keluaran action tersebut. Activity Diagram memiliki beberapa notasi, antara lain adalah initial mode, actions, flow, decision, merge, fork, join, dan activity final. Juga dapat digunakan swimlane untuk mengkategorikan action berdasarkan pelaku. 1.
Initial node: digambarkan dengan lingkaran penuh yang merepresentasikan awal proses.
2.
Actions: digambarakan dengan kotak berlingkaran yang menggambarkan tahapan/proses individu.
3.
Flow: digambarkan dengan anak panah di dalam diagram yang menyatakan perkembangan sebuah action.
12
Gambar 2.9 Activity Diagram
4.
Decision: digambarkan dengan bentuk permata, memiliki satu flow masuk dan dua atau lebih flow keluar. Flow keluar menyatakan pilihan kondisi yang diambil.
13 5.
Merge: digambarkan dengan bentuk permata, memiliki dua atau lebih flow masuk dan flow yang keluar. Simbol ini menyatukan flow yang terpisah akibat decision.
6.
Fork: digambarkan dengan kotak hitam, memiliki satu flow masuk dan dua atau lebih flow keluar. Aksi di bawah percabangan dapat terjadi dalam urutan apapun.
7.
Join: digambarkan dengan kotak hitam, memiliki dua atau lebih flow masuk dan satu flow keluar. Action yang masuk ke dalam join harus terlebih dahulu diselesaikan.
8.
Activity Final: lingkaran kosong yang merepresentasikan titik akhir dari suatu rangkaian proses.
2.3.3 Sequence Diagram Sequence Diagram merupakan diagram yang memodelkan interaksi dari objek melalui pesan dalam use case atau operasi. Diagram ini menggambarkan bagaimana pertukaran pesan terjadi dan objek apa saja yang terlibat di dalamnya. Terdapat beberapa notasi yang digunakan dalam menggambarkan sequence diagram, antara lain adalah actor, system, lifelines, activarion bars, input message, dan output message. 1.
Actor: aktor atau pelaku yang berinteraksi dengan objek Interface Class. Memiliki simbol yang sama dengan aktor pada use case.
2.
Interface Class: yang digambarkan dengan kotak, mengidentifikasikan kode kelas dari interface.
3.
Controller Class: memiliki notasi yang sama dengan Interface Class namun ditandai dengan <
>.
4.
Entity Class: berupa kotak tambahan untuk setiap kesatuan yang membutuhkan kolaborasi dalam tahap-tahap sequence.
5.
Messages: sesuai namanya, menyampaikan informasi method dari setiap objek.
6.
Activation Bars: kotak yang berada di atas lifelines, berguna untuk menggambarkan waktu keberadaan setiap objek.
7.
Return Messages: jawaban dari Message yang disampaikan pada suatu objek
8.
Frame: digunakan untuk menandai area diagram yang mengalami looping (perulangan), alternative (pemilihan), atau optional (ketentuan).
14
Gambar 2.10 Sequence Diagram
2.3.4 Class Diagram Class Diagram digunakan untuk menggambarkan struktur objek statis dalam sistem. Di dalam diagram ini digambarkan kelas-kelas obyek penyusun sistem, dan juga hubungan antar obyek tersebut. Notasi yang digunakan di dalam class diagram antara lain adalah class dan relationship. 1.
Class berisi objek dengan keterangannya. Keterangan dari class disebut sebagai attribute dan behavior. Attribute berisi data yang merepresentasikan karakteristik fungsi suatu objek. Sedangkan behaviour atau operational adalah aksi yang dapat dilakukan objek yang biasanya ditulis dalam bentuk metode, operasi, atau layanan. Nama class berada di paling atas, diikuti dengan attribute, dan behavior di paling bawah.
Gambar 2.11 Objek dengan attribute dan behavior.
15
Gambar 2.12 Class Diagram
2.
Relationship, hubungan antara berbagai class yang ada. Seperti pada use case, hubungan antar class pada diagram ini juga dapat dikategorikan menjadi empat bagian :
16 a.
Association: memungkinkan suatu class untuk mengetahui dan menggunakan attribute dan behavior yang dimiliki oleh class lain. Association digambarkan dengan garis tanpa tanda panah (bidirectional).
Gambar 2.13 Association
b.
Aggregation: merupakan relasi yang lebih kuat daripada association, menunjukkan hubungan antar class di mana salah satu class merupakan bagian dari class lain, namun tidak bersifat wajib. Notasi aggregation adalah garis dengan simbol permata kosong di salah satu ujung garisnya.
17
Gambar 2.14 Aggregation
c.
Composition: membangun relasi yang lebih kuat dari dua relasi sebelumnya. Notasi ini menunjukkan suatu class adalah bagian dari class lain, dan bersifat wajib. Composition dilambangkan dengan garis yang memiliki simbol permata penuh di salah satu sisinya.
Gambar 2.15 Composition
18 d.
Generalization: notasi yang memungkinkan suatu class untuk mewarisi (inherit) attribute dan behavior dari base classnya. Notasi ini disimbolkan dengan garis yang memiliki anak panah di salah satu sisinya. Sisi dengan anak panah adalah base class. Terdapat beberapa jenis akses yang dapat membedakan warisan satu class dengan class lainnya, yaitu public, protected, dan default.
Gambar 2.16 Generalization
2.4
Android Operating System Android adalah sistem operasi berbasis Linux Kernel Frameworks yang pada
umumnya digunakan untuk perangkat keras mobile. Dalam waktu beberapa tahun saja sejak peluncuran ponsel berbasis Android pertama di tahun 2008, sistem operasi ini telah menguasai pasar ponsel dunia melalui ponsel cerdas Samsung. Setiap hari, setidaknya ada 1 juta perangkat keras berbasis Android baru yang diaktifkan (http://developer.android.com/about/index.html). Sistem operasi ini bersifat terbuka atau open-source, yang artinya memungkinkan penggunanya untuk mendapatkan akses penuh dalam membuat
19 maupun memanipulasi aplikasi. Kemudahan akses melalui USB Port membuat fasilitas terjangkau untuk pemula sekalipun. Android Development Tools (ADT) dengan Java IDE telah dilengkapi dengan berbagai fitur canggih untuk membantu setiap pengguna mengembangkan berbagai aplikasi. 2.4.1 Karakterisrik Android Open source merupakan sifat Android yang utama, yang menjadi nilai tambah bagi banyak penggunanya. Sifat ini memungkinkan siapa saja dengan kemampuan programming untuk memanipulasi sistem operasi tersebut. Pengguna dapat membuat aplikasi, mengubah aplikasi, bahkan memodifikasi sistem operasi supaya lebih sesuai dengan kebutuhannya. Keterbukaan juga tercermin pada akses hardware dan feature yang disediakan oleh Android, di mana third-party application dapat mengakses seluruh layanan yang dimiliki oleh ponsel seperti layaknya aplikasi utama. 2.4.2 Sejarah Android Versi paling awal dari sistem operasi Android dimulai pada tahun 2007, tahun dikeluarkannya versi Beta. Namun versi komersial baru diluncurkan pada tahun 2008, dibawah pengembangan oleh Google dan Open Handset Alliance (ACE). Android berkembang sangat cepat dibandingkan dengan sistem operasi lain, dengan kecepatan pengembangan 6 bulan, artinya dalam 1 tahun, setidaknya ada 2 versi baru yang dikeluarkan. Kemajuan pengembangan tersebut terhitung lambat, karena pada tahun–tahun pertamanya, Google mengeluarkan versi baru setiap dua bulan setengah. Hingga hari ini Android telah merilis 19 Application Programming Interface (API) Level, yang masing-masing dinamai dengan nama makanan manis. Berikut adalah daftar seluruh versi dan nama android yang pernah dirilis : 1.
Android 0.5 dan 0.9 Alpha & Beta
2.
Android 1 dan 1.5 Cupcake
3.
Android 1.6 Donut
4.
Android 2.0 dan 2.1 Éclair
5.
Android 2.2 Froyo
6.
Android 2.3 Gingerbread
7.
Android 3.0 Honeycomb
8.
Android 4.0 Ice Cream Sandwich
9.
Android 4.1, 4.2, dan 4.3 Jelly Bean
20 10.
Android 4.4 Kitkat (awalnya disebut Key Lime Pie)
Gambar 2.17 Visualisasi perkembangan Android
2.4.3 Arsitektur Sistem Operasi Android 2.4.3.1 Linux Kernel Seperti yang telah disebutkan sebelumnya, Android, yang didesain pada umumnya untuk penggunaan perangkat mobile, berbasis Linux kernel yang dikustomisasi. Linux Kernel mengatur kerja perangkat keras serta keamanan data maupun manajemen kerja yang terjadi di dalamnya. Kernel juga bertindak sebagai lapisan abstrak antara perangkat keras dan seluruh software stack. 2.4.3.2 Android Runtime (Dalvik Virtual Machine) Meskipun sebagian besar konten Android ditulis dalam bahasa pemrograman Java, namun tidak diperlukan adanya Java Virtual Machine. Sebagai gantinya, di dalam Android terdapat Dalvik Virtual Machine (DVM) yang dirancang khusus untuk penggunaan sistem operasi ini. DVM menggunakan memori yang sangat rendah dan dapat bekerja dengan baik pada situasi bertenaga rendah sehingga mengoptimalkan kinerja perangkat ponsel cerdas. Seluruh Java class yang dihasilkan akan digabungkan dalam satu atau beberapa Dalvik Executable yang kemudian akan mengoptimasi penggunaan class. Fitur ini mengurangi kebutuhan penyimpanan akan Java Archive File yang berasal dari beberapa file sama yang saling tumpang tindih. Hasil dari DVM adalah file .dex yang kemudian dieksekusi, sehingga Java byte-code tidak serta merta dieksekusi langung oleh prosesor.
21 2.4.3.3 Libraries Sebagai sumber protokol untuk dapat menjalankan aplikasi, Android memiliki kumpulan library C/C++ yang kemampuannya dapat dilihat melalui frameworks. Berikut adalah sebagian dari library tersebut : a.
Sistem C Library (libc): meskipun ditulis dalam bahasa pemrograman C, namun dipanggil melalui Java interface. Merupakan implementasi turunan dari library standar C yang diatur untuk peralatan berbasis embedded Linux.
b.
Media framework: menyediakan berbagai media codecs untuk dapat memutar dan memainkan banyak media berbeda seperti untuk gambar, suara, dan video.
c.
Scalable Graphics Library (SGL) & OpenGL: protokol grafis dari Android. SGL
menyediakan
kemampuan
dua
dimensi
sedangkan
OpenGL
menyediakan kemampuan tiga dimensi. d.
Free Type: mengijinkan pengembang menggunakan berbagai tipe font, dan memberikan pilihan luas selain dari yang telah tersedia.
e.
WebKit: menyediakan layanan browser
f.
SQLite: database engine yang dimanfaatkan untuk kebutuhan penyimpanan data.
g.
Surface Manager: digunakan untuk mengatur akses ke dalam subsistem dan menampilkan berbagai windows berbeda yang dimiliki oleh aplikasi yang bervariasi juga.
2.4.3.4 Frameworks Kerangka kerja aplikasi (frameworks) memiliki komponen sebagai berikut : a.
Activity Manager: pengatur siklus aplikasi dan penyedia navigasi backstack. Ini merupakan salah satu komponen yang paling penting di dalam sistem operasi Android.
b.
Package Manager: pelacak aplikasi yang telah ter-instal pada ponsel cerdas.
c.
Windows Manager: abstraksi bahasa pemrograman Java pada level diatas Surface Manager.
d.
Telephony Manager: kumpulan API yang diperlukan oleh aplikasi.
e.
Content Provider: memungkinkan aplikasi untuk saling berbagi data sesuai dengan level akses yang diatur oleh user.
22 f.
Resource Manager: digunakan untuk mengakses sumber daya non-kode seperti local string, bitmap, maupun bagian external dari sebuah aplikasi.
g.
View System: mengatur tampilan dan fungsi dari kumpulan button, text box, dan tampilan antarmuka pengguna lainnya.
h.
Notification Manager: mengatur fungsi notifikasi dari aplikasi dan menampilkannya ke layar. Kerangka kerja didesain sedemikian rupa sehingga memungkinkan untuk
penggunaan kembali dan penggantian komponen–komponen yang telah disebutkan di atas. Hal ini bertujuan untuk mendukung keterbukaan Android dalam akses bagi penggunanya, juga supaya pengguna dapat memilih opsi yang dinilai paling optimal untuk ponselnya. Kerangka kerja didukung oleh library yang menyediakan kemampuan fungsionalitas seperti pengolahan grafis, manajemen data, dan penyajian web page pada perangkat keras. Selain itu terdapat pula open-source library seperti openssl, libc, dan sqlite untuk mendukung Android menjalankan aktivitas. 2.4.3.5 Aplikasi Seperti layaknya ponsel, Android memiliki aplikasi utama seperti aplikasi Short Message Service (SMS), penyimpanan kontak, kalender dan jam, email client, dan lain sebagainya. Seluruh aplikasi ditulis dalam bahasa pemrograman Java.
Gambar 2.18 Arsitektur Android (http://www.techdesignforums.com)
23
Sebagai pengguna dan developer, Android memberikan akses penuh untuk mengganti maupun menambahkan setiap aplikasi yang tersedia atas resiko sendiri. Sehingga kemungkinan untuk pengembangan Android sangatlah luas dan hanya dibatas oleh imajinasi setiap penggunanya. 2.4.4 Fitur-Fitur Android Android mendukung penggunaan standar yang telah menjadi kebutuhan. Ponsel cerdas berbasis Android pada umumnya mendukung layanan telepon, pesan singkat, mengambil dan menampilkan gambar, serta fitur-fitur general lainnya. Namun selain itu ada fitur lain seperti multitasking, yaitu memungkinkan beberapa aplikasi bekerja beriringan selama alokasi memori memungkinkan. Kemudian tersedia pula Voice-based action, yaitu kemampuan untuk memberikan perintah suara untuk menjalankan aktivitas seperti menelepon dan mengirim pesan. Pada segi konektivitas, Android mendukung antara lain GSM, EDGE, CDMA (tersedia pada versi ponsel tertentu), WiFi, serta Bluetooth. Dukungan ini selain untuk dapat melakukan panggilan maupun browsing, namun juga memungkinkan pengguna untuk mengontrol ponselnya melalui komputer dan sebaliknya. Suatu kemampuan yang tidak dimiliki pesaingnya, iPhone. Pada hardware, ponsel cerdas Android juga pada umumnya didukung oleh kamera/video, layar sentuh, Global Positioning System (GPS), akselerometer, giroskop, barometer, pengukur suhu, sensor tekanan, dan grafis 3D. Pengguna ponsel cerdas android tidak dapat melihat setiap fungsi ini secara langsung, namun salah satu cara untuk mengakses kemampuan tersebut adalah dengan menekan kombinasi *#0*# pada keypad ponsel. Kombinasi tersebut akan membawa pengguna pada aplikasi pengecekan fungsi dari berbagai fitur hardware. 2.4.5 Android Software Development Kit (SDK) Keterbukaan sistem operasi ini juga didukung dengan tersedianya alat yang digunakan sebagai dasar pengembangan aplikasi. Alat tersebut disebut dengan Android SDK, yang memiliki kemampuan dan isi sebagai berikut: 1.
Library yang digunakan dalam pengembangan aplikasi.
2.
Debugger: program yang digunakan untuk memeriksa aplikasi yang dikembangkan. Berfungsi untuk membantu mengeliminasi bug atau error di dalam aplikasi
24 3.
Emulator: program yang berfungsi untuk menduplikasi sistem operasi Android sehingga program yang dikembangkan dapat diuji coba tanpa menggunakan ponsel.
4.
Aplication Programming Interface (API): sekumpulan protokol yang mengatur bagaimana komponen peranti lunak berinteraksi satu sama lain.
5.
Contoh kode sumber (source code) dari berbagai library yang tersedia.
6.
Tutorial untuk sistem operasi Android Seiring dengan dikeluarkannya versi Android yang baru, akan tersedia pula
pembaharuan versi SDK yang dapat diinstal supaya pengembang dapat menulis program dengan fitur-fitur terbaru. SDK tersedia untuk berbagai sistem operasi komputer seperti Windows, Linux dan Mac. 2.4.6 Android Development Tools (ADT) Selain SDK, pengembangan aplikasi juga didukung oleh plug–in ADT yang didesain oleh Integrated Development Enviroment (IDE) Eclipse. Plug–in ini memudahkan pengembang aplikasi untuk membuat project Android, menyusun tampilan aplikasi, juga pembuatan package Android (.apk). Versi ADT yang digunakan dalam pembuatan aplikasi ini adalah v22.6.2. 2.4.7 IDE Eclipse IDE pada umumnya adalah aplikasi programming yang berisi antara lain editor, compiler, debugger, dan GUI builder. Saat ini Eclipse menjadi pilihan utama pengembang dalam membuat aplikasi Android, karena sifatnya yang gratis dan open source. Berikut ini adalah sifat dari Eclipse: 1.
Multi-platform: target sistem operasi Eclipse adalah Microsoft Windows, Linux, Solaris, AIX, HP–UX dan Mac OS X.
2.
Multi-language: Eclipse dikembangkan dengan bahasa pemrograman Java, akan tetapi Eclipse mendukung pengembangan aplikasi berbasis bahasa pemrograman lainnya, seperti C/C++, Java, Cobol, Python, Perl, PHP, dan lain sebagainya.
3.
Multi-role: selain sebagai IDE untuk pengembangan aplikasi, Eclipse pun dapat digunakan untuk aktivitas dalam siklus pengembangan perangkat lunak, seperti dokumentasi, test perangkat lunak, pengembangan web, dan lain sebagainya.
25 2.4.8 Java Development Kit (JDK) Java adalah teknologi yang diperkenalkan oleh Sun Microsystems pada tahun 1990 yang perusahaannya kemudian diakuisisi oleh Oracle Corporation pada 2010. Platform ini berisi sekumpulan produk peranti lunak yang memberikan kemampuan untuk membuat aplikasi dan menjalankannya pada lingkungan pemrograman crossplatform. Kompiler Java disebut dengan Java Development Kit (JDK). JDK harus diinstal pada komputer supaya dapat menjalankan Android SDK.
2.5
Akselerometer Menurut Kamus Besar Bahasa Indonesia, akselerometer adalah alat untuk
mengukur gaya percepatan. Cara kerja dari alat ini adalah dengan menggunakan efek piezoelectric, berasal dari kata piezo yang berarti ‘menghimpit’. Pada akselerometer terdapat kristal yang terhubung pada pemberat, yang dengan gaya inersia, menolak untuk bergerak. Sehingga apabila kristal tersebut ditekan, dihimpit atau ditekuk, akan menghasilkan muatan listrik kecil yang dapat diukur. Dapat dikatakan ponsel cerdas yang beredar sekarang ini memiliki fitur akselerometer di dalamnya, sehingga aplikasi yang akan dibuat dapat diimplementasikan tanpa membutuhkan alat tambahan.
Gambar 2.19 Arah tiga sumbu akselerometer pada ponsel
Akselerometer membaca percepatan melalui tiga sumbu dengan arah berbeda, yaitu sumbu X , Y dan Z . Sumbu X positif adalah horizontal kearah kanan, sumbu
26 Y positif vertikal kearah atas, dan sumbu Z positif pada 90 derajat dari kedua sumbu
lainnya dan menunjuk ke arah luar ponsel dari arah layar.
2.6
Global Positioning System (GPS) GPS adalah salah satu sistem navigasi yang tersedia dan dapat diakses
melalui beberapa tipe ponsel cerdas berbasis sistem operasi Android. Berdasarkan United States Federal Aviation Administration (US FAA), GPS adalah sistem
navigasi radio dengan sistem pengiriman data berbasis ruang, yang terdiri dari konstelasi satelit dan stasiun bumi. Setidaknya dibutuhkan 24 satelit GPS yang mengorbit diseluruh dunia untuk memberikan informasi mengenai lokasi, perpindahan serta waktu untuk seluruh bagian bumi. Sistem navigasi ini bermula pada tahun 1973 dengan nama Navstar Global Positioning System. Awalnya, ditujukan untuk mengurangi perkembangan sistem
navigasi yang terlalu pesat, dan membuat suatu sistem dengan kemampuan yang lebih luas dibandingkan dengan sistem–sistem lainnya. GPS mampu bekerja dengan perangkat yang sederhana dan terjangkau sehingga dimanfaatkan secara luas untuk berbagai bidang.
2.6.1 Cara kerja GPS menentukan lokasi
Gambar 2.20 Contoh trilateration
27 Proses GPS menentukan lokasi disebut dengan triangulation atau trilateration. Dimanapun seseorang berada, setidaknya akan ada tiga satelit yang
berada di dalam jangkauan posisi tersebut. Penerima sinyal GPS dapat mengetahui posisinya terhadap ketiga satelit tersebut melalui data Ephemeris, yaitu data yang mengetahui posisi satelit GPS setiap waktu. Berikutnya dapat ditentukan radius lokasi penerima sinyal terhadap masing–masing satelit, sehingga posisi sang penerima didapatkan melalui perpotongan ketiga radius tersebut.
2.6.2 Tingkat akurasi GPS Uji keakuratan nilai GPS memiliki dua ketergantungan yaitu perangkat keras yang digunakan sebagai penerima sinyal GPS dan seberapa tertutup ruang penempatan perangkat keras tersebut. Dalam skripsi ini penulis menggunakan ponsel cerdas Android Samsung Galaxy Note 3 SM-N900 sebagai perangkat penerima sinyal GPS. Menggunakan
aplikasi GPS Test keluaran Chartcross Limited yang tersedia secara cuma–Cuma, dilakukan tes akurasi GPS. Berikut adalah tampilan screenshot dari hasil tes:
Gambar 2.21 Hasil test GPS
28 Tes GPS dilakukan dengan hanya menggunakan sinyal GPS, mematikan seluruh pengirim sinyal lain dengan menggunakan fitur flight mode pada ponsel. Lingkungan penerimaan sinyal dikondisikan pada ruang terbuka, tanpa kanopi maupun penghalang, meskipun cuaca pada saat pengecekan berawan setelah hujan. Hasil diatas diambil kurang lebih 5 menit setelah GPS dinyalakan, memberi waktu untuk perangkat menyesuaikan dengan lingkungan untuk memastikan data diambil pada kondisi cukup stabil dan tidak banyak berubah. Salah satu informasi penting yang dapat disimpulkan dari hasil diatas adalah tingkat akurasi GPS. Dengan menggunakan lebih dari 10 satelit dalam jangkauan untuk menentukan posisi, maka pengambilan data GPS dalam ruang terbuka memiliki estimasi deviasi akurasi sebesar 20–32 feet atau sekitar 6–10 meter. Namun hasil ini akan memiliki nilai deviasi yang lebih tinggi apabila pengambilan data dilakukan pada lingkungan yang diberi percepatan, dan/atau melewati penghalang sinyal seperti jembatan layang dan gedung pencakar langit.
2.7
Pothole Detection System (Sistem Deteksi Lubang Jalan)
2.7.1 Deteksi Anomali Jalan menggunakan Akselerometer Akselerometer merupakan satu unit perangkat keras yang umum tersedia dalam ponsel cerdas dewasa ini. Alat pengukut ini dapat digunakan untuk mengukur percepatan yang dialami oleh ponsel cerdas dalam tiga arah.
Gambar 2.22 Contoh data visual yang terekam oleh akselerometer
29 Menurut Eriksson (2008), getaran pada suatu kendaraan bisa terjadi karena beberapa sebab selain karena jalan berlubang. Getaran bisa terjadi karena pintu kendaraan yang dihempaskan, karena kendaraan berpindah jalur, karena kondisi jalan, dan karena pengereman. Selain itu, getaran pada kendaraan bisa juga terjadi karena kendaraan melewati polisi tidur (traffic bump). Karena getaran yang dialami oleh suatu kendaraan bisa berasal dari banyak sumber, maka dibutuhkan algoritma yang bisa membedakan getaran karena kendaraan melewati jalan berlubang dan getaran karena sumber lain. Kemudian yang terakhir adalah variabel yang terjadi di sekitar kejadian menabrak lubang. Pengemudi yang berbeda dapat menghasilkan pola sensor yang berbeda, karena tergantung pada kecepatan dan gaya berkendaranya. Selain itu, penempatan sensor di dalam kendaraan juga berpengaruh pada data yang dihasilkan. Ketiga masalah ini diharapkan dapat dieliminasi dengan cara melakukan training pada algoritma.
2.7.2 Tahapan Algoritma Algoritma untuk mendeteksi jalan berlubang diuraikan sebagai berikut: 1.
Data akselerometer yang dikumpulkan disegmentasi menjadi 256 sampel.
2.
Sampel data kemudian disaring untuk tipe-tipe berikut: a. Speed: kendaraan tidak bergerak, atau bergerak sangat lambat. Asumsi kejadian pintu yang dibanting juga tersaring pada syarat ini. b. High-Pass Filter: komponen berfrekuensi rendah, termasuk di dalamnya kendaraan yang berganti jalur, mengubah arah (berbelok), dan juga perubahan halus pada data akselerometer. c. Z –ratio: puncak akselerasi pada sumbu Z , sebagai penanda terjadinya anomali. Filter ini menolak potongan data dengan puncak akselerasi sumbu Z yang kurang dari ambang batas t z . Jika ditemukan, maka sampel yang sebelumnya berukuran 256 kemudian dipotong menjadi berukuran 32. Pemotongan sampel ini harus mengandung data puncak akselerasi yang diterima. d. XZ –ratio: pengidentifikasi anomali jalan berupa polisi tidur atau kejadian sejenis seperti rel kereta api atau perbedaan tinggi jalan. Anomali tipe ini menyebabkan akselerometer mengeluarkan hasil serupa dengan kejadian
30 kendaraan membentur lubang. Dengan asumsi bahwa lubang hanya terjadi pada salah satu sisi kendaraan saja, maka kejadian yang terjadi pada kedua sisi dieliminasi. Filter ini akan menolak sampel yang memiliki nilai puncak akselerasi sumbu Z tinggi namun memiliki perbandingan nilai akselerasi sumbu X dibawah ambang batas t x pada lokasi segmentasi sampel yang sama. e. Speed vs Z –ratio: pada kecepatan tinggi, getaran yang dihasilkan menyebabkan pola anomali jalan yang terlihat seperti pada saat kendaraan membentur lubang. Proses ini menyaring potongan data yang memiliki puncak akselerasi sumbu Z lebih kecil dari t s , kecepatan perpindahan.
Gambar 2.23 Proses penyaringan sinyal akselerometer pada algoritma Pothole Detection (Eriksson, 2008)
3.
Berikutnya dilakukan pelatihan detektor yang mengontrol batasan. Nilai-nilai parameter tersebut dihitung menggunakan pencarian menyeluruh pada rentang wajar dari masing-masing parameter. 2 s (t ) = corr − incorrlabelled − max(0, incorrloose − count ),
di mana, corr: jumlah lubang terdeteksi yang dilaporkan saat dilakukan pelatihan dengan data terkontrol yang memiliki lubang. incorr: jumlah lubang terdeteksi yang dilaporkan saat dilakukan pelatihan dengan data terkontrol yang sebenarnya tidak memiliki lubang.
31 Digunakan nilai kuadrat dari incorrlabelled , sebagai penekanan pentingnya meminimalkan kesalahan. count: banyak deteksi. : ruas jalan tertentu. 4.
Setelah pelatihan dilakukan, tidak menutup kemungkinan bahwa masih ada kesalahan deteksi. Maka untuk mengurangi kesalahan tersebut dilakukan pengelompokan hasil deteksi berdasarkan lokasi dan arah percepatan yang sama. Langkah ini dapat dilakukan dengan membagi wilayah penelitian kedalam kisi–kisi berukuran ∆dx∆d , dimana jarak kisi adalah kurang dari ∆t . Kemudian diambil seluruh hasil deteksi pada wilayah < ∆d . Hasil pada
kisi-kisi yang bersebelahan langsung dapat digabung menjadi satu hasil posisi relatif deteksi lubang. 5.
Untuk membantu mengurangi error yang sering muncul, maka dapat dibuat blacklist. Fungsinya adalah untuk menandai anomali yang tidak diinginkan
(polisi tidur, rel kereta api, dsb.) dan dapat langsung disaring sebagai false positive apabila ternyata sistem kembali mengenali anomali tersebut sebagai
lubang. 6.
Ada satu kemungkinan bahwa sistem tidak dapat mendeteksi lubang di ruas jalan. Hal ini dapat terjadi antara lain karena pengemudi menghindari lubang, mengurangi kecepatan saat mendekati lubang, atau, berdasarkan artikel oleh Jacob, et.al., karena adanya kesalahan pengukuran pada perangkat.
2.8
Digital Signal Processing
2.8.1 Konvolusi Smith (1997:107), menjelaskan konvolusi sebagai cara matematik untuk menggabungkan dua sinyal terpisah dan membentuk sinyal ke–3. Proses konvolusi melibatkan tiga hal, yaitu: sinyal input, sinyap output, dan respon impuls. Ada tiga tahap yang terjadi di dalam konvolusi. Pertama, input sinyal diurai menjadi kumpulan impuls. Masing-masing impuls dapat direkayasa menurut suatu fungsi delta. Kemudian seluruh hasil penguraian impuls diatur skala serta posisinya
32 untuk menghasilkan impuls output. Terakhir, sinyal output dapat dibuat dengan menyatukan kembali kumpulan impuls output.
Gambar 2.24 Contoh grafik yang memperlihatkan proses konvolusi
Secara matematik, konvolusi dapat dituliskan seperti persamaan berikut: x ( n) ∗ h ( n ) = y ( n )
di mana, x(n) : fungsi sinyal input h(n) : fungsi linear y (n) : fungsi sinyal output
Pada persamaan diatas, fungsi sinyal input x(n) dikonvolusikan dengan suatu fungsi linear h(n) . Hasil konvolusi tersebut akan membentuk fungsi sinyal baru, yaitu sinyal output y (n) .
2.8.2 Signal dan Digital Filtering Akselerometer bekerja dengan mengirimkan sinyal ke dalam sistem. Dalam pengamatan yang melibatkan grafik sinyal, data yang dihasilkan seringkali tidak murni. Hal ini disebabkan oleh adanya gangguan, yang menyebabkan perangkat keras menangkap berbagai sinyal lain. Gangguan ini disebut sebagai noise. Untuk mempermudah pengamatan, maka noise harus dipisahkan dari sinyal aslinya. Proses ini disebut dengan filtering (penyaringan). Ada 2 cara untuk melakukan penyaringan, yaitu analog dan digital. Cara analog melibatkan penyesuaian perangkat keras, sehingga sulit dilakukan jika tidak memiliki pengetahuan tersebut. Sedangkan digital filtering dilakukan dengan algoritma dan perhitungan matematis, yang lebih mudah untuk dilakukan.
33 Menurut Smith (1997), digital filtering dilakukan secara linear. Linear filtering memiliki tiga jenis respon: impuls, step, dan frekuensi. Setiap jenis respon
berisi sejumlah informasi berbeda mengenai penyaringan tersebut. Jika diketahui spesifikasi dari salah satu respon, maka respon lainnya dapat ditentukan melalui perhitungan. Ada dua tipe sinyal yang umum digunakan untuk merepresentasikan informasinya, yaitu informasi dalam domain waktu dan informasi dalam domain frekuensi.
2.8.2.1 Parameter Domain Waktu
Gambar 2.25 Perbandingan perfoma parameter domain waktu
34 Pada domain waktu, tipe respon yang umum digunakan adalah jenis step. Jenis ini dapat memperlihatkan apabila suatu event dimulai atau selesai. Untuk dapat menentukan event tersebut, durasi dari respon step harus lebih pendek daripada durasi antar event. Proses step menentukan event didapatkan melalui durasinya, karenanya, durasi step yang cepat lebih baik seperti yang ditunjukan pada Gambar 2.25 (a) dan (b). Selain itu performa yang kurang baik didapat dari gejala overshoot. Gejala yang terlihat seperti gambar (c) akan menyebabkan nilai amplitudo yang lebih besar daripada nilai sebenarnya. Akibatnya, grafik akan mengalami distorsi. Kemudian hasil respon step bagian atas harus simetris dengan bagian bawahnya. Hal ini diperlukan supaya tepi naik memiliki bentuk yang sama dengan tepi turun. Jenis simetrikal ini disebut dengan linear phase.
2.8.2.2 Parameter Domain Frekuensi Pada gambar 2.26 diperlihatkan empat tipe dasar respon frekuensi. Filter tersebut memiliki tujuan untuk memungkinkan frekuensi tertentu untuk melintas, sedangkam frekuensi lainnya akan diabaikan. Nilai frekuensi yang dapat melintas disebut dengan passband, sedangkan frekuensi yang diabaikan disebut dengan stopband.
Gambar 2.26 Tipe dasar respon frekuensi
Seperti
halnya domain waktu, pada domain frekuensi terdapat kriteria
terhadap performa parameter yang dianggap baik. Untuk membedakan frekuensi, maka perpindahan nilai frekuensi harus terjadi dengan cepat, seperti yang terlihat
35 pada gambar 2.27(b). Kemudian agar tidak terjadi distorsi pada grafik, gejala ripple pada passband harus dieliminasi. Grafik lurus seperti pada gambar (d) disebut dengan flatband, dan merupakan bentuk ideal yang diinginkan. Yang terakhir, redaman stopband harus bekerja dengan baik, supaya frekuensi yang akan diabaikan memiliki nilai serendah mungkin.
Gambar 2.27 Perbandingan perfoma parameter domain frekuensi
2.8.3 Windowed–Sinc Filter Jenis filter ini digunakan untuk memisahkan berbagai frekuensi di dalam sinyal input. Pada gambar 2.28 sebelah kanan (a), ditunjukan bagaimana frekuensi ideal seharusnya terlihat pada grafik. Kondisi ideal ini disebut juga dengan low–pass
36 filter. Pada kondisi ini, frekuensi diatas ambang batas akan bernilai 0 seluruhnya.
Namun kenyataannya tidak mungkin terjadi pada sinyal input alami.
Gambar 2.28 Proses Windowed–Sinc 1
Inverse Fourier Transform pada gambar (a) menghasilkan inti dari ideal filter, yang dikenal sebagai fungsi sinc. Adapan persamaan dari fungsi tersebut
adalah sebagai berikut : h[i ] =
sin(2πf c i ) iπ
di mana, h[i]: fungsi sinc pada nilai i tertentu f c : frekuensi grafik sin
i: konstanta
Dengan menggunakan fungsi diatas, maka didapatkan grafik seperti pada gambar (b). Noise pada frekuensi tinggi sudah berkurang, namun fungsi sinc mengakibatkan efek ripple yang tak terhingga panjangnya. Untuk mengatasi hal tersebut, grafik dipotong menjadi M + 1 , di mana M adalah sebuah angka genap. Semua nilai diluar M + 1 diabaikan atau bernilai 0. Kemudian fungsi digeser supaya berada di antara 0 dan M, seperti yang terlihat pada Gambar 2.29 (c). Permasalahan berikutnya terlihat pada Gambar (c). Terlihat bahwa grafik tampak tidak tersambung. pada saat diubah ke dalam domain frekuensi, grafik memiliki efek ripple sebagai akibat dari grafik yang diskontinu.
37
Gambar 2.29 Proses Windowed–Sinc 2
Solusi dari permasalahan di atas adalah dengan menggunakan Hamming window atau juga sering disebut sebagai Blackman Window. Persamaan dari Hamming window adalah sebagai berikut:
w[i ] = 0.54 − 0.46 cos(
2πi ) M
Gambar 2.30 Proses Windowed–Sinc 3
Dengan mengkonvolusi grafik (c) dengan Hamming window, maka akan dihasilkan Windowed–sinc. Pada grafik ini tidak lagi ditemukan diskontinuitas maupun efek ripple. Pada Gambar 2.31 (g), terlihat bahwa grafik sudah mengalami peredaman.
38
Gambar 2.31 Proses Windowed–Sinc 4
2.9
Related Works (Proyek Terkait) Usaha untuk membuat pemantauan kondisi jalan menjadi lebih mudah telah
dilakukan dalam berbagai jurnal. Dalam subbab ini akan dibahas mengenai beberapa jurnal tersebut, serta perbedaan skripsi ini proyek-proyek yang pernah dilakuan sebelumnya. Salah satunya adalah penelitian oleh Huidrom (2013). Di dalam tulisan tersebut, dijelaskan bahwa pada awalnya, proses pengamatan dilakukan dengan merekam permukaan jalan, kemudian menganalisa secara manual untuk mencari dan mengisolir anomali jalan. Untuk memperbesar efisiensi dan mengurangi biaya, pada jurnal ini diperkenalkan automated image processing menggunakan openCV dibawah sistem operasi Windows. Namun sistem ini masih cukup memakan biaya dan waktu dalam pelaksanaannya. Mertz (2011) telah melakukan proyek serupa, melakukan penandaan pada ruas jalan yang memiliki kerusakan/lubang. Pada jurnalnya dijelaskan bahwa Mertz menggunakan penyinaran laser pada ruas jalan. Hasil rekaman sinar laser kemudian diproyeksikan ke dalam model dua dimensi berkoordinat. Apabila model tersebut tidak menghasilkan garis lurus, maka digunakan algoritma untuk menentukan apakah ruas jalan tersebut memiliki lubang. Untuk menandai lokasi jalan tersebut, Mertz menggunakan penyimpanan sinyal GPS. Sistem penyinaran laser yang digunakan memakan biaya dan keterampilan pemasangan yang tidak mudah. Pada skripsi ini, digunakan ponsel cerdas dengan akselerometer yang dimiliki oleh hampir setiap orang, untuk mengurangi beban dan diharapkan dapat meningkatkan keterlibatan masyarakat.
39 Mohan (2008), menggunakan gabungan beberapa sensor untuk mengambil data, salah satunya adalah akselerometer. Penelitian yang dilakukan di Bangalore, India, mengimplementasikan sistem pengamatannya pada ponsel cerdas HP iPAQ yang menggunakan sistem operasi Windows Phone. Pada skripsi ini, sistem akan diimplementasi pada Android. Sistem operasi tersebut dipilih karena bersifat open– source, dan memiliki tingkat pengguna yang paling tinggi di Indonesia berdasarkan StatCounter Global Stats pada tahun 2013. Pothole detection dibahas lebih dalam pada jurnal oleh Eriksson (2008). Termasuk di dalamnya dibahas mengenai kondisi teknis pengambilan data yang berguna untuk mendapatkan grafik akselerometer yang lebih bersih, tidak dipengaruhi oleh kondisi eksternal seperti pergeseran ponsel di dalam mobil. Selain itu anomali jalan yang diteliti semakin spesifik. Sistem dapat membedakan berbagai variasi kondisi jalan, dengan tambahan antara lain rem mendadak, pembelokan kendaraan, penyeberangan jalan, dan lain sebagainya. Pada penelitian ini digunakan alat khusus untuk menangkap sinyal akselerometer dan GPS. Hasil jurnal tersebut kemudian juga diimplementasi oleh Mednis, et.al. (2011). Di dalam penelitiannya, Mednis menggunakan pendekatan yang lebih terjangkau, yaitu dengan menggunakan akselerometer di dalam ponsel cerdas berbasis sistem operasi Android. Jurnal ini membahas keperluan sistem untuk dapat mendeteksi secara real time, kemudian hasil proses dapat diimplementasi pada aplikasi lalu lintas yang sudah ada, seperti Waze. Dalam skripsi ini akan diimplementasi sistem pemantau kondisi jalan berdasarkan jurnal yang telah dipaparkan di atas. Dengan menggabungkan ide dan sistem yang telah diteliti sebelumnya, penelitian akan dibangun dengan menerapkan efisiensi biaya dan waktu.