METODOLOGI PENELITIAN
4. STD Head Officer
Berikut ini adalah bagan STD dari Head Officer :
Gambar 4.29 STD Head Officer
4.2.3 Pengkodean
Setelah melakukan analisis sistem dan perancangan sistem secara rinci. Tiba saatnya, sistem untuk diimplementasikan (pembuatan kode program). Pengkodean adalah proses menterjemahkan rancangan yang telah dibuat ke dalam bentuk bahasa yang bisa dibaca oleh mesin yakni menggunakan PHP 5 sebagai bahasa pemrogramannya dan MySQL sebagai database server untuk menyimpan datanya serta CI / Codeigniter sebagai PHP frameworknya.
Penulis memilih menggunakan PHP 5 dan MySQL dalam pengembangan sistem job performance appraisal karena PT.Learning Resources belum memiliki dedicated server, dan masih menggunakan web hosting dalam mengimplementasikan sistem ini, serta tidak semua klien dari PT.Learning Resources ini memiliki dedicated server juga, sehingga yang paling memungkinkan untuk menerapkan sistem job performance appraisal adalah mengembangkannya dengan development tools tersebut. Berbeda jika penulis menggunakan bahasa pemrograman lain semisal Java atau C# maupun database server lain semisal Oracle atau SQL Server, tentunya membutuhkan dedicated server untuk implementasinya.
Dalam pengembangan sistem ini, tak lupa penulis juga menggunakan framework untuk mempercepat proses pembuatannya dan menjadikan sistem ini lebih kokoh dan terstruktur. Penulis menjatuhkan pilihan pada CodeIgniter sebagai PHP Frameworknya, karena CodeIgniter sangat kompatibel dengan berbagai web hosting yang ada lantaran memiliki karakter yakni zero configuration. Berbeda dengan framework lain semisal Zend atau Symfony yang membutuhkan konfigurasi tambahan pada file konfigurasi php.ini ataupun httpd.conf yang mana pada web hosting tidak diperkenankan melakukan perubahan konfigurasi pada kedua file konfigurasi tersebut, kecuali jika kita menggunakan VPS (Virtual Private Server) yang mana layaknya memiliki dedicated server dan tentunya biayanya juga cukup besar. Penulis akan menunjukkan konfigurasi minimum yang dibutuhkan jika kita menggunakan framework Symfony, berdasarkan dokumentasi pada situs resmi Symfony
(http://www.symfony-project.org), untuk dapat menggunakan Symfony, kita harus memastikan beberapa extensions telah terinstall dan beberapa value konfigurasi harus diubah sesuai dengan minimum requirements pada framework Symfony, berikut screenshoot dari konfigurasi yang dibutuhkan untuk dapat menjalankan Symfony :
Gambar 4.30 Konfigurasi Minimum Framework Symfony
Dari gambar di atas, dapat terlihat bahwa ada beberapa settingan yang FAILED, lantaran konfigurasi pada web hosting tidak sesuai dengan kebutuhan minimum dari framework Symfony, tentunya ini menyebabkan aplikasi yang dikembangkan dengan Symfony tidak akan berjalan pada web hosting yang
bersangkutan. Karena secara default, semisal extension PHP Accelerator (APC) pada web hosting dracoola dan eazysmart tidak di install.
Begitu pula dengan framework Zend, berdasarkan buku Beginning Zend Framework terbitan Appress, untuk dapat menggunakan framework Zend, kita harus memastikan bahwa modul mod_rewrite harus diaktifkan, dan konfigurasi virtual host harus diubah dan disesuaikan untuk aplikasi berbasis framework Zend yang kita gunakan yang terdapat pada file konfigurasi httpd.conf. Biasanya pada beberapa web hosting (yakni dalam hal ini web hosting eazysmart dan dracoola untuk mewakili sebagian besar web hosting yang ada), modul mod_rewrite tidak diaktifkan, yakni pada file konfigurasi httpd.conf kodenya adalah sebagai berikut :
#LoadModule rewrite_module modules/mod_rewrite.so
Untuk mengaktifkannya kodenya harus diubah menjadi sebagai berikut : LoadModule rewrite_module modules/mod_rewrite.so
Dan jika sudah diubah, web server harus direstart, agar modul tersebut dapat diload dan dijalankan. Sedangkan, seperti telah penulis jelaskan bahwa sebagian besar web hosting tidak memberikan fasilitas dan wewenang untuk mengubah file konfigurasi php.ini maupun httpd.conf, apalagi untuk melakukan restart pada web server. Tentunya penggunaan framework semisal Zend atau Symfony akan menyebabkan aplikasi yang dikembangkan tidak memiliki kompatibilitas yang baik terhadap sebagian besar web hosting yang ada dan mengakibatkan aplikasi tidak akan dapat berjalan sama sekali pada web hosting. Namun, jika kita menggunakan framework CodeIgniter / CI, masalah-masalah terkait kompatibilitas terhadap web hosting tidak akan terjadi, karena framework
CI secara default tidak membutuhkan perubahan konfigurasi pada file konfigurasi php.ini ataupun httpd.conf.
Versi CodeIgniter yang digunakan penulis adalah 1.7.2, dan saat penulis menulis penelitian ini versi tersebut merupakan rilis yang terbaru. Sebelum dapat menggunakan CodeIgniter ini, ada beberapa langkah yang harus dilakukan agar seluruh fungsi, helper dan library yang dibutuhkan bisa berjalan dengan baik. Ada beberapa fungsi helper yang penulis gunakan dalam pengembangan sistem ini, yaitu url dan form helper, sedangkan library yang digunakan adalah library session dan database.
Library session mengizinkan developer untuk mengelola kondisi pengguna dan melacak aktivitas mereka ketika menjelajah di dalam sistem. Semua informasi session untuk masing-masing pengguna disimpan dalam data yang terenkripsi di cookie. Dan informasi session tersebut juga bisa disimpan di dalam database untuk meningkatkan keamanan dan kemudahan pengelolaan session, tetapi dengan menambahkan konfigurasi dan membuat tabel di database untuk menyimpan informasi session. Sedangkan, library database digunakan agar CodeIgniter bisa mengelola seluruh tabel yang ada di database yang digunakan dalam sistem.
Untuk mengaktifkan kedua library tersebut, perlu melakukan perubahan konfigurasi pada file autoload.php yang terletak di dalam folder system/application/config.
Yakni, ubahlah kode berikut :
Menjadi seperti berikut :
$autoload['libraries'] = array('database','session');
Dengan melakukan perubahan konfigurasi tersebut, secara otomatis kedua library tersebut bisa langsung digunakan dalam pengkodean menggunakan framework CodeIgniter. Contoh kode untuk mengakses seluruh data yang ada di suatu tabel menggunakan library database dengan fungsi get adalah sebagai berikut :
$this->db->get($nama_tabel);
Dan kita pun juga bisa memanfaatkan fungsi yang ada di library session, semisal untuk melakukan penyimpanan dan pengambilan informasi session pengguna.
Contoh kode untuk menyimpan informasi session menggunakan fungsi set_userdata yang terdapat pada library session adalah sebagai berikut :
$newdata = array( 'username' => 'john', 'email' => '[email protected]');
$this->session->set_userdata($newdata);
Agar informasi session tersimpan di dalam database, perlu
perubahan konfigurasi pada file config.php yang terletak di dalam folder system/application/config.
Yakni, ubahlah kode berikut :
$config['sess_use_database'] = FALSE;
$config['sess_table_name'] = 'ci_sessions';
Menjadi seperti berikut :
$config['sess_use_database'] = TRUE;
Untuk $config['sess_table_name'] disesuaikan dengan nama tabel yang akan digunakan sebagai tabel untuk menyimpan informasi session. Kita bisa merubah jika kita ingin menggunakan tabel lain untuk menyimpan informasi session. Jika kita belum memiliki tabel ci_sessions untuk menyimpan informasi session, kita terlebih dahulu membuat tabel tersebut, berikut kode SQL untuk membuat tabel ci_sessions yang sudah disesuaikan untuk dapat menyimpan informasi session :
CREATE TABLE IF NOT EXISTS `ci_sessions` (
session_id varchar(40) DEFAULT '0' NOT NULL, ip_address varchar(16) DEFAULT '0' NOT NULL, user_agent varchar(50) NOT NULL,
last_activity int(10) unsigned DEFAULT 0 NOT NULL, user_data text NOT NULL,
PRIMARY KEY (session_id) );
Dan contoh kode untuk mengambil informasi session yang telah
disimpan sebelumnya menggunakan fungsi userdata yang terdapat pada
library session adalah sebagai berikut :
echo “Username is ”.$this->session->userdata(‘username’);
Sama halnya dengan cara mengaktifkan secara otomatis kedua library sebelumnya, untuk mengaktifkan kedua helper yakni url dan form helper, kita perlu mengubah konfigurasi yang ada pada file autoload.php yang terletak di dalam folder system/application/config.
Yakni, ubahlah kode berikut :
$autoload['helper'] = array();
$autoload['helper'] = array('url','form');
Setelah mengaktifkan kedua helper tersebut, berarti secara otomatis kedua helper bisa langsung digunakan dalam pengkodean tanpa perlu me-load ulang kedua helper tersebut.
Url helper digunakan untuk membantu developer untuk membuat link, dan form helper membantu developer untuk membuat elemen form yang lebih aman daripada form yang biasa karena mampu menangani serangan SQL Injection melalui form input.
Contoh kode untuk membuat link dengan memanfaatkan fungsi yang ada pada url helper yaitu anchor adalah sebagai berikut :
echo anchor(’http://mail.google.com’,’Google Mail’);
Maka, kode di atas tersebut sama halnya dengan kode HTML sebagai berikut :
<a href=’http://mail.google.com’>Google Mail</a>
Sedangkan, contoh kode untuk membuat form input dengan memanfaatkan fungsi yang ada pada form helper yaitu form_input adalah sebagai berikut :
echo form_input(’username’,’John’);
Maka, kode di atas tersebut sama halnya dengan kode HTML sebagai berikut :
<input type=’text’ name=’username’ value=’John’ />
Untuk melindungi dari serangan XSS, kita perlu melakukan perubahan konfigurasi pada file config.php yang terletak di dalam folder system/application/config.
Yakni, ubahlah kode berikut :
$config['global_xss_filtering'] = FALSE;
Menjadi seperti berikut :
$config['global_xss_filtering'] = TRUE;
Dan penulis juga mengkonfigurasi base_url atau url dasar untuk sistem, sehingga memudahkan proses development selanjutnya, yakni pada baris berikut pada file yang sama, berikut contoh konfigurasi yang penulis gunakan :
$config['base_url'] = "http://localhost/reinforcement";
Agar bisa terkoneksi dengan database, perlu perubahan konfigurasi pada file database.php yang terletak di dalam folder system/application/config.
Yakni ubahlah beberapa parameter berikut dengan memberikan value sesuai dengan konfigurasi sistem yang dimiliki, $db[‘default’][‘hostname’] dengan value nama host yang terdapat database server yang ingin dikoneksikan,
$db['default']['username'] dengan memberikan value username di database server, $db['default'][‘password’] dengan memberikan value password dari username tersebut, dan $db['default']['database'] dengan value nama database yang ingin digunakan pada database server, dan $db['default']['dbdriver']
dengan value jenis driver yang disesuaikan dengan database server yang ingin digunakan. Berikut contoh konfigurasi yang penulis gunakan :
$db['default']['hostname'] = "localhost"; $db['default']['username'] = "root"; $db['default']['password'] = "";
$db['default']['database'] = "reinforcement"; $db['default']['dbdriver'] = "mysql";
Setelah melakukan seluruh konfigurasi di atas, secara umum kita sudah dapat melanjutkan proses pengkodean di controller maupun view. Dalam penelitian ini, penulis hanya menggunakan controller dan view saja, dengan tidak menggunakan model dalam pengembangan sistem. Hal ini disebabkan penulis sudah membuat dan menggunakan generic functions untuk melakukan akses database dengan mudah seperti halnya di saat kita menggunakan model. Seluruh generic functions penulis buat dalam satu file yakni fungsi.php yang terletak di controller atau di dalam folder system/application/controllers. Pertama, kita melakukan include file fungsi.php di seluruh file controller yang digunakannya, lalu, untuk dapat menggunakan generic functions tersebut, seluruh class di controller melakukan extends ke class Fungsi di dalam fungsi.php yang berisi generic functions tersebut dan melakukan inisialisasi constructor ke dirinya sendiri dan parent class (class Fungsi). Dengan melakukan hal ini, berbagai generic functions tersebut bisa digunakan dengan mudah, terutama di saat menggunakannya untuk membuat CRUD (Create Read Update and Delete). Berikut contoh kode untuk melakukan inisialisasi constructor ke class Bagian dan Fungsi oleh class Bagian :
//file bagian.php <?php
include "fungsi.php";
class Bagian extends Fungsi{
private $max;
private $action;
function __construct(){
$pk = "id"; $this->action = "bagian"; $this->max = 10; $session = 2; $role = array(1,2); $this->init($table,$pk); }
Sebagai contoh, untuk mengambil seluruh data di suatu tabel dalam database, penulis membuat fungsi tersendiri yang diadopsi dari fungsi yang ada di CodeIgniter yaitu get, namun jika sudah melakukan inisialisasi constructor, kita tidak perlu lagi memberikan parameter nama tabel yang ingin diambil seluruh datanya. Perhatikan contoh kode berikut :
$this->getAllData(); //mengambil semua data di tabel bagian
Akan sama dengan kode berikut :
$this->db->get(’bagian’);
Masih ada beberapa generic functions yang bisa digunakan dalam proses pengkodean, dan penulis merasakan kemudahan dibandingkan penggunaan secara murni dari fungsi-fungsi yang telah disediakan CodeIgniter tanpa memodifikasinya. Dan seluruh kode program telah penulis lampirkan pada Lampiran F.
4.2.4 Uji Coba
Pada tahap ini dilakukan pengujian sistem yakni terhadap masing-masing fitur dan fungsi yang tersedia untuk mengetahui apakah aplikasi dapat bekerja dengan semestinya. Ujicoba dilakukan 2 kali, yakni pertama, pengujian sistem
secara mandiri, dan kedua, pengujian sistem oleh pihak user yakni Bapak Munir Ahmad dan Laksmi Indrawati dari PT. Learning Resources dengan melakukan testing mengenai apakah fitur-fitur aplikasi sudah berjalan dengan semestinya atau tidak. Dalam ujicoba mandiri maupun oleh pihak user ini penulis menggunakan metode black box testing yaitu ujicoba menggunakan metode pengujian logika program dengan contoh kasus atau masalah yang diajukan. (Hasil testing terlampir pada Lampiran D).
4.2.5 Pemeliharaan
Tahap terakhir dalam metode pengembangan sistem menggunakan model Waterfall adalah pemeliharaan (maintenance), yaitu setelah sistem diimplementasikan dan diuji serta dicoba untuk memastikan bahwa sistem telah terbebas dari bug. Pemeliharaan ini dilakukan terhadap sistem supaya jika sewaktu-waktu terjadi kemungkinan kesalahan pada sistem di saat sistem sudah berjalan, bisa ditangani dengan cepat dan tepat, sehingga tidak menyebabkan terhambatnya penggunaan sistem oleh end user. Namun, sesuai dengan batasan permasalahan yang penulis buat, yakni tidak menyertakan pemeliharaan sistem, maka penulis tidak bisa membahasnya lebih jauh pada tahap pemeliharaan ini.
BAB V PENUTUP
5.1 Kesimpulan
Kesimpulan dari hasil penelitian yang telah penulis lakukan, adalah sebagai berikut:
1. Sistem job performance appraisal dengan metode checklist dapat bekerja dengan baik menurut pihak user yakni Bapak Munir Ahmad dan Laksmi Indrawati dari PT.Learning Resources sebagai alat bantu bagi PT. Learning Resources kepada perusahaan kliennya yang ingin melakukan penilaian kinerja menggunakan metode yang objektif kepada para staffnya secara efektif dan efisien.
2. Penulis telah dapat mengembangkan sebuah aplikasi berbasis web yang memiliki kompatibilitas yang baik terhadap sebagian besar web hosting yang ada dengan menggunakan CI Framework, sehingga permasalahan tentang infrastruktur yang belum dimiliki saat ini semisal dedicated server bisa diatasi. Dan penggunaan CI Framework membuat aplikasi yang dikembangkan menjadi lebih terstruktur, sehingga mudah dilakukan maintenance.
5.2 Saran
Saran yang hendak penulis sampaikan kepada pembaca atau mahasiswa lain yaitu sebagai berikut :
1. Diperlukan fitur tambahan fitur penilaian lain semisal penilaian staff berdasarkan target pekerjaan.
2. Adanya fitur penilaian secara offline, dan sinkronisasi data penilaian ke kantor pusat.