Jumat, 05 Juli 2013

Jaminan Mutu Software

Berdasarkan definisi IEEE (1991), Jaminan Mutu Perangkat Lunak ( Software Quality Assurance ) adalah :
1. A planned and systematic pattern of all actions necessary to provide adequate confidence that an item or product conforms to established technical requirements.
2. A set of activities designed to evaluate the process by which the products are developed or manufactured. Contrast with quality control.

yang artinya adalah :
1. Sebuah pola yang terencana dan sistematis dari semua tindakan yang diperlukan untuk menyediakan kepercayaan yang cukup bahwa sebuah produk atau barang sesuai dengan kebutuhan teknis yang telah disusun.
2. Sekumpulan aktifitas yang dirancang untuk mengevaluasi proses dimana sebuah produk dikembangkan atau diproduksi.

dari beberapa pengertian diatas, kita dapat menyimpulkan bahwa jaminan mutu perangkat lunak adalah sebuah aktifitas untuk menjaga kulitas perangkat lunak yang dikembangkan. Sejak kita memasuki jaman teknologi informasi, kita mulai mengenal berbagai macam produk yang bersifat “maya” (bukan ghoib lho ya…), yaitu sebuah produk yang bisa kita lihat tetapi tidak bisa kita sentuh selayaknya produk-produk nyata yang kita kenal selama ini (seperti mobil, motor, sendok, piring, dbs)  .
Seperti yang disampaikan oleh Galin (2004), menjaga kualitas perangkat lunak memiliki tantangan tersendiri karena memiliki karakteristik yang berbeda dengan produk industri. Dari segi apa saja tantangannya ?
1. Kompleksitas (complexity).
Produk Perangkat Lunak (Software Product) : Biasanya sebuah perangkat lunak memiliki tingkat kompleksitas yang tinggi karena didalamnya sangat mungkin terdapat ribuan fungsi operasi.
2. Visibilitas Produk (product visibility).
Produk Perangkat Lunak dikatakan invisible product karena dalam mendeteksi produk yang cacat sangat tidak mungkin melalui penglihatan (by sight).
3. Sifat Pengembangan dan Proses Produksi (nature of development and production process).
Kesempatan untuk mendeteksi produk yang cacat hanya mungkin dilakukan pada fase pengembangan. Berbeda dengan produk industri, dimana kesempatan untuk mendeteksi produk yang cacat dapat dilakukan di semua fase pengembangan dan produksi.

Sedikit petunjuk untuk membayangkan seberapa kompleks-kah sebuah perangkat lunak, coba teman-teman bayangkan sebuah gedung atau rumah, saya yakin, orang yang bukan ahli bangunan pun bisa menyebutkan jika gedung lebih kompleks dari rumah karena beberapa faktor yang terlihat. Terbayang ?? nah sekarang coba kalian bayangkan beberapa perangkat lunak yang teman-teman kenal, lalu sebutkan mengapa salah satu dari perangkat lunak yang baru saja disebutkan lebih kompleks dari yang lainnya ? 
Ok sedikit petunjuk lain, jika teman-teman ingin memperbaiki rumah, dan ada bagian yang harus dibongkar, saya pribadi yakin teman-teman akan bisa memperkirakan bagian mana saja yang akan terkena dampak, apa saja yang diperlukan, berapa lama waktu yang dibutuhkan dan besarnya biaya yang diperlukan walaupun teman-teman bukan ahli bangunan. Sekarang teman-teman bisa kembali membayangkan, jika ada sebuah perangkat lunak yang akan diperbaiki atau ditambahkan fiturnya, bisakah teman-teman atau bahkan saya sendiri dengan mudah memperkirakan bagian mana saja yang akan terkena dampaknya, waktu yang diperlukan dan biaya yang diperlukan ? saya yakin tidak mudah.  itulah produk perangkat lunak (software).

Kembali lagi ke jaminan mutu perangkat lunak. Agar kita dapat membangun atau mengembangkan sebuah perangkat lunak yang berkualitas, kita harus memahami terlebih dahulu beberapa hal dibawah ini :
1. Apa itu perangkat lunak (software) ?
2. Apa itu software errors, faults dan failures ?
3. Apa itu software quality ? dan
4. Apa hubungannya software quality assurance dengan software engineering ?

mengapa kita perlu mengetahui beberapa hal diatas ? jika saya kembali menganalogikan dengan rumah, ya untuk mengatakan bahwa rumah itu bagus atau tidak, kita harus tahu terlebih dahulu :
Apa itu rumah ?
Rumah yang seperti apa sih yang disebut rumah berkualitas ?

Pada artikel diatas, ada beberapa pertanyaan yang perlu kita jawab terlebih dahulu. Berikut pertanyaannya :
1. Apa itu software ?
2. Apa itu software errors, faults dan failures ?
3. Apa itu software quality ?
4. Apa hubungan software quality assurance dengan software engineering ?

Definisi Software
Berdasarkan IEEE (1991), software adalah :
Computer programs, procedures, and possibly associated documentation and data pertaining to the operation of a computer system.
Mengacu pada definisi diatas, perangkat lunak (software) adalah
1. Program Komputer (Kode)
2. Prosedur
3. Dokumentasi, dan
4. Data

Kualitas dari masing-masing komponen diatas akan menentukan kualitas perangkat lunak. Contoh nyatanya adalah kualitas dokumentasi. Jika sebuah software dilengkapi dengan dokumentasi yang lengkap (terdapat Dokumentasi Pengembangan dan Dokumentasi Cara Penggunaan atau user manual), akan sangat memudahkan semua pihak untuk menggunakan, memperbaiki dan mengembangkan software tersebut.

Definisi Software Errors, Faults Dan Failures
Software Errors adalah error yang terjadi karena kesalahan logika atau gramatikal. Contoh dari kesalahan logik adalah ketika anda memasukan sebuah nilai, output yang dihasilkan tidak sesuai dengan yang diharapkan. Sedangkan contoh kesalahan gramatikal adalah ketika anda mengetikan syntax program yang salah.
Software Faults adalah kondisi dimana sebuah perangkat lunak gagal menjalankan fungsi tertentu.
Software Failures adalah ketidakmampuan dari sistem atau komponen untuk melakukan fungsi yang diperlukan sesuai dengan spesifikasinya.

Definisi Software Quality
Berdasarkan IEEE (1991), software quality adalah :
1. The degree to which a system, component, or process meets specified
requirements.
2. The degree to which a system, component, or process meets customer or
user needs or expectations.
Berdasarkan Pressman, software quality di definisikan sebagai  :
Conformance to explicitly stated functional and performance requirements,explicitly documented development standards, and implicit characteristics that are expected of all professionally developed software.
dari kedua definisi diatas, dapat kita simpulkan bahwa kualitas perangkat lunak (software quality) adalah perangkat lunak yang sesuai dengan : 
1. Kebutuhan pengguna (user requirement).
2. Harapan pengguna (user expectation).
3. Standar kualitas yang disepakati oleh kedua belah pihak (antara developer dan pengguna) yang tercantum pada kontrak.
Jika kita melihat kembali definisi Jaminan Mutu Perangkat Lunak (software quality assurance) yang telah disampaikan pada artikel pertama :
1. Sebuah pola yang terencana dan sistematis dari semua tindakan yang diperlukan untuk menyediakan kepercayaan yang cukup bahwa sebuah produk atau barang sesuai dengan kebutuhan teknis yang telah disusun.
2. Sekumpulan aktifitas yang dirancang untuk mengevaluasi proses dimana sebuah produk dikembangkan atau diproduksi.

disini terlihat bahwa Jaminan Mutu Perangkat Lunak (software quality assurance) bukan hanya mengenai permasalahan teknis saja. Kata “terencana” dan “sistematis” menunjukkan bahwa kegiatan pengelolaan (management) selama proses pengembangan pun terlibat. Kegiatan pengelolaan disini diperlukan agar proses pengembangan perangkat lunak dapat berjalan sesuai dengan jadwal dan anggaran yang telah ditentukan dan disepakati. Dengan kata lain, kegiatan pengelolaan tersebut harus dapat membuat proses pengembangan perangkat lunak berjalan secara efektif dan efisien.

Lalu apa hubungannya Jaminan Mutu Perangkat Lunak (software quality assurance) dengan Rekayasa Perangkat Lunak (software engineering) ?

Definisi Rekayasa Perangkat Lunak (software engineering) menurut IEEE (1991) adalah
The application of a systematic, disciplined, quantifiable approach to the development, operation and maintenance of software; that is, the application of engineering to software.
The study of approaches as in (1).

yang memiliki arti :
Sebuah penerapan yang sistematis, disiplin dan terukur untuk mengembangkan, mengoperasikan dan memelihara perangkat lunak.
Serta studi atau kajian mengenai pendekatan-pendekatan rekayasa (engineering) atas perangkat lunak (software).

Pendekatan-pendekatan sistematis yang ada pada rekayasa perangkat lunak merupakan infrastruktur penting untuk mencapai tujuan dari jaminan mutu perangkat lunak. Berdasarkan beberapa definisi diatas, maka definisi jaminan mutu perangkat lunak dapat diperluas menjadi (Galin, 2004):
A systematic, planned set of actions necessary to provide adequate confidence that the software development process or the maintenance process of a software system product conforms to established functional technical requirements as well as with the managerial requirements of keeping the schedule and operating within the budgetary confines.

yang artinya adalah :
Serangkaian tindakan sistematis dan terencana yang diperlukan untuk menyediakan kepercayaan yang cukup terhadap proses pengembangan atau proses pemeliharaan perangkat lunak yang sesuai dengan persyaratan teknis fungsional serta sesuai dengan persyaratan manajerial untuk menjaga jadwal dan anggaran.

Referensi:
http://taufiknuradi.com/2013/05/11/jaminan-mutu-perangkat-lunak-part-1-pengenalan/
http://taufiknuradi.com/2013/05/13/jaminan-mutu-perangkat-lunak-part-2/
Galin, D. 2004. Software Quality Assurance from Theory to Implementation. England: Pearson Education Limited.
Chemuturi, M. 2011. Mastering Software Quality Assurance Best Practice, Tools and Techniques for Software Developers. USA: J.Ross Publishing.
Naik, K., and Triphathy., P. 2008. Software Testing and Quality Assurance Theory and Practice. Kanada: John Wiley & Sons.

Tidak ada komentar:

Posting Komentar