RSS
Write some words about you and your blog here

Sabtu, 20 Maret 2010

Software Quality Assurance

Software Quality Assurance
(Jaminan Kualitas Perangkat Lunak)

Software  Quality  Assurance  (SQA)  diaplikasikan  secara  menyeluruh  pada  proses pengembangan software.  SQA  meliputi  :  (1)  analisis,  perancangan,  pengkodean,  dan  metode  serta  peralatan  ujicoba,  (2) Tinjauan  ulang  teknikal  secara  formal  yang diaplikasikan  pada  setiap  tahapan  pengembangan  software,  (3) strategi  ujucoba  dengan  banyak  tahapan  (multitiered),  (4)  pengawasan  terhadap  dokumentasi  software  dan perubahan yang dialaminya,  (5) suatu prosedur untuk menjamin pemenuhan standar pengembangan software (jika ada), (6) mekanisme pengukuran dan laporan .   Setiap pengembang software pasti setuju jika dikatakan bahwa kualitas software merupakan salah satu tujuan  yang  penting.   Banyak  definisi mengenai  kualitas  software,  tetapi  disini  kualitas  software  didefinisikan sebagai  :  penyesuaian  fungsional  yang  ditetapkan  secara  eksplisit  dan  kebutuhan  performa,  standar pengembangan  yang  terdokumentasi  secara  eksplisit,  dan  karakteristik  implisit  yang  diharapkan  dari  seluruh software yang dikembangkan secara professional.   Definisi diatas menjelaskan 3 hal penting, yaitu : 1.  Kebutuhan software merupakan pondasi/dasar dari kualitas yang akan diukur. Sedikitnya penyesuaian terhadap kebutuhan, maka semakin tidak berkualitas. 2.  Standar  yang  dispesifikasikan  mendefinisikan  sekumpulan  kriteria  pengembangan  yang  memandu pengembangan  software.  Jika  kriteria  tidak  disertakan,  maka  dapat  dipastikan  hasil  akhir  akan berkualitas rendah. 3.  Terdapat  kebutuhan  implisit  (implicit  requirements)  yang  terkadang  tidak  disebutkan  (misalkan, keinginan  untuk  kemampuan  pemeliharaan  yang  mudah).  Jika  software  menyesuaikan  kepada kebutuhan eksplisit, tetapi tidak kepada kebutuhan implisit, maka kualitas software akan dipertanyakan.   Faktor-faktor kualitas software(Software quality factors) Faktor-faktor yang dapat mempengaruhi kualitas software dibagi menjadi 2 kategori :  1.  Faktor-faktor yang dapat diukur secara langsung (misalkan : error ) 2.  Faktor-faktor yang dapat diukur secara tidak langsung (misalkan : usability dan maintainability).  Menurut  McCall  terdapat  3  aspek  penting  dari  suatu  produk  software,  yaitu  :  karakteristik  operasional, kemampuan perubahan ketika software sudah berjalan, dan kemampuan beradaptasi terhadap lingkungan baru. Ketiga aspek tersebut dapat dilihat pada gambar berikut : 
Berdasarkan gambar diatas, McCall menyediakan beberapa dekripsi yaitu :
1.       Correctness  (kebenaran),  tingkat  pemenuhan  program  terhadap  kebutuhan  yang dispesifikasikan  dan memenuhi tujuan/ misi konsumer
2.       Reliability  (Keandalan),  tingkat  kemampuan  program  yang  diharapkan  dapat  menampilkan  fungsi  yang dimaksud dengan presisi yang ditetapkan. 
3.       Efficiency  (efisiensi),  jumlah  sumberdaya  yang  diproses  dan  kode  yang  diperlukan  oleh  program  untuk melaksanakan fungsi tersebut
4.       Integrity (Integritas), tingkat kemampuan pengawasan akses terhadap data atau software oleh orang-orang tertentu.
5.       Usability,  usaha  yang  diperlukan  untuk  mempelajari,  mengoperasikan,  menyiapkan  masukan  dan mengartikan keluaran oleh program
6.       Maintainability, usaha yang diperlukan untuk menetapkan dan memperbaiki kesalahan dalam program.
7.       Flexibility, usaha yang diperlukan untuk memodifikasi program operasional
8.       Testability, usaha yang diperlukan untuk menguji program untuk memastikan bahwa program melaksanakan fungsi yang ditetapkan
9.       Portability, usaha yang diperlukan untuk memindahkan program dari hardware/ lingkungan sistem software tertentu ke yang lainnya.
10.   Reusability,  tingkat  kemampuan  program/  bagian  dari  program  yang  dapat  dipakai  ulang  dalam  aplikasi lainnya, berkaitan dengan paket dan lingkup dari fungsi yang dilakukan oleh program
11.   Interoperability, usaha yang diperlukan untuk menggabungkan satu sistem dengan yang lainnya.
Untuk  membentuk  pengukuran  langsung  mengenai  faktor-faktor  kualitas  tidaklah  mudah.  Terdapat beberapa  ukuran  (metric)  yang  didefinisikan  dan  penilaiannya  diukur  secara  objektif.  Pengukuran  biasanya dalam  bentuk  checklist  dengan  menggunakan  skala  0-10.  McCall  menetapkan  beberapa  pengukuran  yang dapat digunakan, diantaranya :
1.       Auditability, kemudahan yaitu penyesuaian terhadap standar yang dapat diperiksa.
2.       Accuracy, ketepatan perhitungan dan kontrol 
3.       Communication commonality, tingkatan dimana interface standar, protokol dan bandwidth digunakan
4.       Completenesss, tingkatan dimana implementasi lengkap dari fungsi yang dibutuhkan telah tercapai
5.       Conciseness, kepadatan program dalam jumlah baris kode
6.       Consistency,  penggunaan  rancangan  dan  teknik  dokumentasi  dalam  satu  bentuk  diseluruh  proyek pengembangan software
7.       Data commonality, penggunaan struktur dan tipe data standar diseluruh program
8.       Error tolerance, kerusakan yang muncul ketika program menemukan kesalahan/kegagalan
9.       Execution efficiency, performa run-time suatu program
10.   Expandability, tingkatan dimana rancangan arsitektural, data atau prosedur dapat dikembangkan
11.   Generality, lingkup aplikasi potensial dari suatu komponen program
12.   Hardware independece, tingkatan dimana software dipisahkan dari hardware yang mengoperasikannya
13.   Instrumentation,  tingkatan  dimana  pengawasan  program  memiliki  operasi  tersendiri  dan mengidentifikasikesalahan yang terjadi
14.   Modularity, kemandirian fungsional dari suatu komponen program
15.   Operability, kemudahan pengoperasian program
16.   Security,  ketersediaan mekanisme yang mengontrol atau menproteksi program dan data
17.   Self-documentation, tingkatan dimana kode sumber menyediakan dokumentasi yang berarti
18.   Simplicity,  tingkatan dimana program dapat dimengerti tanpa kesulitan
19.   Software system independence, tingkatan dimana program mandiri terhadap feature bahasa pemrograman nonstandar, karakteristik sistem operasi, dan batasan-batasan lingkungan lainnya
20.   Traceability,  kemampuan  penelusuran  ulang  kepada  kebutuhan  mengenai  representasi  rancangan  atau komponen program yang sesungguhnya
21.    Training, tingkatan dimana software membantu menerapkan sistem oleh user yang baru.
Software Quality Assurance
                Jaminan kualitas merupakan aktivitas mendasar untuk setiap bisnis yang menghasilkan produksi yang digunakan  oleh  orang  lain. Diawal  abad  ke-20,  jaminan  kualitas merupakan  tanggungjawab  yang  ditawarkan oleh produsen yang membuat suatu produk. Jaminan kualitas secara formal diperkenalkan pertamakalinya oleh Bell  Laboratory  pada  tahun  1916  dan  berkembang  cepat  serta  meluas  keseluruh  dunia.  Disaat  ini,  setiap perusahaan telah memiliki mekanisme untuk menentukan kualitas dari produknya. 
Sejarah  jaminan kualitas dalam pengembangan perangkat  lunak sejajar/paralel dengan sejarah dalam pembuatan hardware. Diawal  tahun 1950 dan 1960 qualitas perangkat  lunak merupakan  tanggung  jawab dari  pembuat program. Standar untuk jaminan kualitas perangkat lunak diperkenalkan dalam kontrak pengembangan perangkat lunak militer selama tahun 1970 dan mulai berkembang secara pesat secara komersil.
                SQA merupakan pola aksi yang  terencana dan sistematis yang dibutuhkan untuk memastikan kualitas suatu  software.   Lingkup dari SQA dalam software  sangat beragam  , mencakup  : pembuat software, manajer proyek , customer, sales peoples, dan orang-orang yang dilayani dalam SQA. Orang-orang yang melaksanakan SQA harus dapat melihat software dari sudut pandang konsumen.
Aktivitas-aktivitas SQA (SQA Activities)
SQA terdiri dari berbagai jenis aktivitas yang terhubung dengan 7 aktivitas utama, yaitu :
1.       Aplikasi metode-metode teknikal (Application of technical methods)
Kualitas  software  didesain  kedalam  produk  atau  sistem.  SQA  pada  kenyataannya  dimulai  dengan sekumpulan metode  teknikal dan  tool  yang membantu analis untuk mencapai  spesifikasi dengan  kualitas yang tinggi dan para perancang membangun desain yang berkualitas tinggi.  
2.       Mengadakan review teknikal formal (conduct of formal technical reviews)
Ketika spesifikasi (atau prototype) dan desain telah dibuat, maka masing-masing harus di perkirakan untuk kualitas. Aktivitas  utama  yang memenuhi  penaksiran  kualitas  adalah  formal  technical  review  (FTR). FTR merupakan pertemuan khusus yang diadakan oleh staff teknikal dengan tujuan untuk menemukan masalah. Dalam berbagai  situasi,  review merupakan hal  yang efektif  seperti ujicoba dalam mengungkap  kerusakan dalam software.
3.       Ujicoba perangkat lunak (software testing)
Ujicoba software mengkombinasikan strategi beberapa tahapan/langkah dengan sejumlah desain metode uji kasus  yang membantu memastikan  pendeteksian  kesalahan  yang  efektif.  Banyak  pengembang  software menggunakan ujicoba software sebagai jaminan kualitas. 
4.       Pelaksanaan standar (enforcement of standards)
Tingkatan dimana prosedur dan standar formal diaplikasikan dalam proses pengembangan software sangat bervariasi  antara  satu  perusahaan  dengan  yang  lainnya.  Dalam  banyak  kasus,  standar  ditentukan  oleh konsumen  atau  pembuat  kebijakan.  Jika  standar  disediakan(secara  formal  tertulis)  maka  aktivitas  SQA harus dilaksanakan untuk memastikan standar-standar tersebut dilakukan. 
5.       Pengawasan terhadap perubahan (control of change)
Ancaman  utama  dalam  kualitas  software  adalah  perubahan  yang  dilakukan  terhadap  sumber.  Setiap perubahan  yang dilakukan pada  software  sangat potensial untuk menghasilkan  kesalahan atau membuat efek  sampingan  yang mengakibatkan  kesalahan.  Proses  pengawasan  perubahan memberikan  kontribusi secara langsung terhadap kualitas software dengan permintaan perubahan yang diformalkan. Pengawasan perubahan  diaplikasikan  selama  pengembangan  software  dan  setelahnya,  atau  selama  tahapan pemeliharaan software.
6.       Pengukuran (measurement)
Pengukuran  (measurement) merupakan  aktivitas  yang melengkapi  setiap  bidang pengembangan. Tujuan utama  dari SQA  adalah  untuk menelusuri  kualitas  software  dan memperkirakn  pengaruh  dari  perubahan secara metodologi maupun prosedur pada peningkatan kualitas software. Untuk itu, ukuran-ukuran software (software metrics) harus dikumpulkan.
7.       Penyimpanan catatan dan laporan (record keeping and reporting)
Penyimpanan  catatan  dan  perekaman  (record  keeping  and  recording)  pada  SQA menyediakan  prosedur untuk mengumpulkan  dan  penyebaran  informasi  SQA. Hasil  dari  review,  audit,  pengawasan  perubahan, ujicoba,  dan  aktivitas  SQA  lainnyaharus  menjadi  bagian  dari  record  history    untuk  proyek  dan  harus disebarkan untuk staff pengembangan untuk pengetahuan. 

 

Tidak ada komentar:

Posting Komentar

Software Quality Assurance
(Jaminan Kualitas Perangkat Lunak)

Software  Quality  Assurance  (SQA)  diaplikasikan  secara  menyeluruh  pada  proses pengembangan software.  SQA  meliputi  :  (1)  analisis,  perancangan,  pengkodean,  dan  metode  serta  peralatan  ujicoba,  (2) Tinjauan  ulang  teknikal  secara  formal  yang diaplikasikan  pada  setiap  tahapan  pengembangan  software,  (3) strategi  ujucoba  dengan  banyak  tahapan  (multitiered),  (4)  pengawasan  terhadap  dokumentasi  software  dan perubahan yang dialaminya,  (5) suatu prosedur untuk menjamin pemenuhan standar pengembangan software (jika ada), (6) mekanisme pengukuran dan laporan .   Setiap pengembang software pasti setuju jika dikatakan bahwa kualitas software merupakan salah satu tujuan  yang  penting.   Banyak  definisi mengenai  kualitas  software,  tetapi  disini  kualitas  software  didefinisikan sebagai  :  penyesuaian  fungsional  yang  ditetapkan  secara  eksplisit  dan  kebutuhan  performa,  standar pengembangan  yang  terdokumentasi  secara  eksplisit,  dan  karakteristik  implisit  yang  diharapkan  dari  seluruh software yang dikembangkan secara professional.   Definisi diatas menjelaskan 3 hal penting, yaitu : 1.  Kebutuhan software merupakan pondasi/dasar dari kualitas yang akan diukur. Sedikitnya penyesuaian terhadap kebutuhan, maka semakin tidak berkualitas. 2.  Standar  yang  dispesifikasikan  mendefinisikan  sekumpulan  kriteria  pengembangan  yang  memandu pengembangan  software.  Jika  kriteria  tidak  disertakan,  maka  dapat  dipastikan  hasil  akhir  akan berkualitas rendah. 3.  Terdapat  kebutuhan  implisit  (implicit  requirements)  yang  terkadang  tidak  disebutkan  (misalkan, keinginan  untuk  kemampuan  pemeliharaan  yang  mudah).  Jika  software  menyesuaikan  kepada kebutuhan eksplisit, tetapi tidak kepada kebutuhan implisit, maka kualitas software akan dipertanyakan.   Faktor-faktor kualitas software(Software quality factors) Faktor-faktor yang dapat mempengaruhi kualitas software dibagi menjadi 2 kategori :  1.  Faktor-faktor yang dapat diukur secara langsung (misalkan : error ) 2.  Faktor-faktor yang dapat diukur secara tidak langsung (misalkan : usability dan maintainability).  Menurut  McCall  terdapat  3  aspek  penting  dari  suatu  produk  software,  yaitu  :  karakteristik  operasional, kemampuan perubahan ketika software sudah berjalan, dan kemampuan beradaptasi terhadap lingkungan baru. Ketiga aspek tersebut dapat dilihat pada gambar berikut : 
Berdasarkan gambar diatas, McCall menyediakan beberapa dekripsi yaitu :
1.       Correctness  (kebenaran),  tingkat  pemenuhan  program  terhadap  kebutuhan  yang dispesifikasikan  dan memenuhi tujuan/ misi konsumer
2.       Reliability  (Keandalan),  tingkat  kemampuan  program  yang  diharapkan  dapat  menampilkan  fungsi  yang dimaksud dengan presisi yang ditetapkan. 
3.       Efficiency  (efisiensi),  jumlah  sumberdaya  yang  diproses  dan  kode  yang  diperlukan  oleh  program  untuk melaksanakan fungsi tersebut
4.       Integrity (Integritas), tingkat kemampuan pengawasan akses terhadap data atau software oleh orang-orang tertentu.
5.       Usability,  usaha  yang  diperlukan  untuk  mempelajari,  mengoperasikan,  menyiapkan  masukan  dan mengartikan keluaran oleh program
6.       Maintainability, usaha yang diperlukan untuk menetapkan dan memperbaiki kesalahan dalam program.
7.       Flexibility, usaha yang diperlukan untuk memodifikasi program operasional
8.       Testability, usaha yang diperlukan untuk menguji program untuk memastikan bahwa program melaksanakan fungsi yang ditetapkan
9.       Portability, usaha yang diperlukan untuk memindahkan program dari hardware/ lingkungan sistem software tertentu ke yang lainnya.
10.   Reusability,  tingkat  kemampuan  program/  bagian  dari  program  yang  dapat  dipakai  ulang  dalam  aplikasi lainnya, berkaitan dengan paket dan lingkup dari fungsi yang dilakukan oleh program
11.   Interoperability, usaha yang diperlukan untuk menggabungkan satu sistem dengan yang lainnya.
Untuk  membentuk  pengukuran  langsung  mengenai  faktor-faktor  kualitas  tidaklah  mudah.  Terdapat beberapa  ukuran  (metric)  yang  didefinisikan  dan  penilaiannya  diukur  secara  objektif.  Pengukuran  biasanya dalam  bentuk  checklist  dengan  menggunakan  skala  0-10.  McCall  menetapkan  beberapa  pengukuran  yang dapat digunakan, diantaranya :
1.       Auditability, kemudahan yaitu penyesuaian terhadap standar yang dapat diperiksa.
2.       Accuracy, ketepatan perhitungan dan kontrol 
3.       Communication commonality, tingkatan dimana interface standar, protokol dan bandwidth digunakan
4.       Completenesss, tingkatan dimana implementasi lengkap dari fungsi yang dibutuhkan telah tercapai
5.       Conciseness, kepadatan program dalam jumlah baris kode
6.       Consistency,  penggunaan  rancangan  dan  teknik  dokumentasi  dalam  satu  bentuk  diseluruh  proyek pengembangan software
7.       Data commonality, penggunaan struktur dan tipe data standar diseluruh program
8.       Error tolerance, kerusakan yang muncul ketika program menemukan kesalahan/kegagalan
9.       Execution efficiency, performa run-time suatu program
10.   Expandability, tingkatan dimana rancangan arsitektural, data atau prosedur dapat dikembangkan
11.   Generality, lingkup aplikasi potensial dari suatu komponen program
12.   Hardware independece, tingkatan dimana software dipisahkan dari hardware yang mengoperasikannya
13.   Instrumentation,  tingkatan  dimana  pengawasan  program  memiliki  operasi  tersendiri  dan mengidentifikasikesalahan yang terjadi
14.   Modularity, kemandirian fungsional dari suatu komponen program
15.   Operability, kemudahan pengoperasian program
16.   Security,  ketersediaan mekanisme yang mengontrol atau menproteksi program dan data
17.   Self-documentation, tingkatan dimana kode sumber menyediakan dokumentasi yang berarti
18.   Simplicity,  tingkatan dimana program dapat dimengerti tanpa kesulitan
19.   Software system independence, tingkatan dimana program mandiri terhadap feature bahasa pemrograman nonstandar, karakteristik sistem operasi, dan batasan-batasan lingkungan lainnya
20.   Traceability,  kemampuan  penelusuran  ulang  kepada  kebutuhan  mengenai  representasi  rancangan  atau komponen program yang sesungguhnya
21.    Training, tingkatan dimana software membantu menerapkan sistem oleh user yang baru.
Software Quality Assurance
                Jaminan kualitas merupakan aktivitas mendasar untuk setiap bisnis yang menghasilkan produksi yang digunakan  oleh  orang  lain. Diawal  abad  ke-20,  jaminan  kualitas merupakan  tanggungjawab  yang  ditawarkan oleh produsen yang membuat suatu produk. Jaminan kualitas secara formal diperkenalkan pertamakalinya oleh Bell  Laboratory  pada  tahun  1916  dan  berkembang  cepat  serta  meluas  keseluruh  dunia.  Disaat  ini,  setiap perusahaan telah memiliki mekanisme untuk menentukan kualitas dari produknya. 
Sejarah  jaminan kualitas dalam pengembangan perangkat  lunak sejajar/paralel dengan sejarah dalam pembuatan hardware. Diawal  tahun 1950 dan 1960 qualitas perangkat  lunak merupakan  tanggung  jawab dari  pembuat program. Standar untuk jaminan kualitas perangkat lunak diperkenalkan dalam kontrak pengembangan perangkat lunak militer selama tahun 1970 dan mulai berkembang secara pesat secara komersil.
                SQA merupakan pola aksi yang  terencana dan sistematis yang dibutuhkan untuk memastikan kualitas suatu  software.   Lingkup dari SQA dalam software  sangat beragam  , mencakup  : pembuat software, manajer proyek , customer, sales peoples, dan orang-orang yang dilayani dalam SQA. Orang-orang yang melaksanakan SQA harus dapat melihat software dari sudut pandang konsumen.
Aktivitas-aktivitas SQA (SQA Activities)
SQA terdiri dari berbagai jenis aktivitas yang terhubung dengan 7 aktivitas utama, yaitu :
1.       Aplikasi metode-metode teknikal (Application of technical methods)
Kualitas  software  didesain  kedalam  produk  atau  sistem.  SQA  pada  kenyataannya  dimulai  dengan sekumpulan metode  teknikal dan  tool  yang membantu analis untuk mencapai  spesifikasi dengan  kualitas yang tinggi dan para perancang membangun desain yang berkualitas tinggi.  
2.       Mengadakan review teknikal formal (conduct of formal technical reviews)
Ketika spesifikasi (atau prototype) dan desain telah dibuat, maka masing-masing harus di perkirakan untuk kualitas. Aktivitas  utama  yang memenuhi  penaksiran  kualitas  adalah  formal  technical  review  (FTR). FTR merupakan pertemuan khusus yang diadakan oleh staff teknikal dengan tujuan untuk menemukan masalah. Dalam berbagai  situasi,  review merupakan hal  yang efektif  seperti ujicoba dalam mengungkap  kerusakan dalam software.
3.       Ujicoba perangkat lunak (software testing)
Ujicoba software mengkombinasikan strategi beberapa tahapan/langkah dengan sejumlah desain metode uji kasus  yang membantu memastikan  pendeteksian  kesalahan  yang  efektif.  Banyak  pengembang  software menggunakan ujicoba software sebagai jaminan kualitas. 
4.       Pelaksanaan standar (enforcement of standards)
Tingkatan dimana prosedur dan standar formal diaplikasikan dalam proses pengembangan software sangat bervariasi  antara  satu  perusahaan  dengan  yang  lainnya.  Dalam  banyak  kasus,  standar  ditentukan  oleh konsumen  atau  pembuat  kebijakan.  Jika  standar  disediakan(secara  formal  tertulis)  maka  aktivitas  SQA harus dilaksanakan untuk memastikan standar-standar tersebut dilakukan. 
5.       Pengawasan terhadap perubahan (control of change)
Ancaman  utama  dalam  kualitas  software  adalah  perubahan  yang  dilakukan  terhadap  sumber.  Setiap perubahan  yang dilakukan pada  software  sangat potensial untuk menghasilkan  kesalahan atau membuat efek  sampingan  yang mengakibatkan  kesalahan.  Proses  pengawasan  perubahan memberikan  kontribusi secara langsung terhadap kualitas software dengan permintaan perubahan yang diformalkan. Pengawasan perubahan  diaplikasikan  selama  pengembangan  software  dan  setelahnya,  atau  selama  tahapan pemeliharaan software.
6.       Pengukuran (measurement)
Pengukuran  (measurement) merupakan  aktivitas  yang melengkapi  setiap  bidang pengembangan. Tujuan utama  dari SQA  adalah  untuk menelusuri  kualitas  software  dan memperkirakn  pengaruh  dari  perubahan secara metodologi maupun prosedur pada peningkatan kualitas software. Untuk itu, ukuran-ukuran software (software metrics) harus dikumpulkan.
7.       Penyimpanan catatan dan laporan (record keeping and reporting)
Penyimpanan  catatan  dan  perekaman  (record  keeping  and  recording)  pada  SQA menyediakan  prosedur untuk mengumpulkan  dan  penyebaran  informasi  SQA. Hasil  dari  review,  audit,  pengawasan  perubahan, ujicoba,  dan  aktivitas  SQA  lainnyaharus  menjadi  bagian  dari  record  history    untuk  proyek  dan  harus disebarkan untuk staff pengembangan untuk pengetahuan.