Mengenal Software Quality Assurance

oleh -105 views
Software Quality Assurance
Software Quality Assurance

Apa itu software quality assurance atau khususnya apa itu software quality? Kalau kita lihat komputer dulu hanya sekedar hardware dan software, namun ternyata hardware dan software ini hanyalah sebagian kecil dari IT atau Information Technology, dimana pada IT terdapat beberapa hal diantaranya ada intranet, internet, data mining dan sebagainya. Namun ternyata IT itu sendiri merupakan bagian dari Sistem Informasi atau Information System, dimana pada sistem informasi terdapat Research and Development, Cost and Investment, Strategic Bussiness Plan, dan lain sebagainya, yang sifatnya lebih melakukan analisa.

Namun terkadang masih saja ada yang sering bingung membedakan antara SI dan TI. Sebagai contoh orang-orang IT akan menyangka lebih tinggi dari orang-orang SI, padahal dalam suatu organisasi hal ini terbalik, orang-orang SI sebenarnya berada diatas orang IT. Dalam suatu project software, orang-orang IT biasanya akan bertanggungjawab dalam dunia programming sedangkan orang-orang SI akan berkecimpung dalam bisnis analyst nya, dimana jika bisnis analyst sudah dibuat tahap selanjutnya akan diberikan ke orang IT untuk dibuat code programmingnya.

Definisi sistem informasi adalah bagaimana sistem mengumpulkan, memproses, menyimpan, menganalisa, dan desiminasi informasi untuk suatu tujuan tertentu. Kemudian pada proses membangun sistem informasi pada suatu organisasi menggunakan beberapa sumber daya, seperti hardware dan software, data, manusia, prosedur organisasi.

Definisi software, software quality, software quality assurance menurut IEEE

Definisi sofware adalah suatu program komputer, prosedur, dan kemungkinan dokumentasi dan data yang berkaitan dengan pengoperasian sistem komputer. Disini jangan dilupakan bahwa komputer itu stabil, yang memiliki ingatan jangka panjang namun komputer itu bodoh, dan yang pintarnya sesungguhnya manusianya.

Definisi software quality menurut IEEE, adalah sebagai berikut:

  1. Sejauh mana sistem, komponen, atau proses memenuhi persyaratan yang ditentukan.
  2. Sejauh mana sistem, komponen, atau proses memenuhi kebutuhan atau harapan pelanggan atau pengguna.

Tool yang paling mudah digunakan pada software quality adalah menggunakan sistem ceklist, jika sudah selesai di ceklist dan seterusnya.

Definisi software quality assurance:

  1. Pola terencana dan sistematis dari semua tindakan yang diperlukan untuk memberikan keyakinan yang memadai bahwa barang atau produk sesuai dengan persyaratan teknis yang ditetapkan.
  2. Serangkaian aktivitas yang dirancang untuk mengevaluasi proses di mana produk dikembangkan atau diproduksi. Berbeda dengan kontrol kualitas.
Software bug, errors, faults and failures

Asal muasal kegagalan perangkat lunak terletak pada kesalahan perangkat lunak yang dilakukan oleh seorang programmer. Dan berikut adalah beberapa penjelasan terkait pemahaman tentang istilah bug, error, fault dan failure pada suatu software.

Sejarah istilah software bug pertama kali muncul ketika ada suatu komputer programnya error dan ketika dicari sumber errornya ternyata ada serangga yang masuk ke dalam CPU dan menyebabkan konsleting. Kemudian muncullah istilah software bug untuk pertama kalinya. Dan sekarang software bug bisa dikatakan jika terjadi suatu kesalahan pada program atau di sistem yang belum diketahui penyebabnya.

Berbeda dengan software error sudah diketahui penyebab atau letak kesalahannya dan selanjutnya tinggal diperbaiki saja. Namun tentu saja terdapat error yang sangat sulit dicari jika error tersebut terdapat pada code line atau pada logical nya.

Tidak semua software error menjadi software fault; sebagai contoh saat seseorang menjadi tester atau software quality analyst, maka orang tersebut harus bisa menentukan kapan error tersebut diperbaiki dan kapan error tersebut tidak perlu diperbaiki. Jadi tidak 100% error pada sistem dihilangkan karena bisa jadi membutuhkan waktu lama dan biaya besar. Untuk mengatasi software fault tentu butuh trik untuk mengatasinya, contoh seperti memasukan angka pada suatu aplikasi. Agar user tetap mengisi dengan angka maka dibuatkan tombol plus dan minus, sehingga user tidak perlu lagi melakukan input angka secara manual. Hal ini tentu merupakan antisipasi agar software tidak crash, karena jika bukan angka yang diinput tentu tidak dapat dihitung. Atau bisa juga user dapat melakukan input angka secara manual namun ditambahkan pesan error jika yang dimasukkan bukan angka. Inilah contoh untuk menangani error tanpa harus memperbaiki program. Error tetap ada pada program tersebut namun sudah ditangani oleh trik menampilkan pesan.

Selanjutnya tidak semua software fault menjadi software failure atau gagal. Software failure terjadi hanya jika “diaktifkan”. Seperti contoh diatas user yang melakukan input huruf dan bukan angka lalu menekan enter maka software akan failure. Sehingga software failure itu merupakan software fault yang teraktivasi. Saat memasukan huruf untuk penjumlahan kemudian di enter itulah yang menjadi failure dan sistemnya bisa crash.

Klasifikasi penyebab kesalahan perangkat lunak:

  1. Definisi persyaratan yang salah dipahami oleh pengembang atau pengembang gagal mendefinisikan kebutuhan.
  2. Kegagalan komunikasi antara pengembang dan klien. Ingat klien biasanya merupakan pihak manajemen yang jarang mengerti tentang software dan hanya bisa menjelaskan kebutuhan manajerial saja dan tidak bisa menjelaskan secara teknikal. Sedangkan pengembang adalah orang-orang IT yang sering bicara teknikal dan kurang mengerti tentang manajerial. Hal ini yang menyebabkan kegagalan komunikasi. Maka sekarang ada istilah bisnis IT analyst yaitu seseorang yang menghubungkan antara klien dan pengembangan.
  3. Penyimpangan yang disengaja dari persyaratan perangkat lunak. Biasanya ini dari sisi pengembang yang ingin melakukan unjuk gigi, banyak fungsi-fungsi yang melebihi kebutuhan software padahal klien tidak membutuhkannya.
  4. Kesalahan desain logis. Hal ini yang cukup sulit untuk dicari kesalahannya, secara program tidak error tapi hasilnya salah. Contoh yang cukup heboh yaitu pada saat Intel meluncurkan Pentium III padahal ada satu error pada desain logisnya yang sudah diketahui namun tetap saja produk ini dikeluarkan. Kesalahan tersebut adalah kesalahan dari penjumlahan 1/2*2-1 yang harusnya hasilnya adalah 0 (nol) tapi ternyata hasil penghitungan dari Pentium III bukan nol tapi 0 koma sekian ujungnya 1. Pada akhirnya Intel melakukan penarikan produk ini dan mengalami rugi besar. Inilah salah satu contoh logical design error.
  5. Kesalahan pengkodean. Kesalahan ini hampir mudah dicari karena hampir semua software pemrograman memiliki debug yang dapat menampilkan error pada baris kode berapa dan pada bagian apa.
  6. Ketidaksesuaian dengan dokumentasi dan instruksi pengkodean. Hal ini sering terjadi pada orang IT, karena orang IT kadang sangat mahir dalam hal pengkodean dan pembuatan software namun lemah dalam hal dokumentasi.
  7. Kekurangan dari proses pengujian. Untuk contoh ini biasanya terkait proses tender, karena ingin menang dalam tender maka proses pembuatan software dipercepat tanpa melakukan proses pengujian software secara keseluruhan. Dan celakanya bahkan pada proposal yang diajukan hanya terdapat jadwal proses development saja tanpa ada jadwal untuk melakukan testing software.
  8. Kesalahan prosedur.
  9. Kesalahan dokumentasi.
Quality Control

Kontrol kualitas sama dengan kontrol variasi. Kontrol kualitas dicapai melalui serangkaian inspeksi, tinjauan dan pengujian yang diterapkan selama siklus pengembangan, untuk memastikan bahwa produk memenuhi persyaratan dengan variasi minimal. Mereview error-error yang ada dan diklasifikasikan mana yang harus diperbaiki, mana yang vital, mana yang cukup diberi pesan error, dan mana yang cukup diberi keterangan saja.

Tujuan dari kegiatan SQA

Pengembangan perangkat lunak (berorientasi proses):

  • Menjamin tingkat keyakinan yang dapat diterima bahwa perangkat lunak akan sesuai dengan fungsional persyaratan teknis.
  • Menjamin tingkat kepercayaan yang dapat diterima bahwa perangkat lunak akan sesuai dengan penjadwalan manajerial dan persyaratan anggaran.
  • Memulai dan mengelola aktivitas untuk peningkatan dan efisiensi yang lebih besar dari pengembangan perangkat lunak dan aktivitas SQA. Ini berarti meningkatkan prospek bahwa persyaratan fungsional dan manajerial akan tercapai sekaligus mengurangi biaya pelaksanaan pengembangan perangkat lunak dan kegiatan SQA.

Pemeliharaan perangkat lunak (berorientasi produk):

  • Memastikan tingkat keyakinan yang dapat diterima bahwa aktivitas pemeliharaan perangkat lunak akan sesuai dengan persyaratan fungsional teknis.
  • Memastikan tingkat kepercayaan yang dapat diterima bahwa aktivitas pemeliharaan perangkat lunak akan sesuai dengan penjadwalan manajerial dan persyaratan anggaran.
  • Memulai dan mengelola aktivitas untuk meningkatkan dan meningkatkan efisiensi pemeliharaan perangkat lunak dan aktivitas SQA. Ini melibatkan peningkatan prospek pencapaian persyaratan fungsional dan manajerial sambil mengurangi biaya.

Komentar