BAB 2 TINJAUAN PUSTAKA 2.1 Rekayasa Perangkat Lunak 2.1.1. Pengertian Rekayasa Perangkat Lunak - Menurut Bauer perangkat lunak adalah pembentukan dan penggunaan prinsip-prinsip rekayasa untuk memperoleh perangkat lunak secara ekonomis yang dapat dihandalkan dan bekerja secara efisien pada mesin nyata. (Pressman,2010:13) - Menurut IEEE adalah aplikasi yang sistematik, disiplin, pendekatan kuantitatif untuk pengembangan, operasi dan pemeliharaan software. (Pressman,2010:13) - Menurut Pressman (2010:1)adalah produk yang dibangun oleh perangkat lunak profesional dan kemudian mendukung dalam jangka panjang. - Jadi yang di maksud dengan rekayasa perangkat lunak itu cara rekayasa dalam membuat dan mengembangkan software agar software dapat bekerja secara efisien dalam mesin nyata dan secara praktis dapat dihandalkan dalam oleh setiap orang yang menggunakan software tersebut, serta pemeliharaan software agar software yang di buat dapat bertahan dalam jangka waktu yang lama. 2.1.2. Lapisan Rekayasa Software Engineering Menurut Pressman (2010:13) rekayasa perangkat lunak memiliki 4 lapisan. Berikut lapisan-lapisan rekayasa perangkat lunak: 8 9 - A Quality Focus : Rekayasa perangkat lunak merupakan teknologi yang berlapis, setiap pendekatan rekayasa harus berkomitmen terhadap kualitas. - Proses : merupakan pondasi dari rekayasa perangkat lunak. Proses juga merupakan penghubung lapisan teknologi dan memungkinkan perkembangan perangkat lunak komputer secara rasional dan tepat waktu - Metode : menyediakan teknis cara membangun perangkat lunak. - Alat : menyediakan otomatis atau semiotomatis dukungan untuk proses dan metode. 2.1.3. Extreme Programming Extreme Programming (Pressman, 2010:73) meliputi tahapantahapan sebagai berikut: 1. Planning Pertama dilakukannya perencanaan yang menggambarkan fitur dan fungsi yang dibutuhkan oleh software yang dikembangkan. Lalu diberi nilai dan diurutkan berdasarkan prioritasnya. Kemudian, di tentukan waktu pengerjaan nya. Jika ada bagian yang membutuhkan waktu lebih dari tiga minggu dalam pengembangan, maka user akan diminta untuk membagi bagian tersebut menjadi beberapa bagian yang lebih sederhana. 10 2. Design Design dalam extreme programming menggunakan prinsip “keep it simple” (KIS). Desain tersebut akan memberikan pedoman bagaimana implementasi dari setiap bagian yang ada. Extreme Programming juga mendukung refactoring yang merupakan teknik konstruksi sekaligus teknik desain. Refactoring merupakan proses mengubah suatu software dimana hasil dari kode tidak berubah namun struktur kode itu sendiri berubah dan semakin disederhanakan. Dalam extreme programming, desain dapat dilakukan sebelum dan sesudah tahap coding dilakukan karena adanya refactoring yang dilakukan setelah tahap coding dilaksanakan. 3. Coding Setelah Tahap perencanaan dan design selesai, tidak langsung berpindah ke pembuatan code. Tetapi merancang serangkaian tes yang akan mengevakuasi setiap bagian terlebih dahulu. Setelah tes tersebut dibuat, pengembang dapat lebih fokus untuk melakukan coding untuk mengimplementasikan dengan tujuan melewati unit test tersebut. 4. Testing Tahap ini dilakukan pengujian kode dengan unit test yang sudah dibuat sebelmu melakukan coding. Selain itu terdapat evaluasi yang berasal dari user dan terfokus pada fungsionalitas sistem secara keseluruhan 11 2.2 Pengertian Database Database adalah suatu koleksi data logical yang saling berhubungan dan mendeskripsikan data tersebut, serta di desain untuk berelasi pada suatu informasi yang dibutuhkan dalam suatu organisasi (Connolly, 2005:15). Basis data terdiri dari 2 kata yaitu, basis dan data. Basis dapat di katakan sebagai markas atau gudang, tempat besarang/berkumpul, sedangkan data adalah representasi fakta dunia yang mewakili suatu objek. (Fathansyah, 2012:4) Sebagai satu kesatuan istilah database dapat di definisikan sebagai berikut: Sebuah himpunan kelompok data yang saling berhubungan dan di organisasikan sedemikian rupa agar dapat di manfaatkan dengan mudah dan cepat. Kumpulan data yang berhubungan yang disimpan secara bersama dan tanpa pengulangan atau redudansi yang tidak perlu, untuk memenuhin berbagai kebutuhan. Kumpulan dari file dan arsip yang saling berhubungan yang disimpan dalam media penyimpanan elektronis. Basis data sesungguhnya memiliki prinsip kerja dan tujuan yang sama antara lain untuk pengaturan data/arsip. Sedangkan tujuan utamanya adalah memberi kemudahan dan kecepatan dalam pengambilan kembali data/arsip. Perbedaannya terletak pada media penyimpanan yang di gunakan.jika lemari arsip menggunakan lemari dari besi atau kayu sebagai media penyimpanan, maka basis data menggunakan media penyimpanan elektronis seperti cakram magnetis. Hal ini merupakan konsekuensi yang logis karena karena lemari arsip 12 di kelola oleh manusia, sementara basis data di kelola melalui mesin pintar yang di kenal sebagai komputer. Secara lebih lengkap, Pemanfaatan basis data dilakukan untuk memenuhi tujuan objektif sebagai berikut: (Fathansyah, 2012:6-7) Kecepatan(Speed) Efisiensi ruang penyimpanan(Space) Keakuratan(Accuracy) Ketersediaan(Availability) Kelengkapan(Completeness) Keamanan(Security) Kebersamaan pemakaian(Sharability) 2.2.1 Penerapan Basis Data Tahap implementasi (penerapan) basis data merupakan upaya untuk menyimpan data ke dalam memori sekunder dengan bantuan DBMS (Database Management System) yang di pilih. Tahap penerapan basis data di awali dengan transformasi model data yang di buat ke dalam skema atau struktur data. Secara umum, sebuah diagram akan di presentasikan menjadi sebuah kumpulan database. Dan setiap himpunan entitas dan himpunan relasi akan di transformasikan ke dalam bentuk table (file-file data) yang merupakan komponen untuk membuat database. (Fathansyah, 2012:115-116) Setiap attribute yang melekat pada himpunan entitas atau relasi akan dinyatakan sebagai field-field dari setiap table yang sesuai. Setelah tahap implementasi selesai di buat. Setelah tahap 13 implementasi selesai akan mengetahui seperti apa kualitas yang berpengaruh terhadap cara performansi Basis Data buat. 2.2.2 Pengamanan Basis Data Setiap data yang disimpan perlu di lindungi dari akses yang tidak diizinkan untuk membukanya, perusakan/perubahan yang merugikan, serta timbulnya hal yang ikonsistensi yang tak sengaja. (Fathansyah, 2012:263-265) Bentuk akses-akses secara sengaja dapat merusak Basis Data ataupun merugikan pemilik data dapat berupa: Pembacaan data yang tidak diizinkan. Pengubahan data yang tidak diizinkan. Penghapusan/perusakan data yang tidak diizinkan. Sementara itu, timbulnya inkonsistensi data secara tidak disengaja, dapat disebabkan oleh: Sistem rusak(crash) selama pemrosesan transaksi. Inkonsistensi basis data yang tidak terjaga dengan baik dari banyak user ke database. Adanya pendistribusian basis data kebanyak computer. Kesalahan aplikasi yang melanggar integritas yang semestinya di pelihara agar tetap konsisten. 14 Untuk melindungi basis data, pegamanan basis data harus di lakukan dari beberapa level: Fisik, Sistem computer harus aman dari jangkauan orang-orang yang tidak berwenang. Manusia, Otoritas user harus di batasi agar tidak di berikan kepada pengacau (intruder) Sistem operasi Mencegah pengamanan yang longgar dimana system operasi pada sebuah DBMS yang di jalankan akan turut mempelemah aspek pengamanan basis data dalam system tersebut. Jaringan Hampir semua system basis data melakukan peng aksesan melewati jaringan, maka perlu di adakan mekanisme pengaman pada setiap perangkat lunak yg memakan system basis data yg di akses melalui jaringan agar mencegah upaya pembobolan basis data melewati jaringan. Sistem basis data Dalam basis data mungkin di terapkan mekanisme pemberian otoritas sebagian atau seluruhnya pada objek-objek basis data. 15 2.3 Internet Internet adalah jaringan komputer terbesar di dunia. Jaringan merupakan istilah yang berarti sekelompok komputer yang dihubungkan bersama sehingga dapat berbagi-pakai informasi dan sumberdaya. Internet mengandung sejumlah standar untuk melewatkan informasi dari satu jaringan ke jaringan lainnya, sehingga jaringan di seluruh dunia bisa terhubung. (Shirky, 1994:2) 2.4 Pengertian Online Shop Menurut Mariza Arfina dan Robert Marpaung, e-commerce dapat diartikan suatu cara berbelanja atau bertransaksi secara online yang memanfaatkan fasilitas internet di mana terdapat website yang menyediakan layanan “get and deliver” (Yuhefizar, 2013:2) Berbisnis online merupakan salah satu bagian dari E-Commerce. ECommerce adalah singkatan dari Electronic Commerce yang didefinisikan sebagai proses pembelian dan penjualan produk, jasa dan informasi yang dilakukan secara elektronik dengan memanfaatkan jaringan komputer. Salah satu jaringan yang digunakan adalah internet. Online shopping atau belanja via internet, adalah suatu proses pembelian barang atau jasa dari mereka yang menjual internet. Sejak kehadiran Internet para pedagang telah berusaha membuat toko online dan menjual produk kepada mereka yang sering menjelajahin dunia maya seperti Internet. Para pelanggan dapat mengunjungin toko online (online store) dengan mudah dan nyaman, mereka dapat melakukan transaksi dirumah, sambil duduk dikursi mereka yang nyaman didepan. 16 Adapun keuntungan yang diperoleh dengan menggunakan transaksi melalui E-Commerce adalah sebagai berikut : 1. Meningkatkan pendapatan dengan menggunakan online channel yang biayanya lebih murah. 2. Mengurangi biaya-biaya yang berhubungan dengan kertas, seperti biaya pos surat, pencetakan, report, dan sebagainya. 3. Mengurangi keterlambatan dengan menggunakan transfer elektronik/pembayaran yang tepat waktu dan dapat langsung dicek. 4. Mempercepat pelayanan ke pelanggan, dan pelayanan lebih responsif. 2.5 Jejaring Sosial Jejaring sosial merupakan situs dimana setiap orang bisa membuat web page pribadi, kemudian terhubung dengan teman-teman untuk berbagi informasi dan komunikasi. Contoh Jejaring sosial yang terbesar adalah Facebook. Jika media traditional menggunakan media cetak dan broadcast, maka media sosial menggunakan internet. Jejaring sosial mengajak siapa saja yang tertarik untuk berpatisipasi dengan memberi kontribusi dan feedback secara terbuka, memberi komentar, serta membagi informasi dalam waktu cepat dan tidak terbatas. Pesatnya perkembangan Jejaring sosial saat ini dikarenakan semua orang dapat dengan mudah memiliki media sosial sendiri. Seorang pengguna Jejaring sosial bisa mengakses sebuah situs jejaring sosial tanpa dengan biaya yang besar, tanpa alat yang mahal dan dapat dilakukan sendiri tanpa bantuan siapapun. Kita sebagai pengguna Jejaring sosial dengan bebas bisa mengedit, menambahkan, memodifikasi baik tulisan, gambar, audio dan berbagai model content lainnya. 17 Jejaring sosial memiliki banyak peran dalam kehidupan manusia antara lain: Sebagai sarana diskusi dengan jangkauan yang luas Sarana untuk bertukar informasi Tempat pembelajaran onlne dan penambahan wawasan Mempererat suatu hubungan sosial dengan sesama pengguna jejaring sosial lainnya Sarana hiburan dan komunikasi 2.6 Android 2.6.1 Pengertian Android Android adalah sistem operasi yang mengadopsi sistem operasi linux yang telah dimodifikasi untuk menjadi sistem operasi bergerak (mobile operating system). Keuntungan dari android tersendiri adalah adanya pendekatan terpadu. Pengembang hanya terfocus pada aplikasi saja, aplikasi tersebut dapat berjalan pada beberapa perangkat yang berbeda selama masih di ruang lingkup android sendiri. (Suprianto,2012:9) 2.6.2 Arsitektur Android Secara garis besar sistem operasi Android terbagi menjadi lima tingkatan (Suprianto,2012:10): Linux kernel adalah kernel dasar android. Tingkat ini berisi semua driver perangkat tingkat rendah untuk komponen-komponen hardware perangkat Android 18 Libraries berisi semua kode program yang menyediakan layananlayanan utama sistem operasi android Android Runtime kedudukannya setingkat dengan libraries, Android Runtime menyediakan kumpulan pustaka inti yang dapat diaktifkan oleh pengembang untuk menulis kode aplikasi Android dengan bahasa pemograman Java. Application framework adalah semacam kumpulan class built-in yang tertanam dalam sistem operasi Android sehingga pengembang dapat memanfaatkannya untuk aplikasi yang sedang dibangun. Applications Seperti aplikasi Android pada umumnya yang dapay didownload dan di-install dari market Android. Semua aplikasi yang Anda buat terletak pada tingkat Applications. 2.7 Eclipse Eclipse merupakan salah satu IDE favorit yang digunakan untuk melakukan pemograman, termasuk ketika membuat aplikasi Android. Sifat eclipse : Multi-platform : Target sistem operasi Eclipse adalah Micrososft, windows, linux, solaris, AIX, HP-UX dan Mac OS X Multi-language : Eclipse dikembangkan dengan bahasa pemograman java, namun mendukung pengembangan aplikasi berbasis bahasa pemograman lainnya. Multi-role : Selain sebagai IDE untuk pengembangan aplikasi, bisa digunakan untuk aktivitas dalam siklus pengembangan perangkat lunak, seperti dokumentasi, test perangkat lunak dan sebagai nya. 19 2.8 Interaksi Manusia dan Komputer 2.8.1 Pengertian Interaksi Manusia dan Komputer Interaksi manusia dan komputer merupakan suatu disiplin ilmu yang berfokus pada aspek desain, implementasi, dan evaluasi dari sistem komputer interaktif agar manusia dapat berinteraksi dengan komputer seramah mungkin. 2.8.2 User Interface User interface menciptakan komunikasi yang efektif antara manusia dan komputer. (Pressman,2010:312) Desain user interface dimulai dengan identifikasi user, task dan environmental requirements. 2.8.3 Delapan Aturan Emas 8 Aturan Emas User Interface (Shneiderman, 2005 : 75) : a Berusaha untuk Konsistensi Setiap urutan tindakan harus dalam situasi yang sama dan tidak boleh berbeda, terminologi harus identik dalam sebuah prompt, menu, dan membantu layar, dan perintah harus konsisten dengan warna, tampilan, dan huruf yang di gunakan. b Melayani kegunaan yang universal Ada kebutuhan dari pengguna yang sudah ahli untuk meningkatkan kecepatan interaksi, sehingga diperlukan singkatan, tombol fungsi, perintah tersembunyi, dan fasilitas makro. 20 c Memberikan umpan balik yang informatif Untuk setiap tindakan operator, sebaiknya disertakan suatu sistem umpan balik. Untuk tindakan yang sering dilakukan dan tidak terlalu penting, dapat diberikan umpan balik yang sederhana. Tetapi ketika tindakan merupakan hal yang penting, maka umpan balik sebaiknya lebih substansial. d Merancang dialog untuk menghasilkan suatu penutupan Urutan tindakan sebaiknya diorganisir dalam suatu kelompok dengan bagian awal, tengah, dan akhir. Umpan balik yang informatif akan meberikan indikasi bahwa cara yang dilakukan sudah benar dan dapat mempersiapkan kelompok tindakan berikutnya. e Mencegah kesalahan Sedapat mungkin sistem dirancang sehingga pengguna tidak dapat melakukan kesalahan fatal. Jika kesalahan terjadi, sistem dapat mendeteksi kesalahan dengan cepat dan memberikan mekanisme yang sedehana dan mudah dipahami untuk penanganan kesalahan. f Mudah kembali ke tindakan sebelumnya Hal ini dapat mengurangi kekuatiran pengguna karena pengguna mengetahui kesalahan yang dilakukan dapat dibatalkan; sehingga pengguna tidak takut untuk mengekplorasi pilihanpilihan lain yang belum biasa digunakan. g Mendukung tempat pengendali internal 21 Pengguna ingin menjadi pengontrol sistem dan sistem akan merespon tindakan yang dilakukan pengguna daripada pengguna merasa bahwa sistem mengontrol pengguna. Sebaiknya sistem dirancang sedemikan rupa sehingga pengguna menjadi inisiator daripada responden. h Mengurangi beban ingatan jangka pendek Keterbatasan ingatan manusia membutuhkan tampilan yang sederhana atau banyak tampilan halaman yang sebaiknya disatukan, serta diberikan cukup waktu pelatihan untuk kode, mnemonic, dan urutan tindakan. 2.9 UML (Unified Modeling Language) 2.9.1. Pengertian UML UML (Unified Modeling Language) adalah sebuah bahasa yang berbentuk gambar/grafik untuk pengembangan sebuah software yang dapat menyampaikan cara membuat sebuah sistem pengembangan software berbasis Object Oriented Hubungan didalam penggunaan UML, yaitu; Dependency, adalah hubungan semantik antara dua benda yang mana sebuah benda berubah mengakibatkan benda satunya akan berubah pula. Umumnya sebuah dependency digambarkan sebuah panah dengan garis terputus-putus. 22 Association, adalah hubungan antar benda struktural yang terhubung diantara obyek. Kesatuan obyek yang terhubung merupakan hubungan khusus, yang menggambarkan sebuah hubungan struktural diantara seluruh atau sebagian. Umumnya assosiation digambarkan dengan sebuah garis yang dilengkapi dengan sebuah label, nama, dan status hubungannya. Generalizations, adalah menggambarkan hubungan khusus dalam obyek anak yang menggantikan obyek induk. Dalam hal ini, obyek anak memberikan pengaruhnya dalam hal struktur dan tingkah lakunya kepada obyek induk. Digambarkan dengan garis panah. Realizations, merupakan hubungan semantik antara pengelompokkan yang menjamin adanya ikatan diantaranya. Hubungan ini dapat diwujudkan diantara interface dan kelas atau elements, serta antara use cases dan collaboration 2.9.2. Diagram-diagram UML UML sendiri terdiri atas diagram-diagram sistem menurut aspek atau sudut pandang tertentu. UML mempunyai 9 diagram, yaitu: a. Use case Menggambarkan sekelompok use cases dan aktor yang disertai dengan hubungan diantaranya. Diagram use cases ini menjelaskan dan menerangkan kebutuhan yang diinginkan pengguna, serta sangat berguna dalam menentukan struktur organisasi dan model dari pada sebuah sistem (lihat gambar 2.1). 23 Gambar 2.1 Use Case b. Class Diagram Memperlihatkan struktur statis dari sebuah sistem Gambar 2.2 Class Diagram 24 c. Object Diagram Merupakan varian dari kelas diagram yang memperlihatkan lebih detail banyaknya obyek yang mengintantiasi kelas. Gambar 2.3 Object Diagram d. State Diagram Memperliatkan semua keadaan yang dapat dimiliki oleh kelas dan event yang dapat merubah keadaan tersebut. Gambar 2.4 State Diagram 25 e. Sequence Diagram memperlihatkan kolaborasi dinamik antara objek-objek dengan suatu urutan pesan antar objek tersebut. Gambar 2.5 Sequence Diagram f. Collaboration Diagram Memperlihatkan kolaborasi dinamik antar objek tanpa memperhatikan aspek waktu. Gambar 2.6 Collaboration Diagram g. Activity Diagram Memperlihatkan aliran Gambar 2.7 Activity Diagram urutan aktifitas. 26 h. Component Diagram memperlihatkan struktur fisik dari source code dalam terminology code components. Komponen berisi informasi tentang logical class dapat berupa komponen source code, komponen biner atau komponen yang dapat dieksekusi. Gambar 2.8 Component Diagram i. Deployment Diagram. Memperlihatkan arsitektur fisik dari hardware dan software pada sistem. Gambar 2.9 Deployment Diagram