Minggu, 06 Desember 2009

Trend Kesalahan Software Saat Ini

Abstrak
Software merupakan hasil karya manusia yang tidak akan luput dari kesalahan. Software sudah banyak dipergunakan dalam berbagai keperluan hidup manusia sehingga manusia juga sering merasakan akibat yang ditimbulkan akibat kesalahan software. Apa penyebab utama kesalahan software pada saat ini?


1. Pendahuluan
Manusia merupakan makhluk yang tidak luput dari kesalahan, maka demikian pula hasil karya yang dihasilkan tidak akan luput dari kesalahan, termasuk software. Jika kita amati, hampir semua software yang berjalan pada Personal Computer (PC) memiliki kesalahan yang sering disebut bug. Tidak hanya pada software-software yang dibuat oleh perorangan, namun bug juga dapat ditemui pada software-software yang dibuat oleh perusahaan software yang besar bahkan terkenal.

Banyak pihak, termasuk pengguna software menganggap hal ini adalah hal yang wajar dan biasa. Umumnya pihak pengembang software akan memberikan perbaikan kepada pengguna segera setelah informasi bug tersebut disampaikan kepada mereka. Karena secara sepintas kesalahan/bug tersebut tidak memberikan kerugian yang berarti bagi pengguna, maka kesalahan software tersebut akan dianggap hal yang wajar dan biasa.

Namun kesalahan software bisa menyebabkan kejadian yang sangat merugikan pengguna. Bayangkan bila dalam suatu sistem perbankan, apa yang kita rasakan jika kita mendebet uang sejumlah 1000, maka yang tercatat dalam transaksi adalah kita melakukan debet sejumlah 10000? Hal semacam ini pernah terjadi secara nyata. Perlu diingat bahwa saat ini software tidak hanya digunakan untuk PC, namun pada seluruh intelligent electronic equipment.

Sebuah alat bantu medis untuk memberi terapi radiasi yang diberi nama Therac-25 didesain untuk membantu menyembuhkan kanker yang diderita pasien. Namun karena kesalahan software, penggunaan alat medis ini justru menyebabkan 6 pasien meninggal atau cidera fatal [PAT09].

Pada tahun 1991, di Dhahran, kesalahan software pada sistem pertahanan rudal Patriot mengakibatkan sebuah rudal Patriot gagal menangkis serangan sebuah rudal Scud sehingga mengenai barak prajurit dan menyebabkan 28 orang tewas serta 97 lainnya luka-luka [PAT09].

Masih banyak kejadian yang membuktikan bahwa kesalahan software dapat menyebabkan kerugian yang sangat besar bagi kehidupan manusia. Oleh karena di beberapa bidang, kesalahan ataupun kegagalan teknologi informasi, termasuk software, tidak boleh terjadi dan tidak ada toleransi [ROY09].

2. Pembahasan
Dalam proses rekayasa perangkat lunak (software engineering), terdapat 3 fase yang harus dilalui dalam pembuatan hingga penerapan proses, yaitu: fase definisi, fase pengembangan, dan fase pemeliharaan [ROG01]. Ketiga fase ini dapat lebih diperinci lagi menjadi 7 fase system engineering, yaitu: requirements definition, system design, sub-system development, system integration, system installation, system evolution, dan system decommissioning [IAN01].

Pada pelaksanaannya, fase-fase tersebut diterapkan dalam model-model rekayasa perangkat lunak. Model yang paling umum digunakan adalah linear sequential model, yaitu: Analysis, Design, Code, dan Test [ROG01].

Adanya fase-fase maupun model-model dalam rekayasa perangkat lunak adalah agar dapat dibuat sebuah perangkat lunak (software) yang berkualitas tinggi [ROG01]. Tidak hanya itu, dengan penggunaan metode-metode rekayasa perangkat lunak bertujuan untuk menghasilkan perangkat lunak berkualitas tinggi dan dengan biaya yang efektif [IAN01].

Sayangnya, semua software yang dibuat memiliki kesalahan (fault) dan tidak dapat dipungkiri bahwa kesalahan ini akan menyebabkan kegagalan (failure) [MAG09]. Saat ini, penyebab terjadinya kesalahan pada suatu software adalah akibat requirements/design (38,2%), coding (32,6%), interface/integration (16,0%), procedure/proses (3,9%), penyebab lain (1,9%), dan penyebab yang belum/tidak diketahui (7,4%) [MAG09].

Requirements/design menjadi faktor utama penyebab kesalahan pada suatu software. Hal ini telah diprediksi sejak lama, karena pada tahap ini kemungkinan terjadinya kesalahan interpretasi maupun kesalahan informasi sangat besar [ROG01]. Faktor lain yang dapat menyebabkan sebuah software memiliki kesalahan adalah programmer dengan pengetahuan formal tentang penulisan progam yang minim [PAT09]. Kurangnya pengetahuan formal dapat menyebabkan programmer tidak mengikuti tahapan-tahapan pembuatan sistem software yang seharusnya dilakukan. Padahal tahapan-tahapan dalam metode-metode tersebut sudah sempurna untuk digunakan pada sistem TI berbasis software [MAR09]. Selain itu kelemahan programmer juga menjadi hal utama yang menyebabkan kesalahan coding.

Sebenarnya sudah terdapat CASE (Computer Aided Software Engineering) tools untuk membantu setiap aktivitas pada tahapan rekayasa perangkat lunak. Namun demikian, CASE hanya berperan untuk membantu mempermudah pelaksanaan setiap aktivitas rekayasa perangkat lunak. Yang paling berperan untuk keberhasilannya tetap berada pada orang yang melaksanakan aktivitas-aktivitas tersebut.

3. Kesimpulan
- Kesalahan pada software pasti terjadi, namun terdapat beberapa bidang yang tidak dapat memberikan toleransi untuk kesalahan tersebut.
- Saat ini tren kesalahan software terjadi pada tahap requirements/design serta tahap coding.
- Hal yang paling menentukan adalah orang-orang yang berperan dalam proses rekayasa perangkat lunak. Tahap-tahap dalam rekayasa perangkat lunak harus dilaksanakan dengan baik, dan jika memungkinkan gunakan CASE tools untuk membantu tingkat keberhasilan dalam rekayasa perangkat lunak.


Referensi:
[IAN01]
Ian Sommerville, Software Engineering, 6th ed., Pearson Education Ltd., NY, 2001.

[MAG09]
Maggie Hamill and Katerina Goševa-Popstojanova, Common Trends in Software Fault and Failure Data, IEEE Transactions on Software Engineering, Vol.35, No.4, July/August 2009, pp.484-496.

[MAR09]
Martyn Thomas, Appliance of Science Could Change IT, Computer Weekly, Aug 11-Aug 17, 2009, p.5.

[PAT09]
Patricia A McQuaid, Software Disasters: What Have We Learned?, Software Quality Professional; Jun 2009; 11, 3, p.28.

[ROG01]
Roger S. Pressman, Software Engineering: A Practitioner’s Approach, 5th ed., McGraw-Hill Companies, Inc., NY, 2001.

[ROY09]
The Royal Academy of Engineering, Engineering Values in IT, The Royal Academy of Engineering, London, 2009.

Tidak ada komentar: