BAB 2 LANDASAN TEORI
2.1
Teori Umum 2.1.1 Smartphone Smartphone adalah suatu ponsel yang memiliki kemampuan komputasi yang lebih canggih dan konektifitas melebihi kemampuan ponsel biasa. Selain itu hal mendasar yang membedakan smartphone dengan ponsel biasa adalah kemampuannya untuk menjalankan aplikasi third party.
2.1.2 Software 2.1.2.1 Definisi Software Menurut Pressman (2010, p. 4), software adalah 1.
Perintah (program komputer) yang jika dieksekusi akan memberikan fungsi dan unjuk kerja seperti yang diinginkan.
2.
Struktur
data
yang
memungkinkan
program
memanipulasi informasi secara proporsional. 3.
Dokumen yang menggambarkan operasi dan kegunaan program.
2.1.2.2 Karakteristik Software 8
9
Software
merupakan
suatu
elemen
logika,
bukan
merupakan suatu elemen fisik. Oleh karena itu, software memiliki ciri-ciri yang berbeda dibandingkan dengan hardware: 1.
Software dibangun dan dikembangkan, tidak dibuat dalam bentuk yang klasik.
2.
Software tidak pernah usang.
3.
Sebagian besar software dibuat secara custom-built, meskipun
industri
sekarang
bergerak
ke
arah
pengembangan berbasis komponen.
2.1.2.3 Model Proses Pengembangan Software Proses pengembangan software merupakan serangkaian kegiatan, tindakan, dan tugas yang diperlukan selama masa pengembangan software. Agar dapat terorganisir dengan baik, maka diperlukan sebuah strategi pengembangan yang sering disebut dengan model proses pengembangan software. Tentunya model proses tersebut dipilih berdasarkan sifat dari aplikasi yang akan dibangun.
2.1.2.4 Model Waterfall Model proses ini mengusulkan sebuah pendekatan pengembangan software yang sistematik dan sekuensial, meliputi
10
spesifikasi kebutuhan, perencanaan, pemodelan, konstruksi, dan penyebaran software (Pressman, 2010, p. 39).
Gambar 2.1 Model Waterfall
Meskipun tergolong pendekatan konvensional, model ini masih banyak digunakan, terutama pada pengembangan software yang kebutuhan sistemnya mudah untuk dimengerti dan tidak berubah-ubah.
2.1.3 Database 2.1.3.1 Definisi Database Menurut Connoly dan Begg (2005, p. 15), database adalah kumpulan data-data yang saling berhubungan secara logis, yang dirancang agar dapat memenuhi kebutuhan dari sebuah organisasi. Dengan adanya database maka beberapa kekurangan dari metode penyimpanan data berbasis file, seperti pemisahan dan isolasi data, duplikasi data, ketergantungan data, ketergantungan terhadap suatu format file, dan query permanen dari program, dapat teratasi.
11
2.1.3.2 Database Management System (DBMS) Database Management System adalah suatu sistem software yang memungkinkan pengguna untuk menentukan, membuat, memelihara, dan menyediakan kontrol akses ke database (Connolly & Begg, 2005, p. 16). Terdapat banyak jenis software DBMS, salah satunya yang berbasis open source adalah MySQL. Adapun fasilitas-fasilitas yang disediakan oleh DBMS adalah sebagai berikut: 1.
Memungkinkan pengguna untuk mendefinisikan suatu database dengan menggunakan Data Definition Language (DDL).
2.
Memungkinkan pengguna untuk melakukan operasi retrieve, insert, update, dan delete terhadap data pada suatu
database
dengan
menggunakan
Data
Manipulation Language (DML). 3.
Menyediakan akses ke database yang terkendali.
2.1.4 Unified Modeling Language (UML) 2.1.4.1 Definisi UML Menurut Fowler (2004, p. 1), UML adalah sekumpulan notasi grafik yang digambarkan untuk mendeskripsikan dan merancang sistem software, khususnya software yang dibangun
12
secara object-oriented. Tentu saja pemodelan sistem dari tiap individu akan berbeda, tergantung dari latar belakang dan pemahaman individu tersebut mengenai cara merancang sistem yang efektif.
2.1.4.2 Use Case Diagram Use case diagram adalah diagram yang menggambarkan kebutuhan
fungsional
dari
sebuah
sistem.
Diagram
ini
mendeskripsikan interaksi apa saja yang terjadi antara pengguna dari sebuah sistem dan sistem itu sendiri (Fowler, 2004, p. 99).
Gambar 2.2 Contoh Use Case Diagram (Bennet, McRobb, & Farmer, 2006, p. 150)
13
2.1.4.3 Class Diagram Menurut Fowler (2004, p. 35), class diagram adalah diagram yang digunakan untuk mendeskripsikan tipe dari object yang terdapat di dalam sebuah sistem dan berbagai relasi yang terjadi
diantaranya.
Selain
itu,
class
diagram
juga
menggambarkan berbagai atribut dan operasi yang dimiliki suatu class, serta batasan-batasan yang mengatur bagaimana cara object yang ada untuk saling berhubungan.
Gambar 2.3 Contoh Class Diagram (Bennet, McRobb, & Farmer, 2006, p. 187)
14
2.1.4.4 Sequence Diagram Fowler (2004, p. 53) mengemukakan bahwa sequence diagram merupakan suatu diagram yang mendeskripsikan secara rinci urutan proses bagaimana object di dalam sebuah sistem saling berhubungan satu sama lainnya dalam bentuk pengiriman pesan.
Gambar 2.4 Contoh Sequence Diagram (Bennet, McRobb, & Farmer, 2006, p. 258)
2.1.4.5 Activity Diagram Activity diagram adalah suatu teknik yang digunakan untuk menggambarkan logika secara prosedural, proses bisnis, dan alur kerja dari sebuah sistem (Fowler, 2004, p. 117). Secara
15
umum, activity diagram memainkan peran yang hampir sama dengan flowchart, akan tetapi diagram ini mendukung adanya perilaku paralel yang tidak dimiliki oleh flowchart.
Gambar 2.5 Contoh Activity Diagram (Bennet, McRobb, & Farmer, 2006, p. 106)
2.1.4.6 State Machine Diagram State machine diagram adalah suatu teknik yang paling sering digunakan untuk menggambarkan perilaku object dari sebuah sistem (Fowler, p. 107).
16
Gambar 2.6 Contoh State Machine Diagram (Bennet, McRobb, & Farmer, 2006, p. 306)
2.1.5 Entity Relationship Diagram (ERD) Entity Relationship Diagram (ERD) adalah model data yang menggunakan beberapa notasi untuk menggambarkan data dalam konteks entitas dan hubungan yang dideskripsikan oleh data tersebut (Whitten & Bentley, 2007, p. 271). Pressman (2010) mengemukakan bahwa pemodelan data sangatlah diperlukan, terutama pada suatu sistem yang memiliki struktur data yang kompleks. Dari suatu pemodelan data dapat diketahui relasi yang terjadi antar data object dan informasi-informasi lainnya pada relasi yang bersangkutan.
17
Gambar 2.7 Contoh Entity Relationship Diagram
2.1.6 Interaksi Manusia dan Komputer 2.1.6.1 Definisi Interaksi Manusia dan Komputer Interaksi Manusia dan Komputer adalah sebuah disiplin ilmu
yang
berkaitan
dengan
rancangan,
evaluasi,
dan
implementasi sistem komputasi interaktif untuk digunakan oleh manusia, serta studi mengenai fenomena-fenomena besar yang berhubungan dengannya (ACM SIGCHI, 1996).
Gambar 2.8 Interaksi Manusia dan Komputer
18
2.1.6.2 Delapan Aturan Emas Perancangan User Interface Dalam
bukunya
Designing
The
User
Interface,
Shneiderman & Plaisant (2005, p. 74) mengemukakan bahwa terdapat delapan aturan emas yang harus diperhatikan dalam merancang user interface, antara lain: 1.
Berusahalah untuk konsisten.
2.
Berprinsip pada kegunaan universal.
3.
Berikan umpan balik/balasan yang informatif.
4.
Berikan dialog untuk menandakan penutupan.
5.
Berikan penanganan kesalahan yang sederhana.
6.
Memungkinkan pembalikan aksi yang mudah.
7.
Mendukung pusat kendali internal.
8.
Kurangi beban ingatan jangka pendek.
2.1.7 Internet, Web, dan Mobile Commerce 2.1.7.1 Internet Internet adalah sekumpulan jaringan komputer di seluruh dunia yang menghubungkan jutaan komputer, digunakan untuk bisnis, pemerintahan, institusi pendidikan, organisasi, dan individu dengan menggunakan modem, saluran telepon, televisi kabel, satelit, dan peralatan komunikasi lainnya (Shelly, Woods, & Dorin, 2008, p. 2).
19
2.1.7.2 Web Menurut Shelly, Woods, dan Dorin (2008, p. 3), World Wide Web, atau yang lebih dikenal dengan sebutan Web, adalah suatu bagian dari internet yang mendukung multimedia dan terdiri dari sekumpulan dokumen yang saling terhubung. Untuk mendukung multimedia, web sangat bergantung pada Hypertext Transfer Protocol (HTTP) yang mengatur jalannya pertukaran data, seperti teks, suara, gambar, animasi, dan video.
2.1.7.3 Mobile Commerce Mobile commerce, atau bisa juga disebut dengan mcommerce, adalah pembelian dan penjualan informasi, produk, dan jasa melalui suatu perangkat mobile (Stafford & Gillenson, 2003).
Sebagai
bagian
dari
e-commerce,
m-commerce
memberikan sebuah manfaat yang cukup besar terutama bagi pengguna dengan mobilitas yang tinggi. Pengguna dapat mengaksesnya kapanpun dan dimanapun ia berada dengan hanya sebuah perangkat mobile di tangannya.
2.1.8 Web Services 2.1.8.1 Definisi Web Services Web Services adalah sebuah sistem software yang dirancang untuk mendukung interaksi antara mesin dan mesin
20
melalui suatu jaringan (W3C, 2004). Dengan adanya web services, aplikasi yang berbeda dapat saling berinteraksi dengan mudah meskipun berada pada platform yang berbeda.
Gambar 2.9 Web Services
2.1.8.2 RESTful Web Services REST (Representational State Transfer) merupakan sebuah arsitektur untuk aplikasi web services yang berfokus pada sumber daya dari suatu sistem, dirancang untuk menggunakan protokol HTTP sebagai penghubung komunikasi antara mesin dan mesin,
tanpa
menggunakan
mekanisme
yang
kompleks
(Rodriquez, 2008). REST bersifat stateless, yang berarti setiap request yang diterima diproses secara independen, tidak bergantung pada request sebelumnya. Adapun format data yang digunakan dalam RESTful Web Services adalah JavaScript Object Notation (JSON) atau XML.
21
2.1.9 Short Message Service (SMS) 2.1.9.1 Definisi SMS SMS adalah suatu layanan yang memungkinkan pengguna mengirim dan menerima pesan singkat melalui telepon seluler. Pesan singkat ini dapat menampung dengan kapasitas maksimum sebesar 160 karakter. Saat ini, SMS menjadi sebuah fitur yang mendasar dari setiap telepon seluler.
2.1.9.2 SMS Gateway SMS
Gateway
menghubungkan
adalah
perangkat
suatu
komunikasi
software dengan
yang
perangkat
komputer sehingga memungkinkan pengguna mengirim dan menerima pesan singkat dari komputernya.
2.2
Teori Khusus 2.2.1 Portal Portal dapat diartikan sebagai sebuah pintu gerbang yang menjadi titik awal bagi pengunjung dalam menjelajah suatu informasi yang ia butuhkan. Portal menyediakan semua informasi yang dibutuhkan sehingga pengunjung tidak perlu mencarinya ke tempat lain.
22
2.2.2 Android Android adalah suatu software stack untuk perangkat mobile yang terdiri dari sistem operasi, middleware, dan key application (Google, n.d.). Adapun fitur-fitur yang disediakan oleh Android adalah sebagai berikut: 1.
Application framework yang memungkinkan penggunaan kembali komponen-komponen yang sudah ada.
2.
Mesin virtual Dalvik yang telah dioptimisasi untuk perangkat mobile.
3.
Browser terintegrasi.
4.
Grafik yang teroptimisasi.
5.
SQLite untuk media penyimpanan data yang terstruktur.
6.
Dukungan terhadap berbagai format suara, video, dan gambar (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF).
7.
Dukungan terhadap telepon GSM.
8.
Bluetooth, EDGE, 3G, dan WiFi.
9.
Kamera, GPS, kompas, dan akselerometer.
10. Perangkat pengembangan, meliputi emulator, debugging tools, pemantau memori dan kinerja, dan plugin untuk Eclipse IDE. Aplikasi
Android
dibuat
dengan
menggunakan
bahasa
pemrograman Java, yang mana kode-kode tersebut selanjutnya akan dicompile ke dalam sebuah package yang berekstensi apk. File berekstensi apk inilah yang akan digunakan untuk meng-install aplikasi pada
23
perangkat Android. Berikut adalah ilustrasi yang menggambarkan perbedaan proses compile pada Java dan Android:
Gambar 2.10 Perbedaan Proses Compile pada Java dan Android (Gargenta, 2011, p. 10)
Android memiliki 4 tipe komponen aplikasi. Setiap komponen memiliki peran yang berbeda-beda dan berdiri sendiri meskipun terkadang salah satu komponen bergantung pada komponen lainnya. Masing-masing komponen memiliki daur hidup masing-masing, yang mengatur kapan komponen tersebut dibuat dan bagaimana komponen tersebut dihapus. Untuk mengaktifkan komponen-komponen tersebut diperlukan sebuah pesan asinkron yang disebut dengan Intent. Berikut ini adalah 4 tipe komponen dalam aplikasi android.
24
1.
Activity, merupakan suatu komponen yang merepresentasikan sebuah tampilan yang dilengkapi dengan user interface.
2.
Service, merupakan suatu komponen yang berjalan di balik layar untuk menjalankan operasi yang menghabiskan banyak waktu.
3.
Content Provider, merupakan suatu komponen yang mengatur sekumpulan data aplikasi.
4.
Broadcast Receiver, merupakan komponen yang merespon terhadap siaran (broadcast) pengumuman yang dikeluarkan oleh sistem.
2.2.3 Hypertext Markup Language (HTML) Menurut Shelly, Woods, dan Dorin (2008, p. 8), HTML merupakan bahasa penulisan yang digunakan untuk membuat dokumen pada halaman web. HTML menggunakan sekumpulan instruksi khusus, yang dikenal dengan tags atau markup, untuk mendefinisikan struktur dan susunan dari dokumen web dan menetapkan apa yang akan ditampilkan pada browser.
2.2.4 jQuery jQuery adalah sebuah pustaka JavaScript yang open source, digunakan untuk menyederhanakan interaksi antara HTML dan JavaScript (Resig, n.d.). Pada dasarnya, pustaka ini dibuat dengan tujuan untuk
25
menyederhanakan DOM API dan membantu memecahkan permasalahan yang terjadi pada lintas browser.
2.2.5 JavaScript Object Notation (JSON) JSON adalah sebuah format data berbasis teks yang ringan dan dirancang agar mudah dibaca dan ditulis oleh manusia, ataupun oleh mesin (Crockford, n.d.). Format datanya yang ringan sangatlah cocok digunakan untuk pertukaran data antara aplikasi mobile dan web server. JSON memiliki 4 tipe data primitif (string, number, boolean, null) dan 2 tipe data struktur (object dan array). Meskipun format penulisan JSON menyerupai format object literal pada JavaScript, JSON bukanlah JavaScript. JSON dapat digunakan pada bahasa dan platform apapun.
Gambar 2.11 Contoh Representasi JSON pada Sebuah Object
26
2.2.6 PHP PHP (Hypertext Preprocessor) adalah bahasa pemrograman scripting yang berjalan di sisi server dan dirancang khusus untuk aplikasi web (Welling & Thomson, 2009, p. 2). Dalam penggunaannya, kode PHP dapat disisipkan pada halaman HTML sehingga halaman web menjadi dinamis dan interaktif.
2.2.7 CodeIgniter CodeIgniter adalah framework pengembangan aplikasi yang digunakan untuk membangun aplikasi web dinamis berbasis PHP dengan menyediakan sekumpulan pustaka yang sering digunakan beserta struktur logika untuk menggunakan pustaka tersebut (EllisLab, 2011). Penggunaan framework memungkinkan pengguna mengembangkan aplikasi lebih cepat dibandingkan dengan menulis kode dari awal. CodeIgniter dikembangkan dengan menggunakan arsitektur ModelView-Controller (MVC). Pendekatan ini memungkinkan pemisahan antara halaman logika dan presentasi sehingga struktur kode menjadi lebih baik. Adapun MVC memisahkan aplikasi ke dalam tiga bagian, yaitu: 1.
Model, bagian yang berhubungan dengan data dan bertanggung jawab untuk mengelola semua akses ke database.
2.
View, bagian yang menampilkan informasi kepada pengguna.
27
3.
Controller, penghubung antara model, view, dan semua sumber daya yang diperlukan ketika memproses permintaan dari pengguna dan menghasilkan halaman web.
Gambar 2.12 Aliran Data pada CodeIgniter
2.2.8 Node.js Node.js adalah suatu pustaka JavaScript yang menggunakan model event asinkron dan berjalan di sisi server. Dikembangkan oleh Ryan Dahl pada 2009, Node.js merupakan suatu environment yang ditujukan untuk pengembangan aplikasi jaringan secara real-time yang memiliki kinerja dan skalabilitas yang tinggi. Node.js tidak berjalan dengan berbasis thread (multithreading), sehingga ia mampu menangani jutaan koneksi secara konkurensi dengan overhead yang minimal dalam suatu proses tunggal. Kinerjanya
yang
baik
memungkinkan
node.js
digunakan
memberikan notifikasi secara real-time kepada pengguna.
untuk