BAB II LANDASAN TEORI 2.1. Sejarah Android Android adalah sebuah sistem operasi untuk perangkat mobile berbasis linux yang mencakup sistem operasi dan aplikasi. Android menyediaan platform terbuka bagi para pengembangan untuk menciptakan aplikasi. Awalnya, Google.inc (www.google.com) membeli Android Inc (www.android.com) yang merupakan pendatang baru yang membuat perangkat lunak untuk telepon selular (ponsel) atau smartphone. Untuk mengembangkan android, dibentuklah Open Handset Alliance (OHA), sebuah perusahaan konsorsium dari 34 perusahaan peranti lunak (software), peranti keras (hardware) dan telekomunikasi seperti google inc., HTC, Intel, motorolla, Qualcomm, T-mobile dan Nvidia. Pada saat peluncuran perdana, 5 November 2007, Android bersama OHA menyatakan mendukung pengembangan open source pada perangkat mobile. Di lain pihak, google inc. meliris kode-kode android di bawah lisensi apache, sebuah lisensi perangkat lunak dan open platform perangkat ponsel. Saat ini terdapat 2 (dua) jenis distributor sistem operasi android. Pertama yang mendapat dukungan penuh dari google atau Google Mail Service (GMS) dan kedua adalah yang benar-benar bebas distribusinya tanpa dukungan langsung google dikenal sebagai Open Handset Distribution (OHD)[2]. 7 Android merupakan OS Mobile yang tumbuh di tengah OS lainnya, seperti Windows Mobile, i-Phone Mobile OS, Symbian dan masih banyak lagi yang menawarkan kekayaan isi dan keoptimalan dalam berjalan di atas perangkat hardware yang ada. Android menawarkan sebuah lingkungan yang berbeda untuk pengembang. Setiap aplikasi memiliki tingkat yang sama. Android tidak membedakan antara aplikasi inti dengan aplikasi pihak ketiga. API yang disediakan menawarkan akses ke hardware, maupun data – data ponsel sekalipun atau data system sekalipun. Bahkan pengguna dapat menghapus aplikasi inti dan menggantikannya dengan pihak ketiga [2]. Android OS Mobile menguasai lebih dari 30% pasar ponsel di seluruh dunia pada saat ini. 1 Sebagian besar pengguna ponsel saat ini lebih memilih Android mobile phonenya karena Aplikasi yang bervariasi dan interaktif, Open Source, mudah digunakan, integrasi dengan situs sosial, kemudahan instalasi program dan harga terjangkau. 2.2. Fitur dan Arsitektur Android Fitur yang tersedia pada Android adalah: Framework aplikasi: memungkinkan penggunaan dan pemindahn dari komponen yang tersedia. Dalvik Virtual Machine: virtual machine yang dioptimalkan untuk perangkat mobile. Grafik: grafik 2D dan grafik 3D yang didasarkan pada library OpenGL. SQLite: untuk penyimpanan data. 1 Yuan Yudistira, Membuat Aplikasi iPhone, Android, & BlackBerry Itu Gampang (Jakarta: Mediakita, 2011), hal4. 8 Mendukung Media: audio, video dan berbagai format gambar. GSM, Bluetooth, EDGE, 3G and WIFI Camera, GPS, Compass dan Accelerometer Lingkungan pengembangan yang kaya, termasuk diantaranya emulator, peralatan debugging dan plugin untuk eclipse IDE. System operasi Android dibangun berdasarkan kernel Linux dan memiliki arsitektur sesuai gambar 2.1. Gambar 2.1. Arsitektur Android [2] Application Lapisan ini adalah lapisan aplikasi, yaitu serangkaian aplikasi yang terdapat pada perangkat mobile. Aplikasi inti yang terdapat pada Android diantaranya 9 termasuk kalender, kontak, SMS, dsb. Aplikasi – aplikasi ini ditulis dengan bahasa pemrograman Java. Application Framework Lapisan selanjutnya adalah application framework, yang mencakup program untuk mengatur fungsi-fungsi dasar smartphone. Application Framework merupakan serangkaian tool dasar seperti alokasi resource smartphone, aplikasi telepon, pergantian antar - proses atau program, dan pelacakan lokasi fisik telepon. Para pengembang aplikasi memiliki aplikasi penuh kepada tooltool dasar tersebut, dan memanfaatkannya untuk menciptakan aplikasi yang lebih kompleks. Libraries Satu set libraries dalam bahasa C/C++ yang digunakan oleh berbagai komponen pada system Android. Android Runtime Android Runtime ini berisi Core Libraries dan Dalvik Virtual Machine. Satu set libraries inti yang menyediakan sebagian besar fungsi yang tersedia di libraries inti dari bahasa pemrograman Java. Linux Kernel Tumpukan paling bawah pada arsitektur Android ini adalah kernel. Google menggunakan kernel Linux versi 2.6 untuk membangun sistem Android, yang mencakup memory management, security setting, power management, dan 10 beberapa driver hardware. Kernel berperan sebaagai abstraction layer antara hardware dan keseluruhan software. 2.3. Komponen Dasar Android Google menjabarkan aplikasi Android ke dalam empat blok bangunan dasar (tidak semua aplikasi mempunyai keempatnya) yaitu : Activities : yaitu ketika sebuah aplikasi memunculkan screen di layar. Sebagai contoh, sebuah aplikasi GPS mempunyai screen peta dasar, screen rencana perjalanan, dan screen rute di atasnya. Ketiga penampakan screen ini disebut activities. Intents : yaitu mekanisme perpindahan dari suatu activity ke activity lainnya. Sebagai contoh ketika merencanakan perjalanan pada aplikasi GPS, intent akan menginterpretasi input dan mengaktifkan screen rute di atas screen peta. Services : yaitu serupa dengan service di PC dan server, program yang berjalan di belakang layar, tanpa interferensi dari pengguna. Content Provider : yaitu mekanisme yang memungkinkan sebuah aplikasi berbagi informasi dengan aplikasi lainnya. 11 2.4. Java Java merupakan bahasa pemrograman yang dikembangkan agar mampu berjalan di atas berbagai platform perangkat keras dan perangkat lunak yang berbeda. Hal ini merupakan terobosan yang cukup besar, sebab aplikasi sebelumnya dikembangkan hanya untuk sistem operasi tertentu. Bahasa pemrograman Java saat ini bisa digunakan untuk mengembangkan aplikasi desktop, yaitu menggunakan JSE (Java Standard Edition) dan aplikasi yang berjalan di internet, yaitu menggunakan JEE (Java Enterprise Edition). Dalam mengembangkan aplikasi, Java menggunakan metodologi pengembangan berorietasi objek (OOP[Object Oriented Project]) [5]. 2.5. SQLite Database Gambar 2.2. Logo SQLite [2] Database adalah kumpulan data yang saling berhubungan yang disimpan secara bersamaan sedemikian rupa tanpa pengulangan (redudansi) yang tidak perlu untuk memenuhi berbagai kebutuhan[1]. SQLiteDatabase merupakan interface yang ada pada sistem operasi Android yang digunakan untuk membuat relational database. SQLite menyokong implementasi dari SQL yang kaya untuk apa pun yang dibutuhkan oleh aplikasi mobile. Setiap aplikasi dapat memiliki databasenya sendiri dengan pengaturan yang lengkap[2]. 12 SQLite merupakan sebuah sistem manajemen basisdata relasional yang bersifat ACID-compliant dan memiliki ukuran pustaka kode yang relatif kecil, ditulis dalam bahasa C. SQLite merupakan proyek yang bersifat public domain yang dikerjakan oleh D. Richard Hipp. Tidak seperti pada paradigma client-server umumnya, Inti SQLite bukanlah sebuah sistem yang mandiri yang berkomunikasi dengan sebuah program, melainkan sebagai bagian integral dari sebuah program secara keseluruhan. Sehingga protokol komunikasi utama yang digunakan adalah melalui pemanggilan API secara langsung melalui bahasa pemrograman. Mekanisme seperti ini tentunya membawa keuntungan karena dapat mereduksi overhead, latency times, dan secara keseluruhan lebih sederhana. Seluruh elemen basisdata (definisi data, tabel, indeks, dan data) disimpan sebagai sebuah file. Kesederhanaan dari sisi disain tersebut bisa diraih dengan cara mengunci keseluruhan file basis data pada saat sebuah transaksi dimulai. Pustaka SQLite mengimplementasikan hampir seluruh elemenelemen standar yang berlaku pada SQL-92, termasuk transaksi yang bersifat atomic, konsistensi basisdata, isolasi, dan durabilitas (dalam bahasa inggris lebih sering disebut ACID), trigger, dan kueri-kueri yang kompleks. Tidak ada pengecekan tipe sehingga data bisa dientrikan dalam bentuk string untuk sebuah kolom bertipe integer. Beberapa kalangan melihat hal ini sebagai sebuah inovasi yang menambah nilai guna dari sebuah basisdata, utamanya ketika digunakan dalam bahasa pemrograman berbasis script (PHP, Perl), sementara kalangan lain melihat hal tersebut sebagai sebuah kekurangan. 13 2.6. E-Commerce E-commerce (elektronik commerce) adalah penyebaran, pembelian, penjualan, pemasaran barang dan jasa melalui system elektronik seperti internet, televisi ataupun jaringan komputer lainnya. E-Commerce dapat menyebabkan transfer dana elektronik, pertukaran data elektronik, system manajemen inventori otomatis dan pengumpulan data otomatis. Aktivitas bisnis selalu membutuhkan tempat, maka jelaslah bahwa aplikasi e-Commerce dibangun di atas infrastruktur teknologi yang ada. Aplikasi e-Commerce ditopang oleh berbagai infrastruktur, sedangkan implementasinya terdiri dari empat wilayah utama: manusia, kebijakan publik, standar dan protokol teknis, serta organisasi lain [7]. Alasan menggunakan e-Commerce sebagai media periklanan adalah[7]: Banyak orang yang telah melewatkan waktunya di depan komputer dan meninggalkan media TV; Iklan dapat diupdate setiap waktu dengan biaya yang minimal; Iklan dapat menjangkau pembeli potensial dalam jumlah yang sangat besar; Iklan online lebih murah, jika dibandingkan televisi ataupun media cetak; 14 2.7. Pemodelan Sistem 2.6.1. Diagram ER (Diagram Entity Relationship) Diagram ER adalah diagram yang digunakan untuk merancang database dengan menggunakan Entity dan Relationship. Konsep dasarnya diagram ER adalah model konseptual untuk menggambarkan struktur logis dari basisdata berbagai grafis[1]. Berikut adalah simbol yang digunakan pada Diagram ER[1]: Tabel 2.1 Simbol Diagram ER Simbol Nama Entity Keterangan Objek yang dapat dibedakan dalam dunia nyata. Hubungan yang terjadi Relationship antara satu atau lebih dari entity. Karakteristik dari Entity atau relationship, yang menyediakan penjelasan Atribut detail tentang atau tersebut. 15 entity relationship 2.6.2. Pemrograman Berorientasi Objek Sebuah program berorientasi objek (Object Oriented Programming) merupakan program dengan paradigma pemrograman yang berorientasi kepada objek. Semua data dan fungsi dibungkus dalam kelas – kelas atau objek – objek. Model data berorientasi memberikan fleksibilitas yang lebih, kemudahan merubah program dan digunakan luas dalam teknik piranti lunak skala besar. Lebih jauh lagi, pemrograman OOP lebih mudah dipelajari, dikembangkan dan dirawat. Suatu program disebut pemrograman berbasis Object (OOP) karena terdapat kelas, objek, abstraksi, encapsulation, inheritance dan polymorphism. Kelas Kelas adalah sekumpulan data dan fungsi dalam satu kesatuan untuk tujuan tertentu. Contohnya, misalnya ada kelas “pensil” dimana kelas pensil ini merupakan turunan dari kelas “alat_tulis”. Objek Membungkus data dan fungsi bersama menjadi suatu unit dalam sebuah program komputer. Objek merupakan kosep dasar dari modularitas dan struktur dalam sebuah program computer berbasis orientasi objek. Abstraksi Yaitu kemampuan sebuah program untuk melewati aspek informasi yang diproses 16 olehnya, artinya kemapuan memfokuskan pada inti. Setiap objek dalam system melayani sebagai model dari “pelaku” abstrak yang dapat melakukan kerja, laporan dan perubahan keadaannya serta berkomunikasi dengan objek lainnya dalam system. Encapsulation Adalah pembungkusan variable dan method dalam sebuah objek yang terlindungi serta menyediakan interface untuk mengakses variable tersebut. Inheritance Pewarisan merupakan pewarisan atribut dan method dari sebuah class ke class lainnya. Polymorphism Polimorpisme adalah kemampuan suatu objek untuk mempunyai lebih dari satu bentuk. 17 2.6.3. Unified Modelling Language (UML) Unified Modelling Language (UML) adalah bahasa pemodelan untuk sistem atau perangkat lunak yang berparadigma berorientasi objek[4]. Pemecahan masalah utama dari Object Oriented biasanya dengan penggambaran dalam bentuk model. Beberapa tools yang dipakai adalah bagian dari dasar UML. UML terdiri dari beberapa diagram, yaitu: Diagram Use Case Diagram Use Case menggambarkan apa saja aktifitas yang dilakukan oleh system dari sudut pandang pengamatan luar. Kemudian akan timbul pertanyaan apa yang dilakukan dan bagaimana melakukannya. Diagram Class Diagram class memberikan pandangan secara luas dari suatu system dengan menunjukkan kelas – kelasnya dan hubungan mereka. Diagram class mempunyai tiga macam relationship, yaitu: assotiation, aggregation dan generalization. Diagram Sequence Merupakan diagram yang menjelaskan bagaiman suatu operasi dilakukan, message apa yang dikirim dan kapan pelaksanaannya. Objek – objek yang berkaitan dengan proses berjalannya operasi diurutkan dari kiri ke kanan berdasarkan waktu terjadinya dalam pesan yang terurut. Oleh karena itu, diagram ini diatur oleh waktu. 18 Diagram Activity Diagram activity berfokus pada aktifitas – aktifitas yang terjadi yang terkait dalam proses tunggal. Dengan kata lain, diagram ini menunjukkan bagaimanan aktifitas – aktifitas tersebut saling bergantung satu dengan yang lain. Sesungguhnya, transformasi diagram – diagram UML ke dalam bentuk kode – kode Java itu bersifat mekanis. Dalam pengembangan sistem aplikasi Java yang menggunkan paradigma “pemrograman berorientasi objek”, para analis dan perancang sistem menggunakan diagram – diagram UML sebagai sarana untuk menganalisis permasalahan yang dihadapi dan juga sebagai sarana perancangan sistem/aplikasi untuk membuat solusi terpadu[5]. 2.8. Pengujian Perangkat Lunak Berdasarkan standar IEEE, pengujian perangkat lunak memiliki pengertian segala aktivitas yang dilakukan untuk mengevaluasi kualitas produk dan untuk mengembangkannya dengan mengidentifikasi kelemahan dan permasalahan yang terjadi[6]. Jenis pengujian black box testing fungsional adalah salah satu jenis dari pengujian. Pada jenis ini, perangkat lunak diuji untuk persyaratan fungsional. Pengujian dilakukan dalam bentuk tertulis untuk memeriksa apakah aplikasi berjalan seperti yang diharapkan[6]. 19 2.9. Eclipse Eclipse adalah sebuah IDE (Integrated Development Environment) untuk mengembangkan perangkat lunak dan dapat dijalankan di semua platform. Pada saat ini, Eclipse merupakan salah satu IDE favorit karena gratis dan open source[3]. 2.8.1. Sejarah Eclipse Bulan November tahun 2001, IBM (International Business Machine), sebuah perusahaan komputer berskala internasional di Amerika Serikat, menginventasikan US$ 40 juta untuk pengembangan produk Eclipse. Awalnya Eclipse ini dikembangkan oleh IBM untuk menggantikan perangkat lunak IBM Visual Age for Java 4.0. Sejak 5 November 2001, konsorsium Eclipse Foundation mengambil alih pengembangan Eclipse lebih lanjut[3]. 2.8.2. Arsitektur Eclipse Sejak versi 3.0 Eclipse pada dasarnya merupakan sebuah kernel. Yaitu apa yang digunakan pada Eclipse sebenarnya adalah fungsi dari plug-in yang terinstall. Secara standar Eclipse selalu dilengkapi JDT (Java Development Tools), plug-in ini yang membuat Eclipse kompatibel untuk mengembangan program Java [3]. 2.8.3. Versi Eclipse[3] Sejak tahun 2006, Eclipes Foundation mengkoordinasikan peluncuran Eclipse secara rutin dan simultan yang dikenal dengan nama Simultaneous Release. 20 Tujuannya adalah menyediakan distribusi Eclipse dengan fitur – fitur dan versi terstandarisasi dan untuk mempermudah deployment, maintenance serta kenyamanan pengguna. Tabel 2.2 Versi Eclipse Kode Peluncuran Eclipse 3.0 Tanggal Peluncuran 28 Juni 2004 Platform 3.0 Eclipse 28 Juni 2005 3.1 Callisto 30 Juni 2006 3.2 Callisto Project Europa 29 Juni 2007 3.3 Europa Project Ganymede 25 Juni 2008 3.4 Ganymede Project Galileo 24 Juni 2009 3.5 Galileo Project Helios 23 Juni 2010 3.6 21 Nama Proyek