Title: Pemeliharaan Software
1- Pemeliharaan Software
- (Software Maintenance)
2Definisi
- modifikasi produk software setelah di reales
untuk - memperbaiki kesalahan (faults),
- untuk meningkatkan performa atau atribut lainnya
(reliable, maintainable, ), - adaptasi produk software terhadap lingkungan
baru. (IEEE)
3Alasan kesulitan pemeliharaan SW
- Rendahnya kualitas software yang berjalan (yang
sudah ada). - Sistem tidak dirancang untuk memperhatikan konsep
pemeliharaan - Pemeliharaan bukan merupakan bagian yang
dirasakan perlu pada suatu SW
4Spiral maintenance model
5Sistem Software saat kini bisa lebih mudah
berubah volatile daripada sebelumnya
- Mencerminkan perubahan lingkungan bisnis yang
cepat - Menekankan pada pengembangan metode yang baru
- Faktor-faktor peningkatan
- Pendekatan iterasi
- Model evolutionary
- Memiliki Biological paradigm bukan assembly line
paradigm
6Saran untuk peningkatan
- Merancang agar SW bisa terpelihara
- Mengukur kompleksitas
- Mengimplementasikan procedure management
perubahan (SCM) - Meningkatkan kemampuan staff
- Menambah tool pemeliharaan dan metrics
7Permasalah yang ada?
- Pemeliharaan SW membutuhkan 50-80 dari total
biaya pembuatannya - Biaya pemeliharaan SW di seluruh dunia
diperkirakan mencapai 30 billion - Masih sedikit penelitan yang mengarah ke
pemeliharaan software
8- Microsoft Windows NT
- 30 juta baris code ditambahkan selama 6 tahun
- Telecom switch software
- 5.2 juta modifikasi sepanjang satu dekade
- Web-based applications
- 73 dari biaya pembuatan e-commerce digunakan
untuk re-design web site setelah implementasi
pertama
9Kategori pemeliharaan SW
- 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)
10Proporsi kategori pemeliharaan SW
Corrective maintenance (17)
Perfective Maintenance (65)
Adaptive maintenance (18)
Lientz and Swanson (1980)
11Proses Pemeliharaan
Change request
Impact analysis
System Release planning
Change implementation
System release
Perfective maintenance
Adaptive maintenance
Corrective maintenance
12Karakteristik Pemeliharaan SW
- Aktivitas pada fase pemeliharaan dan dampak
pendekatan software engineering untuk
keberhasilan aktifitas tersebut. - Biaya untuk fase pemeliharaan software.
- Masalah yang sering dijumpai ketika prosees
pemeliharaan software.
13Permintaan perubahan
- Perubahan yang diminta oleh users, customers atau
management - Pada kenyataannya, semua perubahan memerlukan
analisis yg hati-hati - Pada kenyataan, perubahan SW dirasakan perlu
untuk - Memperbaiki kesalahan
- Perubahan systems environment
- Urgently required business changes
14Structured vs. unstructured pemeliharaan SW
code
software
Configuration
Evaluation design
Evaluation code
Plan approach
?
Modify design
Recode
Recode
Review
Review
Test and Release
15Biaya Pemeliharaan
- Biaya yang dikeluarkan untuk melakukan
pemeliharaan software yang bisa mencapai 80 dari
total biaya pembuatan software. - M p Ke
- M total usaha yang dikeluarkan untuk
pemeliharaan - p productivity effort
- K empirical constant
- c pengukuran kompliksitas yang bisa berdasarkan
kekurangan terhadap perancangan yang baik dan
kokumentasi yang baik - d derajat familiarty software
(c-d)
16Permasalahan yang ada
- 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
17Software Evolution
- evolution is key part of lifecycle
18Alasan evolusi SW
- Memperbaiki dan menajamkan requirement
- Beberapa requirement yang ditemukan pada tahap
inisial pengemebangan SW. - Perubahan pada lingkungan operasi
- Iterasi pengembangan SW
- Menambahkan satu fitur pada satu saat, membaca
resiko pada integrasi sistem - Pengiriman yang cepat untuk versi yang kecil
19ContohA tale of two systems evolution
Financial System
Shipping System
20Pendefinisian pengukuran software evolution
- Amplitude ukuran modifikasi software
- Periodicity interval waktu antara perubahan
- Deviation variability panjang interval waktu
21(No Transcript)
22(No Transcript)
23Kategori pengukuranevolusi software
24Software Re-engineering
- Reorganisasi dan modifikasi sistem software agar
bisa dipelihara (maintainable)
25Re-engineering Sistem
- Restrukturisasi atau penulisan ulang suatu sistem
tanpa merubah fungsionalitasnya, - Dapat diaplikasikan kalau beberapa (bukan
keseluruhan) sub-system dari suatu sistem yang
besar sering memerlukan perawatan, - Memerlukan effort tambahan untuk memudahkan
perawatan. Sistem mungkin di re-strukturisasi
atau re-dokumentasi
26Kapan melakukan Re-engineering
- Kalau perubahan sistem kebanyakan dilakukan pada
bagian sistem maka dilakukan re-engineering pd
bagian tesebut - Ketergantungan terhadap dukungan
hardware/software yang penting - Jika ada dukungan tools untuk re-strukturisasi.
27Keuntungan melakukan Re-engineering SW
- Mengurangi risiko
- Adanya risiko yang tinggi pada pengembangan
softwarebaru. (yaitu masalah pengembangan, staff,
dan spesisfikasi). - Mengurangi biaya
- Biaya re-engineering secara signifikan lebih
kecil dari dari biaya pembuatan software baru
28Business process re-engineering
- Konsentrasi pada proses re-disian bisnis agar
lebih responsive dan efficient - Bergantung pada sistem komputer baru untuk
mendukung proses perbaikan - Software re-engineering didisain untuk mendukung
proses yang ada
29Forward engineering dan re-engineering
30Proses re-engineering
31Faktor biaya Re-engineering
- Kualitas software yang akan di re-engineered
- Fasilitas pendukung yang tersedia untuk proses
re-engineering - Besarnya konversi data yang diperlukan
- Adanya staff yang ahli untuk proses
re-engineering
32Pendekatan Re-engineering
33Source code translation
- Melibatkan konversi code dari satu bahasa
pemrograman ke yang lain mis. COBOL ke C - Diperlukan karena
- Perubahan Hardware platform
- Kemampuan Staff yang kurangan
- Perubahan kebijakan Organisational
- Akan realisitis jika translate dilakukan sec.
Otomatis.
34Proses translate Program
35Reverse engineering
- Menganalisa software untuk mengerti disain dan
spesifikasi SW. - Bisa merupakan bagian proses re-engineering
tetapi dapat juga digunakan untuk melakukan
spesifikasi ulang dalam re-implementasi sistem. - Dapat menggunakan Program understanding tools
(browsers, cross-reference generators, dll.)
36Proses reverse engineering
37Reverse engineering
- Reverse engineering sering diawali oleh
re-engineering tapi dapat juga di keseluruhan
proses reverse engineering itu sendiri - Disain dan specification system dapat
di-reverse-engineered sehingga bisa dijadikan
sebagai input ke requirements specification
process untuk penggantian system (systems
replacement) - Disain dan specification dapat di-reverse-
engineered untuk mendukung pemeliharaan program
38Meningkatkan struktur program
- Program direstrukturisasi secara otomatis untuk
menghilangkan cabang non-kondisi. - Statement kondisi disederhanakan sehingga mudah
dibaca.
39Spaghetti logic
40Kontrol logic terstruktur
41Contoh penyederhanaan suatu kondisi
-- Kondisi yang kompleks if not (A gt B and (C lt D
or not ( E gt F) ) )... --Kondisi yang
sederhana if (A lt B and (Cgt D or E gt F)...
42Restrukturisasi program yang otomatis
43Masalah pada restrukturisasi
- Masalah restrukturisasi
- Kehilangan documentasi
- Kebutuhan akan komputasi yang tinggi
- Restrukturisasi tidak bisa membantu pada sistem
yang memiliki kelemahan modularisainya yaitu
komponen-komponen yg terkait terseber di seluruh
code.
44Modularitas Program
- Proses re-organisasi suatu program sehingga
program yang berkaitan terkumpul menjadi satu
module. - Biasanya dilakukan secara manual pada inspeksi
program dan re-organisasi
45Tipe-tipe Modul
- Abstraksi Data
- Abstract data type untuk pengelompokkan data
structures dan operasinya - Hardware modules
- Fungsi yang diperliukan untuk interface dg
hardware (driver). - Functional modules
- Module terdiri dari fungsi-fungsi yang memiliki
tugas yang saling terkait. - Process support modules
- Modules yang berfungsi mendukung proses bisnis
46Recovering data abstractions
- Many legacy systems use shared tables and global
data to save memory space - Causes problems because changes have a wide
impact in the system - Shared global data may be converted to objects or
ADTs - Analyse common data areas to identify logical
abstractions - Create an ADT or object for these abstractions
- Use a browser to find all data references and
replace with reference to the data abstraction
47Data re-engineering
- Involves analysing and reorganising the data
structures (and sometimes the data values) in a
program - May be part of the process of migrating from a
file-based system to a DBMS-based system or
changing from one DBMS to another - Objective is to create a managed data environment
48Pendekatan untuk data re-engineering
49Data problems
- End-users want data on their desktop machines
rather than in a file system. They need to be
able to download this data from a DBMS - Systems may have to process much more data than
was originally intended by their designers - Redundant data may be stored in different formats
in different places in the system
50Data migration
51Data problems
- Data naming problems
- Names may be hard to understand. The same data
may have different names in different programs - Field length problems
- The same item may be assigned different lengths
in different programs - Record organisation problems
- Records representing the same entity may be
organised differently in different programs - Hard-coded literals
- No data dictionary
52Data value inconsistencies
53Data conversion
- Data re-engineering may involve changing the data
structure organisation without changing the data
values - Data value conversion is very expensive.
Special-purpose programs have to be written to
carry out the conversion
54The data re-engineering process