BAB II LANDASAN TEORI 2.1 Pengertian Aplikasi Menurut Hartono (2004, p8), Aplikasi merupakan sistem yang dirancang dan disusun sedemikian rupa untuk menghasilkan informasi yang terpadu dengan menggunakan sarana komputer sebagai sarana penunjangnya. 2.2 Metode Waterfall Model waterfall adalah model klasik yang bersifat sistematis, berurutan dalam membangun software. Menurut Sommerville (2011, p29), Waterfall model mengambil kegiatan proses dasar spesifikasi, pengembangan, validasi dan evolusi dan mewakili kegiatan tersebut sebagai fase proses terpisah seperti spesifikasi persyaratan, perancangan perangkat lunak, implementasi, pengujian, dan sebagainya. Tahapan utama dari waterfall model langsung mencerminkan aktifitas pengembangan dasar. Terdapat 5 tahapan pada waterfall model, yaitu requirement analysis and definition, system and software design, implementation and unit testing, integration and system testing, dan operation and maintenance. Tahapan-tahapan model waterfall menurut referensi Sommerville (2011, p31), yaitu : 1. Requirements Analysis and Definition Mengumpulkan kebutuhan secara lengkap kemudian dianalisis dan didefinisikan kebutuhan yang harus dipenuhi oleh software yang akan dibangun. Hal ini sangat penting, mengingat software harus dapat berinteraksi dengan elemen-elemen yang lain seperti hardware, database, dan sebagainya. Tahap ini sering disebut dengan Project Definition. 8 http://digilib.mercubuana.ac.id/ 9 2. System and Software Design Proses pencarian kebutuhan diintensifkan dan difokuskan pada software. Untuk mengetahui sifat dari program yang akan dibuat, maka para software engineer harus mengerti tentang domain informasi dari software, misalnya fungsi yang dibutuhkan, user interface, dan sebagainya. Dari dua aktivitas tersebut (pencarian kebutuhan sistem dan software) harus didokumentasikan dan ditunjukkan kepada user. Proses software design untuk mengubah kebutuhan-kebutuhan di atas menjadi representasi ke dalam bentuk “blueprint” software sebelum coding dimulai. Desain harus dapat mengimplementasikan kebutuhan yang telah disebutkan pada tahap sebelumnya. Seperti dua aktivitas sebelumnya, maka proses ini juga harus didokumentasikan sebagai konfigurasi dari software. 3. Implementation and Unit Testing Desain program diterjemahkan ke dalam kode-kode dengan menggunakan bahasa pemrograman yang sudah ditentukan. Program yang dibangun langsung diuji baik secara unit. 4. Integration and System Testing Untuk dapat dimengerti oleh mesin, dalam hal ini adalah komputer, maka desain tadi harus diubah bentuknya menjadi bentuk yang dapat dimengerti oleh mesin, yaitu ke dalam bahasa pemrograman melalui proses coding. Tahap ini merupakan implementasi dari tahap design yang secara teknis nantinya dikerjakan oleh programmer. Penyatuan unit-unit program kemudian diuji secara keseluruhan (system testing). 5. Operation and Maintenance Sesuatu yang dibuat haruslah diujicobakan. Demikian juga dengan software. Semua fungsi-fungsi software harus diujicobakan, agar software bebas dari error, dan hasilnya harus benar-benar sesuai dengan kebutuhan yang sudah didefinisikan sebelumnya. Pemeliharaan suatu software diperlukan, termasuk di dalamnya adalah pengembangan, karena software yang dibuat tidak selamanya hanya seperti itu. Ketika dijalankan mungkin saja masih ada error kecil yang http://digilib.mercubuana.ac.id/ 10 tidak ditemukan sebelumnya, atau ada penambahan fitur-fitur yang belum ada pada software tersebut. Pengembangan diperlukan ketika adanya perubahan dari eksternal perusahaan seperti ketika ada pergantian sistem operasi, atau perangkat lainnya. Kelebihan dari model ini adalah selain karena pengaplikasian menggunakan model ini mudah, kelebihan dari model ini adalah ketika semua kebutuhan sistem dapat didefinisikan secara utuh, eksplisit, dan benar di awal proyek, maka Software Engineering (SE) dapat berjalan dengan baik dan tanpa masalah. Meskipun seringkali kebutuhan sistem tidak dapat didefinisikan se-eksplisit yang diinginkan, tetapi paling tidak, problem pada kebutuhan sistem di awal proyek lebih ekonomis dalam hal uang (lebih murah), usaha, dan waktu yang terbuang lebih sedikit jika dibandingkan problem yang muncul pada tahap-tahap selanjutnya. Kekurangan yang utama dari model ini adalah kesulitan dalam mengakomodasi perubahan setelah proses dijalani. Fase sebelumnya harus lengkap dan selesai sebelum mengerjakan fase berikutnya. 2.3 Unified Modelling Language (UML) Unified Modelling Language (UML) adalah suatu alat untuk memvisualisasikan dan mendokumentasikan hasil analisa dan desain yang berisi sintak dalam memodelkan sistem secara visual. Juga merupakan satu kumpulan konvensi pemodelan yang digunakan untuk menentukan atau menggambarkan sebuah sistem software yang terkait dengan objek (Haviluddin, 2011, p1). Secara filosofi UML diilhami oleh konsep yang telah ada yaitu konsep permodelan Object Oriented karena konsep ini menganalogikan sistem seperti kehidupan nyata yang didominasi oleh obyek dan digambarkan atau dinotasikan dalam simbol-simbol yang cukup spesifik (Haviluddin, 2011, p1-2). Menurut Haviluddin (2011, p3-5) UML memiliki 13 jenis diagram, yaitu : 1. Class diagram Class diagram menggambarkan struktur statis dari kelas dalam sistem anda dan menggambarkan atribut, operasi dan hubungan antara kelas. Class diagram membantu dalam memvisualisasikan struktur kelas- http://digilib.mercubuana.ac.id/ 11 kelas dari suatu sistem dan merupakan tipe diagram yang paling banyak dipakai. Selama tahap desain, class diagram berperan dalam menangkap struktur dari semua kelas yang membentuk arsitektur sistem yang dibuat. 2. Object diagram Object diagram menggambarkan kejelasan kelas dan warisan dan kadang-kadang diambil ketika merencanakan kelas, atau untuk membantu pemangku kepentingan non-program yang mungkin menemukan diagram kelas terlalu abstrak. 3. Component diagram Component diagram menggambarkan struktur fisik dari kode, pemetaan pandangan logis dari kelas proyek untuk kode aktual di mana logika ini dilaksanakan. 4. Deployment diagram (Collaboration diagram in version 1.x) Deployment diagram memberikan gambaran dari arsitektur fisik perangkat lunak, perangkat keras, dan artefak dari sistem. Deployment diagram dapat dianggap sebagai ujung spektrum dari kasus penggunaan, menggambarkan bentuk fisik dari sistem yang bertentangan dengan gambar konseptual dari pengguna dan perangkat berinteraksi dengan sistem. 5. Composite structure diagram Sebuah diagram struktur komposit mirip dengan diagram kelas, tetapi menggambarkan bagian individu, bukan seluruh kelas. Kita dapat menambahkan konektor untuk menghubungkan dua atau lebih bagian dalam atau ketergantungan hubungan asosiasi. 6. Package diagram Paket diagram biasanya digunakan untuk menggambarkan tingkat organisasi yang tinggi dari suatu proyek software. Atau dengan kata lain untuk menghasilkan diagram ketergantungan paket untuk setiap paket dalam Pohon Model. http://digilib.mercubuana.ac.id/ 12 7. Use case diagram Diagram yang menggambarkan actor, use case dan relasinya sebagai suatu urutan tindakan yang memberikan nilai terukur untuk aktor. Sebuah use case digambarkan sebagai elips horizontal dalam suatu diagram UML use case. 8. Activity diagram Menggambarkan aktifitas-aktifitas, objek, state, transisi state dan event. Dengan kata lain kegiatan diagram alur kerja menggambarkan perilaku sistem untuk aktivitas. 9. State Machine diagram (State chart diagram in version 1.x) Menggambarkan state, transisi state dan event. 10. Communication diagram Serupa dengan sequence diagram, tetapi diagram komunikasi juga digunakan untuk memodelkan perilaku dinamis dari use case. Bila dibandingkan dengan Sequence diagram, diagram komunikasi lebih terfokus pada menampilkan kolaborasi benda daripada urutan waktu. 11. Interaction Overview diagram Interaksi overview diagram berfokus pada gambaran aliran kendali interaksi dimana node adalah interaksi atau kejadian interaksi. 12. Sequence diagram Sequence diagram menjelaskan interaksi objek yang disusun berdasarkan urutan waktu. Secara mudahnya sequence diagram adalah gambaran tahap demi tahap, termasuk kronologi (urutan) perubahan secara logis yang seharusnya dilakukan untuk menghasilkan sesuatu sesuai dengan use case diagram. 13. Timing diagram Timing diagram di UML didasarkan pada diagram waktu hardware awalnya dikembangkan oleh para insinyur listrik. http://digilib.mercubuana.ac.id/ 13 2.3.1 Use Case Diagram Use case diagram menggambarkan fungsionalitas yang diharapkan dari sebuah sistem. Yang ditekankan adalah “apa” yang diperbuat sistem, dan bukan “bagaimana”. Use Case dilakukan oleh satu actor yang digambarkan dengan simbol orang yang dihubungkan dengan garis yang menunjukan hubungan komunikasi. Setiap Use Case harus diberi nama yang menyatakan apa hal yang dicapai dari hasil interaksi dengan Actor. Nama Use Case boleh terdiri dari beberapa kata dan tidak boleh ada Use Case yang memiliki nama yang sama (Rosa dan Shalahuddin, 2011). Diagram yang menggambarkan actor, use case dan relasinya sebagai suatu urutan tindakan yang memberikan nilai terukur untuk aktor. Sebuah use case digambarkan sebagai elips horizontal dalam suatu diagram UML use case (Haviluddin, 2011, p4). Tabel 2.1 : Simbol Use Case Diagram (Rosa dan Shalahuddin, 2011) Simbol Nama Keterangan Orang, proses, atau sistem lain yang berinteraksi dengan sistem informasi Actor yang akan dibuat informasi diluar sistem yang akan dibuat itu sendiri, jadi walaupun simbol dari actor adalah gambar orang biasanya dinyatakan menggunakan kata benda diawal frase nama actor. Fungsionalitas yang disediakan sistem sebagai unit-unit yang saling Use Case bertukar pesan antara unit atau actor biasanya dinyatakan dengan menggunakan kata kerja diawal frase nama use case. http://digilib.mercubuana.ac.id/ 14 Ektensi/extend Relasi use case tambahan ke sebuah use case dimana use case yang ditambahkan dapat berdiri sendiri walau tanpa use case. Relasi use case tambahkan ke sebuah use case dimana use case yang ditambahkan memerlukan use case Include ini untuk menjalankan fungsinya atau syarat dijalankan use case ini. Association/asosiasi Generalization/ Generalisasi Apa yang menghubungkan antara objek satu dengan objek lainnya. Disebut juga inheritance (pewarisan), sebuah elemen dapat merupakan spesialisasi dari elemen lainnya. 2.3.2 Activity Diagram Activity diagram memodelkan alur kerja (work flow). Sebuah proses bisnis dan urutan aktifitas dalam suatu proses. Diagram ini sangat mirip dengan sebuah flowchart karena kita dapat memodelkan sebuah alur kerja dari aktifitas keaktifitas lainnya atau dari suatu aktifitas kedalam keadaan sesaat (state) (Rosa dan Shalahuddin, 2011). Menggambarkan aktifitas-aktifitas, objek, state, transisi state dan event. Dengan kata lain kegiatan diagram alur kerja menggambarkan perilaku sistem untuk aktivitas (Haviluddin, 2011, p4). Tabel 2.2 : Simbol Activity Diagram (Rosa dan Shalahuddin, 2011) Simbol Nama Aktivitas Keterangan Aktivitas yang dilakukan sistem, aktivitas biasanya diawali dengan kata kerja. http://digilib.mercubuana.ac.id/ 15 Status awal aktivitas sistem, sebuah Status Awal diagram aktivitas memiliki sebuah status awal. Status Akhir Status akhir yang dilakukan sistem, sebuah diagram aktivitas memiliki sebuah status akhir. Percabangan/ decision Penggabungan/ Joint Asosisasi percabangan dimana jika ada pilihan aktivitas lebih dari satu. Asosiasi penggabungan dimana lebih dari satu aktivitas digabung menjadi satu. Memisahkan Swimlane organisasi bisnis yang bertanggung jawab terhadap aktivitas yang terjadi. 2.3.3 Sequence Diagram Diagram sequence merupakan gambaran interaksi antar objek di dalam dan di sekitar sistem berupa massage yang digambarkan terhadap waktu. Diagram ini secara khusus berasosiasi dengan Use Case. Diagram sequence juga digunakan untuk menggambarkan skenario atau rangkain langkah-langkah apa yang seharusnya terjadi sebagai respons dari sebuah event untuk menghasilkan sesuatu didalam Use Case sebagai output. Untuk massage digambarkan sebagai garis berpanah dari satu objek ke objek lainnya. Pada fase desain berikutnya, message dipetakan menjadi operasi/metode dari class. Activation bar menunjukan lamanya eksekusi sebuah proses, biasanya diawali dengan sebuah message (Rosa dan Shalahuddin, 2011). Sequence diagram menjelaskan interaksi objek yang disusun berdasarkan urutan waktu. Secara mudahnya sequence diagram adalah gambaran tahap demi tahap, termasuk kronologi (urutan) perubahan http://digilib.mercubuana.ac.id/ 16 secara logis yang seharusnya dilakukan untuk menghasilkan sesuatu sesuai dengan use case diagram (Haviluddin, 2011, p5). Tabel 2.3 : Simbol Sequence Diagram (Rosa dan Shalahuddin, 2011) Simbol Nama Object LifeLine Activation Message (Call) Message Message (Return) Message (Return) Keterangan Partisipan Form. Merupakan sebuah focus dari control pada suatu waktu. Pesan yang pemanggilan yang terjadi antar objek. Pesan yang menggambarkan komunikasi yang terjadi antar objek. Pesan yang dikirim untuk diri sendiri. Pesan yang dikirim untuk diri sendiri. Menambahkan Lifetime 2.4 menggambarkan pemulaan dan menghentikan titik dari suatu object. Interaksi Manusia dan Komputer (IMK) Menurut Shneiderman dan Plaisant (2010), Interaksi manusia dan komputer adalah sebuah ilmu yang mempelajari hubungan dan interaksi yang terjadi antara http://digilib.mercubuana.ac.id/ 17 manusia dan komputer. Fokus dari interaksi manusia dan komputer adalah perancangan dan evaluasi antarmuka pengguna (user interface). Eight Golden Rules of Interface Design menurut Shneiderman dan Plaisant (2010) aturan yang dapat digunakan sebagai pedoman dasar yang baik dalam merancang sebuah user interface adalah sebagai berikut : 1. Strive for consistency Sebuah aplikasi harus memiliki tampilan dan operasional yang konsisten. Hal ini mencakup konsisten pada warna, layout, jenis tulisan, menu, ukuran dan harus berada pada letak yang sama serta hal lainnya harus diterapkan secara konsisten. 2. Cater to universal usability Sebuah aplikasi harus memberikan keterangan pada setiap fitur bagi pengguna yang baru dan menyediakan shortcuts bagi pengguna yang sudah ahli (expert). 3. Offer informative feedback Sebuah aplikasi harus memberikan umpan balik (feedback) terhadap setiap aksi yang dilakukan oleh pengguna. 4. Design dialogs to yield closure Urutan aksi harus dirancang menjadi beberapa bagian seperti bagian awal, bagian tengah, dan bagian akhir. Memberikan umpan balik apabila aksi pengguna yang sedang dilakukan telah selesai dan melanjutkan aksi selanjutnya. 5. Pervent errors Sebuah aplikasi dirancang agar pengguna tidak melakukan kesalahan yang fatal. Jika pengguna melakukan kesalahan, sistem harus mendeteksi kesalahan dan memberikan intruksi yang sederhana dan mudah dipahami untuk melakukan perbaikan kesalahan tersebut. 6. Permit easy reversal of actions Suatu aplikasi harus disediakan fitur yang memungkinkan pengguna untuk kembali ke aksi sebelumnya, sehingga pengguna dapat mencoba pilihan-pilihan lain yang belum biasa digunakan. http://digilib.mercubuana.ac.id/ 18 7. Support internal locus of control Sebuah aplikasi dirancang harus bisa dikendalikan oleh pengguna yang memiliki keinginan untuk mengontrol sistem dan sistem akan memberikan umpan balik terhadap aksi yang dilakukan pengguna. Sebaiknya sistem dirancang agar pengguna dapat mengetahui langkah-langkah apa saja yang harus diambil. 8. Reduce short term memory load Pengguna memiliki keterbatasan ingatan sehingga sebuah aplikasi harus dirancang dengan tampilan yang sederhana agar mudah dimengerti dan diingat oleh pengguna. Shneiderman dan Plaisant (2010), menyatakan bahwa dalam merancang sebuah sistem yang ramah (friendly) untuk user maka harus memperhatikan 5 (lima) faktor sebagai berikut : 1. Waktu Belajar Berapa lama waktu yang dibutuhkan pengguna untuk mempelajari sekumpulan perintah suatu aplikasi. Dengan kata lain kemudahan dalam mengoperasikan aplikasi sehingga pengguna dapat dengan mudah menggunakan aplikasi tersebut. 2. Kecepatan Kinerja Berapa lama waktu yang diperlukan untuk mengerjakan suatu tugas. Pengguna menginginkan kecepatan penyajian informasi yang cepat. 3. Tingkat Kesalahan Berapa lama kesalahan dan jenis kesalahan apa saja yang dilakukan oleh pengguna dalam menyesesaikan suatu tugas. Aplikasi harus memiliki tingkat kesalahan yang rendah bila sedang digunakan. 4. Daya Ingat Daya ingat berkaitan dengan waktu belajar. Semakin sering pengguna menggunakan aplikasi, maka semakin mudah pengguna dalam mengingat aplikasi tersebut. Aplikasi juga harus mudah digunakan sehingga pengguna hanya memerlukan waktu belajar yang singkat. http://digilib.mercubuana.ac.id/ 19 5. Kepuasan Subjektif Bagaimana tingkat kepuasan pengguna terhadap berbagai aspek dari aplikasi. Kepuasan subjektif pengguna dapat diketahui dari hasil kusioner terhadap aplikasi tersebut. 2.5 Pengertian Java Java adalah bahasa pemrograman yang dapat dijalankan diberbagai komputer termasuk telepon gengam. Bahasa ini awalnya dibuat oleh James Goslin saat masih bergabung di Sun Microsystem, saat ini merupakan bagian dari Oracle dan dirilis tahun 1995. Bahasa ini banyak mengadopsi sintaksis yang terdapat pada C dan C++ namun dengan sintaksis model objek yang lebih sederhana serta dukungan rutin-rutin aras bawah yang minimal. Aplikasi-aplikasi berbasis Java umumnya dikompilasi ke dalam p-code (bytecode) dan dapat dijalankan pada berbagai Mesin Virtual Java (JVM). Java merupakan bahasa pemrograman yang bersifat umun/non-spesifik (general purpose), dan secara khusus didisain untuk memanfaatkan dependensi implementasi seminimal mungkin. Karena fungsionalitasnya yang memungkinkan aplikasi java mampu berjalan di beberapa platform sistem operasi yang berbeda, Java dikenal pula dengan slogannya, “tulis sekali, jalankan dimanapun”. Saat ini java merupakan bahasa pemrograman yang paling populer digunakan dan secara luas dimanfaatkan dalam pengembangan berbagai jenis perangkat lunak aplikasi ataupun aplikasi berbasis web (Gata, 2012). 2.6 Keunggulan Java Java memiliki beberapa keunggulan bila dibandingkan dengan bahasa pemrograman lainnya. Menurut Hermawan (2004), terdapat 5 aspek yang menjadi keunggulan Java, yaitu : 1. Java bersifat sederhana dan relatif lebih mudah. Bentuk model Java sebagian besar berasal dari bahasa C++. Namun ada beberapa karakteristik yang diperbaiki pada C++, seperti http://digilib.mercubuana.ac.id/ 20 mengurangi kompleksitas beberapa fitur, penambahan fungsionalitas, dan penghilangan beberapa aspek pemicu ketidakstabilan sistem pada C++. 2. Java berorientasi pada objek (Object Oriented). Java merupakan bahasa pemrograman yang berorientasi objek (OOP) dan bukan seperti Pascal, Basic maupun C yang berbasis prosedural. Dalam memecahkan masalah, Java membagi program menjadi objekobjek yang kemudian memodelkan sifat dan tingkah laku masingmasing. Java juga menentukan dan mengatur interaksi antara objek yang satu dengan lainnya. 3. Java bersifat terdistribusi. Pada dekade awal perkembangan PC (Personal Computer), komputer hanya bersifat sebagai workstation tunggal dan tidak terhubung satu sama lain. Sedangkan saat ini, sistem komputerisasi cenderung terdistribusi, mulai dari workstation client, e-mail server, database server, web server, proxy server, dan sebagainya. 4. Java bersifat multiplatform. Sekarang ini mengenal banyak platform sistem operasi, mulai dari Windows, Apple, dan berbagai varian UNIX dan Linux. Pada umunya, program yang dibuat dan di-compile di suatu platform hanya bisa dijalankan di platform tersebut. Java bersifat multiplatform, yakni dapat aplikasi yang dibuat dengan bahasa Java dapat diterjemahkan oleh Java Interpreter pada berbagai sistem operasi. 5. Java bersifat multithread. Thread adalah proses yang dapat dikerjakan oleh program dalam suatu waktu. Java bersifat multithreaded, artinya dapat mengerjakan beberapa proses dalam waktu yang hampir bersamaan. 2.7 Algoritma Fisher Yates Shuffle Algoritma adalah langkah-langkah yang logis dan terstruktur untuk menyelesaikan suatu permasalahan. Yang dimaksud logis dalam hal ini adalah http://digilib.mercubuana.ac.id/ 21 bahwa langkah yang diambil masuk akal dan dapat dinilai benar atau salahnya. Sedangkan terstruktur memiliki pengertian bahwa langkah tersebut susunan sesuai urutan kejadian atau waktu. Shuffle atau dikenal dengan pengacakan merupakan teknik yang digunakan untuk mengacak urutan dari sekelompok angka, teks, atau data. Proses pengacakan saat ini banyak digunakan dalam pengembangan perangkat lunak. Proses pengacakan yang dilakukan terhadap urutan angka, teks, atau data akan menghasilkan permutasi acak. Fisher Yates Shuffle (diambil dari nama Ronald Fisher dan Frank Yates) atau juga dikenal dengan nama Knuth Shuffle (diambil dari nama Donald Knuth), adalah sebuah algoritma untuk menghasilkan suatu permutasi acak dari suatu himpunan terhingga, dengan kata lain untuk mengacak suatu himpunan tersebut. Jika diimplementasikan dengan benar, maka hasil dari algoritma ini tidak akan berat sebelah, sehingga setiap permutasi memiliki kemungkinan yang sama (Ibijola dan Olu, 2012). Proses dasar dari Fisher-Yates Shuffle mirip dengan mengambil kartu dari setumpuk kartu satu demi satu sampai tidak ada yang tersisa. Algoritma FisherYates dianggap oleh banyak orang sebagai metode yang objektif dan optimal untuk menghasilkan permutasi yang benar-benar acak dari himpunan berhingga. Fisher-Yates Shuffle, dalam bentuk aslinya digambarkan pada tahun 1938 oleh Ronald Fisher dan Frank Yates, dalam tabel buku statistik mereka untuk penelitian biologi, pertanian dan medis “Statistical tables for biological, agricultural and medical research”. Versi asli dilaksanakan secara manual, menggunakan pensil dan kertas dengan meja yang telah diberi nomor secara acak untuk menghasilkan kemungkinan acak. Flowchart yang menggambarkan langkah dari Fisher-Yates dalam bentuk aslinya dapat di lihat pada gambar 2.1 : http://digilib.mercubuana.ac.id/ 22 Gambar 2.1 : Flowchart illustrating the steps of Original FYS (Ibijola dan Olu, 2012, p25) Metode dasar yang digunakan untuk menghasilkan suatu permutasi acak untuk angka 1 sampai N adalah sebagai berikut : 1. Tuliskan angka dari 1 sampai N. 2. Pilih sebuah angka acak K diantara 1 sampai dengan jumlah angka yang belum dicoret. 3. Dihitung dari bawah, coret angka K yang belum dicoret, dan tuliskan angka tersebut di lain tempat. 4. Ulangi langkah 2 dan langkah 3 sampai semua angka sudah tercoret. 5. Urutan angka yang dituliskan pada langkah 3 adalah permutasi acak dari angka awal. Pada versi modern digunakan sekarang, angka yang terpilih tidak dicoret, tetapi posisinya ditukar dengan angka terakhir dari angka yang belum terpilih. Berikut ini adalah contoh pengerjaan dari versi modern. Range adalah jumlah angka yang belum terpilih, roll adalah angka acak yang terpilih, scratch http://digilib.mercubuana.ac.id/ 23 adalah daftar angka yang belum terpilih, dan result adalah hasil permutasi yang akan didapatkan. Tabel 2.4 : Contoh Pengerjaan Algoritma Fisher Yates Shuffle Range Roll Scratch Result 12345678 1-8 6 1234587 1-7 2 173458 1-6 6 17345 1-5 1 5734 1-4 3 574 1-3 3 57 1-2 1 7 6 26 826 1826 31826 431826 5431826 Permutasi yang didapatkan adalah 7 5 4 3 1 8 2 6. Penelitian tentang A Simulated Enhancement of Fisher-Yates Algorithm for Shuffling Virtual Card Games using Domain-Specific Data Structures (Ibijola dan Olu, 2012) melakukan implementasi terhadap game virtual card menggunakan algoritma Fisher Yates Shuffle. Penelitian ini menerapkan algoritma Fisher Yates Shuffle untuk melakukan pengacakan terhadap 54 kartu. Artinya, kemungkinan permutasi dari 54 kartu tersebut adalah 54! atau sekitar 2,3 x 1071 urutan yang mungkin. Namun karena game virtual card yang diimplementasikan adalah Whot Cards, maka dari 54 kartu, hanya 12 urutan kartu saja yang dibutuhkan, sehingga permutasinya dapat diurutkan dengan kemungkinan 12! urutan atau 479.001.600 urutan yang mungkin. Yang dimaksud dengan domain-specific data structures dalam penelitian ini adalah struktur data generic list. Peneliti menggunakan struktur data generic list dengan IDE Visual Basic.Net. Generic merupakan object collection pada VB.Net yang sudah typed-safe yang terdiri dari object collection Array, List, Dictionary, http://digilib.mercubuana.ac.id/ 24 Sorted Dictionary, Queue, dan Stack. Dalam penelitian ini object collection yang digunakan adalah List. 2.8 Pengertian Alarm Weker Alarm secara umum dapat didefinisikan sebagai bunyi peringatan atau pemberitahuan. Weker adalah jam dengan perangkat yang dapat dibuat terdengar pada saat ditetapkan di muka yang digunakan untuk membangunkan seseorang (encyclopedia.com, 2009). Jam weker atau beker adalah jam untuk kamar tidur yang dilengkapi dengan alarm (lonceng) yang bisa disetel untuk berbunyi pada jam dan menit yang ditentukan. Jam weker dipakai untuk membangunkan orang yang sedang tidur atau sebagai alat pengukur waktu. Hampir semua jam weker memiliki sebuah tombol yang bisa ditekan agar dering lonceng (bunyi alarm) bisa berhenti. 2.9 Pengertian Handphone Ponsel atau bisa juga disebut Handphone (telepon genggam atau telepon seluler) merupakan telepon yang termasuk dalam sambungan telepon bergerak, dimana yang menghubungkan antar sesama ponsel tersebut adalah gelombanggelombang radio yang dilewatkan dari pesawat ke BTS (Base Tranceiver Station) dan MSC (Mobile Switching Center) yang bertebaran di sepanjang jalur perhubungan kemudian diteruskan ke pesawat yang dipanggil (Saydam, 2005). Telepon seluler (ponsel) atau handphone (HP) atau disebut sebagai perangkat telekomunikasi elektronik yang mempunyai kemampuan dasar yang sama dengan telepon konvensional saluran tetap, namun dapat dibawa ke manamana (portabel, mobile) dan tidak perlu disambungkan dengan jaringan telepon menggunakan kabel (nirkabel, wireless). Saat ini Indonesia mempunyai dua jaringan telepon nirkabel yaitu sistem GSM (Global System for Mobile Telecommunications) dan sistem CDMA (Code Division Multiple Access). 2.10 Pengertian Aplikasi Mobile Aplikasi mobile merupakan aplikasi yang berfungsi untuk memudahkan pengguna dalam mencari informasi, hiburan maupun http://digilib.mercubuana.ac.id/ edukasi dengan 25 menyediakan layanan serupa dengan yang diakses pada PC. Aplikasi ini pada umumnya berukuran kecil, unit perangkat lunak individu dengan fungsi yang terbatas dan mengadopsi dari perangkat lunak yang biasanya terintegrasi atau yang ditemukan pada PC. Tetapi, dengan modifikasi atau pengembangan khusus untuk lingkungan mobile, dengan keterbatasan dan kelebihannya masing-masing (Susanto dan Kamal, 2014). 2.11 Pengertian Android Android adalah sistem operasi untuk handphone yang berbasis Linux. Android menyediakan platform terbuka bagi para pengembang buat menciptakan aplikasi mereka sendiri untuk digunakan oleh bermacam peranti bergerak. Awalnya, Google Inc. membeli Android Inc. pendatang baru yang membuat peranti lunak untuk handphone. Kemudian untuk mengembangkan Android, dibentuklah Open Handset Alliance, konsorsium dari 34 perusahaan peranti keras, peranti lunak, dan telekomunikasi (Safaat, 2012). Pada saat perilisan perdana Android, 5 November 2007, Android bersama Open Handset Alliance menyatakan mendukung pengembangan standar terbuka pada perangkat seluler. Di lain pihak, Google merilis kode-kode Android di bawah lisensi Apache, sebuah lisensi perangkat software dan standar terbuka perangkat seluler. Di dunia ini terdapat dua jenis distributor sistem operasi Android. Pertama yang mendapat dukungan penuh dari Google atau Google Mail Services (GMS) dan kedua adalah yang benar-benar bebas distribusinya tanpa dukungan langsung Google atau dikenal sebagai Open Handset Distribution (OHD). 1. Kelebihan Android Multitasking, dimana Android mampu membuka beberapa aplikasi sekaligus tanpa harus menutup salah satunya. http://digilib.mercubuana.ac.id/ 26 Kemudahan dalam Notifikasi, setiap ada SMS, Email, atau bahkan artikel terbaru dari RSS Reader, akan selalu ada notifikasi di Home Screen Ponsel Android. Akses Mudah terhadap Ribuan Aplikasi Android lewat Google Android App Market, kemudahan bagi pengguna yang gemar install aplikasi ataupun games, lewat Google Android App Market maka bisa mendownload berbagai aplikasi dengan gratis. Pilihan Ponsel yang beranekaragam, ponsel Android, akan terasa “beda” dibandingkan dengan iOS, jika iOS hanya terbatas pada iPhone dari Apple, maka Android tersedia di ponsel dari berbagai produsen, mulai dari Sony Ericsson, Motorola, HTC sampai Samsung. Dan setiap pabrikan ponsel-pun menghadirkan ponsel Android dengan gaya masing-masing, seperti Motorola dengan Motoblur-nya, Sony Ericsson dengan TimeScape-nya. Bisa menginstal ROM yang dimodifikasi, jika tidak puas dengan tampilan standar Android, ada banyak Costum ROM yang bisa dipakai di ponsel Android. Widget, dapat dengan mudah mengakses berbagai setting dengan cepat dan mudah. 2. Kelemahan Android Koneksi Internet yang terus menerus, kebanyakan ponsel berbasis sistem ini memerlukan koneksi internet yang simultan alias terus menerus aktif. Koneksi internet GPRS selalu aktif setiap waktu, itu artinya harus berlangganan paket GPRS yang sesuai dengan kebutuhan. Iklan. Aplikasi di Ponsel Android memang bisa didapatkan dengan mudah dan gratis, namun konsekuensinya di setiap Aplikasi tersebut, akan selalu ada Iklan yang terpampang, entah itu bagian atas atau bawah aplikasi. http://digilib.mercubuana.ac.id/ 27 2.12 Android Studio Android studio merupakan sebuah Integrated Development Environment (IDE) untuk platform Android. Android Studio ini diumumkan pada tanggal 16 Mei 2013 pada Konferensi Google I/O oleh Produk Manajer Google, Ellie Powers. Android studio bersifat free dibawah Apache License 2.0. Android Studio awalnya dimulai dengan versi 0.1 pada bulan Mei 2013, Kemudian dibuat versi beta 0.8 yang dirilis pada bulan Juni 2014. Yang paling stabil dirilis pada bulan Desember 2014, dimulai dari versi 1.0. Berbasiskan JetBrainns’ IntelliJ IDEA, Studio di desain khusus untuk Android Development (developer.android.com, 2016). 2.13 Keunggulan Android Studio Berikut ini beberapa keunggulan yang terdapat pada Android Studio (developer.android.com, 2016) : 1. Live Layout : WYSIWYG Editor - Live Coding - Real time App Rendering. 2. Developer Console : optimization tips, assistance for translation, referral tracking, campaigning and promotions - Usage Metrics. 3. Provision for beta releases and staged rollout. 4. Gradle-based build support. 5. Android - specific refactoring and quick fixes. 6. Lint tools to catch performance, usability, version compatibility and other problems. 7. ProGuard and app-signing capabilities. 8. Template-based wizards to create common Android designs and components. 9. A rich layout editor that allows user to drag-and-drop UI components, option to preview layouts on multiple screen configurations. 10. Support for building Android Wear apps. 11. Built-in support for Google Cloud Platform, enabling integration with Google Cloud Messaging and App Engine. http://digilib.mercubuana.ac.id/ 28 Tabel 2.5 : Fitur-fitur Android Studio (developer.android.com, 2016) Features Android Studio Build system Gradle Maven - based build dependencies YES Build variants and multiple APK generation YES Advanced Android code completion and refactoring YES Graphical layout editor YES APK Signing and keystore management YES 2.14 Android SDK Android SDK merupakan tools bagi para programmer yang ingin mengembangkan aplikasi berbasis google Android. Android SDK mencakup seperangkat alat pengembangan yang komprehensif. Android SDK terdiri dari debugger, libraries, handset emulator, dokumentasi, contoh kode, dan tutorial. Saat ini Android seudah mendukung arsitektur x86 pada Linux (distribusi Linux apapun untuk desktop modern), Mac OS X 10.4.8 atau lebih, Windows XP atau Vista. Persyaratan mencakup JDK, Apache Ant dan Python 2.2 atau yang lebih baru. IDE yang didukung secara resmi adalah Eclipse 3.2 atau lebih dengan menggunakan plugin Android Development Tools (ADT), dengan ini pengembang dapat menggunakan teks editor untuk mengedit file Java dan XML serta menggunakan peralatan command line untuk menciptakan, membangun, melakukan debug aplikasi Android dan pengendalian perangkat Android (misalnya reboot, menginstall paket perangkat lunak dengan jarak jauh). Aplikasi Android dipaketkan ke dalam format .apk dan disimpan pada folder /data/app. Pengguna dapat menjalankan perintah adb root untuk mengakses folder tersebut karena root memiliki izin untuk mengakses folder tersebut (Huda, 2012). http://digilib.mercubuana.ac.id/ 29 2.15 Black Box Testing Pengujian menggunakan sekumpulan aktifitas validasi, dengan pendekatan black box testing. Menurut Rosa dan Shalahuddin (2011), black box testing adalah menguji perangkat lunak dari segi spesifikasi fungsional tanpa menguji desain dan kode program. Pengujian dimaksudkan untuk mengetahui apakah fungsi-fungsi, masukan, dan keluaran dari perangkat lunak sesuai dengan spesifikasi yang dibutuhkan. Pengujian kotak hitam dilakukan dengan membuat kasus uji yang bersifat mencoba semua fungsi dengan memakai perangkat lunak apakah sesuai dengan spesifikasi yang dibutuhkan. Kasus uji yang dibuat untuk melakukan pengujian black box testing harus dibuat dengan kasus benar dan kasus salah. http://digilib.mercubuana.ac.id/