Maintenance dalam Pengembangan Software System

 
 
Perawatan perangkat lunak (software maintenance) adalah aktivitas yang dimulai sejak perangkat lunak mulai digunakan (after delivery) hingga akhirnya perangkat lunak tersebut tidak dapat digunakan lagi (retired). Tujuannya adalah untuk memperbaiki kesalahan (to correct), meningkatkan kinerja / fungsionalitas (to improve), menyesuaikan dengan lingkungan (to adapt), atau untuk mencegah terjadinya kesalahan (to prevent).
Dengan beragamnya tujuan perawatan perangkat lunak, maka jenis perawatan perangkat lunak dapat dibagi menjadi 4 pula, yaitu perawatan perbaikan (correction), perawatan peningkatan kinerja (improvement), perawatan penyesuaian (adaptation), dan perawatan pencegahan (prevention). Akan tetapi, secara umum, jenis perawatan perangkat lunak dapat dikelompokkan kedalam dua kategori besar, yaitu perawatan perbaikan (correction) dan perawatan peningkatan (enhancement). Perawatan jenis kedua mencakup perawatan improvement, adaptation, dan prevention.

4 Jenis Kategori Maintenance dalam Software
1. Corrective maintenance, ini kita lakukan ketika sebuah bug ditemukan pada sistem dan kita harus melakukan perbaikan.
2. Adaptive maintenance, ketika sistem yang kita buat harus mengadaptasi perubahan pada environment dimana sistem tersebut berjalan. Misalnya, ketika membuat sebuah aplikasi Android, kita harus melakukan maintenance ketika versi Android di upgrade, agar aplikasi kita tetap compatible.
3. Perfective maintenance, ketika pengguna sistem atau stakeholder merubah requirement dari sistem yang kita bangun.
4. Preventive maintenance, ketika kita hendak meningkatkan kualitas sistem yang kita bangun atau hendak menanggulangi sebuah bug sebelum bug tersebut terjadi.

Aspek Kegiatan Maintenance
Beberapa aspek-aspek penting dalam perencanaan perawatan adalah:
1. Perencanaan adalah kegiatan untuk menjalankan fungsi. Aspek-Aspek penting dalam perawatan perencanaan :
a. Penyusunan secara struktural kegiatan perawatan yang akan dijalankan
b. Penyusunan sistem perawatan
c. Kegiatan pengontrolan dan pencatatan
d. Penerapan sistem perawatan dan pencatatan
Sedangkan faktor-faktor yang harus diperhatikan dalam penyusunan perencanaan perawatan adalah ruang lingkup pekerjaan, prioritas pekerjaan, kebutuhan ketrampilan, kebutuhan tenaga kerja, kebutuhan peralatan dan kebutuhan material.

2. Pemeriksaan, kegiatan pemeriksaan yang telah tersusun dengan teratur akan menjaga performa mesin dalam keadaaan optimal dan dapat berfungsi sesuai standar. Kegiatan pemeriksaan terdiri dari :
a. Pemeriksaan operasional
b. Pemeriksaan pemberhentian
c. Pemeriksaan overhaul.

3. Pemilihan komponen atau suku cadang merupakan kegiatan yang paling penting dalam menjalankan kegiatan overhaul. Dengan pemilihan suku cadang yang sesuai dengan spesifikasi mesin akan menjaga mesin tetap dapat bekerja dalam kondisi standar.
Maintenance Planning Activity
Aktivitas penting untuk maintenance perangkat lunak adalah perencanaan. Jika tahap development berlangsung 1-2 tahun, maka fase maintenance berlangsung selama bertahun-tahun. Memperkirakan secara akurat sumber daya yang digunakan adalah elemen kunci dalam rencana maintenance. Sumber daya yang didalamnya termasuk biaya harus dimasukkan dalam rencana anggaran proyek. Rencana maintenance harus dimulai dengan membuat atau menentukan tujuan kualitas perangkat lunak. 

Konsep dan perencanaan maintenance :
a. Mengandung ruang lingkup (scope) maintenance perangkat lunak.
b. Proses setelah perangkat lunak selesai.
c. Harus diketahui siapa yang akan melakukanmaintenance. d. Perkiraan biaya maintenancesiklus hidup perangkat lunak.
 
Teknik-teknik Maintenance
Software maintenance yang efektif dilakukan dengan teknik yang spesifik atau khusus untuk maintenance. Beberapa teknik praktis yang biasa diapakai maintener akan dijelaskan di bawah ini.

1. Program Comprehension, programmers menghabiskan banyak waktu untuk membaca dan mengerti program dalam rangka mengimplementasikan perubahan. Code browsers merupakan tools kunci dalam program comprehension. Dokumentasi yang singkat dan jelas dapat membantu dalam program comprehension. Berdasarkan atas pentingnya subtopic ini, maka IEEE Computer Society mengadakan pelatihan yang diadakan setiap tahunnya mengenai program comprehension.

2. Reengineering, biasanya tidak dilakukan untuk meningkatkan kemudahan melakukan maintenance (maintainability) namun untuk mengganti legacy system yang sudah berumur. Refactoring atau transformasi program yang mengorganisasi ulang (reorganisasi) tanpa mengubah perilaku sistem sekarang digunakan dalam reverse engineering untuk meningkatkan struktur program berorientasi objek.

3. Reverse engineering adalah proses menganalisa subjek sistem untuk mengindentifikasi komponen sistem dan hubungan yang terjadi di dalamnya untuk direpresentasikan dalam bentuk lain atau pada level abstraksi yang lebih tinggi. Reverse engineering dilakukan secar pasif, artinya tidak mengubah sistem atau menghasilkan sistem yang baru. Sebuah usaha reverse engineering sederhana mungkin menghasilkan sesuatu yang disebut graphs dan control flow graphs dari source code. Jenis dari reverse engineering antara lain redocumentation dan design recovery. Date reverse engineering mempunyai pengaruh penting beberapa tahun belakangan. Topic reverse engineering menjadi bahan diskusi dalam acara tahunan Working Conference on Reverse Engineering (WCRE).

4. Impact Analysis mengidentifikasi keseluruhan sistem dan produk sistem yang dipengaruhi oleh permintaan perubahan (change request) dan membuat perkiraan sumber daya yang diperlukan untuk melakukan perubahan. Dilakukan setelah permintaan perubahan (change request) diterima oleh configuration management process. Beberapa hal penting tentang impact analisis : a. Menentukan ruang lingkup perubahan untuk perencanaan dan implementasi. b. Membuat perkiraan sumber daya yang diperlukan untuk melakukan kegiatan secara akurat. c. Menganalisa untung / rugi perubahan yang diminta. d. Melakukan komunikasi dengan bagian lain tentang kompleks tidaknya perubahan yang dilakukan.
 
www.google.com
www.wikipedia.com