IMPLEMENTASI METODE FUNCTION POINT UNTUK MENGUKUR VOLUME SOFTWARE M. Dedi Iskandar1) dan Kusrini2) STMIK AMIKOM Yogyakarta Email: 1)
[email protected], 2)
[email protected] ABSTRACT Software volume measure can be used for planning resource, cost and duration of software development. It can also become reference to determine the software price. In this paper, the writer explains one of software volume measurement using method called function point. The method measures software volume based on the scale of complexity for the requested software. Since the points of measurement are very subjective, to keep the result’s consistency and validity, the method must be run by an experienced professional. Keywords: software volume, measurement, function point method PENDAHULUAN Pengukuran volume software telah menjadi suatu perbincangan hangat di kalangan pengembang dan pebisnis software. Bagi pengembang, mengukur volume dari software bermanfaat untuk merencanakan sumber daya, biaya dan durasi yang diperlukan untuk membangun software. Selain itu, pengembang juga dapat mengevaluasi kualitas produk dengan cara membandingkan volume sistem dengan banyaknya error (error-count) dalam software yang dikerjakan. Sementara dari perspektif bisnis, volume software dapat menjadi dasar untuk menentukan nilai harga dari produk software yang bersangkutan. Dahulu orang banyak mengukur volume dari suatu software menggunakan cara sederhana yaitu LOC (Lines Of Code) atau KLOC(1000 Lines Of Code), yaitu suatu teknik pengukuran besar software dengan cara menghitung baris kode program yang ada. Teknik ini mempunyai sifat yang menjadi kekurangannya yaitu: 1. Relatif terhadap bahasa/tool pemrograman dan gaya pengkodean programer. LOC sangat tergantung pada karakteristik tool pemrograman yang digunakan dan gaya pengkodean programer. Sebagai contoh dalam bahasa BASIC kode sebagai berikut: a=a+1 hanya membutuhkan 1 baris kode. Sedangkan untuk mendapatkan hasil yang sama dalam bahasa PASCAL kode tersebut dikonversi sebagai berikut: program x; var a: integer; begin a:= a + 1; end. yang membutuhkan 6 baris kode. Juga perhatikan contoh perbedaan gaya pengkodean dari 2 skrip program berikut yang mengakibatkan perbedaan LOC.
Kode 1 (2 baris)
Kode 2 (4 baris):
a:=a+1; b:=5; if a=2 then a:=1;
a:=a+1; b:=5; if a = 2 then a:= 1;
93
Lebih lanjut Tabel 1 menunjukkan contoh perbandingan beberapa bahasa pemrograman untuk melakukan perintah yang sama. Tabel 1: Perbandingan beberapa bahasa pemrograman
2. LOC tidak bisa ditentukan sebelum proyek pengembangan menyelesaikan tahapan implementasi (pengkodean). Oleh karena itu, LOC tidak dapat dimanfaatkan untuk merencanakan proses pengembangan dan tidak pula dapat digunakan untuk memperkirakan harga produk. Selesainya tahapan implementasi adalah suatu fase yang sangat terlambat untuk menyusun estimasi sumber daya. Dari kekurangan tersebut maka timbul keinginan untuk mendapatkan suatu teknik pengukuran volume software yang tidak hanya berdasar pada banyaknya baris kode program, namun lebih ke arah sesuatu yang dapat diukur lebih awal pada software development life cycle sehingga kemudian munculah gagasan metode Function Point. Keunggulan dari metode Function Point adalah kemampuannya untuk menyediakan perkiraan volume proyek dalam bentuk sumber daya pengembangan yang dibutuhkan, sebelum proyek tersebut jauh melangkah. Perkiraan ini memberikan dasar penting untuk perkiraan sumber daya yang dibutuhkan perusahaan software dalam mempersiapkan proposal tender dan project plan. Penggunaan metode seperti ini juga dapat mencegah atau setidaknya mengurangi secara substansial risiko dari kesalahan manajerial karena underestimate pada perencanaan biaya proyek. Adapun perhitungan metode ini didasarkan pada ukuran banyak dan kompleksitas fungsi yang diinginkan dalam proyek software. Function point harus dihitung melalui telaah dokumentasi requirement fungsional sistem oleh seorang profesional yang berpengalaman. Metode function point sendiri diperkenalkan pertama kali oleh Albrecht pada tahun 1979. Dalam perkembangan selanjutnya, metode ini digunakan secara luas untuk keperluan komersial oleh banyak pihak namun masih dipandang sebagai eksperimental oleh banyak ilmuwan atau profesional. Memandang pentingnya metode ini, maka riset-riset dilakukan untuk memvalidasi, meningkatkan dan mengadaptasikan metode ini ke dalam beberapa jenis sistem software seperti sistem software realtime dan sistem software berorientasi obyek. Perhitungan dengan metode Function Point menuntut untuk dilakukan oleh seorang profesional yang berpengalaman karena memiliki tingkat subyektifitas yang cukup tinggi. Metode ini sendiri terdiri dari banyak varian. Variasi yang adalah pada langkah/tahapan yang ada maupun pada isi dari tiap tahapan. Varian-varian ini timbul karena metode ini dapat diubah sesuai dengan kebijakan perusahaan pengembang software. Namun apapun varian yang digunakan oleh pengembang, hendaknya digunakan dengan konsisten agar tercipta komparasi yang benar antara software-software yang dinilai. 94
Gambar 1: tahapan perhitungan function point Pada tulisan ini penulis memberikan contoh berdasarkan publikasi varian yang populer seperti Gramus dan Herron (1996), IEEE (2000), Caldiera dkk (1998) yang menghasilkan manual penggunaan function point seperi IFPUG 3, IFPUG 4 dan Mark II. Contoh berikut penulis buat dengan beberapa penyesuaian sesuai dengan pengalaman dan pengamatan penulis. Tahapan-tahapan yang ada dalam menentukan function point dapat dilihat pada gambar 1. Sebelum perhitungan dilakukan, yang pertama dilakukan adalah menganalisis aplikasi yang hendak dibuat. Setelah itu langkah selanjutnya, barulah kegiatan melakukan perhitungan. Secara singkat diterangkan sebagai berikut: Langkah 1 : Menghitung crude function points (CFP). Jumlah dari komponen fungsional sistem pertama kali diidentifikasi dan dilanjutkan dengan mengevaluasi kuantitasi bobot kerumitan dari tiap komponen tersebut. Pembobotan tersebut kemudian dijumlahkan dan menjadi angka CFP. Langkah 2 : Menghitung faktor pengubah kompleksitas relatif/relative complexity adjustment factor (RCAF) untuk proyek tersebut. Langkah 3 : Menghitung Function Point dengan persamaan 1. FP = CFP x (0.65 +0.01 x RCAF) ..................................(1) Secara lebih mendetail 3 langkah tersebut diterangkan sebagai berikut: Langkah 1: Menghitung crude function points (CFP) Perhitungan CFP digunakan untuk mengukur proses informasi. Ada beberapa komponen yang dilibatkan dalam pengukuran ini. Komponen ini memiliki kategori "sederhana", "menengah" atau "kompleks" tergantung pada karakteristik kompleksitas yang dimiliki.
95
Gambar 2: Elemen Analisis Function Point Perhitungan CFP melibatkan 5 komponen dalam analisis sistem software berikut: - Jumlah macam aplikasi input - Jumlah macam aplikasi output - Jumlah macam aplikasi query online/inquiry – aplikasi ini berhubungan dengan query terhadap data yang tersimpan. - Jumlah macam file/tabel logic yang terlibat - Jumlah macam interface eksternal – output atau input yang dapat berhubungan dengan komputer lewat komunikasi data, CD, disket, dan lain-lain. Gambar 2 menggambarkan komponen-komponen analisis tersebut dalam bentuk diagram. Sebelum mengukur CFP, terlebih dahulu diidentifikasi komponen-komponen yang dalam rancangan software tersebut. Dalam hal ini suatu diagram arus data dapat digunakan. Komponenkomponen yang telah teridentifikasi tersebut selanjutnya dikelompok-kelompokkan menjadi ”sederhana”, ”sedang” dan ”kompleks” berdasarkan kompleksitasnya. Setelah itu, jumlah masing-masing komponen yang telah dikategorisasi tadi dapat dimasukkan ke dalam tabel CFP. Tabel CFP yang digunakan menggunakan blangko seperti yang ditunjukkan dalam tabel 2. Tabel 2: Blanko penghitungan CFP
96
Langkah 2: Menghitung faktor pengubah kompleksitas relatif/relative complexity adjustment factor (RCAF) RCAF berfungsi untuk menghitung kesimpulan kompleksitas atau kompleksitas teknis dari suatu sistem software dari subyek perspektif yang paling berpengaruh terhadap usaha pengembangan yang dibutuhkan. Subyek-subyek yang dinilai tingkatannya tersebut ialah sebagai berikut: 1. Kompleksitas kehandalan backup/recovery 2. Kompleksitas komunikasi data 3. Kompleksitas pemrosesan terdistribusi 4. Kompleksitas kebutuhan kinerja 5. Kebutuhan lingkungan operasional 6. Kebutuhan knowledge pengembang 7. Kompleksitas updating file master 8. Kompleksitas instalasi 9. Kompleksitas aplikasi input, output, query online dan file 10. Kompleksitas pemrosesan data 11. Ketidakmungkinan penggunaan kembali dari kode-kode yang akan dibuat (non-reusable) 12. Variasi organisasi pelanggan 13. Kemungkinan perubahan/fleksibilitas 14. Kebutuhan kemudahan penggunaan Penilaian dilakukan dengan skala pengukuran 0 sampai 5 yang diberikan pada tiap subyek di atas. Contoh blanko penilaian yang akan digunakan diberikan seperti pada Tabel 3.
Tabel 3: Blanko penghitungan RCAF
Langkah 3: Menghitung Function Point (FP) Setelah selesai penghitungan RCF, langkah terakhir dari metode ini adalah menghitung nilai Function Point itu sendiri. Nilai function point untuk sistem software yang diberi penilaian dihitung berdasarkan hasil dari tahap 1 dan 2 yang dimasukkan ke dalam persamaan (2). FP = CFP x (0.65 + 0.01 x RCAF)............................. (2) HASIL DAN PEMBAHASAN Sebagai obyek penilaian pada penelitian ini, diujicobakan penghitungan function point pada suatu pembangunan sebuah sistem presensi karyawan bernama AttendMaster yang direncanakan dapat melayani bisnis kelas kecil sampai menengah dengan karyawan sebanyak 10.100 orang.
97
Gambar 3: Diagram arus data dari AttendMaster Sistem Attend Master tersebut kemudian direncanakan akan memiliki interface dengan paket software lain yaitu HumanMaster, yang melayani sumber daya manusia dan WageMaster yang melayani penggajian. AttendMaster direncanakan dapat menghasilkan beberapa laporan dan query online. Dari dokumentasi requirement sistem software yang direncanakan ini, kemudian dibuat Diagram Arus Data yang ditunjukkan pada Gambar 3. Kemudian, berdasarkan gambar tersebut dibawah ini akan ditunjukkan contoh penghitungan nilai function point untuk sistem software AttendMaster yang diajukan tersebut.
Langkah 1: Menghitung crude function points (CFP) Dari gambar diagram arus data pada gambar 3 tersebut, dapat ditentukan nilai-nilai yang diperlukan untuk menghitung CFP, yaitu jumlah masing-masing komponen, sebagai berikut: -Jumlah aplikasi input – 2 -Jumlah aplikasi output – 3 -Jumlah query online – 3 -Jumlah file logic – 2 -Jumlah interface eksternal – 2 Setelah itu, dilakukan evaluasi kembali untuk memilah setiap komponen berdasarkan kelompok derajat kompleksitasnya (sederhana, menengah atau kompleks) oleh seorang profesional untuk mendapatkan nilai CFP. Pada percobaan ini, hasil evaluasi tersebut disajikan seperti pada Tabel 4, yaitu setelah dilakukan perhitungan menghasilkan total nilai CFP = 81.
98
Tabel 4. Hasil evaluasi untuk derajat kompleksitas Total CFP
Level kompleksitas Komponen Sistem Software
Sederhana
Menengah
Kompleks
Count
Faktor Bobot
Point
Count
Faktor Bobot
Point
Count
Faktor Bobot
Point
A
B
C= AxB
D
E
F= DxE
G
H
I= GxH
J=C+F+I
Input
1
3
3
--
4
--
1
6
6
9
Output
--
4
--
2
5
10
1
7
7
17
Query Online
1
3
3
1
4
4
1
6
6
13
File logic
1
7
7
--
10
--
1
15
15
22
Interface Eksternal
--
5
--
--
7
--
2
10
20
20
Total CFP
81
Langkah 2: Menghitung relative complexity adjustment factor (RCAF) Langkah selanjutnya adalah mengevaluasi karakteristik kompleksitas dari AttendMaster dan perhitungan dari RCAF. Hasil perhitungan RCAF dalam penelitian ini digambarkan pada Tabel 5, dimana ditunjukkan penjumlahan ke-14 elemen/faktor adjustment kompleksitas relatifnya menghasilkan nilai 41.
Langkah 3: Menghitung Function Point (FP) Sebagai langkah akhir, dengan menggunakan persamaan (2) maka dapat dihitung nilai dari Function Point dari proyek software AttendMaster ini, yaitu: FP
= CFP x (0.65 + 0.01 x RCAF) = 81 x (0.65 + 0.01 x 41) = 85.86
99
Tabel 5: Contoh penghitungan RCAF
KESIMPULAN Dari uraian dan hasil percobaan yang dilakukan tersebut dapat ditarik beberapa kesimpulan: 1. Metode function point dapat dijadikan salah satu alternatif untuk menghitung volume software berdasarkan kompleksitasnya. 2. Metode function point memiliki beberapa kelebihan dibanding LOC yaitu: a. Tidak tergantung oleh bahasa pemrograman yang digunakan programer b. Tidak tergantung dari gaya pemrograman programer c. Dapat ditentukan di awal pengembangan 3. Penggunaan metode function point memiliki kekurangan yaitu memerlukan campur tangan profesional yang berpengalaman karena perhitungannya sangat subyektif. 4. Karena perhitungannya hanyak berdasarkan pada gambaran pemrosesan data, metode function point harus pula didukung data-data tambahan untuk memperkuat perkiraan volume sistem software yang dihasilkan.
DAFTAR PUSTAKA Caldiera, G., Antoniol, G., Fiuterm, R. dan Lokan, C., 1998, Definition and Experimental Evaluation of Function Points for Object Oriented Systems, Proceedings of The Fifth International Software Metrics Symposium, California, US. Galin, D., 2004, Software Quality Assurance, Pearson Education Limited, Addison Wesley, Inggris. Gramus, D. dan Herron, D., 1996, Measuring the Software Process – A Practical Guide to Functional Measurements, Yourdon Press, Prentice Hall, New Jersey, US. IEEE, 2000, IEEE Std 10611998 – Standard for Software Quality Metrics Methodology, The Institure of Electrical and Electronics Engineers, New York, US.
Rostianingsih, S., Perhitungan Kompleksitas Function Point untuk Suatu Web, Prosiding Seminar Nasional Manajemen Teknologi,I, 2005,D-7-1.
100
MAIL AUTORESPONDER UNTUK PENYAMPAIAN INFORMASI AKADEMIK DI FAKULTAS TEKNIK UNIVERSITAS DIPONEGORO Kodrat Iman Satoto, Agung Budi Prasetijo, dan A. Dicky Ferlanda Jurusan Teknik Elektro, Fakultas Teknik, Universitas Diponegoro Email:
[email protected];
[email protected]
ABSTRACT As we all know that email is a means of communication for all Internet users an easy and efficient, so it can be used in all types of information systems including the Academic Information System. Academic information services using the email (email-based) that integrated with the Academic Information System can complete the method of delivery of information previously available using the web (web-based) and use the short message (sms-based). In this research will be built a system of integrated mail autoresponder on the Academic Information System. This system works to provide academic information via email automatically. Autoresponder system is built with two scripts that filter email scripts to choose the order of information and a valid script to automatically using PHP. Email-based academic information service is expected to be complete method of delivering information that has been previously available, namely the web-based and sms-based. Students and parents who want to get academic information can directly send the demand by sending an email with a certain format and will immediately get the information of interest automatically. Keywords: web-based, SMS-based, email-based, Autoresponder INTISARI Seperti kita ketahui bersama bahwa email merupakan sarana komunikasi bagi seluruh pengguna Internet yang mudah dan efisien, sehingga dapat digunakan pada semua jenis sistem informasi termasuk Sistem Informasi Akademik (SIA). Layanan informasi akademik menggunakan email (email-based) yang terintegrasi dengan SIA dapat melengkapi metode penyampaian informasi yang sebelumnya sudah tersedia yaitu menggunakan web (web-based) dan menggunakan pesan singkat (sms-based). Pada penelitian ini akan dibangun suatu sistem mail autoresponder yang diintegrasikan pada Sistem Informasi Akademik. Sistem ini berfungsi untuk memberikan layanan informasi akademik melalui email secara otomatis. Sistem autoresponder ini dibangun dengan dua skrip yaitu skrip filter email untuk memilih pesanan informasi yang valid dan skrip untuk menjawab secara otomatis menggunakan PHP. Layanan informasi akademik berbasis email ini (email-based) diharapkan dapat melengkapi metode penyampaian informasi yang sudah tersedia sebelumnya, yaitu web-based dan sms-based. Mahasiswa dan orangtua/wali yang ingin mendapatkan informasi akademik dapat langsung mengirimkan permintaannya melalui pengiriman email dengan format tertentu dan akan segera mendapatkan informasi yang diinginkannya secara otomatis. Kata kunci: web-based, SMS-based, email-based, autoresponder
PENDAHULUAN Saat ini email masih merupakan aplikasi yang paling banyak digunakan. Email adalah surat elektronik yang dikirimkan melalui jaringan komputer yang bersifat offline, artinya penerima tidak harus online saat menerima email. Sifat offline inilah yang malahan menjadi keunggulan dari email, karena pengirim dan penerima tidak harus online untuk mengirimkan pesan email. Keunggulan lainnya adalah tidak diperlukan bandwidth yang besar untuk pengiriman pesan email tanpa attachment. Sistem informasi akademik yang sudah ada merupakan layanan Internet berbasis web. Sistem akademik ini berfungsi untuk memberikan informasi mengenai semua yang berkaitan dengan lembaga pendidikan yang dimilikinya khususnya informasi akademik. Informasi ditujukan baik untuk civitas akademik dalam lingkungan kampus maupun pemakai Internet secara umum. Sarana penyampaian informasi menggunakan web mengharuskan pengguna selalu online, demikian juga menggunakan SMS hanya dapat mengirim pesan sebesar 160 karakter saja. 101
Sedangkan email memungkinkan pengiriman pesan dalam jumlah besar, seperti transkrip akademik, tanpa harus selalu online. Mahasiswa dan ortu/wali yang ingin mendapatkan informasi tertentu dari SIA dapat mengirimkan email dan menuliskan permintaan yang dimaksud dalam baris subject. Kemudian mailserver merespon permintaan yang ditulis di subject email dan mengirimkan informasi balasan yang dibutuhkan. Dalam layanan ini tidak perlu selalu terhubung dengan Internet jika ingin mendapatkannya, cukup mengirim permintaan dengan email dalam satu waktu, dan mengambil informasinya di lain waktu dengan hanya mengecek mailbox. Tujuan dari penelitian ini adalah merancang sebuah program pada mail-server dimana mailserver yang telah ada pada web sistem informasi akademik dapat memberikan layanan informasi akademik secara autoresponse kepada mahasiswa. Permintaan yang dikirim oleh mahasiswa dan ortu/wali dalam bentuk email akan ditanggapi secara langsung dan memberikan balasan informasi yang diminta. Mail Autoresponse Mail autoresponse merupakan suatu sistem dimana dapat merespon secara otomatis email yang masuk ke suatu alamat email (mail server) dan kemudain melakukan autoreply. Autoresponder sudah banyak diaplikasikan dalam jaringan Internet, seperti yang dilakukan oleh Yahoo dan Google. Ketika kita mendaftar menjadi pengguna dalam Yahoo mail kita secara langsung mendapat email yang berisi sambutan dari Yahoo mail itu sendiri. Ini merupakan salah satu penerapan mail autoresponse. Dalam mengirim email yang masuk bisa digunakan suatu mail processing program yang fungsinya menyaring email untuk menjalankan suatu skrip, salah satunya yaitu Procmail. Procmail adalah mail processing program yang ada di UNIX, dapat membantu menyelesaikan tugas-tugas berikut; 1. Memnyaring email yang masuk (misalnya memisahkan pesan mailing-list dari pesan-pesan yang lain), sangat berguna untuk preprocessing email yang masuk dalam jumlah besar, 2. Mengurutkan email yang masuk berdasarkan kriteria, seperti pengirim, ukuran pesan atau keyword dalam kolom subject, 3. Mengimplementasikan mekanisme autoreply seperti membalas email kepada siapa yang mengirim pesan secara otomatis.
Gambar 1: Pemodelan
Sistem Mail Autoresponse
Procmail dapat bekerja dengan cara membaca file yang dibuat dalam home directory, file ini bernama .procmailrc, file ini berisi instruksi untuk pemrosesan email yang masuk. Jika sebuah pesan cocok dengan kondisi yang ditulis, maka procmail mecegat pengiriman normal berdasar spesifikasi yang ditulis tadi. Sebagai contoh, pesan dapat diarahkan ke program atau diteruskan ke penerima yang lain, bahkan mungkin untuk menghasilkan autoreply. Jika tidak satupun kondisi yang cocok, maka procmail akan menaruh pesan ke inbox default. Sebuah file .promailrc memiliki 2 bagian yaitu assignments dan recipes. Apa saja yang didahului dengan tanda (#) adalah komentar dan akan diabaikan. Assignment yang berada pada posisi atas berfungsi untuk men-setup variabel-variabel sehingga procmail tahu keberadaan program dan mailbox. Recepies merupakan penyaringan yang sesungguhnya berlangsung dan mempunyai format sebagai berikut; :0 [flags] [: [lock-file] ] zero or more conditions one action line 102
Jika syarat (condition) terpenuhi, aksi (action) akan dilaksanakan, sehingga procmail dapat langsung digunakan untuk melakukan mail autoreply sederhana. Namun untuk sistem mail autoresponse yang melibatkan query data dan penyusunan informasi perlu ditambahkan skrip yang lain. Suatu skrip dapat dijalankan dengan mengarahkan email masuk yang telah disaring sehingga email tadi menjadi trigger maupun input dari skrip yang telah dibuat. File .procmailrc ini melakukan penyeleksian berdasar subject pesan. Subject ditangkap untuk mengetahui permintaannya apa yang diinginkan pengirim. Selanjutnya email langsung diarahkan ke masing-masing folder dan skrip berdasarkan subject. Dalam penelitian ini skrip dibuat menggunakan bahasa pemograman PHP untuk memproses permintaan berupa email. SKRIP PHP Permintaan email yang sudah dialihkan procmail ke skrip progam PHP ditangkap sebagai input (stdin). Dalam mengolah permintaan program perlu men-decode pesan agar diperoleh headers dan body. Sudah tersedia suatu modul/paket dari PEAR (PHP Extension and Application Repository) yaitu Mail_Mime yang berguna untuk men-decode email sehingga dapat mempermudah proses identifikasi pesan. Selanjutnya untuk membalas permintaan diperlukan fungsi mail() yang telah ada dalam PHP. PHP otomatis dapat memilih mengirimkan email menggunakan program eksternal seperti /usr/sbin/sendmail yang default di Linux dan UNIX. Sintaks mail() yang digunakan untuk mengirim sebuah email adalah sebagai berikut; mail($to, $subject, $message, [$additional_headers, [$additional_parameters]]); $additional _headers adalah sebuah string yang terdiri dari satu atau lebih baris header tambahan yang ingin disebutkan. Biasanya yang paling sering disebutkan di sini adalah header From atau Reply-To. $additonal_parameters digunakan untuk mengirim opsi ke program /usr/sbin/sendmail atau yang setara PEAR PEAR (PHP Extension and Application Repository) merupakan respositori resmi dari php.net yang salah satu tujuannya untuk menyediakan libray dan paket bagi pengguna PHP dengan kodekode yang open source. Kelas-kelas dasar PEAR dan PEAR manager (pear) umumnya disertakan dalam distribusi standar PHP. Dalam paket Mail_Mime terdapat beberapa kelas, salah satu kelas yang digunakan adalah Mail_mimeDecode::decode(). Mail_mimeDecode berisi fungsi-fungsi (functions) untuk membuat object Mail_mimeDecode baru, men-decode dan menghasilkan struktur yang berisi data pesan. Email yang diarahkan ke skrip menjadi input string bagi Mail_mimeDecode ini untuk kemudian di-decode, hasilnya berupa array misalnya $structure. Header-header disimpan di dalam $struture[‘headers’][
], dimana adalah nama header yang telah dikonversi menjadi huruf kecil semua. Dengan demikian dapat diperoleh header pengirim (From), dan isi pesan (Body) untuk mengolah permintaan. Header pengirim diambil untuk mendapatkan alamat email pengirim untuk membalas email (reply). Sedangkan body untuk keperluan verifikasi jika dibutuhkan, yaitu NIM dan Password. Dalam mengurai isi pesan dibutuhkan mekanisme reqex (regular expression) sederhana. Hal ini berfungsi untuk pemisahan NIM dan Password sekaligus pencocokan formatnya, misalnya NIM harus memiliki format L2FXXXXXX (X = berupa angka tanpa spasi). QUERY BASISDATA Query basisdata digunakan untuk mengumpulkan data dari suatu basisdata untuk menghasilkan informasi yang dibutuhkan. Sebelum melakukan query basisdata maka koneksi dengan server basisdata harus dilakukan. Tanpa melakukan koneksi dengan server basisdata maka tidak bisa untuk mengambil data tersebut (query basisdata). Untuk melakukan koneksi dengan server basisdata (MySQL), PHP menggunakan fungsi mysql_connect(), sintaks yang digunakan adalah; mysql_connect(hostname, username, password);
103
Koneksi ke basisdata akan secara otomatis terputus ketika skrip program selesai dijalankan seluruhnya kecuali diberikan fungsi mysql_close(). Fungsi koneksi diatas akan memberikan nilai boolean TRUE apabila koneksi berhasil dan FALSE apabila gagal. Apabila pengguna telah berhasil melakukan koneksi dengan server basisdata MySQL, pengguna dapat melakukan query. PHP tidak menyediakan fungsi khusus untuk melakukan operasi data, sehingga query yang digunakan adalah sintaks-sintaks dari MySQL. Tahapan untuk melakukan query data adalah sebagai berikut; 1. Koneksi ke basisdata, 2. Memilih basisdata yang akan diambil datanya, 3. Mendeklarasikan sebuah variabel string yang berisi sintaks perintah (query) MySQL yang akan dilakukan, 4. Melaksanakan sintaks MySQL menggunakan fungsi mysql_query(), jika sintaks yang akan dijalankan menghasilkan output yang akan ditampilkan, maka harus dideklarasikan sebuah variabel untuk menampung hasil tersebut, 5. Mengambil hasil dari sintaks MySQL yang dilaksanakan menggunakan fungsi-fungsi seperti mysql_fetch_array(), mysql_fetch_row(), mysql_num_rows(), dan lain-lain tergantung pada format output yang diinginkan. Sintaks yang digunakan untuk mengambil data dari basisdata tertentu adalah sebagai berikut: SELECT field1,field2, ... FROM nama_table WHERE condition1, condition2, ... ORDER BY field
Parameter ORDER BY untuk mengurutkan data berdasar field. Standar urutannya adalah dari angka terkecil atau dari huruf A dan dari data pertama masuk hingga data terakhir. Untuk mendapatkan urutan yang terbalik maka dibutuhkan atribut DESC. Metodologi Dalam melakukan analisis, digunakan beberapa metode yaitu studi literatur, pengujian sistem yang sudah ada, perumusan solusi permasalahan dan penerapan solusi permasalahan. Masingmasing metode memiliki keterkaitan satu dengan lainnya. Studi Literatur Tahap ini dilakukan dengan mengumpulkan bahan-bahan pustaka (literatur) sesuai dengan masalah yang dihadapi. Literatur sebagian besar didapat dari Internet karena sebagian besar referensi buku cetak tidak ditemukan. Perancangan Sistem Perancangan sistem untuk layanan informasi akademik berbasis e-mail ini dilakukan dengan Entity-Relationship Diagram (E-R Diagram) dan Data Flow Diagram (DFD). Seperti sudah dijelaskan sebelumnya, sistem autoresponse ini akan menangkap permintaan dari mahasiswa dan ortu/wali yang berupa pesan e-mail, menyaring, men-decode, verifikasi, melakukan query basisdata dan mengirimkan informasi balasan sesuai permintaan. E-R Diagram Digram E-R merupakan suatu diagram yang digunakan untuk memodelkan hubungan antara entitas-entitas yang ada di linkungan sistem. Tahapan rencana pendahuluan dalam program adalah menentukan lingkup sistem yang akan ditangani. Dengan menganalisa ide dasar diatas, maka dapat ditemukan sejumlah entitas untuk membentuk Diagram E-R, yaitu; · Mahasiswa · Sistem Autoresponse · Mail Reply
104
· Mahasiswa
1
0
Mengirim Request
M
Mail Reply
M 1
Autoresponder 1
M
Merespon
M
Gambar 2: E-R Diagram Sistem Mail Autoresponse
IMPLEMENTASI DAN PENGUJIAN SISTEM Implementasi dalam bentuk kode-kode program (source code) menggunakan bahasa pemograman PHP. Dimana PHP disini adalah PHP dalam mode biner (/usr/bin/php) yang akan berjalan atas input dari mail filter, bukan mode modul Apache, karena tidak mengeksekusi skrip PHP via browser. Skrip PHP ditempatkan dalam mail server yang merupakan alamat tujuan user dalam mengirimkan mail request. Pengujian terhadap sistem yang sudah dibangun adalah dengan mengirim email ke alamat yang sudah ditentukan dimana didalamnya terdapat sistem autoresponse. Email akan menjadi input bagi sistem, kemudian mengamati respon sistem hingga diperoleh kesesuaian antara mail request dengan balasan email dari sistem yang sesuai dari tujuan pembangunan sistem. Sistem mail autoresponse ini digunakan untuk menangani enam email request yang berupa jadual kuliah, jadual ujian, jadual dosen, kartu rencana studi (KRS), kartu hasil studi (KHS) dan transkrip nilai. Implementsi untuk pembuatan kode program PHP juga terdapat enam program, artinya satu program PHP hanya akan menangani satu email request, misalnya email request dengan subjek KRS akan ditangani oleh program PHP dengan nama file krs.php. Disamping pembuatan kode program PHP, juga yang tidak kalah penting adalah pembuatan skrip untuk mail filter (.procmailrc). Sebab dengan mail filter ini program PHP akan menerima trigger email sehingga program dapat berjalan. KODE PROGRAM MAIL-FILTER Pertama-tama yang dapat kita lakukan adalah membuat kode progarm mail filter. Dengan procmail kita dapat membangun mail filter dengan membuat file .procmailrc dan sebuah folder procmail yang berisi file log. Folder procmail ini ditempatkan pada direktori /home/dicky/. File .procmailrc cukup ditaruh dalam direktori /home/dicky sama dengan kode-kode program PHP lainnya yang akan dibuat. Berikut fungsi dari Mail filter; 1. Untuk meletakkan mail request yang masuk ke alamat email/mail server ([email protected]) ke dalam folder yang sesuai subjek request dan 2. Mengumpankan mail request ke program PHP sesuai dengan subjek requestnya. Artinya email tadi menjadi input dari program PHP sesuai isi subjeknya. Skrip yang digunakan dalam file .procmailrc adalah sebagai berikut : PATH=/usr//bin:/bin:/usr/bin::/usr/local/bin:/usr/X11R6/bin:/usr/games:/home/dicky/bin SHELL=/bin/sh MAILDIR=$HOME/Mail DEFAULT=$HOME/Mail/inbox/ PMDIR=$HOME/.procmail LOGFILE=$PMDIR/log VERBOSE=yes LOGABSTRACT=all AUTOREPLYDIR=$HOME SUBJEK=`formail -zxSubjek:` :0 *! ^X-Loop: dicky@localhost\.localdomain { #Request KHS :0c:
105
* ^Subjek:.*khs khs/ :0 * ^Subjek:.*khs | $HOME/khs.php
Dengan skrip diatas email dengan subjek KHS yang masuk ke alamat [email protected] akan ditaruh dalam folder /mailbox/khs dan selanjutnya dalam waktu yang berurutan mengumpankan email ke program khs.php. Namun jika email yang masuk tidak memiliki subjek yang berisi KHS maka akan diteruskan ke skrip berikutnya. KODE PROGRAM PHP Pada program PHP ini email akan diproses untuk mendapatkan informasi dan proses autoreply. Semua kode program PHP memiliki fungsi untuk mengolah mail request sesuai request yang diminta dan menyusun informasinya, kemudian mengirimkan balasan email tersebut. Setiap program PHP harus dapat menyelesaikan tugasnya untuk mendekode email hasil fiter dari procmail. Pekerjaan ini dapat dilakukan dengan fungsi yang mengusung paket Mail_Mime, yang berfungsi untuk mendekode email sehingga bisa dipecah menurut header–header dan body message. Semua kode program PHP mempunyai skrip untuk mendekode email dengan kelas Mail_mimeDecode yang masih merupakan bagian paket PEAR Mail_Mime. Skrip dimulai dengan membaca email hasil filter dari procmail yang diarahkan ke program PHP. Selanjutnya mendekode mail menggunakan kelas Mail_mimeDecode::($params), hasilnya disimpan dalam sebuah array dan apabila dilihat strukturnya sebagai berikut; stdClass Object ( [headers] => Array ( [received] => by localhost (Postfix, from userid 500) id 22F5920628; Wed, 19 Jan 2005 01:34:25 -0500 (EST)
[date] => Wed, 19 Jan 2005 13:34:25 +0700 [from] => mailuser <[email protected]> [to] => [email protected] [subjek] => khs [message-id] => <[email protected]> [mime-version] => 1.0 [content-type] => text/plain; charset=us-ascii [content-disposition] => inline [user-agent] => Mutt/1.4i ) [ctype_primary] => text [ctype_secondary] => plain [ctype_parameters] => Array ( [charset] => us-ascii ) [disposition] => inline [body] => L2F099565 dicky34259 )
Selanjutnya informasi yang ada di masing-masing header dan body dapat dengan mudah disimpan ke dalam sebuah variabel global. Informasi body message disimpan dalam variabel $body, dan informasi alamat pengirim email disimpan dalam variabel $sender. Dalam proses verifikasi body message digunakan bantuan Reguler Expression (Regex), pencockkan password dilakakukan dengan enkripsi MD5. Sedangkan dalam melakukan proses pengiriman email kepada pengirim request digunakan fungsi mail(). PENGUJIAN PERMINTAAN INFORMASI TRANSKRIP NILAI Pengujian dimulai dengan mengirim email ke dicky, mengisi baris subjek dengan trans. Pada badan pesan harus diisikan NIM dan password untuk keperluan verifikasi, dengan format NIM<spasi>password. Gambar 3 menunjukkan pengiriman email permintaan informasi transkrip nilai yang benar.
106
Gambar 3. Permintaan informasi transkrip nilai
Sistem akan merespon sesuai dengan permintaannya yang tertulis di subjek dan memberi balasan email seperti gambar 4 dan 5. Gambar 4 menunjukkan informasi transkrip nilai bagian atas, sedangkan gambar 5 menujukkan informasi transkrip bagian bawah.
Gambar 4. Balasan informasi transkrip nilai (bagian atas)
Kedua gambar tersebut adalah satu email balasan dari mail server, yang diambil dari mailbox user. Tampak bahwa informasi transkrip nilai terdapat total SKS, bobot nilai sekaligus IPK. Dalam mail request transkrip nilai juga mungkin terdapat kesalahan dalam menulis format NIM<spasi>Password. Jika hal ini terjadi maka sistem akan memberikan balasan email yang berisi pesan kesalahan, seperti yang terdapat dalam pengujian mail request KHS.
Gambar 5. Balasan informasi transkrip nilai (bagian bawah)
107
PENUTUP KESIMPULAN Dari pengujian Sistem Autoresponse diperoleh beberapa kesimpulan berikut; 1. Bahasa pemograman yang dipakai dalam membangun sistem adalah PHP dengan mode biner karena program berjalan atas input dari email request bukan dari request dari browser client, 2. Email request yang merupakan input bagi skrip PHP adalah email yang telah terfilter oleh procmail berdasarkan subjeknya, 3. Sistem autoresponse dapat diterapkan dalam Layanan Informasi akademik via email. Sedangkan layanan yang dapat ditangani berupa mail request KHS, KRS, jadual kuliah, jadual dosen, jadual ujian dan transkrip nilai, 4. Untuk mendapatkan informasi headers dan body dari email, program PHP menggunakan sebuah paket dari PEAR yaitu Mail_Mime, yang berfungsi untuk mendekode email, 5. Sistem autoresponse juga dapat mendeteksi adanya kesalahan dalam penulisan dalam body message dan mengirimkan balasan email berupa pesan kesalahan yang terjadi. SARAN Setelah dilakukan pengujian pada sistem autoresponse yang telah diimplementasikan untuk layanan informasi akademik, dapat diberikan beberapa saran sebagai berikut; 1. Layanan dapat dikembangkan menjadi email yang dapat menginput ke sistem informasi akademik (basidatanya) tidak hanya berupa email request, misalnya dapat digunakan untuk entri data krs melalui email, 2. Informasi dalam email balasan masih berupa text-mode, selanjutnya dapat dikembangkan email attachment yang berisi data yang comaptible dengan MS-Excel, sehingga akan memudahkan mahasiswa dalam analisis informasi akademik.
DAFTAR PUSTAKA 1. Dennis, Jim, “Procmail Mini-Tutorial: Automated Mail Handling”, http://www.linuxgazette.com/issue14/procmail.html 2. Hakim, Lukmanul dan Musalini, Uus, “150 Rahasia dan Trik Menguasai PHP”, PT Elex Media Komputindo, Jakarta 2003. 3. Haryanto, Steven, “PHP: Kumpulan Resep Pemrograman “, PT Dian Rakyat, Jakarta, 2004. 4. Haryanto, Steven, “Regex: Kumpulan Resep Pemrograman “, PT Dian Rakyat, Jakarta, 2004. 5. Plew, Ronald R. and Stephens, Ryan K., “SAMS Teach Yourself SQL in 24 Hours”, Sams Publishing, Indianapolis – Indiana, USA, 2000. 6. Salmi, Timo, “Timo's procmail tips and recipes”, http://www.uwasa.fi/~ts/info/proctips.html, 2003. 7. Soboroff, Ian, “Mail Filtering with Procmail “, http://userpages.umbc.edu/~ian/procmail.html, 1997 8. The PEAR Documentation Group, “PEAR Manual”, 2004. 9. The PHP Documentation Group, “PHP Manual”,2004. 10. Wankyu Choi, Allan Kent, Chris Lea, Ganesh Prasad, Chris Ullman, “Beginning PHP4”, Wrox Press Ltd, Birmingham, UK, 2000. 11. Welling, Luke and Thomson, Laura, “PHP dan MySQL Web Development”, Sams Publishing, Indianapolis – Indiana, USA, 2003. 12. ------, “Procmail FAQ”, http://rhols66.adsl.netsonic.fi/era/procmail/mini-faq.html 13. ------, “Procmail”, http://www.udel.edu/topics/e-mail/procmail/procmail.html
108