Back to IF3141 Sistem Informasi

Software Quality and the Quality Triangle

Questions/Cues

  • Mengapa kualitas perangkat lunak penting dan harus “fit for purpose”?
  • Apa itu Quality Triangle dan bagaimana trade-off-nya?
  • Bagaimana ISO 8402:1994 mendefinisikan kualitas?
  • Apa perbedaan kebutuhan fungsional, non-fungsional, dan inherent qualities?
  • Mengapa membangun kualitas sejak awal lebih hemat biaya?

Reference Points

  • IF3141 Sistem Informasi — Quality & Testing (Slides 2-6)

Pentingnya Kualitas Perangkat Lunak

Kualitas perangkat lunak merupakan aspek penting dalam pengembangan sistem. Perangkat lunak yang diserahkan harus ‘fit for purpose’ (sesuai tujuan), reliable (andal), dan maintainable agar dapat memenuhi kebutuhan yang terus berubah. Untuk mencapai hal ini, perangkat lunak perlu diuji pada berbagai tahap pengembangannya untuk memastikan produk akhir memenuhi tingkat kualitas yang diinginkan.

Prinsip ekonomi kunci: selalu lebih cost-effective untuk membangun kualitas ke dalam desain dan pengembangan produk daripada memperbaiki kesalahan setelah produk selesai dibangun. Biaya perbaikan defect meningkat secara eksponensial seiring kemajuan fase SDLC. Selain itu, sistem yang berbeda memerlukan tingkat kualitas yang berbeda pula — perangkat lunak kontrol pesawat menuntut kualitas jauh lebih tinggi dibanding aplikasi game sederhana.

Quality Triangle (Segitiga Kualitas)

Saat mengembangkan sistem, selalu terjadi trade-off antara waktu (time), biaya (cost), dan ruang lingkup (scope), dan ketiga faktor ini berdampak langsung pada kualitas sistem yang dibangun. Memahami dampak perubahan ketiga faktor terhadap kualitas adalah keterampilan kunci bagi manajer pengembangan perangkat lunak ketika bernegosiasi dengan stakeholder utama.

flowchart TD
    T["Time"] --> Q["Quality"]
    C["Cost"] --> Q
    S["Scope"] --> Q
    T <-->|trade-off| C
    C <-->|trade-off| S
    S <-->|trade-off| T

Ketiga sisi segitiga saling mengompromikan; mengubah salah satu memengaruhi yang lain dan berdampak langsung pada Quality.

Ilustrasi trade-off ketika menghadapi keterlambatan:

  • Time — memperpanjang tenggat waktu, misalnya seminggu lagi. Namun ini menambah biaya, dan tekanan waktu pada developer dapat menurunkan kualitas kode.
  • Cost — menambah developer lain pada tugas tersebut. Namun developer kedua mungkin kurang berpengalaman di area spesifik, yang lagi-lagi dapat menghasilkan kode berkualitas buruk.
  • Scope — menyepakati dengan pengguna dan sponsor bahwa program yang belum lengkap tetap digunakan, dengan penerimaan terhadap jumlah defect yang lebih tinggi.

Definisi Kualitas (ISO 8402:1994)

Beberapa istilah yang sering digunakan untuk menggambarkan kualitas: ‘excellence’ (keunggulan), ‘fitness for purpose’ (kesesuaian dengan tujuan), dan ‘conformance to requirements’ (kesesuaian dengan kebutuhan).

Berdasarkan ISO 8402:1994, kualitas adalah: “The totality of features and characteristics of a product or service that bear on its ability to satisfy stated or implied needs” — keseluruhan fitur dan karakteristik produk/layanan yang berkaitan dengan kemampuannya memenuhi kebutuhan yang dinyatakan atau tersirat.

Frasa ‘implied needs’ (kebutuhan tersirat) mudah disalahtafsirkan. Contoh: kebutuhan pengguna untuk menampilkan daftar produk dapat menyiratkan bahwa produk harus ditampilkan dalam urutan tertentu, misalnya berdasarkan kategori produk, sedangkan sistem justru menampilkan produk berurutan menurut kode produk.

Karakteristik Perangkat Lunak yang Baik

Memenuhi kebutuhan fungsional (functional requirements): Sistem harus melakukan apa yang dispesifikasikan dalam dokumen kebutuhan. Contoh: jika ada kebutuhan menampilkan detail pelanggan, maka sistem harus menyediakan fitur tersebut.

Memenuhi kebutuhan non-fungsional (non-functional requirements): Mencakup karakteristik seperti reliability (keandalan), response time (waktu respons), availability (ketersediaan), ease of use (kemudahan penggunaan), dan security (keamanan).

Memiliki inherent qualities (kualitas bawaan): Mencakup karakteristik seperti maintainability, efficiency, flexibility/expandability (scalability), reusability, testability, modularity, well-documented, dan portability. Kualitas ini sering tidak terlihat oleh pengguna akhir namun krusial bagi tim pengembang dan pemelihara sistem dalam jangka panjang.

Summary

Kualitas perangkat lunak adalah aspek fundamental SDLC dimana produk harus fit for purpose, reliable, dan maintainable, dan membangun kualitas sejak desain jauh lebih hemat biaya daripada memperbaiki defect kemudian. Quality Triangle menggambarkan trade-off tak terhindarkan antara time, cost, dan scope yang berdampak langsung pada kualitas. ISO 8402:1994 mendefinisikan kualitas sebagai totalitas fitur dan karakteristik yang memenuhi stated or implied needs. Perangkat lunak yang baik memenuhi kebutuhan fungsional, non-fungsional (reliability, performa, keamanan), serta memiliki inherent qualities (maintainability, scalability, portability) — dengan tingkat kualitas yang disesuaikan menurut kekritisan tiap sistem.