Anda di halaman 1dari 22

Rekayasa Ulang (Reengineering)

SE-7161

A. Sonhaji Megah Mulya Mubassiran Nasruddin Ari Yanuar

Overview
1. Pendahuluan
1. Definisi Rekayasa Ulang 2. Alasan Rekayasa Ulang

2. Model Tapal kuda


1. Level Rekayasa Ulang

3. Proses Rekayasa Ulang


1. Reverse Engineering 2. Forward Engineering (Migration)

4. Practice
1. Tools & Technology

5. Kesimpulan

Definisi Rekayasa Ulang

adalah transformasi yang sistematis terhadap sistem yang ada ke dalam bentuk baru untuk meningkatkan kualitas beroperasi, kemampuan sistem, fungsionalitas, kinerja, kemampuan untuk berkembang dengan biaya yang murah, terjadwal dan beresiko rendah
[TlSm95]

Alasan
Alasan pengembangan
Kode menjadi rentan dan sulit untuk di-update. Mempertahankan fungsionalitas sistem yang ada (memakai test cases yg sedang digunakan dll.). Sistem yang ada tidak memiliki fungsionalitas yang diharapkan

Penghematan waktu dan biaya


Biaya lebih rendah dari sistem baru Lebih cepat dalam implementasi Produktivitas Developer meningkat

Model Tapal kuda

Reverse Engineering

Forward Engineering Highlevel View

(Abstract)

Sistem Lama

Sistem Baru

Proses Rekayasa Ulang

http://www.sei.cmu.edu/reengineering/horseshoe_model.html

Level Rekayasa Ulang


> Melibatkan Pengguna Merubah arsitektur sistem Berpindah dari bahasa prosedural ke Berorientasi objek Berpindah dari bahasa prosedural ke Berbasis objek Merapihkan kode dan menerapkan standar pengkodean > Otomatis

Proses Rekayasa Ulang


1. Reverse Engineering (Pemahaman Program/Program Understanding)
Reverse Engineering Mengumpulkan data Melihat-lihat (Browsing)

2. Forward Engineering (Pertumbuhan PL/Software Evolution)


Dokumentasi ulang Penstrukturan ulang Modularisasi ulang

[TiSm95]

Reverse Engineering
Reverse engineering adalah proses penganalisisan sistem dengan maksud
mengidentifikasi komponen-komponen sistem dan keterkaitan antar mereka dan merepresentasikan sistem tersebut dalam bentuk yang mempunyai tingkat abstraksi yang lebih tinggi [ChCo90]

Jangan mengubah sistem.

Reverse Engineering (lanjutan)


Sumber Informasi:
Kode Dokumen Skema Basisdata Wawancara

Pengetahuan Yang Diperoleh (Recovered Knowledge)


Business Rules Aliran kendali Kelas dan Pola Modul-modul dan ketergantungannya Arsitektur

Pendekatan dalam Reverse Engineering


Memahami Kode?
Pemahaman Program
50% waktu pengembang digunakan untuk mencoba memahami kode Kakas yang efektif merupakan aset yang besar

Pertanyaan?
Bagaimana pengembang memahami kode mereka? Profesional vs Amatir? Sintaks itu mudah, tapi bagaimana dengan semantik?

Strategi
Top-Down, Bottom-up, Campuran/Hybrid

Reverse Engineering Strategies - Top Down


Top-down
Mulai dengan informasi aras atas dan gunakan itu sebagai dasar melakukan reverse engineering aras yang lebih bawah Tidak diketahui (Unpopular) Biasanya biayanya mahal karena harus menganalisis domain aplikasi. Berbasis pengetahuan (Knowledge based) cari basisdata konsep domain permasalahan dan bandingkan dengan kode.

Reverse Engineering Strategies - Bottomup


Bottom-up
Mulai dengan kode sumber dan gunakan beragam teknik untuk membuat level abstraksi yang lebih tinggi. Riset yang ekstensif dalam otomatisasi reverse engineering pada level ini.

Reverse Engineering Strategies - Hybrid


Pendekatan Hybrid
Ambil informasi level atas, ambil fakta dari kode sumber dan buat model yang sesuai dengan keduanya. Mulai dengan model konseptual dan fakta tentang sistem. Buat model berdasarkan informasi tersebut.

Reverse Engineering- Tools


Maintenance Workbenches
Typically consist of a DB containing an abstract syntax of the source provides static analysis (e.g. call graphs) a debugger filters - show only relevant information, limited querying abilities. Navigation tools or Browser Program Slicing Transformations (porting)

Forward Engineering
Strategies for moving forward:
Ignore/Tolak Ganti Tulis Ulang (Cold Turkey) Incremental (Chicken Little) Evolutionary (Butterfly)

Forward Engineering (contd)


Ignore/Tolak
Jangan lakukan apapun. Tak ada laternatif yang layak.

Ganti
Ganti sistem lama dengan sistem yang dibangun dari OTS.

Tulis Ulang
Buang sistem lama dan mulai dengan kode yang baru resiko besar dan biaya mahal

Forward Engineering (contd)


Incremental
Membangun kerangka untuk sistem yang baru Secara bertahap, ganti bagianbagian sistem lama dengan yang baru Using Gateways and Wrappers

Evolutionary
Bangun/Kembangkan fitur baru sepanjang waktu Fungsionalitas baru ditambahkan sedikit demi sedikit

Forward Engineering-

Development

Berbeda dari pembangunan yang baru


Implementasi yang sudah ada yang (biasanya) berjalan/bekerja

Mirip dengan pengembangan baru


Biasanya proses manual Tidak banyak kakas yang tersedia Masih dalam riset

Forward Engineering -

Tools

Membuat Perubahan
Sistem transformasi
search and replace (prinsip) Kakas Y2K

Kakas Perencanaan

McCabe Reengineer

(http://www.mccabe.com) [OhWo98]

Classify Modules / Files on a complexity scale (red, yellow, green)

Kakas restrukturisasi
C ke C++, C++ ke Java
Ikuti spesifikasi bahasa yang bersesuaian Masih tidak sederhana, tiap bahasa mempunyai karakteristik tersendiri

Reengineering Tools & Technology


Kakas sederhana yang juga berguna dalam proses rekayasa ulang:
grep cscope cxref

Kesimpulan (kasus)
Karena kasus Y2K (perpindahan dari tahun 1999 ke tahun 2000) Transisi dari Mainframe ke Client/Server Pemrograman Beorientasi Objek Permintaan yang banyak dari pihak industri Riset (Lot of research areas)

References
[AnLe98] N. Anquetil, T. Lethbridge, Extracting Concepts from Filenames, IEEE ICSE 1998. [ChCo90] E. Chikofsky, J. Cross, Reverse engineering and design recovery: A taxonomy, IEEE Software, 7(1):13-17, 1990. [OhWo98] M. Ohlsson, C. Wohlin, Identification of Green, Yellow and Red Legacy Components, 1998 Conference on Software Maintenance, pp6-15, 1998. [Sneed84] H. Sneed, Software Renewal: A case study, IEEE Software, 7(1), pp82-89, 1990. [TiSm95] S. Tilley, R. Smith, Perspectives on Legacy System Reengineering, Software Engineering Institute, Carnegie Mellon University, 1995.