Klasifikasi Severity dari Bug Untuk Proyek Perangkat...

32
Klasifikasi Severity dari Bug Untuk Proyek Perangkat Lunak Tegar Riyono Putra (5107100009) Dosen Pembimbing : 1. Daniel Oranova Siahaan 2. Umi LailiYuhana

Transcript of Klasifikasi Severity dari Bug Untuk Proyek Perangkat...

Page 1: Klasifikasi Severity dari Bug Untuk Proyek Perangkat Lunakdigilib.its.ac.id/public/ITS-Undergraduate-17287-5107100009-Presentation.pdfmenghilangkan data laporan bug yang dianggap tidak

Klasifikasi Severity dari Bug UntukProyek Perangkat Lunak

Tegar Riyono Putra (5107100009)

Dosen Pembimbing :1. Daniel Oranova Siahaan2. Umi Laili Yuhana

Page 2: Klasifikasi Severity dari Bug Untuk Proyek Perangkat Lunakdigilib.its.ac.id/public/ITS-Undergraduate-17287-5107100009-Presentation.pdfmenghilangkan data laporan bug yang dianggap tidak

Sistem pelacakan bug Merupakan perangkat lunak yang dirancang

untuk membantu mancatat dan melacak bug perangkat lunak yang dilaporkan, baik olehpengembang, penjamin kualitas, maupunanggota tim yang lain

Bug yang ditemukan oleh pengguna dapat dilaporkan secara langsung melalui sistem ini

Dalam perkembangannya, sistem pelacakanbug sudah banyak digunakan dalam duniapengembangan perangkat lunak, bahkansistem ini diintegrasikan dengan sistemmanajemen proyek

Page 3: Klasifikasi Severity dari Bug Untuk Proyek Perangkat Lunakdigilib.its.ac.id/public/ITS-Undergraduate-17287-5107100009-Presentation.pdfmenghilangkan data laporan bug yang dianggap tidak

Entri bug pada sistem Bugzilla

Page 4: Klasifikasi Severity dari Bug Untuk Proyek Perangkat Lunakdigilib.its.ac.id/public/ITS-Undergraduate-17287-5107100009-Presentation.pdfmenghilangkan data laporan bug yang dianggap tidak

Daftar bug pada Bugzilla

Page 5: Klasifikasi Severity dari Bug Untuk Proyek Perangkat Lunakdigilib.its.ac.id/public/ITS-Undergraduate-17287-5107100009-Presentation.pdfmenghilangkan data laporan bug yang dianggap tidak

Latar belakang

Perbedaan latar belakang pelapormenyebabkan pemberian nilaiseverity(tingkat keparahan) cenderungbersifat subjektif

Waktu yang singkat membuat pelaporkesulitan dalam melakukan pengecekansecara menyeluruh

Page 6: Klasifikasi Severity dari Bug Untuk Proyek Perangkat Lunakdigilib.its.ac.id/public/ITS-Undergraduate-17287-5107100009-Presentation.pdfmenghilangkan data laporan bug yang dianggap tidak

Rumusan Masalah

Bagaimana mengubah data bug report menjadi berkas berjenis ARFF(AtributeRelation File Format)

Bagaimana memodelkan klasifikasi severitydari bug berdasarkan atribut deskripsi/summary dari bug

Bagaimana memproses bug report agar dapat menghasilkan rekomendasi sesuai dengan model klasifikasi severity

Page 7: Klasifikasi Severity dari Bug Untuk Proyek Perangkat Lunakdigilib.its.ac.id/public/ITS-Undergraduate-17287-5107100009-Presentation.pdfmenghilangkan data laporan bug yang dianggap tidak

Batasan Permasalahan

Aplikasi ini menggunakan data yang berasal dari repository Bugzilla untuk proyek pengembangan perangkat lunak Mozilla mulai tanggal 1 januari 2010

Severity yang akan dimodelkan meliputi 6 tingkat yaitu critical, major, normal, minor, trivial, dan enhancement

Page 8: Klasifikasi Severity dari Bug Untuk Proyek Perangkat Lunakdigilib.its.ac.id/public/ITS-Undergraduate-17287-5107100009-Presentation.pdfmenghilangkan data laporan bug yang dianggap tidak

Use case Diagram

Admin

Unduh Laporan Bug

Menyaring Laporan Bug

Pembobotan Kata

Perangkingan Kata

Latih Model Klasifikasi

<<include>>

<<include>>

<<include>>

Page 9: Klasifikasi Severity dari Bug Untuk Proyek Perangkat Lunakdigilib.its.ac.id/public/ITS-Undergraduate-17287-5107100009-Presentation.pdfmenghilangkan data laporan bug yang dianggap tidak

Arsitektur Sistem

Page 10: Klasifikasi Severity dari Bug Untuk Proyek Perangkat Lunakdigilib.its.ac.id/public/ITS-Undergraduate-17287-5107100009-Presentation.pdfmenghilangkan data laporan bug yang dianggap tidak

Pengunduhan laporan bug

Menggunakan web service yang disediakan Bugzilla

Laporan bug yang diunduh dimulai dari tahun 2010

Laporan bug yang didapat disimpan dalam berkas bertipe Arff

Page 11: Klasifikasi Severity dari Bug Untuk Proyek Perangkat Lunakdigilib.its.ac.id/public/ITS-Undergraduate-17287-5107100009-Presentation.pdfmenghilangkan data laporan bug yang dianggap tidak

Alur pemodelan klasifikasi

act Modelling Workflow

Sistem

mulai

Data Kasar Laporan Bug Seleksi Laporan Bug

Pembobotan Kata

Perangkingan KataPelatihan Model Klasifikasi

Model Klasifikasi

selesai

Page 12: Klasifikasi Severity dari Bug Untuk Proyek Perangkat Lunakdigilib.its.ac.id/public/ITS-Undergraduate-17287-5107100009-Presentation.pdfmenghilangkan data laporan bug yang dianggap tidak

Seleksi laporan bugTujuan : menghilangkan data laporan bug yang

dianggap tidak valid dan tidak layak dijadikan data latih◦ Laporan bug dengan nilai severity yang tidak

diperlukan◦ Laporan bug dengan distribusi tidak merata◦ Deskripsi bug yang mengandung karakter selain

huruf• Mengubah deskripsi bug menjadi bentuk vektor kata

(tokenisasi, stop word removal dan stemming)

Page 13: Klasifikasi Severity dari Bug Untuk Proyek Perangkat Lunakdigilib.its.ac.id/public/ITS-Undergraduate-17287-5107100009-Presentation.pdfmenghilangkan data laporan bug yang dianggap tidak

Tokenisasi

Adalah proses memecah suatu String menjadi substring berdasarkan pola tertentu(memecah deskripsi menjadi kumpulan kata)

Menggunakan 2 pilihan tokenisasi◦ Alphabetic Tokenization

tokenisasi berdasarkan urutan alpabet◦ Words Tokenization

tokenisasi standar berdasarkan string pemisah

Page 14: Klasifikasi Severity dari Bug Untuk Proyek Perangkat Lunakdigilib.its.ac.id/public/ITS-Undergraduate-17287-5107100009-Presentation.pdfmenghilangkan data laporan bug yang dianggap tidak

Stop word removal

Adalah proses menghapus kata-kata yang tidak mempunyai arti secara independen

Menggunakan daftar kata yang disediakan Weka

Page 15: Klasifikasi Severity dari Bug Untuk Proyek Perangkat Lunakdigilib.its.ac.id/public/ITS-Undergraduate-17287-5107100009-Presentation.pdfmenghilangkan data laporan bug yang dianggap tidak

Stemming

Adalah proses mengurangi kata yang berimbuhan atau kata turunan menjadi bentuk dasar

Menggunakan 3 macam pilihan stemming◦ Lovins stemmer◦ IteratedLovins stemmer◦ Snowball Stemmer

Page 16: Klasifikasi Severity dari Bug Untuk Proyek Perangkat Lunakdigilib.its.ac.id/public/ITS-Undergraduate-17287-5107100009-Presentation.pdfmenghilangkan data laporan bug yang dianggap tidak

Laporan bug dengan distribusi tidak merata

Page 17: Klasifikasi Severity dari Bug Untuk Proyek Perangkat Lunakdigilib.its.ac.id/public/ITS-Undergraduate-17287-5107100009-Presentation.pdfmenghilangkan data laporan bug yang dianggap tidak

Deskripsi/ summary bug yang mengandung angka/simbol pm-app-amo24 constantly segfaulting -moz-border-radius + overflow:hidden

does not hide children (or shadows of children) at the rounded corners

Port Bug 227305 (Support drag-drop single message to desktop / file-system window)

jemalloc can be deadlock with fork(2)

Page 18: Klasifikasi Severity dari Bug Untuk Proyek Perangkat Lunakdigilib.its.ac.id/public/ITS-Undergraduate-17287-5107100009-Presentation.pdfmenghilangkan data laporan bug yang dianggap tidak

Berkas arff berisi laporan bug

Page 19: Klasifikasi Severity dari Bug Untuk Proyek Perangkat Lunakdigilib.its.ac.id/public/ITS-Undergraduate-17287-5107100009-Presentation.pdfmenghilangkan data laporan bug yang dianggap tidak

Berkas arff berisi vektor kata

Page 20: Klasifikasi Severity dari Bug Untuk Proyek Perangkat Lunakdigilib.its.ac.id/public/ITS-Undergraduate-17287-5107100009-Presentation.pdfmenghilangkan data laporan bug yang dianggap tidak

Pembobotan kata Menggunakan metode tf*idf (term freqency

times inverse document frequency) Tujuan : pemangkasan kata berdasarkan

bobot kata pada keseluruhan laporan bug Rumus : Tf*idfij=kij/lj * log(n/ni) Karena Tf*idf menghitung bobot kata dalam

suatu summary(bukan keseluruhan) maka diperlukan penyesuaian agar dihasilkan bobot kata total

Rumus : tf(avg)=

Page 21: Klasifikasi Severity dari Bug Untuk Proyek Perangkat Lunakdigilib.its.ac.id/public/ITS-Undergraduate-17287-5107100009-Presentation.pdfmenghilangkan data laporan bug yang dianggap tidak

Perangkingan kata

Menggunakan metode infogain Tujuan : pemangkasan kata berdasarkan

nilai infogain dari kata Rumus :

H(Y|X) = Σj (Prob(X=vj) H(Y | X = vj)) IG(Y|X) = H(Y) - H(Y | X)

Page 22: Klasifikasi Severity dari Bug Untuk Proyek Perangkat Lunakdigilib.its.ac.id/public/ITS-Undergraduate-17287-5107100009-Presentation.pdfmenghilangkan data laporan bug yang dianggap tidak

Pelatihan model klasifikasi

Menggunakan metode RIPPER(Repeated Incremental Prunning to Produce Error Reduction)

Algoritma pemodelan klasifikasi yang berupa induksi aturan

Terdiri atas tahap pembangunan aturan dan tahap optimasi

Page 23: Klasifikasi Severity dari Bug Untuk Proyek Perangkat Lunakdigilib.its.ac.id/public/ITS-Undergraduate-17287-5107100009-Presentation.pdfmenghilangkan data laporan bug yang dianggap tidak

Contoh model RIPPER

Page 24: Klasifikasi Severity dari Bug Untuk Proyek Perangkat Lunakdigilib.its.ac.id/public/ITS-Undergraduate-17287-5107100009-Presentation.pdfmenghilangkan data laporan bug yang dianggap tidak

Uji coba pemodelan klasifikasi

Menggunakan 929 laporan bug, setelah data set melalui proses perangkingan, dihasilkan340 buah deskripsi dengan 295 macamkata

Correctly Classified Instances 185 54.4118 %

Incorrectly Classified Instances 155 45.5882 %

Page 25: Klasifikasi Severity dari Bug Untuk Proyek Perangkat Lunakdigilib.its.ac.id/public/ITS-Undergraduate-17287-5107100009-Presentation.pdfmenghilangkan data laporan bug yang dianggap tidak

Kesimpulan Hasil pengunduhan laporan bug dari repositori

Bugzilla dapat diubah menjadi bentuk Arff dengan beberapa penyesuaian

Proses pelatihan laporan bug yang menggunakan metode RIPPER dapat menghasilkan model dengan tingkat akurasi yang cukup baik (tingkat akurasi 54%) meskipun hanya dilakukan terhadap atribut deskripsi/summary

Aplikasi yang dibuat dalam Tugas Akhir ini telah dapat mengimplementasikan sebuah sistem yang mampu memberikan rekomendasi severity kepada pengguna sehingga memudahkan pengguna dalam melaporkan bug pada sistem manajemen bug

Page 26: Klasifikasi Severity dari Bug Untuk Proyek Perangkat Lunakdigilib.its.ac.id/public/ITS-Undergraduate-17287-5107100009-Presentation.pdfmenghilangkan data laporan bug yang dianggap tidak

Berkas Arff

Merupakan salah satu bentuk berkas standar yang digunakan aplikasi Weka

Mudah digunakan untuk operasi penggalian data

Terdiri dari 2 macam, bentuk normal dan sparse

Page 27: Klasifikasi Severity dari Bug Untuk Proyek Perangkat Lunakdigilib.its.ac.id/public/ITS-Undergraduate-17287-5107100009-Presentation.pdfmenghilangkan data laporan bug yang dianggap tidak

Contoh berkas Arff normal

Page 28: Klasifikasi Severity dari Bug Untuk Proyek Perangkat Lunakdigilib.its.ac.id/public/ITS-Undergraduate-17287-5107100009-Presentation.pdfmenghilangkan data laporan bug yang dianggap tidak

Contoh berkas Arff sparse

Page 29: Klasifikasi Severity dari Bug Untuk Proyek Perangkat Lunakdigilib.its.ac.id/public/ITS-Undergraduate-17287-5107100009-Presentation.pdfmenghilangkan data laporan bug yang dianggap tidak

Class diagram recommendation

class RecommendationManager

javax.swing.JFrameUI::RecommendationManagerWindow

+ output_area: javax.swing.JLabel+ summary_area: javax.swing.JTextArea

+ main(String[]) : void+ RecommendationManagerWindow(JFrame)

RecommendationManager

- classifier: Classifier- package_directory: File- window: RecommendationManagerWindow

+ classifyInstance(String) : void+ getPackage() : File+ LoadModel() : void+ setPackage(File) : void+ setWindow(RecommendationManagerWindow) : void

Classifier

# manager: ProgressManager# option: int ([])# package_name: File

+ do_classification() : void+ setOption(int[]) : void+ setPackage(File) : void+ setProgressManager(ProgressManager) : void

-window

-classifier

Page 30: Klasifikasi Severity dari Bug Untuk Proyek Perangkat Lunakdigilib.its.ac.id/public/ITS-Undergraduate-17287-5107100009-Presentation.pdfmenghilangkan data laporan bug yang dianggap tidak

Class diagram model

class ModelManager

ClassificationManager

+ ClassificationManager(ProgressManager)+ doClassification(File) : void+ setOptions(int[]) : void

FilterManager

+ AlphabethicTokenizer: int = 0 {readOnly}+ IteratedLovinsStemmer: int = 0 {readOnly}+ LovinsStemmer: int = 1 {readOnly}+ SnowballStemmer: int = 2 {readOnly}+ Tidak: int = 1 {readOnly}+ WordsTokenizer: int = 1 {readOnly}+ Ya: int = 0 {readOnly}

+ ApplyFilter(File) : void+ FilterManager(ProgressManager)+ setOptions(int[]) : void

RunnableModelManager

+ DO_CLASSIFICATION: int = 4 {readOnly}+ DO_PREPROCCESS: int = 1 {readOnly}+ DO_RANKING: int = 3 {readOnly}+ DO_WEIGHTING: int = 2 {readOnly}+ GET_BUGREPORT: int = 5 {readOnly}

+ checkModel(File) : boolean+ get_package_name() : File+ ModelManager(JFrame)+ package_is_set() : boolean+ run() : void+ set_package_name(File) : void+ setBugRetrievalOption(String[]) : void+ startProccess(int, int[]) : void

Retriev alManager

+ getBugReport(String, String, int, int, File) : void- isNewAttribute(String[], int, String) : boolean+ RetrievalManager(ProgressManager)+ SaveToArff(HashMap<String, Object>[], Object[], File) : void

ValuationManager

+ doRanking(File) : void+ doWeighting(File) : void+ setOptions(int[]) : void+ ValuationManager(ProgressManager)

-valuation_manager-retrieval_manager

-fi lter_manager

-classification_manager

Page 31: Klasifikasi Severity dari Bug Untuk Proyek Perangkat Lunakdigilib.its.ac.id/public/ITS-Undergraduate-17287-5107100009-Presentation.pdfmenghilangkan data laporan bug yang dianggap tidak

Confusion matrix

Diklasifikasikan sebagai A B C D E F

A = critical 10 51 0 0 0 0

B = major 0 101 0 0 0 0

C = normal 0 39 20 0 0 0

D = minor 0 34 0 11 0 0

E = trivial 0 0 0 0 16 0

F = enhancement 0 31 0 0 0 27

Page 32: Klasifikasi Severity dari Bug Untuk Proyek Perangkat Lunakdigilib.its.ac.id/public/ITS-Undergraduate-17287-5107100009-Presentation.pdfmenghilangkan data laporan bug yang dianggap tidak

Perancangan penyimpanan model