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