Post on 03-Feb-2018
BAB 2
TINJAUAN PUSTAKA
2.1 Interaksi Manusia Komputer (IMK)
2.1.1 Pengertian IMK
Interaksi manusia dan komputer merupakan ilmu tentang
desain interaktif antara manusia dengan komputer (Schneiderman dan
Plaisant, 2010:32). Interaksi manusia dan komputer adalah sebuah
ilmu yang mempelajari hubungan antara manusia dengan komputer
yang meliputi perancangan, evaluasi, implementasi antarmuka
pengguna komputer agar mudah digunakan oleh pengguna. Ilmu ini
berusaha mencari cara yang paling efisien untuk merancang pesan
elektronik dan juga menjembatani perbedaan antara manusia dan
komputer (Fajar, Dennis, Yogi, 2014:10).
(Alan, Janet, Gregory, Russel, 2004:125) Secara tradisional,
tujuan dari sistem interaksi adalah untuk membantu pengguna dalam
mencapai tujuan dari beberapa domain aplikasi. Sebuah domain
didefinisikan sebagai bidang keahlian dan pengetahuan dalam
beberapa aktivitas dunia nyata. Beberapa contoh domain adalah
desain grafis, authoring dan pengendalian proses di pabrik. Sebuah
domain terdiri dari konsep-konsep yang menyoroti aspek yang
penting. Dalam grafik desain domain, beberapa konsep penting adalah
bentuk geometris, gambar permukaan dan peralatan menggambar.
Sistem dan pengguna masing-masing dijelaskan dengan cara dari
bahasa yang dapat mengekspresikan konsep yang relevan dalam
domain aplikasi.
Sistem bahasa disebut sebagai bahasa inti dan bahasa
Pengguna disebut sebagai bahasa tugas. Bahasa inti menggambarkan
komputasi atribut dari domain yang relevan dengan pusat System,
sedangkan bahasa tugas menjelaskan atribut psikologis dari domain
yang relevan dengan Userstate. Sistem ini dianggap beberapa aplikasi
10
komputerisasi, dalam konteks ini book, tetapi model-model berlaku
untuk aplikasi non-komputer. Ini juga merupakan asumsi umum
bahwa dengan membedakan antara pengguna dan sistem kami
dibatasi untuk aplikasi single-user. Hal ini tidak terjadi. Namun,
penekanannya adalah pada tampilan dari interaksi dari perspektif
pengguna tunggal. Dari sudut pandang ini, lain pengguna, seperti
yang ada di sistem konferensi multi-partai, merupakan bagian dari
sistem (Alan, Janet, Gregory, Russel, 2004:125).
2.1.2 Proses Desain
(Alan, Janet, Gregory, Russel, 2004:196) Ada 4 fase utama
pada proses desain suatu sistem:
Gambar 2. 1 Interaction Design Process
Sumber : Alan, Janet, Gregory, Russel (2004)
● Requirements
Fase pertama sebelum kita membuat suatu sistem, kita harus
mengetahui apa saja yang kita butuhkan dalam suatu sistem tersebut.
Ada beberapa teknik cara mencari tahu apa saja yang dibutuhkan
yaitu : interview orang dengan cara merekamnya, membaca dokumen
yang berhubungan dengan sistem, observasi objek yang telah
ditentukan. Membuat kuesioner yang sesuai dengan keperluan sistem
dapat membantu menemukan suatu masalah.
11
● Analysis
Setelah melakukan observasi dan interview, dibutuhkan cara
untuk mencari permasalahan yang ada dengan cara menganalisis
permasalahan yang ada setelah itu desain dapat dibuat. Menganalisi
isu-isu yang ada membantu desain sebuah sistem lebih baik, sehingga
kegagalan yang sudah pernah terjadi dapat terhindar. Menganalisis
kuesioner juga dapat membantu menemukan masalah.
● Design
Desain sebuah sistem dapat dilakukan setelah melakukan
analisis yang diperlukan. Ini adalah sebuah fase yang paling penting
karena suatu sistem perlu didesain.
● Iteration and Prototyping
Manusia sangat kompleks dan tidak bisa berekspektasi untuk
mendapatkan desain yang langsung benar. Biasanya akan dilakukan
lebih dari sekali dalam mendesain suatu sistem. Maka dari itu, butuh
adanya prototype untuk mengevaluasi hasil desain pertama untuk
melakukan desain yang lebih baik.
● Implementation and deployment
Fase terakir yaitu implementasi dan menyebarkan sistem atau
aplikasi yang telah dibuat. Biasanya adalah menulis sebuah koding,
biasanya membuat suatu perangkat keras, menulis dokumen dan cara
menggunakannya.
(Alan, Janet, Gregory, Russel, 2004:283) Dalam melakukan desain
pada suatu sistem, ada 8 aturan emas yang harus diperhatikan yaitu:
1. Berusaha untuk konsistensi dalam urutan tindakan, tata
letak, terminologi, penggunaan perintah dan seterusnya.
2. Aktifkan sering pengguna untuk menggunakan jalan
pintas, seperti singkatan, urutan tombol khusus dan macro, untuk
melakukan teratur, tindakan akrab lebih cepat.
3. Penawaran umpan balik informatif untuk setiap tindakan
pengguna, pada tingkat yang sesuai dengan besarnya aksi.
12
4. Desain dialog untuk menghasilkan penutupan sehingga
pengguna tahu kapan mereka telah menyelesaikan tugas.
5. Penawaran pencegahan kesalahan dan penanganan
kesalahan sederhana sehingga, idealnya, pengguna akan dicegah
dari membuat kesalahan dan, jika mereka melakukannya,
mereka ditawarkan jelas dan informatif.
6. feedback yang mudah untuk mengurangi kecemasan dan
mendorong eksplorasi, karena pengguna tahu bahwa dia selalu
dapat kembali ke keadaan sebelumnya.
7. Dukungan internal locus of control bahwa pengguna
mengendalikan sistem, yang merespon tindakannya.
8. Kurangi beban memori jangka pendek dengan menjaga
menampilkan sederhana, konsolidasi menampilkan beberapa
halaman dan menyediakan waktu untuk belajar urutan tindakan.
2.2 Rekaya Perangkat Lunak (RPL)
2.2.1 Pengertian RPL
(Sommerville, 2011:7) Perangkat lunak (software) adalah sebuah
program pada suatu komputer dan memiliki dokumentasi. Produk
perangkat lunak biasanya dibuat karena permintaan pelanggan atau
biasanya dibuat untuk permintaan pasar luas. Rekayasa perangkat
lunak (software engineering) adalah satu bidang profesi yang
mendalami cara-cara pengembangan perangkat lunak termasuk
pembuatan, pemeliharaan, manajemen organisasi pengembanganan
perangkat lunak dan manajemen kualitas. Pengubahan perangkat
lunak itu sendiri guna mengembangkan, memelihara, dan membangun
kembali dengan menggunakan prinsip rekayasa untuk menghasilkan
perangkat lunak yang dapat bekerja lebih efisien dan efektif untuk
pengguna. (Sommerville, 2011:8) Dari definisi ini, ditemukan 2 kata
kunci yang penting yaitu :
1. Engineering dicipline, Insinyur membuat suatu program yang
berjalan sesuai permintaan. Mereka menerapkan teori, metode,
13
dan alat-alat dengan pemakaian yang tepat. Namun, mereka
menggunakannya secara selektif dan selalu mencoba untuk
menemukan solusi untuk masalah bahkan ketika tidak ada teori
yang berlaku dan metode. Insinyur juga mengakui bahwa mereka
harus bekerja untuk kendala organisasi dan keuangan sehingga
mereka mencari solusi dalam ini kendala.
2. Semua aspek produksi perangkat lunak Software engineering
tidak hanya peduli dengan proses teknis dari pengembangan
perangkat lunak. Ini juga mencakup kegiatan seperti manajemen
proyek perangkat lunak dan pengembangan alat-alat, metode, dan
teori untuk mendukung produksi perangkat lunak.
Sementara semua proyek perangkat lunak harus dikelola secara
profesional dan dikembangkan, teknik yang berbeda sangat cocok
untuk berbagai jenis sistem. Sebagai contoh, game harus selalu
dikembangkan dengan menggunakan serangkaian prototipe sedangkan
sistem keselamatan kontrol kritis memerlukan spesifikasi lengkap dan
dianalisis untuk dikembangkan. Oleh karena itu, banyak metode dan
metode yang digunakan berbeda-beda setiap pembuatan sebuah
perangkat lunak.
(Sommerville, 2011:6) Ada 2 macam produk perangkat lunak yaitu :
1. Generic Product, perangkat lunak seperti ini biasanya sistem yang
berdiri sendiri yang diproduksi oleh sebuah organisasi atau tim
dan dijual di pasar terbuka untuk semua pelanggan yang dapat
membelinya. Contoh produk yang seperti ini yaitu : database,
word processor, drawing package, dan project management tools.
2. Customized products, perangkat lunak seperti ini biasanya adalah
sistem yang dibuat sesuai dengan permintaan pelanggan. Seorang
pembuat perangkat lunak akan membuat perangkat lunak yang
dikhususkan untuk pelanggan tersebut.
14
2.2.2 Software Process Models
Sebuah proses model perangkat lunak adalah sebuah
representasi dari proses perangkat lunak yang sudah disederhanakan.
Setiap proses model merepresentasi sebuah proses dari perspektif yang
khusus dan biasanya menyediakan sebagian informasi disetiap proses.
Ada 3 macam proses model :
1. Waterfall model
Model air terjun ini mengambil kegiatan proses dasar spesifikasi,
pengembangan, validasi, dan evolusi dan mewakili mereka
sebagai terpisah fase proses seperti spesifikasi persyaratan,
perancangan perangkat lunak, implementasi, pengujian, dan
sebagainya.
2. Incremental development
Pendekatan ini interleaves kegiatan spesifikasi, pengembangan,
dan validasi. Sistem ini dikembangkan sebagai serangkaian versi
(increment), dengan masing-masing versi menambahkan
fungsionalitas ke versi sebelumnya.
3. Reuse-oriented software engineering
Pendekatan ini didasarkan pada keberadaansejumlah besar
komponen reusable. Proses pengembangan sistemberfokus pada
mengintegrasikan komponen ini ke dalam sistem daripada
mengembangkanmereka dari awal.
2.2.3 Extreme Programming (XP)
(Sommerville, 2011:65) Extreme Programming (XP) adalah
mungkin yang paling dikenal dan paling banyak digunakan dari
metode tangkas. Nama itu diciptakan oleh Beck (2000) karena
pendekatan itu dikembangkan dengan mendorong diakui praktik yang
baik, seperti pengembangan berulang, untuk Tingkat 'ekstrim'.
15
Gambar 2. 2 Extreme Programming Cycle
Sumber : Sommerville (2011)
Dalam extreme programming , dilaksanakan secara langsung
sebagai serangkaian tugas. Programmer bekerja berpasangan dalam
mengembangkan suatu sistem untuk setiap tugas sebelum menulis
kode. Semua tes harus berhasil dieksekusi ketika kode baru yang
terintegrasi ke dalam sistem. Gambar 2.2 menggambarkan proses XP
untuk menghasilkan kenaikan dari sistem yang sedang dikembangkan.
Extreme programming melibatkan sejumlah praktik yang
mencerminkan prinsip-prinsip metode tangkas :
1. Pengembangan Incremental didukung melalui kecil, rilis sering
dari sistem. Persyaratan didasarkan pada cerita pelanggan
sederhana atau skenario yang digunakan sebagai dasar untuk
memutuskan apa fungsi harus dimasukkan dalam sistem kenaikan.
2. Keterlibatan Pelanggan didukung melalui keterlibatan terus
menerus dari pelanggan dalam tim pengembangan. Perwakilan
nasabah mengambil bagian dalam pengembangan dan
bertanggung jawab untuk menentukan tes penerimaan untuk
sistem.
3. Orang, bukan proses, didukung melalui program pasangan,
kepemilikan kolektif dari kode sistem, dan proses pembangunan
berkelanjutan yang tidak melibatkan jam kerja yang panjang
berlebihan.
16
4. Perubahan dianut melalui siaran sistem reguler untuk pelanggan,
uji-pertama pengembangan, refactoring untuk menghindari kode
degenerasi, dan integrasi berkelanjutan fungsi baru.
5. Menjaga kesederhanaan didukung oleh refactoring konstan yang
meningkatkan kode kualitas dan dengan menggunakan desain
sederhana yang tidak perlu mengantisipasi masa depan perubahan
pada sistem.
2.3 UML
2.3.1 Pengertian UML
(Sommerville, 2011: 121) Unified Modeling Language (UML)
adalah 13 jenis diagram yang berbeda yang dapat digunakan untuk
memodel sistem perangkat lunak. UML di kembangkan pada 1990-an
untuk pemrograman berorientasi objek di mana notasi berorientasi
objek yang sama terintegrasi untuk menciptakan UML. Sebuah revisi
besar (UML 2) diselesaikan pada tahun 2004. UML secara universal
diterima sebagai pendekatan standar untuk mengembangkan model
sistem perangkat lunak. Banyak jenis lainnya telah diusulkan untuk
pemodelan sistem yang lebih umum.
2.4 Use Case
2.4.1 Pengertian Use Case
Use case adalah sebuah gambaran kasar tentang bagaimana
sebuah sistem berjalan, siapa saja pelaku-pelakunya (actor), dan apa
saja yang dikerjakannya. (Sommerville, 2011:106) Use case
merupakan sebuah teknik requirement discovery yang diperkenalkan
pertama kali pada metode Objectory, yang kini telah menjadi
kerangka dasar dari unified modeling language. Pada dasarnya, Use
case menjelaskan bagaimana pengguna, yang berperan sebagai aktor,
melakukan interaksi apa saja yang memungkinkan terhadap sistem
17
aplikasi AlarmSelfie. Interaksi tersebut dijelaskan dalam bentuk text,
gambar, diagram, dsb.
(Sommerville, 2011:107) Use case didokumentasikan melalui
diagram use case tingkat tinggi. Kumpulan perangkat use case
menggambarkan semua interaksi yang memungkinkan, dan akan
digambarkan dalam syarat sistem. Aktor, yang dapat berupa manusia
maupun sistem lain, digambarkan dengan sosok stik (stick figure).
Setiap kelas interaksi digambarkan dengan elips. Panah dan anak
panah menjelaskan hubungan antara aktor dengan interaksi, serta
bagaimana interaksi tersebut dimulai.
(Sommerville, 2011:108) Skenario dan use case adalah teknik
yang efektif untuk memperoleh kebutuhan dari pemegang kepentingan
yang berinteraksi langsung dengan sistem. Setiap tipe interaksi
direpresentasikan sebagai sebuah use case. Namun, dikarenakan fokus
dari use case sendiri adalah interaksi dengan sistem, use case kurang
efektif untuk memperoleh peraturan, atau bisnis tingkat tinggi dan
ketentuan nonfungsional, atau untuk menemukan persyaratan ruang
lingkup.
UML telah menjadi standar de facto untuk modeling
berorientasi obyek, dan hal itu menjadikan use case dan segala bentuk
perolehan berdasarkan use case digunakan secara luas sebagai syarat
perolehan.
2.4.2 Sejarah Use Case
(Alistair Cockburn, 2002) Use Case pertama kali digunakan
oleh Ivar Jacobson, ketika beliau menuliskan skenario yang
menggambarkan arsitektur sistem AXE milik Ericsson pada tahun
1967. Hasil yang digambarkan Ivar Jacobson disebut sebagai usage
scenario. Usage scenario ini masih bersifat informal dan tidak
beraturan, dan hanya bertujuan untuk memberikan gambaran ide
secara keseluruhan tentang cara kerja sistem AXE. Skenario tersebut
belum menggambarkan struktur yang formal secara jelas.
18
Pada pertengahan tahun 1980-an, Jacobson menyempurnakan
skenario yang beliau kerjakan dan memakai kata “anvendningsfall”,
istilah Swedia yang dapat diartikan sebagai “penggunaan kasus,” atau
dalam bahasa Inggris dapat berarti “situation of usage” atau “usage
case.” Namun kata “usage case” terdengar aneh dalam bahasa
Inggris, sehingga beliau menggantinya dengan “use case.”
2.4.3 Format Use Case
(Alistair Cockburn, 2002) Dari awal mulanya, usage scenario
diciptakan dengan bentuk yang informal. Ketika usage scenario (atau
use case) diubah menjadi lebih formal, hanya sedikit orang yang mau
memakainya. Use case yang informal ini menimbulkan banyak
kesulitan. Tidak ada indikator yang jelas apakah use case yang dibuat
sudah benar, apakah use case sudah meliputi keseluruhan sistem, dan
bagaimana cara menggabungkan use case dalam jumlah yang banyak.
(Sommerville, 2011:107) Tidak ada perbedaan yang jelas
mengenai skenario dan use case. Beberapa orang berpendapat bahwa
setiap use case berisi sebuah skenario tunggal; Sedangkan beberapa
orang lainnya, seperti yang dianjurkan Stevens dan Pooley (2006),
mengenkapsulasi kumpulan skenario ke dalam satu use case. Setiap
skenario merupakan satu rangkaian dari use case.
(Alistair Cockburn, 2002) Bagi beberapa orang, use case
hanyalah nama lain dari skenario, deskripsi singkat dari seseorang
yang menggunakan sistem. Menurut pemikiran ini, use case tidak
memiliki struktur internal. Masih banyak orang yang
merekomendasikan menulis use case dengan struktur yang informal.
Yang terpenting dari sebuah use case bukanlah bagaimana struktur
formalnya, tetapi kegunaan use case tersebut dalam sebuah proyek
atau sistem.
19
Gambar 2. 3 Sebuah Use Case
(Sumber: Dan Pilone, Neil Pitman, 2005:116)
Gambar 2. 4 Diagram Use Case
(Sumber: Dan Pilone, Neil Pitman, 2005:121)
2.5 Activity Diagram
2.5.1 Pengertian Activity Diagram
(Sommerville, 2011:120). Activity Diagram adalah sebuah
diagram yang menampilkan segala jenis kegiatan yang terlibat pada
sebuah proses atau pemprosesan data ke dalam bentuk diagram.
Diagram ini merepresentasikan skenario dan segala aktifitas yang
berjalan di dalamnya. State merupakan tampilan dari situasi - situasi
yang terjadi ketika sistem dijalankan. Transition menampilkan
aktifitas yang dijalankan untuk berpindah atau bertransisi dari satu
state ke state yang lain.
20
(Dan Pilone, Neil Pitman, 2005:152) Membuat model aktivitas
melalui Activity Diagram bertujuan untuk menjelaskan bagaimana
sebuah program (atau sebuah sistem) akan dieksekusi, bagaimana alur
dan sifat dari sistem tersebut, bukan bagaimana sistem itu disusun.
Bila dibandingkan dengan diagram UML yang lain, ruang lingkup
dari activity diagram lebih luas, karena tidak hanya mencakup
software modeling, activity diagram cocok untuk membuat model
perilaku di bidang apapun, seperti model proses bisnis hingga alur
kerja sebuah sistem.
Gambar 2. 5 Activity Diagram Sederhana
(Sumber: Dan Pilone, Neil Pitman, 2005:155)
(Sommerville, 2011:123) Gambar 2.5 adalah sebuah contoh
dari UML activity diagram. Diagram aktivitas menunjukkan aktivitas
yang membangun sebuah proses sistem dan jalur kendali dari suatu
aktivitas ke aktivitas lainnya. Awal mula dari proses digambarkan
dengan sebuah lingkaran penuh, dan diakhiri dengan sebuah lingkaran
penuh dengan tambahan garis lingkaran di luarnya. Kotak dengan siku
yang melengkung menggambarkan aktivitas. Anda juga dapat
memasukkan objek pada diagram aktivitas. Kotak dengan siku
menunjukkan sistem yang berjalan pada aktivitas yang berhubungan
dengan sistem tersebut.
21
Gambar 2.5 terdapat garis dengan panah yang menunjukkan
jalur kerja dari suatu aktivitas ke aktivitas lain. Sebuah garis tebal
digunakan untuk menunjukkan koordinasi aktivitas. Ketika banyak
aktivitas menunjuk ke garis tebal tersebut, berarti semua aktivitas
tersebut harus selesai terlebih dahulu untuk melanjutkan sistem.
Ketika garis tebal menunjuk ke beberapa aktivitas, berarti aktivitas ini
bisa dijalankan secara parallel.
Garis dengan panah juga dapat mengandung kata-kata yang di
kurung dengan kurung siku, dimana kata-kata tersebut menunjukkan
kondisi ketika jalur tersebut di lalui, contohnya [dangerous] dan [not
dangerous]. Kondisi tersebut juga diindikasikan melalui sebuah if
yang di gambarkan dengan bentuk lupis.
Gambar 2. 6 Activity Diagram
(Sumber: Sommerville, 2011:123)
22
2.6 Sequence Diagram
2.6.1 Pengertian Sequence Diagram
(Sommerville, 2011:126) Kegunaan utama Sequence diagram
pada UML adalah untuk menggambarkan interaksi antara aktor dan
objek pada sebuah sistem dan juga interaksi antara objek itu sendiri.
Sequence diagram, menunjukkan sequence (urutan) interaksi yang
terjadi pada sebuah usecase. Gambar 2.5 menunjukkan contoh sebuah
sequence diagram. Diagram tersebut menunjukkan proses sequence
diagram pada use case view patient information, dimana seorang
resepsionis dapat melihat informasi mengenai data pasien.
2.6.2 Tujuan Sequence Diagram
Sequence diagram termasuk di dalam kategori interaction
diagram, dan pada interaction diagram ini, segala jenis diagramnya
ditujukan untuk menggambarkan bagaimana komunikasi yang terjadi
antar obyek satu sama lain (Dan Pilone, Neil Pitman, 2005:179),
sesuai dengan tujuan awal dirilisnya UML 2.0, yakni bagaimana
caranya agar diagram yang digambarkan tidak hanya diagram relasi
struktural, melainkan juga diagram berupa alur kejadian, dan alur
kejadian tersebut kini dapat diwakili oleh sequence diagram.
Kemampuan dalam menggambarkan alur kontrol inilah yang menjadi
bagian terbesar dari UML 2.0, dan membedakan versi ini dengan
UML versi pendahulunya.
Hal yang dimuat dan ditekankan pada sequence diagram
adalah komunikasi yang terjadi antar obyek, bukan manipulasi data
yang terjadi seiring dengan adanya komunikasi tersebut. sequence
diagram difokuskan kepada pesan yang disampaikan dalam
komunikasi tersebut antar obyek yang bersangkutan dan bagaimana
pesan yang disampaikan tersebut dapat dihubungkan untuk
menjalankan fungsi-fungsi operasi yang ada, dan pada wadah yang
23
sama pula struktur obyek yang berhubungan ditampilkan pada
diagram ini.
Detil dari sebuah interaksi dapat diungkapkan dan
digambarkan dengan berbagai cara, namun sequence diagram lah cara
yang paling sering digunakan. Berbagai jenis interaksi lainnya
diungkapkan dengan interaction overviews, communication diagrams,
timing diagrams, dan interaction tables. Oleh karena sequence
diagram adalah cara yang paling sering digunakan, setiap konsep yang
ada di dalam suatu sistem dituliskan di dalam diagram ini.
2.6.3 Susunan Sequence Diagram
Simbol yang selalu digunakan untuk menunjukkan suatu
interaksi adalah sebuah persegi besar dengan kata kunci “sd” diikuti
oleh nama interaksi tersebut di dalam sebuah bangun pentagonal, di
sudut kiri atas. Contoh dari sequence diagram ini ditunjukkan di
dalam Gambar 2.7.
Gambar 2. 7 Sequence Diagram
(Sumber: Sommerville, 2011:127)
24
Gambar 2.7 adalah contoh kedua sequence diagram dari
sistem yang sama yang menggambarkan dua fitur tambahan. Diagram
di bawah merupakan komunikasi langsung antara pelaku dalam sistem
dan penciptaan benda-benda sebagai bagian dari urutan operasi.
Dalam contoh ini, sebuah objek dibuat untuk menyimpan data
ringkasan yang akan di-upload ke PRS (sistem catatan pasien).
Berikut adalah penjelasan mengenai sequence diagram dibawah:
1. Resepsionis log on ke PRS.
2. Ada dua pilihan yang tersedia. Ini memungkinkan transfer
langsung diperbarui informasi pasien dengan PRS dan
transfer data kesehatan ringkasan dari MHC-PMS ke PRS.
3. Dalam setiap kasus, izin resepsionis diperiksa
menggunakan otorisasi sistem.
4. Informasi pribadi dapat ditransfer langsung dari objek
antarmuka pengguna untuk PRS. Atau, rekor ringkasan
dapat dibuat dari database dan catatan yang kemudian
ditransfer.
5. Setelah menyelesaikan transfer, PRS mengeluarkan pesan
status dan pengguna log off.
25
Gambar 2. 8 Sequence Diagram Dengan Alternate
(Sumber: Sommerville, 2011:128)
2.7 Class Diagram
2.7.1 Pengertian Class Diagram
(Sommerville, 2011:129).Class diagram digunakan ketika
mengembangkan sebuah object-oriented system untuk menunjukkan
kelas-kelas dalam sebuah sistem beserta asosiasi antar kelas. Sebuah
kelas objek dapat dianggap sebagai definisi umum dari sebuah class.
Sebuah asosiasi adalah hubungan antara kelas-kelas yang
mengindikasikan bahwa terdapat sebuah hubungan antara kelas-kelas
26
tersebut. Dengan kata lain, tiap kelas bisa memiliki informasi
mengenai kelas yang ter-asosiasi.
2.7.2 Susunan Class Diagram
Class diagram terdiri dari obyek - obyek, setiap obyeknya
dilambangkan dalam bangun kotak, dan setiap kotaknya
melambangkan satu class. Di dalam kotak tersebut terdapat
keterangan - keterangan yang menerangkan class tersebut, berupa
judul class, atribut, dan metode operasi yang dimiliki class tersebut.
Selain keterangan dari masing - masing class, class diagram juga
menggambarkan bagaimana relasi antar class, serta sifat relasinya.
Judul class dituliskan dengan huruf kapital pada awal dari
setiap kata pada judul class, dan seluruh katanya ditulis tebal (bold).
Di bawah judul class terdapat garis pemisah yang memisahkan judul
class dengan atribut class yang terdapat di bawahnya.
(Sumber: Sommerville, 2011:130)
Gambar 2.9 diatas menunjukkan asosiasi antar kelas dengan
angka (1,4) dan simbol (*). Tiap angka dan simbol menunjukkan
Gambar 2. 9 Class Diagram Sederhana
27
berapa banyak objek yang terlibat dalam asosiasi. Jumlah objek yang
terlibat dapat beragam, mulai dari 1 hingga tak terhngga atau *.
Di bawah atribut class terdapat garis pemisah, dan diikuti oleh
daftar metode - metode operasi yang dimiliki oleh class yang
bersangkutan. Segala bentuk fungsi dan operasi yang dimiliki oleh
class dimuat di sini. Metode - metode dituliskan dalam bentuk nama
dari fungsi, dan parameter yang dimiliki fungsi tersebut. Dalam
beberapa kasus, terkadang sifat dari metode juga dituliskan, seperti
private, public, dan protected. Fungsi private dilambangkan oleh
tanda minus (-), fungsi public dilambangkan oleh tanda plus (+).
• +(Public) , Semua kelas yang dapat melihat kelas tersebut bisa
melihat atributnya.
• #(Protected) , Kelas dan semua turunannya bisa melihat
atributnya.
• -(Private) , Hanya kelas itu sendiri yang bisa melihat
atributnya.
Gambar 2. 10 Class Diagram Dengan Metode
(Sumber: Rumbaugh, Jacobson, Booch, 2004: 207-208)
(Dan Pilone, Neil Pitman, 2005:47) Garis hubungan antar
kelas memiliki berbagai jenis bentuk, dengan arti yang berbeda-beda
pula. UML menyediakan beberapa cara untuk mewakili hubungan
antara kelas. Masing-masing dari hubungan UML mewakili berbagai
jenis hubungan antara kelas dan memiliki ketelitian yang tidak
sepenuhnya dapat ditangkap dalam spesifikasi UML. Ada 5 jenis
28
hubungan antar kelas yaitu, Dependency, Association, Aggregation,
Composition, dan Generalization.
1. Dependency
Hubungan yang paling lemah antara kelas
adalah hubungan ketergantungan (Dependency).
Ketergantungan antara kelas berarti bahwa satu kelas
menggunakan, atau memiliki pengetahuan, dari kelas
lain. Hal ini biasanya hubungan sementara, yang
berarti kelas tergantung singkat berinteraksi dengan
kelas sasaran tetapi biasanya tidak mempertahankan
hubungan dengan itu untuk waktu yang lama.
Dependensi biasanya dibaca sebagai "...
menggunakan ...". Sebagai contoh, jika ada kelas
bernama Window yang mengirimkan sebuah kelas
bernama WindowClosingEvent, dapat dikatakan
bahwa "Window menggunakan kelas
WindowClosingEvent."
2. Association
Hubungan Asosiasi (Association) lebih kuat
dari pada hubungan ketergantungan (Dependency) dan
biasanya menunjukkan bahwa satu kelas
mempertahankan hubungan dengan kelas lain selama
jangka waktu. Jalur hidup dari dua objek dihubungkan
Gambar 2. 11 Dependency Relationship
29
oleh hubungan asosiasi mungkin tidak terikat (yang
berarti satu dapat dihancurkan tanpa harus
menghancurkan yang lain).
Asosiasi biasanya dibaca sebagai "... memiliki
...". Sebagai contoh, jika ada kelas bernama Window
yang memiliki referensi ke kursor mouse saat ini, Anda
akan mengatakan "Window memiliki kursor". Dalam
hal ini, Jendela tidak memiliki Kursor; Kursor
merupakan bagian dari semua aplikasi dalam sistem.
Namun, Window memiliki referensi untuk itu sehingga
Window dapat menyembunyikannya, mengubah
bentuk, dan sebagainya.
Hubungan asosiasi memiliki penanda lain yaitu
Multiplicity. Karena hubungan asosiasi biasanya
mewakili hubungan yang bertahan lama, mereka sering
digunakan untuk menunjukkan atribut kelas. Berapa
banyak bagian dari kelas tertentu yang terlibat dalam
suatu hubungan dapat diungkapkan. Jika tidak
ditentukan nilainya, maka banyaknya bagian yang
berhubungan diasumsikan 1. Jika hubungannya
menggunakan lebih dari 1 bagian, maka nilai di
tentukan.
Gambar 2. 12 Association Relationship
30
3. Aggregation
Hubungan Agregasi () adalah versi lebih kuat
dari asosiasi. Tidak seperti asosiasi, agregasi biasanya
menyiratkan kepemilikan dan dapat menyiratkan
hubungan antar bagian. Agregasi biasanya dibaca
sebagai "... memiliki sebuah ...". Sebagai contoh, jika
ada kelas bernama Window yang disimpan posisi dan
ukuran di kelas Rectangle, dapat dikatakan "Jendela
memiliki sebuah Rectangle." Persegi panjang dapat
dibagi dengan kelas lain, tapi Window memiliki
hubungan intim dengan Rectangle. Hal ini agak
berbeda dari asosiasi dasar karena memiliki konotasi
kuat. Namun, itu bukan hubungan terkuat antara kelas.
4. Composition
Hubungan Komposisi (Composition)
merupakan hubungan yang sangat kuat antara kelas.
Komposisi digunakan untuk menangkap hubungan
keseluruhan-bagian. "Bagian" dari hubungan dapat
terlibat dalam satu hubungan komposisi pada waktu
tertentu. Masa pakai bagian yang terlibat dalam
Gambar 2. 13 Multiplicity
Gambar 2. 14 Aggregation Relationship
31
hubungan komposisi hampir selalu terkait; jika lebih
besar, pemilik bagian hancur, ini hampir selalu
menghancurkan “Bagian”. UML tidak memungkinkan
bagian yang akan dikaitkan dengan pemilik yang
berbeda sebelum dihancurkan, sehingga ia
mempertahankan keberadaannya, tetapi ini biasanya
termasuk sebuah pengecualian aturan.
Hubungan komposisi biasanya dibaca sebagai
"... merupakan bagian dari ...", yang berarti Anda perlu
membaca komposisi dari bagian ke keseluruhan.
Misalnya, jika dikatakan bahwa Window di sistem
harus memiliki Titlebar, dapat diwakili ini dengan
kelas bernama Titlebar bahwa "... adalah bagian dari
..." kelas bernama Window.
5. Generalization
Hubungan generalisasi (Generalization)
menyampaikan bahwa target hubungan adalah umum,
atau kurang spesifik, bagian sumber kelas atau
antarmuka. Hubungan Generalisasi sering digunakan
untuk menarik kesamaan antara perbedaan klasifikasi.
Sebagai contoh, jika ada kelas bernama Cat dan kelas
bernama Dog, dapat dibuat generalisasi dari kedua
kelas yang disebut Animal.
Generalisasi biasanya dibaca sebagai "... adalah
...", mulai dari kelas yang lebih spesifik dan membaca
Gambar 2. 15 Composition Relationship
32
arah kelas umum. Kembali ke Cat dan contoh Dog,
dapat dikatakan "Cat ... adalah ... Animal".
2.8 Computer Vision
2.8.1 Penjelasan Computer Vision
(Bradski, Kaebler, 2008:2) Penglihatan komputer(Computer
Vision) adalah perubahan data dari gambar diam atau gambar video
menjadi suatu bentuk lain atau keputusan baru. Semua perubahan
dilakukan dengan menghasilkan suatu tujuan tertentu. Bentuk
perubahan baru yang di maksud bisa berarti merubah gambar
berwarna menjadi gambar hitam-putih atau penghilangan pergerakan
kamera dari sebuah urutan gambar.
Manusia adalah mahluk visual, penglihatan yang sempurna
membuat computer vision terlihat sangat mudah, ternyata tidak
seperti itu. Mesin menerima sebaris angka-angka dari kamera atau
pun device lain, dan hanya angka-angka saja. Seperti pada gambar
2.1, dengan mata manusia gambar tersebuat sangat mudah di
identifikasikan sebagai sebuah mobil, tetapi melalu kamera digital,
Gambar 2. 16 Generalization Relationship
33
tampilan kaca samping mobil di terjemahkan dalam bentuk informasi
berupa angka-angka demikian.
Sumber : Learning OpenCV (2008).
2.8.2 Image Processing
(Bradski, Kaebler, 2008:109) Pemprosesan Gambar(Image
Processing) adalah operasi struktur gambar di tingkat lebih tinggi,
dalam hal mencapai sebuah tugas yang memiliki dasar konteks grafik,
gambar visual. (Bradski, Kaebler, 2008:iv) Pemprosesan gambar
meliputi smoothing, image morphology, flood fill, resize, image
pyramids, threshold, dan exercises. Program yang sedang di bangun
ini di kembangkan dengan 2 jenis pemprosesan gambar, yaitu
smoothing dan threshold. Penghalusan Gambar (smoothing) atau
sering disebut blurring adalah pemprosesan gambar yang paling
sering digunakan karena cara penggunaannya yang simple dan sangat
bermanfaat. Pada dasarnya, penghalusan gambar memiliki banyak
manfaat, tetapi hal paling penting dari penghalusan gambar adalah
untuk pengurangan noise atau artefak kamera. Penghalusan gambar
Gambar 2. 17 Komputer melihat kaca samping mobil sebagai sebaris angka
34
juga berperan penting dalam pengurangan resolusi secara prinsip dan
dapat ditemukan pada image pyramids processing.
(Bradski, Kaebler, 2008: 135) Threshold merupakan
pemprosesan gambar dengan memberi lapisan penyaring gambar
berguna sebagai penghilang piksel yang tidak diinginkan dalam
rentang nilai tertentu, selagi mempertahankan yang lainnya.
2.8.3 OpenCV
(Bradski, Kaebler, 2008: 1) OpenCV adalah sebuah library
open source untuk pembelajaran computer vision yang ditulis dalam
bahasa pemrograman C dan C++ dan biasanya digunakan pada
operating system linux, windows, dan Mac OS X, dan sekarang sedang
dikembangkan dalam bahasa pemrograman Python, Ruby, Matlab,
dan bahasa pemrograman lainnya.
OpenCV didisain untuk efisiensi perhitungan dan berfokus
pada aplikasi real-time. Tujuan dari dibuatnya OpenCV adalah
bantuan bagi programmer yang ingin membangun aplikasi yang
cukup canggih dengan computer vision dalam waktu yang relative
singkat. Pada library OpenCV terdapat lebih dari 500 fungsi yang
mencakup banyak bidang dalam pengaplikasian computer vision
termasuk dalam program inspeksi produk pabrik, penggambaran
medikal, keamanan, desain antar muka pengguna, kalibrasi kamera,
stereo vision, dan robotics.
Masih banyak fungsi – fungsi dan algoritma – algoritma yang
menyediakan fitur face detection selain OpenCV, seperti algoritma
KLT, FaceDetect dari library Android, maupun algoritma – algoritma
lainnya. Namun library OpenCV merupakan salah satu algoritma yang
cukup akurat, serta disebarkan secara open source membuat algoritma
ini dipakai dalam berbagai macam pengembangan aplikasi, termasuk
pengembangan aplikasi ini.
Algoritma face detection yang disediakan OpenCV
menggunakan training set dari file berformat .xml yang merupakan
35
data training yang diberikan oleh OpenCV sendiri dan telah siap
untuk dipakai. Pengembang yang memakai fungsi face detection dari
OpenCV tidak perlu men-training fungsi face detection tersebut dan
dapat langsung memakainya untuk mendeteksi wajah atau objek
lainnya.
2.8.4 Face Detection atau Haar Classifier
(Bradski, Kaebler, 2008: 506) Face Detection atau Haar
Classifier merupakan suatu algoritma computer vision yang pada
awalnya dikhususkan untuk mendeteksi wajah manusia. Namun,
seiring pesatnya perkembangan computer vision, algoritma ini sudah
banyak di kembangkan menjadi aplikasi dengan fungsi yang berbeda
seperti pendeteksi sepeda, mobil, tubuh manusia, dan objek-objek
lainnya. Seperti teknologi pada umumnya, perkembangan jaman
membuat banyak teknologi tersingkirkan dari dunia yang semakin
modern ini. Demikian juga untuk algoritma face detection ini yang
sudah di kembangkan ke berbagai bentuk dan fungsi, semakin lama
semakin di tinggalkan dan hilang.
Face Detection pada OpenCV di kembangkan pertama kali
oleh Paul Viola dan Michael Jones dan awalnya di kenal sebagai
Viola-Jones detector. Setelah itu, algoritmanya di kembangkan
kembali oleh Rainer Lienhart dan Jochen Maydt, dan kemudian nama
algoritma Face Detection dari OpenCV di ubah menjadi OpenCV
“Haar Classifier”. OpenCV juga membuat algoritma ini menjadi
object detection karena algoritmanya memungkinkan pengguna untuk
melatih dan menyimpan objek baru untuk kemudian dideteksi.
Berikut adalah algoritma untuk face detection :
37
Dimana menyatakan apakah nilai (v) dari fitur tertentu (f) di
atas atau di bawah threshold (t). Ada tidaknya wajah di tentukan dari
jawaban “ya” atau “tidak”.
Fungsi sign mengembalikan nilai -1 jika angkanya kurang dari
0, 0 jika angka sama dengan 0, dan +1 jika angka merupakan bilangan
positive dimana angka tersebut di simpan dalam F. Threshold (tl) dari
f1 yang mengklasifikasi input, lalu hasil errornya digunakan untuk
menghitung weighted vote (w1). Setiap fitur vector atau data point di
timbang kembali (reweighted) rendah atau tinggi sesuai dengan
ketepatan dalam mengklasifikasi pada iterasi classifier. Ketika node
telah mempelajari cara ini, data yang berhasil melalu proses ini
digunakan untuk melatih node selanjutnya. Dan berikut kode untuk
menerapkan algoritma face detection kedalam program:
38
2.9 AndroidSDK
2.9.1 Sejarah Android
(Cadenhead, 2012:343)Android pertama kali diluncurkan oleh
google pada tahun 2007, dua tahun setelah mendapatkan teknologi ,
sebagai industri yang luas yang memiliki usaha untuk membuat
sebuah telepon genggam yang canggih pada platform yang open-
source. Tidak seperti sistem operasi RIM Blackberry atau Apple,
Android digunakan oleh nama besar seperti teknologi Google, Intel,
Motorola, Nvidia, Samsung, dan perusahaan lainnya.
Google melepaskan Android Software Development Kit(SDK),
dengan gratis untuk mengembangkan aplikasi Android. Smartphone
pertama yang menggunakan Android adalah T-Mobile G1, yang
keluar pada bulan juni 2008.
(Cadenhead, 2012:344) Menulis aplikasi Android lebih mudah
jika Anda menggunakan Integrated Development Environment (IDE)
yang dilengkapi untuk mendukung SDK Android. IDE yang paling
populer untuk pemrograman Android adalah Eclipse, yang juga gratis
dan open source. Penghubung Android untuk Eclipse membuat fungsi
SDK mulus di dalam IDE.
39
(Fajar, Dennis, Yogi, 2014:22) Android berkembang pesat
karena Android merupakan platform yang sangat lengkap baik dari
segi sistem operasinya, aplikasi dan tools pengembangannya. Market
yang menyimpan berbagai aplikasi dan dukungan dari komunitas
open source di dunia juga merupakan alasan android berkembang
sampai saat ini.
2.9.2 Penjelasan Android
Android adalah sebuah sistem yang sistem operasi berbasis
Java yang berjalan di kernel linux 2.6. Sistem ini sangat ringan dan
penuh dengan fitur-fitur yang baik (DiMarzio,2008:6). Aplikasi
Android dikembangkan dengan menggunakan Java dan dapat dengan
mudah dihubungkan dengan platform baru. (Cadenhead, 2012:345)
Aplikasi Android adalah program Java yang menggunakan kerangka
aplikasi, satu set kelas dan file aplikasi memiliki kesamaan. Kerangka
itu mewujudkan seperangkat aturan untuk bagaimana aplikasi harus
disusun memesan untuk berjalan dengan baik pada perangkat
Android.
2.10 Eclipse
2.10.1 Penjelasan Eclipse
(Adhari, 2012:43) Eclipse adalah sebuah IDE (Integrated
Development Environment) untuk mengembangkan perangkat lunak
dan dijalankan di semua platform. Eclipse sendiri juga merupakan
sebuah komunitas open source, yang memiliki proyek 43 yang
berfokus pada membangun sebuah platform pengembangan terbuka
dari extensible Framework, tools dan runtime untuk membangun,
menyebarkan dan mengelola perangkat lunak di seluruh siklus hidup
perangkat lunak tersebut.
Umumnya Eclipse digunakan untuk membuat sebuah program
yang menggunakan bahasa pemrograman Java. Namun, Eclipse juga
40
bisa digunakan untuk penggunaan bahasa pemrograman lainnya
seperti C, C++, COBOL, Perl, PHP, Python, dan sebagainya.
2.11 Object Oriented Programming
(Marrer, 2009:30) Object Oriented Programming (OOP) adalah cara
berfikir berdasarkan logika untuk menghadapi masalah – masalah yang
berada pada sistem yang akan diatasi dimana objek adalah suatu entitas
tunggal yang memiliki kombinasi struktur data dan fungsi tertentu. OOP
dapat diterapkan pada perancangan sistem perangkat lunak (software),
perangkat keras (hardware), serta sistem informasi (information system).
Konsep yang terdapat dalam OOP diantaranya adalah sebagai berikut :
a. Object (Objek)
Objek adalah konsep yang ada di dunia nyata yang penting bagi
aplikasi. Biasanya berbentuk benda, kejadian, orang.
b. Class (Kelas)
Kelas adalah kumpulan objek dengan atribut yang serupa. Objek yang
serupa berada dikelas yang sama, sehingga membentuk sebuah kelas.
c. Atribute (Atribut)
Atribut adalah data yang dimiliki objek dalam kelas.
Menurut Deitel OOP mempunyai beberapa sifat yaitu :
a. Inheritance
(Deitel, 2007:522) Inheritance adalah bentuk penggunaan kembali
perangkat lunak, membuat sebuah kelas yang menyerap kelas yang sudah ada
dan perilaku dan sifatnya juga akan menyerupai kelas yang sudah ada.
Software reusability menghemat waktu selama pengembangan program.
Penggunaan kembali terbukti menhasilkan perangkat lunak berkualitas tinggi,
yang meningkatkan kemungkinan bahwa sistem akan dilaksanakan secara
efektif.
41
b. Encapsulation
Enkapsulasi adalah pengemasan data dan fungsi ke dalam
komponen tunggal. Fitur enkapsulasi didukung menggunakan kelas
dalam kebanyakan bahasa pemrograman berorientasi objek, meskipun
alternatif lain juga ada. Hal ini memungkinkan menyembunyikan
properti secara selektif dan metode dalam suatu objek dengan
membangun dinding tak tertembus untuk melindungi kode dari korupsi
yang disengaja.
c. Polymorphism
Polimorfisme memungkinkan kita untuk "Program secara
umum" daripada "Program secara spesifik" .Secara khusus,
polimorfisme memungkinkan kita untuk menulis program yang
memproses objek kelas yang merupakan bagian dari hirarki kelas yang
sama seolah-olah mereka semua objek dari hirarki ini kelas dasar.
Seperti yang kita akan segera lihat, polimorfisme bekerja dari kelas
dasar menangani pointer dan baseclass referensi menangani, tetapi tidak
dari nama menangani. Dengan polimorfisme, kita dapat merancang dan
mengimplementasikan sistem yang mudah diperluas. Kelas baru dapat
ditambahkan dengan sedikit atau tanpa modifikasi pada bagian umum
program, selama kelas baru merupakan bagian dari hirarki warisan yang
program proses umum.
2.12 Java
2.12.1 Penjelasan Java
(Neimeyer, Leuck, 2013: 2)Java adalah suatu bahasa
pemrograman yang di kembangkan pertama kali oleh Sun
Microsystems dan di bawah pengawasan James Gosling dan Bill Joy.
Java di disain sedemikian mungkin agar menjadi bahasa programing
yang cukup aman dalam melintasi jaringan, dan cukup kuat untuk
memperbaiki kode yang di eksekusi. Oleh karena itu, Java sangat
42
berperan dalam perkembangan Internet dan membawa dunia seperti
sekarang.
Projek Java dimulai dari tahun 1990 ketika Windows sedang
memasuki masa kejayaannya dalam bidang komputerisasi. Tim
pengembang Java dari Sun Microsystem mengembangkan java lebih
baik lagi di Aspen, Colorado. Lalu projek tersebut di beri nama Sun
Aspen Smallworks. Dikarenakan James Gosling merupakan anggota
pertama dari tim java yang ke Aspen, selanjutnya ia di kenal sebagai
father of Java.
2.12.2 Alarm Manager
(Komatineni, MacLean, 2012: 539) Alarm Manager adalah
suatu kelas dalam java khususnya java Android yang berfungsi
sebagai trigger atau pemanggil aplikasi lain pada saat-saat tertentu,
sesuai dengan keinginan dan tujuan dari di panggilnya kelas tersebut.
Suatu aplikasi, kelas, ataupun fungsi dapat di panggil oleh alarm
manager di dengan waktu yang spesifik maupun berinterval.
Bagaimanapun juga, kelas ini tidak dapat di lakukan atau di jalankan
tanpa pasangannya, yaitu broadcast receiver.
Broadcast Receiver adalah sebuah kelas atau fungsi yang
dibuat untuk menerima kiriman perintah dari alarm manager. Perintah
yang dikirim berupa data waktu yang di minta alarm manager untuk
menjalankan fungsi tertentu. Berikut adalah tahapan untuk
menjalankan kelas alarm manager :
1. Akses alarm manager.
2. Atur waktu.
3. Buat kelas broadcast receiver.
4. Buat pending intent yang di gunakan untuk intent / memanggil
fungsi yang di inginkan saat waktu sesuai.
5. Gunakan waktu pada tahap 2 dan pending intent pada tahap 4
untuk menyalakan alarm.
6. Lihat receiver dari tahap 3 menerima data panggilan