klasifikasi severity dari bug untuk proyek perangkat...
TRANSCRIPT
Klasifikasi Severity dari Bug UntukProyek Perangkat Lunak
Tegar Riyono Putra (5107100009)
Dosen Pembimbing :1. Daniel Oranova Siahaan2. Umi Laili Yuhana
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
Entri bug pada sistem Bugzilla
Daftar bug pada Bugzilla
Latar belakang
Perbedaan latar belakang pelapormenyebabkan pemberian nilaiseverity(tingkat keparahan) cenderungbersifat subjektif
Waktu yang singkat membuat pelaporkesulitan dalam melakukan pengecekansecara menyeluruh
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
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
Use case Diagram
Admin
Unduh Laporan Bug
Menyaring Laporan Bug
Pembobotan Kata
Perangkingan Kata
Latih Model Klasifikasi
<<include>>
<<include>>
<<include>>
Arsitektur Sistem
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
Alur pemodelan klasifikasi
act Modelling Workflow
Sistem
mulai
Data Kasar Laporan Bug Seleksi Laporan Bug
Pembobotan Kata
Perangkingan KataPelatihan Model Klasifikasi
Model Klasifikasi
selesai
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)
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
Stop word removal
Adalah proses menghapus kata-kata yang tidak mempunyai arti secara independen
Menggunakan daftar kata yang disediakan Weka
Stemming
Adalah proses mengurangi kata yang berimbuhan atau kata turunan menjadi bentuk dasar
Menggunakan 3 macam pilihan stemming◦ Lovins stemmer◦ IteratedLovins stemmer◦ Snowball Stemmer
Laporan bug dengan distribusi tidak merata
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)
Berkas arff berisi laporan bug
Berkas arff berisi vektor kata
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)=
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)
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
Contoh model RIPPER
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 %
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
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
Contoh berkas Arff normal
Contoh berkas Arff sparse
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
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
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
Perancangan penyimpanan model