by Romi Satria Wahono
Jujur, secara umum saya agak kecewa dengan pertanyaan mahasiswa tingkat akhir yang masuk lewat email, inbox FB dan group FB Intelligent Systems yang saya kelola. Bukan kecewa dengan kuantitas pertanyaan, tapi kecewa dengan kualitas pertanyaan yang seharusnya tidak pantas diajukan mahasiswa yang sedang mengerjakan skripsi/tesis/disertasi. Pertanyaan yang membuktikan bahwa banyak mahasiswa yang: (1) tidak memahami alur mengerjakan penelitian, (2) tidak memahami bahwa penelitian itu seharusnya dimulai dengan studi literatur, (3) tidak berhasil memformulasikan pertanyaan penelitian, (4) dan secara umum tidak memahami dengan baik metode penelitian. Saya mencoba memberikan gambaran ringkas dan praktis bagaimana tahapan melakukan penelitian lewat tulisan ini. Tulisan saya buat khusus untuk mahasiswa di jurusan komputer, tapi secara umum juga bisa digunakan untuk mahasiswa jurusan lain.
1. TENTUKAN BIDANG GARAPAN KITA (RESEARCH FIELD)
Banyak mahasiswa yang sampai detik-detik terakhir mau skripsi/tesis masih belum mengerti akan menggeluti bidang (field) apa di disiplin ilmu computing. Ini agak mengherankan, karena ini berarti mahasiswa tidak memahami isi mata kuliah yang 3-4 tahun dia ikuti, sehingga akhirnya tidak mengerti minat dan ketertarikannya di bidang (filed) apa. Ketika saya dulu mengikuti program undergraduate (S1) di Saitama University, Jepang, semester 4-5 pun saya sudah bisa menentukan minat dan ketertarikan saya kira-kira di bidang mana. Pada semester 5, saya juga sudah harus menentukan akan masuk ke lab penelitian apa (yang disusun berdasarkan bidang garapan (research field)). Sebenarnya kalau kurikulum di kampus kita sudah benar, satu mata kuliah itu menunjukkan satu cabang dari disiplin ilmu komputer, dan otomatis menunjukkan bidang penelitian yang bisa kita garap. Cara lain untuk melihat bidang garapan adalah dengan melihat journal ilmiah (transaction) yang ada di asosiasi bidang computing, contohnya adalah list transaction di ACM, dan IEEE Computer Society. Beberapa bidang garapan di disiplin ilmu computing, misalnya adalah: Software Engineering, Data Mining (Knowledge Discovery in Database), Image Processing, Information Retrieval, Networking, Human Computer Interaction, Soft Computing, Computational Intelligence, dsb. Sekarang yang penting adalah segera tentukan mana bidang garapan anda.
Sebagai contoh, saya memutuskan bahwa ketertarikan saya adalah pada bidangsoftware engineering. Saya lanjutkan gerakan saya ke tahap kedua, menentukan topik penelitian saya.
2. TENTUKAN TOPIK/TEMA PENELITIAN KITA (RESEARCH TOPIC)
Setelah bidang garapan ditentukan, sekarang tentukan topik penelitian kita. Cara termudah menentukan topik atau tema penelitian kita adalah dengan membaca buku, paper, artikel yang berjudul “research trends on” dengan diikuti nama bidang yang kita pilih. Contohnya gunakan keyword: “research trends on software engineering”, kombinasi keyword pencarian selain itu adalah “research challenge on”, “research topics on”, dsb. Dari beberapa paper yang kita baca, kita akan ngerti tren penelitian di bidang yang kita garap apa saja. Kita juga bisa menganalisa tren penelitian yang muncul di bidang garapan kita dengan melihat issue (paling tidak sekitar 3 tahun terakhir) dari journal/transaction yang berhubungan. Beberapa contoh paper tentang research trend di suatu bidang ada di bawah:
- Liao at al., Data Mining Techniques and Applications: a Decade Review from 2000 to 2011, Expert Systems with Applications 39 (2012)
- Shafay Shamail and Malik Jahan Khan, Research Trends in Software Engineering, 2008
- Kitchenham et al., Systematic Literature Reviews in Software Engineering,Information and Software Technology 51 (2009)
Sebagai contoh, dari membaca series IEEE Transaction on Software Engineering, dan saya perkuat dengan tulisan Shafay Shamail dan Kitchenham di atas, saya memutuskan akan mengambil topik penelitian tentang Software Defect/Fault Prediction. Saya lanjutkan gerakan saya ke tahap berikutnya yaitu, menentukan masalah penelitian dari topik penelitian yang saya pilih.
3. TENTUKAN MASALAH PENELITIAN KITA (RESEARCH PROBLEMS)
Setelah ketemu topik atau tema penelitian, kita maju lagi lebih dalam, kita harus berhasil menemukan masalah penelitian yang ingin kita angkat dari topik penelitian tersebut. Ini tahapan yang paling sulit dalam penelitian, dan paling memakan banyak waktu, tapi kalau masalah penelitian sudah ketemu, jalan penelitian akan mulai terlihat. Bagaimana cara menentukan masalah penelitian? Cara tercepat adalah membaca paper dari journal ilmiah, dan mulai dari paper yg sifatnya review baru kemudian paper yg sifatnya technical. Note that, paper di journal ada dua jenis. Jenis yang pertama adalah “review paper”, yang membahas review atau survey suatu topik penelitian. Jenis yang kedua adalah “technical paper”, yang membahas aspek teknis dari perbaikan metode/algoritma (method improvement) beserta hasil eksperimen dan evaluasi yang telah dilakukan. Mulailah dengan membaca paper berjenis “review paper”, karena akan sangat membantu kita dalam memahami topik penelitian kita secara mendalam dan komprehensif.
Metode yang digunakan untuk mereview penelitian dan merangkumkannya dalam “review paper” sudah mulai distandardkan oleh para peneliti. Di bidang ilmu software engineering, banyak peneliti yang merujuk ke metode Kitchenham dalam membuat “review paper”, dan judul menggunakan terminologi yang sama yaitu “Systematic Literature Review” atau disingkat SLR. Jadi kalau kita ingin menemukan “review paper” yang bagus, coba searching dengan keyword: “systematic literature review”, disamping tentunya tetap harus dicoba dengan menggunakan keyword ”review on” atau “survey on”, atau lebih dalam ke masalah penelitian dengan “research problem on” atau “research challenge on”. Contoh “review paper” yang baik adalah seperti di bawah. Ketika saya mengambil topik penelitian tentang software defect/fault prediction, maka paper pertama dari Hall et al. 2012 adalah paper yang wajib saya baca pertama kali.
- Hall et al., A Systematic Literature Review on Fault Prediction Performance in Software Engineering, IEEE Transaction on Software Engineering, Vol. 38 No 6 (2012)
- Wen et al., Systematic Literature Review of Machine Learning based Software Development Effort Estimation Models, Information and Software Technology54 (2012)
- Yang & Wu, 10 Challenging Problems in Data Mining Research, International Journal of Information Technology & Decision Making, Vol. 5, No. 4 (2006)
- Liao et al., Intrusion Detection System: A Comprehensive Review, Journal of Network and Computer Applications 36 (2013)
- Breivold et al., A systematic review of software architecture evolution research,Information and Software Technology 54 (2012) 16
Jangan berhenti, kejar semua “technical paper” yang ada di daftar referensi “review paper” di atas. Usahakan konsentrasi ke paper yang diterbitkan dalam journal yang diindex oleh ISI (thomson) atau SCOPUS (elsevier), supaya kita tidak pusing dengan paper conference yang kadang dibuat asal-asalan. Masalah penelitian juga kadang bisa kita temukan di bagian future work/research yang biasanya diletakkan sebelum conclusion dari suatu paper. Masalah penelitian bisa merupakan masalah baru, yang orang belum pernah mencoba memecahkannya (originality di masalah penelitian), bisa juga masalah yang sudah dicoba dipecahkan orang dengan cara dia, dan kita ingin memecahkan masalah tersebut dengan cara kita (originality di metode untuk memecahkan masalah) (Dawson, 2009).
Misalnya, bidang garapan saya adalah software engineering, di mana topik penelitian saya adalah tentang prediksi cacat software (software defect prediction). Dari hasil studi literatur (baik review paper maupun technical paper), masalah penelitian yang saya angkat ada dua, yaitu adanya masalah ”noisy attributes” dan “class imbalance” pada data set, yang akhirnya menyebabkan akurasi dan konsistensi (kehandalan) yang rendah pada prediksi cacat software. Saya kemudian susun landasan referensi yang memperkuat masalah penelitian yang saya angkat. Rangkuman masalah penelitian (Research Problems (RP)) dan literatur yang mendukung (literature supports) adalah seperti di bawah. Dari rangkuman di bawah, terlihat bahwa masalah penelitian (research problem) yang saya angkat ada dua, saya rangkumkan dalam RP1 (Research Problem 1) dan RP2 (Research Problem 2).
4. RANGKUMKAN METODE-METODE YANG ADA (STATE-OF-THE-ART METHODS)
Lakukan studi literatur lagi, pelajari semua penelitian yang tujuannya memecahkan masalah yang sama dengan yang kita lakukan. Pahami metode/algoritma terkini yang mereka gunakan untuk memecahkan masalah penelitian mereka (yang juga menjadi masalah penelitian kita). Ini yang saya sebut dengan existing methods (metode-metode yang ada) atau state-of-the-art methods, pada artikel sebelumnya tentang kiat menyusun latar belakang masalah penelitian.
Dalam bidang computing, metode biasanya berupa algoritma yang secara sistematis, logis dan matematis menyelesaikan masalah. Setiap bidang penelitian (field) di computing memiliki metode/algoritma yang khas untuk menyelesaikan masalah di bidangnya, meskipun beberapa kadang bias digunakan secara bersama. Contohnya pada bidang image processing, algoritma neural network digunakan untuk melakukan pengenalan (recognition) wajah, sidik jari. dsb. Note that identification process di image processing menganut trilogi detection-segmentation-recognition. Pada bidang data mining, algoritma neural network biasanya dipakai untuk proses estimasi dan juga prediksi rentet waktu. Bidang data mining biasanya membagi algoritma ke dalam 5 peran: estimasi, prediksi/forecasting, klasifikasi, klastering dan asosiasi. Contoh lain tentang metode, ada di artikel: kiat menyusun latar belakang masalah penelitian.
5. TENTUKAN METODE YANG KITA USULKAN (PROPOSED METHOD)
Inilah kekuatan dari penelitian kita. Kita harus bisa menentukan, membangun dan mengusulkan suatu metode/model (proposed method/model), yg kita harapkan bisa lebih baik bila dibandingkan dengan metode-metode yang ada saat ini. Dan keunggulan metode yg kita usulkan tersebut harus dilandasi (reference), dibuktikan secara matematis, dan secara empiris lewat hasil eksperimen dan perbandingan dengan metode yang adas saat ini. Metode atau model yang kita usulkan itu tidak harus benar-benar baru, dalam artian, bisa saja dari state-of-the-art methods yang ada dan terakhir muncul (secara publikasi adalah yang paling baru), kita kemudian “menambahkan” sesuatu (algoritma, koefisien, formula, dsb), yang akhirnya ketika kita bandingkan dengan metode original, metode kita lebih baik (lebih cepat, lebih akurat, lebih konsisten, dsb). “Penambahan” yang kita lakukan dan akhirnya membuat pemecahan masalah menjadi lebih baik itulah yang disebut dengan kontribusi penelitian (contribution).
Setelah kita yakin dengan metode yang kita usulkan (tentu harus dilandasi secara kokoh oleh literatur terkini), maka kita susun Research Questions (RQ) dan Research Objective (RO) dari penelitian kita. Penelitian yang baik dan terencana harus tersusun sejak awal desain korelasi antara RP – RQ – RO. Contohnya, dari RP di tahap 3, saya membuat desain penelitian saya (korelasi RP-RQ-RO) seperti gambar di bawah. Untuk masalah “noisy attributes” saya mencoba menjawab dengan mencari “metode (algoritma) attribute weighting apa yang paling baik untuk prediksi cacat software?”, ini akan menjadi RQ1 saya . Setelah saya berhasil membandingkan secara empiris berbagai metode attribute weighting yang ada. Maka saya akan mengambil satu algoritma (metode) yang terbaik/terkini/state-of-the-art tersebut, dan kemudian mengusulkan improvement (perbaikan) dari algoritma tersebut. Sehingga untuk RQ2 saya, saya desain menjadi “bagaimana pengaruh metode attribute weighting yang saya usulkan (perbaiki) pada tingkat akurasi pada prediksi cacat software?”. Sedangkan RO-nya sendiri akan menyesuaikan dari RQ yang ada. Untuk RP2 juga secara umum mirip, hanya bukan masalah akurasi yang saya selesaikan, tapi konsisten dan reliability (kehandalan) dari classifier.
Jadi dapat disimpulkan bahwa desain penelitian saya terdiri dari dua masalah penelitian (RP1 dan RP2), empat pertanyaan penelitian (RQ1-RQ4) dan empat tujuan penelitian (RO1-RO4). Desain penelitian ini akan menjaga konsistensi dan kesinkronan penelitian kita, sehingga kita tidak bingung ketika merangkumkan penelitian kita dalam bentuk skripsi/tesis/disertasi. Dimulai dari dua masalah penelitian di RP1-RP2, ada 4 eksperimen yang kita lakukan untuk menjawab RQ1-RQ4, dan ada 4 kesimpulan yang akan kita tarik dari hasil penelitian yang kita lakukan.
Dilihat dari 5 tahapan memulai penelitian di atas, kita harus banyak baca paper. Di mana sumber literatur yang baik? Pertama coba ke google dan google scholar dulu. Untuk bidang komputer, berlangganan ACM plus dengan digital library yang berisi jutaan paper hanya 18USD/tahun. Silakan klik di link ini untuk jadi member. Terus, kira-kira berapa paper yang harus kita baca untuk menghasilkan penelitian yang baik? Patokan umum dan best practice untuk melakukan penelitian yang benar, lurus dan berkualitas, untuk level s1 kita paling tidak harus baca 20-70 paper, untuk level s2 kita sebaiknya membaca 70-200 paper, dan untuk level s3 diperlukan literatur sekitar 200-600 paper. Ini juga sekaligus menjawab pertanyaan mahasiswa yang sering ngeluh, banyak baca paper kok malah tambah pusing? Silakan ikuti best practice ini, maka kepala akan nyaman. Kepala jadi pusing ternyata bukan karena kita banyak membaca, tapi karena yang kita baca memang ”belum banyak”
Welcome to the jungle!