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)
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