Tugas W15 – Rekayasa Ulang Perangkat Lunak IF5124 Evolusi Perangkat Lunak Tanggal Pengumpulan: 28-04-2017 Tugas W15 – Rekayasa Ulang Perangkat Lunak IF5124 Evolusi Perangkat Lunak Oleh: Anandhini Medianty Nababan / 23516022 Outline Tugas: No Deliverable 1 Apa yang dimaksud dengan reengineering/rekayasa ulang perangkat Check Hal ✓ 1 ✓ 1 ✓ 2 ✓ 2 lunak? 2 Mengapa perlu melakukan reengineering/rekayasa ulang perangkat lunak? 3 Apa yang dimaksud dengan forward engineering dan reverse engineering? Apa perbedaannya? 4 Jelaskan dengan contoh bagaimana melakukan reengineering perangkat lunak, proses-proses apa saja yang perlu dilakukan, metode dan tools apa saja yang digunakan dan terlibat! 5 Apa risks dan benefits dari reengineering perangkat lunak? ✓ 6 6 Bagaimana hubungan antara reengineering perangkat lunak ✓ 6 ✓ 7 kaitannya dengan proses evolusi perangkat lunak? 7 1. Referensi Definisi reengineering/rekayasa ulang perangkat lunak Sofware reengineering adalah proses pengorganisasian kembali dan modifikasi perangkat lunak yang ada untuk menjadikannya lebih dapat dipelihara. 2. Pentingnya melakukan reengineering/rekayasa ulang perangkat lunak - Ketika software tidak dapat dipelihara (masalah pemeliharaan software). Perangkat masih berjalan, namun setiap kali perubahan terjadi, efek samping yang serius dan tidak diharapkan terjadi. Padahal, aplikasi harus tetap berevolusi. - Ketika software menjadi usang. 23516022 - Tugas W15 - Rekayasa Ulang Perangkat Lunak.docx Halaman 1 dari 7 Tugas W15 – Rekayasa Ulang Perangkat Lunak IF5124 Evolusi Perangkat Lunak 3. Tanggal Pengumpulan: 28-04-2017 Definisi forward engineering, reverse engineering dan perbedaan keduanya - Forward engineering Forward engineering adalah proses yang menerapkan prinsip, konsep, dan metode rekayasa perangkat lunak untuk membangun kembali aplikasi yang ada. - Reverse engineering Reverse engineering adalah proses menganalisis sebuah program dalam upaya untuk menghasilkan representasi program tersebut pada level abstraksi yang lebih tinggi daripada source code. - 4. Perbedaan antara forward engineering dan reverse engineering Forward Engineering Reverse Engineering Proses konstruksi perangkat lunak Proses dekonstruksi perangkat lunak Menghasilkan program dari level Menghasilkan representasi program abstraksi yang lebih tinggi (dari model pada level abstraksi yang lebih tinggi ke program) (dari program ke model) Proses reengineering perangkat lunak dan contoh Model proses rekayasa ulang perangkat lunak ditunjukkan oleh gambar berikut. Paradigma rekayasa ulang yang ditunjukkan adalah model cyclical. Artinya, setiap aktivitas yang dihadirkan sebagai bagian paradigma tersebut mungkin direvisi. Untuk siklus tertentu, proses dapat berakhir setelah salah satu dari aktivitas-aktivitas ini. 23516022 - Tugas W15 - Rekayasa Ulang Perangkat Lunak.docx Halaman 2 dari 7 Tugas W15 – Rekayasa Ulang Perangkat Lunak IF5124 Evolusi Perangkat Lunak Tanggal Pengumpulan: 28-04-2017 Gambar X. Model proses reengineering a. Analisis inventaris Inventaris aplikasi seharusnya dimiliki oleh setiap organisasi perangkat lunak. Inventaris adalah model spreadsheet yang mengandung informasi yang menyediakan deskripsi rinci (misalnya, size, umur, kekritisan bisnis) dari setiap aplikasi yang aktif. Dengan menyortir informasi ini sesuai kekritisan bisnis, umur, maintainability dan supportability saat ini, dan kriteria penting secara local lainnya, kandidat untuk reengineering muncul. Sumber daya dapat kemudian dialokasikan ke aplikasi kandidat untuk pelaksanaan reengineering. Penting untuk diperhatikan bahwa inventaris harus ditinjau kembali secara teratur. Status aplikasi (misalnya kekritisan bisnis) dapat berubah sebagai fungsi waktu, dan hasilnya, prioritas untuk reengineering akan bergeser. b. Restrukturisasi dokumen Dokumentasi yang lemah adalah trademark dari banyak sistem warisan. Dalam beberapa kasus, membuat dokumentasi ketika tidak ada sangatlah mahal. Jika perangkat lunak berjalan dengan baik, biarkan saja. Dalam kasus yang lain, beberapa dokumentasi harus dibuat, tetapi hanya ketika ada perubahan. Akhirnya, ada situasi dimana sistem kritis harus seluruhnya didokumentasikan. Organisasi perangkat lunak harus memilih pendokumentasian mana yang paling sesuai dengan kasus di organisasi tersebut. 23516022 - Tugas W15 - Rekayasa Ulang Perangkat Lunak.docx Halaman 3 dari 7 Tugas W15 – Rekayasa Ulang Perangkat Lunak IF5124 Evolusi Perangkat Lunak c. Tanggal Pengumpulan: 28-04-2017 Reverse-engineering Reverse engineering adalah proses recovery desain. Kakas reverse engineering mengekstrak data, arsitektural dan informasi desain prosedural dari sebuah program yang ada. d. Restrukturisasi kode Jenis reengineering yang paling umum adalah restrukturisasi kode. Beberapa sistem warisan mempunyai arsitektur program yang kuat secara relatif, tetapi modul individual dikodekan dengan cara yang membuatnya sulit dipahami, diuji, dan dipelihara. Dalam kasus seperti itu, restrukturisasi dapat dilakukan untuk kode dalam suspect modules. Untuk menyelesaikan aktivitas ini, source code dianalisis menggunakan kakas restrukturisasi. Pelanggaran konsep pemrograman terstruktur dicatat dan kode kemudian direstrukturisasi atau bahkan ditulis kembali bahasa pemrograman yang lebih modern. Kode hasil restrukturisasi diperiksa dan diuji untuk memastikan bahwa tidak ada anomali yang telah terjadi. Dokumentasi kode internal diperbarui. e. Restrukturisasi data Sebuah program dengan arsitektur data yang lemah akan sulit untuk beradaptasi. Faktanya, untuk banyak aplikasi, arsitektur informasi lebih banyak hubungannya dengan kelangsungan hidup jangka-panjang dari sebuah program daripada source code itu sendiri. Tidak seperti restrukturisasi kode yang terjadi di tingkat abstraksi yang relatif rendah, restrukturisasi data adalah aktivitas reengineering skala-penuh. Dalam kebanyakan kasus, retstrukturisasi data memulai dengan aktivitas reverse engineering. Arsitektur data saat ini dibedah, model data yang diperlukan didefinisikan. Atribut dan objek data diidentifikasi, dan struktur data yang ada diperiksa untuk kualitas. Ketika struktur data lemah, data direkayasa kembali. Karena arsitektur data memiliki pengaruh yang kuat pada arsitektur program dan algoritma yang mendiaminya, perubahan data akan selalu menghasilkan perubahan entah level-kode atau arsitektural. f. Forward engineering Idealnya, aplikasi akan dibangun kembali menggunakan mesin reengineering. Program yang lama akan dimasukkan ke dalam mesin tersebut, dianalisis, distrukturisasi ulang, dan kemudian dihasilkan kembali dalam bentuk yang memperlihatkan aspek kualitas perangkat lunak terbaik. Forward engineering tidak hanya memperoleh kembali informasi desain dari 23516022 - Tugas W15 - Rekayasa Ulang Perangkat Lunak.docx Halaman 4 dari 7 Tugas W15 – Rekayasa Ulang Perangkat Lunak IF5124 Evolusi Perangkat Lunak Tanggal Pengumpulan: 28-04-2017 perangkat lunak yang ada tetapi mengunakan informasi ini untuk mengubah atau menyusun kembali sistem yang ada dalam upaya untuk memperbaiki kualitasnya secara keseluruhan. Dalam kebanyakan kasus, perangkat lunak yang direkayasa ulang membuat kembali fungsi sistem yang ada dan juga menambahkan fungsi yang baru dan/atau memperbaiki performansi keseluruhan. Contoh kakas yang digunakan untuk melakukan reengineering adalah DMS Software Reengineering Toolkit. Model DMS yang sangat sederhana ditunjukkan oleh gambar berikut, bahwa compiler memiliki: • Sebuah parser (menghasilkan struktur data sepert-compiler) • Satu set semantic analyzer, termasuk berbagai mesin pattern matching • formatting component keluaran akhir (mengkonversi struktur data kembali ke source code yang valid). Software reengineering toolkit dapat digunakan untuk mengimplementasikan variasi yang luas dari kakas peningkatan program. DMS dapat dengan mudah digunakan untuk meningkatkan kualitas perangkat lunak. 23516022 - Tugas W15 - Rekayasa Ulang Perangkat Lunak.docx Halaman 5 dari 7 Tugas W15 – Rekayasa Ulang Perangkat Lunak IF5124 Evolusi Perangkat Lunak 5. Tanggal Pengumpulan: 28-04-2017 Risks dan benefits reengineering perangkat lunak - Risks Masalah reengineering perangkat lunak adalah bahwa ada batasan praktis akan seberapa besar kita dapat memperbaiki sebuah sistem dengan reengineering. Ini tidak mungkin, misalnya, untuk mengkonversi sebuah sistem yang ditulis menggunakan pendekatan fungsional menjadi sistem berorientasi objek. Perubahan arsitektural utama atau pengorganisasian kembali yang radikal dari manajemen data sistem tidak dapat dilakukan secara otomatis sehingga menjadi amat mahal. Meskipun reengineering dapat memperbaiki maintainability, sistem yang direkayasa ulang mungkin tidak akan sama maintainability nya dengan sistem baru yang dikembangkan menggunakan metode rekayasa perangkat lunak modern. - Benefits a. Mengurangi risiko Ada risiko yang tinggi dalam pengembangan kembali perangkat lunak business- critical. Error mungkin terjadi dalam spesifikasi sistem atau mungkin masalah pengembangan. Penundaan dalam memperkenalkan perangkat lunak yang baru mungkin berarti bisnis dihilangkan dan biaya ekstra dikeluarkan. b. Mengurangi biaya Biaya reengineering mungkin secara signifikan lebih rendah daripada biaya pengembangan perangkat lunak yang baru. 6. Hubungan antara reengineering perangkat lunak dan evolusi perangkat lunak Evolusi perangkat lunak terjadi ketika sistem perangkat lunak yang ada diubah untuk memenuhi kebutuhan yang baru. Perubahan tersebut terjadi ketika error diperbaiki, ketika perangkat lunak disesuaikan dengan lingkungan yang baru, ketika customer meminta fitur atau fungsi yang baru, dan ketika aplikasi direkayasa ulang (reengineered) untuk memperoleh manfaat dalam konteks modern. Jadi, reengineering adalah salah satu proses yang menyebabkan evolusi perangkat lunak terjadi. 23516022 - Tugas W15 - Rekayasa Ulang Perangkat Lunak.docx Halaman 6 dari 7 Tugas W15 – Rekayasa Ulang Perangkat Lunak IF5124 Evolusi Perangkat Lunak 7. Tanggal Pengumpulan: 28-04-2017 Referensi [1] Pressman, Roger S. and Maxim, Bruce R. 2015. Software Engineering: A Practitioner’s Approach 8th Edition. New York: Mc Graw Hill Education. [2] Sommerville, Ian. 2011. Software Engineering 9th Edition. United States of America: Addison-Wesley. [3] http://www.ccs.neu.edu/home/lieber/com3205/f02/lectures/sommerville/ch28software-reengineering.ppt [4] http://www.semdesigns.com/Products/DMS/DMSToolkit.html 23516022 - Tugas W15 - Rekayasa Ulang Perangkat Lunak.docx Halaman 7 dari 7