Pemahaman kode dalam pemeliharaan perangkat lunak

Pada bab sebelumnya kita sudah membahas mengenai tipe perubahan software system diantaranya: corrective (berkaitan dengan kerusakan), adaptive (berkaitan dengan perubahan dalam lingkungan), perfective (untuk menampung permintaan baru). Hal tersebut dapat dikelompokkan dalam sebuah kerangka agar perubahan dapat diimplementasikan dengan efektif.

Akan tetapi ada bidang yang belum tersentuh dari materi tersebut, yang merupakan dasar untuk melakukan proses perubahan dengan efektif, yaitu understanding. Tepat sebelum mengimplementasi perubahan, perlu untuk memahami produk software secara keseluruhan dan program yang dibuat dari perubahan secara umum.

Program understanding (pemahaman kode) menghabiskan bagian penting dari usaha dan sumber pemeliharaan. Sebagai contoh : perusahaan IT HP (Hewlett Packard), memperkirakan bahwa membaca kode (elemen dasar dalam pemahaman) menghabiskan biaya $200 million (juta) dalam satu tahun. Data dari industry dan sumber lain juga mengindikasikan bahwa sekitar separuh dari total usaha pembelanjaan untuk mengefektifkan perubahan adalah dalam pemahaman kode. 

1.1 Tujuan Program Understanding (Pemahaman Kode)
Tujuan akhir dari membaca dan memahami program adalah untuk mengimplementasikan perubahan yang diinginkan oleh pengguna dengan sukses.

Keutamaan produk software dan kepentingannya untuk dipahami
Bidang pengetahuan pada proses pemahaman kode
Kegunaan
Problem domain (bidang permasalahan)
  • Untuk membantu dalam memperkirakan sumber daya
  • Untuk mengarahkan pilihan algoritma, metodologi, tools, dan personnel yang sesuai
Akibat dari pelaksanaan (execution effect)
  • Untuk menentukan ya atau tidaknya perubahan apabila tidak mencapai efek yang diinginkan
Hubungan sebab akibat
  • Untuk membuat cakupan bidang perubahan
  • Untuk memprediksi efek reaksi potensial
  • Untuk mencari aliran data dan aliran control
Hubungan produk dengan lingkungan
  • Untuk mengetahui apakaj perubahan dalam lingkungan produk akan mempengaruhi produk dan alasan pokok yang mendasari programnya
Mengutamakan dukungan keputusan
  • Untuk mendukung secara teknik dan manajement dalam membuat keputusan

1.2       Pengelola dan Informasi Yang Dibutuhkan
Dalam proses pemeliharaan, tidak perlu agar setiap anggota dari tim project pemeliharaan memahami setiap hal dari system yang dipelihara. Anggota dalam sebuah tim pemeliharaan meliputi : managers, analyst, designer, dan programmers, semua anggota mempunyai perbedaan pemahaman atau informasi tergantung pada level yang mereka kerjakan.

1.2.1 Manager
Mengingat bahwa salah satu tanggung jawab manajemen adalah membuat keputusan, seorang manager harus mempunyai pengetahuan pendukung keputusan dalam rangka untuk membuat keputusan. Level pemahaman yang dibutuhkan akan tergantung pada keputusan yang akan diambil. Contoh : untuk memperkirakan biaya dan durasi perbaikan utama, pengetahuan ukuran program (terkait dengan baris kode atau nilai fungsi ) dibutuhkan. Estimasi atau perkiraan dan digunakan untuk menentukan ya atau tidaknya, sehingga lebih ekonomis untuk menggantikan system dengan sebuah vendor system baru. Manager tidak membutuhkan pengetahuan tentang arsitektur design system atau detail penerapan low level program, agar melaksanakan tugas masing-masing.

1.2.2 Analyst
Selama pengembangan software, seorang analyst butuh memahami bidang permasalah (contoh : penjualan, keuangan, kesehatan, dan lain-lain) agar dapat menjalankan tugas seperti menentukan kebutuhan fungsional dan non fungsional, dan untuk menyusun hubungan system dengan elemen lingkungan system. Selama fase pemeliharaan, seorang analyst akan berkaitan dengan mengetahui bagaimana perubahan di lingkungan (contoh : OS yang baru) yang akan mempengaruhi system. Jadi, sebelum menerapkan perubahan, analyst harus memahami gambaran secara global dari system, gambaran umum interaksi diantara fungsional unit utama. Analyst juga harus menentukan implikasi dari perubahan terkait dengan kemampuan system.

1.2.3 Designer
Model proses dari system software dapat diselesaikan dengan dua level yaitu arsitektural design dan detail design. Arsitektural design menghasilkan pembuatan dari fungsional komponen, struktur conceptual data dan interkoneksi antara variasi komponen. Detail design menghasilkan detail algoritma yang digunakan, representasi data, struktur data dan interface antara prosedur dan fungsi.
Pekerjaan designer selama proses pemeliharaan adalah :
  • Menggali informasi dan menentukan bagaimana perbaikan dapat diakomodasi dengan arsitektur, struktur data, aliran data dan aliran control dari system yang ada.
  • Mengerjakan melalui source code yang ada, untuk mendapatkan gambaran ide lingkup pekerjaan, area system yang dipakai, dan pengetahun dan kemampuan yang dibutuhkan oleh tim programming yang melaksanakan pekerjaan.
Kegunaan konsep seperti data abstraksi, object orientation, dan notasi design yang baik seperti dfd, diagram aliran control, struktur chart, HIPO chart, dapat membantu designer untuk mendapat pemahaman yang baik dari system sebelum mendesign suatu perubahan.

1.2.3    Programmers
Dalam proses pemeliharaan, programmer dibutuhkan untuk mengetahui pengaruh pelaksanaan system pada berbagai tingkat abstraksi, pengetahuan sebab akibat, dan pengetahuan tentang hubungan produk-lingkungan. Pada tingkat abstraksi yang lebih tinggi (tingkat sistem), programmer membutuhkan pengetahuan fungsi dari komponen individu dari system dan hubungan sebab akibatnya. Pada tingkat abstraksi yang lebih rendah (modul dan prosedur individu), programmer membutuhkan pemahaman setiap statement program kerjakan, urutan eksekusi (aliran kontrol), efek transformasi pada objek data (aliran data), dan maksud sekumpulan statement program (fungsi). Dari informasi yang diperoleh tersebut, akan membantu programmer untuk menyelesaikan :
  • Menentukan untuk membuat struktur ulang atau menulis ulang segment kode spesifik
  • Untuk memprediksi lebih mudah efek sehari-sehari ketika membuat perubahan yang mempengaruhi bagian lain pada system.
  • Untuk menemukan hipotesis lokasi dan penyebab error
  • Untuk menentkan kemungkinan perubahan yang diusulkan dan memberitahu manajemen tentang antisipasi masalah yang kemungkinan muncul
1.3 Model Proses Pemahaman
Programmer mempunyai cara berpikir yang bervariasi, penyelesaian masalah yang sesuai, dan pemilihan alat dan teknik yang cocok. Secara umum, ada tiga aksi yang dilakukan dalam memahami program yaitu :

1.4 Strategi Pemahaman Program
 
Model
Features
Prinsip model
Teori proses
Teori struktur
Top down
Pemahaman kode merupakan pemetaan mulai dari bagaimana program bekerja (programming domain) hingga apa yang dikerjakan (problem domain)
  • Top-down merekonstruksi bidang pengetahuan dan pemetaannya
  • Rekonstruksi dilakukan berdasarkan hipotesis yang dibuat, konfirmasi dan siklus perbaikan
  • Permasalahan dan bidang pengetahuan pemrograman
  • Tingkat potensial bidang pengetahuan
  • Berbagai lapisan bidang pengetahuan
Bottom up
Pengenalan pola pengulangan dalam kode program
  • Bottom-up memotong pola pengenalan untuk menghasilkan struktur semantic tingkat tinggi
  • Pemetaan antara bidang pengetahuan
  • Hirarki multi layer susunan pola
Opportunistic
Kombinasi antara strategi top down dengan bottom up
  • Isyarat Top down dan bottom up dimanfaatkan karena ketersediaan
  • Asimilasi proses digunakan untuk mendapatkan informasi dari source code dan dokumentasi system
  • Serupa dengan top down dan bottom up digambarkan tergantung pada level abstraksi

1.5 Teknik Membaca
Membaca merupakan kunci dalam memahami dan membuat software. Persoalan dalam mengembangkan teknik membaca yang efektif adalah dengan memfokuskan pada konteks yang spesifik. Apakah tujuan dari latihan membaca?penelitian menunjukkan bahwa jika teknik membaca difokuskan pada tujuan, maka akan lebih efektif dalam mencapai tujuan itu. Motivasi untuk belajar dan memahami teknik membaca adalah untuk mengembangkan definisi dan proses efektif agar dapat dipelajari.

1.6 Faktor Yang Mempengaruhi Pemahaman
Sejumlah faktor dapat mempengaruhi tidak hanya formasi model mental program, tetapi juga dari akurasi, kebenaran, dan kelengkapan, karena itu kemudahan dalam suatu program dapat dipahami dengan baik. Beberapa faktor yang mempengaruhi proses pemahaman diantaranya : ahli, praktisi pemrograman dan penerapan isu, dokumentasi, presentasi dan organisasi program, dukungan alat dan pengembangan permintaan.


        
Referensi :
Sommerville, Ian.2007.Software Engineering. United Kingdom : Addison-Wesley Publishers
Pigoski, Thomas.1997.Practical Software Maintenance Best Practices for Managing Your Software Investment. Canada : John Wiley & Sons, Inc.
Grub, Penny and Takang, Amstrong A.2003.Software Maintenance concepts dan practice.Singapura : World Scientific Publishing.


Postingan terkait:

Belum ada tanggapan untuk "Pemahaman kode dalam pemeliharaan perangkat lunak"

Post a Comment