Tuesday, October 10, 2023

Reengineering

Reengineering merupakan aspek penting dari evolusi perangkat lunak yang memungkinkan organisasi untuk memodernisasi dan memperbaiki sistem yang sudah ada guna menjawab tantangan bisnis dan teknologi yang terus berkembang.

Reengineering/ rekayasa ulang dalam evolusi perangkat lunak merujuk pada proses di mana sistem perangkat lunak yang sudah ada direstrukturisasi atau dimodifikasi secara mendalam. Tujuan utama dari reengineering adalah meningkatkan kualitas, kinerja, dan/atau fungsionalitas sistem yang sudah ada tanpa mengubah fungsionalitas eksternalnya. 

Berikut adalah beberapa poin penting terkait reengineering dalam evolusi perangkat lunak:

Tujuan Reengineering:

  • Peningkatan Kualitas: Memperbaiki kelemahan dan cacat dalam perangkat lunak yang sudah ada.
  • Peningkatan Kinerja: Meningkatkan efisiensi dan responsivitas sistem.
  • Peningkatan Fungsionalitas: Menambah atau memperbaharui fitur-fitur tertentu agar sesuai dengan kebutuhan baru.

Proses Reengineering:

  • Analisis Awal: Evaluasi menyeluruh terhadap sistem yang sudah ada, mengidentifikasi kelemahan dan area untuk perbaikan.
  • Perancangan Ulang: Menentukan strategi dan metode untuk memperbaiki atau mengganti bagian-bagian kritis dari sistem.
  • Implementasi: Melaksanakan perubahan yang telah direncanakan dengan memastikan integrasi yang baik dengan sistem yang sudah ada.
  • Pengujian: Menguji kembali sistem untuk memastikan bahwa perubahan yang dilakukan memenuhi standar kualitas yang diinginkan.
  • Pemeliharaan: Memberikan dukungan dan pemeliharaan berkelanjutan setelah perubahan diimplementasikan.

Alasan Reengineering:

  • Perubahan Bisnis: Kebutuhan bisnis yang berubah dapat memerlukan penyesuaian besar terhadap sistem yang ada.
  • Teknologi Baru: Pengenalan teknologi baru atau perubahan dalam paradigma pengembangan perangkat lunak.
  • Perubahan Kebutuhan Pengguna: Respon terhadap perubahan kebutuhan atau harapan pengguna.
  • Peningkatan Kualitas: Jika sistem mengalami masalah kualitas atau keamanan yang signifikan.

Manfaat Reengineering:

  • Peningkatan Efisiensi: Meningkatkan kinerja dan mengurangi kelemahan yang mungkin ada.
  • Perpanjangan Umur Sistem: Memperpanjang masa pakai sistem yang sudah ada dengan membuatnya lebih adaptif terhadap perubahan.
  • Penyesuaian dengan Standar Baru: Menyesuaikan sistem dengan standar industri atau regulasi yang baru.

Tantangan Reengineering:

  • Kesulitan dalam Pemahaman Sistem yang Ada: Sistem yang sudah ada mungkin kompleks dan sulit dipahami dengan baik.
  • Risiko Pengenalan Cacat Baru: Perubahan yang dilakukan dapat memperkenalkan cacat baru atau mengganggu fungsionalitas yang sudah ada.



A new software is created by going downward from the top, highest level of abstraction to the bottom, lowest level. This downward movement is known as forward engineering. 

Forward engineering follows a sequence of activities: 
  • formulating concepts about the system to identifying requirements to designing the system to implementing the design. 
  • On the other hand, the upward movement through the layers of abstractions is called reverse engineering.

Reverse engineering of software systems is a process comprising the following steps: 
  • analyze the software to determine its components and the relationships among the components and 
  • represent the system at a higher level of abstraction or in another form [6]. 

Some examples of reverse engineering are: 
  • decompilation, in which object code is translated into a high-level program; 
  • architecture extraction, in which the design of a program is derived; 
  • document generation, in which information is produced from, say, source code, for better understanding of the program; and 
  • software visualization, in which some aspect of a program is depicted in an abstract way.

Reengineering process 

  •  recreate a design from the existing source code;
  •  find the requirements of the system being reengineered;
  •  compare the existing requirements with the new ones;
  •  remove those requirements that are not needed in the renovated system;
  •  make a new design of the desired system; and code the new system.



Strategi Reengineering

Strategi reengineering perangkat lunak melibatkan pendekatan sistematis untuk memodifikasi, meningkatkan, atau mengganti sistem perangkat lunak yang sudah ada. Berikut adalah beberapa strategi umum dalam reengineering perangkat lunak beserta contohnya:

Reverse Engineering (Pemahaman Kembali):
Deskripsi: Menganalisis sistem yang sudah ada dari kode sumber atau biner untuk memahami strukturnya.
Contoh: Menggunakan alat analisis statis untuk mengekstrak model arsitektur dari kode sumber yang tidak dokumentasi.

Re-documentation (Dokumentasi Ulang):
Deskripsi: Membuat ulang atau memperbarui dokumentasi sistem untuk meningkatkan pemahaman.
Contoh: Menghasilkan dokumentasi baru yang mencakup struktur sistem, alur kerja, dan desain.

Restructuring (Penyusunan Ulang):
Deskripsi: Mengubah struktur internal sistem tanpa mengubah fungsionalitas eksternalnya.
Contoh: Memperbarui struktur database untuk meningkatkan efisiensi tanpa mengubah antarmuka pengguna.

Forward Engineering (Pengembangan ke Depan):
Deskripsi: Membangun kembali sistem dari awal berdasarkan pemahaman yang telah diambil dari sistem yang sudah ada.
Contoh: Mengimplementasikan kembali sistem menggunakan teknologi terkini dengan memanfaatkan spesifikasi dan fungsionalitas yang sudah ada.

Re-implementation (Implementasi Ulang):
Deskripsi: Mengganti atau membangun ulang bagian-bagian tertentu dari sistem dengan implementasi yang baru.
Contoh: Mengganti modul kritis dengan implementasi yang lebih efisien atau aman.

Data Migration (Migrasi Data):
Deskripsi: Pindah dari struktur data yang lama ke struktur yang baru tanpa kehilangan atau merusak data yang ada.
Contoh: Mengubah format database dari satu sistem manajemen database ke sistem manajemen database lainnya.

Reengineering Berbasis Komponen:
Deskripsi: Membongkar sistem menjadi komponen-komponen yang lebih kecil dan menggantinya dengan komponen-komponen yang lebih modern atau efisien.
Contoh: Mengganti modul tertentu dalam sistem dengan komponen baru yang menyediakan fungsionalitas yang serupa, tetapi dengan kualitas yang lebih baik.

Automated Code Refactoring (Pemrosesan Kode Otomatis):
Deskripsi: Menggunakan alat atau teknik otomatis untuk meningkatkan struktur dan kualitas kode tanpa mengubah fungsionalitas.
Contoh: Menggunakan alat refactoring untuk memperbaiki gaya penulisan kode, menghilangkan kode mati, atau meningkatkan efisiensi.




Tugas :


Buatlah studi kasus software/ aplikasi yang melakukan teknik Reengineering

Referensi





No comments:

Post a Comment

Final Project EPL 2023

  Monitoring Form  Monitoring Tugas Hasil Monitoring