Académique Documents
Professionnel Documents
Culture Documents
ii
iii
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)
................................
(pembimbing 2)
SURABAYA
DESEMBER 2015
vi
:
:
:
:
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
viii
:
:
:
:
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
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
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
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
xvi
xvii
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
1.
2.
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.
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.
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.
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.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
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
15
Nama
Kode
Deskripsi
Tipe
Pemicu
Aktor
Kondisi Awal
Aliran :
- Kejadian
Normal
- Kejadian
Alternatif
Kondisi Akhir
16
3.1.5.2
Nama
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
3.1.5.3
Nama
Kode
19
Deskripsi
Tipe
Pemicu
Aktor
Kondisi Awal
Aliran :
- Kejadian
Normal
- Kejadian
Alternatif
Kondisi Akhir
20
3.1.6
21
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.
22
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
26
3.2.2
27
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
31
32
33
34
35
3.2.4
3.2.5
Perancangan Antarmuka
Pada bagian ini menjelaskan perancangan antarmuka
sistem yang akan dibuat.
3.2.5.1
36
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 :
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
38
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
40
41
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;
}
=
:
44
return result;
}
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();
}
}
46
4.2.2
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
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
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
53
Kondisi Awal
Masukan
Prosedur Pengujian
Hasil yang
Diharapkan
Hasil yang Diperoleh
Kesimpulan
54
55
Masukan
Prosedur Pengujian
Hasil yang
Diharapkan
Hasil yang Diperoleh
Kesimpulan
56
5.2.1.3
57
1
28.797
26.675
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
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
61
200
5000
10000
200
5000
10000
200
5000
10000
200
5000
10000
200
200
10000
200
5000
10000
62
Mahasiswa
Instansi
Unesa,
Jurusan Kimia
Unair, Jurusan
Farmasi
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
di server.
Menampilkan data hasil uji.
di server.
Menampilkan data hasil uji.
64
65
66
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
71
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
}
}
}
76
77
78
79
80
9. Isi nama makanan, pilih reagen, dan tekan tombol Lihat Hasil.
81
82
83
Jenis Uji/Reagen
Prediksi Anda
Prediksi Sistem
84
Pertanyaan
85