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.

Model Pengembangan Standar Profesi

ACM
ACM(Association for Computing Machinery) atau Asosiasi untuk Permesinan Komputer adalah sebuah serikat ilmiah dan pendidikan computer pertama didunia yang didirikan pada tahun 1947 ACM telah menciptakan sebuah perpustakaan digital dimana ia telah membuat seluruh publikasi yang tersedia .ACM perpustakaan digital merupakan koleksi terbesar didunia informasi mengenai mesin komputasi dan berisi arsip jurnal ,majalah ,prosiding konferensi online,danisu-isu terkini ACM publikasi. Layanan online termasuk forum yang disebut Ubiquity dan TechNews mencerna,baik yang berisi informasi terbaru tentang dunia IT.

IEEE
(Institute of Electrical and Electronics Engineers) adalah sebuah organisasi profesi nirlaba yang terdiri dari banyak ahli dibidang teknik yang mempromosikan pengembangan standar-standar dan bertindak sebagai pihak yang mempercepat teknologi- teknologi baru dalam semua aspek dalam industry dan rekayasa (engineering),yang mencakup telekomunikasi,jaringankomputer,kelistrikan, antariksa, danelektronika.

Tujuan inti IEEE adalah mendorong inovasi teknologi dan kesempurnaan untuk kepentingan kemanusiaan.
•Visi IEEE adalah akan menjadi penting untuk masyarakat teknis global dan professional teknis dimana-mana dan dikenal secara universal untuk kontribusi teknologi dan teknis yang professional dalam meningkatkan kondisi perkembangan global.
Standar dalam IEEE adalah mengatur fungsi ,kemampuan dan interoperabilitas dari berbagai macam produk dan layanan yang mengubah cara orang hidup, bekerja dan berkomunikasi.
Proses pembangunan IEEE standar dapat dipecah melalui tujuh langkah dasar yaitu:
Mengamankan Sponsor,
Meminta Otorisasi Proyek,
Perakitan Kelompok Kerja,
Penyusunan Standard,
Pemungutan suara,
Review Komite,
Final Vote.

Pesaing utama ACM adalah IEEE Computer Society.
•Perbedaan antara ACM dan IEEE adalah, ACM berfokus pada ilmu komputer teoritis dan aplikasi pengguna akhir, sementara IEEE lebih memfokuskan pada masalah-masalah hardware dan standardisasi. Cara lain untuk menyatakan perbedaan yaitu ACM adalah ilmuwan komputer dan IEEE adalah untuk insinyur listrik, meskipun subkelompok terbesar adalah IEEE Computer Society.
Posisi dalam Dunia IT
System Analyst
Analyst Programmer
ERP (enterprise resource planning) Consultant
Systems Programmer/ Software Engineer
Web Designer
Systems Engineer
Tester
Database Administrator
Manager
IT Manager
Project Manager
Account Manager

Deskripsi kerja profesi IT
1. Analyst Programmer
_ Merancang, membuat ‘code’ (program) dan menguji program untuk mendukung perencanaan pengembangan aplikasi system
2. Web Designer
_ Mengembangkan rancangan inovatif aplikasi web-based beserta isi dari aplikasi tersebut Systems Programmer
3. Software Engineer
_ Terbiasa dengan pengembangan software ‘lifecycles’ .
_ Memiliki ketrampilan dalam men-desain aplikasi
_ menyiapkan program menurut spesifikasi
_ dokumentasi /’coding’
_ pengujian.
4. I T Executive
_ Memelihara kecukupan, standard & kesiapan systems/infrastructure untuk memastikan pengoperasiannya dapat efektif & efisien.
_ Menerapkan prosedur IT & proses untuk memastikan data terproteksi secara maksimum
5. IT Administrator
_ Menyediakan implementasi & administrasi yang meliputi Local Area Network (LAN), Wide Area Network (WAN) dan koneksi dialup,
6. Network Administrator
_ Mengurusi & mengoperasi jaringan LAN maupunWAN, manajemen sistem serta dukungan terhadap perangkat kerasnya
7. Database Administrator
_ Bertanggung jawab Untuk administrasi & pemeliharaan teknis yang menyangkut perusahaan dalam pembagian sistem database.
8. Systems Engineer
_ Menyediakan rancangan sistem & konsultasi terhadap pelanggan.
_ Memberikan respon terhadap permintaan technical queries serta dukungannya.
_ Termasuk melakukan pelatihan teknis ke pelanggan & IT administrator.
9. Network Support Engineer
_ Melaksanakan komunikasi & analisa sistem networking
_ Mendisain perencanaan untuk integrasi. Mendukung jaringan pada internet, intranet & extranet.
_ Menganalisa & ikut ambil bagian dalam pengembangan standardisasi keamanan & implementasi mengendalikan untuk keamanan LAN & WAN
10. Helpdesk Analyst
_ Me-’remote’ permasalahan troubleshoot melalui email/telephone dengan cara mengambil alih kendali para pemakai via LAN/WAN koneksi.
_ Perencanaan, mengkoordinir & mendukung proses bisnis, sistem & end-users dalam menyelesaikan masalah yang mereka hadapi.

Standar Profesi di Indonesia Dan Regional

Berdasarkan perkembangan Teknologi Informasi secara umum, serta kebutuhan di Indonesia serta dalam upaya mempersiapkan diri untuk era perdagangan global. Beberapa usulan dituangkan dalam bab ini. Usulan-usulan tersebut disejajarkan dengan kegiatan SRIG-PS (SEARCC), dan IPKIN selaku perhimpunan masyarakat komputer dan informatika di Indonesia. Juga tak terlepas dari agenda pemerinta melalui Departemen terkait.


Gambar 1. Implementasi Standardisasi Profesi bidang TI di Indonesia
Langkah-langkah yang diusulan dengan tahapan-tahapan sebagai beriku :
Penyusunan kode etik profesiolan Teknologi Infomrasi
Penyusunan Klasifikasi Pekerjaan (Job) Teknologi Informasi di Indonesia
Penerapanan mekanisme sertifikasi untuk profesional TI
Penerapan sistem akreditasi untuk Pusat Pelatihan dalam upaya Pengembangan Profesi
Penerapan mekanisme re-sertifikasi
Promosi Standard Profesi Teknologi InformasiBeberapa rencana kegiatan SRIG-PS pada masa mendatang dalam upaya memasyarakatkan model standardisasi profesi dalam dunia TI adalah :
Distribusi dari manual SRIG-PS di SEARCC”96 di Bangkok.pada bulan Juli 1996.
Promosi secara ekstensif oleh para anggota dari 1996-1997
Presentasi tiap negara yang telah benar-benar mengimplementasikan standard yang berdasarkan model SRIG-PS, pada SEARCC’97 di New Delhi. Ini merupakan penutupan phase 2 dari SRIG-PS.
Untuk memasyarakatkan stardisasi profesi dan sistem sertiikasi ini, maka harus dilakukan lebih banyak promosi dalam penyebaran standard kompetensi. Promosi akan dilakukan melalui radio, majalah, atau bahkan TV. Terlebih lagi, adalah penting untuk mempromosikan standard ini ke pada institusi pendidikan, teurtama Bagian Kurikulum, karena pendidikan Teknologi Informasi harus disesuaikan agar cocok dengan standard yang akan diterapkan dalam industri.
Rencana strategis dan operasional untuk mempromosikan implementasi dari rekomendasi SRIG-PS di negara-negara anggota SEARCC.



Gambar 2. Promosi model SRIG-PS
Promosi ini memiliki berbagai sasaran, pada tiap sasaran tujuan yang ingin dicapai adalah berbeda-beda.
Pemerintah, untuk memberi saran kepada pemerintah, dan pembuat kebijaksanaan dalam bidang TI dalam usaha pengembangan sumber daya manusia khususnya bidang TI.
Pemberi Kerja, untuk membangkitkan kesadaran di antara para pemberi kerja tetang nilai-nilai dari standard profesional dalam meningkatkan kualitas profesional TI.
Profesional TI, untuk mendorong agar profesional TI, dari negara anggota melihat nilai-nilai snatndar dalam profesi dak karir mereka.
Insitusi dan Penyusun kebijaksanaan Pendidikan, untuk memberi saran pada pembentukan kurikulum agar dapat memenuhi kebutuhan dan standard profesional di regional ini dalam Teknologi Informasi.
Masyarakat Umum, untuk menyadarkan umum bahwa Standard Profesional Regional adalah penting dalam menghasilkan produk dan jasa yang berkualitas.
Untuk mempromosikan model standardisasi dalam dunia TI ini, SEARCC memiliki berbagai perencanaan kampanye antara lain :
Publikasi dari Standard Profesional Regional diterbitkan di seluruh negara anggota
Presentasi secara formal di tiap negara anggota.
Membantu implementasi standard di negara-negara anggota
Memonitor pelaksanaan standard melalui Himpunan/Ikatan nasional
Melakukan evaluasi dan pengujian
Melakukan perbaikan secara terus menerus
Penggunaan INTERNET untuk menyebarkan informasi mengenai standard ini.
Untuk mengimplementasi promosi di Phase 2, SRIG-PS memperoleh dana bantuan yang akan digunakan untuk :
Biaya publikasi : disain, percetakan dan distribusi
Presentasi formal di negara anggota
Membantu implementasi standar di negara anggota
Pertemuan untuk mengkonsolidasi, memonitor, dan bertukar pengalaman
Adalah penting untuk menyusun WEBpage mengenai Standardisasi Profesi pada Teknologi Informasi. WEBpage ini akan memberikan informasi mengenai model SRIG-PS dan model standard di Indonesia.
Pembentukan Standar Profesi Teknologi Informasi di Indonesia
Dalam memformulasikan standard untuk Indonesia, suatu workshop sebaiknya diselenggarakan oleh IPKIN. Partisipan workshop tersebut adalah orang-orang dari industri, pendidikan, dan pemerintah. Workshop ini diharapkan bisa memformulasikan deskripsi pekerjaan dari klasifikasi pekerjaan yang belum dicakup oleh model SRIG-PS, misalnya operator. Terlebih lagi, workshop tersebut akan menyesuaikan model SRIG-PS dengan kondisi Indonesia dan menghasilkan model standard untuk Indonesia. Klasifikasi pekerjaan dan deskripsi pekerjaan ini harus diperluas dan menjadi standard kompetensi untuk profesioanal dalam Teknologi Informasi
Persetujuan dan pengakuan dari pemerintah adalah hal penting dalam pengimplementasian standard di Indonesia. Dengan demikian, setelah standard kompetensi diformulasikan, standard tersebut dapat diajukan kepada kepada Pemerintah melalui Menteri Tenaga Kerja. Selain itu standard tersebut juga sebaiknya harus diajukan kepada Menteri Pendidikan dengan tujuan membantu pembentukan kurikulum Pendidikan Teknologi Informasi di Indonesia dan untuk menciptakan pemahaman dalam pengembangan model sertifikasi.
Untuk melengkapi standardisasi, IPKIN sudah perlu menetapkan Kode Etik untuk Profesi Teknologi Informasi. Kode Etik IPKIN akan dikembangkan dengan mengacu pada Kode Etik SEARCC dan menambahkan pertimbangan-pertimbangan yang sesuai dengan kondisi di Indonesia.
Selanjutnya, mekanisme sertifikasi harus dikembangkan untuk mengimplementasikan standard kompetensi ini. Beberapa cara pendekatan dari negara lain harus dipertimbangkan. Dengan demikian, adalah penting untuk mengumpulkan mekanisme standard dari negara-negara lain sebelum mengembangkan mekanisme sertifikasi di Indonesia.


Gambar 3.Model Interaksi Sistem Sertifikasi Profesional TI
Sertifikasi sebaiknya dilaksanakan oleh IPKIN sebagai Asosiasi Komputer Indonesia. Pemerintah diharapkan akan mengakui sertifikat ini, dan memperkenalkan dan mendorong implementasinya di industri. Dalam mengimplementasikan mekanisme sertifikasi, beberapa badan perlu dibentuk
Badan Penguji harus dibentuk dan institusi pendidikan sebaiknya dilibatkan dalam mekanisme ini. Hal ini perlu karena institusi pendidikan memiliki pengalaman dalam memberikan ujian.
Panitia Persiapan Ujian, mempersiakan kebutuhan administrasi, pendaftaran, penjadwalan, pengumpulan maeri ujian.
Pelaksana Ujian, mempersiapkan tempat ujian dan melaksanakan ujian. Menyerahkan hasil ujian kepada Badan Penguji untuk diperiksa, mengolah hasil dan memberikan hasil kepada IPKIN
Pelaksana akreditasi training centre, untuk kebutuhan resertifikasi maka perlu dibentuk badan yang melakukan penilaian terhadap pelaksana pusat pelatihan, tetapi hal ini baru dilaksanakan setelah 5 tahun sistem sertifikasi berjalan,.
Pelaksana resertifikasi, hal ini mungkin baru dapat dilaksanakan setelah 5 tahun setelah sistem sertifikasi berjalan dengan baik
Kerja sama antara institusi terkait dikoordinasikan. IPKIN sebagai Asosiasi Profesi dapat memainkan peranan sebagai koordinator.
Dalam pembentukan mekanisme sertifikasi harus diperhatikan beberapa hal yang dapat dianggap sebagai kriteria utama:
Sistem sertifikasi sebaiknya kompatibel dengan pembagian pekerjaan yang diakui secara regional.
Memiliki berbagai instrument penilaian, misal test, studi kasus, presentasi panel, dan lain-lain.
Harus memiliki mekanisme untuk menilai dan memvalidasi pengalaman kerja dari para peserta, karena kompetensi profesional juga bergantung dari pengalaman kerja pada bidang tersebut.
Harus diakui pada negara asal.
Harus memiliki silabus dan materi pelatihan, yang menyediakan sarana untuk mempersiapkan diri untuk melakukan ujian sertifikasi tersebut.
Sebaiknya memungkinkan untuk dilakukan re-sertifikasi
Sebagai kriteria tambahan adalah :
Terintegrasi dengan Program Pengembangan Profesional
Dapat dilakukan pada region tersebut.
Dalam hal sertifikasi ini SEARCC memiliki peranan dalam hal :
Menyusun panduan
Memonitor/dan bertukar pengalaman
Mengakreditasi sistem sertifikasi, agar mudah diakui oleh negara lain anggota SEARCC
Mengimplementasi sistem yang terakreditasi tersebut

http://bahasapersatuan.wordpress.com/2011/04/20/standar-profesi-di-indonesia-dan-regional/
http://kelompoktighaka5c.blogspot.com/2009/10/standard-profesi-teknologi-informasi.html
http://openstorage.gunadarma.ac.id/~mwiryana/IPKIN/SRIG-PS/st_page6.html
http://butuhrestu.blogspot.com/2012/04/bab-x-model-pengembangan-standar.html