Jurusan Teknik Informatika Fakultas Teknologi Informasi Institut Teknologi Sepuluh Nopember 2013 2
Daftar Perubahan
Revisi Deskripsi A B C D E F G
INDEX A B C D E F G TGL Ditulis Oleh
Diperiksa Oleh
Disetujui Oleh
3
Daftar Halaman Perubahan
Halaman Revisi Halaman Revisi
4
Daftar Isi
Daftar Perubahan ................................................................................................................................................... 2 Daftar Halaman Perubahan............................................................................................................................... 3 Daftar Isi ..................................................................................................................................................................... 4 Daftar Gambar ......................................................................................................................................................... 5 Daftar Tabel .............................................................................................................................................................. 7 1 Pendahuluan .................................................................................................................................................. 8 1.1 Tujuan ....................................................................................................................................................... 8 1.2 Lingkup Masalah .................................................................................................................................. 8 1.3 Referensi .................................................................................................................................................. 8 1.4 Deskripsi Umum Dokumen ............................................................................................................. 9 2 Lingkungan Pengujian ............................................................................................................................ 10 2.1 Perangkat Lunak ............................................................................................................................... 10 2.1.1 Aplikasi Customer Care di PT. Bio Farma, Bandung, Jawa Barat ...................... 10 2.1.2 Aplikasi Sistem Informasi Apotek Kimia Farma, Mulyosari, Surabaya ......... 15 2.2 Perangkat Keras ................................................................................................................................ 18 2.3 Kakas Pengujian ................................................................................................................................ 18 2.4 Persiapan Perangkat Keras .......................................................................................................... 23 3 Deskripsi Hasil Uji .................................................................................................................................... 24 3.1 Hasil Pengujian .................................................................................................................................. 24 3.1.1 Aplikasi Web Customer Care di PT. Biofarma, Bandung, Jawa Barat .............. 24 3.1.2 Aplikasi Desktop Sistem Informasi Apotek Kimia Farma, Mulyosari, Surabaya ........................................................................................................................................................ 27 3.2 Analisis Hasil Pengujian ................................................................................................................ 30 4 Analisis Kakas ............................................................................................................................................. 32 4.1 Mengenai CodeIt.Right ................................................................................................................... 32 5 Penutup ......................................................................................................................................................... 37 5.1 Kesimpulan .......................................................................................................................................... 37 5.2 Saran ....................................................................................................................................................... 37 6 Daftar Pustaka ............................................................................................................................................ 38
5
Daftar Gambar
Gambar 2.1. Tampilan Halaman Registrasi ............................................................................................ 10 Gambar 2.2. Tampilan Halaman Log-in .................................................................................................... 11 Gambar 2.3. Tampilan Halaman Pembuatan Laporan Masalah ................................................... 12 Gambar 2.4. Tampilan Halaman Data Laporan Masalah .................................................................. 12 Gambar 2.5. Tampilan Halaman Detail Laporan Masalah ............................................................... 13 Gambar 2.6. Tampilan Memilih Penanggung Jawab Masalah/Solver ........................................ 13 Gambar 2.7. Tampilan Pengubahan Status Pengerjaan.................................................................... 14 Gambar 2.8. Tampilan Persetujuan Laporan Masalah ...................................................................... 14 Gambar 2.9. Tampilan Halaman Detail Laporan Masalah yang Terselesaikan ..................... 15 Gambar 2.10. Tampilan Halaman Detail Penutupan Laporan Masalah .................................... 15 Gambar 2.11. Tampilan Halaman Mengelola Stok Data Obat ........................................................ 16 Gambar 2.12. Tampilan Halaman Mengelola Data Pasien .............................................................. 16 Gambar 2.13. Tampilan Halaman Mengelola Data Dokter .............................................................. 17 Gambar 2.14. Tampilan Halaman Mengelola Data Pegawai........................................................... 17 Gambar 2.15. Mendeteksi Kesalahan Kode dengan CodeIt.Right ................................................ 19 Gambar 2.16. CodeIt.Right Melakukan Scanning pada Bad Smell Code di Project ............... 19 Gambar 2.17. Opsi Pembenaran Kode pada CodeIt.Right ............................................................... 20 Gambar 2.18. Fitur Excluded pada CodeIt.Right................................................................................... 20 Gambar 2.19. Daftar Severity Threshold dengan Level Error yang Terdeteksi...................... 21 Gambar 2.20. Proses Koreksi Kesalahan Kode dengan CodeIt.Right ......................................... 22 Gambar 2.21. Fitur Export to Excel pada CodeIt.Right ...................................................................... 23 Gambar 3.1. Hasil Pengujian Secara Keseluruhan .............................................................................. 24 Gambar 3.2. Hasil Pengujian Setelah Sejumlah Rule Tidak Digunakan .................................... 25 Gambar 3.3. Daftar Bad Smell Code Kategori Performance ............................................................. 26 Gambar 3.4. Hasil Koreksi Bad Smell Code Kategori Performance .............................................. 26 Gambar 3.5. Contoh Bad Smell Code Kategori Usage ......................................................................... 27 Gambar 3.6. Hasil Pengujian Secara Keseluruhan .............................................................................. 28 Gambar 3.7. Hasil Pengujian Setelah Sejumlah Rule Tidak Digunakan .................................... 29 Gambar 3.8. Daftar Bad Smell Code Kategori Performance ............................................................. 29 Gambar 3.9. Hasil Koreksi Bad Smell Code Kategori Performance .............................................. 30 Gambar 4.1. CodeIt.Right pada Visual Studio ........................................................................................ 32 Gambar 4.2. Metode Rule Utilities ............................................................................................................... 33 Gambar 4.3. Penjelasan Metode Rule Utilities ....................................................................................... 33 Gambar 4.4. Penjelasan Metode Rule Utilities (Lanjutan) ............................................................... 33 Gambar 4.5. Metode Naming Rule Utilities ............................................................................................. 34 Gambar 4.6. Penjelasan Metode Naming Rule Utilities ..................................................................... 34 Gambar 4.7. Penjelasan Metode Naming Rule Utilities (Lanjutan) ............................................. 34 Gambar 4.8. Metode Usage Rule Utils ........................................................................................................ 34 Gambar 4.9. Metode Security Rule Utilities ............................................................................................. 35 Gambar 4.10. Penjelasan Metode Security Rule Utilities .................................................................. 35 6
Gambar 4.11. Metode Gui Manager Utils ................................................................................................. 35 Gambar 4.12. Penjelasan Metode Gui Manager Utils ......................................................................... 35 Gambar 4.13. Automatic Code Refactoring ............................................................................................ 36
7
Daftar Tabel
Tabel 3.1. Sejumlah Rule yang Tidak Dilibatkan dalam Analisis Aplikasi Web Customer Care ............................................................................................................................................................................ 24 Tabel 3.2. Sejumlah Rule yang Tidak Dilibatkan dalam Analisis Aplikasi Desktop SIAPFARMA........................................................................................................................................................28 Tabel 3.3. Analisis Presisi dan Recall Aplikasi Web Customer Care PT. Bio Farma.............31 Tabel 3.4. Analisis Presisi dan Recall Aplikasi Desktop Sistem Informasi Apotek Kimia Farma ...................................................................................................................................................................31
8
1 Pendahuluan 1.1 Tujuan Dokumen pengujian ini merupakan panduan untuk menguji perangkat lunak yang akan dijadikan bahan uji dengan menggunakan kakas bantu CodeIt.Right. Hal ini bertujuan untuk mengidentifikasi kesalahan dari kode perangkat lunak yang diuji dan juga untuk mengidentifikasi bug-bug yang terkandung dalam perangkat lunak tersebut. 1.2 Lingkup Masalah Software Refactoring merupakan bagian penting dalam pengembangan perangkat lunak, khususnya dalam fase pemeliharaan (maintanence). Beberapa penelitian menyebutkan bahwa harga (cost) pemeliharaan perangkat lunak lebih besar dari cost pengembangan perangkat lunak. Proses refactoring pada perangkat lunak dapat membantu pengembang untuk meningkatkan desain dari code dan membuatnya lebih bersih, tanpa mengubah sifat dari code tersebut. Perangkat lunak yang akan diuji merupakan aplikasi berbasis web dan berbasis desktop dengan bahasa pemrograman C#. Aplikasi web Customer Care di PT. Bio Farma, Bandung, Jawa Barat merupakan sebuah aplikasi yang digunakan untuk memfasilitasi pelaporan masalah atau keluhan yang ditemui dalam penggunaan sarana dan prasarana perusahaan. Aplikasi desktop SIAPFARMA merupakan sebuah sistem informasi yang digunakan unuk memfasilitasi Apotek Kimia Farma dalam melakukan transaksi penjualan obat dan transaksi praktik dokter. Refactoring pada suatu perangkat lunak diperlukan sebagai proses pengubahan sistem dari perangkat lunak dengan beberapa cara tanpa mengubah sifat-sifat eksternal dari sebuah code. Salah satu caranya adalah dengan memperbaiki struktur internal dari code. 1.3 Referensi Pengujian ini menggunakan beberapa referensi sebagai berikut. http://submain.com/products/codeit.right.aspx Alamat situs web yang menjelaskan overview dari kakas CodeIt.Right. http://submain.com/codeit.right/features.aspx Alamat situs web yang menjelaskan fitur dari kakas CodeIt.Right. http://submain.com/download/codeit.right/ Alamat situs web tempat pengunduhan kakas CodeIt.Right. http://submain.com/codeit.right/sdk/ Alamat situs web tempat dokumentasi sdk dari CodeIt.Right. 9
1.4 Deskripsi Umum Dokumen Dokumen pengujian perangkat lunak ini diharapkan mampu menjadi literatur bagi pengembang dalam mengembangkan perangkat lunak yang dibuat agar proses evolusi dari perangkat lunak tersebut dapat berlangsung konsisten. 10
2 Lingkungan Pengujian 2.1 Perangkat Lunak 2.1.1 Aplikasi Customer Care di PT. Bio Farma, Bandung, Jawa Barat Perangkat lunak yang dijadikan bahan uji adalah web Customer Care di PT. Bio Farma, Bandung, Jawa Barat. Aplikasi ini adalah sebuah aplikasi yang memfasilitasi pelaporan masalah atau keluhan yang ditemui dalam penggunaan sarana dan prasarana perusahaan. Aplikasi ini merupakan implementasi dari Help Desk. Pembuatan aplikasi ini dilatarbelakangi karena seringkali ditemukan kendala dalam pelaporan masalah atau keluhan dalam penggunaan sarana dan prasarana perusahaan. Kendala tersebut antara lain ketidakjelasan alur penanganan, pengguna sulit untuk mengetahui proses penanganan, proses pelaporan yang memakan waktu cukup lama, dan sering terjadinya kesalahan seperti human error. Oleh karena itu diperlukan sebuah sistem terintegrasi yang dapat diakses oleh seluruh pengguna sarana dan prasarana dan dapat digunakan untuk mengelola dan mencatat permasalahan yang dialami pengguna. Aplikasi ini merupakan single point of contact bagi karyawan dalam pelaporan dan penanganan masalah sarana dan prasarana. Fitur-fitur yang terdapat dalam aplikasi ini adalah sebagai berikut: Registrasi pengguna Fitur ini merupakan fitur untuk mendaftarkan pengguna agar dapat mengakses aplikasi web Customer Care. Tampilan dari halaman registrasi pengguna ditunjukkan pada Gambar 2.1.
Gambar 2.1. Tampilan Halaman Registrasi 11
Log-in pengguna Untuk dapat melakukan akses ke dalam aplikasi web Customer Care, terlebih dahulu pengguna harus melakukan log-in dengan memasukkan username dan password yang telah diperoleh dari proses registrasi. Tampilan halaman log-in ditunjukkan pada Gambar 2.2.
Gambar 2.2. Tampilan Halaman Log-in Membuat dan menyimpan laporan masalah atau keluhan Fiturini digunakan untuk membuat laporan masalah untuk kemudian laporan tersebut dapat ditindaklanjuti oleh pihak operator untuk ditugaskan pada pihak solver. Tampilan halaman pembuatan laporan ditunjukkan pada Gambar 2.3. Menampilkan data laporan masalah atau keluhan Fitur ini menampilkan data laporan masalah yang dibuat oleh pengguna. Tampilan halaman data laporan masalah ditunjukkan pada Gambar 2.4. Menugaskan masalah kepada penanggung jawab dari bagian terkait Setelah melihat data laporan masalah yang telah dibuat oleh pengguna, pihak operator dapat memberikan penugasan masalah kepada penanggung jawab dari bagian terkait. Ilustrasi penugasan masalah kepada penanggung jawab ditunjukkan pada Gambar 2.5 dan Gambar 2.6. 12
Gambar 2.3. Tampilan Halaman Pembuatan Laporan Masalah
Gambar 2.4. Tampilan Halaman Data Laporan Masalah 13
Gambar 2.5. Tampilan Halaman Detail Laporan Masalah
Gambar 2.6. Tampilan Memilih Penanggung Jawab Masalah/Solver Melaporkan pengerjaan masalah Pihak penanggung jawab masalah/solver dapat melaporkan pengerjaan masalah dengan cara melakukan pengubahan status pengerjaan. Tampilan pengubahan status pengerjaan masalah ditunjukkan pada Gambar 2.7. 14
Gambar 2.7. Tampilan Pengubahan Status Pengerjaan Melakukan penyetujuan laporan masalah Setelah pihak solver menyelesaikan tugasnya, tahap selanjutnya adalah menunggu persetujuan dari pihak atasan untuk menyetujui laporan masalah. Gambar 2.8 menunjukkan tampilan persetujuan laporan masalah yang dapat diakses oleh pihak atasan.
Gambar 2.8. Tampilan Persetujuan Laporan Masalah Menutup laporan masalah Setelah laporan diselesaikan dan disetujui oleh pihak atasan, pihak pelapor dapat melakukan pengecekan. Apabila menurut pihak pelapor masalah sudah teratasi, maka pelapor dapat menutup laporan masalah. Gambar 2.9 dan Gambar 2.10 mengilustrasikan proses penutupan laporan masalah. 15
Gambar 2.9. Tampilan Halaman Detail Laporan Masalah yang Terselesaikan
Gambar 2.10. Tampilan Halaman Detail Penutupan Laporan Masalah 2.1.2 Aplikasi Sistem Informasi Apotek Kimia Farma, Mulyosari, Surabaya Perangkat lunak yang dijadikan bahan uji adalah Aplikasi Desktop Sistem Informasi Apotek Kimia Farma, Mulyosari, Surabaya. Aplikasi ini adalah sistem untuk melakukan pendataan dari layanan jual beli obat dan transaksi praktik dokter. Pembuatan aplikasi ini dilatarbelakangi karena seringkali ditemukan kendala proses pendataan jual beli obat dan transaksi praktik dokter. Kendala tersebut antara lain ketidakjelasan alur jual beli obat dan transaksi praktik dokter. Oleh karena itu diperlukan sebuah sistem terintegrasi yang dapat diakses oleh seluruh pengguna sarana dan prasarana dan dapat digunakan untuk mengelola dan mencatat permasalahan yang dialami pengguna. Fitur-fitur yang terdapat dalam aplikasi ini adalah sebagai berikut: 16
Mengelola stok data obat Pengguna dapat mengelola stok data obat, yaitu menambahkan stok data obat, menghapus stok data obat, dan memperbarui stok data obat. Pengguna juga dapat memilih jenis pengelolaan stok data obat yang diinginkan, kemudian mengisi data yang ingin diperbarui. Gambar 2.11 menampilkan halaman pengelolaan stok data obat.
Gambar 2.11. Tampilan Halaman Mengelola Stok Data Obat Mengelola data pasien Pengguna dapat mengelola data pasien, yaitu menambahkan data pasien, menghapus data pasien, dan memperbarui data pasien. Pengguna juga dapat memilih jenis pengelolaan data pasien yang diinginkan, kemudian mengisi data yang ingin diperbarui. Gambar 2.12 mengilustrasikan halaman pengelolaan data pasien.
Gambar 2.12. Tampilan Halaman Mengelola Data Pasien 17
Mengelola data dokter Pengguna dapat mengelola data dokter, yaitu menambahkan data dokter, menghapus data dokter, dan memperbarui data dokter. Pengguna juga dapat memilih jenis pengelolaan data dokter yang diinginkan, kemudian mengisi data yang ingin diperbarui. Gambar 2.13 mengilustrasikan halaman pengelolaan data dokter.
Gambar 2.13. Tampilan Halaman Mengelola Data Dokter Mengelola data pegawai Pengguna dapat mengelola data pegawai, yaitu menambahkan data pegawai, menghapus data pegawai, dan memperbarui data pegawai. Pengguna juga dapat memilih jenis pengelolaan data pegawai yang diinginkan, kemudian mengisi data yang ingin diperbarui. Gambar 2.14 mengilustrasikan halaman pengelolaan data pegawai.
Gambar 2.14. Tampilan Halaman Mengelola Data Pegawai 18
2.2 Perangkat Keras Pengujian dilakukan dengan menggunakan komputer dengan spesifikasi sebagai berikut. Processor Intel Core i3-2370M @2.40GHz Memory 4GB Sistem Operasi: Windows 7 Ultimate 64 bit 2.3 Kakas Pengujian CodeIt.Right merupakan sebuah add-ins untuk Microsoft Visual Studio yang berguna untuk mendeteksi kesalahan pada kode, dengan menggabungkan analisis kode statis dan koreksi error atau refactoring otomatis. CodeIt.Right merupakan plug-in yang dibuat oleh SubMain. CodeIt.Right menyediakan versi trial yang dapat di-download secara gratis pada website SubMain. CodeIt.Right mendukung bahasa pemrograman C# dan Visual Basic. CodeIt.Right merupakan kakas bantu yang dapat digunakan untuk mendeteksi Bad Smell Code. Fitur dari CodeIt.Right antara lain: Review kode secara instan Refactoring kode secara otomatis Adanya fitur report Menerapkan peraturan berdasarkan panduan dari Microsoft .NET User dapat menetapkan aturan tertentu untuk proses refactoring Terintegrasi dengan Microsoft Visual Studio Adapun langkah-langkah menggunakan CodeIt.Right dalam suatu project adalah sebagai berikut: 1. Membuka project yang akan diuji menggunakan Microsoft Visual Studio 2. Membuka tab CodeIt.Right dan klik menu start analysis, pilih solution atau project seperti yang ditunjukkan pada Gambar 2.15.
19
Gambar 2.15. Mendeteksi Kesalahan Kode dengan CodeIt.Right
Gambar 2.16. CodeIt.Right Melakukan Scanning pada Bad Smell Code di Project Gambar 2.16 menampilkanCodeIt.Right melakukan scanning pada bad smell code yang ada di project dan akan menampilkan hasilnya dalam bentuk report. CodeIt.Right akan memberikan sejumlah pilihan mengenai metode koreksi yang 20
akan digunakan pada kode yang bermasalah seperti ditunjukkan pada Gambar 2.17.
Gambar 2.17. Opsi Pembenaran Kode pada CodeIt.Right Dalam melakukan analisis, pihak analis dapat menentukan untuk melakukan pengecualian terhadap rule, file, atau kesalahan tertentu. Fitur ini dapat ditemukan di tab Excluded seperti ditunjukkan pada Gambar 2.18.
Gambar 2.18. Fitur Excluded pada CodeIt.Right 21
Pihak analis dapat menentukan untuk melakukan pengecualian pada kesalahan, rule, file, atau project tertentu. Definisi dari melakukan pengecualian di sini adalah elemen yang dilakukan pengecualian tersebut tidak akan dilibatkan dalam analisis. Terdapat beberapa macam tingkatan ambang parahnya kesalahan pada kode yang dapat dideteksi oleh CodeIt.Right yaitu: Information: mengindikasikan kesalahan kode dengan level paling rendah. Warning: mengindikasikan kesalahan kode level warning atau merupakan peringatan. Critical Warning: mengindikasikan kesalahan kode lebih berat daripada peringatan dan butuh ditangani untuk mengatasi error. Error: mengindikasikan kesalahan kode level tinggi. Critical Error: mengindikasikan kesalahan kode level paling tinggi dan harus dibenarkan. Gambar 2.19 menampilkan jenis severity threshold yang dideteksi oleh CodeIt.Right.
Gambar 2.19. Daftar Severity Threshold dengan Level Error yang Terdeteksi CodeIt.Right memberikan opsi untuk mengoreksi kesalahan/bad smell code yang dideteksi oleh CodeIt.Right secara menyeluruh ataupun hanya kesalahan tertentu saja yang dipilih oleh user. Terdapat check box di setiap kesalahan yang dapat dipilih untuk menentukan apakah kesalahan tersebut akan diperbaiki atau tidak dengan memilih tombol correct checked. Atau pengguna dapat melakukan proses koreksi secara satu per satu pada setiap kesalahan kode dengan memilih tombol Correct yang ada pada daftar error. Terdapat pilihan undo yang dapat 22
mengembalikan kode seperti semula apabila terdapat pengkoreksian yang tidak diinginkan. Gambar 2.20 menampilkan proses koreksi kesalahan kode dengan CodeIt.Right.
Gambar 2.20. Proses Koreksi Kesalahan Kode dengan CodeIt.Right Selain itu CodeIt.Right juga memberikan fitur untuk mencetak ataupun menyimpan hasil laporan deteksi bad smell code dengan ekstensi .xls seperti ditunjukkan pada Gambar 2.21. 23
Gambar 2.21. Fitur Export to Excel pada CodeIt.Right 2.4 Persiapan Perangkat Keras Dalam melakukan pengujian bad smell code dengan menggunakan CodeIt.Right ini langkah awal yang harus dilakukan adalah meng-install Microsoft Visual Studio dan dilanjutkan dengan meng-install plug-in CodeIt.Right pada Visual Studio.
24
3 Deskripsi Hasil Uji 3.1 Hasil Pengujian 3.1.1 Aplikasi Web Customer Care di PT. Biofarma, Bandung, Jawa Barat Pengujian yang dilakukan adalah pengujian pada aplikasi web Customer Care di PT. Bio Farma, Bandung, Jawa Barat menggunakan CodeIt.Right. Pengujian ini bertujuan untuk mendeteksi bad smell code yang terdapat dalam project aplikasi. Gambar 3.1 menunjukkan hasil pengujian secara keseluruhan pada project dimana semua rule yang terdapat di CodeIt.Right digunakan untuk mendeteksi kesalahan di dalam project.
Gambar 3.1. Hasil Pengujian Secara Keseluruhan Dari pengujian tersebut didapatkan terdapat total 599 kesalahan. Akan tetapi tidak semua kesalahan tersebut merupakan bad smell code. Oleh karena itu terdapat beberapa rule yang tidak digunakan dalam analisis. Tabel 3.1 menampilkan sejumlah rule yang tidak digunakan dalam analisis. Tabel 3.1. Sejumlah Rule yang Tidak Dilibatkan dalam Analisis Aplikasi Web Customer Care Rule Category Compilation Debug Must Be Disabled AspNet Avoid Data Binder Eval Method AspNet Avoid Setting Auto Post Back Property To True AspNet Enable Event Validation Should Be True AspNet Form Authentication Require SSL Should Be True AspNet Http Cookies Require SSL Should Be True AspNet Http Only Cookies Should Be True AspNet Page View State Encryption Mode Should Be Always AspNet Avoid Single Line If Statement CodingStyle Do Not Include Multiple Statements On Single Line CodingStyle 25
Do Not Declare Externally Visible Instance Fields Design Nested Types Should Not Be Visible Design Types That Own Disposable Fields Should Be Disposable Design Do Not Catch General Exception Types Exception Handling Source File Should Have Header General Source File Name Should Match Public Type Name General Specify Culture Info Globalization Identifiers Should Be Cased Correctly Naming Acronyms Should Be Cased Correctly Naming Identifiers Should Not Match Keywords Naming Type Names Should Not Match Namespaces Naming Do Not Check For Empty Strings Using Equals Performance Close Database Connection In Finally Block Usage Always Close Standard IO Streams Usage
Penentuan apakah sebuah rule digunakan atau tidak didasarkan pada jenis-jenis bad smell code pada [1] dan [2]. Setelah rules di Tabel 3.1 tidak digunakan dalam analisis, total kesalahan yang didapatkan sebanyak 19 yaitu berdasarkan kategori performance 12 file, dan usage 7 file seperti ditunjukkan pada Gambar 3.2.
Gambar 3.2. Hasil Pengujian Setelah Sejumlah Rule Tidak Digunakan 26
3.1.1.1 Performance Merupakan kesalahan kode yang dapat mempengaruhi performa dari aplikasi. Dalam aplikasi web Customer Care PT. Bio Farma ini terdapat 12 kesalahan yang disebabkan adanya variabel yang tidak digunakan. Gambar 3.3 menunjukkan daftar bad smell code untuk kategori performance.
Gambar 3.3. Daftar Bad Smell Code Kategori Performance Untuk melakukan koreksi dapat dilakukan dengan mencentang semua kesalahan dengan kategori ini dan memilih pilihan Correct Checked atau dapat dilakukan dengan satu per satu memilih tombol Correct pada error list. CodeIt.Right akan secara otomatis meng-comment variabel yang tidak digunakan tersebut seperti ditunjukkan pada Gambar 3.4
Gambar 3.4. Hasil Koreksi Bad Smell Code Kategori Performance 3.1.1.2 Usage Merupakan kesalahan akibat penggunaan metode tertentu di dalam project. Dalam aplikasi web Customer Care PT. Bio Farma ini terdapat 7 kesalahan yang disebabkan oleh penggunaan switch statement seperti ditunjukkan pada Gambar 3.5. 27
Gambar 3.5. Contoh Bad Smell Code Kategori Usage Permasalahan yang sering ditemui dalam penggunaan switch statement adalah munculnya duplikasi. Seringkali ditemukan lebih dari satu case statement untuk tujuan yang berbeda. Switch statement dianggap kurang cocok dengan prinsip pemrograman berbasis objek. Prinsip polymorphism dapat digunakan untuk mengatasi permasalahan ini. Akan tetapi dalam kakas CodeIt.Right ini, fokus refaktor bukan untuk mengubah switch statement menjadi polymorphism, melainkan untuk menambahkan default case pada switch statement. Proses refaktor ini dianggap kurang tepat untuk mengatasi bad smell code akan tetapi penggunaan CodeIt.Right dapat digunakan untuk membantu mendeteksi adanya switch statement meskipun proses refaktor masih harus dilakukan secara manual. 3.1.2 Aplikasi Desktop Sistem Informasi Apotek Kimia Farma, Mulyosari, Surabaya Pengujian yang dilakukan adalah pengujian pada Aplikasi desktop Sistem Informasi Apotek Kimia Farma, Mulyosari, Surabaya menggunakan CodeIt.Right. Pengujian ini bertujuan untuk mendeteksi bad smell code yang terdapat dalam project aplikasi. Gambar 3.6 menunjukkan hasil pengujian secara keseluruhan pada project dimana semua rule yang terdapat di CodeIt.Right digunakan untuk mendeteksi kesalahan di dalam project. 28
Gambar 3.6. Hasil Pengujian Secara Keseluruhan Dari pengujian tersebut didapatkan terdapat total 39 kesalahan. Akan tetapi terdapat sejumlah rule yang tidak digunakan yang ditunjukkan pada Tabel 3.. Tabel 3.2. Sejumlah Rule yang Tidak Dilibatkan dalam Analisis Aplikasi Desktop SIAPFARMA Rule Category Do NotDeclareExternallyVisibleInstanceFields Design Mark Assemblies With Attribute Design Assemblies Should Have Valid Strong Name Design Do Not Catch General Exception Types Exception Handling Source File Should Have Header General Set All Windows Forms Designer Settings Correctly General Identifiers Should Be Cased Correctly Naming Acronyms Should Be Cased Correctly Naming Close Database Connection In Finally Block Usage Always Close Standard IO Streams Usage
Setelah rules di Tabel 3.2 tidak digunakan dalam analisis, total kesalahan yang didapatkan sebanyak 9 yaitu berdasarkan kategori performance 9 file seperti ditunjukkan pada Gambar 3.7. 29
Gambar 3.7. Hasil Pengujian Setelah Sejumlah Rule Tidak Digunakan 3.1.2.1 Performance Merupakan kesalahan kode yang dapat mempengaruhi performa dari aplikasi. Dalam Aplikasi desktop Sistem Informasi Apotek Kimia Farma ini terdapat 9 kesalahan yang disebabkan adanya variabel yang tidak digunakan. Gambar 3.8 menunjukkan daftar bad smell code untuk kategori performance.
Gambar 3.8. Daftar Bad Smell Code Kategori Performance Untuk melakukan koreksi dapat dilakukan dengan mencentang semua kesalahan dengan kategori ini dan memilih pilihan Correct Checked atau dapat dilakukan dengan satu per satu memilih tombol Correct pada error list. CodeIt.Right akan secara otomatis meng-comment variabel yang tidak digunakan tersebut seperti ditunjukkan pada Gambar 3.9. 30
Gambar 3.9. Hasil Koreksi Bad Smell Code Kategori Performance 3.2 Analisis Hasil Pengujian Analisis hasil pengujian dilakukan setelah menjalankan add-ins CodeIt.Right pada Microsoft Visual Studio 2010 dan melihat keluaran dari pengujian project aplikasi web Customer Care PT. Bio Farma, Bandung, Jawa Barat dan Aplikasi desktop Sistem Informasi Apotek Kimia Farma, Mulyosari, Surabaya. Dari hasil beberapa pengujian di atas didapatkan analisis hasil pengujian sebagai berikut: Dalam project aplikasi web Customer Care PT. Bio Farma ini jumlah bad smell code sudah cukup sedikit yaitu sebanyak 19 kesalahan dengan mayoritas kesalahan didominasi oleh adanya variabel yang tidak digunakan. Dalam project aplikasi desktop Sistem Informasi Apotek Kimia Farma, Mulyosari, Surabaya jumlah bad smell code juga cukup sedikit yaitu sebanyak 9 kesalahan. CodeIt.Right dapat digunakan untuk mendeteksi adanya bad smell code di dalam program dan mampu memberikan informasi yang detail mengenai kesalahan tersebut. Detail informasi yang diberikan oleh CodeIt.Right antara lain: 1. Tingkat kepentingan dari kesalahan tersebut, dinyatakan dalam severity threshold 2. Lokasi kode yang terdeteksi mengandung bad smell code 3. Jumlah kesalahan kode pada class dan project 4. Tipe file kode tersebut 5. Jenis kesalahan/bad smell 6. Kategori kesalahan/bad smell 7. Pilihan aksi yang dapat dilakukan untuk menangani kesalahan kode tersebut CodeIt.Right memiliki sejumlah rule yang dapat digunakan untuk mendeteksi bad smell code pada program, akan tetapi tidak semua kesalahan yang terdeteksi tersebut merupakan bad smell code sehingga sejumlah rule tidak perlu digunakan dalam analisis. Sejumlah proses refaktor yang dilakukan oleh CodeIt.Right kurang cocok untuk mengatasi bad smell code pada program seperti contohnya refaktor untuk mengatasi switch statement. Setelah dilakukan analisis secara manual pada kedua project diketahui bahwa CodeIt.Right gagal mendeteksi bad smell code yang berupa duplikasi kode. 31
Analisis Presisi dan Recall untuk project aplikasi web Customer Care PT. Bio Farma, Bandung, Jawa Barat ditunjukkan pada Tabel 3.3. Tabel 3.3. Analisis Presisi dan Recall Aplikasi Web Customer Care PT. Bio Farma Total Bad Smell Terdeteksi CodeIt.Right 599 Total Bad Smell Code Sebenarnya 19 Total Bad Smell Code Tidak Terdeteksi CodeIt.Right 92 Precision 19 599 = 0.0317 Recall 19 19 +92 = 0.1712
Analisis Presisi dan Recall untuk project aplikasi desktop Sistem Informasi Apotek Kimia Farma, Mulyosari, Surabaya ditunjukkan pada Tabel 3.4. Tabel 3.4. Analisis Presisi dan Recall Aplikasi Desktop Sistem Informasi Apotek Kimia Farma Total Bad Smell Terdeteksi CodeIt.Right 39 Total Bad Smell Code Sebenarnya 9 Total Bad Smell Code Tidak Terdeteksi CodeIt.Right 20 Precision 9 39 = 0.2308 Recall 9 9 +20 = 0.3103
32
4 Analisis Kakas 4.1 Mengenai CodeIt.Right CodeIt.Right merupakan add-ins Microsoft Visual Studio yang bukan hanya mengandalkan pendeteksian kesalahan pada kode dan bad smells code, namun juga memberikan kemudahan dalam pengkoreksian kode seperti refactoring otomatis di tempat maupun opsi untuk memilih kode mana yang ingin dikoreksi dan mana yang tidak. CodeIt.Right juga disertai pilihan undo untuk membatalkan proses refactoring yang telah dilakukan. CodeIt.Right terintegrasi dengan Visual Studio 2010, Visual Studio 2008, dan Visual Studio 2005. Gambar 4.1 menampilkan tampilan CodeIt.Right pada Visual Studio.
Gambar 4.1. CodeIt.Right pada Visual Studio CodeIt.Right membawa analisis kode statis ke level berikutnya dengan memberikan aturan atas pelanggaran kode yang secara otomatis merefaktornya ke kode yang benar. Terdapat banyak metode yang digunakan CodeIt.Right ketika mengembangkan custom rules, naming,dan usage rules guna mendeteksi kesalahan kode dan melakukan refaktor, metode tersebut antara lain sebagai berikut: 1. Metode Rule Utilities Metode ini menyediakan kebutuhan dari rule-rule umum di CodeIt.Right. Metode Rule Utilities ditunjukkan pada Gambar 4.2. Gambar 4.3 dan Gambar 4.4 menampilkan penjelasan dari setiap metode Rule Utilities. 33
Gambar 4.2. Metode Rule Utilities
Gambar 4.3. Penjelasan Metode Rule Utilities
Gambar 4.4. Penjelasan Metode Rule Utilities (Lanjutan) 2. Metode Naming Rule Utilities Metode ini menyediakan kebutuhan umum dari naming rule pada CodeIt.Right. Metode Naming Rule Utilities ditunjukkan pada Gambar 4.5. Gambar 4.6 dan Gambar 4.7 menampilkan penjelasan detail dari tiap metode Naming Rule Utilities. 34
Gambar 4.5. Metode Naming Rule Utilities
Gambar 4.6. Penjelasan Metode Naming Rule Utilities
Gambar 4.7. Penjelasan Metode Naming Rule Utilities (Lanjutan) 3. Metode Usage Rule Utils Metode ini menyediakan kebutuhan umum dari usage rule pada CodeIt.Right. Metode Usage Rule Utilities ditunjukkan pada Gambar 4.8.
Gambar 4.8. Metode Usage Rule Utils 4. Metode Security Rule Utilities Metode ini menyediakan kebutuhan umum dari security rule pada CodeIt.Right. Metode Security Rule Utilities ditunjukkan padaGambar 4.9. Gambar 4.10 menampilkan penjelasan detail dari tiap metode Security Rule Utilities. 35
Gambar 4.9. Metode Security Rule Utilities
Gambar 4.10. Penjelasan Metode Security Rule Utilities 5. Metode Gui Manager Utils Metode ini menyediakan dialog untuk perbaikan rule pada CodeIt.Right. Metode Gui Manager Utilities ditunjukkan pada Gambar 4.11. Gambar 4.12 menampilkan penjelasan detail dari tiap metode Gui Manager Utilities.
Gambar 4.11. Metode Gui Manager Utils
Gambar 4.12. Penjelasan Metode Gui Manager Utils CodeIt.Right menggunakan teknologi IntelliFix TM yang secara otomatis akan memulihkan code smells dan kesalahan pada program. Dalam melakukan analisis, CodeIt.Right akan membuat file kopi bayangan dari source file di temporary file dari pengguna. File kopi bayangan ini akan selalu di-overwrite setiap kali ada perubahan yang dilakukan. CodeIt.Right akan menganalisis file kopi bayangan ini dan menampilkan kesalahan kode yang ditemukan pada IDE seperti ditunjukkan pada Gambar 4.13. 36
CodeIt.Right mengimplementasikan algoritma Scavenging untuk membersihkan file kopi bayangan yang telah dibuat tersebut sehingga tidak ada space yang terbuang. Algoritma Scavenging biasa digunakan dalam proses garbage collection.
Gambar 4.13. Automatic Code Refactoring
37
5 Penutup 5.1 Kesimpulan Kakas bantu CodeIt.Right dapat digunakan untuk membantu mendeteksi adanya bad smell code pada program. CodeIt.Right menunjukkan performa yang baik karena dapat memberikan informasi yang detail mengenai bad smell code dalam program seperti lokasi kesalahan kode, jumlah kesalahan kode dalam suatu project, jenis kesalahan, kategori kesalahan yang dilakukan, serta pilihan aksi yang dapat dilakukan untuk mengkoreksi kesalahan kode tersebut. Terdapat juga pilihan undo untuk membatalkan proses koreksi yang telah dilakukan. Akan tetapi kakas bantu CodeIt.Right memiliki kekurangan yaitu gagal dalam mendeteksi adanya duplikasi kode dalam project. Aplikasi web Customer Care PT. Bio Farma, Bandung, Jawa Barat dan Aplikasi desktop Sistem Informasi Apotek Kimia Farma, Mulyosari, Surabaya tergolong memiliki tingkat bad smell code yang cukup rendah. Berdasarkan hasil pengujian menggunakan kakas bantu CodeIt.Right, aplikasi ini hanya memiliki sebanyak 19 dan 9 bad smell code. 5.2 Saran Kakas bantu CodeIt.Right dapat membantu dalam mendeteksi adanya bad smell code pada program, penggunaannya pun juga mudah. Akan tetapi kakas bantu ini hanya dapat digunakan untuk bahasa pemrograman C# dan Visual Basic. Akan lebih baik jika CodeIt.Right juga dapat digunakan untuk bahasa pemrograman yang lain. Duplikasi kode juga merupakan salah satu bad smell code yang sering ditemukan dalam project. Akan tetapi CodeIt.Right gagal dalam mendeteksi adanya duplikasi kode. Akan lebih baik jika CodeIt.Right mampu mendeteksi duplikasi kode dan memberikan metode refaktor yang tepat.
38
6 Daftar Pustaka
[1] Bad Smells In Code. [Online]. http://www.laputan.org/pub/patterns/fowler/smells.pdf [2] George Blank. Refactoring.