Rekayasa Ulang Perangkat Lunak
Rekayasa ulang perangkat lunak adalah pemeriksaan dan perubahan sistem yang ada untuk menyusunnya kembali dalam bentuk baru yang lebih baik, biasanya untuk memodernisasi perangkat lunak lama yang menua sambil mempertahankan perilaku esensialnya.
Definition
Rekayasa ulang perangkat lunak adalah proses memeriksa sistem subjek untuk memahaminya dan kemudian mengimplementasikan kembali atau merestrukturisasinya untuk meningkatkan bentuk atau platformnya sambil secara substansial mempertahankan fungsionalitasnya.
Scope
Topik ini mencakup rekayasa balik dan pemulihan desain; restrukturisasi kode dan data; migrasi ke platform, bahasa, dan arsitektur baru; pembungkusan (wrapping) dan strategi modernisasi inkremental untuk sistem lama; pengujian untuk mempertahankan perilaku selama transformasi; dan kriteria keputusan untuk rekayasa ulang versus pemeliharaan berkelanjutan atau penggantian.
Core questions
- Bagaimana desain sistem lama dipulihkan dari kode dan datanya?
- Strategi mana yang memigrasikan atau merestrukturisasi sistem dengan risiko yang dapat diterima?
- Bagaimana perilaku dipertahankan saat implementasi diubah?
- Kapan rekayasa ulang mengungguli pemeliharaan berkelanjutan atau penggantian penuh?
Key theories
- Rekayasa balik dan pemulihan desain
- Chikofsky dan Cross mendefinisikan taksonomi yang membedakan rekayasa balik (memulihkan representasi tingkat yang lebih tinggi dari suatu sistem) dari redokumentasi, restrukturisasi, dan rekayasa maju, membingkai aktivitas pemulihan desain.
- Modernisasi inkremental sistem lama
- Alih-alih penulisan ulang 'big-bang' yang berisiko, sistem lama dimodernisasi secara inkremental dengan memperkenalkan pengujian di sekitar kode yang ada, mengisolasi titik perubahan, dan secara bertahap merestrukturisasi atau mengganti komponen.
Clinical relevance
Rekayasa ulang memungkinkan organisasi memperpanjang masa pakai dan nilai sistem lama yang penting bagi bisnis dengan risiko lebih rendah daripada menulis ulang dari awal; strategi yang baik dan teknik pelestarian perilaku sangat penting karena sistem lama sering kali menyimpan pengetahuan bisnis yang tak tergantikan dan tidak terdokumentasi.
History
Seiring dengan menuanya sistem besar yang dibangun pada tahun 1960-an hingga 1980-an, rekayasa balik dan rekayasa ulang muncul sebagai perhatian yang berbeda pada akhir 1980-an dan 1990-an, diformalkan oleh taksonomi Chikofsky dan Cross; teknik praktis untuk mengelola kode lama yang belum teruji kemudian dikodifikasi oleh Feathers.
Debates
- Rekayasa ulang inkremental versus penulisan ulang penuh
- Apakah akan memodernisasi sistem lama secara inkremental atau menulis ulang secara keseluruhan masih diperdebatkan; penulisan ulang menjanjikan awal yang bersih tetapi seringkali melebihi anggaran dan kehilangan pengetahuan yang tertanam, sementara rekayasa ulang inkremental lebih aman tetapi lebih lambat.
Key figures
- Elliot Chikofsky
- James Cross
- Michael Feathers
Related topics
Seminal works
- chikofsky1990
- feathers2004
- sommerville2015
Frequently asked questions
- Apa perbedaan antara refactoring dan rekayasa ulang?
- Refactoring membuat perbaikan kecil yang mempertahankan perilaku pada kode sumber, biasanya sebagai bagian dari pengembangan berkelanjutan; rekayasa ulang adalah aktivitas berskala lebih besar yang dapat memulihkan desain dan memigrasikan seluruh sistem ke platform atau arsitektur baru, di mana refactoring dapat menjadi salah satu tekniknya.
- Mengapa tidak menulis ulang sistem lama dari awal saja?
- Sistem lama sering kali mewujudkan aturan bisnis yang terakumulasi selama bertahun-tahun dan terdokumentasi dengan buruk; penulisan ulang dari awal berisiko kehilangan pengetahuan ini dan umumnya melebihi anggaran, sehingga rekayasa ulang inkremental seringkali merupakan jalur dengan risiko lebih rendah meskipun kecepatannya lebih lambat.