BAB III
ANALISIS DAN PERANCANGAN
Bab ini memaparkan proses analisis dan perancangan perangkat lunak yang akan dikembangkan. Metode analisis dan perancangan yang digunakan berbasis aliran data dan kelas.
3.1 Metodologi Pembangunan Perangkat Lunak
Pembangunan perangkat lunak menggunakan metodologi unified modelling language. Metodologi ini berpusat pada tiga tipe kelas, yaitu kelas entity, boundary, dan control. Selain ketiga tipe kelas tersebut, terdapat kelas yang lain, yaitu kelas antar muka, yang berfungsi untuk menyimpan semua properti dari antar muka yang digunkan.
3.2 Analisis
Proses analisis perangkat lunak dilakukan dengan langkah-langkah sebagai berikut: 1. Mendeskripsikan secara global perangkat lunak dan interaksinya dengan
entitas-entitas luar.
2. Berdasarkan kajian teori dan penerapan teori yang telah dilakukan, mendefinisikan fungsi-fungsi utama yang harus dimiliki oleh sistem. Fungsi-fungsi ini kemudian didekomposisi menjadi Fungsi-fungsi-Fungsi-fungsi yang lebih kecil dan sederhana.
3. Menentukan keterkaitan antar fungsi dengan membuat diagram aliran data (Data Flow Diagram)
4. Menentukan kebutuhan data, baik data masukan, keluaran, maupun data yang berperan pada setiap fungsi utama.
5. Menentukan kebutuhan antar muka pengguna sebagai fasilitas bagi pengguna untuk berinteraksi dengan perangkat lunak.
3.2.1 Deskripsi Global Sistem dalam Model Fungsional
Sistem ini adalah sebuah aplikasi perangkat lunak yang menerapkan Image Preprocessing, jaringan saraf tiruan, dan algoritma genetik untuk menyelesaikan masalah OCR. Sistem menerima masukan dari pengguna berupa data angka MNIST melalui fasilitas antar muka yang disediakan. Secara iteratif, sistem akan membangkitkan solusi dan menampilkannya kepada pengguna. Output yang dihasilkan pada proses training adalah rules. Sedangkan output yang dihasilkan pada proses testing adalah nilai akurasi dan guess output.
Aspek sistem yang berkaitan dengan transformasi nilai, dengan suatu fungsi atau pemetaan tertentu akan digambarkan oleh model fungsional. Model fungsional menunjukkan apa yang dilakukan oleh suatu sistem, tanpa memperhatikan bagaimana ataupun kapan hal itu akan dilakukan. Model fungsional direpresentasikan dengan konteks diagram dan diagram aliran data (data flow diagram, disingkat DFD). Konteks diagram dan diagram aliran data menunjukkan ketergantungan antara nilai dan perhitungan nilai keluaran dengan menggunakan nilai masukan dan fungsi tertentu, tanpa mempedulikan kapan fungsi tersebut dieksekusi. Diagram Flowchart aplikasi dapat dilihat di LAMPIRAN A. Diagram konteks dapat dilihat pada Gambar III.11
Sistem Data MNIST Akurasi Image Guess output Rule Parameter
Gambar III.1 Diagram Konteks
Pada proses pelatihan, data training MNIST akan melalui proses image preprocessing yang akan menghasilkan data normal. Data normal tersebut akan menjadi masukan dari GA. GA akan membangkitkan populasi dengan menggunakan mini JST (1 epoch). GA akan menghasilkan sebuah rule / bobot awal yang akan digunakan oleh JST. Rule hasil GA dan data normal akan diproses oleh JST untuk menghasilkan rule akhir. Rule akhir
III-3
inilah yang akan digunakan untuk pengujian. Dapat dikatakan bahwa GA akan mengoptimasi bobot awal dari JST.
Pada proses pengujian, data testing MNIST akan melalui proses image preprocessing yang sama dengan training dan menghasilkan data normal. Data normal tersebut akan dimasukan pada rule akhir hasil training untuk menghasilkan guess output. Guess output akan dibandingkan dengan label dari data testing MNIST dalam proses pengujian. Proses tersebut akan menghasilkan akurasi dari rule hasil pelatihan tersebut.
3.2.1.1 Analisis Kebutuhan Fungsional
Mengacu kepada hasil kajian penerapan GA dan JST pada sistem dan teori OCR dan diagram konteks, maka sistem perlu mengimplementasi fungsi-fungsi utama sebagai berikut:
1. Sistem mampu menerima masukan parameter-parameter indikator dari pengguna dalam bentuk data MNIST.
2. Sistem mampu membangkitkan populasi awal valid GA atau JST secara acak. 3. Sistem mampu mengimplementasi operator-operator genetik (reproduksi,
persilangan, dan mutasi).
4. Sistem mampu mengimplementasi operator evaluasi dan seleksi. 5. Sistem mampu mengimplementasi prosedur JST.
6. Sistem mampu menampilkan hasil eksekusi dan menampilkan solusi terbaik.
3.2.2 Analisis Kebutuhan Data
Sistem bertugas untuk menghasilkan sebuah rule untuk masalah OCR, dan untuk itu dibutuhkan beberapa data masukan dari pengguna.
3.2.2.1 Data Masukan (Input)
Data masukan yang diperlukan oleh sistem adalah sebagai berikut: 1. Ukuran populasi, yaitu ukuran populasi yang dikehendaki.
2. Pc, yaitu nilai probabilitas terjadinya persilangan. 3. Pm, yaitu nilai probabilitas terjadinya mutasi.
4. Jumlah iterasi, yaitu jumlah iterasi yang akan dilakukan oleh sistem.
5. Jumlah hidden unit, yaitu jumlah unit tersembunyi antara input dan output JST. 6. Learning rate, yaitu kecepatan pembelajaran sistem JST.
7. Epoch, yaitu jumlah iterasi pada JST.
3.2.2.2 Data Keluaran (Output)
Output yang dihasilkan oleh sistem training adalah sebuah rule solusi terbaik terhadap masalah OCR. Sedangkan output yang dihasilkan oleh sistem testing adalah guess output dan nilai akurasi dari rule hasil training tersebut.
3.2.3 Analisis Kebutuhan Antarmuka Pangguna
Antar muka pengguna dibutuhkan untuk menerima dan menampilkan hasil eksekusi program. Beberapa antar muka yang diperlukan adalah:
1. Antar muka training dan testing
2. Antar muka untuk pemilihan arsip set data 3. Antar muka image preprocessing
4. Antar muka parameter GA (Pm, Pc, jumlah iterasi, ukuran populasi) 5. Antar muka parameter JST (hidden unit, learning rate, epoch) 6. Antar muka keluaran sistem.
3.3 Perancangan
Perancangan akan berisi perancangan antar muka, perancangan use case, perancangan kelas dan realisasi use case.
III-5
3.3.1 Perancangan Antar Muka
Tujuan dari perancangan antarmuka adalah agar pengguna bisa berinteraksi dengan perangkat lunak dengan baik. Aplikasi ini mempunyai dua antar muka utama. Antar muka pertama adalah antar muka training. Antar muka ini berguna untuk melakukan pelatihan pada sistem untuk dapat menghasilkan rule terbaik untuk masalah OCR. Antar muka kedua adalah antar muka testing. Antar muka ini berguna untuk melakukan pengujian terhadap rule yang telah didapat pada proses pelatihan.
Input Data
Preprocessing
Genetic Algorithm
Artificial Neural Network
Tampilan Data Digit
Input
Proses
Run GA
Run ANN Tampilkan
3.3.2 Perancangan Use Case
Tabel III.1 Use Case menggambarkan semua use case yang akan terdapat pada sistem.
Tabel III.1 Use Case No Nama Use
Case
Keterangan
1. Input data Untuk aktor memasukkan nama dari arsip yang berisi data MNIST. 2. Input parameter
GA
Untuk aktor memasukkan nilai dari parameter. Terdapat empat parameter yang akan dimasukkan oleh aktor. Parameter Ukuran Populasi berguna untuk menentukan ukuran populasi yang akan dibuat oleh sistem. Parameter Jumlah Iterasi berguna untuk menentukan berapa kali sistem akan melakukan iterasi proses. Parameter Pc berguna untuk menentukan kemungkinan terjadinya persilangan dalam sistem. Parameter Pm berguna untuk menentukan kemungkinan terjadinya mutasi dalam sistem.
3. Input parameter JST
Untuk aktor memasukkan nilai dari parameter. Terdapat tiga parameter yang akan dimasukkan oleh aktor, yaitu jumlah hidden unit, lerning rate, dan jumlah epoch.
4. Output hasil Untuk menampilkan hasil pengujian dan rule terbaiknyanya pada pengguna.
5. Membangkitkan
populasi
Untuk membangkitkan populasi secara acak dengan ukuran populasi seperti yang dimasukkan oleh pengguna.
6. Melakukan
evaluasi
Untuk menghitung nilai fitness dari setiap kromosom yang terdapat pada populasi.
7. Melakukan
seleksi
Untuk memilih kromosom-kromosom terbaik dari populasi.
8. Melakukan
persilangan
Untuk melakukan persilangan antara kromosom-kromosom terbaik dan menghasilkan kromosom-kromosom turunan atau offspring dengan nilai Pc sesuai dengan yang dimasukkan oleh pengguna.
9. Melakukan
mutasi
Untuk melakukan mutasi terhadap kromosom-kromosom terbaik dan offspring dengan nilai Pm sesuai dengan yang dimasukkan oleh pengguna.
10. Melakukan
proses JST
Untuk melakukan proses JST dengan jumlah hidden unit, learning rate, dan jumlah epoch yang telah dimasukkan oleh pengguna.
10. Melakukan
pengujian
Untuk menentukan nilai akurasi rule hasil training pada data test.
3.3.3 Perancangan Kelas
Sesuai dengan unified modelling language [BOG02], dalam aplikasi ini terdapat tiga tipe kelas. Yaitu kelas Boundary, Entity, dan Control. Diagram kelas dapat dilihat pada Gambar III.3.
III-7 +ANN2GA() +Inisialisasi() +Seleksi() +Crossover() +Mutasi() +Reproduksi() +Offspring2Populasi() +GA2ANN() +Evaluasi() +Proses() GeneticAlgorithm +GetnLabel() : Integer +GetnRow() : Integer +GetnCol() : Integer +GetnHVD() : Integer +GetnInput() : Integer +GetnHidden() : Integer +GetnOutput() : Integer +GetnKromosom() : Integer InitVar +GetnInput() : Integer +GetnHidden() : Integer +GetnOutput() : Integer +GetNilaiOutput() : Double +GetBobotIH() : Double +GetBobotHO() : Double +SetBobotIH() +SetBobotHO() +InisialisasiBobotRandom() +InisialisasiInputData() +Inj() : Double +Ginj() : Double +HitungHidden() +HitungIni() +Gini() : Double +HitungOutput() +G1ini() : Double +Errori() : Double +HitungDeltai() +G1inj() : Double +HitungDeltaj() +UbahBobotHO() +BackProp() +UbahBobotIH() +HitungSSE() : Double +HitungRMSE() : Double +HitungSalah() : Integer +HitungAkurasi() : Double +Proses() +InputRule() +Test() ArtificialNeuralNetwork +Binerisasi() +NoiseReduction() +Thinning() +Centering() +HitungDataHVD() +InputDataNormal() +GetDataNormal() : Double +Rata2() : Double +StdDev() : Double +Normalisasi() : Double +NormalisasiData() +TampilData() DataPreprocessing +GetnLabel() : Integer +GetnRow() : Integer +GetnCol() : Integer +GetDataLabel() : Integer +GetDataGambar() : Byte +InputDataLabel() +InputDataGambar() InputData +InputData() +ImagePreprocessing() +InputDataHVD() +NormalisasiData() +InputImageSkeleton() +InputDataNormal() +RunGA() +InisialisasiBobotANN() +RunANN() +InputTestRule() +RunTest() +Tampilkan() MainProcess -End1 * -End2 * -End3 * -End4 *-End5 * -End6 * -End7 * -End8 * -End9 * -End10 * -End11 * -End12 * -End13 * -End14 * -End15 * -End16 *
3.3.4 Realisasi Use Case
Rancangan realisasi dari use case yang terdapat dalam 3.3.3 Perancangan Use Case dapat dilihat dalam dua bentuk. Bentuk pertama adalah dalam diagram kelas yang menggambarkan hubungan dari kelas-kelas dalam merealisasikan suatu use case. Bentuk kedua adalah dalam sequence diagram yang menggambarkan aksi-aksi apa saja yang terdapat dalam use case tersebut. Diagram kelas use case dapat dilihat pada LAMPIRAN B.
BAB IV
IMPLEMENTASI DAN PENGUJIAN
Pada bab ini dipaparkan bagaimana hasil perancangan yang terdapat pada bab III diimplementasikan ke dalam perangkat lunak beserta pengujian dari perangkat lunak tersebut setelah implementasi. Selain itu, dipaparkan pula analisis hasil dari perangkat lunak.
4.1 Implementasi
Bagian implementasi ini berisi uraian tentang lingkungan implementasi, perangkat keras, implementasi antarmuka, kendala implementasi, batasan implementasi, tahapan implementasi, dan hasil implementasi kelas
4.1.1 Lingkungan Implementasi
Perangkat lunak Rebana dibangun dalam lingkungan berbasis Windows. Sistem operasi yang digunakan adalah Windows XP Profesional Edition. Pengembangan dilakukan dengan bahasa pemrograman Visual Basic .Net 2005. Visual Basic .Net dipilih karena jaringan saraf tiruan yang diacu juga menggunakan bahasa yang sama.
4.1.2 Perangkat Keras
Perangkat keras yang digunakan dalam pengembangan adalah PC dengan spesifikasi sebagai berikut:
Processor :Intel(R) Core(TM)2 Duo CPU E4500 2.20GHz Memory :1 GB DDR PC-3200
Hard disk :Seagate Technology Barracuda 7200.7 ST3120022A 120 GB Keyboard dan Mouse : Logitech
Monitor :NEC 17’’ resolusi 1028 x 768 pixel
4.1.3 Implementasi Antarmuka
Antarmuka pengguna pada aplikasi yang telah dibangun sesuai dengan perancangan antarmuka seperti yang ditunjukkan pada subbab 3.3.2 Perancangan Antar Muka. Gambar IV.1 dan IV.2 menunjukan implementasi antarmuka training dan testing.
IV-3
Gambar IV.2 Tampilan Testing
4.1.4 Kendala Implementasi
Dalam implementasi terdapat beberapa kendala yang disebabkan oleh kondisi lingkungan fisik pengembangan maupun kemampuan pengembang. Kendala tersebut antara lain:
1. Resource berupa kebutuhan kecepatan prosesor yang cukup besar untuk melakukan training.
2. Beberapa konsep dalam Visual Basic .Net belum dipahami dengan baik sehingga membutuhkan waktu untuk eksplorasi.
4.1.5 Batasan Implementasi
Implementasi perangkat lunak memiliki beberapa batasan sebagai berikut: 1. Arsip masukkan data harus sesuai dengan standar data set MNIST
2. Perangkat lunak tidak bisa melakukan validasi kebenaran semantik dari arsip masukan data.
3. Aturan arsip masukan data bersifat mutlak. Oleh karena itu, tidak ada penambahan ataupun pengurangan aturan secara dinamis. Penambahan dan pengurangan aturan harus dilakukan secara manual (hardcode).
4. Terdapat batasan dalam parameter yang dimasukkan oleh pengguna.
4.1.6 Tahapan Implementasi
Implementasi aplikasi dilakukan dalam beberapa tahap. Tahap implementasi tersebut berdasarkan tiga tipe kelas yang telah dijelaskan dalam 3.3.4 Perancangan Kelas. Berikut ini adalah tahap implementasi tersebut.
1. Implementasi kelas entity
Implementasi kelas entity terdiri atas pembuatan kelas Gen sebagai kelas penyimpan bagian data dari kromosom, kelas Kromosom sebagai kelas Populasi sebagai kelas penyimpan set dari kromosom, kelas Data sebagai kelas penyimpan data dari luar, kelas Sistem sebagai penyimpan variabel-variabel sistem seperti Pc, Pm, dan lainnya.
2. Implementasi kelas antar muka
Implementasi kelas antar muka terdiri atas pembuatan kelas FormTRecy. 3. Implementasi kelas boundary
IV-5
4.1.7 Hasil Implementasi Kelas
Kelas hasil perancangan diimplementasikan ke dalam kode Visual Basic .Net 2005. Tabel IV.1 merupakan daftar kelas yang digunakan pada aplikasi tugas akhir ini.
Tabel IV.1 Implementasi Kelas
Nomor Nama Kelas Nama File
1. ArtificialNeuralNetwork ArtificialNeuralNetwork.vb 2. DataPreprocessing DataPreprocessing.vb 3. FormTRecy FormTRecy.vb 4. GeneticAlgorithm GeneticAlgorithm.vb 5. InitVar InitVar.vb 6. InputData InputData.vb 7. MainProcess MainProcess.vb
4.2 Pengujian
Bagian pengujian ini berisi uraian tentang tujuan pengujian, lingkungan pengujian, rencana pengujian, dan hasil pengujian.
4.2.1 Tujuan Pengujian
Tujuan dilakukannya pengujian terhadap aplikasi yang telah dibangun adalah sebagai berikut:
1. Membuktikan kesesuaian aplikasi dengan spesifikasi perangkat lunak pada bagian analisis dan perancangan.
2. Memperoleh data sebagai bahan analisis hasil pembangunan perangkat lunak serta sebagai bahan rekomendasi bagi pengembangan maupun pengimplementasian perangkat lunak.
3. Mengetahui kinerja perangkat lunak dengan kombinasi image preprocessing, GA, dan JST.
4.2.2 Lingkungan Pengujian
Lingkungan pengujian meliputi lingkungan perangkat keras dan perangkat lunak yang digunakan dalam pengujian aplikasi. Berikut ini adalah spesifikasi perangkat keras yang digunakan dalam pengujian aplikasi:
Processor :Intel(R) Core(TM)2 Duo CPU E4500 2.20GHz Memory :1 GB DDR PC-3200
Hard disk :Seagate Technology Barracuda 7200.7 ST3120022A 120 GB Keyboard dan Mouse : Logitech
Monitor :NEC 17’’ resolusi 1028 x 768 pixel
Sedangkan spesifikasi perangkat lunak yang digunakan dapat dilihat pada Tabel IV.2.
Tabel IV.2 Perangkat Lunak yang Digunakan dalam Pengujian
No Perangkat Lunak Keterangan
1. Microsoft Windows XP Profesional Sistem operasi
2. Microsoft Visual Studio 2005 Perangkat lunak pengembangan aplikasi
4.2.3 Rancangan Pengujian
Terkait dengan terdapatnya tiga tujuan pengujian, maka terdapat dua rencana pengujian. Rencana pengujian pertama bertujuan untuk membuktikan kesesuaian aplikasi dengan spesifikasi perangkat lunak pada bagian analisis dan perancangan. Apabila pengujian pertama berhasil, maka barulah dilaksanakan rencana pengujian kedua. Rencana pengujian kedua adalah untuk memperoleh data sebagai bahan analisis hasil pembangunan perangkat lunak serta sebagai bahan rekomendasi bagi pengembangan maupun pengimplementasian perangkat lunak. Data yang diperoleh tersebut digunakan untuk mengetahui kinerja perangkat lunak dengan kombinasi image preprocessing, GA, dan JST.
4.2.3.1 Rancangan Pengujian Kesesuaian Aplikasi
Aktivitas pengujian dilakukan sebagai verifikasi bahwa kakas dapat memenuhi spesifikasi kebutuhan dan berjalan sesuai skenario yang telah didefinisikan. Pengujian
IV-7
dilakukan untuk setiap skenario, subskenario, dan skenario alternatif yang terdefinisi pada skenario use case. Pengujian dilakukan dengan pendekatan black box testing. Keterangan detail mengenai skenario terdapat pada LAMPIRAN C.
Secara umum pengujian dilakukan terhadap beberapa fungsionalitas sebagai berikut: 1. Pengujian seluruh antarmuka aplikasi.
2. Pengujian sejumlah parameter dan tombol pada antar muka.
4.2.3.2 Rancangan Pengujian Untuk Memperoleh Data dan Menguji Kinerja
Tujuan pengujian kedua dicapai dengan melakukan eksperimen dengan beberapa variasi nilai masukan dan membiarkan program melakukan pencarian sampai kondisi berhenti yang diinginkan. Beberapa hal yang ingin diketahui dari pengujian ini adalah:
1. Pengaruh nilai-nilai paramater terhadap akurasi. 2. Paramater-paramater optimal dari sistem.
3. Kombinasi optimal dari image preprocessing, GA, dan JST.
Dalam pengujian ini, diterapkan beberapa batasan nilai parameter. Berikut ini adalah batasan-batasan paramater tersebut beserta alasan adanya batasan tersebut.
1. Batasan minimal dari populasi GA adalah 100. Hal ini dikarenakan populasi yang terlalu kecil tidak terlalu efektif dalam GA.
2. Batasan minimal dari jumlah iterasi GA adalah 100. 3. Nilai Pc minimal yang dipakai adalah 0.25.
4. Nilai Pm minimal yang dipakai adalah 0.01. 5. Jumlah hidden unit JST minimal adalah 122. 6. Nilai learning rate JST yang dipakai adalah 0.01. 7. Batasan minimal dari jumlah epoch JST adalah 100.
4.2.4 Hasil Pengujian
Karena terdapat dua rencana pengujian, maka tentunya terdapat dua hasil pengujian. Berikut ini adalah hasil-hasil pengujian tersebut.
4.2.4.1 Hasil Pengujian Kesesuaian Aplikasi
Secara umum, dapat disimpulkan bahwa aplikasi telah lolos proses pengujian karena aplikasi dapat memenuhi spesifikasi kebutuhan dan berjalan sesuai skenario yang telah didefinisikan sebelumnya pada LAMPIRAN C. Tabel IV.3 memperlihatkan ringkasan hasil pengujian.
Tabel IV.3 Ringkasan Hasil Pengujian
No Hasil Pengujian Kesimpulan
1 Aplikasi dapat membedakan antara path yang valid dengan yang tidak.
Diterima
2 Aplikasi dapat membedakan antara jumlah data yang dalam jangkauan dengan yang tidak.
Diterima
3 Aplikasi dapat membedakan antara nilai threshold yang valid dengan yang tidak.
Diterima
4 Aplikasi dapat membedakan antara nilai parameter Pc yang valid dengan yang tidak.
Diterima
5 Aplikasi dapat membedakan antara jumlah hidden
unit dalam jangkauan dengan yang tidak.
Diterima
6 Aplikasi dapat membedakan antara urutan data yang dalam jangkauan dengan yang tidak.
Diterima
4.2.4.2 Hasil Pengujian Untuk Memperoleh Data dan Menguji Kinerja
Pada bagian ini akan dicantumkan data-data hasil pengujian untuk memperoleh data dan menguji kinerja. Bagian ini akan dibagi menjadi lima bagian. Bagian pertama untuk menguji pengaruh nilai threshold terhadap kinerja. Bagian kedua untuk menguji pengaruh penipisan terhadap kinerja. Bagian ketiga untuk menguji pengaruh jumlah hidden unit JST terhadap kinerja. Bagian keempat untuk menguji pengaruh jumlah iterasi JST terhadap kinerja. Bagian kelima untuk menguji pengaruh GA terhadap kinerja. Keterangan lebih lengkap mengenai hasil pengujian ini dapat dilihat pada LAMPIRAN D. Perbandingan dengan algoritma lainnya dapat dilihat pada LAMPIRAN E.
Berikut ini adalah hasil dari pengujian:
1. Perbandingan antara nilai threshold dan kinerja membentuk seperti sebuah kurva bukit dengan puncaknya pada nilai threshold 75 dengan kinerja terbaik.
IV-9
3. Semakin besar jumlah hidden unit JST sampai batas tertentu akan memperbaiki kinerja JST. Jika terlalu besar akan menjadi tidak efisien.
4. Semakin besar jumlah iterasi JST sampai batas tertentu akan memperbaiki kinerja JST. Jika terlalu besar akan menimbulkan overfitting dan menurunkan akurasi testing.
5. GA tidak terlalu berpengaruh terhadap kinerja JST.
Parameter optimum pengujian yaitu dengan menggunakan nilai threshold 75, 122 hidden unit, 100 epoch, dan -1...1 untuk bobot awal JST. Pengujian tanpa menggunakan GA. Hasil terbaik pengujian dengan data masukan tanpa penipisan adalah 96.32% untuk akurasi testing.