Sebelum
membahas tentang pemeliharaan perangkat lunak, alangkah baiknya kita
mengenal sedikit tentang apa sih perangkat lunak tersebut.
Baiklah,
jadi perangkat lunak adalah seluruh komponen pengolahan data
yang dapat membantu memecahkan masalah diluar dari perangkat hardware
yang meliputi system design, program dan prosedur.
Beberapa penggambaran umum tentang perangkat lunak :
- Perintah (program komputer) yang mana bila dieksekusi akan menghasilkan fungsi sebagai mana yang kita inginkan.
- Struktur data yang memungkinkan suatu aplikasi dapat memanipulasi informasi secara proporsional.
- Dokumen yang menggambarkan suatu kegunaan dari pada sebuah program.
Perangkat lunak tersebut dibedakan menjadi 2 tipe yaitu :
- Produk Generik, yaitu sistem stand alone yang di produksi oleh perusahaan pengembang perangkat lunak dan di pasarkan ke pasar umum. Contohnya : Microsoft Office, Adobe Creative Suite, dll.
- Produk Pesanan, yaitu produk perangkat lunak yang mana akan dikembangkan bila ada perusahaan/konsumen yang memesannya. Contohnya : Sistem Penerimaan Mahasiswa untuk sebuah kampus, dll.
Sedangkan, Pemeliharaan Perangkat Lunak adalah proses umum
pengubahan/pengembangan perangkat lunak setelah diserahkan ke konsumen.
Perubahan mungkin berupa perubahan sederhana untuk membetulkan error
koding atau perubahan yg lebih ekstensif untuk membetulkan error
perancangan/perbaikan signifikan untuk membetulkan error
spesifikasi/akomodasi persyaratan baru.
Ada 4 katagotri pemeliharaan software yaitu :
- Corrective Maintenance, perubahan yang dilakukan guna memperbaiki kesalahan.
- Adaptive Maintenance, perawatan berdasarkan perubahan lingkungan.
- Perfective Maintenance, perubahan untuk meningkatkan kualitas sistem tanpa merubah fungsinya.
- Preventive Maintenance, Meningkatkan reliability, future maintainability, future enhancement (reverse engineering dan re-engineering)
Kenapa biaya pemeliharaan lebih tinggi dari pada biaya pengembangan, berikut adalah beberapa faktor yang menyebabkannya :
- Stabilitas Tim, biasanya tim pengembang dan tim pemelihara adalah orang yang berbeda karena tim pengembang biasanya sudah lari ke proyek baru sehingga tim pemeliharanya tidak begitu paham atas sistem yang dikembangkan.
- Tanggung Jawab Kontrak, kontrak bagi pengembang dan pemelihara kebanyakan terpisah atau diberikan kepada perusahaan yang berbeda dan bahkan bukan pengembang sistem aslinya, akibatnya tidak ada insentif bagi pengembang untuk membuat sistem yang mudah untuk diubah.
- Keahlian Staff, staff pemelihara kebanyakan tidak berpengalaman dalam hal pemeliharaan software dan staff pemelihara sering diaangap tidak memerlukan keahlian yang mendalam di bidang software.
- Umur dan Struktur Program, program yang sudah tua biasanya strukturnya sudah terdegradasi oleh perkembangan jaman sehingga sangat sulih dipahami oleh pemelihara.
Beberapa permasalahan yang sering muncul dalam pemeliharaan software :
- Kesulitan melakukan pelacakan evolusi software pd versi sebelumnya,
- Kesulitan pelacakan pada proses pengembangan software,
- Sulit untuk mengerti program orang lain,
- Tidak adanya dokumentasi yang baik,
- Tidak adanya nara sumber,
- Kebanyakan software dirancang tanpa adanya pemikiran untuk diubah.
Apa yang dimaksud dengan pengembangan perangkat lunak (Software Developmen
Software development atau yang biasa disebut dengan pengembangan perangkat lunak merupakan serangkaian proses yang dilakukan untuk mengembangkan perangkat lunak. Pengembangan perangkat lunak membutuhkan kehati-hatian dalam merancang dan mengkesekusi dalam rangka memenuhi goal yang ingin dituju[1]. Serangkaian proses yang dimaksud di sini bukan hanya menulis kode program tapi juga mempersiapkan kebutuhan perangkat lunak, desain dari perangkat lunak, serta pengujian perangkat lunak. Bahkan dokumentasi juga termasuk dalam proses pengembangan perangkat lunak.
Dalam pengembangan perangkat lunak, terdapat berabgai macam pendekatan yang digunakan dalam mengembangkan sebuah perangkat lunak[2]. Pendekatan – pendekatan tersebut digunakan sesuai dengan kebutuhan dari masing – masing pengembang. Berikut adalah beberapa pendekatan yang ada dalam pengembbangan perangkat lunak :
Waterfall
Waterfall merupakan pendekatan yang paling sederhana dari berbagai pendekatan yang ada pada pengembangan perangkat lunak. Pada gambar di bawah, di jelaskan bahwa apabila suatu fase telah selesai (contoh : requirement gathering), barulah proses dapat berlanjut ke fase berikutnya (contoh : system analysis).
Pendekatan jenis ini mengasumsikan bahwa semuanya berjalan dengan lancar apabila suatu fase telah terselesaikan sehingga tidak perlu untuk kembali ke fase sebelumnya. Pendekatan ini cocok digunakan bila pengembang telah atau pernah mengembangkan perangkat lunak yang serupa sebelumnya dan sadar akan setiap permasalahan yang ada dalam pengembangannya.
Spiral
Pendekatan spiral merupakan pendekatan yang memungkinkan pengembangan secara incremental. Incremental yang dimaksud adalah pada setiap fasenya dapat dilalui lebih dari 1 kali dalam rangka pengembangan maupun perbaikan perangkat lunak yang dikembangkan. Berbeda dengan pendekatan waterfall yang setiap fasenya hanya dilalui sekali, pada pendekatan ini, fase – fase yang terdapat pada pendekatan ini bisa dilalui berkali -kali. Kekurangan dari pendekatan jenis ini adalah proses serta management nya yang komples serta tidak sesuai untuk diterapkan ke projek – projek kecil.
Prototipe
Pendekatan jenis ini merupakan pendekatan yang mengacu pada pembuatan prototipe perangkat lunak yang memiliki fungsionalitas terbatas[3]. Pendekatan ini memungkinkan untuk mendapat feedback dari coustomer dan membantu pengembang untuk memahami apa yang diinginkan oleh costumer secara jelas.
Agile
Pendekatan model ini mengharuskan tugas-tugas pengembangan di pisahkan ke dalam sebuah time boxes[4]. Pendekatan ini merupakan kombinasi dari iterative dan incremental proses model yang berfokus pada adaptability dan kepuasan costumer dengan waktu pengerjaan yang cepat.
Beberapa metode agile yang populer digunakan yaitu SCRUM, Extreme Programming, Rational Unified Process, dan lain sebagainya.
Setiap pendekatan – pendekatan yang ada pada pengembangan perangkat lunak, terdiri dari beberapa fase. Berikut adalah beberapa fase umumnya digunakan dalam proses pengembangan perangkat lunak :
Requirement analysis
Requirement analysis atau requirement engineering adalah proses untuk mengumpulkan data – data terkait kebutuhan costumer[5]. Salah satu faktor kunci yang diperlukan pada tahap ini adalah komunikasi. Untuk dapat menggali informasi (elisitasi) dari costumer diperlukan kemampuan komunikasi yang bagus. Selanjutnya setelah menggali informasi, maka informasi tersebut dianalisis dan diolah untuk dapat didaftarkan ke dalam spesifikasi kebutuhan. Pada spesifikasi kebutuhan terdapat 2 daftar jenis kebutuhan, yaitu kebutuhan fungsional dan non-fungsional. Kebutuhan fungsional menjelaskan mengani apa saja yang dapat dikerjakan oleh perangkat lunak yang dibuat. Sedangkan kebutuhan non-fungsional lebih menjelaskan mengenai kualitas dari perangkat lunak yang dibuat. Kebutuhan non-fungsional merupakan kebutuhan yang tidak secara tersirat di katakan oleh costumer, namun bila dimiliki maka akan menjadi nilai yang bagus di mata costumer. Selanjutnya, setelah dimasukan dalam sebuah list, kebutuhan – kebutuhan tersebut harus divalidasi dan di verivikasi. Terdapat beberapa teknik yang dapat digunakan untuk memvalidasi dan memverivikasi, diantaranya adalah SSR(Software Specification Review) dan Prototyping.
Perancangan Sistem
Design merupakan proses dimana pengembang menggambarkan arsitektur dari sistem yang ingin dibuat. Pada proses ini, lebih dibutuhkan kemampuan teknis pengembang dalam menggambarkan setiap proses yang terjadi dalam sistem yang dibuat. Untuk menggambar desain dari sistem yang ingin dibuat, digunakan UML diagram. UML diagram yang dgunakan tergantung dari pendekatan yang kita gunakan dalam mengembangkan perangkat lunak tersebut. Yang umum diketahui, ada 2 pendekatan yang ada yaitu berorientasi objek dan terstruktur. Pada pendekatan berorientasi objek diagram UML yang biasa digunakan adalah Use case diagram, use case scenario, sequence diagram, activity diagram, class diagram. Sedangkan pada pendekatan terstruktur, UML yang digunakan adalah Data Flow Diagram, State machine Diagram. Setiap hal yang ada pada tahap ini akan menjadi acuan bagi proses selanjutnya.
Implentation
Proses ini merupakan proses mengubah apa yang ada pada tahap perancangan sistem menjadi bentuk source code dalam membangun perangkat lunak yang ingin dibuat. Proses ini lebih berbicara kepada kemampuan teknis pengembang dalam pemrograman, bahasa pemrograman yang digunakan, algoritma yang digunakan maupun teknik – teknik yang digunakan. Semua ini tergantung dari pendekatan yang digunakan pada perancangan sistem, apakah menggunakan pendekatan terstruktur ataukah pendekatan berorientasi objek.
Testing
Pada tahap ini, perangkat lunak yang telah berhasil dibuat akan diuji. Ada 2 pengujian yang dapat digunakan, yaitu
Pengujian Black Box
Pengujian black box digunakan untuk menguji fungsi-fungsi khusus dari perangkat lunak yang dirancang. Pada teknik ini, kebenaran perangkat lunak yang diuji hanya dilihat berdasarkan keluaran yang dihasilkan dari data atau kondisi masukan yang diberikan untuk fungsi yang ada tanpa melihat bagaimana proses untuk mendapatkan keluaran tersebut. Dari keluaran yang dihasilkan, kemampuan program dalam memenuhi kebutuhan pemakai dapat diukur sekaligus dapat diiketahui kesalahan-kesalahannya. Beberapa jenis kesalahan yang dapat diidentifikasi:
- Fungsi tidak benar atau hilang
- Kesalahan antar muka
- Kesalahan pada struktur data (pengaksesan basis data)
- Kesalahan inisialisasi dan akhir program
- Kesalahan performasi.
Pengujian white box dilakukan untuk menjamin operasi-operasi internal sesuai dengan spesifikasi yang telah ditetapkan dengan menggunakan struktur kendali dari prosedur yang dirancang.Pelaksanaan pengujian white box:
- Menjamim seluruh independent path dieksekusi paling sedikit satu kali.
- Menjalani logical decision pada sisi dan false
- Mengeksekusi pengulangan (looping) dalam batas-batas yang ditentukan
- Menguji struktur data internal
Deployment merupakan proses pe-release-an perangkat lunak yang telah dibuat. Dalam tahap ini terdapat beberapa proses lagi yaitu maintenance dan evolution. Maintenance merupakan proses memodifikasi perangkat lunak yang sudah di deploy dalam rangka memperbaiki software ke arah yang lebih baik. Biasanya maintenance dilakukan bila didapati bug ataupun error pada perangkat lunak yang dibuat. Selanjutnya adalah evolution. Evolution merupakan merubah sebagian atau bahkan semua sistem yang ada pada perangkat lunak yang telah dibuat dalam rangka menjadikan perngkat lunak menjadi lebih baik. Yang diubah pada evolution biasanya berupa, system environtment, maupun user target
sumber :
https://www.dictio.id/t/apa-yang-dimaksud-dengan-pengembangan-perangkat-lunak-software-development/2236
http://rangkuman-pengetahuan.blogspot.com/2013/02/pemeliharaan-perangkat-lunak-software.html