BAB 2 LANDASAN TEORI
2.1.
Algoritma Bayesian Filtering Bayesian filtering merupakan metode terbaru yang digunakan untuk mendeteksi spam mail. Algoritma ini memanfaatkan metode probabilitas dan statistik yang dikemukakan oleh ilmuwan Inggris Thomas Bayes, yaitu memprediksi probabilitas di masa depan berdasarkan pengalaman di masa sebelumnya. Dua kelompok peneliti, satu oleh Pantel dan Lin, dan yang lain oleh Microsoft Research memperkenalkan metode statistik Bayesian filtering ini pada teknologi anti spam filter. Tetapi yang membuat algoritma Bayesian filtering ini popular adalah pendekatan yang dilakukan oleh Paul Graham (Stuart J.Russel and Peter Narvig,1995,h426) . Bayesian filtering mendeteksi spam dengan cara menghitung probabilitas kata dari suatu pesan (mail) berdasarkan isinya. Probabilitas ini dapat dihitung dengan terlebih dahulu membuat suatu database spam mail dan database non spam mail. Kemudian dengan suatu metode training, software anti spam yang menggunakan algoritma Bayesian dapat dilatih untuk melihat kata-kata yang sering digunakan pada spam mail, sehingga pada akhirnya dihasilkan filter anti spam yang akurat dengan sesedikit mungkin false positives. False positives adalah e-mail legal yang ditujukan kepada penerima, tetapi karena kesalahan dari filter anti spam, dikategorikan menjadi spam mail. Pada dasarnya, algoritma Bayesian filtering merupakan pengembangan dari algoritma penilaian pesan (scoring content-based filter, hampir sama dengan
9
keywords filtering) yaitu filter mencari karakteristik kata-kata yang banyak digunakan pada spam mail, kata-kata ini diberi nilai individual, dan nilai spam secara keseluruhan dihitung dari nilai individual tersebut. Tetapi algoritma ini memiliki kelemahan yaitu karakteristik kata-kata pada spam mail dan non-spam mail berbeda-beda untuk setiap individu. Kata “business” misalnya yang untuk sebagian orang akan termasuk pada karakteristik kata-kata pada spam mail, tetapi untuk perusahaan tertentu yang bergerak di bidang itu, kata “business” tersebut termasuk pada non-spam mail. Dapat dikatakan bahwa algoritma scoring contentbased filter ini tidak kompatibel. Lain halnya dengan scoring content-based filter, Bayesian filtering membuat daftar karakteristik kata-kata spam dan non-spam mail secara otomatis. Tentunya terlebih dahulu, kita harus mengklasifikasikan e-mail mana saja yang termasuk spam mail dan mana yang termasuk non-spam mail. Bayesian filter menghitung probabilitas dari kata-kata yang umum digunakan pada spam mail berdasarkan klasifikasi ini. Karakteristik dari spam mail yang dapat diidentifikasi antara lain berdasarkan kata-kata pada body message dan header message. Spam mail dapat dikategorikan sebagai berikut : 1. Junk mail yaitu e-mail yang dikirimkan secara besar-besaran dari suatu perusahaan bisnis, yang sebenarnya tidak kita inginkan. 2. Non-commercial spam, misalnya surat berantai atau cerita humor yang dikirimkan secara masal tanpa tujuan komersial tertentu.
10
3. Pornographic spam yaitu e-mail yang dikirimkan secara masal untuk mengirimkan gambar-gambar pornografi. 4. Virus spam yaitu e-mail yang dikirimkan secara masal, dan mengandung virus atau Trojans. Spam mail juga mempunyai beberapa karakteristik sebagai berikut: 1. Embedded Images Embedded images merupakan gambar-gambar yang dimuat di spam mail, umumnya gambar tidak akan langsung terlihat, karena hanya merupakan link. Begitu pemakai terkoneksi ke internet, software e-mail pemakai akan langsung men-download gambar tersebut dari sumbernya melalui link internet. Celakanya, pada saat software e-mail pemakai mendownload gambar, terjadi komunikasi antara komputer pemakai dengan komputer spammer. Pada saat itu juga, alamat e-mail pemakai akan terkirim tanpa sepengetahuan pemakai. Dengan dikirimnya alamat e-mail pemakai, spammer akan mengetahui bahwa e-mail pemakai tersebut masih aktif, dan para spammer akan mengirimkan spam mail lebih banyak lagi. 2. Tracking ID Biasanya spam mail menyisipkan tracking ID semacam identitas dalam bentuk karakter alfanumerik. ID ini digunakan untuk pendataan spam mail para spammer, misalnya dari seluruh spam mail yang dikirim, berapa yang kembali dan berapa yang diterima.
11
3. Alamat E-mail Palsu Istilah pemalsuan alamat pengirim ini sering disebut Forgery. Alamat palsu yang dipakai kadang-kadang sangat sulit dimengerti, misalnya
[email protected]. Tentu saja ini disengaja untuk menghindari balasan dari penerima spam mail. Spammer biasanya memakai alamat e-mail asli, tetapi milik orang lain. Akibatnya orangorang inilah yang menerima korban kemarahan dalam bentuk jumlah email yang sangat besar atau bomb e-mail. 2.2.
Rumus Bayes Dasar dari teorema naive Bayesian yang dipakai dalam pemrograman adalah :
P ( Hi | A) =
P( A | Hi ).P( Hi ) P( A)
Dengan: P ( A) = P( A | H 1) + P( H 1) + ... + P ( A | Hn) + P( Hn) Dengan:
2.3.
•
P(Hi|A) adalah peluang kejadian Hi dengan syarat A
•
i dimulai dari 1 hingga n.
Proses Pelatihan E-mail
Pada proses pelatihan e-mail, koleksi spam mail dan non-spam mail yang sebelumnya telah disediakan dideteksi terlebih dahulu dengan menggunakan
12
algoritma Bayesian Filtering. Proses ini perlu dilakukan untuk menghitung nilai spamicity setiap token yang memiliki kemungkinan terdapat pada spam mail. Langkah-langkah yang dilakukan pada proses pelatihan e-mail adalah sebagai berikut: 1. Kumpulkan semua token yang terdapat pada spam mail dan non-spam mail yang akan dilatih. 2. Hitung probabilitas setiap token dengan rumus:
P (non - spam mail ) =
P ( spam mail ) =
Jumlah token yang sama pada non - spam mail Jumlah non - spam mail yang dilatih Jumlah token yang sama pada spam mail Jumlah spam mail yang dilatih
3. Hitung spamicity setiap kata dengan rumus:
Spamicity =
2.4.
P( spam mail ) ( P( spam mail ) + P( non - spam mail ))
Proses Pengenalan E-mail
Setiap e-mail baru yang diterima akan melalui proses pengenalan e-mail, proses ini perlu dilakukan agar dapat diketahui apakah e-mail tersebut adalah spam mail atau bukan. Langkah-langkahnya adalah: 1.
Tentukan 8 token yang memiliki nilai spamicity tertinggi pada e-mail baru.
13
2.
Tentukan 7 token yang memiliki nilai spamicity terendah pada email baru.
3.
Masukkan nilai spamicity tersebut ke dalam rumus dibawah ini. Untuk e-mail yang isinya kurang dari 15 token diambil semua kata yang terdapat pada e-mail tersebut.
P ( e - mail ) =
P ( A ). P ( B ) P ( A ). P ( B ) + (1 − P ( A ))( 1 − P ( B ))
dengan : P(A) = probabilitas suatu e-mail dikategorikan sebagai spam dengan adanya kata “a”. P(B) = probabilitas suatu e-mail dikategorikan sebagai spam dengan adanya kata “b”.
2.5.
Proses Penerimaan E-mail
Proses penerimaan e-mail dilakukan dengan menggunakan protokol POP3 (Post Office Protocol version 3). Peran protokol ini adalah untuk mengambil e-mail yang tersimpan dalam mailbox tiap pemakai di mail server, yang biasanya juga berfungsi sekaligus sebagai SMTP (Simple Mail Transfer Protocol)
server. Karena
protokol
SMTP
tidak
memiliki
mekanisme
penyimpanan e-mail ke mailbox dan mendistribusikannya ke tiap pemakai maka protokol POP3 mengambil peran tersebut (Choiril Amri,2003,h7).
14
Server POP3 menyimpan sementara e-mail tiap pemakai di dalam mailbox-nya masing-masing sebelum akhirnya di-download oleh pemakai bersangkutan menggunakan klien e-mail seperti Outlook maupun Eudora. Dalam proses pengambilan tersebut klien e-mail terhubung ke mail server menggunakan protokol POP3 yang berjalan pada TCP port 110. Skenario pengambilan e-mail dengan POP3 ini juga dapat digunakan oleh suatu mail server untuk mengambil e-mail dari mail server lain, jadi tidak terbatas digunakan oleh klien e-mail saja. Dalam berhubungan dengan server, klien POP3 menggunakan perintah-perintah yang dapat dilihat pada Tabel 1. Tabel 1 Perintah-perintah POP3 PERINTAH
ARTI
USER
Mengidentifikasi nama pemakai ke server
PASS
Mengirimkan password pemakai ke server
QUIT
Mengakhiri koneksi dengan server
STAT
Meminta informasi jumlah pesan yang tersedia
LIST
Menentukan ukuran setiap pesan yang akan diambil
RETR
Mengambil pesan yang terdapat di server
DELE
Menghapus e-mail dari mailbox
Sumber : Choirul Amri, Belajar Sendiri Mengelola Mail Server dengan MDaemon, (Jakarta : PT. Elex Media Komputindo, 2003),p.7.
Proses penerimaan e-mail berlangsung sebagai berikut: 1.
Koneksi ke POP Mail Server.
15
2.
Mengirim perintah USER ke server, spesifikasi mailbox yang akan digunakan.
3.
Menerima respon atas perintah USER, mengirimkan perintah PASS untuk mengirimkan password untuk membuka mailbox.
4.
Menerima respon atas perintah PASS, mengirimkan perintah STAT untuk memeriksa jumlah e-mail yang ada dalam mailbox.
5.
Menerima respon atas perintah STAT, mengirimkan perintah TOP untuk memulai membaca header dari e-mail yang diterima mulai dari e-mail yang pertama sampai yang terakhir.
6.
Jika tidak ada e-mail lagi yang masuk, sistem berada dalam keadaan Idle sampai ada perintah untuk memeriksa e-mail yang masuk lagi.
7.
Jika pemakai mengklik dua kali pada header, maka dikirim perintah RETR untuk menerima keseluruhan isi e-mail.
8.
Setelah keseluruhan isi e-mail diterima, sistem kembali Idle dan menunggu pemakai memilih e-mail lain untuk diterima atau mengakhiri session.
9.
Jika pemakai memilih mengakhiri session, kirim perintah QUIT ke server.
10. Setelah menerima respon atas perintah QUIT, akhiri koneksi.
2.6.
Proses Pengiriman E-mail
Proses pengiriman e-mail dilakukan dengan menggunakan protokol SMTP (Simple Mail Transfer Protocol). Protokol SMTP merupakan metode
16
standar yang digunakan untuk pengiriman e-mail
dalam jaringan berbasis
TCP/IP. Fungsi utama SMTP adalah menyampaikan e-mail dari suatu host ke host lainnya dalam jaringan. Protokol ini tidak memiliki kemampuan untuk melakukan penyimpanan dan pengambilan e-mail dari suatu mailbox. Service SMTP berjalan pada protokol TCP port 25, yang merupakan port standar service SMTP. Ketika sebuah e-mail dikirimkan ke suatu alamat maka server DNS akan mencari host tujuan berdasarkan informasi MX record yang telah didaftarkan. Host tujuan tersebut merupakan server SMTP yang siap menerima koneksi dari host lain. Setelah koneksi berhasil dilakukan maka e-mail akan di-download ke host tujuan dan disimpan dalam mailbox pemakai untuk diambil menggunakan protokol POP3. Dari sisi klien e-mail, server SMTP merupakan sarana untuk melakukan outgoing connection atau mengirimkan pesan. Sedangkan protokol POP3 merupakan sarana untuk melakukan incoming connection. Tabel 2 Perintah-perintah SMTP
PERINTAH
ARTI
HELO
Mengidentifikasi pengirim kepada penerima
MAILFROM
Memberitahukan identitas host pengirim kepada host penerima
RCPTTO
Memberitahukan identitas pengirim ke host tujuan
DATA
Merupakan pesan yang dikirim dalam e-mail berupa text ASCII
QUIT
Perintah menutup koneksi SMTP
17
Sumber : Choirul Amri, Belajar Sendiri Mengelola Mail Server dengan MDaemon, (Jakarta : PT. Elex Media Komputindo, 2003),p.6.
Proses pengiriman e-mail berlangsung sebagai berikut : 1.
Koneksi ke SMTP Mail Server.
2.
Menerima ucapan selamat dari server.
3.
Mengirimkan perintah HELO ke server dan menuju respon.
4.
Menerima respon atas perintah HELO dan mengirimkan perintah MAILFROM untuk menandakan akan melakukan pengiriman email.
5.
Menerima respon atas perintah MAILFROM dan selanjutnya mengirimkan perintah RCPTTO untuk mengatakan kepada server kepada siapa e-mail itu ditujukan.
6.
menerima respon dari perintah RCPTTO. Jika penerima lebih dari satu, ulangi perintah RCPTTO.
7.
Jika tidak ada penerima lain yang diidentifikasikan, mengirim perintah DATA yang menandakan bahwa e-mail akan menyusul kepada server.
8.
Menerima respon atas perintah DATA, kirimkan header e-mail diikuti dengan body e-mail kepada server.
9.
Menerima respon tanda selesai pengiriman atas perintah DATA, logout dari server dengan mengirimkan perintah QUIT.
10. Menerima respon atas perintah QUIT dan selanjutnya mengakhiri koneksi dengan mail server.
18
2.7.
Pedoman Perancangan Program 2.7.1
Bentuk Program
Suatu program dapat dibuat dengan dua cara yaitu secara Object Oriented Programming (OOP) atau secara procedural. Object Oriented Programming adalah sebuah paradigma pemrograman yang menggunakan “objek” dan interaksinya untuk mendesain aplikasi dan program komputer. Keunggulan yang membuat OOP semakin banyak digunakan adalah karena sifatnya yang reusable, sehingga sangat cocok untuk membuat aplikasi atau program yang besar. Untuk aplikasi dengan struktur yang sederhana, OOP akan mempersulit pembuatan program karena programmer harus merancang objek satu per satu. Sedangkan procedural programming atau yang juga dikenal dengan imperative programming adalah pemrograman berdasarkan konsep pemanggilan procedures atau yang sering dikenal sebagai routines, subroutines, methods, dan functions. Setiap procedure mengandung sederetan langkah perhitungan yang harus dijalankan. Procedures dapat dipanggil kapan saja dalam program, termasuk di dalam procedure itu sendiri. Jika dibandingkan dengan OOP, procedural programming
diperuntukkan bagi pembuatan program dengan struktur yang
sederhana dengan algoritma yang juga sederhana maupun yang rumit. Perancangan program aplikasi pendektesian spam mail tergolong program dengan struktur yang sederhana dengan algoritma yang rumit, sehingga penggunaan procedural programming menjadi pilihan yang sesuai.
19
2.7.2
Use Case Diagram
Use Case menunjukkan hubungan interaksi antara aktor dengan use case di dalam suatu sistem (Mathiassen, 2000, p343) yang bertujuan untuk menentukan bagaimana aktor berinteraksi dengan sebuah sistem. Aktor adalah orang atau sistem lain yang berhubungan dengan sistem. Ada tiga simbol yang mewakili komponen sistem seperti terlihat pada gambar di bawah ini.
Gambar 2.1 Notasi Use Case Diagram
Sumber: Mathiassen (2000, p343)
Menurut Schneider dan Winters (1997,p26), ada lima hal yang harus diperhatikan dalam pembuatan diagram use case. 1. Aktor: segala sesuatu yang berhubungan dengan sistem dan melaksanakan use case yang terkait. 2. Precondition: kondisi awal yang harus dimiliki aktor untuk masuk ke dalam sistem untuk terlibat dalam suatu use case.
20
3. Postcondition: kondisi akhir atau hasil apa yang akan diterima oleh aktor setelah menjalankan suatu use case. 4. Flow of Events: kegiatan-kegiatan yang dilakukan pada sebuah proses use case. 5. Alternative Paths: kegiatan yang memberikan serangkaian kejadian berbeda yang digunakan dalam Flow of Events.
2.7.3
Sequence Diagram
Sequence diagram adalah diagram yang menunjukkan urutan penukaran pesan oleh sejumlah objek (dan seorang aktor yang optional) di dalam melakukan tugas tertentu. Sequence diagram menggambarkan bagaimana objek berinteraksi satu sama lain melalui pesan pada pelaksanaan use case atau operasi. Diagram sequence mengilustrasikan bagaimana pesan dikirim dan diterima antar objek secara berurutan. (Whitten et. al., 2004, p441). Beberapa notasi diagram sequence terlihat pada gambar di bawah ini.
21
Gambar 2.2 Notasi Sequence Diagram Sumber: Whitten (2004, p441) 2.7.4
Rekayasa Piranti Lunak
Rekayasa piranti lunak menurut Fritz Bauer (Pressman, 2005, p23) adalah penetapan dan pemakaian prinsip-prinsip rekayasa dalam rangka mendapatkan piranti lunak yang ekonomis yaitu terpecaya dan bekerja efisien pada mesin (komputer). Menurut Pressman (2005, p24), rekayasa piranti lunak mencakup 3 elemen yang mampu mengontrol proses pengembangan piranti lunak. 1. Metode-metode (methods), menyediakan cara-cara teknis untuk membangun piranti lunak 2. Alat-alat bantu (tools) mengadakan dukungan otomatis atau semi otomatis untuk metodemetode seperti CASE (Computer Aided Software Engineering) yang mengkombinasikan software, hardware, dan software engineering database.
22
3. Prosedur-prosedur (procedurs) merupakan pengembangan metode dan alat bantu. Dalam perancangan software dikenal istilah software life cycle yaitu serangkaian kegiatan yang dilakukan selama masa perancangan software. Pemakaian jenis software life cycle yang cocok salah satunya ditentukan oleh jenis bahasa pemrograman yang cocok. Contohnya, Waterfall Model merupakan model yang paling umum dan paling dasar pada software life cycle pada umumnya, Rapid Application Development (RAD) dan Joint Application Development (JAD) cocok untuk software berbasis objek (OOP), sedangkan Sync+Stabilize dan Spiral Model yang merupakan pengembangan model waterfall dengan komponen prototyping cocok untuk sebuah aplikasi yang rumit dan cenderung mahal pembuatannya. Menurut Dix (1997, p180), visualisasi dari kegiatan pada software life cycle model waterfall adalah sebagai berikut: 1. Spesifikasi kebutuhan (Requirement specification) Pada
tahap
ini,
pihak
pengembang
dan
konsumen
mengidentifikasi apa saja fungsi-fungsi yang diharapkan dari sistem dan
bagaimana
sistem
memberikan
layanan
yang
diminta.
Pengembang berusaha mengumpulkan berbagai informasi dari konsumen. 2. Perancangan arsitektur (Architectural design) Pada tahap ini, terjadi pemisahan komponen-komponen sistem sesuai dengan fungsinya masing-masing.
23
3. Detailed design Setelah memasuki tahap ini, pengembang memperbaiki deskripsi dari komponen-komponen dari sistem yang telah dipisahpisah pada tahap sebelumnya. 4. Coding and unit testing Pada tahap ini, disain diterjemahkan ke dalam bahasa pemrograman untuk dieksekusi. Setelah itu komponen-komponen diuji apakah sesuai dengan fungsinya masing-masing. 5. Integration and testing Setelah tiap-tiap komponen diuji dan telah sesuai dengan fungsinya, komponen-komponen tersebut disatukan lagi. Lalu sistem diuji untuk memastikan sistem telah sesuai dengan kriteria yang diminta konsumen. 6. Pemeliharaan (maintenance) Setelah sistem diimplementasikan, maka perlu dilakukannya perawatan terhadap sistem itu sendiri. Perawatan yang dimaksud adalah
perbaikan
diimplementasikan.
error
yang
ditemukan
setelah
sistem
24
Gambar 2.3 Software Life Cycle Model Waterfall Sumber: Dix (1997, p181)
2.7.5
Interaksi Manusia dan Komputer
Menurut Shneiderman (2005, p4), Interaksi manusia dan komputer merupakan disiplin ilmu yang berhubungan dengan perancangan, evaluasi, dan implementasi sistem komputer interaktif untuk digunakan oleh manusia, serta studi fenomena-fenomena besar yang berhubungan dengannya. Interaksi manusia dan komputer ditekankan pada pembuatan antarmuka pemakai (user interface). User interface yang dibuat diusahakan sedemikian rupa sehingga seorang user dapat dengan baik dan nyaman menggunakan aplikasi perangkat lunak dibuat.
25
Antar muka pemakai (user interface) adalah bagian sistem komputer yang memungkinkan manusia berinteraksi dengan komputer. Tujuan antar muka pemakai adalah agar sistem komputer dapat digunakan oleh pemakai (user interface), istilah tersebut digunakan untuk menunjuk pada kemampuan yang dimiliki oleh piranti lunak atau program aplikasi yang mudah dioperasikan dan dapat membantu menyelesaikan suatu persoalan dengan hasil yang sesuai dengan keinginan pengguna, sehingga pengguna merasa nyaman mengoperasikan program tersebut. A. Program Interaktif
Suatu program yang interaktif dan baik harus bersifat user friendly. (Scheiderman, p15) menjelaskan lima kriteria yang harus dipenuhi oleh suatu program yang user friendly. 1. Waktu belajar yang tidak lama 2. Kecepatan penyajian informasi yang tepat 3. Tingkat kesalahan pemakaian rendah 4. Penghafalan sesudah melampaui jangka waktu 5. Kepuasan pribadi B. Pedoman Merancang User Interface
Beberapa pedoman yang dianjurkan dalam merancang suatu program, guna mendapatkan suatu program yang user friendly adalah sebagai berikut. 1. Delapan aturan emas (Eight Golden Rules)
26
Untuk merancang sistem interaksi manusia dan komputer yang baik, harus memperhatikan delapan aturan emas dalam perancangan antarmuka, seperti: strive for consistency (konsisten dalam merancang tampilan), enable frequent user to use shorcuts (memungkinkan pengguna menggunakan shortcuts secara berkala), offer informative feed back (memberikan umpan balik yang informatif), design dialogs to yield closure (merancang dialog untuk menghasilkan keadaan akhir), offer simple error handling (memberikan penanganan kesalahan), permit easy reversal of actions (mengijinkan pembalikan aksi dengan mudah), support internal locus of control (mendukung pengguna menguasai sistem), dan reduce short-term memory load (mengurangi beban jangka pendek pada pengguna). 2. Teori waktu respon Waktu respon dalam sistem komputer menurut (Scheiderman, p352) adalah jumlah detik dari saat pengguna program memulai aktifitas sampai menampilkan hasilnya di layar atau printer. Pemakai lebih menyukai waktu respon yang pendek, waktu respon yang panjang mengganggu, waktu respon yang pendek menyebabkan waktu pengguna berpikir lebih pendek. Waktu respon harus sesuai dengan tugasnya, dan pemakai harus diberi tahu mengenai penundaan yang panjang.
27
2.7.6
State Transition Diagram
STD atau State Transition Diagram menggambarkan sebuah sistem yang real-time dan sistem yang on-line. STD merupakan suatu keadaan yang menggambarkan suatu keadaan pada waktu tertenu (Yourdon, 2006). Perubahan keadaan dapat terjadi karena suatu kejadian dan sebagai akibat dari kejadian tersebut maka akan muncul suatu aksi yang menyebabkan keadaan berubah. STD membantu dalam memberikan gambaran secara keseluruhan dari program.