Jumat, 22 Juni 2018

MAINTENANCE DALAM PENGEMBANGAN SOFTWARE SYSTEM


MAINTENANCE DALAM PENGEMBANGAN SOFTWARE SYSTEM

Software Maintenance
Menurut McCall (1997) kriteria yang mempengaruhi kualitas software
terbagi menjadi tiga aspek penting yaitu :
1. Sifat-sifat operasional dari software (Product Operations).
2. Kemampuan software dalam menjalani perubahan (Product Revision)
3. Daya  adaptasi  atau  penyesuaian software terhadap lingkungan baru (Product Transition).
Dengan beragamnya tujuan perawatan perangkat lunak, maka jenis perawatan perangkat lunak dapat dibagi menjadi empat 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.
Aspek Kegiatan Maintenance
Aktivitas pemeliharaan yang pertama terjadi karena asumsi yang salahpada saat uji coba yaitu kesalahan-kesalahan tersembunyi pada perangkat lunak yang cukup besar. Menurut O’Brien (2005) bahwa dibutuhkan pembagian kegiatan maintenance ke dalam empat aspek. Pemeliharaan perangkat lunak dapat dibedakan menjadi:
·       Adaptive, diartikan sebagai modifikasi sistem untuk mengatasi perubahan lingkungan software. Aktivitas yang kedua ini terjadi karena pertumbuhan atau perkembangan perangkat lunak atau perangkat keras sehingga memerlukan modifikasi dari perangkat lunak yang telah dibuat.
·       Perfective, diartikan sebagai tindakan baru implementasi atau perubahan pengguna peralatan yang  mana  memperhatikan  fungsi  tambahan  untuk software. Aktivitas ini terjadi pada saat perangkat lunak yang telah dibuat dan dilakukan uji cobs kemudian dipergunakan oleh user. Setelah dipergunakan oleh user mungkin timbul permintaan tambahan fungsi sesuai dengan keinginan pemakai.
·       Corrective, diartikan sebagai deteksi dan perbaikan masalah, yang ditemukan oleh pengguna. Aktivitas ini terjadi pada saat produk dipakai dan hasil yang didapat oleh pamakai baik berupa kesalahan yang timbul maupun kesalahan dalam bentuk keluaran yang tidak sesuai.
·       Preventive, diartikan sebagai peningkatan kemampuan software atau reabilitas untuk menghindari masalah di masa yang akan datang. Pemeliharaan yang terakhir dilakukan untuk menghadapi kemajuan perangkat lunak atau perangkat keras di masa mendatang, umpamanya penambahan fungsifungsi atau melengkapi fungsi-fungsi yang telah ada.

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 :
• Mengandung ruang lingkup (scope) maintenance perangkat lunak.
• Proses setelah perangkat lunak selesai.
• Harus diketahui siapa yang akan melakukan maintenance.
• Perkiraan biaya maintenance siklus hidup perangkat lunak.

Teknik-teknik Maintenance
Software maintenance yang efektif dilakukan dengan teknik  yang spesifik atau khusus untuk maintenance. Beberapa teknik praktis yang biasa dipakai 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 subtopik ini, maka IEEE Computer Society mengadakan pelatihan yang diadakan setiap tahunnya mengenai program comprehension.
2. Re-engineering
Reengineering biasanya tidak dilakukan untuk meningkatkan kemudahan melakukan maintenance(maintainability) namun untuk mengganti legacy system yang sudah berumur. Arnold [Arn92] membahas topik ini secara luas meliputi konsep, tools,teknik, studi kasus, risiko dan keuntungan re-engineering. Refactoringatau transformasi program yang mengorganisasi ulang (reorganisasi) tanpa mengubah perilaku sistem sekarang digunakan dalam reverse engineering untuk meningkatkan struktur program berorientasi objek.

3. Reverse engineering
Reverse engineering adalah proses menganalisa subjek sistem untuk mengindentifikasi komponen sistem dan hubungan yang terjadi di dalamnya untuk di representasikan dalam bentuk lain atau pada level abstraksi yang lebih tinggi. Reverse engineering dilkukan secara 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 Engineeringmempunyai pengaruh penting beberapa tahun belakangan. Topik Reverse engineering menjadi bahan diskusi dalam acara tahunan Working Conference on Reverse Engineering (WCRE).
4. Impact Analysis
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:
§  Menentukan ruang lingkup perubahan untuk perencanaan dan implementasi.
§  Membuat perkiraan sumber daya yang diperlukan untuk melakukan kegiatan secara akurat.
§  Menganalisa untung / rugi perubahan yang diminta.
§  Melakukan komunikasi dengan bagian lain tentang kompleks tidaknya perubahan yang dilakukan.

Maintenance dalam Pengembangan Software
Software maintanence menjadi bagian dari keberlangsungan sebuah software (software sustainment). Software yang dapat di maintenance akan mendukung perusahaan dalam memecahkan solusi sesuai dengan perubahan lingkungan bisnis. Bila suatu software tidak dapat di maintenance maka sofrware tersebut tidak dapat mendukung kinerja dari perusahaan atau pengguna. Software maintenance menjadi sangat penting karena memberikan porsi yang besar dalam biaya lifecycle keseluruhan. Ketidakmampuan untuk melakukan perubahan software secara cepat dan reliable akan menyebabkan kehilangan peluang bisnis yang dimiliki.
Maintenance pada software perlu dilakukan dengan cara memonitor dan mengevaluasi kinerja pada software yang sudah ada. Modifikasi atau perubahan diperlukan apabila terdapat perubahan dari organisasi itu sendiri baik yang berkaitan dalam hal struktur organisasi maupun perubahan cara kerja dan juga pengembangan bisnis (faktor external maupun faktor internal). Penyesuaian pada maintenance software dapat dilakukan dengan update sistem yang dimulai dari identifikasi permasalahan pada sistem yang sudah berjalan. Apabila suatu sistem tidak diperhatikan sisi maintenance-nya, maka sinergi antara perubahan-perubahan/kemajuan yang terjadi dalam perusahaan tidak dapat langsung diaplikasikan dalam software, yang dalam hal ini merupakan faktor penunjang dalam efisiensi dan efektivitas.

Maintenance software
perlu memperhatikan beberapa karakteristik:

Karakteristik
Sub karakteristik

Functionality :
Software untuk menjalankan fungsinya
sebagimana kebutuhan sistemnya.

Suitability, accuracy, interoperability,
security

Reliability :
Kemampuan software untuk dapat tetap
tampil sesuai dengan fungsi ketika
digunakan.

Maturity, Fault tolerance,
Recoverability

Usability :
Kemampuan software untuk
menampilkan performans relatif terhadap
penggunaan sumberdaya.

Understanbility, Learnability,
Operability, Attractiveness

Efficiency :
Kemampuan software untuk
menampilkan performans relatif terhadap
penggunaan sumberdaya.

Time behaviour, Resource Utilization
Maintainability :
Kemampuan software untuk dimodifikasi
(korreksi, adaptasi, perbaikan)

Analyzability, Changeability, Stabilit
y,
Testability

Portability :
Kemampuan software untuk ditransfer
dari satu lingkungan ke lingkungan lain.

Adaptability, Installability
Tabel 1. Karakteristik Software: ISO 9126

Untuk menghasilkan software yang baik dan berkualitas maka perangkat lunak tersebut harus memiliki kriteria : Functionality, Reliability, Usability, Efficiency, Maintainability, dan Portability.
Penggunaan kriteria tersebut akan menghasilkan keuntungan bagi perusahaan penguna software tersebut.
Berdasarkan uraian diatas maka, urgensi dari pemeliharaan sistem atau system maintenance adalah:

·       Memperbaiki Kesalahan (Correcting Errors)
Maintenance dilakukan untuk mengatasi kegagalan dan permasalahan yang muncul saat sistem dioperasikan. Sebagai contoh, maintenance dapat digunakan untuk mengungkapkan kesalahan pemrograman (bugs) atau kelemahan selama proses pengembangan yang tidak terdeteksi dalam pengujian sistem, sehingga kesalahan tersebut dapat diperbaiki.

·       Menjamin dan Meningkatkan Kinerja Sistem (Feedback Mechanism)
Kajian pasca implementasi sistem merupakan salah satu aktivitas maintenance
yang meliputi tinjauan sistem secara periodik. Tinjauan periodik atau audit sistem dilakukan untuk menjamin sistem berjalan dengan baik, dengan cara memonitor sistem secara terus-menerus terhadap potensi masalah atau perlunya perubahan terhadap sistem. Sebagai contoh, saat user menemukan errors pada saat sistem digunakan, maka user dapat memberi umpan balik atau feedback kepada spesialis informasi guna meningkatkan kinerja sistem. Hal ini yang menjadikan system maintenance perlu dilakukan secara berkala, karena system maintenance akan senantiasa memastikan sistem baru yang di implementasikan berjalan dengan baik dan sesuai dengan tujuan penggunaanya melalui mekanisme umpan balik.

·       Menjaga Kemutakhiran Sistem (System Update)
Selain sebagai proses perbaikan kesalahan dan kajian pasca implementasi, system maintenance juga meliputi proses modifikasi terhadap sistem yang telah dibangun karena adanya perubahan dalam organisasi atau lingkungan bisnis. Sehingga, system maintenance menjaga kemutakhiran sistem (system update) melalui modifikasi-modifikasi sistem yang dilakukan.

Selain itu, urgensi dari pemeliharaan sistem atau system maintenance dalam suatu organisasi/ perusahaan adalah sebagai berikut:

v  Mengurangi pengeluaran dalam bidang investasi teknologi.
v  Membantu perusahaan memecahkan masalah dengan tetap mengikuti perubahan lingkungan dan prosedur yang terjadi.
v  Efektivitas biaya.
Menghindari kerugian yang diakibatkan oleh munculnya kesalahan pada perangkat lunak yang berakibat pada pengguna terakhir. Biaya yang dikeluarkan akan lebih sedikit jika dilakukan pendektesian awal terhadap kesalahan yang terjadi pada perangkat lunak tersebut.
v  Efisiensi waktu
Dilakukannya pengujian terhadap perangkat lunak akan menghindari perusahaan dari resiko kerugian yang terjadi dan waktu yang lebih lama untuk melakukan perbaikan terhadap perangkat lunak tersebut.
v  Fokus pada pengembangan bisnis.
Perangkat lunak yang tidak memiliki kesalahan (bug) akan memaksimalkan kinerja dari perusahaan dengan mendukung kegiatan bisnis lebih baik dan mendukung penyelesaian masalah lebih cepat dengan penggunaan perangkat lunak tersebut.
v  Peningkatan loyalitas pelanggan.
software maintenance yang dilakukan oleh pihak ketiga/outsourcing akan menghemat waktu yang berharga bagi perusahaan. Seperti akan diperoleh cukup waktu untuk fokus pada kegiatan penting bisnis dan mengoptimalkan pelayanan terhadap pelanggan untuk meningkatkan loyalitas dan kepuasan terhadap perusahaan.
v  Membuat software tersebut menjadi kategori software berkualitas.
v  Mengambil peluang bisnis yang ada, dengan maintenance software atau sistem informasi, akan mengevaluasi sistem yang ada dan memodifikasinya, bila sebuah sistem usang atau rusak maka organisasi tidak akan dapat mengambil peluang bisnis yang ada dengan proses yang efektif dan efisien.
v  Menjaga agar software tidak menjadi usang.
Keusangan software atau sistem informasi akan merugikan organisasi, organisasi menjadi tidak optimal dalam memanfaatkan software pun menghasilkan kinerja yang tidak optimal, sehingga proses maintenance menjaga hal ini agar keusangan tidak terjadi.