1 Pemodelan Berorientasi Objek Reverse Engineering & Forward Engineering Adam Hendra Brata Materi Pertemuan 8 Reverse Engineering & Forward Engineering Forward Engineering Reverse Engineering Re-engineering 2 3 Forward Engineering Forward Engineering Ingatkah kalian dengan ini ? 4 Forward Engineering Dalam SDLC waterfall proses pengembangan perangkat lunak secara sederhana dapat dilihat bahwa proses pengembangannya bersifat “maju” Dari analisis kebutuhan “maju” sampai ke pemeliharaan sistem 5 Forward Engineering 6 Karena PBO merupakan komponen dalam pengembangan perangkat lunak, maka forward engineering juga pasti terjadi Analisis Kebutuhan → Perancangan → Implementasi Requirements Design Source Code Behavior Forward Engineering Dalam proses pegembangan maju kita mengembangkan sebuah sistem dengan metode yang terstruktur mulai dari konsep awal sampai jadi Dalam PBO, forward engineering adalah proses “transformasi” diagram UML yang dirancang dalam perancangan perangkat lunak ke source code dalam fase implementasi 7 Forward Engineering Forward engineering — the process of transforming a model into code through a mapping to an implementation language Steps Identify the rules of mapping to a specific language Constrain use of UML to match language semantics (e.g. inheritance) Use tagged values to identify language Use tools when possible 8 Forward Engineering successor EventHandler { Java} Client { Java} currentEventId : Integer source : Strings handleRequest() : void GuiEventHandler { Java} public abstract class EventHandler { private EventHandler successor; private Integer currentEventId; private String source; EventHandler() {} public void handleRequest() {} } 9 10 Reverse Engineering Reverse Engineering Sebaliknya dalam PBO dikenal juga istilah reverse engineering, reverse engineering adalah proses “transformasi balik” source code menjadi diagram UML 11 Reverse Engineering successor EventHandler { Java} Client { Java} currentEventId : Integer source : Strings handleRequest() : void GuiEventHandler { Java} public abstract class EventHandler { private EventHandler successor; private Integer currentEventId; private String source; EventHandler() {} public void handleRequest() {} } 12 Reverse Engineering Terus kenapa kita perlu reverse engineering kalau sudah ada forward engineering ? Bukannya fase pengembangan perangkat lunak itu maju yah ? 13 Reverse Engineering Please look deeply about this an unexpected case : You finished one course project using Java Your program runs OK But, by accident, you delete the java file How to hand in your project ? 14 Reverse Engineering Solution ? Reverse engineering 15 Reverse Engineering Forward Engineering Reverse Engineering Requirements Design Source Code Behavior 16 Reverse Engineering Reverse engineering — the process of transforming code into a model through mapping from a specific implementation language. Steps Identify the rules of mapping from a specific language Use a tool; point the tool to the code Query the model to obtain desired information for the model 17 18 Re-engineering Re-engineering Re-engineering dalam dunia industri dapat diartikan adalah teknik hasil gabungan dari reverse engineering dan forward engineering untuk membangun produk yang lebih baik lagi berdasarkan produk sebelumnya Dalam industri perangkat lunak re-engineering digunakan untuk proses evolusi perangkat lunak 19 Re-engineering Apakah itu evolusi perangkat lunak ? 20 Re-engineering 21 Abstraction System Reverse Engineering Abstraction Old system Forward Engineering Re-Implementation New System Re-engineering Dalam Re-engineering kita sebagai developer dapat mengembangkan sistem yang lama menjadi baru dengan cara yang lebih efisien Kita tidak perlu menulis kode program dari awal lagi untuk bikin sistem yang relatif sama Kita “bongkar” sistem yang lama, dipecah kode programnya, dikembalikan menjadi diagram UML kembali, kita kembangkan fiturnya serta kita evaluasi hasil dari sistem yang lama, kemudian kita “bangun” lagi sistem yang baru berdasarkan informasi perancangan yang baru, yang merupakan hasil pengembangan dari sistem yang lama 22 Re-engineering Software Evolution Changing a software product after delivery to adapt such system to the ever-changing user requirements and operating environment the system operates in or address a problem or activity of a real world 23 Re-engineering Software Evolution Goals Adapts the application to the ever-changing user and operating environment Adds new features Corrects mistakes and misunderstandings Responds to both developer and user learning Program usually grows during evolution Both software architecture and software team knowledge make evolution possible 24 Re-engineering Why we need Re-engineering Recovery of lost information providing proper system documentation Assisting with maintenance identification of side effects and anomalies Migration to another hw/sw platform Facilitating software reuse 25 Re-engineering Benefit of Re-engineering Maintenance cost savings Quality improvements Competitive advantages Software reuse facilitation 26 27 Terimakasih v^^