Anda di halaman 1dari 105

TUGAS AKHIR KI141502

RANCANG BANGUN APLIKASI UJI KEAMANAN


MAKANAN BERBASIS ANDROID
AHMAD FAUZI AL WAHID
NRP 5111100057
Dosen Pembimbing
Daniel Oranova Siahaan, S.Kom, M.Sc, PD.Eng
Abdul Munif, S.Kom, M.Sc
JURUSAN TEKNIK INFORMATIKA
Fakultas Teknologi Informasi
Institut Teknologi Sepuluh Nopember
Surabaya 2015

TUGAS AKHIR KI141502

RANCANG BANGUN APLIKASI UJI KEAMANAN


MAKANAN BERBASIS ANDROID
AHMAD FAUZI AL WAHID
NRP 5111100057
Dosen Pembimbing
Daniel Oranova Siahaan, S.Kom, M.Sc, PD.Eng
Abdul Munif, S.Kom, M.Sc
JURUSAN TEKNIK INFORMATIKA
Fakultas Teknologi Informasi
Institut Teknologi Sepuluh Nopember
Surabaya 2015

[Halaman ini sengaja dikosongkan]

ii

TUGAS AKHIR KI141502

DESIGN AND CONSTRUCTION ANDROID BASED


APPLICATION OF FOOD SECURITY
AHMAD FAUZI AL WAHID
NRP 5111100057
Dosen Pembimbing
Daniel Oranova Siahaan, S.Kom, M.Sc, PD.Eng
Abdul Munif, S.Kom, M.Sc
JURUSAN TEKNIK INFORMATIKA
Fakultas Teknologi Informasi
Institut Teknologi Sepuluh Nopember
Surabaya 2015

iii

[Halaman ini sengaja dikosongkan]

iv

LEMBAR PENGESAHAN
RANCANG BANGUN APLIKASI UJI KEAMANAN
MAKANAN BERBASIS ANDROID
TUGAS AKHIR
Diajukan Guna Memenuhi Salah Satu Syarat
Memperoleh Gelar Sarjana Komputer
pada
Rumpun Mata Kuliah Manajemen Informasi
Program Studi S-1 Jurusan Teknik Informatika
Fakultas Teknologi Informasi
Institut Teknologi Sepuluh Nopember

Oleh:
AHMAD FAUZI AL WAHID
NRP: 5111 100 057
Disetujui oleh Dosen Pembimbing Tugas Akhir:
Daniel Oranova S., S.Kom., M.Sc., P.D.Eng.

NIP: 1974112320060411001.

................................
(pembimbing 1)

Abdul Munif, S.Kom., M.Sc.


NIP: 5100201301005

................................
(pembimbing 2)

SURABAYA
DESEMBER 2015

[Halaman ini sengaja dikosongkan]

vi

RANCANG BANGUN APLIKASI UJI KEAMANAN


MAKANAN BERBASIS ANDROID
Nama Mahasiswa
NRP
Jurusan
Dosen Pembimbing 1
Dosen Pembimbing 2

:
:
:
:

AHMAD FAUZI AL WAHID


5111100057
Teknik Informatika FTIF-ITS
Daniel Oranova S., S.Kom.,
M.Sc.,P.D.Eng.
: Abdul Munif, S.Kom., M.Sc

Abstrak
Makanan merupakan kebutuhan pokok bagi manusia.
Berbagai macam makanan dapat dijumpai di pasaran setiap hari.
Namun, saat ini di pasaran masih banyak terdapat bahan-bahan
tambahan makanan berbahaya pada sejumlah produk pangan.
Karena banyak pelaku bisnis makanan yang melakukan segala
cara untuk menghasilkan makanan yang menarik dan tahan lama
yang disebabkan tingginya daya saing dalam berbisnis makanan.
Pelaku bisnis tersebut menambahkan bahan-bahan tambahan
makanan berbahaya pada sejumlah produk pangan. Padahal
bahan-bahan tersebut mengandung risiko bahaya yang
tersembunyi
sehingga
pelaku
bisnis
tersebut
tidak
mengetahuinya.
Untuk mengetahui kandungan zat berbahaya pada makanan,
serangkaian tes uji coba dilakukan. Salah satunya dengan
menggunakan Food Security Test Kit. Food Security Test Kit
adalah seperangkat alat untuk menentukan kadar sejumlah zat
kimia berbahaya yang terkandung dalam makanan. Pada
seperangkat alat ini terdapat reagen yang dapat memberikan
perubahan warna pada sampel uji. Kemudian perubahan warna
tersebut akan dibandingkan dengan warna standar yang
menentukan kadar dari zat kimia yang terkandung dari sampel
tersebut. Proses semacam ini dilakukan secara manual yaitu

vii

hanya dengan melihat dan membandingkan warna hasil reaksi


sampel dengan warna standar.
Proses pengujian dengan cara semacam ini dapat
menimbulkan permasalahan dimana kondisi orang yang
melakukan yang melakukan uji coba tidak optimal. Terjadilah
kesalahan dalam membandingkan warna akibat human error.
Maka dari itu dibutuhkan sebuah alat bantu atau sistem yang
dapat mendukung proses pengujian makanan.
Pada tugas akhir ini akan dibangun sebuah aplikasi yang
membantu uji keamanan makanan yang mendukung prosedur
Food Security Test Kit. Aplikasi ini dibangun berbasis Android
dan diimplementasikan pada perangkat bergerak. Aplikasi ini
dapat mendeteksi kadar zat pada sampel, mencatatnya ke dalam
basis data, dan kemudian menampilkannya pada halaman
utama.
Selain itu aplikasi ini membutuhkan sistem yang membantu
pengujian untuk mendapatkan hasil yang optimal. Sistem ini
terdiri kotak hitam berbahan akrilik untuk tempat sampel yang
akan diuji, lampu untuk memberikan cahaya dari dalam, botol
plastik putih untuk meratakan pencahayaan dari lampu. Sistem
ini dibangun dengan tujuan untuk memberikan variabel cahaya
yang tetap.
Kata kunci: Aplikasi Android, Food Security Test Kit, Uji
Keamanan Makanan

viii

DESIGN AND CONSTRUCTION ANDROID BASED


APPLICATION OF FOOD SECURITY
Nama Mahasiswa
NRP
Jurusan
Dosen Pembimbing 1
Dosen Pembimbing 2

:
:
:
:

AHMAD FAUZI AL WAHID


5111100057
Teknik Informatika FTIF-ITS
Daniel Oranova S., S.Kom.,
M.Sc.,P.D.Eng.
: Abdul Munif, S.Kom., M.Sc

Abstract
Food is basic needs for human.. Various kinds of food can
be found in market every day. However, todays market are still
many dangerous food additive in some food products. Because
many person in food business are doing everything they can to
produce food that is attractive and durable due to the high
competitiveness in the food businesses. That person in food
business add dangerous food additive in some food products.
Though these food additive contain a hidden dangers that other
people do not know.
To find out the content of dangerous substances in foods, a
series of tests performed trials. One of them using Food Security
Test Kit. Food Security Test Kit is a set of tools that detect the
levels of a dangerous substance which contained in food. In these
tools, there is a set of reagents that can provide color changes in
test sample. Then the color change will be compared with the
standard color that determines levels of substances from sample.
This kind of process is done manually, simply by looking and
comparing the color from sample with standard color.
The testing process like this way can lead to problems where
the condition of the person who doing the testing is not optimal.
An error can happen in comparing the color due to human error.
Therefore we need a tool or system that can support the process

ix

of food safety testing.


In this final project will be built an application that helps
food safety testing procedures which support the Food Security
Test Kit. This application is built based on Android and
implemented on mobile devices. This application can detect
levels of a substance in a sample, store it to the database, and
display it on the home page.
Moreover these applications require a system that can
support food testing to obtain optimal results. The system
consists a black box made of acrylic for sample container, a lamp
to provide light from within, a white plastic bottles to spread the
lighting of the lamp. This system is built with purpose to provide
consistency of the light.
Keywords: Android Application, Food Security Test Kit, Food
Safety Test

DAFTAR ISI
BAB I PENDAHULUAN.............................................................1
1.1 Latar Belakang............................................................... 1
1.2 Rumusan Masalah.......................................................... 2
1.3 Batasan Masalah.............................................................3
1.4 Tujuan.............................................................................3
1.5 Manfaat...........................................................................3
1.6 Metodologi..................................................................... 3
1.7 Sistematika Penulisan Laporan Tugas Akhir..................5
BAB II TINJAUAN PUSTAKA................................................... 7
2.1 Food Safety Test Kit........................................................7
2 2.1.5 Mercury................................................................... 8
2.2 Android...........................................................................8
2.3 Java.................................................................................9
2.4 Android SDK..................................................................9
2.5 Kakas Kerja Android Studio.......................................... 9
2.6 MySQL...........................................................................9
2.7 JSON............................................................................ 10
BAB III ANALISIS DAN PERANCANGAN SISTEM............ 11
3.1 Analisis Perangkat Lunak............................................. 11
3.2 Perancangan Perangkat Lunak..................................... 21
BAB IV IMPLEMENTASI.........................................................39
4.1 Implementasi Antarmuka............................................. 39
4.2 Implementasi Fitur....................................................... 41
BAB V PENGUJIAN DAN EVALUASI....................................52
5.1 Lingkungan Pelaksanaan Pengujian.............................52
5.2 Skenario Pengujian.......................................................52
5.3 Evaluasi Pengujian....................................................... 52
BAB VI KESIMPULAN DAN SARAN.................................... 53
6.1 Kesimpulan...................................................................53
6.2 Saran.............................................................................53

xi

3[Halaman ini sengaja dikosongkan]

xii

DAFTAR GAMBAR
4
Gambar 3.1 Desain Arsitektur Sistem.........................................13
Gambar 3.2 Diagram Kasus Penggunaan................................... 14
Gambar 3.3 Diagram Aktifitas Mendapatkan Hasil Uji
Keamanan Makanan....................................................................16
Gambar 3.4 Diagram Aktifitas Mencatat Data Hasil Uji
Keamanan Makanan....................................................................18
Gambar 3.5 Diagram Aktifitas Menampilkan Data Hasil Uji
Keamanan Makanan....................................................................20
Gambar 3.6 Diagram Kelas Mendapatkan dan Mencatat Hasil Uji
Keamanan Makanan....................................................................24
Gambar 3.7 Diagram Kelas Menampilkan Data Hasil Uji
Keamanan Makanan....................................................................25
Gambar 3.8 Diagram Sekuensial Mendapatkan Hasil Uji
Keamanan Makanan....................................................................27
Gambar 3.9 Diagram Sekuensial Mencatat Data Hasil Uji
Keamanan Makanan....................................................................28
Gambar 3.10 Diagram Sekuensial Mencatat Data Hasil Uji
Keamanan Makanan....................................................................29
Gambar 3.11 Diagram Alir Mendapatkan Hasil Uji Keamanan
Makanan......................................................................................32
Gambar 3.12 Diagram Alir Mencatat Data Hasil Uji Keamanan
Makanan......................................................................................33
Gambar 3.13 Diagram Alir Menampilkan Data Hasil Uji
Keamanan Makanan....................................................................34
Gambar 3.14 Conceptual Data Model Sistem............................ 35
Gambar 4.1 Antarmuka Halaman Uji Makanan......................... 40
Gambar 4.2 Antarmuka Halaman Tambah Uji........................... 40

xiii

6[Halaman ini sengaja dikosongkan]

xiv

DAFTAR TABEL
7
Tabel 3.1 Keterangan Kasus Kode Penggunaan......................... 14
Tabel 3.2 Spesifikasi Kasus Penggunaan Mendapatkan Hasil Uji
Keamanan Makanan....................................................................15
Tabel 3.3 Spesifikasi Kasus Penggunaan Mencatat Data Hasil Uji
Keamanan Makanan....................................................................16
Tabel 3.4 Spesifikasi Kasus Penggunaan Mencatat Data Hasil Uji
Keamanan Makanan....................................................................18
Tabel 3.5 Daftar Kebutuhan Fungsional Sistem......................... 21
Tabel 3.6 Deskripsi Perancangan Antarmuka Aplikasi.............. 36

xv

[Halaman ini sengaja dikosongkan]

xvi

DAFTAR KODE SUMBER


Kode Sumber 4.1 Baris Kode Fitur Mendapatkan Hasil Uji
Keamanan Makanan pada Kelas NewFoodTestActivity.............44
Kode Sumber 4.2 Baris Kode Fitur Mendapatkan Hasil Uji
Keamanan Makanan pada Kelas ColorBars................................45
Kode Sumber 4.3 Baris Kode Fitur Mendapatkan Hasil Uji
Keamanan Makanan pada Kelas Reagent...................................45
Kode Sumber 4.4 Baris Kode Fitur Mendapatkan Hasil Uji
Keamanan Makanan pada Kelas Sample.................................... 46
Kode Sumber 4.5 Baris Kode Fitur Mendapatkan Hasil Uji
Keamanan Makanan pada Kelas ColorComparators.................. 46
Kode Sumber 4.6 Baris Kode Fitur Mencatat Data Hasil Uji
Keamanan Makanan pada Kelas NewFoodTestActivity.............48
Kode Sumber 4.7 Baris Kode Fitur Mencatat Data Hasil Uji
Keamanan Makanan pada Kelas ClientConnect.........................49
Kode Sumber 4.8 Baris Kode Fitur Menampilkan Data Hasil Uji
Keamanan Makanan pada Kelas ClientConnect.........................51

xvii

[Halaman ini sengaja dikosongkan]

xviii

8BAB I
9PENDAHULUAN
10
1.1 Latar Belakang
Makanan merupakan kebutuhan pokok bagi manusia.
Makanan dibutuhkan untuk memperoleh energi yang digunakan
untuk beraktifitas sehari-hari. Berbagai macam makanan dapat
dijumpai di pasaran setiap hari. Hal ini membuat pelaku bisnis
makanan melakukan segala cara untuk menghasilkan makanan
yang menarik dan tahan lama karena daya saing yang tinggi
dalam berbisnis makanan. Pelaku bisnis tersebut menambahkan
bahan-bahan tambahan makanan berbahaya pada sejumlah
produk pangan. Padahal bahan-bahan tersebut mengandung
risiko bahaya yang tersembunyi sehingga pelaku bisnis tersebut
tidak mengetahuinya.
Saat ini di pasaran masih banyak terdapat bahan-bahan
tambahan makanan berbahaya pada sejumlah produk pangan.
Badan POM telah melakukan pengawasan paska pemasaran
melalui sampling dan pengujian laboratorium terhadap
589 sampel makanan yang beredar dengan hasil 86
(14,60%) sampel tidak memenuhi syarat (TMS) mutu
dan keamanan. Untuk produk dalam negeri dan produk luar
negeri ditindaklanjuti oleh Badan
POM, sedangkan untuk
produk Industri Rumah Tangga Pangan
(IRTP)
ditindaklanjuti oleh Dinas Kesehatan setempat. Apabila
dibandingkan dengan triwulan I tahun 2013, terjadi
peningkatan sampel makanan yang TMS sebesar 64,67%
dari 1.703 sampel yang diuji [1].
Untuk mengetahui kandungan zat berbahaya pada
makanan, serangkaian tes uji coba dilakukan. Misalnya, untuk
mengetahui kandungan boraks yang ada pada makanan dapat
dideteksi dengan menggunakan kertas kurkuma. Dalam
melakukan uji keamanan pada makanan ini masih ada beberapa
kendala yang dapat mengakibatkan kesalahan. Penyebab dari
kesalahan ini salah satunya berasal dari personil yang melakukan

deteksi mengalami kelelahan fisik maupun mental.


Terdapat serangkaian sistem untuk melakukan uji
keamanan makanan. Sistem ini terdiri dari alat-alat untuk
melakukan uji coba seperti vial atau botol kecil, alat untuk
pengukuran zat menggunakan kamera dan lampu, aplikasi
berbasis Android, dan server. Untuk pengukuran sebenarnya
cukup untuk menggunakan alat yang menggunakan kamera dan
lampu, tetapi perlu juga dibutuhkan aplikasi berbasis Android
untuk mencatat hasil pengujian ke dalam basis data di server.
Dengan aplikasi ini pengguna menjadi mudah untuk mencatat
maupun mengetahui laporan hasil uji cobanya sehingga
kelelahan fisik maupun mental dapat terkurangi.
Pada tugas akhir ini akan mengembangkan di bagian
aplikasi untuk uji keamanan pada makanan. Sistem ini
dikembangkan pada perangkat bergerak berbasis Android yang
berfungsi untuk mencatat aktifitas serta data-data hasil deteksi
pada uji keamanan makanan sehingga meringankan aktifitas dan
dapat mempermudah pengguna karena perangkat kerangka
bergerak ini fleksibel dan dapat dibawa kemana saja.
1.2 Rumusan Masalah
Rumusan masalah yang diangkat dalam tugas akhir
adalah sebagai berikut :
1. Bagaimana membuat aplikasi uji keamanan makanan
berbasis Android?
2. Bagaimana membuat aplikasi pada Android yang dapat
mendeteksi komposisi warna RGB (Red, Green, Blue) dari
gambar yang diambil?
3. Bagaimana menghubungkan antara sisi client pada
perangkat kerangka bergerak berbasis Android dengan
server?
1.3 Batasan Masalah
Permasalahan yang dibahas pada Tugas Akhir ini
memiliki beberapa batasan antara lain :

1.

2.

Aplikasi uji makanan dibuat pada perangkat bergerak


dengan kebutuhan spesifikasi minimal sistem operasi
Android 4.3 Jelly Bean, CPU 1.2 GHz, memori 1 GB, dan
kamera 5 MP.
Jenis uji yang dapat diproses oleh sistem hanya yang
termasuk dalam paramater uji pada Food Safety Test Kit,
yaitu Boraks, Methyl Yellow, Rhodamin B, Formalin,
Merkuri.

1.4 Tujuan
Tujuan dari tugas akhir ini adalah membangun sebuah
aplikasi uji keamanan makanan berbasis Android.
1.5 Manfaat
Manfaat dari tugas akhir ini adalah sebagai berikut.
1.
Mempermudah pengguna dalam melakukan uji keamanan
pada makanan.
2.
Mengurangi tingkat kesalahan yang terjadi pada uji
keamanan pada makanan.
1.6 Metodologi
Langkah-langkah yang ditempuh dalam pengerjaan
tugas akhir ini yaitu :
1.

Studi Literatur
Pada tahap ini dilakukan pengumpulan dan penggalian
informasi dan literatur yang diperlukan dalam proses
perancangan dan implementasi aplikasi yang akan dibangun.
Literatur yang digunakan adalah sebagai berikut.
a. Food Test Safety Kit
b. Pengembangan aplikasi pada perangkat kerangka
bergerak berbasis Android menggunakan kakas bantu
Android Studio dan Android SDK (Software
Development Kit).
c. MySQL
d. JSON

2.

Analisis dan Perancangan Sistem


Pada tahap ini dilakukan analisis dan pendefinisian
kebutuhan sistem untuk mengetahui masalah yang sedang
dihadapi. Selanjutnya, dirumuskan rancangan sistem yang dapat
memberi solusi pada masalah tersebut dengan beberapa tahap
sebagai berikut.
a. Analisis aktor yang terlibat di dalam sistem.
b. Perancangan diagram use case yang merupakan analisis
kebutuhan pada aplikasi yang akan dibangun.
c. Perancangan proses aplikasi.
d. Perancangan sistem komunikasi antara server dengan
perangkat Android.
e. Perancangan antarmuka pada aplikasi Android.
3.

Implementasi
Pada tahap ini dilakukan pembuatan elemen perangkat
lunak. Sistem yang dibuat berpedoman pada rancangan yang
telah dibuat pada proses perancangan dan analisis sistem.
Perincian tahap ini adalah sebagai berikut.
a. Implementasi antarmuka aplikasi Android.
b. Implementasi pendeteksi kadar zat berbahaya pada
makanan.
c. Implementasi komunikasi antara server dengan aplikasi.
4.

Pengujian dan Evaluasi


Pada tahap ini dilakukan uji coba terhadap perangkat
lunak menggunakan skenario yang telah dipersiapkan
sebelumnya. Uji coba dan evaluasi perangkat dilakukan untuk
mencari masalah yang mungkin timbul, mengevaluasi jalannya
program, dan mengadakan perbaikan jika ada kekurangan.
Tahapan-tahapan dan uji coba yang akan dilakukan adalah
sebagai berikut.
a. Uji coba implementasi pendeteksi kadar zat keamanan
pada makanan.

b. Uji coba implementasi komunikasi server dengan


aplikasi.
5.

Penyusunan Buku Tugas Akhir


Pada tahap ini dilakukan pendokumentasian dan
pelaporan dari seluruh konsep, dasar teori, implementasi, proses
yang telah dilakukan, dan hasil-hasil yang telah didapatkan
selama pengerjaan tugas akhir.
1.7 Sistematika Penulisan Laporan Tugas Akhir
Buku tugas akhir ini bertujuan untuk mendapatkan
gambaran dari pengerjaan tugas akhir ini dan diharapkan dapat
berguna untuk pembaca yang tertarik untuk melakukan
pengembangan lebih lanjut. Secara garis besar, buku tugas akhir
terdiri atas beberapa bagian seperti berikut ini.
Bab I Pendahuluan
Bab ini berisi latar latar belakang, rumusan masalah,
batasan masalah, tujuan, manfaat, metodologi yang
digunakan, dan sistematika penyusunan tugas akhir.
Bab II Tinjauan Pustaka
Bab ini membahas beberapa teori penunjang yang
berhubungan degan pokok pembahasan dan mendasari
pembuatan tugas akhir ini.
Bab III Analisis dan Perancangan Sistem
Bab ini membahas mengenai perancangan perangkat lunak.
Perancangan perangkat lunak meliputi perancangan data,
arsitektur, proses, dan perancangan antarmuka pada kakas.
Bab IV Implementasi
Bab ini berisi implementasi dari perancangan perangkat
lunak.
Bab V Pengujian dan Evaluasi
Bab ini membahas pengujian dari aplikasi yang dibuat
dengan melihat output yang dihasilkan aplikasi, dan
evaluasi untuk mengetahui kemampuan aplikasi.
Bab VI Kesimpulan dan Saran

Bab ini berisi kesimpulan dan hasil pengujian yang


dilakukan serta saran-saran untuk pengembangan aplikasi
pada masa mendatang.
Daftar Pustaka
Merupakan daftar referensi yang digunakan untuk
mengembangkan tugas akhir.
Lampiran
Merupakan bab tambahan yang berisi daftar istilah penting
pada aplikasi ini.
1

11BAB II
12TINJAUAN PUSTAKA
13
Pada bab ini akan dibahas mengenai tinjauan pustaka
yang menjadi dasar dari pembuatan tugas akhir.
2.1 Food Safety Test Kit
Untuk mendeteksi zat berbahaya pada makanan,
serangkaian tes dilakukan menggunakan Food Safety Test Kit.
Beberapa jenis zat berbahaya yang termasuk dalam pengujian
menggunakan Food Safety Test Kit ini antara lain :
2.1.1 Borax
Borax,
juga
dikenal
sebagai
natrium
borat
(Na2B4O7.10H2), dan asam borat (H3BO3), adalah, zat garam
seperti bewarna yang juga dapat menjadi bubuk putih. Ini adalah
bahan untuk solder, pemutih membersihkan, menjaga kayu,
antiseptik kayu, dan mengendalikan kecoak. Sinonim biborat
sodium, natrium perborat, natrium tetraborat. Nature bewarna
putih dan sedikit larut dalam air. Konsumsi Sering boraks oleh
manusia dapat menyebabkan otak, hati, lemak, dan gagal ginjal.
Dalam jumlah besar, boraks menyebabkan demam, anuria (tidak
ada pembentukan urin), koma, merangsang sistem saraf pusat,
menyebabkan depresi, apatis, sianosis, penurunan tekanan darah,
kerusakan ginjal, tidak sadarkan diri, dan bahkan kematian.

2.1.2 Methyl Yellow


Methyl Yellow adalah pewarna sintetis kuning
kecoklatan. Zat ini terdapat dalam bentuk padat atau bubuk.
Pewarna ini digunakan untuk tekstil noda dan cat. Ciri-ciri
makanan yang mengandung kuning Metanil adalah: mencolok
kuning dan cenderung berpendar, dan memiliki banyak titik-titik
warna (karena heterogenitas nya), misalnya pada kerupuk. Metil

Kuning juga merupakan salah satu pewarna berbahaya. Hal ini


dilarang untuk ditambahkan ke makanan. Hal ini juga sering
digunakan sebagai indikator reaksi netralisasi asam-basa.
2.1.3 Rhodamine B
Rhodamin B adalah pewarna sintetis, yang biasanya
digunakan dalam industri tekstil dan kertas. Dibutuhkan bentuk
bubuk kristal keunguan merah, atau cairan merah neon terang.
Ciri-ciri makanan yang mengandung rhodamin B adalah: warna
mencolok merah dan cenderung fluoresensi, telah dihiasi warna
karena heterogen.
2.1.4 Formaldehida / Formalin
Trioksimetilen, metanal, metilen oksida) adalah cairan
yang terbentuk dari formaldehida dicampur dengan sedikit
alkohol. Solusi ini tidak bewarna, tapi menjengkelkan bau.
Formalin biasanya digunakan sebagai pengawet mayat, bahan
baku untuk lem kayu lapis melamin pada furnitur. Formalin juga
biasa digunakan sebagai disinfektan, antiseptik, penghilang bau,
fiksasi jaringan dan fumigan, dan sering digunakan dalam
industri tekstil.
22.1.5 Mercury
Penggunaan utama dari merkuri dalam termometer,
barometer dan instrumen ilmiah lainnya. Hal ini biasanya
ditemukan di turunan dari cinnabar mineral.
2.2 Android
Android adalah sistem operasi berbasis Linux yang
dirancang untuk perangkat seluler layar sentuh seperti telepon
pintar dan komputer tablet [2]. Sistem operasi ini dirilis secara
resmi pada tahun 2007, bersamaan dengan didirikannya Open
Handset Alliance, konsorsium dari perusahaan-perusahaan
perangkat keras, perangkat lunak, dan telekomunikasi yang

bertujuan untuk memajukan standar terbuka perangkat seluler


[3].
2.3 Java
Java adalah bahasa pemrograman yang dapat dijalankan
di berbagai komputer termasuk telepon genggam. 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
umum/non-spesifik (general purpose), dan secara khusus
didesain 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 di mana pun". 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.
2.4 Android SDK
Android SDK (Software Development Kit) merupakan
bagian dari pengembangan perangkat lunak Android yang di
dalamnya terdapat perangkat pengembangan, emulator, dan
library yang dibutuhkan.
2.5 Kakas Kerja Android Studio

Android Studio adalah sebuah IDE (Integrated


Development Environtment) untuk perangkat lunak berbasis
Android [5].
2.6 MySQL
MySQL adalah perangkat lunak basis data open source

10

yang paling populer di dunia dengan lebih dari 100 juta kopi
perangkat lunak yang telah diunduh atau didistribusikan [6].
2.7 JSON
JSON (JavaScript Object Notation) adalah format
pertukaran data yang ringan, mudah dibaca dan ditulis oleh
manusia, serta mudah diterjemahkan dan dibuat (generate) oleh
komputer. Format ini dibuat berdasarkan bagian dari Bahasa
Pemrograman JavaScript, Standar ECMA-262 Edisi ke-3 Desember 1999. JSON merupakan format teks yang tidak
bergantung pada bahasa pemrograman apapun karena
menggunakan gaya bahasa yang umum digunakan oleh
programmer keluarga C termasuk C, C++, C#, Java, JavaScript,
Perl, Python, dan lain-lain. Oleh karena sifat-sifat tersebut,
menjadikan JSON ideal sebagai bahasa pertukaran-data [7].

11

14BAB III
15ANALISIS DAN PERANCANGAN SISTEM
16
Bab ini membahas tahap analisis permasalahan dan
perancangan dari sistem yang akan dibangun. Analisis
permasalahan membahas permasalahan yang diangkat dalam
pengerjaan tugas akhir. Analisis kebutuhan mencantumkan
kebutuhan-kebutuhan yang diperlukan perangkat lunak.
Selanjutnya dibahas mengenai perancangan sistem yang dibuat.
3.1 Analisis Perangkat Lunak
Tahap analisis dibagi menjadi beberapa bagian antara
lain cakupan permasalahan, deskripsi umum sistem, kasus
penggunaan sistem, dan kebutuhan perangkat lunak.
3.1.1 Domain Permasalahan
Makanan merupakan salah satu kebutuhan pokok
manusia. Gizi dan nutrisinya dibutuhkan untuk beraktifitas dalam
kehidupan sehari-hari. Tetapi zat berbahaya juga bisa terdapat
dalam makanan yang kita makan dan orang-orang pada
umumnya tidak mengetahuinya. Maka dari itu. keamanan pada
makanan menjadi hal yang mendesak untuk dibahas dan dicari
solusi permasalahannya.
Untuk mengetahui kandungan zat berbahaya pada
makanan, maka serangkaian tes uji keamanan makanan
dilakukan. Tetapi dalam melakukan uji keamanan pada makanan
ini sendiri, ternyata masih terdapat beberapa kendala. Salah
satunya adalah ketika seorang penguji mengalami kelelahan fisik
maupun mental akibat bekerja yang terlalu keras.
Dari permasalahan tersebut, dikembangkan sebuah
aplikasi untuk uji keamanan pada makanan berbasis Android.
Aplikasi ini dapat menghasilkan kadar yang ada pada uji
keamanan makanan dengan menggunakan kamera yang ada pada
perangkat bergerak Android. Untuk menggunakan aplikasi ini, uji
keamanan makanan dilakukan pada sebuah sistem. Sistem ini

12

terdiri dari alat-alat untuk melakukan uji seperti vial, tempat yang
pekat terhadap cahaya luar, dan lampu sebagai sumber cahaya
dalam. Sistem ini juga harus terhubung dengan listrik untuk
menyalakan lampu. Setelah melakukan pengujian, aplikasi ini
dapat mencatat data hasil uji ke server dan menampilkannya
kembali.
Dengan adanya aplikasi tersebut, penguji menjadi lebih
mudah dalam melakukan pengujian baik dalam hal mendapatkan
hasil uji, maupun mencatat hasil uji tersebut. Aplikasi ini terdapat
pada perangkat bergerak yang bersifat fleksibel dan tidak
membutuhkan tenaga yang banyak sehingga dapat meringankan
aktifitas penguji.
3.1.2 Deskripsi Umum
Berdasarkan permasalahan yang ada pada pembahasan
domain permasalahan, solusi aplikasi yang ditawarkan adalah
pembuatan aplikasi dengan memanfaatkan kamera belakang
perangkat bergerak Android untuk mendapatkan hasil pada uji
keamanan makanan. Aplikasi dapat mendeteksi warna RGB pada
vial atau tabung kecil dalam uji keamanan makanan melalui
gambar yang telah diambil dengan kamera perangkat bergerak
Android. Setelah warna dideteksi, hasil uji bisa didapatkan dan
dicatat pada basis data di server.
Untuk melakukan uji keamanan makanan menggunakan
aplikasi ini, membutuhkan kondisi yang valid atau tidak
berubah-ubah sehingga dibuatlah sebuah sistem. Sistem ini
sebagai wadah atau tempat untuk vial yang sudah siap untuk diuji
dan dilihat hasilnya. Sistem ini bersifat kedap dari cahaya luar
sehingga pada sistem ini hanya terdapat satu sumber cahaya yaitu
melalui lampu kecil yang berada di dalam sistem tersebut. Untuk
menyalakan sumber cahaya tersebut, sistem ini harus tersambung
dengan listrik. Sumber cahaya ini dibutuhkan untuk menyinari
vial yang nantinya akan diambil gambarnya melalui kamera
perangkat bergerak Android.

13

3.1.3 Arsitektur Sistem


Pada aplikasi yang dibuat pada tugas akhir ini,
pengguna dapat mendeteksi RGB dari vial yang akan diuji dan
mendapatkan hasil ujinya. Setelah itu, hasil uji dicatat ke basis
data yang ada di server. Aplikasi juga bisa menampilkan hasil uji
yang telah dilakukan sebelumnya dengan mengambil data hasil
uji yang ada di server, lalu menampilkannya. Berikut gambaran
arsitektur aplikasi yang akan dibuat.

Gambar 3.1 Desain Arsitektur Sistem

3.1.4 Aktor
Aktor mendefinisikan entitas-entitas yang terlibat dan
berinteraksi langsung dengan sistem. Entitas ini bisa berupa
manusia maupun sistem atau perangkat lunak yang lain. Aktor
yang menjadi pengguna sistem pada sistem yang akan dibuat di
tugas akhir ini adalah penguji pada uji keamanan makanan.
Penguji menggunakan sistem yang dibangun pada perangkat
bergerak berbasis Android yang digunakan untuk mendapatkan
hasil dari uji keamanan makanan.
3.1.5 Kasus Penggunaan
Pada subbab ini akan dijelaskan kasus penggunaan yang
dibutuhkan pada sistem sesuai dengan analisis yang telah
dilakukan. Diagram kasus penggunaan dapat dilihat pada
Gambar 3.2 dan kode kasus penggunaan terdapat pada Tabel 3.1.

14

Gambar 3.2 Diagram Kasus Penggunaan

Sedangkan untuk kode kasus penggunaan dapat dilihat


pada tabel berikut.
Tabel 3.1 Keterangan Kasus Kode Penggunaan

Kode Kasus
Penggunaan
UC-001
UC-002
UC-003

3.1.5.1

Kasus Penggunaan
Mendapatkan hasil uji keamanan makanan
Mencatat data hasil uji keamanan makanan
Menampilkan data hasil uji keamanan
makanan

Mendapatkan Hasil Uji Keamanan Makanan


Pada kasus penggunaan ini, pengguna mendapatkan
hasil uji keamanan makanan dengan cara mengambil gambar dari
uji keamanan makanan melalui kamera yang terdapat pada
perangkat bergerak berbasis Android. Setelah
mengambil
gambar, pengguna memasukkan nama makanan dan nama reagen.
Kemudian pengguna bisa mendapatkan hasil uji keamanan
makanan. Spesifikasi kasus penggunaan ini dapat dilihat pada
Tabel 3.2 dan diagram aktifitas pada Gambar 3.3.

15

Tabel 3.2 Spesifikasi Kasus Penggunaan Mendapatkan Hasil Uji


Keamanan Makanan

Nama
Kode
Deskripsi

Tipe
Pemicu
Aktor
Kondisi Awal

Aliran :
- Kejadian
Normal

- Kejadian
Alternatif
Kondisi Akhir

Mendapatkan Hasil Uji Keamanan Makanan


UC-001
Untuk mendapatkan hasil uji keamanan
makanan, pengguna mengambil gambar dari
hasil uji keamanan makanan melalui kamera
pada perangkat bergerak berbasis Android,
kemudian memasukkan nama makanan dan
nama reagen.
Fungsional
Pengguna menekan tombol Lihat Hasil.
Penguji
Penguji berada pada halaman Tambah Uji,
telah mengambil pada gambar uji keamanan
makanan, serta telah memasukkan nama
makanan dan nama reagen.
1. Pengguna menekan tombol Ambil
Gambar
2. Pengguna mengambil gambar pada hasil
uji keamanan makanan
3. Pengguna memasukkan nama makanan
dan nama reagen.
4. Pengguna menekan tombol Lihat Hasil.
5. Sistem
menerima
masukan
dan
menganalisisnya.
Sistem menampilkan hasil uji keamanan
makanan yang telah dianalisis.

16

Gambar 3.3 Diagram Aktifitas Mendapatkan Hasil Uji Keamanan


Makanan

3.1.5.2

Mencatat Data Hasil Uji Keamanan Makanan


Pada kasus penggunaan ini, sistem menerima masukan
data dari penguji. Masukan ini berupa nama makanan, nama
reagen, dan hasil uji yang sudah dilakukan sebelumnya. Sistem
mencatat hasil uji ke basis data yang ada di server. Penjelasan
spesifikasi kasus penggunaan ini dapat dilihat pada Tabel 3.3 dan
diagram aktifitas pada Gambar 3.4.
Tabel 3.3 Spesifikasi Kasus Penggunaan Mencatat Data Hasil Uji
Keamanan Makanan

Nama

Mencatat Data Hasil Uji Keamanan Makanan

17

Kode
Deskripsi

Tipe
Pemicu
Aktor
Kondisi Awal
Aliran :
- Kejadian
Normal
- Kejadian
Alternatif
Kondisi Akhir

UC-002
Sistem menerima masukan berupa nama
makanan, nama reagen, dan hasil uji keamanan
makanan untuk selanjutnya dicatat di basis
data yang ada di server.
Fungsional
Tombol centang () pada menu halaman
Tambah Uji.
Penguji
Pengguna berada pada halaman Tambah Uji.
1. Sistem mencatat ke basis data yang ada
server berdasarkan masukan.
A1. Tidak semua masukan diisi
A1. Tidak semua masukan diisi
1. Sistem menampilkan pesan atau warning
bahwa semua masukan harus diisi.
Masukan berhasil tercatat pada basis data yang
ada di server.

18

Gambar 3.4 Diagram Aktifitas Mencatat Data Hasil Uji Keamanan


Makanan

3.1.5.3

Menampilkan Data Hasil Uji Keamanan Makanan


Pada kasus penggunaan ini, sistem menampilkan hasil
uji keamanan makanan yang telah dilakukan.oleh penguji. Sistem
menampilkan nama makanan, nama reagen, dan hasil uji.
Penjelasan spesifikasi kasus penggunaan ini ada dalam Tabel 3.4
dan diagram aktifitas pada Gambar 3.5.
Tabel 3.4 Spesifikasi Kasus Penggunaan Mencatat Data Hasil Uji
Keamanan Makanan

Nama
Kode

Menampilkan Data Hasil Uji Keamanan


Makanan
UC-003

19

Deskripsi
Tipe
Pemicu
Aktor
Kondisi Awal
Aliran :
- Kejadian
Normal
- Kejadian
Alternatif
Kondisi Akhir

Sistem menampilkan data hasil uji keamanan


makanan berupa nama makanan, nama reagen,
dan hasil uji.
Fungsional
Membuka aplikasi
Penguji
Pengguna berada pada halaman awal yaitu
halaman Uji Makanan.
1. Sistem menampilkan data hasil uji
keamanan makanan.
A1. Tidak ada data yang ditampilkan
A1. Tidak ada data yang ditampilkan
1. Sistem menampilkan halaman Tambah
Uji.
Berhasil menampilkan data hasil uji keamanan
makanan.

20

Gambar 3.5 Diagram Aktifitas Menampilkan Data Hasil Uji


Keamanan Makanan

3.1.6

Spesifikasi Kebutuhan Perangkat Lunak


Bagian ini berisi tenang kebutuhan perangkat lunak.
Kebutuhan perangkat lunak dalam sistem ini mencakup
kebutuhan fungsional saja. Pada bab ini juga dijelaskan tentang
spesifikasi terperinci pada masing-masing kebutuhan fungsional.
Rincian spesifikasi dari kasus penggunaan disajikan dalam
bentuk tabel.

3.1.6.1 Kebutuhan Fungsional Sistem


Kebutuhan fungsional berisi proses-proses yang
dibutuhkan sistem dan arus dijalankan. Kebutuhan fungsional

21

sistem dideskripsikan dalam Tabel 3.5.


Tabel 3.5 Daftar Kebutuhan Fungsional Sistem

Kode
Kebutuhan
F-001
F-002
F-003

Kebutuhan Fungsional

Deskripsi

Pengguna
bisa
Mendapatkan Hasil Uji
mendapatkan hasil uji
Keamanan Makanan
keamanan makanan.
Pengguna
dapat
Mencatat Data Hasil Uji
mencatat data hasil uji
Keamanan Makanan
keamanan makanan
Sistem menampilkan
Menampilkan Data Hasil
data
hasil
uji
Uji Keamanan Makanan
keamanan makanan.

3.2 Perancangan Perangkat Lunak


Penjelasan tahap perancangan perangkat lunak dibagi
menjadi beberapa bagian yaitu perancangan diagram kelas,
perancangan proses analisis, dan perancangan antarmuka.
3.2.1

Perancangan Diagram Kelas


Perancangan diagram kelas berisi kelas-kelas yang
dirancang untuk membangun sistem dan akan dijelaskan dalam
beberapa bagian.
3.2.2.1

Diagram Kelas Mendapatkan dan Mencatat Hasil


Uji Keamanan Makanan
Dalam mendapatkan hasil uji keamanan makanan,
terdapat satu kelas antarmuka dan enam kelas kongkrit yang
semuanya memiliki relasi antar kelas.
Kelas
NewFoodTestActivity
merupakan
kelas
antarmuka yang digunakan untuk menampung masukan dari
pengguna berupa nama makanan, nama reagen, dan hasil uji serta

22

mencatatnya ke basis data yang ada di server. Kelas ini juga


mengimplementasikan AsyncResponse dan menurunkan fungsi
yang dimiliki AsyncResponse. Di dalamnya terdapat fungsi
untuk mengambil letak berkas dari gambar yang telah diambil,
mengambil nama reagen, mendapatkan hasil uji, mencatat dalam
basis data di server, dan menerima tanggapan JSON dari server.
Kelas ColorBars merupakan kelas kongkrit yang
digunakan untuk mengambil nama uji, letak berkas gambar, dan
nilai uji dari semua data training yang telah diambil. Di
dalamnya terdapat fungsi untuk membaca file teks yang berisi
nama uji, letak berkas gambar, dan nilai uji dari semua data
training.
Kelas Sample merupakan kelas kongkrit yang
digunakan untuk menempatkan sampel uji sehingga bisa
dianalisis selanjutnya. Di dalamnya terdapat fungsi untuk
mengambil letak berkas dari gambar yang telah diambil dan
menempatkannya.
Kelas Reagent merupakan kelas kongkrit yang
digunakan untuk menempatkan semua gambar data training yang
selanjutnya akan diambil dan digunakan untuk analisis sesuai
dengan reagen dari masukan. Di dalamnya terdapat fungsi
menempatkan semua gambar data training dan mengambilnya.
Kelas ColorComparators merupakan kelas kongkrit
yang digunakan untuk menganalisis antara sampel dengan data
training dengan cara dibandingkan warnanya yang sesuai dengan
sampel.. Di dalamnya terdapat fungsi mendapatkan hasil
perbandingan, mengonversi gambar data training, mengonversi
gambar sampel, mendapatkan warna RGB, mengonversi warna
dari RGB ke LAB, pengukuran kesamaan, voting dari
pengukuran kesamaan, dan menghitung voting.
Kelas KNNClassifier merupakan kelas kongkrit yang
digunakan sebagai metode klasifikasi dalam analisis. Di
dalamnya terdapat fungsi menentukan jumlah kelas,
mendapatkan prediksi, mendapatkan jarak Euclidian, mengukur
jarak, voting, mendapatkan centroid, mendapatkan threshold,

23

memeriksa outlier.
Kelas ClientConnect merupakan kelas kongkrit yang
digunakan untuk menghubungkan antara aplikasi dengan server.
Di dalamnya terdapat fungsi untuk menghubungkan antara
aplikasi dengan server yang berjalan di balik layar.
Kelas AsyncResponse merupakan interface yang berisi
signature fungsi untuk menerima tanggapan JSON dari server.
Diagram kelas mendapatkan hasil uji keamanan
makanan digambarkan pada Gambar 3.6.

24

Gambar 3.6 Diagram Kelas Mendapatkan dan Mencatat Hasil Uji Keamanan Makanan

25

3.2.2.2

Diagram Kelas Menampilkan Data Hasil Uji


Keamanan Makanan
Dalam aplikasi ini, terdapat satu kelas antarmuka dan
tiga kelas kongkrit yang semuanya memiliki relasi antar kelas.
Kelas DashboardActivity merupakan kelas antarmuka
yang digunakan untuk menampilkan data hasil uji keamanan
makanan dari basis data yang terdapat di server. Di dalamnya
terdapat fungsi untuk mengambil data dari server dan
menampilkannya pada aplikasi.
Kelas FoodTest merupakan kelas kongkrit yang
digunakan untuk menampung data dari server sesuai atribut.
Kelas ClientConnect merupakan kelas kongkrit yang
digunakan untuk menghubungkan antara aplikasi dengan server.
Di dalamnya terdapat fungsi untuk menghubungkan antara
aplikasi dengan server yang berjalan di balik layar.
Kelas AsyncResponse merupakan interface yang berisi
signature fungsi untuk menerima tanggapan JSON dari server.
Diagram kelas menampilkan data hasil uji keamanan
makanan digambarkan pada Gambar 3.7.

Gambar 3.7 Diagram Kelas Menampilkan Data Hasil Uji


Keamanan Makanan

26

3.2.2

Perancangan Diagram Sekuensial


Bagian ini akan menjelaskan perancangan diagram
sekuensial yang akan digunakan pada pembuatan tugas akhir.
3.2.2.3

Diagram Sekuensial Mendapatkan Hasil Uji


Keamanan Makanan
Diagram sekuensial mendapatkan hasil uji keamanan
makanan dapat dilihat pada Gambar 3.8.
3.2.2.4

Diagram Sekuensial Mencatat Data Hasil Uji


Keamanan Makanan
Diagram sekuensial mencatat data hasil uji keamanan
makanan dapat dilihat pada Gambar 3.9.
3.2.2.5

Diagram Sekuensial Menampilkan Data Hasil Uji


Keamanan Makanan
Diagram sekuensial menampilkan data hasil uji
keamanan makanan dapat dilihat pada Gambar 3.10.

27

Gambar 3.8 Diagram Sekuensial Mendapatkan Hasil Uji Keamanan Makanan

28

Gambar 3.9 Diagram Sekuensial Mencatat Data Hasil Uji Keamanan Makanan

29

Gambar 3.10 Diagram Sekuensial Mencatat Data Hasil Uji Keamanan Makanan

30

3.2.3

Perancangan Algoritma
Bagian ini akan menjelaskan perancangan algoritma
dalam proses yang akan digunakan pada pembuatan aplikasi.
3.2.3.1

Algoritma Mendapatkan Hasil Uji Keamanan


Makanan
Proses ini dimulai setelah pengguna mengisi masukan
dan mengambil gambar uji. Pengguna menekan tombol Lihat
Hasil kemudian sistem akan memproses gambar uji tersebut dan
menampilkan hasilnya. Untuk mendapatkan hasil uji keamanan
makanan, sistem melakukan perbandingan antara sampel yang
diambil dari gambar uji dengan data training. Perbandingan
warna ini menggunakan klasifikasi KNN dan bertujuan untuk
menemukan warna yang paling mendekati dengan warna yang
ada pada data training. Pada data training terdapat warna-warna
standar uji beserta kadar ujinya. Setelah warna yang paling
mendekati ditemukan, maka kadar uji yang sesuai dengan warna
tersebut akan ditampilkan sebagai hasil uji. Diagram Alir dapat
dilihat pada Gambar 3.11.
3.2.3.2

Algoritma Mencatat Data Hasil Uji Keamanan


Makanan
Proses ini dimulai ketika pengguna telah mengisi
masukan nama makanan dan nama reagen serta mendapatkan
hasil uji. Pengguna menekan tombol centang () pada menu
halaman Tambah Uji kemudian sistem akan memeriksa apakah
semua masukan telah diisi. Setelah itu, sistem akan mencatat data
ke basis data yang ada di server. Diagram Alir dapat dilihat pada
Gambar 3.12.
3.2.3.3

Algoritma Menampilkan Data Hasil Uji Keamanan


Makanan
Proses ini dimulai ketika pengguna telah membuka

31

aplikasi. Pada halaman awal aplikasi, sistem menampilkan data


hasil uji keamanan makanan dari server. Jika tidak ada data yang
ditampilkan, maka sistem akan menuju ke halaman Tambah
Uji. Diagram Alir dapat dilihat pada Gambar 3.13.

32

Gambar 3.11 Diagram Alir Mendapatkan Hasil Uji Keamanan


Makanan

33

Gambar 3.12 Diagram Alir Mencatat Data Hasil Uji Keamanan


Makanan

34

Gambar 3.13 Diagram Alir Menampilkan Data Hasil Uji


Keamanan Makanan

35

3.2.4

Perancangan Manajemen Data


Bagian ini akan menjelaskan perancangan basis data
yang akan digunakan dalam pembuatan sistem ini.
3.2.4.1

Perancangan Basis Data


Dalam perancangan basis data, sistem akan
menggunakan satu entitas yang direalisasikan dalam bentuk tabel.
Tabel tersebut adalah FoodTest. Tabel FoodTest berisi data hasil
uji keamanan makanan. Dari perancangan ini akan
diimplementasikan pada basis data MySQL.

Gambar 3.14 Conceptual Data Model Sistem

3.2.5

Perancangan Antarmuka
Pada bagian ini menjelaskan perancangan antarmuka
sistem yang akan dibuat.
3.2.5.1

Antarmuka Aplikasi Perangkat Bergerak


Pada aplikasi perangkat bergerak, antarmuka yang akan
ditampilkan meliputi antarmuka halaman uji makanan dan
tambah uji.

36

Tabel 3.6 Deskripsi Perancangan Antarmuka Aplikasi

Antarmuka
Uji Makanan

Keterangan
Deskripsi
Pada halaman uji makanan menampilkan daftar
hasil uji keamanan makanan yang telah
dilakukan dalam bentuk listview. Pada sebelah
kanan menu terdapat tombol untuk ke halaman
tambah uji.
Perancangan

Uji Makanan

Makanan :
Reagen :
Hasil :
Makanan :
Reagen :
Hasil :

Gambar 3.15 Perancangan Halaman Uji


Makanan

37

Tambah Uji

Deskripsi
Pada halaman tambah uji menampilkan tombol
untuk mengambil gambar dari kamera, dua edit
text masukan untuk memasukkan nama makanan
dan nama reagen, satu label untuk menampilkan
hasil uji, tombol untuk mendapatkan hasil uji,
dan tombol di sebelah kanan menu untuk
mencatat ke basis data di server.
Perancangan

Tambah Uji

Ambil Gambar

Makanan
Reagen
Hasil
Lihar Hasil

Gambar 3.16 Perancangan Antarmuka Halaman


Tambah Uji

38

[Halaman ini sengaja dikosongkan]

39

17BAB IV
18IMPLEMENTASI
Pada bab ini membahas mengenai implementasi dari
perancangan perangkat lunak yang didasarkan pada Bab III.
4.1 Implementasi Antarmuka
Pada subbab ini akan dijelaskan tentang implementasi
antarmuka sistem yang menjadi bagian terluar sekaligus bagian
yang akan berinteraksi langsung dengan pengguna.
4.1.1

Antarmuka Halaman Uji Makanan


Pada antarmuka halaman uji makanan menampilkan
daftar hasil uji keamanan makanan yang telah dilakukan dalam
bentuk listview. Pada sebelah kanan menu terdapat tombol untuk
ke halaman tambah uji. Tampilan antarmuka ini dapat dilihat
pada Gambar 4.1.
4.1.2

Antarmuka Halaman Tambah Uji


Pada antarmuka halaman tambah uji menampilkan
tombol untuk mengambil gambar dari kamera, dua edit text
masukan untuk memasukkan nama makanan dan nama reagen,
satu label untuk menampilkan hasil uji, tombol untuk
mendapatkan hasil uji, dan tombol di sebelah kanan menu untuk
mencatat ke basis data di server. Tampilan antarmuka ini dapat
dilihat pada Gambar 4.2.

40

Gambar 4.1 Antarmuka Halaman Uji Makanan

Gambar 4.2 Antarmuka Halaman Tambah Uji

41

4.2 Implementasi Fitur


Pada subbab ini menjelaskan implementasi yang berupa
baris kode yang sesuai dengan kebutuhan fungsional.
4.2.1

Fitur Mendapatkan Hasil Uji Keamanan Makanan


Fitur ini digunakan untuk mendapatkan hasil uji
keamanan makanan. Sistem mendapat sampel dari gambar uji
yang telah diambil melalui kamera perangkat bergerak. Sampel
digunakan untuk perbandingan warna dengan data training.
Perbandingan warna ini menggunakan klasifikasi KNN. Setelah
itu, sistem menampilkan hasil uji keamanan makanan.
@Override
protected
void
onCreate
(final
Bundle
savedInstanceState) {
final String [] items = new String [] {"Camera"};
ArrayAdapter<String> adapter = new ArrayAdapter<> (this,
android.R.layout.select_dialog_item,items);
AlertDialog.Builder
builder
=
new
AlertDialog.Builder(this);
builder.setTitle("Select Image");
builder.setAdapter(
adapter,
new
DialogInterface.OnClickListener() {
public void onClick( DialogInterface dialog, int item )
{
//pick from camera
if (item == 0) {
Intent
intent
=
new
Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, PICK_FROM_CAMERA);
}
}
});
final AlertDialog dialog = builder.create();
Button
buttonImage
=
(Button)
findViewById(R.id.btnCamera);
buttonImage.setOnClickListener(new
View.OnClickListener() {

42

@Override
public void onClick(View view) {
dialog.show();
}
});
}
@Override
protected void onActivityResult(int requestCode, int
resultCode, Intent data) {
super.onActivityResult(requestCode,
resultCode,
data);
Bitmap image = null;
if (resultCode != RESULT_OK) return;
switch (requestCode){
case PICK_FROM_CAMERA:
Bitmap
bitmap
=
(Bitmap)
data.getExtras().get("data");
if(bitmap != null){
Log.d("DaftarActivity", "Mengambil foto dari
kamera berhasil");
image = ThumbnailUtils.extractThumbnail(bitmap,
400, 400);
imageViewPhoto.setImageBitmap(image);
}else{
Log.d("DaftarActivity", "Mengambil foto dari
kamera gagal");
}
break;
}
//Button for create result
public void createResult(View view) {
reagent = getSelectedTest();
makeEmptySample();
}
//get sample with selected reagent
private Reagent getSelectedTest(){
Reagent test = new Reagent(getApplicationContext());
ArrayList<String> path = new ArrayList<String>();
ArrayList<String> value = new ArrayList<String>();

43

String
selectedTest
editTextReagent.getText().toString();
test.setTestName(selectedTest);
for(ArrayList<String>
listPath
this.colorBars.getColorBarPath()){
if(listPath.get(0).contains(selectedTest)){
path.add(listPath.get(1));
}
}
for(ArrayList<String>
listValue
this.colorBars.getColorBarValue()){
if(listValue.get(0).contains(selectedTest)){
value.add(listValue.get(1));
}
}
test.setColorBarsPath(path);
test.setColorBarValue(value);
return test;
}

=
:

//Make sample from taken picture


public void makeEmptySample(){
testSample = new Sample(getApplicationContext());
testSample.setTestName(reagent.getTestName());
Log.d("Main Activity",reagent.getTestName());
String path = getPicture();
testSample.setDateTime(dateTime);
testSample.setSamplePath(path);
Log.d("Main Activity", "path : " + path);
String resultValue = getResult();
testSample.setResult_mgl(resultValue);
Log.d("Main Activity", "result : " + resultValue);
setTestSample(testSample);
editTextResult.setText(testSample.getResult_mgl());
}
//get result function
private String getResult(){
ColorComparators colorComparators;
String result = null;

44

colorComparators = new ColorComparators(testSample,


reagent);
int
resultIndex
=
colorComparators.getCompareResult();
if(resultIndex == -1){
resultIndex = 0;
}
result
reagent.getColorBarValue().get(resultIndex);
Log.d("MainActivity", "RESULT = " + result);

return result;
}

Kode Sumber 4.1 Baris Kode Fitur Mendapatkan Hasil Uji


Keamanan Makanan pada Kelas NewFoodTestActivity
private void getAllColorBars() {
String line;
String testName = null;
String splitBy = ",";
try {
AssetManager assetManager = context.getAssets();
InputStream
input
=
assetManager.open("path_reagent.txt");
BufferedReader
bufferedReader
=
new
BufferedReader(new InputStreamReader(input, "UTF-8"));
while ((line = bufferedReader.readLine()) !=
null) {
String[] properties = line.split(splitBy);
if(!properties[0].equals(testName)) {
testName = properties[0];
foodTestNames.add(properties[0]);
}
this.foodTestCode.add(properties[1]);
ArrayList<String>
property
ArrayList<String>();
property.add(properties[1]);

new

45

property.add(properties[2]);
this.colorBarPath.add(property);
property = new ArrayList<String>();
property.add(properties[1]);
property.add(properties[3]);
this.colorBarValue.add(property);
}
} catch (IOException e) {
e.printStackTrace();
}
}

Kode Sumber 4.2 Baris Kode Fitur Mendapatkan Hasil Uji


Keamanan Makanan pada Kelas ColorBars
public void setColorBarsImage() {
colorBarsImage = new ArrayList<Bitmap>();
try {
for (String path : this.colorBarsPath) {
Log.d("Reagent", "the path : " + path);
AssetManager
assetManager
=
context.getAssets();
InputStream
inputStream
=
assetManager.open(path);
Drawable
drawable
=
Drawable.createFromStream(inputStream, null);
Bitmap selectedImage = ((BitmapDrawable)
drawable).getBitmap();
this.colorBarsImage.add(selectedImage);
}
}catch (IOException e){
e.printStackTrace();
}
}

Kode Sumber 4.3 Baris Kode Fitur Mendapatkan Hasil Uji


Keamanan Makanan pada Kelas Reagent
public void setSamplePath(String samplePath){
this.path = samplePath;
}
public Bitmap getSample() {

46

Bitmap bitmapSample = null;


String sampleImagePath = this.path;
bitmapSample =
BitmapFactory.decodeFile(this.getSamplePath());
Log.d("Sample", "sample path = " + sampleImagePath);
Log.d("Sample", " Sample = " + this.getSamplePath());
return bitmapSample;
}
public String getResult_mgl() {
return result_mgl;
}

Kode Sumber 4.4 Baris Kode Fitur Mendapatkan Hasil Uji


Keamanan Makanan pada Kelas Sample
public Integer getCompareResult() {
colorBarConversion();
sampleImageConversion();
similarityMeasure();
voteSimilarity();
return voteCount()-1;
}

Kode Sumber 4.5 Baris Kode Fitur Mendapatkan Hasil Uji


Keamanan Makanan pada Kelas ColorComparators

4.2.2

Fitur Mencatat Data Hasil Uji Keamanan Makanan


Fitur ini digunakan untuk mencatat data hasil uji
keamanan makanan ke basis data yang ada di server.
public
class
NewFoodTestActivity
ActionBarActivity implements AsyncResponse{
EditText editTextName;
EditText editTextReagent;
EditText editTextResult;
Button buttonCreate;
ImageView imageViewPhoto;

extends

47

private
static
String
url_create_foodtest
=
"http://10.151.43.62/foodtest";
ClientConnect clientConnect = new ClientConnect(this,
url_create_foodtest);
private static final String TAG_SUCCESS = "success";
@Override
protected
void
onCreate(final
savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_new_ft);

Bundle

setTitle("Tambah Uji");
editTextName
=
findViewById(R.id.etName);
editTextReagent
=
findViewById(R.id.etReagent);
editTextResult
=
findViewById(R.id.etResult);
buttonCreate
=
findViewById(R.id.btnCreate);
imageViewPhoto
=
findViewById(R.id.ivPhoto);

(EditText)
(EditText)
(EditText)
(Button)
(ImageView)

clientConnect.delegate = this;
}
private void newFoodTestFunction() {
String name = editTextName.getText().toString();
String
reagent
=
editTextReagent.getText().toString();
String
result
=
editTextResult.getText().toString();
String name_replaced = name.replaceAll(" ","_");
String reagent_replaced = reagent.replaceAll("
","_");
String result_replaced = result.replaceAll(" ","_");
if(!name.isEmpty()
||
!reagent.isEmpty()
|| !result.isEmpty()){
progressDialog
=
new
ProgressDialog(NewFoodTestActivity.this);

48

progressDialog.setMessage("Menambahkan....");
progressDialog.setIndeterminate(false);
progressDialog.setCancelable(true);
progressDialog.show();
String
urlParameter
=
"/create_foodtest.php?name_FoodTest=" + name_replaced +
"&reagent_FoodTest="
+
reagent_replaced
+
"&result_FoodTest=" + result_replaced;
clientConnect.execute(urlParameter);
}else {
Toast.makeText(this, "Tolong isi
kosong", Toast.LENGTH_SHORT).show();
}
}

tempat

yang

@Override
public void processFinish(String output) {
JSONObject json = new JSONObject();
try{
json = new JSONObject(output);
}catch (JSONException e){
e.printStackTrace();
}
progressDialog.dismiss();
try{
int success = json.getInt(TAG_SUCCESS);
if(success == 1){
Intent
intent
=
new
Intent(this,
DashboardActivity.class);
startActivity(intent);
finish();
}else {
Toast.makeText(this, "Gagal menambahkan",
Toast.LENGTH_SHORT).show();
}
}catch (JSONException e) {
e.printStackTrace();
}
}

Kode Sumber 4.6 Baris Kode Fitur Mencatat Data Hasil Uji
Keamanan Makanan pada Kelas NewFoodTestActivity

49

@Override
protected String doInBackground(String... args) {
String resp = "";
try {
String urlParameter = args[0].toString();
String url_t = this.baseUrl + urlParameter;
URL url = new URL(url_t);
HttpURLConnection conn = (HttpURLConnection)
url.openConnection();
conn.setRequestProperty("Content-Type",
"application/json");
conn.setRequestProperty("Accept",
"application/json");
conn.setRequestMethod("GET");
int statusCode = conn.getResponseCode();
InputStream is = null;
if (statusCode == 200) {
is = new
BufferedInputStream(conn.getInputStream());
BufferedReader br = new BufferedReader(new
InputStreamReader(is));
String line = "";
while ((line = br.readLine()) != null) {
resp += line;
}
is.close();
return resp;
} else {
resp = "{RESP : 'ERROR' }";
return resp;
}
}catch (Exception e){
return new String("Exc : " + e.getMessage());
}
}
@Override
protected void onPostExecute(String s) {
delegate.processFinish(s);
}

Kode Sumber 4.7 Baris Kode Fitur Mencatat Data Hasil Uji
Keamanan Makanan pada Kelas ClientConnect

50

4.2.3

Fitur Menampilkan Data Hasil Uji Keamanan


Makanan
Fitur ini digunakan untuk menampilkan data hasil uji
keamanan makanan dari basis data yang ada di server. Data yang
ditampilkan berupa nama makanan, nama reagen, dan hasil uji.
public class DashboardActivity extends
ActionBarActivity implements AsyncResponse {
private ProgressDialog progressDialog;
private static String url_all_foodtest =
"http://10.151.43.62/foodtest";
ClientConnect clientConnect = new
ClientConnect(this, url_all_foodtest);
private static final String TAG_SUCCESS = "success";
private static final String TAG_FOODTEST =
"foodtest";
private static final String TAG_ID = "id_FoodTest";
private static final String TAG_NAME =
"name_FoodTest";
private static final String TAG_REAGENT =
"reagent_FoodTest";
private static final String TAG_RESULT =
"result_FoodTest";
private static final String TAG_PHOTO =
"photo_FoodTest";
JSONArray foodtestJSONArray = null;
ArrayList<FoodTest> foodtestLists;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_dashboard);
setTitle("Uji Makanan");
clientConnect.delegate = this;
AllFoodTestFunction();
}
private void AllFoodTestFunction() {
String urlParameter = "/get_all_foodtest.php";
clientConnect.execute(urlParameter);
}

Kode Sumber 4.8 Baris Kode Fitur Menampilkan Data Hasil Uji
Keamanan Makanan pada Kelas ClientConnect

51

19BAB V
20PENGUJIAN DAN EVALUASI
Pada bab ini akan dibahas pengujian dan evaluasi dari
perangkat lunak dan implementasi aplikasi.
5.1 Lingkungan Pelaksanaan Pengujian
Lingkungan pengujian merupakan perangkat-perangkat
yang dilibatkan dalam proses pengujian. Lingkungan pengujian
ini menggunakan perangkat bergerak berbasis Android.
Spesifikasi lingkungan pengujian dijelaskan pada Tabel 5.1.
Tabel 5.1 Spesifikasi Lingkungan Pengujian Perangkat
Lunak
Aplikasi
Perangkat Bergerak
Jenis Perangkat
Telepon Cerdas
Asus Zenfone 4 T001
Prosesor
Intel Atom Z2520
CPU Dual-core 1.2 Ghz
GPU PowerVR SGX544MP2
Memori
1 GB RAM
Kamera Belakang
5 MP, 2592 x 1944 pixels
Sistem Operasi
Android
Jenis Sistem Operasi v4.4.2 (KitKat)
5.2 Skenario Pengujian
Bagian ini menjelaskan skenario pengujian yang
dilakukan. Pengujian dilakukan adalah pengujian fungsionalitas,
pengujian performa sistem, pengujian akurasi, dan pengujian
kepada pengguna.
Pengujian fungsionalitas dilakukan menggunakan
metode kotak hitam (black box). Metode ini menekankan pada
kesesuaian hasil keluaran sistem. Pengujian dilakukan untuk
mengetahui hasil dari masukan data dan keluaran data. Pada

52

aplikasi ini masukan yang dibutuhkan adalah gambar uji


keamanan makanan dari kamera, nama makanan, dan nama
reagen. Keluaran yang diharapkan tampil pada aplikasi adalah
berupa kadar hasil uji kadar dalam satuan mg/l dan data dari
hasil uji keamanan makanan lainnya yang telah tercatat pada
basis data di server.
Pengujian performa sistem dilakukan untuk melihat
performa sistem dalam menjalankan fitur dari segi
fungsionalitasnya.
Pengujian akurasi dilakukan dengan melakukan uji
makanan untuk setiap jenis uji dengan sampel yang telah
diketahui nilai kandungannya.
Selain itu pengujian juga dilakukan kepada responden
yang ahli dalam bidang kimia sehingga paham mengenai proses
bisnis pada aplikasi ini.
5.2.1

Pengujian Fungsionalitas
Pada subbab ini akan dijelaskan tentang pengujian
aplikasi dari segi fungsionalitasnya. Pengujian dilakukan
berdasarkan
setiap
spesifikasi
kebutuhan.
Pengujian
didokumentasikan secara sistematis sebagai tolok ukur
keberhasilan sistem.
5.2.1.1

Pengujian Fitur Mendapatkan Hasil Uji Keamanan


Makanan
Pada bagian ini menjelaskan fitur untuk mendapatkan
hasil uji keamanan makanan. Pengujian dilakukan dengan
skenario pengguna telah memasukkan vial atau tabung reaksi
pada sistem dan aplikasi telah berada pada halaman Tambah Uji.
Pengujian ini dapat dilihat pada Gambar 5.2.
Tabel 5.2 Skenario Pengujian Mendapatkan Hasil Uji
Keamanan Makanan
Nomor Uji
P-01
Tujuan Uji
Memeriksa apakah sistem dapat

53

Kondisi Awal

Masukan
Prosedur Pengujian
Hasil yang
Diharapkan
Hasil yang Diperoleh
Kesimpulan

mendapatkan hasil uji keamanan


makanan.
Pengguna telah memasukkan vial atau
tabung reaksi pada sistem dan aplikasi
telah berada pada halaman Tambah
Uji.
Gambar uji yang diambil dari kamera
perangkat bergerak, nama makanan,
dan nama reagen.
Pengguna mengambil gambar uji pada
sistem menggunakan kamera, mengisi
baris nama makanan, dan nama reagen.
Hasil uji berupa nilai kadar zat
berdasarkan reagen.
Hasil uji tampil pada aplikasi berupa
nilai kadar zat berdasarkan reagen.
Pengujian fitur mendapatkan hasil uji
keamanan makanan berhasil.

Gambar 5.1 Pengujian Mendapatkan Hasil Uji Keamanan


Makanan

54

Gambar 5.2 Hasil Kadar Zat Telah Didapatkan


5.2.1.2

Pengujian Fitur Mencatat Data Hasil Uji Keamanan


Makanan
Pada bagian ini menjelaskan fitur mencatat data hasil uji
keamanan makanan. Pengujian dilakukan harus menggunakan
koneksi intranet atau jaringan LAN.
Tabel 5.3 Skenario Mencatat Data Hasil Uji Keamanan
Makanan
Nomor Uji
P-02
Tujuan Uji
Memeriksa apakah sistem dapat
mencatat data hasil uji keamanan
makanan dengan tepat.
Kondisi Awal
Sistem sudah terhubung dengan
koneksi intranet atau jaringan LAN dan
pengguna sudah mendapatkan hasil uji
keamanan makanan.

55

Masukan
Prosedur Pengujian
Hasil yang
Diharapkan
Hasil yang Diperoleh
Kesimpulan

Tombol centang () pada menu di


halaman Tambah Uji.
Pengguna menekan tombol centang ()
untuk dapat mencatat data hasil uji
keamanan makanan.
Data hasil uji keamanan makanan
masuk pada basis data di server dan
sesuai dengan masukan.
Data hasil uji keamanan makanan
masuk pada basis data di server dan
sesuai dengan masukan.
Pengujian fitur mencatat data hasil uji
keamanan makanan berhasil

Gambar 5.3 Pengujian Mencatat Data Hasil Uji Keamanan


Makanan

56

5.2.1.3

Pengujian Fitur Menampilkan Data Hasil Uji


Keamanan Makanan
Pada bagian ini menjelaskan fitur menampilkan data
hasil uji keamanan makanan. Fitur ini dapat dijalankan ketika
pengguna baru membuka aplikasi atau telah mencatat data hasil
uji keamanan makanan.
Tabel 5.4 Skenario Menampilkan Data Hasil Uji Keamanan
Makanan
Nomor Uji
P-03
Tujuan Uji
Memeriksa apakah sistem dapat
menampilkan data hasil uji keamanan
makanan.
Kondisi Awal
Aplikasi telah terpasang dan sudah
terhubung dengan intranet atau jaringan
LAN.
Masukan
Pengguna menekan logo aplikasi.
Prosedur Pengujian
Pengguna membuka aplikasi dengan
menekan logo aplikasi hingga tampil
halaman Uji Makanan.
Hasil yang
Sistem menampilkan data uji keamanan
Diharapkan
makanan pada halaman Uji Makanan.
Hasil yang Diperoleh Data hasil uji keamanan makanan
tampil pada halaman Uji Makanan.
Kesimpulan
Pengujian fitur menampilkan data hasil
uji keamanan makanan berhasil.

57

Gambar 5.4 Pengujian Menampilkan Data Hasil Uji


Keamanan Makanan
5.2.2

Pengujian Performa Sistem


Pada bagian ini membahas pengujian yang dilakukan
untuk melihat performa sistem dalam mendapatkan hasil uji dari
sampel. Pengujian performa diukur dengan menghitung waktu
yang dibutuhkan untuk mendapatkan hasil uji dari sampel. Setiap
jenis uji yang terdapat dalam sampel dilakukan pengujian
sebanyak lima kali dan kemudian dicatat waktunya.
Tabel 5.5 Hasil Pengujian Performa Sistem
Reagen
Boraks
Formalin

1
28.797
26.675

Waktu Proses (detik)


2
3
4
33.264 30.812 28.828
26.16
24.168 24.241

5
28.726
25.224

Ratarata
30.085
25.294

58

RhodaminB
Methanyl
Yellow
Merkuri

25.69

25.903

24.708

24.314

24.403

25.004

29.276

29.452

28.636

29.107

28.65

29.024

33.827

32.989

33.343

33.876

33.683

33.544

Tabel 5.5 menunjukkan hasil dari pengukuran waktu


yang dibutuhkan untuk melakukan pengujian performa sistem
untuk setiap jenis uji.
5.2.3

Pengujian Akurasi
Pengujian dilakukan untuk mengetahui keakuratan dari
aplikasi dalam menentukan hasil uji keamanan makanan.
Skenario uji coba dilakukan dengan melakukan percobaan
terhadap reagen yang disimpan yaitu Boraks, Rhodamin-B,
Formalin, Methanyl Yellow, dan Merkuri. Percobaan dilakukan
dengan sampel yang telah diketahui kadar kandungannya
sebanyak lima kali percobaan untuk setiap sampel, kemudian
diambil rata-rata akurasi dari setiap kelas dalam satu jenis uji.
Tabel 5.6 Hasil Pengujian Akurasi Boraks
Boraks
Prediksi tiap percobaan (mg/l)
Kelas sampel
(mg/l)
1
2
3
4
5
0
0
0
0
0
0
50
50
50
50
50
50
100
100
100
100
100
50
150
150
150
150
150
150
200
200
200
200
200
200
5000
5000
5000
5000
5000
5000
10000
10000
10000
10000
10000
10000
Pada Tabel 5.6 menunjukkan hasil pengujian untuk zat
Boraks. Terdapat tujuh kelas pada uji Boraks yang merupakan
warna standar kandungan pada reagen Boraks. Pengujian pada

59

kelas 0 mg/l, 50 mg/l, 150 mg/l, 200 mg/l, 5000 mg/l, dan 10000
mg/l reagen Boraks menghasilkan kandungan yang sesuai
dengan nilai kelasnya. Namun pada kelas 100 mg/l uji Boraks
yang sesuai terjadi pada percobaan ke 1, 2, 3, dan 4. Maka dalam
pengujian kali ini, kelas 0 mg/l, 50 mg/l, 150 mg/l, 200 mg/l,
5000 mg/l, dan 10000 mg/l mendapatkan akurasi sebesar 100%.
Sedangkan pada kelas 100 mg/l mendapatkan akurasi 80%.
Rata-rata akumulasi dari setiap kelas untuk uji Boraks pada
pengujian ini adalah 97,143%.
Tabel 5.7 Hasil Pengujian Akurasi Formalin
Formalin
Prediksi tiap percobaan (mg/l)
Kelas sampel
(mg/l)
1
2
3
4
5
0
0
0
0
0
0
2
2
2
2
2
2
4
4
4
4
4
4
6
6
6
6
6
4
8
8
8
6
8
8
10
10
10
10
8
10
Pada Tabel 5.7 menunjukkan hasil pengujian untuk zat
Formalin. Terdapat enam kelas pada uji Formalin yang
merupakan warna standar kandungan pada reagen Formalin.
Pengujian pada kelas 0 mg/l, 2 mg/l, dan 4 mg/l reagen Formalin
menghasilkan kandungan yang sesuai dengan nilai kelasnya.
Namun pada kelas 6 mg/l, uji Formalin yang sesuai terjadi pada
percobaan ke 1, 2, 3, dan 4. Pada kelas 8 mg/l uji Formalin yang
sesuai terjadi pada percobaan ke 1, 2, 4, dan 5. Pada kelas 10
mg/l uji Formalin sesuai terjadi pada percobaan ke 1, 2, 3, dan 5.
Dalam pengujian kali ini, kelas kelas 0 mg/l, 2 mg/l, dan 4 mg/l
mendapatkan akurasi 100%, kelas 6 mg/l mendapatkan akurasi
80%, kelas 8 mg/l mendapatkan akurasi 80%, kelas 10 mg/l
mendapatkan akurasi 80%. Rata-rata akumulasi dari setiap kelas
untuk uji Formalin pada pengujian ini adalah 90%.

60

Tabel 5.8 Hasil Pengujian Akurasi Rhodamin B


Rhodamin-B
Prediksi tiap percobaan (mg/l)
Kelas sampel
(mg/l)
1
2
3
4
5
0
0
0
0
0
0
2
2
2
2
2
2
10
10
20
10
10
10
20
20
20
20
20
20
30
30
30
30
30
30
Rhodamin40
40
30
40
30
40
Pada Tabel 5.8 menunjukkan hasil pengujian untuk zat
Rhodamin-B. Terdapat enam kelas pada uji Rhodamin-B yang
merupakan warna standar kandungan pada reagen Rhodamin-B.
Pengujian pada kelas 0 mg/l, 2 mg/l, 20 mg/l, dan 30 mg/l reagen
Rhodamin-B menghasilkan nilai kandungan yang sesuai dengan
kelasnya. Namun pada kelas 10 mg/l, uji Rhodamin-B yang
sesuai terjadi pada percobaan ke 1, 3, 4, dan 5. Pada kelas 40
mg/l uji Rhodamin-B yang sesuai terjadi pada percobaan ke 1, 3,
dan 5. Dalam pengujian kali ini, kelas 0 mg/l, 2 mg/l, 20 mg/l,
dan 30 mg/l mendapatkan akurasi 100%, kelas 10 mg/l
mendapatkan akurasi 80%, dan kelas 40 mg/l mendapatkan
akurasi 60%. Rata-rata akumulasi dari setiap kelas untuk uji
Rhodamin-B pada pengujian ini adalah 90%.
Tabel 5.9 Hasil Pengujian Akurasi Methanyl Yellow
Methanyl Yellow
Prediksi tiap percobaan (mg/l)
Kelas sampel
(mg/l)
1
2
3
4
5
0
0
0
0
0
0
50
50
50
50
50
50
100
100
100
100
100
100
150
150
150
150
150
150

61

200
5000
10000

200
5000
10000

200
5000
10000

200
5000
10000

200
200
10000

200
5000
10000

Pada Tabel 5.9 menunjukkan hasil pengujian untuk zat


Methanyl Yellow. Terdapat tujuh kelas pada uji Methanyl Yellow
yang merupakan warna standar kandungan pada reagen Methanyl
Yellow. Pengujian pada kelas 0 mg/l, 50 mg/l, 100 mg/l, 150 mg/l,
200 mg/l, dan 10000 mg/l reagen Methanyl Yellow menghasilkan
nilai kandungan yang sesuai dengan kelasnya. Namun pada kelas
5000 mg/l, uji Methanyl Yellow yang sesuai terjadi pada
percobaan ke 1, 2, 3, dan 5. Dalam pengujian kali ini, elas 0 mg/l,
50 mg/l, 100 mg/l, 150 mg/l, 200 mg/l, dan 10000 mg/l
mendapatkan akurasi 100%, dan kelas 5000 mg/l mendapatkan
akurasi 80%. Rata-rata akumulasi dari setiap kelas untuk uji
Methanyl Yellow pada pengujian ini adalah 97,143%
Tabel 5.10 Hasil Pengujian Akurasi Merkuri
Merkuri
Prediksi tiap percobaan (mg/l)
Kelas sampel
(mg/l)
1
2
3
4
5
0
0
0
0
0
0
50
50
50
50
50
50
100
100
100
100
100
100
150
150
150
150
150
150
200
200
200
200
200
200
1000
1000
200
200
1000
1000
2000
3000
2000
2000
2000
2000
3000
3000
3000
3000
2000
3000
Pada Tabel 5.10 menunjukkan hasil pengujian untuk zat
Merkuri. Terdapat delapan kelas pada uji Merkuri yang
merupakan warna standar kandungan pada reagen Merkuri.
Pengujian pada kelas 0 mg/l, 50 mg/l, 100 mg/l, 150 mg/l, dan
200 mg/l reagen Merkuri menghasilkan nilai kandungan yang

62

sesuai dengan kelasnya. Namun pada kelas 1000 mg/l, uji


Merkuri yang sesuai terjadi pada percobaan ke 1, 4, dan 5. Pada
kelas 2000 mg/l uji Merkuri yang sesuai terjadi pada percobaan
ke 2, 3, 4, dan 5. Pada kelas 3000 mg/l uji Merkuri yang sesuai
terjadi pada percobaan ke 1, 2, 3, dan 5. Dalam pengujian kali ini,
kelas 0 mg/l, 50 mg/l, 100 mg/l, 150 mg/l, dan 200 mg/l
mendapatkan akurasi 100%, kelas 1000 mg/l mendapatkan
akurasi 60%, kelas 2000 mg/l mendapatkan akurasi 80%, dan
kelas 3000 mg/l mendapatkan akurasi 80%. Rata-rata akumulasi
dari setiap kelas untuk uji Merkuri pada pengujian ini adalah
90%.
5.2.4

Pengujian Kepada Pengguna


Selain pengujian yang dilakukan untuk melihat
kesesuaian masukan dengan keluaran lewat pengujian fungsional,
dilakukan juga pengujian yang dilakukan kepada pengguna yang
ahli dalam bidang kimia untuk mengetahui kesesuaian proses
yang ada dalam sistem dengan fakta yang ada di lapangan dan
memberikan umpan balik terhadap aplikasi ini.
Pengujian dilakukan dengan skenario pengguna
melakukan uji keamanan makanan pada sistem dan aplikasi ini.
Pengguna juga diminta untuk memprediksi hasil uji untuk
dibandingkan dengan prediksi sistem. Setelah itu pengguna juga
menguji fungsionalitas dari aplikasi.
No.
1
2

Tabel 5.11 Data Pengguna


Nama
Profesi
Dr. Titik Taufikurohmah, Dosen,
M.Si
Praktisi
Farah Medina

Mahasiswa

Instansi
Unesa,
Jurusan Kimia
Unair, Jurusan
Farmasi

Tabel 5.12 Hasil Penggunaan Aplikasi Kepada Pengguna ke-1


Jenis Uji / Reagen
Prediksi Anda
Prediksi Sistem
Rhodamin-B
10 mg/l
10 mg/l

63

Rhodamin-B
Rhodamin-B
Rhodamin-B

30 mg/l
2 mg/l
7 mg/l

40 mg/l
10 mg/l
10 mg/l

Tabel 5.13 Hasil Penggunaan Aplikasi Kepada Pengguna ke-2


Jenis Uji / Reagen
Prediksi Anda
Prediksi Sistem
Rhodamin-B
10 mg/l
10 mg/l
Rhodamin-B
2 mg.l
2 mg/l
Borax
0 / 50 mg/l
50 mg/l
Borax
100 mg/l
100 mg/l
No.
1.
2.
3.
No.
1.
2.
3.

Tabel 5.14 Hasil Pengujian Kepada Pengguna ke-1


Kebutuhan Fungsional
Terpenuhi
Mendapatkan hasil uji keamanan makanan

Mencatat hasil pengujian ke dalam basis data

di server.
Menampilkan data hasil uji.

Tabel 5.15 Hasil Pengujian Kepada Pengguna ke-2


Kebutuhan Fungsional
Terpenuhi
Mendapatkan hasil uji keamanan makanan

Mencatat hasil pengujian ke dalam basis data

di server.
Menampilkan data hasil uji.

5.3 Evaluasi Pengujian


Pada subbab ini akan dijelaskan evaluasi dari pengujian
fungsionalitas, pengujian performa sistem, pengujian akurasi,
dan pengujian kepada pengguna.
5.3.1

Evaluasi Pengujian Fungsionalitas


Pengujian Fungsionalitas yang telah dilakukan
memberikan hasil yang sesuai dengan skenario yang telah
direncanakan. Evaluasi pengujian pada masing-masing

64

fungsionalitas akan dijelaskan sebagai berikut.


1. Pengujian mendapatkan hasil uji keamanan makanan sesuai
dengan yang diharapkan. Kondisi ini diperlihatkan pada
pengujian P-01 yang menampilkan hasil uji makanan pada
aplikasi berupa nilai kadar zat yang berdasarkan reagen.
2. Pengujian mencatat data hasil uji keamanan makanan sesuai
dengan yang diharapkan. Kondisi ini diperlihatkan pada
pengujian P-2 yang memberikan informasi bahwa data hasil
uji keamanan makanan masuk pada basis data di server dan
sesuai dengan masukan.
3. Pengujian menampilkan data hasil uji keamanan makanan
sesuai dengan yang diharapkan. Kondisi ini diperlihatkan
pada pengujian P-03 yang memberikan informasi bahwa data
hasil uji keamanan makanan tampil pada halaman Uji
Makanan.
5.3.2

Evaluasi Pengujian Performa Sistem

Performa sistem diukur dengan menghitung waktu yang


dibutuhkan untuk mendapatkan hasil uji dari sampel. Setiap jenis
uji yang terdapat dalam sampel dilakukan pengujian sebanyak
lima kali dan kemudian dicatat waktunya. Evaluasi dilakukan
dengan merekapitulasi rata-rata dari pengujian di setiap jenis uji.
Disertakan pula jumlah warna standar pada setiap jenis uji untuk
mengetahui hubungan jumlah warna standar dengan pengujian
performa.
Tabel 5.14 Rekapitulasi Performa Sistem Setiap Jenis Uji
Jenis Uji
Warna Standar
Rata-Rata
Boraks
7
30.085
Formalin
6
25.294
Rhodamin-B
6
25.004
Methanyl Yellow
7
29.024
Merkuri
8
33.544

65

Pada Tabel 5.14, kolom pertama menunjukkan jenis uji,


kolom kedua menunjukkan banyaknya warna standar pada tiap
jenis uji, dan kolom ketiga menunjukkan rata-rata performa tiap
jenis uji. Terlihat waktu untuk jenis uji yang memiliki warna
standar lebih sedikit akan membutuhkan waktu lebih cepat
sedangkan waktu untuk jenis uji yang memiliki warna standar
lebih banyak akan membutuhkan waktu lebih lama. Rata-rata
akumulasi performa dari semua jenis uji adalah 92,857 detik.
5.3.3

Evaluasi Pengujian Akurasi

Pengujian akurasi dilakukan untuk menghasilkan akurasi


pengujian dari setiap jenis uji. Evaluasi dilakukan dengan
merekapitulasi setiap akurasi dari jenis uji tersebut. Tabel 5.15
menunjukkan rekapitulasi dari setiap hasil uji akurasi pada tiap
jenis uji.
Tabel 5.15 Rekapitulasi Akurasi Setiap Jenis Uji
No.
Jenis Uji
Akurasi
1
Boraks
97,143%
2
Formalin
90%
3
Rhodamin-B
90%
4
Methanyl Yellow
97,143%
5
Merkuri
90%
Kolom kedua menunjukkan jenis uji dan kolom ketiga
menunjukkan hasil akurasi dari pengujian yang dilakukan. Pada
pengujian kali ini rata-rata dari akumulasi semua jenis uji jika
disatukan maka menghasilkan akurasi sebesar 92,857%.

66

[Halaman ini sengaja dikosongkan]

67

BAB VI
KESIMPULAN DAN SARAN
Pada bab ini akan diberikan kesimpulan yang diambil
selama pengerjaan tugas akhir beserta saran-saran tentang
pengembangan yang dapat dilakukan terhadap tugas akhir ini di
masa yang akan datang
6.1 Kesimpulan
Dari hasil selama proses perancangan, implemetasi, dan uji
coba perangkat lunak yang dilakukan, dapat diambil kesimpulan
sebagai berikut:
1. Aplikasi perangkat lunak yang dibangun mendukung proses
uji makanan. Aplikasi ini berbasis Android dan
diimplementasikan pada perangkat bergerak yang
mempunyai spesifikasi sistem operasi Android 4.3 Jelly
Bean, CPU 1.2 GHz, memori 1 GB, dan kamera 5 MP
2. Menggunakan sebuah alat bantu berupa berupa kotak hitam
dengan bahan akrilik yang di dalamnya terdapat kontainer
bewarna putih yang berbahan plastik untuk tempat tabung
reaksi dan sebuah lampu LED.
3. Aplikasi dibuat dengan pemrograman Java yang dapat
mendeteksi warna RGB dengan menggunakan library
grafis dari Android bernama Color. Pada library ini terdapat
fungsi yang bisa mendapatkan warna RGB, yaitu merah,
hijau, dan biru secara terpisah.
4. Metode klasifikasi KNN digunakan untuk menentukan
kelas dari daftar warna sampel sebagai data uji dan daftar
warna standar referensi sebagai data latih.
5. Aplikasi uji makanan yang diimplementasikan pada
perangkat bergerak adalah sebagai sisi client. Sedangkan
server dijalankan pada sebuah PC untuk menjalankan basis
data saja. Untuk menghubungkan sisi client dan server
diatur pada kelas ClientConnect.

68

6.2 Saran
Berikut merupakan beberapa saran mengenai pengembangan
lebih lanjut aplikasi perangkat lunak uji makanan berbasis
Android berdasarkan hasil rancangan, implementasi, dan uji coba
yang telah dilakukan.
1. Diharapkan kedepannya aplikasi ini bisa diimplementasikan
di semua perangkat bergerak tanpa perlu ada penyesuaian
ulang pada tiap perangkat bergerak yang akan dipasang
aplikasi.
2. Pada aplikasi ini menggunakan metode KNN yang
membutuhkan waktu cukup lama dalam memproses gambar
sampel. Diharapkan kedepannya performa aplikasi dalam
mendeteksi uji makanan dapat ditingkatkan baik dari sisi
optimasi maupun algoritma.
3. Pada aplikasi ini memiliki memiliki kelemahan dalam
membedakan kelas warna yang sangat mirip pada
masing-masing jenis uji. Diharapkan kedepannya terdapat
metode yang lebih baik untuk membandingkan warna
tersebut.

69

DAFTAR PUSTAKA
[1] BPOM, "Laporan Kinerja Badan POM," 2014. [Online].
Tersedia:
http://www.pom.go.id/new/index.php/browse/lap_to_nation
/23-12-2004/23-12-2014/1. [Diakses 23 Desember 2014].
[2] Alliance,
"Android,"
2007.
[Online].
Tersedia:
http://www.openhandsetalliance.com/android_overview.ht
ml. [Diakses 24 Desember 2014].
[3] Alliance, " Industry Leaders Announce Open Platform for
Mobile Devices," 5 November 2007. [Online]. Tersedia:
http://www.openhandsetalliance.com/press_110507.html.
[Diakses 24 Desember 2014].
[4] J. Gosing, B. Joy; G. Steele, G. Bracha, A. Buckley, The
Java Language Specification (Java SE 8 edition), pp.
21-25, 2015.
[5] X. Ducrohet , "Android Studio: An IDE built for Android ,"
15
Mei
2013.
[Online].
Tersedia:
http://android-developers.blogspot.in/2013/05/android-stud
io-ide-built-for-android.html. [Diakses 24 Desember 2014].
[6] Oracle, "About MySQL," 2015. [Online]. Tersedia:
http://www.mysql.com/about/. [Diakses 24 Desember
2014].
[7] "Pengenalan
JSON,"
[Online].
Tersedia:
http://www.json.org/json-id.html. [Diakses 24 Desember
2014].

70

LAMPIRAN A - KODE SUMBER


Lampiran berikut berisi kode sumber penting yang
merupakan fungsi kontrol dari aplikasi. Kelas yang dilampirkan
diantaranya kelas KNNClassifier.
package com.example.ahmadfauzi.testconnect.data_mining;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
/**
* Created by Ahmad Fauzi on 5/21/2015.
*/
public class KNNClassifier {
private ArrayList<ArrayList<Double>> dataTraining;
private ArrayList<ArrayList<Double>> dataTesting;
private ArrayList<ArrayList<Pair>> distances;
private ArrayList<ArrayList<Double>> centroid;
private ArrayList<Integer> classResult;
private ArrayList<Integer> vote;
private int numberOfClass;
private int numberOfDataEachClass;
private int K=1;
public int getNumberOFClass() {
return numberOfClass;
}
public void setNumberOFClass(int numberOFClass) {
this.numberOfClass = numberOFClass;
this.numberOfDataEachClass =
this.dataTraining.size()/this.numberOfClass;
System.out.println("n data train : "
+this.dataTraining.size()+" dataperclass :
"+this.numberOfDataEachClass);
}
public KNNClassifier(ArrayList<ArrayList<Double>>
dataTraining,ArrayList<ArrayList<Double>> dataTesting) {
this.dataTraining = dataTraining;
this.dataTesting = dataTesting;
this.classResult = new ArrayList<>();
}

71

public void printArray2dPair(ArrayList<ArrayList<Pair>> array) {


System.out.println("array data : ");
for (ArrayList<Pair> arrayList : array) {
for (Pair double1 : arrayList) {
System.out.print(double1.distance+","+double1.toIndex+" ");
}
System.out.println();
}
}
public ArrayList<Integer> getPrediction(){
centroid = new ArrayList<ArrayList<Double>>();
this.centroid = this.obtainCentroid(dataTraining);
this.checkOutlier(this.dataTesting);
this.measureDistance(this.dataTraining, this.dataTesting);
//printArray2dPair(this.distances);
System.out.println("masuk voting");
this.voting();
System.out.println("selesai voting");
for (Integer integer : classResult) {
System.out.println("result "+integer);
}
return this.classResult;
}
public Double getEuclidianDistance(ArrayList<Double>
test,ArrayList<Double> train){
double distance = 0.0;
double sum = 0.0;
ArrayList<Double> delta = new ArrayList<Double>();
for(int i=0;i<test.size();i++) {
delta.add(test.get(i)-train.get(i));
}
ArrayList<Double> deltaPow = new ArrayList<Double>();
for(int i=0;i<delta.size();i++) {
deltaPow.add(Math.pow(delta.get(i), 2));
}
for(int i=0;i<deltaPow.size();i++) {
sum+= deltaPow.get(i);
}
distance = Math.sqrt(sum);

72

return distance;
}
public void measureDistance(ArrayList<ArrayList<Double>>
dataTrain,ArrayList<ArrayList<Double>> dataTest) {
this.distances = new ArrayList<ArrayList<Pair> >();
for (ArrayList<Double> listTest : dataTest) {
//System.out.println("size test : "+listTest.size());
ArrayList<Pair> distance = new ArrayList<Pair>();
for (ArrayList<Double> listTrain : dataTrain) {
double euclidDist =
getEuclidianDistance(listTest,listTrain);
if(listTest.get(listTest.size()-1) == 1.0) {
distance.add(new Pair(euclidDist, 0.0) );
}
else {
distance.add(new Pair(euclidDist,
listTrain.get(listTrain.size()-1)) );
}
}
Collections.sort(distance, new Comparator<Pair>() {
@Override
public int compare(Pair pair1, Pair pair2) {
return
pair1.getDistance().compareTo(pair2.getDistance());
}
});
this.distances.add(distance);
}
}
public void voting() {
for (ArrayList<Pair> distance : this.distances) {
ArrayList<Integer> voteClass = new ArrayList<Integer>();
for(int i=0;i<=this.numberOfClass;i++) {
voteClass.add(0);
}
for(int i=0;i<this.K;i++) {
//System.out.println(distance.get(i).getToIndex());
double index = distance.get(i).getToIndex();
//System.out.println("index"+index);
voteClass.set((int) index, voteClass.get((int)
index)+1);
}

73

int top = 0;
int topVotes= 0 ;
for(int i=0;i<=this.numberOfClass;i++) {
if(i == 0) {
top = i;
topVotes = voteClass.get(i);
}
else if(topVotes < voteClass.get(i)) {
top = i;
topVotes = voteClass.get(i);
}
//System.out.println("top "+top);
}
this.classResult.add(top);
}
}
public ArrayList<ArrayList<Double>>
obtainCentroid(ArrayList<ArrayList<Double>> dataTraining){
ArrayList<ArrayList<Double>> centroid = new
ArrayList<ArrayList<Double>>();
for (int i=1;i<=this.numberOfClass;i++) {
ArrayList<Double> dataPerClass = new ArrayList<Double>();
for (int j=0;j<dataTraining.size();j++) {
double classTrain =
dataTraining.get(j).get(dataTraining.get(j).size()-1);
if(classTrain == (double)i) {
if(dataPerClass.isEmpty()) {
dataPerClass.addAll(dataTraining.get(j));
}
else {
for (int
k=0;k<dataTraining.get(j).size();k++) {
//System.out.println("loading ...");
double value = dataPerClass.get(k);
double valueTrain =
dataTraining.get(j).get(k);
dataPerClass.set(k,value+valueTrain );
}
}
}
}
for (int j=0;j<dataPerClass.size();j++) {
double value = dataPerClass.get(j);
dataPerClass.set(j,value/this.numberOfDataEachClass);
}
centroid.add(dataPerClass);

74

}
for (ArrayList<Double> double1 : centroid) {
System.out.println("centroid : "+double1);
}
return centroid;
}
public Double getTresHold() {
double treshold = 0.0;
for (int i=0;i<centroid.size();i++) {
if(i != centroid.size()-1){
if(treshold<this.getEuclidianDistance(centroid.get(i),
centroid.get(i+1))) {
treshold =
this.getEuclidianDistance(centroid.get(i), centroid.get(i+1));
//System.out.println("distance centroid : "+i+"
"+(i+1)+" "+this.getEuclidianDistance(centroid.get(i),
centroid.get(i+1)));
}
}
}
return treshold;
}
public void checkOutlier(ArrayList<ArrayList<Double>> dataTest)
{
boolean isOutlier = true;
double treshold = this.getTresHold();
for (ArrayList<Double> list : dataTest) {
//System.out.println("treshold : "+treshold);
for (ArrayList<Double> listCentroid : this.centroid) {
double distance = this.getEuclidianDistance(list,
listCentroid);
//System.out.println("dist : "+distance);
if(distance < (double) treshold) {
isOutlier = false;
break;
}
}
if(isOutlier == true) {
list.add(1.0);
}
else {
list.add(0.0);
}
//System.out.println("outlier :
"+list.get(list.size()-1));

75

}
}
}

Kode Sumber A.1 Kelas KNNClassifier

76

LAMPIRAN B - PANDUAN PENGGUNA


Berikut adalah panduan untuk pengguna dalam melakukan
uji sampel :
1. Siapkan sampel pada tabung reaksi dengan takaran minimal 5
ml.

Gambar B.1. Sampel dalam Tabung Reaksi


2. Bersihkan bagian luar tabung reaksi dengan tisu bersih untuk
mengoptimalkan gambar sampel yang diambil.
3. Masukkan sampel ke dalam perangkat kotak hitam.

77

Gambar B.2. Masukkan sampel


4. Pasang penutup yang disediakan supaya cahaya tidak masuk

Gambar B.3 Pasang penutup

78

5. Buka aplikasi Uji Makanan

Gambar B.4 Ilustrasi membuka aplikasi


6. Tekan tombol plus (+) untuk menambah uji.

Gambar B.5 Tombol untuk menambah uji

79

7. Tekan tombol Ambil Gambar untuk mengambil gambar


sampel pada tabung reaksi.

Gambar B.6 Tombol untuk mengambil gambar


8. Sesuaikan kamera dengan lubang pada kotak hitam tempat
untuk mengambil gambar sampel.

Gambar B.7 Lubang untuk mengambil gambar sampel

80

9. Isi nama makanan, pilih reagen, dan tekan tombol Lihat Hasil.

Gambar B.8 Isi kolom nama makanan, pilih reagen, dan


tombol untuk mendeteksi kadar
10. Aplikasi akan mendeteksi kadar uji dari sampel.

Gambar B.9 Kadar zat yang terdeteksi

81

11. Tekan menu centang () untuk mencatat di basis data.

Gambar B.10 Tombol untuk mencatat ke basis data


12. Hasil yang tercatat dalam basis data akan ditampilkan di
halaman utama

Gambar B.11 Halaman utama aplikasi

82

LAMPIRAN C - KUESIONER PENGGUNA


Bagian ini melampirkan kuesioner kebutuhan aplikasi
kepada pengguna yang ahli dalam bidang kimia untuk
mengetahui kesesuaian proses yang ada dalam sistem dengan
fakta yang ada di lapangan dan memberikan umpan balik
terhadap aplikasi ini. Berikut adalah kuesioner yang diajukan.

Survei Pengguna Alat Bantu Uji Keamanan Makanan


PhotoM-X01
Nama
Profesi
Instansi
E-mail
Terima kasih telah bersedia mengikuti survei untuk pengujian
alat bantu uji keamanan makanan PhotoM-X01, kami meminta
kesediaan anda untuk mengisi lembar survei berikut tentang
pengalaman anda menggunakan sistem kami.
1. Apakah anda pernah melakukan Uji Kemanan Makanan ?
Ya
Tidak
2. Dalam menggunakan sistem kami, jenis pengujian apa saja
yang anda lakukan? berapa nilai kandungan menurut anda
dan berapa nilai yang dihasilkan sistem sesuai dengan warna
standar yang diberikan? Isi sesuai tabel berikut.

83

Jenis Uji/Reagen

Prediksi Anda

Prediksi Sistem

3. Mohon isi tabel daftar fungsionalitas dari sistem berikut dan


isi dengan Ya/Tidak di kolom terpenuhi.
No Kebutuhan Fungsional
Terpenuhi
1
Mendapatkan hasil uji keamanan makanan
2
3
4

Memilih reagen lain


Menyimpan hasil pengujian ke dalam basis
data di server.
Menampilkan data hasil uji

Lembar Feedback Alat Bantu uji Keamanan Makanan


PhotoM-X01
Nama
Profesi
Institusi
E-Mail
Terima kasih telah bersedia mengikuti survei untuk pengujian
alat bantu uji keamanan makanan PhotoM-X01, kami meminta
kesediaan anda untuk mengisi lembar feedback berikut tentang
pengalaman anda menggunakan sistem kami

84

Pertanyaan

1. Apakah antarmuka sistem dalam aplikasi ini mudah untuk


dimengerti dan membantu anda menggunakan sistem ini?
Jika tidak, tolong sebutkan di bagian menu apa anda
mengalami kesulitan.

2. Apakah dalam menggunakan hal ini anda memiliki keluhan


dalam performa aplikasi ( kecepatan proses , keakuratan,
dll) ? jika ya, tolong sebutkan di bagian menu apa anda
memilii keluhan.

85

3. Apakah proses bisnis yang berlaku dalam uji makanan telah


sesuai dengan proses bisnis yang disediakan sistem? jika
terdapat perbedaan, tolong sebutkan di bagian mana proses
yang berbeda.

4. Tolong tuliskan saran ataupun kritik anda setelah


menggunakan sistem yang kami buat.