Reverse Engineering atau Rekayasa Balik

Ringkasan Reverse Engineering
Merupakan proses menganalisa permasalahan system yang dilakukan untuk :
  • Mengidentifikasi komponen system dan hubungan timbal baliknya
  • Membuat gambaran system dalam bentuk lain atau level abstraksi yang lebih tinggi.
1.1 Abstraction
Abstraksi diperoleh dengan mendapatkan gambaran fasilitas penting dari permasalahan system dan mengabaikan hal yang tidak relevan dengan system. Ada tiga tipe abstraksi yang dapat dilakukan oleh software system yaitu fungsi abstraksi, data abstraksi dan proses abstraksi.

1.1.1 Fungsi Abstraksi
Fungsi abstraksi juga dikatakan sebagai abstraksi procedural dan berarti menimbulkan beberapa fungsi dari system target, aspek yang mengoperasikan objek data dan menghasilkan output yang cocok. Fungsi biasanya dijelaskan menggunakan kata kerja seperti add, check, pop, dan lain-lain. Fungsi sering digambarkan sebagai hubungan input output, fungsi f mengambil x sebagai input dan menghasilkan f(x) sebagai output. Selama proses abstraksi, fungsi abstraksi digunakan dalam hal apa fungsi yang digunakan dan bukan bagaimana fungsi beroperasi.

1.1.2 Data Abstraksi
Fokus utama data abstraksi adalah objek data. Detail implementasi dianggap tidak relevan. Contoh khusus dari abstraksi data adalah menghasilkan tipe data abstrak untuk tumpukan (stack) dengan operasi CreateStack, push, isEmptyStack, dan pop. Contoh data abstraksi pada level design dalam system berorientasi objek adalah enkapsulasi dari tipe objek dan operasi yang dikaitkan dalam modul atau class.

1.1.3 Proses Abstraksi
merupakan abstrak dari target system yang tepat dimana operasi akan dilakukan. Ada dua class proses yang dapat diabstraksi, yaitu concurrent dan distributed process. Concurrent proses berkomunikasi melalui sharing data agar disimpan di dalam alokasi memori yang dibuat. Distributed proses biasanya berkomunikasi melalui “pesan yang lewat” dan tidak mempunyai ruang untuk sharing data.

1.2 Maksud dan Tujuan Reverse Engineering
Konsep reverse engineering diambil dari disiplin teknik yang dibuat seperti manufactur. Reverse engineering popular dalam bidang rekayasa perangkat lunak secara umum dan pemeliharaan perangkat lunak secara khusus untuk kemungkinan dalam membantu pemahaman kode program. Komponen system dibuat dari fase berbeda dari daur hidup software, contoh : spesifikasi permintaan, arsitekur dan detail design, dan source code yang sesungguhnya. Walaupun reverse engineering dapat dimulai dari hasil apapun, kebanyakan point awal yang dipakai adalah source code program, terutama setelah beberapa tahun mengalami evolusi, spesifikasi atau design informasi system mungkin tidak akurat atau tidak tersedia. Tujuan reverse engineering adalah untuk memfasilitasi perubahan yang diijinkan software system agar dapat dipahami dalam hal apa yang dikerjakan, bagaimana dikerjakan, dan gambaran arsitektural.

Tujuan dan Keuntungan Reverse Engineering



1.3 Tingkat Reverse Engineering
Reverse engineering melibatkan satu atau lebih tipe abstraksi yang dipakai, baik menggunakan cara bottom up maupun incremental. Berikut ini level setiap abstraksi pada suatu system software.



1.3.1 Redocumentation
Merupakan proses pembuatan ulang secara semantic yang sama dengan gambaran dalam tingkat abstraksi yang relative sama. Tujuan proses ini ada tiga :
  • Untuk membuat gambaran alternative system sehingga dapat memperdalam pemahaman, contoh : turunan hirarki diagram aliran data atau diagram aliran control dari suatu source code
  • Untuk memperbaiki dokumentasi yang sedang digunakan. Idealnya setiap dokumentasi seharusnya dibuat selama pengembangan system dan diupdate selama perubahan system terjadi.
  • Untuk menghasilkan dokumentasi modifikasi program yang baru.
1.3.2 Design Recovery
Design recovery dibutuhkan untuk mengidentifikasi dan menggali maksud dari level abstraksi yang lebih tinggi melalui informasi yang diperoleh secara langsung dari pemeriksaan source code. Hal tersebut dapat dicapai dari kombinasi kode, design dokumentasi yang ada, pengalaman individu, dan pengetahuan masalah dan bidang aplikasi. Design recovery yang tidak memerlukan design asli, dapat digunakan untuk mengembangkan ulang system. Dengan kata lain, hasil bentuk design merupakan basis untuk modifikasi system di masa yang akan datang.

1.3.3 Specification Recovery
Idealnya recovery spesifikasi dijelaskan dalam sebuah bentuk yang dapat diimplementasikan dengan mudah dalam paradigma atau bahasa pemrograman lain. Spesifikasi recovery selama reverse engineering dapat diletakkan dalam sejumlah penggunaan :
  • Sewajarnya, gambaran spesifikasi system dapat digunakan untuk mendukung pemeliharaan software tanpa perlu meminta akses ke source code.
  • Spesifikasi membantu pengelola dalam memperoleh tingkat pemahaman yang tepat dan dibutuhan untuk melakukan perubahan terhadap system software.
  • Jika spesifikasi yang digambarkan sesuai, maka dapat digunakan dalam perkembangan atau pemeliharaan system software yang serupa.
1.4 Dukungan Teknis
Pemahaman yang diperoleh melalui reverse engineering dapat mendukung implementasi perubahan melalui teknik seperti forward engineering, restructuring, dan reengineering.

1.4.1 Forward Engineering
sebagai suatu saran istilah, merupakan kebalikan dari reverse engineering. Forward engineering mengacu pada pendekatan pengembangan perangkat lunak tradisional melanjutkan dari persyaratan pelaksanaan rinci melalui design system.

1.4.2 Restructuring
Melibatkan perubahan system dari suatu bentuk representasi ke bentuk lain pada level abstraksi yang relative sama tanpa perubahan secara fungsional atau semantic. Perubahan akan berbentuk dalam format yang diinginkan. Ada beberapa macam tipe restructuring yang berbeda dalam bagian system yang dipengaruhi dan cara yang diselesaikan :
  • Control flow driven restructuring : melibatkan pembebanan struktur control yang jelas dalam source code dan dapat berupa intermodular dan intramodular secara alami.
  • Efficiency driven restructuring : melibatkan restructuring fungsi atau algoritma untuk membuat hal tersebut lebih efisien.
  • Adaption driven restructuring : melibatkan perubahan gaya pengkodean dalam rangka adaptasi program ke bahasa pemrograman baru atau lingkungan system operasi baru.
1.4.3 Reengineering
Merupakan proses memeriksa dan menambahkan system tujuan untuk mengimplementasikan modifikasi yang diinginkan. Reengineering terdiri dari dua tahap :
  • Reverse engineering yang dipakai system tujuan agar mudah dipahami dan menggambarkannya dalam bentuk baru.
  • Forward engineering yang dipakai, mengimplementasikan dan mengintegrasi kebutuhan baru, dengan demikian memberikan peningkatan untuk system dan peningkatan fasilitas yang baru.

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:

1 Tanggapan untuk "Reverse Engineering atau Rekayasa Balik"

  1. Maaf gan, numpang nanya ini kan saya ada tugas untuk presentasi tentang reserve engineering, yang saya tanyakan untuk gambaran sistem ke bentuk level abstraksi yang lebih tinggi, contohnya apa ya? dan juga untuk gambar tingkat reserve engineering saya kurang paham tolong dijelasin.
    untuk balasannya saya tunggu di email
    rizal.lonly@gmail.com

    ReplyDelete