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 entitasentitas luar. 2. Berdasarkan
kajian
teori
dan
penerapan
teori
yang
telah
dilakukan,
mendefinisikan fungsi-fungsi utama yang harus dimiliki oleh sistem. Fungsifungsi ini kemudian didekomposisi menjadi 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.
III-2
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
Image
Rule
Data MNIST Parameter
Sistem
Guess output Akurasi
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.
III-4
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
Tampilan Data Digit Input
Preprocessing Proses
Genetic Algorithm Run GA
Artificial Neural Network Run ANN
Gambar III.2 Rancangan Antar Muka
Tampilkan
III-6
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 1. 2.
3.
4. 5.
6. 7. 8.
Nama Use Keterangan Case Input data Untuk aktor memasukkan nama dari arsip yang berisi data MNIST. Input parameter Untuk aktor memasukkan nilai dari parameter. Terdapat empat GA 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. Input parameter Untuk aktor memasukkan nilai dari parameter. Terdapat tiga JST parameter yang akan dimasukkan oleh aktor, yaitu jumlah hidden unit, lerning rate, dan jumlah epoch. Output hasil Untuk menampilkan hasil pengujian dan rule terbaiknyanya pada pengguna. Membangkitkan Untuk membangkitkan populasi secara acak dengan ukuran populasi populasi seperti yang dimasukkan oleh pengguna. Melakukan evaluasi Melakukan seleksi Melakukan persilangan
9.
Melakukan mutasi
10.
Melakukan proses JST Melakukan pengujian
10.
Untuk menghitung nilai fitness dari setiap kromosom yang terdapat pada populasi. Untuk memilih kromosom-kromosom terbaik dari populasi. Untuk melakukan persilangan antara kromosom-kromosom terbaik dan menghasilkan kromosom-kromosom turunan atau offspring dengan nilai Pc sesuai dengan yang dimasukkan oleh pengguna. Untuk melakukan mutasi terhadap kromosom-kromosom terbaik dan offspring dengan nilai Pm sesuai dengan yang dimasukkan oleh pengguna. Untuk melakukan proses JST dengan jumlah hidden unit, learning rate, dan jumlah epoch yang telah dimasukkan oleh pengguna. 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
MainProcess +InputData() +ImagePreprocessing() +InputDataHVD() +NormalisasiData() +InputImageSkeleton() +InputDataNormal() +RunGA() +InisialisasiBobotANN() +RunANN() +InputTestRule() +RunTest() -End9 +Tampilkan() * -End4 * -End1
*
-End3
InputData-End2 +GetnLabel() : Integer +GetnRow() : Integer +GetnCol() : Integer +GetDataLabel() : Integer +GetDataGambar() : Byte +InputDataLabel() +InputDataGambar() *
-End7
*
-End5 *
*
*
-End10
-End6
DataPreprocessing
GeneticAlgorithm
* ArtificialNeuralNetwork
+Binerisasi() +NoiseReduction() +Thinning() +Centering() +HitungDataHVD() +InputDataNormal() +GetDataNormal() : Double +Rata2() : Double +StdDev() : Double +Normalisasi() : Double +NormalisasiData() +TampilData()
+ANN2GA() +Inisialisasi() +Seleksi() +Crossover() +Mutasi() +Reproduksi() +Offspring2Populasi() +GA2ANN() +Evaluasi() +Proses()
+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()
*
*
-End13 *
-End11
-End15
*
* -End8 *
-End12 -End14*
InitVar
-End16
+GetnLabel() : Integer +GetnRow() : Integer +GetnCol() : Integer +GetnHVD() : Integer +GetnInput() : Integer +GetnHidden() : Integer +GetnOutput() : Integer +GetnKromosom() : Integer
Gambar III.3 Diagram Kelas
III-8
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
IV-1
IV-2
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.
Gambar IV.1 Tampilan Training
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.
IV-4
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 4. Implementasi kelas control
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 1. 2. 3. 4. 5. 6. 7.
4.2
Nama Kelas ArtificialNeuralNetwork DataPreprocessing FormTRecy GeneticAlgorithm InitVar InputData MainProcess
Nama File ArtificialNeuralNetwork.vb DataPreprocessing.vb FormTRecy.vb GeneticAlgorithm.vb InitVar.vb InputData.vb MainProcess.vb
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.
IV-6
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 1. 2.
Perangkat Lunak Microsoft Windows XP Profesional Microsoft Visual Studio 2005
Keterangan Sistem operasi 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.
IV-8
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 1 2 3 4 5 6
Hasil Pengujian Aplikasi dapat membedakan antara path yang valid dengan yang tidak. Aplikasi dapat membedakan antara jumlah data yang dalam jangkauan dengan yang tidak. Aplikasi dapat membedakan antara nilai threshold yang valid dengan yang tidak. Aplikasi dapat membedakan antara nilai parameter Pc yang valid dengan yang tidak. Aplikasi dapat membedakan antara jumlah hidden unit dalam jangkauan dengan yang tidak. Aplikasi dapat membedakan antara urutan data yang dalam jangkauan dengan yang tidak.
Kesimpulan Diterima Diterima Diterima Diterima Diterima 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. 2. Penipisan sebagai image preprocessing mengurangi kinerja JST.
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.