Ikhtisar Pemeliharaan Perangkat Lunak
Pemeliharaan perangkat lunak diterima secara luas sebagai bagian dari SDLC sekarang menjadi hari. Ini adalah singkatan dari semua modifikasi dan pembaruan yang dilakukan setelah pengiriman produk perangkat lunak. Ada beberapa alasan mengapa diperlukan modifikasi, beberapa di antaranya secara singkat disebutkan di bawah ini:
Market Conditions - Kebijakan, yang berubah dari waktu ke waktu, seperti perpajakan dan kendala baru seperti, bagaimana memelihara pembukuan, dapat memicu kebutuhan untuk modifikasi.
Client Requirements - Seiring waktu, pelanggan mungkin meminta fitur atau fungsi baru dalam perangkat lunak.
Host Modifications - Jika salah satu perangkat keras dan / atau platform (seperti sistem operasi) dari host target berubah, perubahan perangkat lunak diperlukan untuk menjaga kemampuan beradaptasi.
Organization Changes - Jika ada perubahan tingkat bisnis pada klien, seperti pengurangan kekuatan organisasi, akuisisi perusahaan lain, organisasi yang merambah bisnis baru, perlu memodifikasi perangkat lunak asli mungkin muncul.
Jenis perawatan
Dalam masa pakai perangkat lunak, jenis pemeliharaan dapat bervariasi berdasarkan sifatnya. Ini mungkin hanya tugas pemeliharaan rutin karena beberapa bug ditemukan oleh beberapa pengguna atau mungkin merupakan peristiwa besar dengan sendirinya berdasarkan ukuran atau sifat pemeliharaan. Berikut ini beberapa jenis perawatan berdasarkan karakteristiknya:
Corrective Maintenance - Ini termasuk modifikasi dan pembaruan yang dilakukan untuk memperbaiki atau memperbaiki masalah, yang ditemukan oleh pengguna atau disimpulkan oleh laporan kesalahan pengguna.
Adaptive Maintenance - Ini termasuk modifikasi dan pembaruan yang diterapkan untuk menjaga produk perangkat lunak tetap mutakhir dan selaras dengan dunia teknologi dan lingkungan bisnis yang terus berubah.
Perfective Maintenance- Ini termasuk modifikasi dan pembaruan yang dilakukan agar perangkat lunak dapat digunakan dalam jangka waktu yang lama. Ini mencakup fitur baru, persyaratan pengguna baru untuk menyempurnakan perangkat lunak dan meningkatkan keandalan dan kinerjanya.
Preventive Maintenance- Ini termasuk modifikasi dan pembaruan untuk mencegah masalah perangkat lunak di masa mendatang. Ini bertujuan untuk mengatasi masalah yang tidak signifikan saat ini tetapi dapat menyebabkan masalah serius di masa mendatang.
Biaya Perawatan
Laporan menunjukkan bahwa biaya pemeliharaan tinggi. Sebuah studi tentang estimasi pemeliharaan perangkat lunak menemukan bahwa biaya pemeliharaan setinggi 67% dari biaya keseluruhan siklus proses perangkat lunak.
Rata-rata, biaya pemeliharaan perangkat lunak lebih dari 50% dari semua fase SDLC. Ada berbagai faktor yang menjadi pemicu tingginya biaya perawatan, seperti:
Faktor dunia nyata yang mempengaruhi Biaya Pemeliharaan
- Usia standar perangkat lunak apa pun dianggap hingga 10 hingga 15 tahun.
- Perangkat lunak yang lebih lama, yang dimaksudkan untuk bekerja pada mesin yang lambat dengan memori dan kapasitas penyimpanan yang lebih sedikit tidak dapat terus menantang diri mereka sendiri terhadap perangkat lunak baru yang disempurnakan pada perangkat keras modern.
- Seiring kemajuan teknologi, pemeliharaan perangkat lunak lama menjadi mahal.
- Kebanyakan teknisi pemeliharaan adalah pemula dan menggunakan metode trial and error untuk memperbaiki masalah.
- Seringkali, perubahan yang dibuat dapat dengan mudah merusak struktur asli perangkat lunak, sehingga menyulitkan perubahan selanjutnya.
- Perubahan sering kali dibiarkan tidak terdokumentasi yang dapat menyebabkan lebih banyak konflik di masa mendatang.
Faktor akhir perangkat lunak yang memengaruhi Biaya Pemeliharaan
- Struktur Program Perangkat Lunak
- Bahasa pemrograman
- Ketergantungan pada lingkungan luar
- Keandalan dan ketersediaan staf
Aktivitas Pemeliharaan
IEEE menyediakan kerangka kerja untuk aktivitas proses pemeliharaan berurutan. Ini dapat digunakan secara berulang dan dapat diperpanjang sehingga item dan proses yang disesuaikan dapat disertakan.
Aktivitas ini berjalan seiring dengan masing-masing fase berikut:
Identification & Tracing- Ini melibatkan kegiatan yang berkaitan dengan identifikasi kebutuhan modifikasi atau pemeliharaan. Itu dihasilkan oleh pengguna atau sistem itu sendiri dapat melaporkan melalui log atau pesan kesalahan Di sini, jenis pemeliharaan juga diklasifikasikan.
Analysis- Modifikasi tersebut dianalisis untuk dampaknya pada sistem termasuk implikasi keselamatan dan keamanan. Jika kemungkinan dampak parah, solusi alternatif dicari. Satu set modifikasi yang dibutuhkan kemudian diwujudkan menjadi spesifikasi kebutuhan. Biaya modifikasi / pemeliharaan dianalisis dan estimasi disimpulkan.
Design- Modul baru, yang perlu diganti atau dimodifikasi, dirancang sesuai spesifikasi persyaratan yang ditetapkan pada tahap sebelumnya. Kasus uji dibuat untuk validasi dan verifikasi.
Implementation - Modul baru diberi kode dengan bantuan desain terstruktur yang dibuat pada langkah desain. Setiap programmer diharapkan melakukan pengujian unit secara paralel.
System Testing- Pengujian integrasi dilakukan di antara modul yang baru dibuat. Pengujian integrasi juga dilakukan antara modul baru dan sistem. Akhirnya sistem diuji secara keseluruhan, mengikuti prosedur pengujian regresif.
Acceptance Testing- Setelah menguji sistem secara internal, itu diuji untuk penerimaan dengan bantuan pengguna. Jika pada keadaan ini, pengguna mengeluhkan beberapa masalah yang mereka atasi atau dicatat untuk ditangani di iterasi berikutnya.
Delivery- Setelah uji penerimaan, sistem disebarkan ke seluruh organisasi baik dengan paket pembaruan kecil atau instalasi baru sistem. Pengujian terakhir dilakukan di ujung klien setelah perangkat lunak dikirimkan.
Fasilitas pelatihan disediakan jika diperlukan, selain hard copy manual pengguna.
Maintenance management- Manajemen konfigurasi adalah bagian penting dari pemeliharaan sistem. Ini dibantu dengan alat kontrol versi untuk mengontrol versi, semi-versi atau manajemen tambalan.
Rekayasa Ulang Perangkat Lunak
Jika kami perlu memperbarui perangkat lunak agar tetap sesuai dengan pasar saat ini, tanpa memengaruhi fungsinya, hal itu disebut rekayasa ulang perangkat lunak. Ini adalah proses menyeluruh di mana desain perangkat lunak diubah dan program ditulis ulang.
Perangkat lunak lawas tidak dapat mengikuti perkembangan teknologi terbaru yang tersedia di pasar. Ketika perangkat keras menjadi usang, memperbarui perangkat lunak menjadi sakit kepala. Bahkan jika perangkat lunak menjadi tua seiring waktu, fungsinya tidak.
Misalnya, awalnya Unix dikembangkan dalam bahasa assembly. Ketika bahasa C muncul, Unix direkayasa ulang di C, karena bekerja dalam bahasa assembly sulit.
Selain itu, terkadang programmer memperhatikan bahwa beberapa bagian perangkat lunak memerlukan lebih banyak perawatan daripada yang lain dan mereka juga perlu rekayasa ulang.
Proses Rekayasa Ulang
- Decideapa yang harus direkayasa ulang. Apakah seluruh perangkat lunak atau sebagian?
- Perform Reverse Engineering, guna mendapatkan spesifikasi dari software yang ada.
- Restructure Programjika diperlukan. Misalnya, mengubah program berorientasi fungsi menjadi program berorientasi objek.
- Re-structure data seperti yang dipersyaratkan.
- Apply Forward engineering konsep untuk mendapatkan perangkat lunak yang direkayasa ulang.
Ada beberapa istilah penting yang digunakan dalam rekayasa ulang Perangkat Lunak
Rekayasa Terbalik
Ini adalah proses untuk mencapai spesifikasi sistem dengan menganalisis secara menyeluruh, memahami sistem yang ada. Proses ini dapat dilihat sebagai model SDLC terbalik, yaitu kami mencoba untuk mendapatkan tingkat abstraksi yang lebih tinggi dengan menganalisis tingkat abstraksi yang lebih rendah.
Sistem yang ada sebelumnya merupakan desain yang diterapkan, yang tidak kita ketahui. Desainer kemudian melakukan reverse engineering dengan melihat kode tersebut dan mencoba mendapatkan desain tersebut. Dengan desain di tangan, mereka mencoba menyimpulkan spesifikasinya. Jadi, terjadi kebalikan dari kode ke spesifikasi sistem.
Restrukturisasi Program
Ini adalah proses untuk menyusun ulang dan membangun kembali perangkat lunak yang ada. Ini semua tentang mengatur ulang kode sumber, baik dalam bahasa pemrograman yang sama atau dari satu bahasa pemrograman ke bahasa lain. Restrukturisasi dapat berupa restrukturisasi kode sumber dan restrukturisasi data atau keduanya.
Penataan ulang tidak memengaruhi fungsionalitas perangkat lunak tetapi meningkatkan keandalan dan kemudahan pemeliharaan. Komponen program, yang menyebabkan kesalahan sangat sering dapat diubah, atau diperbarui dengan penataan ulang.
Ketergantungan perangkat lunak pada platform perangkat keras yang sudah usang dapat dihilangkan melalui penataan ulang.
Teknik Maju
Rekayasa maju adalah proses mendapatkan perangkat lunak yang diinginkan dari spesifikasi yang ada yang diturunkan melalui rekayasa balik. Ini mengasumsikan bahwa ada beberapa rekayasa perangkat lunak yang telah dilakukan di masa lalu.
Rekayasa maju sama dengan proses rekayasa perangkat lunak dengan hanya satu perbedaan - selalu dilakukan setelah rekayasa balik.
Komponen dapat digunakan kembali
Komponen adalah bagian dari kode program perangkat lunak, yang menjalankan tugas independen dalam sistem. Ini bisa berupa modul kecil atau sub-sistem itu sendiri.
Contoh
Prosedur login yang digunakan di web dapat dianggap sebagai komponen, sistem pencetakan dalam perangkat lunak dapat dilihat sebagai komponen perangkat lunak.
Komponen memiliki kohesi fungsionalitas yang tinggi dan laju kopling yang lebih rendah, yaitu mereka bekerja secara independen dan dapat melakukan tugas tanpa bergantung pada modul lain.
Dalam OOP, objek dirancang sangat spesifik untuk kepentingan mereka dan memiliki lebih sedikit kesempatan untuk digunakan di beberapa perangkat lunak lain.
Dalam pemrograman modular, modul diberi kode untuk melakukan tugas tertentu yang dapat digunakan di sejumlah program perangkat lunak lain.
Ada vertikal baru, yang didasarkan pada penggunaan kembali komponen perangkat lunak, dan dikenal sebagai Rekayasa Perangkat Lunak Berbasis Komponen (CBSE).
Penggunaan kembali dapat dilakukan di berbagai tingkatan
Application level - Dimana seluruh aplikasi digunakan sebagai sub-sistem dari perangkat lunak baru.
Component level - Dimana sub-sistem aplikasi digunakan.
Modules level - Di mana modul fungsional digunakan kembali.
Komponen perangkat lunak menyediakan antarmuka, yang dapat digunakan untuk membangun komunikasi antar komponen yang berbeda.
Proses Penggunaan Kembali
Dua jenis metode dapat diadopsi: baik dengan menjaga persyaratan tetap sama dan menyesuaikan komponen atau dengan menjaga komponen tetap sama dan memodifikasi persyaratan.
Requirement Specification - Persyaratan fungsional dan non-fungsional ditentukan, yang harus dipatuhi oleh produk perangkat lunak, dengan bantuan sistem yang ada, masukan pengguna atau keduanya.
Design- Ini juga merupakan langkah proses SDLC standar, di mana persyaratan didefinisikan dalam istilah perangkat lunak. Arsitektur dasar sistem secara keseluruhan dan sub-sistemnya dibuat.
Specify Components - Dengan mempelajari desain perangkat lunak, para desainer memisahkan keseluruhan sistem menjadi komponen atau sub-sistem yang lebih kecil. Satu desain perangkat lunak yang lengkap berubah menjadi kumpulan dari sekumpulan besar komponen yang bekerja bersama.
Search Suitable Components - Tempat penyimpanan komponen perangkat lunak dirujuk oleh desainer untuk mencari komponen yang cocok, berdasarkan fungsionalitas dan persyaratan perangkat lunak yang dimaksudkan.
Incorporate Components - Semua komponen yang cocok dikemas bersama untuk membentuknya sebagai perangkat lunak lengkap.