Pemodelan Berorientasi
Objek
Adam Hendra Brata
1
Reverse Engineering &
Forward Engineering
Materi Pertemuan 8
Reverse Engineering & Forward Engineering
Forward Engineering
Reverse Engineering
Re-engineering
2
Forward Engineering
3
Ingatkah kalian dengan ini ?
4Forward 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
5Forward Engineering
Karena PBO merupakan komponen dalam
pengembangan perangkat lunak, maka
forward engineering juga pasti terjadi
Analisis Kebutuhan → Perancangan →
Implementasi
6Forward Engineering
Requirements
Design
Source Code
Behavior
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
7Forward 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
8Forward Engineering
9Forward Engineering
GuiEventHandler{ Java}
successor
EventHandler{ Java}
currentEventId : Integer
source : Strings
handleRequest() : void
Client{ Java}
public abstract class EventHandler
{
private EventHandler successor;
private Integer currentEventId;
private String source;
EventHandler() {}
public void handleRequest() {}
}
Reverse Engineering
10
Sebaliknya dalam PBO dikenal juga istilah
reverse engineering, reverse engineering
adalah proses “transformasi balik” source
code menjadi diagram UML
11Reverse Engineering
12Reverse Engineering
GuiEventHandler{ Java}
successor
EventHandler{ Java}
currentEventId : Integer
source : Strings
handleRequest() : void
Client{ Java}
public abstract class EventHandler
{
private EventHandler successor;
private Integer currentEventId;
private String source;
EventHandler() {}
public void handleRequest() {}
}
Terus kenapa kita perlu reverse engineering
kalau sudah ada forward engineering ?
Bukannya fase pengembangan perangkat
lunak itu maju yah ?
13Reverse 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 ?
14Reverse Engineering
Solution ?
Reverse engineering
15Reverse Engineering
16Reverse Engineering
Forward Engineering Reverse Engineering
Requirements
Design
Source Code
Behavior
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
17Reverse Engineering
Re-engineering
18
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
19Re-engineering
Apakah itu evolusi perangkat lunak ?
20Re-engineering
21Re-engineering
Abstraction System
Old system New System
Forward Engineering
Re-Implementation
Reverse Engineering
Abstraction
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
22Re-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
23Re-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
24Re-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
25Re-engineering
Benefit of Re-engineering
Maintenance cost savings
Quality improvements
Competitive advantages
Software reuse facilitation
26Re-engineering
Terimakasih v^^
27