Presentazione tenuta nel corso della professoressa Arcelli su u4j2rsf, progetto Open Source nell'ambito della SAR, Software Architecture Reconstruction.
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
U4J2RSF
1. Introduzione
Understand for Java
ARMIN
u4j2rsf
Progetto u4j2rsf:
da Understand for Java ad ARMIN
http://sourceforge.net/projects/u4j2rsf
Michele Zonca
Università di Milano Bicocca
17 Aprile 2008
Michele Zonca u4j2rsf
3. Introduzione
Understand for Java Software Architecture Reconstruction
ARMIN Passaggi fondamentali
u4j2rsf
Premessa
Da una ricerca del 2005 di Forrester Research risulta
che una grossa percentuale (circa 75%) dei fondi
investiti in un progetto è destinata alla manutenzione
del software
Michele Zonca u4j2rsf
4. Introduzione
Understand for Java Software Architecture Reconstruction
ARMIN Passaggi fondamentali
u4j2rsf
Software Architecture Reconstruction
Ricostruire un’architettura software è un processo di Reverse
Engineering che punta a visualizzare le decisioni prese dagli
sviluppatori riguardo l’architettura di un sistema.
necessario in caso di documentazione insufficiente
chiarisce quali sono le dipendenze tra i componenti
serve a visualizzare come è stato implementato il progetto
aiuta a capire dove andare a “mettere le mani”
Michele Zonca u4j2rsf
5. Introduzione
Understand for Java Software Architecture Reconstruction
ARMIN Passaggi fondamentali
u4j2rsf
Passaggi fondamentali
Cercare di comprendere il funzionamento ed il design di un
software è un procedimento molto lungo e complesso che
richiede diversi step:
Source Information Extraction (Understand for Java)
Information Formatting (u4j2rsf)
Architectural View Composition (ARMIN)
Architectural Analysis (ARMIN)
Michele Zonca u4j2rsf
6. Introduzione
Understand for Java Introduzione
ARMIN Caratteristiche
u4j2rsf
Outline
Introduzione
1
Software Architecture Reconstruction
Passaggi fondamentali
Understand for Java
2
Introduzione
Caratteristiche
ARMIN
3
Introduzione
Caratteristiche
u4j2rsf
4
Introduzione
HOWTO
Architettura u4j2rsf
TODO e sviluppi futuri
Michele Zonca u4j2rsf
7. Introduzione
Understand for Java Introduzione
ARMIN Caratteristiche
u4j2rsf
Cos’è Understand for Java
Understand for Java is a reverse engineering,
documentation, code exploration and metrics tool for
Java source code
Understand for Java is an interactive development
environment (IDE) designed to help maintain and
understand large amounts of Java code.
Michele Zonca u4j2rsf
8. Introduzione
Understand for Java Introduzione
ARMIN Caratteristiche
u4j2rsf
Caratteristiche
Software commerciale sviluppato da SciTools
In grado di caricare sorgenti di grandi progetti
Individua i componenti e le relazioni definite tra essi
Genera report di queste relazioni in formato HTML o
testuale (in un unico file o in diversi)
Disponibile per diverse piattaforme
Evaluation Version disponibile gratuitamente
Michele Zonca u4j2rsf
9. Introduzione
Understand for Java Introduzione
ARMIN Caratteristiche
u4j2rsf
Report testuali U4J
Serie di file di testo generati secondo il pattern
nome_progetto.ext dove ext è:
dic per Data Dictionary
pux per Program Unit Cross Reference
obx per Object Cross Reference
...
Contengono tutte le informazioni relative al sistema: classi,
oggetti, metodi, variabili, alberi delle chiamate a funzione ..
Identificano quindi gli elementi e le relazioni
Michele Zonca u4j2rsf
10. Introduzione
Understand for Java Introduzione
ARMIN Caratteristiche
u4j2rsf
Report testuale U4J: .dic
Generated on: 18 May 2008 16:14:43
Data Dictionary Summary Report
================================================
args (Parameter)
[HelloWorld.java, 5]
ex (Variable)
[HelloWorld.java, 9]
Michele Zonca u4j2rsf
11. Introduzione
Understand for Java Introduzione
ARMIN Caratteristiche
u4j2rsf
Outline
Introduzione
1
Software Architecture Reconstruction
Passaggi fondamentali
Understand for Java
2
Introduzione
Caratteristiche
ARMIN
3
Introduzione
Caratteristiche
u4j2rsf
4
Introduzione
HOWTO
Architettura u4j2rsf
TODO e sviluppi futuri
Michele Zonca u4j2rsf
12. Introduzione
Understand for Java Introduzione
ARMIN Caratteristiche
u4j2rsf
Introduzione
Architecture Reconstruction and MINing
Sviluppato dall’università privata Carnegie Mellon
http://www.cmu.edu dal Software Engineering Institute
(SEI) sponsorizzato dal dipartimento della difesa USA
Necessita di un file testuale detto schema che definisce le
relazioni in forma ternaria
Prende in input file in formato RIGI (.rsf, Rigi Standard
Format) in cui vengono applicate le relazioni
Michele Zonca u4j2rsf
13. Introduzione
Understand for Java Introduzione
ARMIN Caratteristiche
u4j2rsf
Caratteristiche
Una volta caricate le informazioni in ARMIN, si possono
eseguire gli ultimi due step di SAR:
Architectural View Composition viene preparata la
visualizzazione delle relazioni definite e descritte
dai file di input
Architectural Analysis analisi e navigazione dell’architettura
generata da ARMIN da parte dell’utente
Michele Zonca u4j2rsf
14. Introduzione
Understand for Java Introduzione
ARMIN Caratteristiche
u4j2rsf
File di input
Come detto, i file di input necessari ad ARMIN sono due:
Schema Descrive le relazioni attraverso triple:
defines_class, package, class
defines_fn, class, function
contains_class, file, class
RSF Usa le relazioni definite nello schema per
descrivere il sistema:
defines_class org.zonca.u4j2rsf.example HelloWorld
defines_fn HelloWorld.java HelloWorld.main
contains_class HelloWorld.java HelloWorld
Michele Zonca u4j2rsf
15. Introduzione Introduzione
Understand for Java HOWTO
ARMIN Architettura u4j2rsf
u4j2rsf TODO e sviluppi futuri
Outline
Introduzione
1
Software Architecture Reconstruction
Passaggi fondamentali
Understand for Java
2
Introduzione
Caratteristiche
ARMIN
3
Introduzione
Caratteristiche
u4j2rsf
4
Introduzione
HOWTO
Architettura u4j2rsf
TODO e sviluppi futuri
Michele Zonca u4j2rsf
16. Introduzione Introduzione
Understand for Java HOWTO
ARMIN Architettura u4j2rsf
u4j2rsf TODO e sviluppi futuri
Introduzione
Le caratteristiche di u4j2rsf sono:
Software Open Source (Licenza GPL) disponibile su
SourceForge all’indirizzo
http://sourceforge.net/projects/u4j2rsf
Scritto in Java
Facilmente estendibile
Prende in input i report testuali di Understand for Java
Crea file per ARMIN (schema e rsf)
Michele Zonca u4j2rsf
17. Introduzione Introduzione
Understand for Java HOWTO
ARMIN Architettura u4j2rsf
u4j2rsf TODO e sviluppi futuri
Scaricare il progetto
Per scaricare il tool basta andare sulla homepage
http://sourceforge.net/projects/u4j2rsf e scaricare
l’archivio contenente eseguibile e documentazione.
Lanciarlo con il comando:
java -jar u4j2rsf-X.X.jar prefisso_report_u4j
Michele Zonca u4j2rsf
18. Introduzione Introduzione
Understand for Java HOWTO
ARMIN Architettura u4j2rsf
u4j2rsf TODO e sviluppi futuri
Compilare i sorgenti
Per avere la versione più aggiornata:
Checkout del progetto dal repository svn:
svn co https://u4j2rsf.svn.sourceforge.net/svnroot/u4j2rsf/trunk u4j2rsf
esecuzione di ant ( http://ant.apache.org ) nella root
del progetto
entrare nella directory dist e lanciare
java -jar u4j2rsf-X.X.jar prefisso_report_u4j
Michele Zonca u4j2rsf
19. Introduzione Introduzione
Understand for Java HOWTO
ARMIN Architettura u4j2rsf
u4j2rsf TODO e sviluppi futuri
Importare i sorgenti
Creare un nuovo progetto u4j ed importare i sorgenti Java.
Michele Zonca u4j2rsf
20. Introduzione Introduzione
Understand for Java HOWTO
ARMIN Architettura u4j2rsf
u4j2rsf TODO e sviluppi futuri
Generare report
Generare i report testuali di Understand for Java (in diversi file)
Michele Zonca u4j2rsf
21. Introduzione Introduzione
Understand for Java HOWTO
ARMIN Architettura u4j2rsf
u4j2rsf TODO e sviluppi futuri
Eseguire u4j2rsf
Lanciare u4j2rsf sui report generati passando come parametro
il percorso ed il prefisso dei report.
Esso creerà nella stessa directory due file:
nome_progetto.txt, il file che descrive le relazioni utilizzate
nome_progetto.rsf il file RSF che mette in relazione le
entità definite nel progetto
Michele Zonca u4j2rsf
22. Introduzione Introduzione
Understand for Java HOWTO
ARMIN Architettura u4j2rsf
u4j2rsf TODO e sviluppi futuri
ARMIN
Dopo aver avviato ARMIN:
creare un nuovo progetto importando il file dello schema
importare il file rsf
Michele Zonca u4j2rsf
23. Introduzione Introduzione
Understand for Java HOWTO
ARMIN Architettura u4j2rsf
u4j2rsf TODO e sviluppi futuri
ARMIN:Importare schema
Michele Zonca u4j2rsf
24. Introduzione Introduzione
Understand for Java HOWTO
ARMIN Architettura u4j2rsf
u4j2rsf TODO e sviluppi futuri
ARMIN:Importare rsf
Michele Zonca u4j2rsf
25. Introduzione Introduzione
Understand for Java HOWTO
ARMIN Architettura u4j2rsf
u4j2rsf TODO e sviluppi futuri
Caratteristiche tecniche del software
Le caratteristiche principali dell’implementazione di u4j2rsf:
Java 6
Flessibilità: possibilità di sviluppare rapidamente plugin
che vengono caricate ed usate automaticamente in base
ad un elenco in un file di properties
Documentazione: API Javadoc, diversi file di esempio e
manuale pdf
Logging: utilizzo del package JUL (java.util.logging)
configurabile da file di properties
Test: JUnit 4 per testare automaticamente il
comportamento dei vari componenti
Supporto ad ant per compilazione (simile a Makefile)
Michele Zonca u4j2rsf
26. Introduzione Introduzione
Understand for Java HOWTO
ARMIN Architettura u4j2rsf
u4j2rsf TODO e sviluppi futuri
TODO e sviluppi futuri
aggiungere nuove relazioni per descrivere al meglio il
software
completare documentazione con la versione in inglese
preparare la release
migliorare gestione della memoria
Michele Zonca u4j2rsf