Transcript Modisco

A Generic And Extensible Framework For Model Driven Reverse
Engineering
MODISCO
1. WHY => REVERSE ENGINEERING?
Up-todate
data
Manage
Maintain
Replace
functionalities
architecture
2
1. WHY => REVERSE ENGINEERING?

1. Out-of-date systems are still running:
 Complexity
and heterogeneous
 Size
 Migration

cost
2. Quickly reengineering existing system.
discover
understand
manipulate
reimplement
3
MODISCO PRINCIPLES AND TECHNIQUES

A tradition of using UML
Structure
diagrams
?
*.java
Behavior
diagrams
4
MODISCO PRINCIPLES AND TECHNIQUES

Some UML reverse engineering tools
*.java
Fujaba
*.class
Topcased
5
MODISCO PRINCIPLES AND TECHNIQUES

MoDisco: Models is the first class entities of all
processes => reverse engineering
homogeneous
heterogeneous
M
S
Model Driven
Reverse
Engineering
(MDRE)
M’
M’’
Model
discovery
Model
understanding
6
MODEL DISCOVERY
jsp
struts
java
Spring
xml
Hibernate
Model
Discovery
database
1. Natural -> Type of system
2. Several models necessary
Metamodel
7
MODEL UNDERSTANDING
Source
code
document
transforms
…
transforms
Structured
data
1. Many models transformation -> be used
2. Several intermediate representation -> necessary
8
MODISCO – THE WHOLE PICTURE

Discovery, query and manipulation
9
MODISCO – ARCHITECTURE
10
MODISCO – ARCHITECTURE

MoDisco User-Cases
11
MODISCO – ARCHITECTURE

MoDisco Technologies
12
REVERSE ENGINEERING - CONTROL
DEPENDENCE GRAPH
13
REVERSE ENGINEERING - CONTROL
DEPENDENCE GRAPH
public List<PizzaOrder> getDailyReport() throws ServiceException {
try {
dbDAO.startTransaction();
List<PizzaOrder> orders = getTodaysOrders();
// materialize details during tx
for (PizzaOrder o: orders)
{
o.getPizzaSize().getSizeName();
for (Topping t: o.getToppings())
t.getToppingName();
}
dbDAO.commitTransaction();
return orders;
} catch (Exception e) {
dbDAO.rollbackAfterException();
throw new ServiceException("Error while getting daily report ", e);
}
}
14
REFERENCES

MoDisco: a generic and extensible framework for
model driven reverse engineering


MoDisco on Eclipse


http://www.eclipse.org/MoDisco/
MoDisco technology


http://jordicabot.com/papers/ASETools10.pdf
http://wiki.eclipse.org/MoDisco/Architecture
Control Dependence Graph

http://www.grammatech.com/research/papers/staticA
nalysis/imgSlides/sld021.html
15