BAB II
LANDASAN TEORI
Beberapa dasar teori yang berhubungan dengan pengerjaan Tugas Akhir ini yaitu:
2.1 Helpdesk
Peran helpdesk mulai berkembang pada akhir tahun 1970-an ketika perusahaan-perusahaan mulai mengarahkan pengguna teknologi ke satu kontak tunggal untuk meminta bantuan atau dukungan. Dikenal juga dengan istilah Helpdesk, fungsi utamanya adalah sebagai penerima panggilan, menentukan jenis panggilan, kemudian mengirimkan vendor atau technical support langsung ke pihak pelanggan.
Helpdesk merupakan antar muka antara perusahaan dengan pelanggan mereka, maka kualitas pelayanan helpdesk sangat menentukan operasional perusahaan dan kepuasan pelanggan. Bagi perusahaan, kualitas helpdesk menentukan efisiensi penggunaan sumber daya untuk melakukan dukungan terhadap keluhan/laporan pelanggan. Sedangkan bagi pelanggan tentu saja mereka menginginkan penanganan yang cepat terhadap keluhan/laporan yang mereka sampaikan.
2.2 Android
Android merupakan sistem operasi yang dikembangkan untuk mobile devices. Sistem operasi ini berbasis Unix/Linux dan dapat menjalankan lebih dari satu task dalam satu waktu (multi tasking). Sistem operasi Android bersifat open source dan pada saat ini sangat banyak digunakan perusahaan-perusahaan pembuat smartphone di seluruh dunia. Perkembangan jumlah penggunanya juga sangat meningkat sejak pertama kali diperkenalkan pada tahun Oktober 2008.
Berikut ini merupakan daftar versi sistem operasi Android yang telah dikembangkan hingga saat ini.
Tabel 1.Daftar Versi OS Android
Code name Version API level
(no code name) 1.0 API level 1
(no code name) 1.1 API level 2
Cupcake 1.5 API level 3, NDK 1
Donut 1.6 API level 4, NDK 2
Éclair 2.0 API level 5
Éclair 2.0.1 API level 6
Éclair 2.1 API level 7, NDK 3
Froyo 2.2.x API level 8, NDK 4
Gingerbread 2.3 - 2.3.2 API level 9, NDK 5
Gingerbread 2.3.3 - 2.3.7 API level 10
Honeycomb 3.0 API level 11
Honeycomb 3.1 API level 12, NDK 6
Honeycomb 3.2.x API level 13
Ice Cream Sandwich 4.0.1 - 4.0.2 API level 14, NDK 7 Ice Cream Sandwich 4.0.3 - 4.0.4 API level 15, NDK 8
Jelly Bean 4.1.x API level 16
Jelly Bean 4.2.x API level 17
Jelly Bean 4.3.x API level 18
KitKat 4.4 - 4.4.4 API level 19
Lollipop 5.0 API level 21
2.3 Arsitektur Aplikasi Client-Server
2.3.1 Aplikasi Server
Aplikasi yang menangani pemrosesan data dengan beban kerja yang lebih berat daripada aplikasi client karena menangani banyak request. Pada umumnya aplikasi server menangani request dan mengembalikan halaman dinamis yang diakses melalui browser. Aplikasi server juga dapat menyediakan servis yang dapat diakses oleh aplikasi lainnya untuk komputasi, sehingga beban kerja aplikasi client menjadi lebih ringan. Komunikasi antara aplikasi server dengan aplikasi lain (client ataupun aplikasi server lainnya) dapat menggunakan API.
Contoh aplikasi server adalah aplikasi web yang dapat diakses menggunakan browser.
2.3.2 Aplikasi Client
Aplikasi client adalah antar muka dengan pengguna aplikasi atau sistem. Aplikasi client bertugas menerima data atau informasi dari server dan menampilkannya pada pengguna.
Contoh aplikasi client adalah browser, aplikasi desktop game online, atau aplikasi yang berjalan pada smartphone yang berhubungan dengan server melalui jaringan komunikasi dengan menggunakan protokol tertentu.
2.3.3 Application Programming Interface (API)
API adalah antar muka antara aplikasi. Sebuah aplikasi berkomunikasi dengan aplikasi lainnya menggunakan data dalam format atau perintah tertentu. Sebuah aplikasi dapat meminta aplikasi lain untuk menjalankan proses tertentu misalnya melakukan perhitungan, mengakses database, dan lain-lain.
Format API yang biasa digunakan adalah XML dan Json. Aplikasi client yang menerima respon dari server harus melakukan parsing untuk bisa membaca data yang terdapat pada respon dari aplikasi server.
Contoh respon dalam format XML: <listdev> <dev> <name>Purba</name> <address>Jakarta</address> <age>24</age> </dev> <dev> <name>Andy</name> <address>Jakarta</address> <age>24</age> </dev> <dev> <name>Budi</name> <address>Medan</address> <age>22</age> </dev> </listdev>
Contoh respon dalam format Json: { "listdev": [ { "name": "Purba", "address": "Jakarta", "role": 1 }, { "name": "Andy", "address": "Jakarta", "role": 2 }, { "name": "Budi", "address": "Medan", "role": 3 } ] }
2.4 PHP dan Framework Laravel
2.4.1 PHP Hypertext Preprocessor (PHP)
PHP merupakan bahasa pemrograman yang melakukan scripting pada serverside, aplikasi server dapat dibuat dengan menggunakan PHP. PHP mendukung paradigma pemrograman baik prosedural maupun object oriented.
1. Akses yang mudah ke database
2. Mendukung banyak jenis databases :Adabas D, Ingres, Oracle (OCI7 and OCI8), dBase, InterBase, Ovrimos, Empress, FrontBase, PostgreSQL, FilePro (read-only), mSQL, Solid, Hyperwave, Direct MS-SQL, Sybase, IBM DB2, MySQL, Velocis, Informix, ODBC, Unix dbm
3. PHP mendukung ODBC (Open Database Connection standard), sehingga memungkinkan koneksi dengan semua jenis database yang menggunakan standard ini
4. PHP juga mendukung komunikasi dengan servis menggunakan protokol LDAP, IMAP, SNMP, NNTP, POP3, HTTP, COM (pada Windows). 2.4.2 Framework Laravel
Laravel merupakan framework PHP yang bersifat open source dan digunakan untuk pengembangan aplikasi web yang dinamis secara cepat.Versi Laravel yang pertama dipublikasi pada 9 juni 2011 dan versi terakhir yang paling stabil adalah 5.1 yang dirilis pada 5 Juni 2015.
Laravel dikembangkan dengan mendukung konsep MVC atau Model-View-Controller. Class controller dan class view wajib digunakan pada framework Laravel, sedangkan class model yang berfungsi untuk mengakses data source bersifat opsional. Pengaksesan database dapat juga dilakukan langsung oleh class controller. Laravel merupakan salah satu framework yang memiliki kinerja yang cepat di antara beberapa framework yang ada.
2.5 Crontab
Crontab adalah perintah di linux yang sangat berguna untuk menjalankan tugas-tugas yang terjadwal, sehingga akan mengurangi waktu administrasi. Selain crontab, ada juga perintah lain seperti anacron dan at. Anacron digunakan untuk melakukan penjadwalan suatu perintah pada computer yang tidak selalu menyala terus-menerus. Anacron menggunakan interval waktu harian, mingguan, dan bulanan. Sedangkan perintah at menjalankan suatu tugas sekali pada suatu waktu. Yang paling sering digunakan adalah crontab karena lebih serba guna, dan dapat diatur untuk berjalan
pada sembarang interval waktu. Dalam melakukan administrasi sistem, pengaturan cron dilakukan melalui file crontab, yang berisi jadwal waktu dan script yang harus dieksekusi. System Linux memiliki file crontab default, yaitu /etc/crontab, yang akan menjalankan beberapa script pada waktu yang telah ditentukan, misalnya setiap jam, harian, mingguan, dan bulanan. Terdapat dua buah file yang menentukan user mana yang bisa menggunakan crontab: /etc/cron.allow dan /etc/cron.deny. Biasanya, hanya ada file cron.deny pada sistem, dan jika file ini ada, dan terdapat nama user di dalamnya (satu user per baris), maka user tersebut tidak diperbolehkan menggunakan perintah crontab. Jika terdapat file cron.allow, maka hanya user yang namanya terdapat pada file ini yang diperbolehkan menggunakan perintah crontab. Pada file crontab, terdapat enam field untuk setiap entry, dan masingmasing field dipisahkan oleh spasi atau tab. Lima field pertama menentukan kapan perintah akan dijalankan. Field ke-enam adalah perintah yang akan dijalankan. Sebagai contoh script yang digunakan dala crontab adalah sebagai berikut : # min(0-59) hours(0-23) day(1- 31) month(1-12) dow(0-6) command 34 2 * * * sh /root/backup.sh Pada contoh tersebut, perintah “sh /root/backup.sh” akan dijalankan pada jam 2:34 AM setiap hari. Tanda bintang pada contoh tersebut berarti “semua waktu”. Tanda bintang pada kolom “menit” berarti “jalankan setiap menit”. User bisa melakukan banyak kombinasi pengaturan waktu. Ada cara lain untuk pengaturan waktu: “20-27″ menunjukkan range; “3,4,7,8″ artinya hanya interval tersebut untuk suatu pilihan, dan */5 artinya setiap interval ke lima.
2.6 Google Cloud Messaging
Google Cloud Messaging (GCM) adalah layanan gratis yang membantu pengembang aplikasi mengirimkan data dari server ke aplikasi Android. Ini dapat berupa pesan ringan yang memberi tahu aplikasi Android bahwa ada data baru yang harus diambil dari server (misalnya, film yang diunggah oleh teman), atau berupa pesan berisi 4 KB muatan data (agar aplikasi seperti perpesanan instan dapat langsung mengonsumsi pesan).
GCM menggantikan versi beta C2DM (Perpesanan Awan ke Perangkat Android). Perlu diketahui bahwa C2DM sekarang tidak berlaku lagi, dan kami tidak lagi
mengizinkan pendaftaran C2DM manual yang baru. Pengembang yang tidak beralih ke GCM dapat terus menggunakan C2DM tanpa ada peningkatan kuota.
Service GCM mengatur semua antrian pesan dan pengirimannya ke sebuah aplikasi Android yang berjalan dalam smartphonedevices yang ditargetkan. ServiceGCM dapat digunakan secara gratis.
Berikut ini merupakan karakteristik utama Google Cloud Messaging:
1. Membantu aplikasi server pihak ketiga (pengembang aplikasi) untuk mengirimkan pesan ke aplikasi Android mereka,
2. Dengan menggunkan koneksi server GCM, pengembang juga dapat menerima pesan dari perangkat Android pengguna aplikasi mereka,
3. Aplikasi pada Android tidak harus selalu aktif/hidup untuk dapat menerima pesan. Sistem akan menjalankan aplikasi Anda dengan menggunakan Intent Broadcast ketika menerima pesan dari server GCM, dengan persyaratan bahwa aplikasi Anda sudah diatur memiliki broadcast receiver dan permission yang tepat,
4. GCM tidak menyediakan antarmuka kepada pengguna ketika menerima pesan, pesan mentah yang diterima akan diteruskan secara langsung kepada aplikasi Anda untuk ditangani. Misalnya aplikasi Anda menjalankan notifikasi, menampilkan antarmuka, atau melakukan sinkronisasi data tanpa diketahui oleh pengguna, 5. Layanan GCM dapat berjalan pada perangkat yang memiliki sistem operasi
Android versi 2.2 ke atas dan Google Play Service,
6. Layanan GCM menggunakan koneksi sama dengan service Google yang berjalan pada perangkat Android.
Pada Gambar 1 dapat dilihat bagaimana komunikasi antara aplikasi server pengembang, server GCM dan aplikasi client yang dibuat oleh pengembang aplikasi.
Gambar 1. Komunikasi dengan GCM
2.7 Analisis dan Perancangan Berorientasi Objek
Pada tahap analisis dan perancangan dalam pengembangan aplikasi, pengembang dapat menggunakan pendekatan secara fungsional/terstruktur atau dengan pendekatan berorientasi objek. Pendekatan secara fungsional merupakan metode analisis tradisional yang berkembang berdasarkan pemrograman prosedural. Dengan semakin berkembangkannya bahasa pemrograman dan mendukung paradigma object-oriented yang lebih dinamis maka metode analisis dan perancangan sistem lebih banyak menggunakan pendekatan berorientasi objek saat ini.
Metode analisis dan perancangan berorientasi objek merupakan pendekatan terhadap masalah dari perspektif objek. Sistem dimodelkan dengan sekelompok objek yang saling berinteraksi. Pemodelan sistem yang dilakukan menggunakan UML atau Unified Modelling Language.
2.7.1 UML
Sampai pada tahun 1995, konsep objek sudah sangat popular tetapi diimplementasikan dalam berbagai cara, berbeda-beda tergantung pada pengembangnya. Setiap pengembang memiliki metodologi dan notasi sendiri (contohnya Booch, Coad,Moses, OMT, OOSE, SOMA).
Kemudian pada tahun 1995, Rational Software mengajak tiga perusahaan terbesardalam industri untuk menciptakan satu pendekatan dalam
pengembangan sistem yang berorientasi objek.Grady Booch, Ivar Jacobson, and James Rumbaugh bersama-sama menciptakan sebuah standar untuk memodelkan sistem dalam tahap analisis dan desain sistem, standar ini dikenal dengan nama Unified Modeling Language (UML).Tujuan UML diciptakan adalah untuk menyediakan kosa kata dan diagram-diagram yang umum yang dapat digunakan untuk memodelkan sistem dari tahap analisis sampai dengan tahap implementasi.
UML versi2.0 mendefinisikan 14 jenis diagram yang digunakan untuk memodelkan sistem. Diagram-diagram tersebut dibagi menjadi 2 bagian yaitu pemodelan sistem secara struktural dan pemodelan sistem secara perilaku.
Structure diagrams memungkinkan pengembang untuk merepresentasikan data dan relasi statis di dalam sebuah sistem informasi. Diagram-diagram struktural yaitu class, object, package, deployment, component, dan composite structure diagram.
Behavioral diagrams memungkinkan pengembang untuk menggambarkan relasi yang dinamis di antara semua objek yang merepresentasikan bisnis proses di dalam sistem informasi.Diagram-diagram ini juga membantu analis memodelkan kebutuhan fungsional yang sebuah sistem informasi. Diagram-diagram behavioral terdiri dari activity, sequence, communication,interaction overview, timing, behavior state machine, protocol state machine,dan use-case diagram.
Berbagai diagram dalam UML dapat digunakan pada beberapa fase pengembangan aplikasi, dengan demikian setiap diagram yang digunakan dapat memodelkan sistem secara abstrak dan juga dapat memodelkan sistem dengan sangat rinci (sampai pada pembuatan kode program).
Penjelasan mengenai diagram-diagram UML dapat dilihat pada Tabel 2 di bawah ini
Tabel 2. Daftar Diagram UML
Nama Diagram Deskripsi Digunakan
pada fase
Behavioral Diagrams
Activity
Menggambarkan proses bisnis dalam sistem, alur aktivitas dalam setiap use case, ataupun rincian desain sebuah method
Analisis, Desain
Use Case
Menggambarkan kebutuhan sistem yang berkaitan dengan proses bisnis, atau menggambarkan sistem dari sudut pandang pengguna
Analisis
Sequence
Memodelkan perilaku objek dalam setiap use case, berfokus pada urutan waktu setiap aktivitas
Analisis, Desain
Communication
Memodelkan perilaku objek dalam setiap use case, berfokus pada komunikasi antara objek-objek
Analisis, Desain
Interaction Overview Menggambarkan alur proses secara
keseluruhan Analisis, Desain
Timing
Menggambarkan interaksi antara beberapa objek dan perubahan kondisi objek-objek tersebut pada interval waktu tertentu
Analisis, Desain
Behavioral State
Tabel 3. Lanjutan Daftar Diagram UML
Protocol State Machine Menggambarkan dependency antara
interface class yang berbeda-beda Analisis, Desain
Structure Diagrams
Class Menggambarkan relasi antara semua
class di dalam sistem yang dimodelkan Analisis, Desain
Object
Menggambarkan relasi antara objek-objek di dalam sistem. Digunakan jika instansiasi class lebih tepat untuk memodelkan sistem
Analisis, Desain
Package
Mengelompokkan elemen-elemen dalam UML untuk konstruksi pada level yang lebih tinggi
Analisis, Desain, Implementasi
Deployment Menggambarkan arsitektur fisik sistem. Desain Fisikal, Implementasi
Component
Menggambarkan relasi fisik antara komponen-komponen yang
berhubungan dengan perangkat lunak
Desain Fisikal, Implementasi
Composite Structure Menggambarkan relasi antara