SlideShare a Scribd company logo
1 of 28
SA4J – Structural Analysis for Java
Analisi di Xerces
Simone Compagnone   matr. 709649
Marco Covelli       matr. 702957
Paola Percuoco      matr. 742072
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




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




SA4J – Come importare un progetto
• File  New Java Project
   … dopo aver scelto il nome del progetto e la cartella di destinazione…
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
6




SA4J – L’interfaccia
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




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
9




Xerces – Una panoramica generale
10




Xerces – Local dependencies
11




Xerces – Global dependencies
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!
13




Xerces – L’interfaccia Node
• è contenuta nella libreria esterna xml-apis.jar


• graficamente:
14




Xerces – La classe Qname
• è una struttura che contiene i componenti di un XML namespace


• graficamente:
15




Xerces – What if
• Package xni (classe Qname)
16




Xerces – What if (2)
     Qname
17




Xerces – Package Analysis
• valutazione delle metriche sui package:
18




Xerces – Metriche
• Instability:
  n°dipendenze esterne / (n°dipendenze esterne + n°dipendenti esterni)


• Abstractness:
  (n°classi astratte + n°interfacce) / n°totale classi


• Bonding:
  n°dipendenze interne / (n°dipendenze interne + n°dipendenze esterne)


• LinkDensity:
  (n°dipendenze interne + n°dipendenti interni) / n°oggetti package
19




Xerces - Skeleton
• in un sistema ben strutturato, questa vista dovrebbe «ricordare» un
  triangolo rettangolo
• sono presenti parecchi tangle (anti pattern)
20




Xerces – Skeleton (2)




Node (contenuta in un tangle!)   QName
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




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




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




Xerces – Anti pattern detenction (esempio 1)
• Tangle che coinvolge la classe Node
25




Xerces – Anti pattern detenction (esempio 2)
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




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




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

More Related Content

Similar to Sa4j - xerces

Elasticsearch a quick introduction
Elasticsearch a quick introductionElasticsearch a quick introduction
Elasticsearch a quick introductionFederico Panini
 
C#, imparare a programmare e sopravvivere
C#, imparare a programmare e sopravvivereC#, imparare a programmare e sopravvivere
C#, imparare a programmare e sopravvivereMatteo Valoriani
 
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDB
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDBPolyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDB
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDBSteve Maraspin
 
Xen benchmark sistemi paravirtualizzati
Xen benchmark sistemi paravirtualizzatiXen benchmark sistemi paravirtualizzati
Xen benchmark sistemi paravirtualizzatiunicondor
 
No sql introduzione. Corso Sistemi Informativi Politecnico di Milano 12-11-2013
No sql introduzione. Corso Sistemi Informativi Politecnico di Milano 12-11-2013No sql introduzione. Corso Sistemi Informativi Politecnico di Milano 12-11-2013
No sql introduzione. Corso Sistemi Informativi Politecnico di Milano 12-11-2013Myti S.r.l.
 
Agileday2013 pratiche agili applicate all'infrastruttura
Agileday2013 pratiche agili applicate all'infrastrutturaAgileday2013 pratiche agili applicate all'infrastruttura
Agileday2013 pratiche agili applicate all'infrastrutturaXPeppers
 
The performance of microkernel based system
The performance of microkernel based systemThe performance of microkernel based system
The performance of microkernel based systemSergio Guastaferro
 
Utilizzo dei Thread
Utilizzo dei ThreadUtilizzo dei Thread
Utilizzo dei ThreadLuca Vitale
 
Peer to-peer Un approccio pratico
Peer to-peer Un approccio praticoPeer to-peer Un approccio pratico
Peer to-peer Un approccio praticoOrlando Selenu
 
VMUGIT Roma 2016 - vROps Design - Pietro Piutti
VMUGIT Roma 2016 - vROps Design - Pietro PiuttiVMUGIT Roma 2016 - vROps Design - Pietro Piutti
VMUGIT Roma 2016 - vROps Design - Pietro PiuttiVMUG IT
 
Data Profiling with Metanome
Data Profiling with MetanomeData Profiling with Metanome
Data Profiling with MetanomeMatteo Senardi
 
Approccio Pratico al Domain Driven Design
Approccio Pratico al Domain Driven DesignApproccio Pratico al Domain Driven Design
Approccio Pratico al Domain Driven DesignLuca Milan
 
Crogioli, alambicchi e beute: dove mettere i vostri dati.
Crogioli, alambicchi e beute: dove mettere i vostri dati.Crogioli, alambicchi e beute: dove mettere i vostri dati.
Crogioli, alambicchi e beute: dove mettere i vostri dati.PyCon Italia
 
Crogioli, alambicchi e beute, dove mettere i
Crogioli, alambicchi e beute, dove mettere i Crogioli, alambicchi e beute, dove mettere i
Crogioli, alambicchi e beute, dove mettere i Simone Deponti
 
Extended Summary of "Evolutionary Optimization of Deep Learning Activation Fu...
Extended Summary of "Evolutionary Optimization of Deep Learning Activation Fu...Extended Summary of "Evolutionary Optimization of Deep Learning Activation Fu...
Extended Summary of "Evolutionary Optimization of Deep Learning Activation Fu...MicheleScomina
 
Extended Summary of "Evolutionary Optimization of Deep Learning Activation Fu...
Extended Summary of "Evolutionary Optimization of Deep Learning Activation Fu...Extended Summary of "Evolutionary Optimization of Deep Learning Activation Fu...
Extended Summary of "Evolutionary Optimization of Deep Learning Activation Fu...MicheleScomina
 

Similar to Sa4j - xerces (20)

Elasticsearch a quick introduction
Elasticsearch a quick introductionElasticsearch a quick introduction
Elasticsearch a quick introduction
 
C#, imparare a programmare e sopravvivere
C#, imparare a programmare e sopravvivereC#, imparare a programmare e sopravvivere
C#, imparare a programmare e sopravvivere
 
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDB
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDBPolyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDB
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDB
 
Xen benchmark sistemi paravirtualizzati
Xen benchmark sistemi paravirtualizzatiXen benchmark sistemi paravirtualizzati
Xen benchmark sistemi paravirtualizzati
 
No sql introduzione. Corso Sistemi Informativi Politecnico di Milano 12-11-2013
No sql introduzione. Corso Sistemi Informativi Politecnico di Milano 12-11-2013No sql introduzione. Corso Sistemi Informativi Politecnico di Milano 12-11-2013
No sql introduzione. Corso Sistemi Informativi Politecnico di Milano 12-11-2013
 
Agileday2013 pratiche agili applicate all'infrastruttura
Agileday2013 pratiche agili applicate all'infrastrutturaAgileday2013 pratiche agili applicate all'infrastruttura
Agileday2013 pratiche agili applicate all'infrastruttura
 
The performance of microkernel based system
The performance of microkernel based systemThe performance of microkernel based system
The performance of microkernel based system
 
Utilizzo dei Thread
Utilizzo dei ThreadUtilizzo dei Thread
Utilizzo dei Thread
 
Peer to-peer Un approccio pratico
Peer to-peer Un approccio praticoPeer to-peer Un approccio pratico
Peer to-peer Un approccio pratico
 
VMUGIT Roma 2016 - vROps Design - Pietro Piutti
VMUGIT Roma 2016 - vROps Design - Pietro PiuttiVMUGIT Roma 2016 - vROps Design - Pietro Piutti
VMUGIT Roma 2016 - vROps Design - Pietro Piutti
 
Data Profiling with Metanome
Data Profiling with MetanomeData Profiling with Metanome
Data Profiling with Metanome
 
Bello Jxta Intro
Bello Jxta IntroBello Jxta Intro
Bello Jxta Intro
 
Database Data Aggregator
Database Data AggregatorDatabase Data Aggregator
Database Data Aggregator
 
Fmdp Total System Monitor
Fmdp Total System MonitorFmdp Total System Monitor
Fmdp Total System Monitor
 
Approccio Pratico al Domain Driven Design
Approccio Pratico al Domain Driven DesignApproccio Pratico al Domain Driven Design
Approccio Pratico al Domain Driven Design
 
Cac Es3 2009
Cac Es3 2009Cac Es3 2009
Cac Es3 2009
 
Crogioli, alambicchi e beute: dove mettere i vostri dati.
Crogioli, alambicchi e beute: dove mettere i vostri dati.Crogioli, alambicchi e beute: dove mettere i vostri dati.
Crogioli, alambicchi e beute: dove mettere i vostri dati.
 
Crogioli, alambicchi e beute, dove mettere i
Crogioli, alambicchi e beute, dove mettere i Crogioli, alambicchi e beute, dove mettere i
Crogioli, alambicchi e beute, dove mettere i
 
Extended Summary of "Evolutionary Optimization of Deep Learning Activation Fu...
Extended Summary of "Evolutionary Optimization of Deep Learning Activation Fu...Extended Summary of "Evolutionary Optimization of Deep Learning Activation Fu...
Extended Summary of "Evolutionary Optimization of Deep Learning Activation Fu...
 
Extended Summary of "Evolutionary Optimization of Deep Learning Activation Fu...
Extended Summary of "Evolutionary Optimization of Deep Learning Activation Fu...Extended Summary of "Evolutionary Optimization of Deep Learning Activation Fu...
Extended Summary of "Evolutionary Optimization of Deep Learning Activation Fu...
 

More from Simone Compagnone

More from Simone Compagnone (6)

Activity intent
Activity intentActivity intent
Activity intent
 
Relazione esame informatica grafica
Relazione esame informatica graficaRelazione esame informatica grafica
Relazione esame informatica grafica
 
Progetto elaborazione delle immagini complementi
Progetto elaborazione delle immagini complementiProgetto elaborazione delle immagini complementi
Progetto elaborazione delle immagini complementi
 
Interazione app
Interazione appInterazione app
Interazione app
 
Provavideo
ProvavideoProvavideo
Provavideo
 
Presentazione tesicompagnonesimone
Presentazione tesicompagnonesimonePresentazione tesicompagnonesimone
Presentazione tesicompagnonesimone
 

Sa4j - xerces

  • 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
  • 9. 9 Xerces – Una panoramica generale
  • 10. 10 Xerces – Local dependencies
  • 11. 11 Xerces – Global dependencies
  • 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!
  • 13. 13 Xerces – L’interfaccia Node • è contenuta nella libreria esterna xml-apis.jar • graficamente:
  • 14. 14 Xerces – La classe Qname • è una struttura che contiene i componenti di un XML namespace • graficamente:
  • 15. 15 Xerces – What if • Package xni (classe Qname)
  • 16. 16 Xerces – What if (2) Qname
  • 17. 17 Xerces – Package Analysis • valutazione delle metriche sui package:
  • 18. 18 Xerces – Metriche • Instability: n°dipendenze esterne / (n°dipendenze esterne + n°dipendenti esterni) • Abstractness: (n°classi astratte + n°interfacce) / n°totale classi • Bonding: n°dipendenze interne / (n°dipendenze interne + n°dipendenze esterne) • LinkDensity: (n°dipendenze interne + n°dipendenti interni) / n°oggetti package
  • 19. 19 Xerces - Skeleton • in un sistema ben strutturato, questa vista dovrebbe «ricordare» un triangolo rettangolo • sono presenti parecchi tangle (anti pattern)
  • 20. 20 Xerces – Skeleton (2) Node (contenuta in un tangle!) QName
  • 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
  • 25. 25 Xerces – Anti pattern detenction (esempio 2)
  • 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