1. SA4J – Structural Analysis for Java
Analisi di Xerces
Simone Compagnone matr. 709649
Marco Covelli matr. 702957
Paola Percuoco matr. 742072
2. 2
SA4J - Structural Analysis for Java
• analizza le dipendenze strutturali di applicazioni Java per misurare la loro
stabilità
• è in grado di riconoscere gli anti pattern
GOAL:
verificare, e di conseguenza migliorare, la qualità del software in esame
• questo è possibile grazie ad alcune viste offerte dal tool, alcune facilmente
comprensibili altre un po’ più complesse
3. 3
SA4J - Configurazione computer
• Processore:
Intel Core 2 Duo
2.27 GHz
• RAM:
4 GB
• Sistema operativo:
Windows Vista Home Premium
Service Pack 2
32 bit
4. 4
SA4J – Come importare un progetto
• File New Java Project
… dopo aver scelto il nome del progetto e la cartella di destinazione…
5. 5
SA4J – Problemi riscontrati
• l’installazione è andata a buon fine al primo tentativo:
il tool è stato installato correttamente senza alcun tipo di problema
• non sono stati riscontrati problemi tecnici durante il suo utilizzo:
il tool non è mai andato in crash o sollevato eccezioni
• anche durante il caricamento e l’analisi del sistema, il tool ha risposto con
efficienza
7. 7
SA4J – Funzionalità principali
• Explorer: permette la navigazione fra i package del software da analizzare,
mostrando subito le dipendenze presenti;
• Local dependencies: mostra le dipendenze dirette tra i vari oggetti;
• Global dependencies: mostra la stabilità del sistema considerando le
dipendenze globali tra gli oggetti;
• Skeleton: rappresenta il sistema come una piramide di dipendenze,
segnalando gli anti pattern individuati;
• What if: permette di capire che impatto ha sul sistema la modifica di un
oggetto;
• Summary: rappresenta un report finale del sistema in cui vengono
presentate una serie di statistiche e gli anti pattern trovati.
• Package Analysis: illustra l’organizzazione fisica e logica dei package e
permette di valutare le metriche su questi ultimi
8. 8
Il sistema da analizzare: Xerces 2.9.0
• è un parser XML scritto in Java
Property Value
dalla Apache Foundation;
Number of Objects 1068
• permette di effettuare parsing
di documenti XML secondo le Number of Packages 80
metodologie SAX e DOM; Number of Relationships 9723
Maximum Dependencies 131
Minimum Dependencies 0
Average Dependencies 9.1
Maximum Dependents 218
Minimum Dependents 0
Average Dependents 9.1
Relationship To Object Ratio 9.1
Affects on Average 115.8
12. 12
Xerces – Local e Global dependencies
• l’oggetto con il maggior numero di dipendenti è Node 218 oggetti!
• l’oggetto interno al sistema con maggior numero di dipendenti risulta
essere Qname 192 oggetti!
19. 19
Xerces - Skeleton
• in un sistema ben strutturato, questa vista dovrebbe «ricordare» un
triangolo rettangolo
• sono presenti parecchi tangle (anti pattern)
21. 21
Xerces – Anti pattern
• Local butterfly: oggetti con molti dipendenti diretti
possono essere interfacce di base, classe di base astratte e utilities
• Global butterfly: oggetti con un gran numero di dipendenti globali
possono essere interfacce di base, classi di base astratte e utilities
• Local breakable: oggetto con molte dipendenze locali
il refactoring del codice di un “breakable” locale in parecchie classi distribuirà le
“dependencies” ed aumenterà la stabilità del sistema complessivamente
• Global breakable: oggetti con molte dipendenze globali
sono indice di una perdita di modularità nel sistema
22. 22
Xerces – Anti pattern (2)
• Local hub: oggetti con molti dipendenti e dipendenze dirette
il refactoring un “hub” locale in parecchie classi distribuirà le “dependencies” ed
aumenterà la stabilità del sistema complessivamente
• Global hub: sono degli ibridi tra i breakable globali e le global butterfly
sono spesso interessati quando qualcosa nel sistema viene modificato
interessano una percentuale significativa del sistema
indicano che il sistema non è ben concettualizzato ed ha un’alta instabilità
• Tangle: dipendenze circolari interfacciate
se un oggetto in un tangle viene modificato, tutti gli oggetti nel tangle sono interessati
23. 23
Xerces - Anti Pattern (3)
Pattern Count % of total objects
Tangle 31 n/a
Global Hub 100 9%
Global Breakable 241 22%
Global Butterfly 410 38%
Local Hub 93 8%
Local Breakable 210 19%
Local Butterfly 215 20%
24. 24
Xerces – Anti pattern detenction (esempio 1)
• Tangle che coinvolge la classe Node
26. 26
Xerces - Conclusioni
• la stabilità totale del sistema è pari all’89%
la stabilità dei sistemi maggiormente stabili è maggiore del 90%
• ci sono 1068 oggetti, con un totale di 9723 relazioni
• in media un oggetto dipende da 9.1 oggetti
• in media la modifica di un oggetto può potenzialmente comportare effetti su
115.8 altri oggetti
27. 27
SA4J - Vantaggi
• il tool è risultato:
stabile
di facile installazione
• non ha generato errori o problemi in nessuna fase dell’analisi svolta
• l’interfaccia è abbastanza semplice e intuitiva
• consente di generare numerose viste con caratteristiche diverse: queste
permettono di analizzare in modo approfondito le classi
28. 28
SA4J - Svantaggi
• impossibilità di accedere al codice:
rallenta la fase di analisi
rende più difficoltosa la comprensione del sistema che si sta analizzando
• scarsa leggibilità della vista Explorer in presenta di molti elementi
non è possibile spostare gli oggetti per una migliore visualizzazione dei nomi