BAB 2 LANDASAN TEORI
2.1 Teori-Teori Dasar / Umum Berikut merupakan teori – teori dasar atau umum yang menjadi landasan teori yang digunakan dalam pengembangan aplikasi: 2.1.1
Interaksi Manusia dan Komputer (IMK) Beberapa teori – teori tentang Interaksi Manusia dan Komputer yang digunakan dalam pengembangan aplikasi: 2.1.1.1 Pengertian IMK Berdasarkan Maheswari, Sharma, dan Khurana (2012), Interaksi Manusia Komputer atau Human Computer Interaction (HCI) adalah ilmu yang berkaitan dengan perancangan, evaluasi, dan implementasi untuk sistem komputer interaktif yang digunakan manusia.
2.1.1.2 Lima Faktor Manusia Terukur Berdasarkan pendapat Shneiderman dan Plaisant (2010), dalam merancang sistem sebelumnya harus memperhatikan 5 (lima) faktor berikut: 1. Waktu belajar Waktu yang dibutuhkan seorang pengguna aplikasi untuk belajar menggunakan aplikasi tersebut.
8
9 2. Kecepatan kinerja Waktu yang dibutuhkan oleh pengguna aplikasi untuk melakukan suatu tugas. 3. Tingkat kesalahan pengguna Seberapa banyaknya dan apa jenis kesalahan yang dilakukan oleh pengguna aplikasi. 4. Daya ingat Pengguna aplikasi dapat mengingat pengetahuan yang dimiliki tentang aplikasi tersebut dalam jangka waktu tertentu. 5. Kepuasan subjektif Seberapa besar ketertarikan pengguna aplikasi terhadap aspek – aspek interface aplikasi tersebut.
2.1.1.3 Eight Golden Rules (Delapan Aturan Emas) Berdasarkan pendapat Shneiderman dan Plaisant (2010) terdapat 8 (delapan) aturan yang digunakan untuk merancang user interface: 1.
Berusaha untuk konsistensi Konsisten di berbagai situasi baik dalam istilah-istilah yang digunakan pada setiap menu, pesan bantuan, dan dalam penggunaan tampilan seperti jenis tulisan, warna, dan layout.
10 2.
Memenuhi kegunaan yang universal Mengetahui kebutuhan yang berbeda pada masing-masing pengguna,
seperti
pengguna,
teknologi
kemampuan
perbedaan
pengguna.
yang
umur
pengguna,
digunakan
Berdasarkan
dan
kondisi
perbedaan
kemampuan
dari
pengguna terbagi menjadi 3 (tiga) jenis yaitu: a. Novice atau First-Time-Users yang membutuhkan umpan balik yang informatif. b. Knowledgeable Intermittent Users yang membutuhkan fasilitas bantuan yang jelas. c. Expert Frequent Users yang membutuhkan umpan balik yang singkat dan dapat menggunakan shortcut. 3.
Memberikan umpan balik yang informatif Setiap tindakan
yang dilakukan oleh pengguna harus
mendapatkan umpan balik yang memudahkan pengguna dalam mengetahui akibat dari tindakannya. Misalnya muncul suatu suara ketika salah menekan tombol pada waktu input data atau muncul pesan kesalahan. 4.
Merancang dialog untuk menghasilkan suatu penutupan Kegiatan yang dilakukan pengguna dipisahkan menjadi 3 (tiga) bagian yaitu bagian awal, tengah, dan akhir. Pada bagian akhir pengguna harus mendapatkan umpan balik yang informatif
11 yang memudahkan pengguna dalam mengetahui dampak dari tindakan yang telah dilakukan. 5.
Memberikan penanganan kesalahan Sistem akan memberikan suatu intruksi yang sederhana dan mudah dimengerti kepada pengguna jika terjadi kesalahan yang dilakukan.
6.
Mudah kembali ke tindakan sebelumnya Pengguna tidak perlu khawatir bila melakukan kesalahan karena sistem menyediakan fitur yang dapat mengembalikan keadaan ke keadaan sebelum dilakukan kesalahan.
7.
Mendukung tempat pengendalian internal Pengguna menjadi pengendali sistem dan bukan sebaliknya. Jadi peran pengguna dalam sistem adalah sebagai inisiator bukan responden.
8.
Mengurangi beban ingatan jangka pendek Sistem yang dikembangkan berbentuk sederhana dan mudah diingat karena ingatan manusia yang terbatas. Penyederhanaan sistem misalnya menggabungkan tampilan-tampilan sejenis dan memberikan pelatihan dengan jangka waktu yang cukup.
2.1.1.4 Desain Interface Mobile Smartphone
dan
komputer
desktop
sangat
berbeda.
Smartphone memiliki layar yang kecil, konektivitas intermittent,
12 bandwidth rendah dan bertenaga baterai. Sedangkan komputer desktop memiliki layar yang besar, konektivitas handal, bandwidth tinggi dan plugged in. Dengan banyaknya perbedaan antara smartphone dan desktop, desain untuk smartphone sangat berbeda dengan desain pada desktop. Mengacu
pada
pendapat
dari
Jonathan
Stark
(2012)
pengembangan aplikasi pada mobile terdapat 10 (sepuluh) prinsip desain untuk interface mobile: 1. Mobile Mindset Dengan adanya perbedaan antara mobile
dan desktop, ada
beberapa pola pikir untuk mobile: a. Be focused Aplikasi sebaiknya fokus pada suatu fitur karena dengan lebih banyak fitur, tidak membuat aplikasi tersebut menjadi lebih baik. b. Be unique Aplikasi yang dikembangkan memiliki suatu keunikan dan kekuatan yang membedakan aplikasi tersebut dengan aplikasi lainnya. c. Be charming Aplikasi yang dapat diandalkan, dan menyenangkan saat digunakan, sehingga aplikasi tersebut banyak diminati dan digunakan.
13 d. Be considerate Aplikasi
yang dikembangkan sebaiknya tidak hanya
menyenangkan pengguna saat menggunakannya, tetapi juga sesuai dengan keinginan pengguna. 2. Mobile Contexts Terdapat 3 (tiga) konteks utama pada mobile yang perlu dipertimbangkan untuk mengetahui aplikasi yang pengguna inginkan: a. Bored
: aplikasi yang berkonteks hiburan.
b. Busy
: aplikasi untuk menyelesaikan tugas dengan cepat.
c. Lost
: aplikasi yang berkonteks informasi tempat.
3. Global Guidelines Setiap aplikasi memiliki teknik pendekatan dan desain yang berbeda-beda. Sifat yang merekat pada sebuah perangkat touchscreen
berukuran
saku
memiliki
hal
yang
harus
diperhatikan dalam pengembangan aplikasi, yaitu: a. Responsiveness Jika pengguna melakukan sesuatu pada aplikasi, aplikasi perlu menunjukkan jika aplikasi sedang beroperasi. b. Polish Pengembang harus memperhatikan detil desain aplikasi.
14 c. Thumbs Dengan touchscreen interfaces, desain interfaces harus disesuaikan karena banyak pengguna menggunakan ibu jari untuk mengetik. d. Targets Dalam mendesain aplikasi yang akan menggunakan banyak fungsi
keyboard,
pengembang
sebaiknya
mendesain
penempatan tombol yang baik sehingga memudahkan pengguna dalam pengetikan. e. Content Sebaiknya pengembang menempatkan content aplikasi pada tengah layar untuk memudahkan pengguna berinteraksi dengan aplikasi. f. Controls Ketika harus menambahkan suatu kontrol pada aplikasi, sebaiknya diletakkan pada bagian bawah layar agar memudahkan pengguna berinteraksi dengan aplikasi. g. Scrolling Sebaiknya pengembang mengurangi pemakaian scrolling untuk memudahkan pengguna dalam penggunaan aplikasi.
15 4. Navigation Models Ada beberapa model navigasi umum untuk aplikasi mobile yang dapat digunakan sesuai dengan aplikasi, seperti none, tab bar, dan drill down. 5. User Input Pada pengembangan suatu aplikasi memungkinkan pengguna dalam memberikan input seperti pengetikan. Terdapat banyak variasi keyboard pada smartphone, pertimbangkan untuk menampilkan keyboard yang akan sangat berguna. Pilihan auto entry yang harus diaktifkan juga harus dipertimbangkan. Jika aplikasi perlu banyak input seperti pengetikan, pastikan mendukung orientasi landscape. 6. Gestures Touchscreen interfaces saat ini mendukung gesture-based untuk interaksi pengguna. Hal - hal yang harus diingat adalah: a. Invisible Gestures tidak terlihat, tetapi pengembang aplikasi harus mempertimbangkan
bagaimana
untuk
mengungkapkan
keberadaan gestures tersebut kepada pengguna. b. Two Hands Multi-touch gestures membutuhkan operasi dua tangan. Contohnya pengguna dapat dengan mudah memperbesar atau memperkecil tampilan aplikasi dengan dua jari.
16 c. Nice to have Menggunakan semacam keyboard shortcuts pada suatu aplikasi yang dikembangkan jika diperlukan agar pengguna lebih mudah dalam menggunakan aplikasi. d. No replacement Teknologi Two-Hands
belum terlalu berkembang dan
pengembangan aplikasi dianjurkan tidak menghilangkan fungsi single-finger. 7. Orientation a. Potrait Orientasi
yang
paling
sering
digunakan
untuk
mengoptimalkan desain antar muka aplikasi. b. Landscape Orientasi ini digunakan untuk mendukung pengguna yang sering mengetik yaitu dengan mengoptimalkan penggunaan keyboard yang lebih besar. c. Orientasi berubah tiba – tiba Pengembangan aplikasi yang akan digunakan dalam jangka panjang perlu dipertimbangkan untuk menambahkan suatu orientasi yang tepat di aplikasi tersebut. 8. Communications Aplikasi harus dapat berinteraksi dengan pengguna.
17 a. Provide feedback Memberikan umpan balik instan untuk setiap interaksi. Jika pengguna telah meminta suatu tindakan yang akan memakan waktu lama, maka aplikasi menampilkan progress bar. b. Modal alert Modal alert sangat mengganggu sehingga harus digunakan ketika ada sesuatu yang benar-benar salah. c. Confirmation Ketika harus meminta pengguna untuk mengkonfirmasi tindakan, dapat ditampilkan dialog konfirmasi modal. Seperti: “Apakah Anda yakin ingin menghapus data ini?”. 9. Launching Ketika pengguna kembali ke aplikasi, maka aplikasi harus kembali
beroperasi
tepat
dimana
pengguna
terakhir
mengoperasikan aplikasi. 10. First Impressions Pada saat pengguna pertama kali menggunakan aplikasi, terdapat 2 (dua) faktor yang menjadi kesan pertama pengguna, yaitu: a. Your icon Icon merupakan suatu hal yang sangat penting, karena icon merupakan salah satu yang menjadi daya tarik bagi pengguna dalam menggunakan aplikasi yang dikembangkan.
18 b. First launch Peluncuran pertama kali harusnya tidak menimbulkan kebingungan bagi pengguna yang menggunakannya.
2.1.2 Unified Modelling Language (UML) Menurut Whitten dan Bentley (2007), Unified Modelling Language (UML) adalah sekumpulan aturan pemodelan yang digunakan untuk menentukan dan menggambarkan suatu sistem software yang berkaitan dengan objek. UML telah menjadi standar dalam bahasa pemodelan di bidang perancangan software. Standarisasi UML diatur dan dibuat oleh Object Management Group (OMG). Untuk
menjalankan
fungsinya
dalam
menentukan
dan
menggambarkan rancangan software, UML versi 2.0 menggunakan diagramdiagram sebagai berikut: 1.
Use Case Diagram
2.
Activity Diagram
3.
Class Diagram
4.
Object Diagram
5.
State Machine Diagram
6.
Sequence Diagram
7.
Communication Diagram
8.
Interaction Overview Diagram
19 9.
Timing Diagram
10.
Component Diagram
11.
Deployment Diagram
12.
Package Diagram
13.
Composite Structure Diagram Meskipun UML memiliki begitu banyak diagram, tidak semuanya
diperlukan dan harus digunakan dalam perancangan. Apabila sistem telah digambarkan dan dapat dipahami dengan baik menggunakan diagram yang ditentukan, maka tujuan dari UML telah tercapai.
2.1.2.1 Use Case Diagram Use Case Diagram adalah diagram yang mendeskripsikan interaksi antara sistem dengan pengguna dan menggambarkan siapa yang akan menggunakan sistem serta bagaimana pengguna berinteraksi dengan sistem (Whitten dan Bentley, 2007). Komponen notasi dasar yang dimiliki oleh use case diagram adalah aktor dan use case. Berikut adalah notasi yang terdapat pada use case diagram: Tabel 2.1 Tabel Notasi Use Case Diagram Notasi
Deskripsi
Aktor
Aktor adalah pengguna sistem. Aktor tidak terbatas hanya manusia saja, jika sebuah sistem berkomunikasi
20 dengan aplikasi lain dan membutuhkan input atau memberikan output, maka aplikasi tersebut juga bisa dianggap sebagai aktor. Use Case Use case digambarkan sebagai elips dengan nama use case dituliskan didalam elips tersebut.
Gambar 2.1 Contoh Use Case Diagram
Dalam use case diagram terdapat hubungan yang digunakan (Whitten dan Bentley, 2007), antara lain: 1. Asosiasi Asosiasi mendeskripsikan suatu hubungan antara aktor dan use case. Asosiasi dapat digambarkan dengan suatu garis yang menghubungkan aktor dan use case. Sebuah asosiasi yang digambarkan
dengan
suatu
garis
dengan
anak
panah
21 menunjukkan interaksi antara use case dengan aktor sebagai inisiator. Sedangkan asosiasi yang digambarkan tanpa anak panah menggambarkan interaksi antara use case dengan aktor penerima.
Gambar 2.2 Contoh Asosiasi Pada Use Case Diagram
2. Extends Pada suatu use case dapat terdiri dari fungsi-fungsi yang kompleks dan menyebabkan use case sulit dimengerti. Oleh karena itu digunakan extends dengan cara use case tersebut menghasilkan
use
case
baru
yang
berfungsi
untuk
mempermudah dalam pemahaman terhadap suatu use case. Use case hasil dari extends disebut dengan extention use case yang hanya dapat diakses oleh use case yang menggunakan extends.
22
Gambar 2.3 Contoh Extends Pada Use Case Diagram
3. Uses / Includes Pada suatu use case diagram sering ditemukan dua atau lebih use case yang melakukan fungsi yang sama tersebut. Fungsi tersebut digabungkan menjadi use case baru yang disebut use case abstrak, yang berfungsi untuk mengurangi redundansi dalam suatu use case diagram.
Gambar 2.4 Contoh Includes Pada Use Case Diagram
23 4. Depends On Depends On merupakan suatu hubungan ketergantungan antara satu use case dengan use case lainnya, dimana suatu use case tidak dapat berjalan jika use case lain belum dilakukan.
Gambar 2.5 Contoh Depends On Pada Use Case Diagram
5. Inheritance Inheritance digunakan untuk mempermudah penggambaran hubungan antara dua atau lebih aktor yang memiliki langkah yang sama dalam sistem dengan membuat aktor abstrak.
Gambar 2.6 Contoh Inheritance Pada Use Case Diagram
24 2.1.2.2 Use Case Narrative Use Case Narrative adalah sebuah teks yang mendeskripsikan suatu langkah yang ada pada use case dan bagaimana cara pengguna
berinteraksi
dengan
sistem
untuk
menyelesaikan
pekerjaannya pada sistem tersebut (Whitten dan Bentley, 2007).
2.1.2.3 Class Diagram Class diagram merupakan gambaran grafis dari struktur objek, yang menunjukkan kelas objek yang ada pada suatu sistem dan hubungan antara kelas-kelas objek tersebut (Whitten dan Bentley, 2007).
Gambar 2.7 Contoh Class Diagram
25 Setiap kelas objek dibagi menjadi 3 (tiga) bagian, yaitu: 1.
Nama kelas Nama kelas harus unik atau dapat dibedakan antara kelas yang satu dengan kelas yang lain karena nama kelas merupakan identitas yang dimiliki oleh setiap kelas.
2.
Atribut kelas Atribut menunjukkan informasi yang dimiliki oleh suatu kelas atau informasi yang berhubungan dengan suatu kelas.
3.
Operasi kelas Operasi digunakan untuk menunjukkan fungsi yang dapat dilakukan oleh suatu kelas. << Nama kelas >> - Atribut kelas
+ Operasi kelas
Gambar 2.8 Struktur Kelas Objek
2.1.2.3.1 Visibility Pada class diagram terdapat visibility yang digunakan untuk menentukan suatu kelas dapat diakses oleh kelas lainnya atau tidak. Dalam visibility memiliki 3 (tiga) tingkatan, yaitu (Whitten dan Bentley, 2007):
26 1. Public 2. Protected 3. Private
Tabel 2.2 Tabel Penjelasan Visibility Visibility Public
Simbol +
Deskripsi Dapat
diakses
oleh
semua
kelas yang berhubungan Protected
#
Hanya dapat diakses oleh kelas yang
mendefinisikan
dan
turunannya Private
-
Hanya dapat diakses oleh kelas yang mendefinisikan
2.1.2.3.2 Multiplicity Multiplicity merupakan jumlah banyaknya objek sebuah kelas yang berelasi dengan sebuah objek lain pada kelas lain yang berasosiasi dengan kelas tersebut (Whitten dan Bentley, 2007).
27 Tabel 2.3 Tabel Penjelasan Multiplicity Multiplicity
Deskripsi
0..1
Nol atau satu
1
Hanya satu
0..*
Nol atau lebih
1..*
Satu atau lebih
2.1.2.3.3 Generalisasi Generalisasi merupakan suatu teknik dimana sebuah kelas (subclass) dapat mewarisi atribut-atribut dan operasi-operasi dari kelas lainnya (superclass) dimana superclass
bersifat
lebih
umum
daripada
(Whitten dan Bentley, 2007). Person
Student
Teacher
Gambar 2.9 Contoh Generalisasi
subclass
28 2.1.2.3.4 Asosiasi Asosiasi merupakan hubungan antara satu kelas dengan kelas yang lain. Asosiasi antara dua kelas biasanya dinotasikan dengan sebuah garis yang menghubungkan kedua kelas tersebut dan biasanya disertakan keterangan mengenai detil relasi antar kelas dan multiplicity (Whitten dan Bentley, 2007). Hubungan yang digambarkan dibedakan menjadi 2 (dua) jenis, yaitu: 1. Uni-directional Hubungan uni-directional menghubungkan 2 (dua) kelas yang saling terhubung, tetapi hanya satu yang memiliki peran dalam hubungan tersebut. Hubungan uni-directional
dapat
direpresentasikan
dengan
menggunakan anak panah. Seperti gambar 2.4 kelas ”Order” memiliki atribut bertipe sama dengan kelas ”Customer”, dan kelas ”Customer” tidak dapat memiliki atribut bertipe sama dengan kelas ”Order”.
Gambar 2.10 Contoh Hubungan Uni-Directoral
29 2. Bi-directional Hubungan bi-directional menghubungkan 2 (dua) kelas yang saling terhubung dan keduanya memiliki peran dalam hubungan tersebut. Hubungan bidirectional tidak perlu menggunakan anak panah. Seperti gambar 2.5 kelas ”Flight” memiliki atribut bertipe sama dengan kelas ”Plane”, dan kelas ”Plane” memiliki atribut bertipe sama dengan kelas ”Flight”.
Gambar 2.11 Contoh Hubungan Bi-directional
2.1.2.3.5 Agregasi Agregasi menggambarkan hubungan dimana satu kelas merupakan bagian dari kelas lain. Seperti pada gambar 2.5, dimana kelas ”Karyawan” adalah bagian dari kelas ”Perusahaan”, tetapi kelas ”Perusahaan” bukan merupakan bagian dari kelas ”Karyawan” (Whitten dan Bentley, 2007).
30 Perusahaan
Karyawan 0..*
1
Gambar 2.12 Contoh Agregasi
2.1.2.3.6 Komposisi Komposisi merupakan bentuk lain dari agregasi, tetapi sebuah kelas tidak dapat berdiri sendiri dan harus merupakan bagian dari kelas yang lain. Seperti pada gambar 2.6, dimana kelas “Halaman” merupakan bagian dari kelas ”Buku” dan kelas ”Halaman” tidak akan ada jika kelas ”Buku” tidak dibuat (Whitten dan Bentley, 2007). Buku
Halaman 1
1..*
Gambar 2.13 Contoh Komposisi
2.1.2.4 Activity Diagram Activity diagram adalah suatu diagram yang digunakan untuk menggambarkan proses bisnis, langkah-langkah dari use case dan logika perilaku dari objek. Dalam activity diagram lebih dari satu use case dapat digambarkan dengan satu activity diagram, tetapi
31 satu activity diagram dapat digambarkan untuk setiap use case jika use case tersebut memiliki logika yang kompleks (Whitten dan Bentley, 2007).
Activity
Activity
Activity [True]
[False]
Activity
Activity
Activity
Gambar 2.14 Activity Diagram
Beberapa elemen yang digunakan dalam activity diagram adalah (Whitten dan Bentley, 2007):
32 Tabel 2.4 Tabel Elemen Activity Diagram Initial node Simbol
yang
menggambarkan
dimulainya proses. Action
Simbol
yang
merepresentasikan
suatu
Activity
aktivitas.
Keseluruhan
aktivitas
diagram mengikuti urutan actions. Flow
Simbol
yang
merepresentasikan
jalur dari satu aktivitas ke aktivitas lainnya. Decision / Simbol Merge
yang
merepresentasikan
keadaan kondisional, yaitu decision dan merge. 1. Decision Mengindikasi kondisi untuk memilih
salah
satu
alur
aktivitas. 2. Merge Mengindikasi
bergabungnya
alur aktivitas yang dipisahkan oleh decision sebelumnya. Fork / Join
Simbol
yang
merepresentasikan
keadaan paralel, yaitu fork dan join. 1. Fork
dari
33 Mengindikasikan adanya dua atau
lebih
actions
yang
berlangsung bersamaan. 2. Join Mengindikasi
berakhirnya
proses paralel. Activity
Simbol
yang
merepresentasikan
Final
berakhirnya proses.
Pada activity diagram dapat ditentukan siapa yang melakukan tindakan apa dengan membagi activity diagram ke dalam beberapa partitions atau swimlane yang menunjukkan aktivitas yang dilakukan oleh aktor tertentu. Suatu activity diagram dapat memiliki tiga atau lebih swimlane yang menunjukkan aktor penerima.
2.1.2.5 Sequence Diagram Sequence diagram adalah salah satu UML diagram yang menggambarkan model logika dari sebuah use case dengan menggambarkan interaksi pesan antar objek dalam suatu urutan waktu (Whitten dan Bentley, 2007).
34
:Pemesanan Aktor
:Barang
Memesan barang Mengecek barang ()
Status barang Status pemesanan
Gambar 2.15 Contoh Sequence Diagram
Beberapa elemen yang digunakan dalam sequence diagram adalah (Whitten dan Bentley, 2007): 1. Aktor Aktor adalah suatu elemen yang dapat digunakan pada sequence diagram dimana digambarkan dengan aktor simbol yang mewakili pengguna dalam berinteraksi dengan interface.
Gambar 2.16 Aktor Simbol
35 2. Objek Objek digunakan untuk mewakili kelas-kelas pada class diagram dan digambarkan dengan simbol persegi panjang yang didalamnya terdapat nama objek tersebut. Pada objek terdapat garis putus-putus yang disebut lifeline. :Objek
Gambar 2.17 Objek
3. Pesan Pesan digunakan untuk menggambarkan interaksi antar objek yang ada pada sequence diagram.
Pesan
Contoh 2.18 Pesan
4. Aktivasi Aktivasi digambarkan dengan sebuah persegi panjang pada lifeline dan berfungsi untuk menunjukkan lamanya objek yang digunakan.
36 :Objek1
Gambar 2.19 Aktivasi
5. Pesan kembali Pesan kembali digambarkan dengan simbol seperti pesan tetapi dengan garis putus-putus dan berfungsi untuk menanggapi pesan yang sebelumnya telah disampaikan. Pesan Kembali
Gambar 2.20 Pesan Kembali
6. Self-call Suatu objek pada sequence diagram dapat mengirimkan pesan atau berinteraksi ke objek itu sendiri.
Gambar 2.21 Self-call
37 7. Frame Penggunaan frame pada sequence diagram menunjukkan adanya perulangan (looping) pada daerah yang dibatasi oleh frame tersebut. Frame juga digunakan jika pada sequence diagram terdapat pilihan yang boleh dipilih atau tidak dipilih (optional) atau menggambarkan pilihan yang setidaknya ada sebuah proses yang dilakukan (alternate).
:MemberServicesSystem
User
opt
Sys Admin
numTries <= 3 submitLogin(username, password)
Invalid
opt
numTries >3
failedAttempt
submitLogin(username, password)
(datetime, ip)
Gambar 2.22 Frame (Sumber: Whitten dan Bentley, 2007)
2.1.3
Rekayasa Perangkat Lunak Menurut Pressman (2010), pengertian rekayasa perangkat lunak adalah pengimplementasian prinsip-prinsip perancangan untuk menghasilkan
38 software yang ekonomis, handal dan mampu bekerja efisien pada mesin yang sesungguhnya. Karakteristik dari software adalah sebagai berikut (Pressman, 2010): 1. Software dikembangkan atau dibuat, bukan dirakit Terdapat beberapa kesamaan antara pengembangan software
dan
perakitan hardware. Pada dasarnya kedua kegiatan tersebut berbeda, kualitas tinggi dapat diperoleh melalui rancangan yang baik, tetapi perakitan hardware dapat memberikan permasalahan pada kualitas software. 2. Software tidak akan “habis” Software tidak akan “habis” oleh waktu karena tidak memiliki bentuk fisik. Tidak seperti hardware yang memiliki bentuk fisik. 3. Sebagian besar software dibangun sesuai dengan keinginan Sebuah komponen software harus dirancang dan diimplementasi, sehingga dapat digunakan kembali dalam banyak program berbeda.
2.1.3.1 Agile Software Development Agile
Software
Development
adalah
sebuah
strategi
pengembangan sistem dimana pengembang diberikan fleksibilitas untuk memilih alat yang sesuai dan teknik yang baik untuk menyelesaikan
tugas-tugasnya.
Agile
Software
Development
memiliki keseimbangan yang optimal antara produktivitas dan kualitas dalam pengembangan sistem (Whitten dan Bentley, 2007).
39 2.1.3.2 Extreme Programming Extreme Programming (XP) merupakan salah satu metodologi dalam rekayasa perangkat lunak dan merupakan salah satu metode dari beberapa agile software development yang berfokus pada coding sebagai aktivitas utama dan menekankan pada kerjasama tim. XP digunakan untuk menghadapi kebutuhan yang kurang dimengerti oleh pengembang dan berubahnya kebutuhan dari pengguna. Pada XP antara pengguna dan pengembang selalu melakukan komunikasi jika terjadi perubahan pada software yang dikembangkan.
Gambar 2.23 Extreme Programming (Sumber: Roger S. Pressman, Software Enginnering: A Practitioner’s Approach, 2010)
40 Mengacu
pada
pendapat
Pressman
(2010),
dalam
pengembangan software dengan menggunakan XP terdapat 4 (empat) tahap yang digunakan. Empat tahap tersebut yaitu: 1. Planning Pada tahap ini dimulai dengan perencanaan stories yang menggambarkan fitur dan fungsionalitas yang diperlukan untuk software yang akan dibangun. Setiap story ditulis oleh pengguna dan ditempatkan pada kartu index. Kemudian pengguna memberikan nilai untuk story yang akan dinilai oleh pengembang
dan
menentukan
biaya
selama
waktu
pengembangan software. Jika waktu yang diperlukan untuk story lebih dari 3 (tiga) minggu, maka pengguna diminta untuk membagi story tersebut menjadi beberapa story yang lebih kecil. 2. Design Pada tahap ini menggunakan prinsip Keep It Simple (KIS). Perancangan yang sederhana lebih mudah dimengerti dari pada tampilan yang kompleks. XP mendukung penggunaan Class Responsibillity Collaborator (CRC) cards sebagai mekanisme yang efektif untuk berpikir tentang software dalam konteks berorientasi objek.
41 3. Coding Tahap ini dilakukan setelah story dikembangkan dan rancangan pendahuluan selesai. Kemudian dilakukan perancangan unit test terlebih dahulu sebelum penulisan kode dilakukan. Unit test merupakan serangkaian test yang mengevaluasi setiap story. Setelah unit test selesai dibuat, pemikiran pengembang berfokus pada pengimplementasian untuk melewati unit test berikutnya. Setelah pembuatan kode selesai dapat langsung dilakukan pengujian. Pada tahap coding juga dilakukan refactoring yang merupakan suatu teknik konstruksi dan metode untuk mengoptimalkan rancangan yaitu dengan penyederhanaan kode untuk memudahkan orang lain atau pengembang dalam memahami kode tersebut. Setelah tahap pembuatan kode dilakukan selanjutnya dapat dilakukan perancangan baik sebelum ataupun sesudah tahap tersebut, hal ini dikarenakan adanya refactoring. 4. Testing Pada bagian ini dilakukan pengujian kode dengan unit test yang telah dihasilkan pada tahap sebelumnya. Setelah itu dilakukan acceptance test yang disebut juga customer test yang berfungsi untuk memastikan aplikasi yang telah memenuhi kebutuhan pengguna.
42 2.1.4
Database Berdasarkan pendapat dari Connolly (2005), database adalah sekumpulan data yang secara logis saling terkait yang dirancang untuk memenuhi kebutuhan informasi suatu organisasi.
2.1.5
Teknologi Mobile Berikut merupakan penjelasan mengenai teknologi – teknologi mobile yang sedang berkembang: 2.1.5.1 Smartphone Mengacu pada pendapat dari Ramteke, Choudhary (2012), smartphone menyediakan fasilitas internet dan akses ke layanan data yang beragam. Teknologi smartphone telah pindah ke perangkat yang sangat visual dan menarik banyak pengguna serta memberikan banyak fasilitas untuk berkomunikasi. Beberapa sistem operasi yang sedang berkembang saat ini adalah Blackberry, iOs, dan Android.
2.1.5.2 Native Mobile Applications Mengacu pada pendapat Upadhyay dan Tripathi (2012), Native Mobile Applications adalah aplikasi yang diinstal pada smartphone dan dikembangkan dengan bahasa pemrograman khusus. Aplikasi mobile ini cepat, handal, dan kinerja yang maksimal tetapi terikat pada mobile platform yang dikembangkan.
43 Native mobile applications selalu lebih responsif dan dapat mengakses lebih fitur hardware pada device.
2.1.6
Instant Messaging (IM) Instant Messaging (IM) adalah sebuah aplikasi berbasis Internet Protokol (IP) yang memberikan kemudahan berkomunikasi antar orang menggunakan bermacam – macam device yang berbeda. Sekarang IM dapat bekerja dengan mobile device, seperti digital cellular phones dan dapat mendukung suara dan video (Rittinghouse dan Ransome, 2005).
2.1.7
Android Mengacu pada pendapat Nimodia dan Deshmukh (2012), Android adalah sebuah software stack untuk perangkat mobile yang mencakup sistem operasi, middleware dan key applications. Android memiliki platform yang bersifat open source dan sistem operasi untuk perangkat mobile berbasis pada sistem operasi Linux dan dikembangkan oleh Google dan Open Handset Alliance. Sistem operasi pada android ini berbasis bahasa pemrograman Java menggunakan Android Software Development Kit (Android SDK) dan berjalan pada Linux Kernel, dengan middleware, library, Application Programming Interface (API) yang ditulis dalam bahasa C, dan software yang berjalan pada suatu kerangka aplikasi dengan menyertakan Javacompatible libraries berbasis pada Apache Harmony, yaitu sebuah
44 implementasi Java bersifat open source
dikembangkan oleh Apache
Software Foundation yang terdiri dari Java Development Kit (JDK), virtual machine dan class library.
2.1.8 Fitur Android Android memiliki beberapa fitur yang mendukungnya, dimana fiturfitur tersebut terdapat pada perangkat mobile. Fitur-fitur yang mendukung Android yaitu (Lee, 2011): 1. Storage Menggunakan
SQLite,
mesin
database
SQL
embedded,
untuk
menyimpan data. 2. Connectivity Mendukung GSM/EDGE, IDEN, CDMA, EV-DO, UMTS, Bluetooth, WiFi, LTE, dan WiMAX. 3. Messaging Mendukung SMS dan MMS. 4. Web browser Berbasis open-source WebKit, dengan Chrome’s V8 JavaScript engine. 5. Media support Mendukung media: MP3, MIDI, WAV, JPEG, PNG, dan lain-lain. 6. Hardware support Mendukung hardware: Accelerometer Sensor, Camera, Digital Compass, Proximity Sensor, GPS.
45 7. Multi-touch Mendukung multi-touch screens. 8. Multi-tasking Mendukung multi-tasking applications. 9. Flash support Android 2.3 mendukung Flash 10.1. 10. Tethering Mendukung sharing koneksi internet seperti wireless hotspot.
2.1.9 Arsitektur Android Gambar 2.23 menunjukkan komponen-komponen yang terdapat pada sistem operasi Android yang terbagi menjadi beberapa layer.
Gambar 2.24 Arsitektur Android (Sumber: http://developer.android.com/about/versions/index.html, 2012)
46 2.1.9.1 Applications Dalam applications layer, Android akan dikirim dengan satu set aplikasi termasuk email client, program SMS, kalender, peta, browser, kontak, dan lain-lain. Semua aplikasi ditulis menggunakan bahasa pemrograman Java (Anonim1, 2012).
2.1.9.2 Application Framework Dengan platform open development, Android menawarkan kemampuan pengembang untuk membangun aplikasi yang sangat kaya dan inovatif. Pengembang bebas untuk mengambil keuntungan dari hardware devices, mengakses informasi lokasi, menjalankan background
services,
mengatur
alarm,
menambahkan
pemberitahuan ke status bar, dan lain-lain (Anonim1, 2012). Sekumpulan services dan sistem yang mendasari aplikasi Android adalah (Anonim1, 2012): 1. Sekumpulan views yang dapat digunakan untuk membangun aplikasi, termasuk list, grids, text boxes, buttons, dan embeddable web browser. 2. Content
providers
yang
memungkinkan
aplikasi
untuk
mengambil data dari aplikasi lain atau untuk berbagi data dari aplikasi itu sendiri. 3. Resource manager menyediakan akses ke non-code resources seperti localized strings, graphics, dan layout files.
47 4. Notification manager yang memungkinkan semua aplikasi untuk menampilkan pemberitahuan pada status bar. 5. Activity manager yang mengatur siklus dari aplikasi dan menyediakan common navigation backstack.
2.1.9.3 Libraries Android mencakup sekumpulan library C/C++ yang digunakan oleh berbagai komponen dari sistem Android. Beberapa library yang digunakan adalah (Anonim1, 2012): 1. System C library digunakan untuk embedded Linux-based devices. 2. Media Libraries untuk memutar audio dan video. 3. Surface Manager untuk menyediakan pengaturan tampilan. 4. LibWebCore sebuah mesin web browser modern. 5. Scene Graph Library (SGL) untuk kemampuan menampilkan grafik dua dimensi. 6. 3D
libraries
termasuk
OpenGL
untuk
kemampuan
menampilkan grafik tiga dimensi. 7. SQLite untuk dukungan dalam database.
2.1.9.4 Android Runtime Android yang mencakup sekumpulan core libraries yang menyediakan sebagian besar fungsi pada bahasa pemrograman
48 Java. Android Runtime juga termasuk Dalvik virtual machine, yang memungkinkan setiap aplikasi Android untuk berjalan dalam proses sendirinya. Dalvik adalah mesin virtual khusus dirancang khusus untuk android dan dioptimalkan untuk battery-powered device mobile dengan memori yang terbatas dan CPU (Anonim1, 2012).
2.1.9.5 Linux Kernel Android bergantung pada versi Linux 2.6 Kernel untuk sistem inti seperti keamanan, manajemen memori, manajemen proses, network stack, dan driver model. Kernel juga bertindak sebagai abstraction layer antara hardware dan dari stack yang lain (Anonim1, 2012).
2.1.10 Komponen Aplikasi Android Android memiliki 4 (empat) komponen pemrograman. Setiap komponen memiliki peran yang berbeda-beda. Masing-masing komponen memiliki siklus hidup sendiri-sendiri yang mengatur kapan komponen dibuat dan bagaimana komponen dihapus. Berikut ini adalah 4 (empat) jenis komponen dalam aplikasi android (Anonim2, 2012): 1. Activities Activities adalah suatu komponen yang menyediakan layar dimana pengguna dapat berinteraksi untuk menjalankan fungsi tertentu.
49 2. Services Services adalah komponen aplikasi yang berjalan di background untuk menjalankan proses yang memerlukan waktu cukup lama. Services tidak memiliki tampilan. 3. Content Providers Content Providers bertugas untuk mengelola sekumpulan data aplikasi yang terbagi (shared). Datanya dapat disimpan dalam file sistem, database SQLite atau lokasi penyimpanan lainnya. Dengan adanya Content Providers ini, aplikasi lain dapat mengakses data yang diperlukan tanpa perlu mengetahui bagaimana data tersebut disimpan. Content provider juga dapat digunakan untuk menulis dan membaca data pribadi yang tidak dibagikan (tidak shared). 4. Broadcast Receivers Broadcast receivers adalah suatu komponen aplikasi yang menanggapi broadcast. Contoh broadcast yang dikirim oleh sistem operasi Android adalah pemberitahuan ada aplikasi baru yang terinstal atau ter-update, layar mati, ada SMS atau telepon masuk, dan lain-lain. Broadcast receiver juga tidak memiliki tampilan, tetapi dapat menjalankan suatu activity atau menampilkan pemberitahuan.
2.1.11 Google Cloud Messaging (GCM) Google Cloud Messaging (GCM) adalah suatu layanan yang digunakan untuk mengirimkan data pesan singkat dari server ke pengguna
50 pada perangkat Android. GCM dapat mengirimkan pesan singkat untuk memberitahu aplikasi bahwa terdapat data baru yang akan diambil dari server, seperti file film yang diunggah oleh seorang teman atau pesan yang berisi data sampai dengan 4 KB. Layanan GCM menangani semua aspek antrian pesan dan pengiriman ke aplikasi pengguna Android pada perangkat pengguna. GCM tidak peduli seberapa besar pesan yang dibutuhkan oleh pengguna dan tidak ada kuota (Anonim3, 2012).
2.2 Teori-Teori Khusus yang Berhubungan dengan Topik Bahasan Berikut merupakan teori – teori khusus yang berhubungan dengan topik bahasan pada pengembangan aplikasi: 2.2.1
PHP Hypertext Preprocessor (PHP) PHP adalah suatu bahasa scripting yang sesuai digunakan untuk pengembangan web dan tertanam ke dalam HTML. Terdapat perbedaan antara PHP dengan yang lain seperti client – server JavaScript yaitu code dijalankan di server, menghasilkan HTML yang kemudian dikirim ke client. Dari client akan menerima hasil dari script yang dijalankan, tetapi tidak akan mengetahui apa code yang mendasarinya (Anonim4, 2012). PHP memiliki beberapa kelebihan dibandingkan dengan beberapa bahasa scripting yang lain. Beberapa kelebihan dari PHP adalah (Anonim5, 2012): 1. PHP dapat digunakan pada semua sistem operasi utama, termasuk Linux, Microsoft Office, Mac OS, dan beberapa sistem operasi lainnya.
51 2. PHP mendukung untuk sebagian web server, seperti Apache, IIS, dan beberapa web server lainnya. 3. PHP dapat menggunakan pemrograman prosedural atau pemrograman berorientasi objek (OOP). 4. PHP juga didukung berbagai database, seperti MySQL, ODBC.
2.2.2
MySQL MySQL adalah suatu open source database yang sering digunakan di dunia karena memiliki kinerja yang tinggi, kehandalan yang tinggi, dan kemudahan dalam penggunaan. MySQL berjalan pada lebih dari 20 platform termasuk Linux, Windows, Mac OS, Solaris, IBM, AIX (Anonim6, 2012).
2.2.3
JavaScript Object Notation (JSON) JSON merupakan suatu format teks yang tidak bergantung pada bahasa pemrograman apapun karena menggunakan bahasa yang umum dan dapat digunakan oleh programmer yang menggunakan C, C++, C#, Java, JavaScript, Perl, Python dan lain – lain (Anonim7, 2012). Beberapa bentuk yang digunakan di dalam JSON adalah (Anonim7, 2012): 1. Object Object adalah sepasang nama atau nilai yang tidak terurutkan. Object dimulai dengan kurung kurawal buka ( { ) dan diakhiri dengan kurung
52 kurawal tutup ( } ). Pada setiap nama diikuti dengan titik dua ( : ) dan setiap pasangan nama atau nilai dipisahkan oleh koma ( , ). 2. Array Array adalah kumpulan nilai yang terurutkan dan memiliki komponen – komponen yang mempunyai tipe data sama. Array dimulai dengan kurung kotak buka ( [ ) dan diakhiri dengan kurung kotak tutup ( ] ). Pada setiap nilai dipisahkan oleh koma ( , ). 3. Value Value dapat berupa string, angka, object, array, true, false, atau null. Struktur – struktur tersebut dapat disusun dengan bertingkat. 4. String String adalah kumpulan dari nol atau lebih karakter Unicode, yang dibungkus dengan tanda kutip ganda. Di dalam string dapat digunakan dapat digunakan backslash escapes ( \ ) untuk membentuk karakter khusus. Sebuah karakter mewakili karakter tunggal pada string. String sangat mirip dengan string C atau Java. 5. Number Number sangat mirip dengan number di C atau Java, kecuali format oktal dan heksadesimal tidak digunakan.
2.2.4
SQLite SQLite adalah sebuah library yang mengimplementasi self-contained, serverless, zero-configuration, transactional SQL database. SQLite
53 merupakan SQL database engine yang paling banyak digunakan karena kode untuk SQLite berada dalam public domain dan dengan demikian bebas untuk digunakan (Anonim8, 2012). Beberapa fitur yang terdapat pada SQLite adalah (Anonim9, 2012): 1. Transaksi bersifat atomic, konsisten, terisolasi, dan tahan lama (ACID), bahkan jika terjadi kegagalan sistem atau power. 2. Zero configuration, yang berarti tidak membutuhkan setup atau administration. 3. Penerapan SQL92. 4. Database yang lengkap disimpan di dalam single cross-platform disk file. 5. Mendukung database dengan ukuran terabyte dan gigabyte, strings, dan blobs. 6. Footprint yang berukuran kecil: kurang dari 350 KB jika terkonfigurasi penuh atau kurang dari 200 KB jika fitur –fitur tambahan tidak digunakan. 7. Lebih cepat dari database client atau server yang sering digunakan pada umumnya untuk operasi – operasi yang bersifat umum. 8. API yang sederhana dan mudah untuk digunakan. 9. Ditulis dalam ANSI-C dan TCL binding terdapat didalamnya. Binding untuk bahasa lainnya tersedia secara terpisah. 10. Tersedia sebagai single ANSI-C source-code file yang dapat ditambahkan dengan mudah.
54 11. Mandiri, tidak bergantung kepada faktor eksternal. 12. Cross platform: UNIX (Linux dan Mac OS X), OS/2, dan Windows (Win32 dan WinCE). 13. Kode SQLite berada di public domain dan dapat digunakan untuk tujuan apapun. 14. Memiliki command line interface (CLI) client yang mandiri dan dapat digunakan untuk mengatur database dari SQLite.
2.2.5 Global Positioning System (GPS) Mengacu pada pendapat Meduri dan Brahmanandam (2012), Global Positioning System (GPS) adalah satelit berbasis sistem navigasi radio untuk memberikan informasi posisi yang akurat dengan waktu yang tepat. Biasanya, akurasi GPS dibatasi oleh beberapa faktor seperti lingkungan, penerima, dan kesalahan berbasis satelit.
2.2.6 Java Berdasarkan
pendapat
Schildt
(2005),
java
adalah
bahasa
pemrograman yang mendukung Object Oriented Programming (OOP). Aplikasi Java biasanya dapat dikompilasi menjadi bytecode (file kelas) yang dapat berjalan di Java Virtual Machine (JVM) manapun walaupun berbeda dalam arsitektur komputer. Bahasa pemrograman Java memiliki beberapa kelebihan dibandingkan beberapa bahasa pemrograman lain. Beberapa kelebihan dari Java adalah:
55 1. Multiplatform Java dapat dijalankan dibeberapa platform atau sistem operasi komputer, yang tidak terikat pada arsitektur tertentu. Sesuai dengan prinsip write once, run anywhere. 2. Object Oriented Programming (OOP) Bahasa Java merupakan bahasa pemrograman yang mendukung pemodelan berorientasi objek karena pada Java mengutamakan dalam pembuatan objek, manipulasi objek, dan membuat objek bekerja sama. 3. Library yang lengkap Java memiliki library yang lengkap dan mempermudah dalam penggunaan oleh para pembangun untuk membangun aplikasinya. 4. Berdasar C++ Memiliki sintaks seperti bahasa pemrograman C++.
2.2.7 Eclipse Eclipse adalah suatu software yang bersifat terbuka dan multi-bahasa. Eclipse terdiri dari Integrated Development Environment (IDE) dan sistem extensible plug-in. Dapat digunakan untuk mengembangkan berbagai jenis aplikasi, menggunakan bahasa seperti Java, Ada, C, C++, COBOL, Python dan lain-lain (Lee, 2011). Eclipse mengijinkan ekstensi tambahan dari pihak third-party dan merupakan sebuah IDE karena menyediakan tools untuk mengatur
56 workspace; dapat membangun, menjalankan dan debug aplikasi; dan melakukan penyesuaian terhadap pemrograman. Mengacu pada pendapat Harika, Pravin, dan Sivaram (2012) dalam mengembangkan aplikasi mobile platform Android diperlukan Software Development Kit (SDK) untuk membantu dalam pengembangan aplikasi dan yang paling penting adalah Emulator Android dan Android Development Tool (ADT) plug-in untuk Eclipse.
2.2.8 Android Software Development Kit (SDK) Android SDK berisi debugger, libraries, emulator, dokumentasi, sample code, dan tutorial. SDK ini merupakan add-on Java Development Kit (JDK) dan memiliki plug-in terintegrasi untuk Eclipse IDE (Lee, 2011). Beberapa fitur yang terdapat pada Android SDK (Meier, 2010): 1. Tidak ada proses perizinan , distribusi, atau pengembangan biaya atau persetujuan proses rilis. 2. Wi-Fi akses hardware. 3. GSM, EDGE, dan 3G untuk telepon atau mengirim data, memungkinkan untuk membuat atau menerima panggilan atau pesan SMS, atau mengirim dan mengambil data di jaringan mobile. 4. Komprehensif API untuk layanan berbasis lokasi seperti GPS. 5. Pengaturan multimedia hardware, termasuk pemutaran dan merekam dengan kamera dan microphone.
57 6. API untuk menggunakan sensor hardware, termasuk accelerometer dan kompas. 7. Libraries menggunakan Bluetooth untuk mengirim data peer-to-peer. 8. IPC message passing. 9. Shared data stores 10. Latar belakang dari aplikasi dan proses. 11. Home-screen Widgets, Live Folders, dan Live Wallpaper. 12. Kemampuan untuk mengintegrasikan hasil pencarian aplikasi ke dalam pencarian sistem. 13. Terintegrasi open-source HTML5 WebKit-based browser. 14. Mendukung untuk aplikasi yang mengintegrasikan map controls sebagai bagian dari user interface. 15. Mobile-optimized hardware-accelerated graphic, termasuk library path-based grafik 2D dan mendukung untuk grafik 3D menggunakan OpenGL ES 2.0. 16. Media libraries untuk bermain dan merekam berbagai audio atau video atau format gambar. 17. Lokalisasi melalui dynamic resource framework. 18. Suatu framework aplikasi yang mendorong penggunaan kembali komponen aplikasi dan penggantian aplikasi asli.
58 2.2.9 Android Development Tools (ADT) ADT adalah plug-in untuk Eclipse yang memudahkan dalam pengembangan Android dengan menghubungkan developer tools, termasuk emulator dan .class-to-.dex converter, langsung di dalam IDE (Meier, 2011). Dengan menggunakan ADT sebagai plug-in untuk Eclipse dapat melakukan (Meier, 2010): 1. Android Project Wizard menyederhanakan dalam pembuatan proyek baru dan termasuk template aplikasi dasar 2. Forms-based manifest, layout, dan resource editors untuk membantu membuat, mengubah, dan validasi sumber XML. 3. Membangun secara langsung Android Projects, konversi untuk Android executables (.dex), pengemasan untuk package files (.apk), dan instalasi package pada Dalvik virtual machine. 4. Android Virtual Device manager, dapat membuat dan mengatur virtual devices hosting emulator yang menjalankan keluaran tertentu dalam sistem operasi Android dan mengatur memory constraint. 5. Emulator Android, termasuk untuk mengendalikan tampilan emulator dan pengaturan koneksi jaringan, dan kemampuan untuk menyimulasikan telepon masuk dan pesan SMS. 6. Dalvik Debug Monitoring Service (DDMS), yang termasuk port forwarding, stack, heap, dan thread viewing, detil proses, dan fasilitas screen-capture.
59 7. Akses ke perangkat atau file sistem emulator, memungkinkan untuk menavigasi folder tree dan transfer files. 8. Runtime debugging, dapat mengatur breakpoints dan view call stacks. 9. Semua Android atau Dalvik log dan console outputs.