Kualitas Perangkat Lunak (Dasar)
Kualitas Perangkat Lunak – Pada kesempatan kali ini saya ingin mencoba berbagi pemahaman mengenai kualitas perangkat lunak yang saya dapatkan dari perkuliahan IF5123. Sebelum kita bahas lebih jauh mengenai kualitas perangkat lunak, ada baiknya kita pahami terlebih dahulu pengertian dari perangkat lunak itu sendiri, menurut IEEE & ISO, perangkat lunak merupakan gabungan dari program komputer, prosedur, dokumentasi dan data yang membentuk satu kesatuan yang diperlukan untuk mengoperasikan sebuah sistem dengan tujuan tertentu. Keempat komponen tersebut akan mempengaruhi kualitas perangkat lunak, baik dari pengembangan sampai pada tahap pemeliharaan perangkat lunak. Jadi, kualitas perangkat lunak dapat dinilai baik dilihat dari kualitas program (kode), kualitas prosedur (algoritma), kualitas dokumentasi dan kualitas data.
Kualitas Perangkat Lunak
Saat melakukan pengembangan perangkat lunak, biasanya kita akan mendengar istilah software error, fault dan failure. Error merupakan sebuah kesalahan grammatical pada saat penulisan baris kode, sintaks dan logika program. Error yang terjadi dapat mengakibatkan fault dimana fungsional dari sebuah program tidak sesuai dengan kebutuhan atau spesifikasi. Namun, tidak semua error dapat mengakibatkan fault. Fault yang terjadi akan mengakibatkan failure atau kegagalan sistem perangkat lunak. Namun perlu digarisbawahi bahwa fault akan menjadi failure jika prosedur atau fungsi yang ternyata fault tersebut diaktivasi atau “activated”. Pada banyak situasi, software fault tidak pernah diaktivasi karena sebuah ‘keberuntungan’ dimana terdapat banyak kondisi kebutuhan yang tidak memungkinan fault diaktivasi.
Penyebab software error dapat diklasifikasikan sebagai berikut:
- Kesalahan mendefinisikan kebutuhan.
- Kesalahan komunikasi antara klien dan pengembang.
- Penyimpangan pada saat mempertimbakan kebutuhan perangkat lunak.
- Kesalahan saat melakukan desain logic.
- Kesalahan pengkodean.
- Dokumentasi dan kode tidak sesuai.
- Proses testing yang singkat.
- Kesalahan prosedur.
- Kesalahan dokumentasi.
Setelah membahas tentang apa itu software atau perangkat lunak, selanjutnya kita akan membahas tentang pengertian kualitas perangkat lunak. Menurut IEEE, Kualitas Perangkat Lunak dapat diartikan sebagai tingkatan dimana sistem, komponen atau proses dapat memenuhi spesifikasi kebutuhan dan keinginan user atau klien. Selanjutnya, Pressman mengungkapkan bahwa kualitas perangkat lunak adalah kesesuaian antara fungsionalitas dan kinerja sistem terhadap kebutuhan klien, standar dokumentasi pengembangan sistem yang telah ditentukan, dan karakteristik implisit yang diharapkan pengembang perangkat lunak.
Selanjutnya kita akan membahas pengertian dari Software Quality Assurance (SQA). Menurut IEEE, SQA merupakan rangkaian planning atau rencana dan tahapan sistematik dari semua proses yang dibutuhkan untuk memastikan bahwa proses pengembangan sebuah item atau produk sesuai dengan kebutuhan. SQA juga dapat dikatakan sebuah kumpulan desain aktivitas untuk mengevaluasi proses selama produk dikembangkan atau dibuat. Tujuan utama SQA adalah menghasil perangkat lunak dengan kualitas tinggi. Secara umum proses pengembangan perangkat lunak dapat diilustrasikan dengan gambar sebagai berikut dimana SQA sebagai ‘payung’ masuk pada tiap tahapnya.
Quality Assurance (QA) berbeda dengan Quality Control (QC) dimana QC merupakan variasi kontrol yang melakukan pemeriksaan, reviews dan tes terhadap hasil atau produk sebelum produk dilepas keluar organisasi atau perusahaan. Untuk lebih jelasnya mengenai perbeda QA dan QC, anda dapat membaca tulisan Perbedaan Quality Assurance dan Quality Control.
Untuk melakukan proses SQA membutuhkan dana yang cukup besar karena setiap tahap pengembangan perangkat lunak akan dimasuki SQA, namun jika melihat dampak yang ditimbulkan akibat software failure jelas merugikan uang yang sangat besar. Berikut contoh Cost of Quality berdasarkan studi kasus pada IBM’s Rochester development facility.
- With Inspection/Review With Inspection/Review
Total no. of codes: 200,000 lines
No. of potential defects prevented: 3112 defects
Time used for inspection: 7053 hours
Programmer costs: US$40/hour
Total prevention cost: US$282,120
Prevention cost per error US91 - Without Inspection/Review
No. of defects per KLOC: 1 per 1000 lines
No. of defects shipped: 200
Estimated cost by IBM per “field fix”: US$25,000
Total cost to remove defects: US$5 million
Kata mencegah sebelum terjadi akan sangat jelas terasa dampaknya pada ilustrasi di atas. Dalam melakukan aktivitas SQA dibutuhkan orang-orang yang dibagi menjadi 2 grup utama, yaitu grup software engineer dan grup SQA. Grup software engineer bertugas untuk menerapkan metode teknis yang solid dan mengukur kualitas, melakukan tinjauan teknis formal dan melakukan pengujian perangkat lunak yang direncanakan. Sedangkan grup SQA bertanggung jawab untuk menjamin kualitas, merencanakan, mengawasi, memelihara, menganalisis dan membuat laporan.