BAB 2 TINJAUAN PUSTAKA
2.1
Perangkat Lunak Menurut Sommerville (2011:6) perangkat lunak (software) merupakan sebuah program komputer dimana program tersebut dapat dikembangkan untuk pelanggan tertentu maupun untuk pasar umum.
2.2
Agile Method Sommerville (2011:59-60) menjelaskan bahwa agile method cocok untuk jenis pengembangan aplikasi seperti: 1. Pengembangan aplikasi yang berskala kecil hingga menengah. 2. Mengizinkan
banyak
ruang
untuk
user
ikut
terlibat
dalam
pengembangannya, karena aplikasi yang dibuat adalah aplikasi yang sesuai dengan keinginan user. Adapun prinsip-prinsip dari agile method, antara lain: 1. Customer involvement Customer seharusnya terlibat selama proses pengembangan, untuk menyediakan memprioritaskan kebutuhan sistem yang baru serta untuk mengevaluasi iterasi dari sistem. 2. Incremental delivery Software yang dikembangkan secara bertahap dengan customer menentukan kebutuhan yang harus dimasukan dalam tiap tahapnya. 3. People not process Skill dari developer harus diakui dan dimanfaatkan sedemikian rupa sehingga hasil kerja dari developer bisa mencapai hasil yang maksimal. 4. Embrace change Mengharapkan kebutuhan aplikasi untuk perubahan, sehingga perancangan sistem sebagai akomodasi perubahan tersebut. 5. Maintain simplicity Membuat aplikasi yang sederhana, baik dalam proses pengembangan maupun hasil akhir aplikasi sehingga aplikasi bisa digunakan dengan efisien dan tidak rumit. 9
10 2.3
Extreme Programming (XP) Sommerville (2011:65-66) menjelaskan bahwa extreme programming adalah salah satu metode yang paling dikenal didalam agile method. Didalam extreme programming, kebutuhan dinyatakan sebagai skenario (user stories), yang dilaksanakan langsung sebagai serangkaian tugas. Programmer bekerja secara berpasangan dan mengembangkan uji coba untuk setiap tugas sebelum menuliskan code. Semua uji coba tersebut harus berhasil dieksekusi ketika kode baru yang terinteraksi dalam sistem. Adapun prinsip-prinsip dari extreme programming, antara lain: 1. Incremental planning Kebutuhan ditulis kedalam story card dan story dimasukkan kedalam rilis yang ditentukan oleh waktu yang tersedia dan prioritas relatif. Kemudian pengembang mengubah story tersebut menjadi pengembangan. 2. Small releases Kumpulan fungsi minimal yang berguna memberikan nilai bisnis pada pengembangan yang pertama. 3. Simple design Perancangan cukup membawa keluar kebutuhan saat ini. 4. Test-first development Sebuah unit kerangka pengujian otomatis yang digunakan untuk menulis uji coba untuk fungsi yang baru sebelum fungsi tersebut diimplementasikan. 5. Refactoring Development diharapkan dapat menyusun ulang code secepat mungkin ketika perbaikan code ditemukan. Hal ini membuat code menjadi sederhana dan dapat diurus. Dan yang perlu diperhatikan adalah ketika akan melakukan pengembangan aplikasi, perubahan di masa depan haruslah bisa diantisipasi. Dengan selalu melakukan refactoring terhadap code yang dikembangkan, programming team dapat melihat possible improvement dari aplikasi dan dapat segera diimplementasikan. Walaupun memang tidak segera dibutuhkan, tetapi hal ini berguna untuk mengantisipasi perubahan di masa depan daripada harus kembali meninjau ulang code dari awal. 6. Pair programming Pengembang bekerja secara berpasangan, mengecek satu sama lain dan selalu mendukung untuk melakukan pekerjaan yang baik.
11 7. Collective ownership Pasangan pengembang bekerja dalam semua area sistem, sehingga semua pengembang bertanggungjawab untuk semua code. 8. Continous integration Secepat
mungkin,
tugas
pekerjaan
diselesaikan,
hal
ini
untuk
mengintegrasikan kedalam keseluruhan sistem. 9. Sustainable pace Sejumlah besar lembur tidak dianggap diterima sebagai efek bersih, karena digunakan untuk mengurangi kualitas code dan produktivitas jangka mengengah. 10. On-site customer Customer harus menyediakan waktunya secara penuh dalam tim XP. Dalam proses extreme programming, customer menjadi anggota dari tim pengembangan dan berganggung jawab untuk membawa kebutuhan sistem kepada tim sebagai implementasi.
2.4
Unified Modelling Language (UML) Dalam pengembangan aplikasi, dibutuhkan penggunaan UML untuk memudahkan perancangan struktur aplikasi.
2.4.1 Pengertian UML Menurut Whitten dan Bentley (2007:371), UML merupakan pembuatan model standar dalam pengembangan sistem yang berbasis object oriented yang direpresentasikan dalam bentuk diagram. Diagram yang dihasilkan biasanya merupakan relasi antara objek-objek yang berada di dalam sistem.
2.4.2 Use Case Diagram Whitten dan Bentley (2007:246-250, 382) menjelaskan bahwa use case diagram digunakan untuk menggambarkan interaksi antara sistem dan eksternal sistem serta pengguna. Dengan kata lain, menggambarkan siapa yang akan menggunakan sistem dan langkah apa yang pengguna harapkan ketika berinteraksi dengan sistem.
12 Komponen-komponen yang penting dan yang perlu diperhatikan di dalam use case diagram ini adalah: 1. Use case Fungsi yang dijalankan di dalam sistem digambarkan dengan menggunakan lambang use case dan biasanya dilambangkan dengan bentuk elips. Use case menunjukkan urutan dari aktivitas dan interaksi user terhadap sistem.
Gambar 2.1 Contoh Penggunaan Use Case Di Dalam Use Case Diagram (Sumber: Whitten & Bentley, 2007:246)
2. Actors Use case dipicu oleh eksternal user yang disebut actors. Actors akan memulai aktivitas yang ada di dalam sistem dengan tujuan untuk menyelesaikan business task yang menghasilkan nilai terukur. Seorang
actor
hanya
merepresentasikan
peran
user
ketika
berinteraksi dengan sistem dan tidak menggambarkan seorang individu maupun jabatan kerja.
13
Gambar 2.2 Simbol Actor Dalam Use Case Diagram (Sumber: Whitten & Bentley, 2007:247)
Actors ini dibagi ke dalam empat tipe yaitu: a. Primary bussiness actor Seorang stakeholder yang mendapatkan keuntungan dari eksekusi use case. Primary business actor mungkin atau mungkin tidak dapat menjalankan business event. Contohnya di dalam sebuah business event dari seorang karyawan yang menerima gaji dari sistem penggajian pada hari Jumat, karyawan tersebut tidak menjalankan event tersebut melainkan hanya menjadi penerima dari event yaitu menerima gaji. b. Primary system actor Stakeholder yang secara langsung berinteraksi dengan sistem untuk menjalankan business atau system event. Primary system actor dapat berinteraksi dengan primary business actor dengan tujuan untuk memfasilitasi primary business actor dalam menjalankan business event. c. External server actor Stakeholder yang merespons permintaan dari use case. d. External receiver actor Stakeholder yang menerima nilai terukur dari use case tetapi bukanlah primary actor.
3. Relationships Relationships digambarkan dengan garis yang berada diantara dua simbol pada use case diagram. Pengertian dari relationships ini berbeda menurut cara penggambaran garis dan simbol-simbol apa
14 saja yang saling terhubung. Relationships ini terbagi menjadi lima tipe, yaitu: a. Associations Hubungan antara seorang actor dan sebuah use case yang muncul ketika use case menjelaskan interaksi antar kedua simbol tersebut. Hubungan ini digambarkan dengan sebuah garis lurus yang solid. Jika pada garis terdapat panah ketika menunjuk sebuah use case, maka hal ini menunjukkan bahwa use case ditiru oleh actor. Jika pada garis tidak terdapat panah, maka hal ini menunjukkan interaksi antara use case dan external server atau receiver actor. Ketika actor manapun diasosiasikan dengan use case, ini dianggap bahwa actor sedang berkomunikasi dengan use case. Hubungan asosiasi ini dapat bersifat bidirectional maupun unidirectional.
Gambar 2.3 Contoh Association Relationship Use Case (Sumber: Whitten & Bentley, 2007:248)
b. Extends Untuk menyederhanakan use case, tahapan yang rumit didalam use case dapat dikeluarkan dan dipindahkan menjadi sebuah use case tersendiri. Hasilnya berupa extension use case yang merupakan perpanjangan dari fungsi use case yang sebelumnya lebih kompleks. Sebuah use case dapat memiliki banyak extended relationship tetapi extended use case hanya dapat dipanggil oleh use case awal. Setiap extended relationship line diberi label <<extends>>.
15
Gambar 2.4 Contoh Extended Relationship Use Case (Sumber: Whitten & Bentley, 2007:249)
c. Uses (or Includes) Dalam pembuatan use case diagram,
ada kemungkinan
ditemukannya dua atau lebih use case yang memiliki fungsi yang hampir serupa. Akan lebih baik jika tahapan use case yang hampir serupa ini dipisahkan ke dalam use case tersendiri yang disebut abstract use case. Abstract use case ini membantu untuk mengurangi redudancy diantara use cases. Abstract use case dapat digunakan untuk mereferensikan use case lain yang membutuhkan fungsi ini. Hubungan antara abstract use case dan use case yang menggunakan fungsi ini disebut uses relationship atau includes relationship. Pada garis penghubung antar use case terdapat label <<uses>> atau <
> untuk menunjukkan relasi ini.
Gambar 2.5 Contoh Uses Relationship Use Case (Sumber: Whitten & Bentley, 2007:249)
16 d. Depends on Ketika sedang membuat use case diagram, sering kali ditemukan use case yang saling bergantung dengan use case lainnya untuk menentukan
bagaimana
urutan
use
case
yang
perlu
dikembangkan. Pada garis penghubung antar use case terdapat label <<depends on>> untuk menunjukkan relasi ini.
Gambar 2.6 Contoh Depends On Relationship Use Case (Sumber: Whitten & Bentley, 2007:250)
e. Inheritance Ketika dua atau lebih actors berbagi use case yang sama, dapat dilakukan pembagian actor tersebut ke dalam sebuah abstract actor yang baru sehingga mengurangi komunikasi yang redundant di dalam sistem. Contohnya didalam use case sistem perpustakaan, seorang patron yang adalah actor yang dapat melakukan “search library inventory” dan “check out book”. Sementara visitor adalah actor yang dapat melakukan “search library inventory” dan bisa mengajukan “apply for membership”. Dengan menciptakan sebuah abstract baru yaitu customer yang mana akan menjadi pewaris actor patron dan visitor .
17
Gambar 2.7 Contoh Penggunaan Inheritance Dalam Use Case (Sumber: Whitten & Bentley, 2007:250)
2.4.3 Use Case Narrative Whitten dan Bentley (2007:246-260) menjelaskan bahwa use case narrative
digunakan
untuk
menggambarkan
interaksi
tentang
bagaimana pengguna melakukan suatu kegiatan untuk menyelesaikan suatu tugas tertentu melalui suatu deskripsi tertulis. Use case narrative dapat dideskripsikan dengan beberapa bagian, diantaranya: 1. Use case name Use case name digunakan untuk menyatakan suatu tujuan tertentu yang ingin dicapai didalam suatu use case. 2. Actor Menyatakan stakeholder yang berinteraksi dengan sistem, dimana actor berperan penting dalam melaksanakan jalannya use case. 3. Description Merupakan ringkasan yang menggambarkan tujuan dari use case dan aktivitasnya. 4. Precondition Menyatakan suatu kondisi tertentu sebelum suatu use case dijalankan. 5. Flow of events Merupakan tahapan yang dilakukan oleh user atau sistem dalam menjalankan suatu use case.
18 6. Postcondition Menyatakan kondisi yang akan terjadi sesudah suatu use case dijalankan.
2.4.4 Activity Diagram Whitten dan Bentley (2007:382, 391) menjelaskan bahwa activity diagram digunakan untuk menggambarkan urutan alur aktivitas dari sebuah use case atau proses bisnis. Activity diagram juga dapat digunakan sebagai logika model dengan sistem. Activy diagram diilustrasikan dengan simbol-simbol berikut: Tabel 2.1 Simbol Activity Diagram Keterangan
Gambar
Initial node adalah simbol berbentuk lingkaran yang merepresentasikan mulainya activity diagram. Actions adalah simbol yang berbentuk
rounded
rectangle
yang
merepresentasikan langkahlangkah
dalam
proses
activity diagram. Flow adalah simbol yang berbentuk
panah
menunjukkan activity diagram.
alur
yang dari
19 Keterangan
Gambar
Decision yang
adalah
berbentuk
simbol diamond
dengan satu flow masukkan dan menghasilkan output dua atau lebih flow. Simbol ini
menunjukkan
kondisi
yang membutuhkan pilihan actions yang akan dilakukan selanjutnya. Merge adalah simbol yang berbentuk diamond dengan dua
atau
lebih
masukkan
flow dan
menghasilkan hanya satu flow
output.
Simbol ini
menggabungkan
flows
masukkan yang sebelumnya dipisahkan oleh decision, dan berlanjut Fork adalah simbol yang berbentuk black bar dengan satu flow masukkan dan menghasilkan output dua atau lebih flow. Aksi output pararel ini dapat dilakukan dalam
urutan
apapun
maupun secara bersamaan.
20 Keterangan
Gambar
Join adalah simbol yang berbentuk black bar dengan dua
atau
lebih
flow
masukkan
dan
menghasilkan hanya satu output flow. Semua flow masukkan harus dikerjakan terlebih dahulu sebelum bisa melanjutkan
ke
proses
berikutnya. Activity final adalah simbol yang berbentuk lingkaran dengan lingkaran kecil solid didalamnya.
Simbol
ini
menunjukkan
akhir
dari
seluruh
proses
activity
diagram.
2.4.5 Class Responsibility Collaboration (CRC) Cards Whitten dan Bentley (2007:657-658) menjelaskan bahwa Class Responsibility Collaboration (CRC) cards adalah salah satu cara untuk mengidentifikasi aktivitas yang dilakukan berhubungan dengan kelas yang mana dan mengidentifikasikan hubungan antar kelas tersebut.
2.4.6 Class Diagram Whitten dan Bentley (2007:370-381, 400-406) menjelaskan bahwa class diagram digunakan untuk menggambarkan kelas-kelas objek yang menyusun suatu sistem beserta hubungan antar kelas tersebut.
21 Class diagram terdiri dari tiga bagian utama, yaitu: 1. Nama kelas. 2. Atribut kelas. 3. Operasi kelas.
Gambar 2.8 Struktur Class Diagram Di dalam class diagram terdapat beberapa komponen/hal penting, yaitu: 1. Visibility Visibility berfungsi untuk mendefinisikan apakah atribut dan operasi pada suatu kelas dapat diakses oleh kelas lain atau tidak. Tabel 2.2 Keterangan Visibility Visibility Level
Simbol
Private
-
Keterangan Hanya dapat diakses oleh kelas itu sendiri Hanya dapat diakses oleh kelas
Protected
#
itu
sendiri
dan
kelas
turunannya Dapat diakses oleh semua kelas Public
+
yang berhubungan
2. Multiplicity Multiplicity berfungsi untuk menentukan banyaknya kelas yang berhubungan.
22 Tabel 2.3 Keterangan Multilicity Multiplicity
Notasi Multiplicity 1
Exactly 1
or leave blank
Zero or 1
0..1 0..*
Zero or more
or *
1 or more
1..*
Spesific range
7..9
Gambar 2.9 Contoh Multiplicity (Sumber: Whitten & Bentley, 2007:377)
3. Generalization/specialization Generalization/specialization merupakan sebuah teknik dimana atribut dan operasi yang umum pada beberapa tipe kelas dikelompokkan ke dalam kelasnya sendiri, yang disebut dengan supertype. Atribut dan operasi dari objek kelas supertype diturunkan (inherited) ke kelas objek lainnya, yang disebut dengan subtypes.
23
Gambar 2.10 Contoh Generalization (Sumber: Whitten & Bentley, 2007:376)
4. Aggregation Aggregation merupakan suatu hubungan yang menyatakan bahwa suatu kelas merupakan bagian dari kelas lain yang lebih besar. Sedangkan composition merupakan sebuah aggregation yang lebih kuat,
dimana
secara
keseluruhan
bertanggung
jawab
atas
terbentuknya dan hancurnya suatu part, dan setiap part berasosiasi hanya kepada satu whole object. Pada UML 2.0, aggregation dihapuskan karena hubungannya kurang kuat dan kurang jelas.
24
Gambar 2.11 Contoh Aggregation (Sumber: Whitten & Bentley, 2007:379)
Gambar 2.12 Contoh Composition (Sumber: Whitten & Bentley, 2007:379)
2.4.7 Sequence Diagram Menurut Whitten dan Bentley (2007:659), sequence diagram adalah diagram UML yang memberikan gambaran mengenai logika dari use case diagram dengan menggambarkan hubungan antar objek dalam waktu yang berurutan. Sequence diagram mempunyai notasi sebagai berikut:
25 Tabel 2.4 Simbol Sequence Diagram Keterangan
Gambar
Actor adalah represemtasi dari user yang berinteraksi dengan user interface. Interface
class
adalah
representasi
yang
menggambarkan
user
interface class code. Controller classes berfungsi untuk menentukan aktivitas apa yang akan dilakukan sebuah kelas dan parameter apa saja yang diterima dan dikembalikan
serta
menghubungkan
kelas
interface
kelas
dengan
entity. Entity Class adalah kelas yang
melakukan
suatu
aktivitas terhadap data yang ada di dalam database.
Messages mengindikasikan bahwa adanya pesan yang masuk yang dikirimkan ke kelas tertentu.
26 Keterangan
Gambar
Activation bars berfungsi untuk
menunjukkan
alur
hidup dari setiap instance object
yang
selama
digunakan
periode
waktu
tertentu.
Return messages merupakan pengembalian atau respon yang diberikan dari sebuah messages.
Self Call adalah sebuah objek memanggil
yang
dapat methodnya
sendiri.
Frame adalah sebuah kotak yang
menggambarkan
bahwa ada satu atau lebih pesan yang opsional.
27
Gambar 2.13 Sequence Diagram of the Place New Order Use Case (Sumber: Whitten & Bentley, 2007:659)
2.5
Data Dictionary Menurut Connolly & Begg (2010:65), data dictionary merupakan suatu penggambaran sifat database yang menyediakan data independence dimana terdapat nama entitas dan deskripsi dari entitas tersebut. Setiap atribut yang diidentifikasikan memberikan fungsi yang berguna bagi pengguna.
2.6
Interaksi Manusia dan Komputer Untuk menunjang kemudahan pengguna ketika berinteraksi dengan komputer, maka diperlukan dasar-dasar teori berikut:
2.6.1 Pengertian Interaksi Manusia dan Komputer Menurut Shneiderman dan Plaisant (2010:22), interaksi manusia dan komputer adalah pengaplikasian metode-metode yang digunakan oleh manusia dalam penerapan penggunaan komputer sehingga dapat meningkatkan efektivitas, efisiensi, dan kepuasan dalam melakukan sebuah pekerjaan.
2.6.2 Lima Faktor Manusia Terukur Menurut Shneiderman dan Plaisant (2010:32), faktor-faktor yang harus diperhatikan dalam merancang user interface disebut lima faktor
28 manusia terukur. Lima faktor manusia terukur merupakan sebuah standarisasi untuk mengukur apakah sebuah aplikasi telah mencapai tujuannya atau belum agar aplikasi tersebut dapat menjadi lebih efektif, efisien, dan memberikan kepuasan kepada user. Faktor-faktor tersebut antara lain: 1. Time to learn (waktu belajar) Lamanya waktu yang diperlukan oleh user agar dapat mempelajari bagaimana cara menggunakan aksi-aksi yang relevan dalam mengerjakan suatu tugas. 2. Speed of performance (kecepatan kinerja) Lamanya waktu yang dibutuhkan dalam mengerjakan suatu tugas. 3. Rate of errors by users (tingkat kesalahan) Seberapa banyak dan tipe kesalahan apa saja yang dibuat oleh pengguna dalam mengerjakan suatu tugas. 4. Retention over time (daya ingat) Seberapa baik pengguna mempertahankan pengetahuannya dalam jangka waktu tertentu. 5. Subjective satisfaction (kepuasan subjektif) Banyaknya pengguna yang suka menggunakan antarmuka (interface) yang beraneka ragam. Untuk mengetahui hal tersebut, dapat dilakukan wawancara (interview) dan surveys.
2.6.3 Delapan Aturan Emas Shneiderman dan Plaisant (2010:88-89) menjelaskan tentang delapan prinsip yang disebut sebagai “aturan emas”. Prinsip ini merupakan sebuah panduan dalam pembuatan user interface yang baik agar user dapat mengendalikan sistem sehingga produktivitas kerja menjadi meningkat. Prinsip-prinsip tersebut, antara lain: 1. Strive for consistency Konsistensi dibutuhkan dalam segala situasi, dalam pengunaan tampilan seperti menu, help screen, warna, layout, kapitalisasi, font, dan sebagainya.
29 2. Cater to universal usability Mengenali kebutuhan dari pengguna yang berbeda-beda serta memfasilitasi perubahan konten. Perbedaan tersebut meliputi rentang usia ketidakmampuan, dan perbedaan teknologi dalam setiap kebutuhan panduan desain. 3. Offer informative feedback Untuk setiap aksi pengguna, seharusnya ada umpan balik (feedback) yang jelas. 4. Design dialogs to yield closure Urutan langkah suatu aksi seharusnya disusun ke dalam grup dengan awal, tengah, dan akhir. Umpan balik yang informatif pada akhir aksi haruslah memberikan kepuasan. 5. Prevent errors Dalam melakukan perancangan sistem, sebaiknya menghindari terjadinya kesalahan (error) yang serius atau fatal ketika sistem digunakan oleh user. 6. Permit easy reversal of actions Aksi-aksi yang dilakukan didalam sistem harus dapat dikembalikan ke aksi atau keadaan yang sebelumnya, sehingga ketika pengguna mengetahui adanya kesalahan aksi tersebut dapat dibatalkan (cancel). 7. Support internal locus of control Pengguna pengendalian
yang
berpengalaman
dimana
pengguna
menginginkan menguasai
experience
antarmuka
dan
antarmuka tersebut merespons aksi tersebut. 8. Reduce short-term memory load Keterbatasan pemrosesan informasi dalam memori jangka pendek pengguna merupakan salah satu hal yang harus diperhatikan.
2.7
Microsoft Visual Studio 2012 Microsoft Visual Studio 2012 adalah sebuah software yang esensial untuk
menjalankan
tugas
pengembangan
sederhana.
Software
ini
menyederhanakan pembuatan aplikasi, debugging, dan peluncuran dari aplikasi diberbagai platform termasuk SharePoint dan Cloud. Visual Studio 2012 juga
30 terintegrasi bantuan untuk pengembangan dengan metode test-driven, serta debugging tool yang menjamin kualitas program yang baik. (Anonim1, 2013)
2.8
OpenCV OpenCV adalah sebuah library yang berisi fungsi programming untuk ilmu computer vision. (Anonim2, 2013)
2.9
Emgu CV Emgu CV adalah sebuah .NET wrapper lintas platform untuk library OpenCV dalam pengolahan citra digital sehingga fungsi-fungsi dari OpenCV dapat dipanggil dari bahasa-bahasa .NET, seperti C#, VB, VC++, IronPhyton, dan sebagainya. (Anonim3, 2013)
2.10 MongoDB MongoDB adalah sebuah basis data dokumen yang open source dan merupakan NoSQL database terkemuka serta ditulis dalam C++. (Anonim4, 2013)
2.11 Tesseract OCR Tesseract OCR merupakan OCR engine yang dapat membaca image dan mengubahnya menjadi text. (Anonim5, 2013)
2.12 ITextSharp ITextSharp merupakan library yang dapat membantu suatu aplikasi untuk dapat mengelola file PDF. (Anonim6, 2013)
2.13 AForge.NET Framework AForge.NET merupakan framework yang dirancang untuk meneliti pada bidang computer vision dan artificial intelligence, yang meliputi image processing, neural network, machine learning, robotic, dan lain-lain. (Anonim7, 2013)
31 2.14 Artificial Intelligence (AI) Pada dasarnya, banyak pandangan serta pengertian mengenai AI, dan secara garis besar, Russel dan Norvig (2010:2) membagi pengertian AI kedalam empat kategori utama, diantaranya: 1. Thinking humanly Pada kategori ini, AI dijelaskan sebagai suatu usaha baru untuk dapat membuat komputer dapat berpikir, suatu mesin yang memiliki pikiran secara penuh dan memiliki rasa, atau dengan kata lain dapat juga disebut sebagai kegiatan yang mengadopsi cara manusia berpikir, seperti pengambilan
keputusan,
penyelesaian
masalah,
pembelajaran,
dan
sebagainya. 2. Thinking rationally Pada kategori ini, AI dijelaskan sebagai suatu studi melalui pemodelan komputasi, dimana studi AI ini dapat membuat segala sesuatu mungkin untuk dapat dipersepsikan dan memiliki alasan untuk dilakukan. 3. Acting humanly Pada kategori ini, AI dijelaskan sebagai suatu seni untuk membuat mesin dapat menampilkan fungsi yang membutuhkan kecerdasan ketika digunakan oleh manusia. 4. Acting Rationally Pada kategori ini, AI dijelaskan sebagai studi tentang perancangan agenagen kecerdasan (intelligent agents) dan AI difokuskan pada perilaku yang cerdas.
2.15 Computer Vision Menurut Shapiro dan Stockman (2001:1) computer vision adalah sebuah cabang studi dari ilmu kecerdasan buatan yang bertujuan untuk membantu pengambilan keputusan yang tepat mengenai deskripsi objek maupun scenes yang ada didalam sebuah image.
2.16 Image Processing Menurut Russel dan Norvig (2010:965) Image Processing adalah suatu proses untuk mengekstraksi informasi visual yang dibutuhkan untuk menjalankan tugas manipulasi, navigasi, dan recognition.
32 2.17 Digital Image Saphiro dan Stockman (2001:3, 10-11, 29) menyatakan bahwa sebuah image dua dimensi (2D) yang direpresentasikan oleh array diskrit 2D I[r,c] dimana I merupakan nama array, dan r dan c adalah angka row dam column. Digital image memiliki jumlah baris dan kolom picture element (pixel) yang tetap, dan bernilai antara 0 – 255 yang menyatakan brightness pada titiktitik gambar. Angka 0 menyatakan titik tergelap sementara 255 menyatakan titik terterang dari gambar. Nilai pixel dapat dibuah berdasarkan hubungannya dengan sejumlah nilai pixel yang bersebelahan (kolom dan baris) untuk mengurangi noise yang mungkin terjadi pada saat digitization process serta dapat berfungsi untuk menyederhanakan konten dari sebuah gambar, seperti pada proses background subtraction.
Gambar 2.14 Array Pixel Pada Digital Image (Sumber: Saphiro & Stockman, 2001:2)
Gambar 2.15 Representasi Gambar Dari Pixel Pada Digital Image (Sumber: Saphiro & Stockman, 2001:2)
33 2.18 Detection Menurut Forsyth dan Ponce (2012:549) detection merupakan metode untuk
mengindentifikasi
image
yang
memiliki
sebuah
objek
yang
mendominasi.
2.19 Recognition Bradski dan Kaehler (2008:461) menjelaskan bahwa recognition merupakan suatu keadaan ketika komputer memberikan nama dari suatu objek.
2.20 Grayscale Menurut Saphiro dan Stockman (2001:30), grayscale image adalah sebuah monochrome digital image I[r,c] dengan satu nilai intensitas per pixel.
Gambar 2.16 Contoh Grayscale Image (Sumber: http://www.aforgenet.com/framework/docs/html/img/imaging/sample1.jpg, 2013)
2.21 Binary Image Menurut Saphiro dan Stockman (2001:30, 51-52) binary image adalah sebuah digital image dengan semua nilai pixel adalah 0 atau 1 yang didapatkan dari sebuah image grayscale atau color image melalui proses segmentasi. Angka 1 digunakan sebagai foreground pixel, sedangkan angka 0 digunakan sebagai background pixel. Binary image dinyatakan dalam bentuk B[r,c].
34
Gambar 2.17 Array pixel of binary image (Sumber: Saphiro & Stockman, 2001:5) Dari array diatas kemudian didapatkan gambar sebagai berikut:
Gambar 2.18 Representasi Gambar Binary Image (Sumber: Saphiro & Stockman, 2001:5)
2.22 Red, Green, Blue Saphiro dan Stockman (2001:191-193) menjelaskan bahwa dengan menggunakan tiga tipe receptors, manusia dapat membedakan beribu macam warna. Trichromatic red green blue (RGB) didalam sistem grafis biasanya menggunakan three bytes enabling (28)3 dan menghasilkan kurang lebih 16 juta kode warna yang berbeda. Tiap 3-byte atau 24-bit RGB pixel selalu ada masing-masing 1 byte (range antara 0 – 255) untuk warna merah, hijau, biru. Urutan munculnya warna pada memory bisa berbeda-beda dan penting dalam programming.
35 Tabel 2.5 Digital Trichromatic Color Encoding System Color
RGB
Red
(255, 0, 0)
Yellow
(255, 255, 0) (100, 100, 50)
Green
(0, 255, 0)
Blue
(0, 0, 255)
White
(255, 255, 255) (192, 192, 192)
Grey
(127, 127, 127) (63, 63, 63) …
Black
(0, 0, 0)
Sistem RGB adalah sebuah sistem penambahan warna karena warna yang diciptakan dihasilkan dari penambahan komponen ke warna hitam: (0, 0, 0). Hasilnya akan direspons baik terhadap monitor yang memiliki tiga tipe fosfor untuk memancarkan cahaya. Di dalam RGB terdapat persamaan normalisasi yang digunakan untuk melakukan normalisasi data gambar. Normalisasi tersebut berfungsi sebagai interpretasi oleh program komputer dan orang-orang dalam melakukan transformasi ke dalam sistem warna lainnya. Adapun persamaan normalisasi tersebut antara lain: Intensity Nomalized red Nomalized green Nomalized blue
2.23 Binary Image Morphology Menurut Saphiro dan Stockman (2001:63-68), istilah morfologi dalam computer vision digunakan untuk merujuk bentuk sebuah area tertentu. Morfologi ini digunakan untuk memproses area dari operasi component labelling yang saling terhubung.
36 Operasi pada morfologi binary adalah dengan memasukkan sebuah binary image B dan structuring element S, yang umumnya adalah sebuah binary image yang lebih kecil. Structuring element merepresentasikan sebuah bentuk dimana ukurannya bisa bervariasi. Tetapi ada ukuran tertentu untuk structuring element umum seperti bentuk segi empat dengan dimensi yang spesifik [BOX(h,w)] atau daerah lingkaran dengan diameter yang spesifik [DISK(d)].
Gambar 2.19 Contoh BOX(3,5) (Sumber: Saphiro & Stockman, 2001:64)
Gambar 2.20 Contoh DISK(5) (Sumber: Saphiro & Stockman, 2001:64) Ada empat operasi dasar untuk melakukan morfologi binary yaitu dilatasi, erosi, closing dan opening. Dilatasi digunakan untuk memperbesar wilayah, sementara erosi digunakan untuk memperkecil wilayah. Closing dapat digunakan untuk menutup internal holes di dalam wilayah dan menghilangkan bays sepanjang boundary. Opening dapat digunakan untuk menghilangkan bagian kecil dari wilayah yang keluar dari boundary. Rumus untuk dilatasi adalah sebagai berikut:
Rumus untuk erosi adalah sebagai berikut:
Rumus untuk closing adalah sebagai berikut:
37 Rumus untuk opening adalah sebagai berikut:
Gambar 2.21 Binary Image B (Sumber: Saphiro & Stockman, 2001:67)
Gambar 2.22 Structuring Element (Sumber: Saphiro & Stockman, 2001:67)
Gambar 2.23 Dilation (Sumber: Saphiro & Stockman, 2001:67)
38
Gambar 2.24 Erotion (Sumber: Saphiro & Stockman, 2001:67)
Gambar 2.25 Closing (Sumber: Saphiro & Stockman, 2001:67)
39
Gambar 2.26 Opening (Sumber: Saphiro & Stockman, 2001:67)
2.24 Thresholding Menurut Jain, Kasturi, Schunck (1995:28-31) thresholding adalah sebuah proses segmentasi untuk mengidentifikasikan objek-objek yang berada di dalam sebuah gambar. Dengan thresholding, grayscale image dapat diubah menjadi binary image sehingga objek dapat dipisahkan dari background. Agar proses thresholding ini lebih efektif dalam memisahkan objek dan background, perlu diketahui level intensitas dari objek dan background serta memiliki kontras yang cukup. Jika sebuah binary image adalah B[i,j] sama dengan sebuah thresholded gray image FT[i,j] yang didapat dengan cara threshold T untuk original gray image F[i,j], maka: B[i,j] = FT[i,j] dimana untuk objek yang lebih gelap dan background yang lebih terang:
Jika diketahui nilai intensitas objek berada didalam range [T1, T2], maka:
40 Sebuah skema thresholding yang intensitas level dari objeknya mungkin berasal dari beberapa interval yang terurai dapat direpresentasikan sebagai berikut:
dimana Z adalah sekelompok nilai intensitas untuk komponen objek.
2.25 Algoritma Deitel dan Deitel (2010:87) menjelaskan bahwa algoritma merupakan sebuah prosedur yang digunakan untuk menyelesaikan suatu masalah (problem) dengan mengurutkan suatu langkah aksi yang akan dieksekusi.
2.26 Teks Menurut definisi Kamus Besar Bahasa Indonesia (KBBI), teks merupakan wacana tertulis.
2.27 Machine Print and Handwriting Text Srivasva, Raj, Patnaik, dan Kumar (2013) menjelaskan beberapa perbedaan karakteristik antara text machine print dan handwriting: 1. Penulisan karakter pada machine print akan selalu lurus sedangkan karakter handwriting bisa lurus dan bisa juga tidak. 2. Jarak spasi pada tulisan machine print mempunyai jarak yang jelas dan kecil kemungkinan
untuk
terjadi
overlapping
antar
tulisan,
sementara
handwriting memungkinan terjadinya overlapping sehingga menyulitkan tejadinya proses segmentasi. 3. Tulisan machine print memiliki tinggi tulisan yang cenderung sama, sedangkan handwriting memiliki tinggi yang berbeda-beda.
2.28 Optical Character Recognition (OCR) Charles, Harish, Swathi, dan Deepthi (2012) menjelaskan bahwa Optical Character Recognition merupakan suatu sistem yang dapat mengenali karakter tulisan yang dicetak atau tulisan tangan dengan melakukan scan pada dokumen.
41 2.29 Jaringan Syaraf Tiruan (Neural Network) Menurut Fausett (1994:3-19) jaringan syaraf tiruan adalah sistem pemroses informasi yang memiliki karakteristik mirip dengan jaringan syaraf biologi. JST dapat digunakan sebagai pengenalan pola (pattern recognition), signal processing, peramalan, dan hal lainnya lagi. JST ditentukan oleh tiga hal, antara lain: 1. Pola hubungan antar neuron (arsitektur jaringan). Beberapa arsitektur jaringan yang sering dipakai antara lain: a. Jaringan layar tunggal (single layer network) Dalam jaringan ini, sekumpulan input neuron dihubungkan langsung dengan sekumpulan output.
Gambar 2.27 Jaringan Layar Tunggal (Sumber: Fausett, 1994:13) b. Jaringan layar jamak (multi layer network) Jaringan ini merupakan perluasan dari jaringan layar tunggal, dimana selain unit input dan output, terdapat unit lainnya lagi yang disebut layar tersembunyi (hidden layer). Jaringan ini dapat menyelesaikan masalah yang lebih kompleks dibandingkan dengan jaringan layar tunggal, meskipun terkadang proses pelatihan lebih kompleks dan lama.
42
Gambar 2.28 Jaringan Layar Jamak (Sumber: Fausett, 1994:13) c. Jaringan competitive Jaringan ini membentuk bagian yang besar pada neural network. Competitive interconnections mempunyai bobot – operasi winner-take-all competition
.
ε
dan menggunakan
Gambar 2.29 Jaringan Competitive (Sumber: Fausett, 1994:14)
43 2. Metode
untuk
menentukan
bobot
penghubung
(metode
training/learning/algoritma). Berdasarkan cara memodifikasi bobotnya, ada dua macam pelatihan, antara lain: a. Pelatihan dengan supervisi (supervised) Dalam pelatihan ini, terdapat sejumlah pasangan data (input dan target output) yang dipakai untuk melatih jaringan hingga diperoleh bobot yang diinginkan. Pada setiap kali pelatihan, suatu input diberikan ke jaringan. Jaringan akan memproses dan mengeluarkan output. Selisih antara output dan target output merupakan kesalahan (error) yang terjadi. Jaringan akan memodifikasi bobot sesuai dengan kesalahan tersebut. Contoh jaringan yang menggunakan pelatihan ini adalah perceptron, ADALINE, dan backpropagation. b. Pelatihan tanpa supervisi (unsupervised) Dalam pelatihan ini, perubahan bobot jarignan dilakukan berdasarkan parameter tertentu dan jaringan dimodifikasi menurut ukuran parameter tersebut. 3. Fungsi aktivasi. Fungsi aktivasi dipakai untuk menentukan keluaran suatu neuron. Argumen fungsi aktivasi adalah net masukan (kombinasi linier masukan dan bobotnya).
Jika
net
=
,
maka
fungsi
aktivasinya
adalah
Beberapa fungsi aktivasi yang sering dipakai antara lain: a. Fungsi identitas
b. Fungsi threshold (binary step)
c. Fungsi sigmoid biner
Nilai dari fungsi ini terletak antara 0 dan 1. Turunan dari fungsi ini adalah:
44 d. Fungsi sigmoid bipolar
Nilai dari fungsi ini terletak antara -1 dan 1. Turunan dari fungsi ini adalah:
Terkadang dalam jaringan ditambahkan sebuah unit masukan yang nilainya selalu satu (1), yang disebut dengan bias. Bias berfungsi untuk mengubah nilai threshold menjadi nol (0). Jika melibatkan bias, maka keluaran unit penjumlah adalah:
2.30 Backpropagation Fausset (1994:289-296) menjelaskan bahwa backpropagation melatih jaringan untuk mendapatkan keseimbangan antara kemampuan jaringan untuk mengenali pola yang digunakan selama pelatihan serta kemampuan jaringan untuk memberikan respon yang benar terhadap pola masukan yang serupa dengan pola yang dipakai selama pelatihan. Backpropagation sendiri memiliki kelemahan yaitu pelatihan yang memerlukan waktu yang lama. 1. Arsitektur backpropagation
Gambar 2.30 Backpropagation Dengan Satu Hidden Layer (Sumber: Fausett, 1994:291)
45 2. Fungsi aktivasi Fungsi aktivasi yang dipakai harus memenuhi beberapa syarat, yaitu kontinu, terdiferensial dengan mudah, dan merupakan fungsi yang tidak turun. Fungsi yang sering dipakai dan memenuhi ketiga syarat tersebut adalah fungsi sigmoid biner serta fungsi sigmoid bipolar. 3. Pelatihan standar backpropagation Adapun algoritma yang digunakan dalam pelatihan backpropagation antara lain: a. Inisialisasi semua bobot dengan bilangan acak kecil (-0.5 s/d 0.5). b. Jika kondisi penghentian belum terpenuhi, lakukan langkah c sampai i. c. Untuk setiap pasang data pelatihan, lakukan langkah d sampai i. Fase I: Propagasi maju d. Tiap unit masukan menerima sinyal dan meneruskannya ke unit tersembunyi di atasnya. e. Hitung semua keluaran di unit tersembunyi
f. Hitung semua keluaran jaringan di unit
Fase II: Propagasi mundur g. Hitung faktor
unit keluaran berdasarkan kesalahan di setiap unit
keluaran
merupakan unit kesalahan yang akan dipakai dalam perubahan bobot layardi bawahnya (langkah h) Hitung suku perubahan bobot
dengan laju percepatan
46 h. Hitung faktor
unit tersembunyi berdasarkan kesalahan di setiap unit
tersembunyi
Faktor
unit tersembunyi
Hitung suku perubahan bobot merubah bobot
(yang akan dipakai nanti untuk
)
Fase III: Perubahan bobot i. Hitung semua perubahan bobot Perubahan bobot garis yang menuju ke unit keluaran:
Perubahan bobot garis yang menuju ke unit tersembunyi:
Setelah pelatihan selesai dilakukan, jaringan dapat dipakai untuk pengenalan pola. Pada pengenalan pola, hanya digunakan algoritma e dan f saja. Apabila fungsi aktivasi yang digunakan bukan sigmoid biner, maka langkah e dan f harus disesuaikan, demikian juga turunannya pada langkah g dan h.
2.31 Jarak Kadir dan Susanto (2013:567) menjelaskan bahwa jarak adalah pendekatan
yang
umum
dipakai
untuk
menentukan
kesamaan
atau
ketidaksamaan dua vektor fitur yang dinyatakan dengan ranking. Semakin kecil nilai ranking, semakin dekat kesamaan kedua vektor tersebut. Pengukuran jarak dapat dilakukan dengan beberapa cara, akan tetapi yang umum digunakan adalah jarak Euclidean. Jarak Euclidean didefinisikan sebagai berikut:
47 dimana
dan
adalah dua vektor yang jaraknya akan dihitung dan N
menyatakan panjang vektor.
2.32 Hasil Penelitian Sebelumnya Pada jurnal yang ditulis oleh Dongre dan Mankar (2011), dapat diketahui bahwa dalam bidang ilmu machine learning dapat dilakukan pengenalan huruf. Dongre dan Mankar mengembangkan sebuah metode untuk komputer mengenali tulisan Devganari, tulisan Hindi India. Dengan melakukan segmentasi sebelum proses pengenalan huruf, maka dapat dicapai pengenalan huruf yang lebih baik karena tingkat akurasi pengenalan huruf sangat bergantung dengan proses segmentasi. Hal pertama yg perlu dilakukan adalah melakukan preprocessing terhadap image yaitu thresholding dan binarization, noise reduction untuk mengurangi kecacatan image, skew detection and correction, dan thining dilakukan untuk menipiskan tulisan supaya tulisan lebih mudah dideteksi. Preprocessed image selanjutnya akan disegmentasi. Ada 3 tahapan
segmentasi
yang
dilakukan
yaitu
line
segmentation,
word
segmentation, character segmentation. Dari hasil segmentasi yang dilakukan, dapat diketahui bahwa tingkat keberhasilan line segmentation adalah hampir mendekati 100%. Word segmentation akurat selama dokumen hanya mengandung karakter. Ketika muncul angka numeral Devganari, maka tingkat akurasi akan menurun sampai sekitar 91%. Tetapi untuk tingkat akurasi character recognition sekitar 55% dikarenakan karakter yang disegmentasi menjadi lebih banyak jumlahnya daripada karakter yang tertera pada dokumen aslinya. Hal ini terjadi karena Devganari merupakan dua dimensional script sebagai konsonan yang dimodifikasi dari berbagai sisi, atas, bawah, kanan, kiri untuk membentuk sebuah kata yang memiliki makna. Hasil penelitian ini walaupun tidak sempurna, tetap dapat membuktikan bahwa optical character recognition (OCR) dapat dilakukan. Kemudian dari jurnal yang dituliskan oleh Thungamani dan Kumar (2012), dapat diketahui bahwa proses OCR juga dapat diterapkan dalam mengenali huruf Kannada, sebuah bahasa yang digunakan oleh penduduk di bagian India Selatan tepatnya di provinsi Karnataka, Kannada. Sama seperti penelitian yang dilakukan oleh Vikas dan Vijay sebelumnya, Thugamani dan Kumar juga melakukan preprocessing image dan segmentasi. Segmentasi
48 tersebut juga dilakukan dalam 3 tahap yaitu line segmentation, word segmentation, character segmentation. Selain itu, dilakukan juga proses horizontal and vertical projection untuk memisahkan karakter huruf Kannada. Kemudian dalam proses segmentasi ini juga terdapat proses untuk menemukan connected component (CC) didalam binary image, dimana setiap CC, ratio antara tinggi dan lebar maupun pixel hitam dan putih diperhitungkan didalam kotak pembatas CC. Hal ini lakukan supaya analisis karakter dapat diproses lebih cepat. Hasil dari penelitian ini adalah dengan penggunaan metode horizontal and vertical projection serta pencarian CC meningkatkan kecepatan proses OCR 4 kali lebih cepat dibandingkan dengan projection analysis. Anupama, Rupa, dan Reddy (2013) melakukan penelitian mengenai segmentasi terhadap Telugu image document dengan menggunakan multiple histogram projection. Telugu adalah bahasa yang paling populer digunakan di India Selatan. Serupa dengan penelitian yang telah dilakukan sebelumnya, dilakukan preprocessing image sebelum masuk ke tahapan segmentasi. Setelah itu, Anupama, Rupa, dan Reddy melakukan proses false line exclusion meniadakan noise yang mungkin ada didekat daerah text line. Ketika sudah disegmentasi, kemudian akan dikalkulasikan rata-rata dari tinggi daerah garis untuk meniadakan false lines yang mungkin terdeteksi. Lalu, dengan menghitung rata-rata lebar dari kata yang berada pada sumbu X dan jika kata tersebut tidak sesuai dengan threshold maka akan dianggap sebagai kata yang salah. Proses ini disebut false word exclusion. Hasil yang didapatkan dari penelitian ini adalah dengan melakukan proses-proses diatas, tingkat akurasi pengenalan huruf Telugu adalah 99% untuk dokumen yang memiliki kualitas yang baik. Kekurangan dari penelitian ini adalah ketika ada karakter yang saling menempel akan mengakibatkan kegagalan segmentasi. Selain itu masih terjadi error terhadap segmentasi baris yang saling menumpuk. Algoritma heuristik diperlukan untuk menyelesaikan masalah tersebut dan untuk mengembalikan kata yang hilang. Dari ketiga penelitian diatas diketahui bahwa proses OCR ini lebih sulit dilakukan pada huruf Hindi seperti Devganari, Kannada, maupun Telugu. Tetapi tidak menutup kemungkinan bahwa proses OCR ini dapat dilakukan untuk huruf latin. Dengan proses yang serupa, pengenalan karakter tulisan dapat dilakukan.
49 Tabel 2.6 Hasil Penelitian Sebelumnya No 1.
Nama
Judul
Metode
Keterangan
Vikas J Dongre, Devgnari
Menggunakan Penelitian
Vijay J Mankar
Document
line
membahas
Segmentation
segmentation,
bahwa
Using Histogram word
pengenalan
Approach (2011)
segmentation,
huruf
character
Devganari
segmentation.
dengan
ini
menggunakan line segmentation, word segmentation, character segmentation dapat dilakukan walaupun hasilnya belum 100% akurat. 2.
M.
A
Survey
Thungamani, P. Methods
of Melakukan and vertical in horizontal
Penelitian
ini
dilakukan
Ramakhanth
Strategies
Kumar
Handwritten
projection
mengetahui
Kannada
dan
seberapa cepat
Character
menghitung
pengenalan
Segmentation
ratio
huruf
(2012)
connected
metode vertical
component
horizontal
didalam
projection.
proses
untuk
dengan
50 No
Nama
Judul
Metode
Keterangan
segmentasi. 3.
N.
Anupama, Character
Ch.
Rupa
Prof.
Menggunakan Penelitian
& Segmentation for proses E. Telugu
ini
false bertujuan untuk
Image line exclusion mengetahui
Sreenivasa
Document using dan
Reddy
Multiple
word
pengenalan
Histogram
exclusion.
telugu
Projections(2013)
false metode
image
document.