際際滷

際際滷Share a Scribd company logo
`
       Universita degli studi di Milano Bicocca
                 Facolt` di Scienze Matematiche Fisiche e Naturali
                       a

                      Corso di Laurea in Informatica




                                Understand your code

                                       Presentazione di
M. Bonini, L. La Torre, L. Mariot, L. Poto, M.Previtali, A. Ranchetti, D. Ranchetti, M. Susani



                                Anno Accademico 2010/2011




                             Scrum team 2         Understand your code
Introduzione
  Understand ` un ambiente commerciale multi-piattaforma e
              e
  multi-linguaggio sviluppato da SciTools che ha lo scopo di aiutare
  lutente durante le fasi di reverse engineering. Permette di:
    1   calcolare metriche
    2 esplorare viste che rappresentano diverse caratteristiche del
      codice
  Supporta:
               Ada
                                                           Jovial
               C++
                                                           Delphi/Pascal
               C#
                                                           PL/M
               FORTRAN
                                                           VHDL
               Java




                             Scrum team 2   Understand your code
Funzionalit`
           a

  Tra le molte funzionalit` di Understand ` possibile e鍖ettuare
                           a               e
  lanalisi di molte metriche. Le metriche pi` signi鍖cative sono:
                                             u
      CountLineCode : Linee di codice
      Cyclomatic : Numero ciclomatico (Edge - Nodi +
      Componenti Connesse)
      MaxNesting : Massimo livello di annidamento per le strutture
      di controllo
      PercentLackOfCohesion : Valore tra 0 e 100, un valore basso
      indica una alta coesione tra classi e metodi
      SumCyclomatic : Somma delle complessit` ciclomatiche di
                                            a
      funzioni annidate
  Una volta selezionato un elemento nel grafo ad albero allinterno
  del Project Metrics Browser, ` possibile esportare i valori ottenuti
                               e
  tramite Understand in formato CSV o HTML.

                          Scrum team 2   Understand your code
Il software analizzato



  Il software analizzato ` Gantt Project v. 1.11.1. Gantt ` una
                         e                                  e
  applicazione desktop per la gestione di progetto e
  dellorganizzazione del lavoro. Esso ` scritto in Java ed ` composto
                                       e                    e
  da:
      549 classi
      318 鍖les
      29211 linee di codice
  Questi dati sono stati ottenuti tramite i report di cui parleremo in
  seguito.




                         Scrum team 2   Understand your code
Metriche


            AvgCyclomatic    :       1.73
    AvgCyclomaticModified    :       1.70                CountLineCodeDecl       :     10048.00
      AvgCyclomaticStrict    :       1.83                 CountLineCodeExe       :     11205.00
             AvgEssential    :       1.09                 CountLineComment       :      6822.00
                   AvgLine   :     123.15                         CountPath      :   8083364.00
             AvgLineBlank    :      19.81                    CountSemicolon      :     15605.00
              AvgLineCode    :      82.65                         CountStmt      :     20017.00
           AvgLineComment    :      21.59                     CountStmtDecl      :      9670.00
           CountDeclClass    :     547.00                      CountStmtExe      :     10347.00
     CountDeclClassMethod    :      64.00                        Cyclomatic      :      4693.00
   CountDeclClassVariable    :     279.00               CyclomaticModified       :      4619.00
            CountDeclFile    :     316.00                 CyclomaticStrict       :      4967.00
        CountDeclFunction    :    2713.00                         Essential      :      2948.00
  CountDeclInstanceMethod    :    2338.00                     MaxCyclomatic      :       106.00
CountDeclInstanceVariable    :    1349.00            MaxCyclomaticModified       :       106.00
          CountDeclMethod    :    2402.00              MaxCyclomaticStrict       :       131.00
       CountDeclMethodAll    :    3201.00               MaxInheritanceTree       :         3.00
   CountDeclMethodDefault    :     117.00                        Max N est ing   :         5.00
   CountDeclMethodPrivate    :     277.00               RatioCommentToCode       :         0.26
 CountDeclMethodProtected    :     138.00                     SumCyclomatic      :      4693.00
    CountDeclMethodPublic    :    1870.00            SumCyclomaticModified       :      4619.00
                 CountLine   :   38916.00              SumCyclomaticStrict       :      4967.00
           CountLineBlank    :    6261.00                      SumEssential      :      2948.00
            CountLineCode    :   26116.00




                                   Scrum team 2   Understand your code
Metric Charts



  In aggiunta alla semplice visualizzazione testuale ` possibile
                                                     e
  ottenere una rappresentazione gra鍖ca delle metriche. La loro
  generazione ` molto semplice, basta utilizzare i comandi presenti
              e
  sotto il menu Metrics. In particolare ` possibile visualizzare:
                                        e
    1   Code Volume Distribution
    2   File Volume
    3   Avarage Complexity
    4   Sum Complexity
    5   Metric TreeMap




                         Scrum team 2   Understand your code
Code Volume Distribution
  Questo gra鍖co rappresenta la distribuzione delle linee di codice nel progetto in termini di:
          CountLineBlank: linee di codice vuote.
          CountLineCodeDecl: numero di linee contenente codice dichiarativo.
          CountLineCodeExe: numero di linee contenente codice sorgente eseguibile.
          CountLineComment: numero di linee contenente commenti.




  Dal gra鍖co osserviamo che la ripartizione ` abbastanza uniforme, le linee vuote sono in numero minore, le linee di
                                            e

  codice eseguibile sono le pi` di鍖use.
                              u

                                          Scrum team 2          Understand your code
File Volume


  Indica semplicemente da quanti 鍖les ` composto il progetto.
                                      e




                        Scrum team 2   Understand your code
Avarage Complexity
  Vengono rappresentate mediante un istogramma alcune misure di complessit`.
                                                                          a




          AvgCyclomatic: complessit` ciclomatica media di tutti i metodi e di tutte le funzioni innestati.
                                     a
          MaxCyclomatic: complessit` ciclomatica massima di tutti i metodi e di tutte le funzioni innestati.
                                      a
          MaxNesting: livello di innestamento massimo di strutture di controllo in una funzione.

  Notiamo che c` un forte squilibrio tra la complessit` ciclomatica massima e quella media e questo indica che ci
                e                                      a

  sono classi che sono molto pi` complicate della media e sulle quali e quindi consigliabile operare modi鍖che atte a
                               u

  migliorare il codice.

                                          Scrum team 2         Understand your code
Sum Complexity




     CountPath: Numero di percorsi unici attraverso un blocco di codice,
     senza contare le uscite anomale o goto.
     SumCyclomatic: somma della complessit` ciclomatica di tutte le funzioni
                                             a
     innestate.
     SumEssential: somma della complessit` essenziale di tutte le funzioni
                                           a
     innestate.
                          Scrum team 2   Understand your code
Metric TreeMap
  Questo strumento fornisce una vista particolarmente interessante che ci
  permette di visualizzare una determinata caratteristica del codice che stiamo
  analizzando in funzione di una seconda caratteristica. Il menu per la
  generazione di tale gra鍖co ci fornisce le seguenti possibilit`:
                                                               a




                             Scrum team 2   Understand your code
Metric TreeMap




  In questo esempio sono stati scelti come parametri il numero di
  linee per classe e la massima complessit` ciclomatica. Notiamo che
                                            a
  nella maggior parte dei casi le classi pi` complesse coincidono con
                                           u
  le classi di maggiori dimensioni. Grazie alleditor integrato `
                                                                e
  possibile mettere subito mano al codice.
                         Scrum team 2   Understand your code
Project Overview Charts



  Tramite la funzione di Project Overview Charts ` possibile avere
                                                   e
  una panoramica generale sulle principali caratteristiche dellintero
  progetto analizzato. Per poter utilizzare questa funzione, dopo
  aver aperto il progetto, bisogner` andare nel men` Project e
                                   a                 u
  selezionare Project Overview Charts. Tipi di output:
      gra鍖ci a torta
      istogrammi
      tabelle




                          Scrum team 2   Understand your code
Code breakdown

  Con questa analisi ` possibile capire,tramite un diagramma a torta,
                      e
  la percentuale e il numero di linee di codice, linee di commento e
  linee vuote.




                         Scrum team 2   Understand your code
Function breakdown

  Questo strumento mostra, tramite un diagramma a torta, la
  percentuale e il numero di funzioni di tipo Public, Private,
  Protected e Default.




                         Scrum team 2   Understand your code
Class breakdown
  Con questa analisi ` possibile capire, tramite un diagramma a
                      e
  torta, la percentuale e il numero di classi di tipo Public, Private,
  Protected e Default.




  Il numero di classi con visibilit` Public sono in numero nettamente
                                   a
  maggiore alle altre con diversa visibilit`.
                                           a
                          Scrum team 2   Understand your code
Most complex functions
  `
  E possibile identi鍖care le cinque funzioni pi` complesse del
                                               u
  progetto, permettendo quindi al designer, se ` possibile, di spartire
                                                 e
  le responsabilit` tra pi` funzioni, aumentando la mantenibilit` e la
                  a       u                                      a
  semplicit` del progetto. Per complessit` si intende il numero di
           a                              a
  cammini linearmente indipendenti attraverso il grafo di controllo di
  鍖usso.




                         Scrum team 2   Understand your code
Most complex 鍖les
  Vengono mostrati i cinque 鍖les pi` complessi, identi鍖cando quindi
                                      u
  quei 鍖les che potrebbero essere scomposti per suddividere meglio le
  responsabilit` e ridurre la complessit`. Per complessit` si intende la
                a                       a                 a
  media del numero di cammini linearmente indipendenti attraverso
  il grafo di controllo di 鍖usso per ogni metodo allinterno del File.




                          Scrum team 2   Understand your code
Reports

  Understand genera una grande variet` di reports. I reports
                                     a
  rientrano in queste categorie:
      Cross-Reference Reports mostrano informazioni simili a quelle
      nel Browser Info, tranne che sono indicati tutte le entit`
                                                               a
      insieme in ordine alfabetico.
      Structure Reports mostrano la struttura del programma
      analizzato.
      Quality Reports mostrano aree in cui il codice potrebbe dover
      essere esaminato.
      Metric Reports indicano le metriche di base come il numero di
      righe di codice e commenti.
  `
  E possibile creare i reports sia in formato HTML sia in formato
  testuale. La generazione dei reports ` molto semplice; ` su鍖ciente
                                         e               e
  andare nel menu Reports e poi cliccare Generate Reports.

                        Scrum team 2   Understand your code
Reports




          Scrum team 2   Understand your code
I gra鍖

  Per creare un grafo relativo ad una classe/package bisogna:
    1    Selezionare il nodo architetturale dinteresse con il tasto
         destro del mouse
    2    Andare su Graphical Views e selezionare il grafo desiderato
         (Depends on, Depended on By, Butter鍖y-Dependency Graph,
         Internal Dependencies)




                            Scrum team 2   Understand your code
Caratteristiche comuni ai gra鍖

  I gra鍖 di dipendenza architetturale sono gra鍖 orientati e pesati. I
  vertici del grafo si dividono in due tipologie:
       Classi, rappresentati da riquadri bianchi;
       Package/cartelle rappresentati da riquadri colorati; facendo
       doppio clic su questi ultimi, ` possibile espandere la
                                     e
       visualizzazione del grafo alle classi/sottocartelle contenute al
       loro interno.
  Gli archi orientati possono essere invece di due colori:
       gli archi blu indicano una relazione di dipendenza semplice
       gli archi rossi una relazione di mutua dipendenza
  I pesi degli archi, in鍖ne, vengono determinati contando il numero
  di chiamate alla classe (o package/cartella a cui appartiene) di
  destinazione dellarco.


                          Scrum team 2   Understand your code
Dependency graph




  Un grafo delle dipendenze mostra come le varie classi presenti nel
  progetto interagiscono tra loro. Attraverso un grafo delle
  dipendenze ` quindi possibile osservare quali classi o cartelle
              e
  vengono maggiormente utilizzate e richiamate o quali nodi fanno
  maggior uso di altre classi o cartelle allinterno del codice.




                         Scrum team 2   Understand your code
Depends on

  Questo tipo di grafo ` disponibile per classi e package. Mostra le
                        e
  classi e i package da cui dipende lelemento sul quale ` stato
                                                         e
  generato il grafo.




                         Scrum team 2   Understand your code
Depended On By
  Questo tipo di grafo ` disponibile per classi e package. Mostra le
                        e
  classi e i package che dipendono dallelemento sul quale ` stato
                                                           e
  generato il grafo.




                         Scrum team 2   Understand your code
Butter鍖y-Dependency

  Questo tipo di grafo ` disponibile solo per package. Esso pu`
                       e                                       o
  essere considerato come lunione dei gra鍖 Depends on e Depended
  on By generati su un elemento; mostra quali classi/package
  dipendono dallelemento sul quale ` stato generato il grafo e le
                                     e
  classi package da cui lelemento dipende.




                        Scrum team 2   Understand your code
Internal dependencies




  Questo tipo di grafo ` disponibile solo per package. Mostra le
                        e
  dipendenze delle classi allinterno dellelemento (package) su cui `
                                                                     e
  stato generato il grafo.




                         Scrum team 2   Understand your code
UML class diagram
  Attraverso questo tipo di digramma ` possibile comprendere come si
                                         e
  comportano le classi allinterno del software. Ogni freccia indica che la
  classe di partenza ` 鍖glia della classe di destinazione.
                     e




  Qui mostriamo solo un dettaglio del diagramma delle classi perch卒 il
                                                                  e
  diagramma completo contiene 549 classi e la rappresentazione completa
  del diagramma ` di鍖cilmente fruibile.
                e
                            Scrum team 2   Understand your code
Graph architecture
  Attraverso il grafo dellarchitettura ` possibile comprendere la
                                        e
  suddivisione e la ripartizione, in termini di 鍖le, del progetto. Questo pu`
                                                                            o
  servire a comprendere i macro-blocchi che costituiscono il sistema.
  Ellissi
  Rappresentano delle cartelle che a loro volta contengono altre
  sottocartelle. Questi sono nodi interni (non possono essere foglie)
  dellalbero generato con il grafo dellarchitettura.

  Riquadri
  Rappresentano cartelle che al loro interno hanno solo 鍖le contenente
  codice, ovvero non contengono altre sottocartelle. Questi sono sempre i
  nodi foglia dellalbero generato attraverso il grafo dellarchitettura.

  Frecce
  Le frecce che collegano due cartelle, servono a rappresentare la gerarchia.
  In particolare una freccia uscente indica che la cartella di partenza
  contiene al suo interno la cartella di destinazione.
                            Scrum team 2   Understand your code
Graph architecture




                     Scrum team 2   Understand your code
Code Check




  Unulteriore funzionalit` o鍖erta dal tool consiste in una breve
                          a
  analisi del codice. Essa permette di trovare alcuni difetti di
  programmazione. Permette di rilevare:
      errori di naming di variabili
      funzioni troppo lunghe
      funzioni troppo complesse
      codice non raggiungibile




                         Scrum team 2   Understand your code
Code Check




  `
  E possibile esplorare i risultati per capire dove sono e鍖ettivamente
  collocati gli errori rilevati.
                         Scrum team 2   Understand your code
Pregi e difetti

  Pregi:
      facile da installare e da
      utilizzare
                                          Difetti:
      ha un editor per il codice
                                                 alcune viste, come il
      integrato
                                                 diagramma delle classi,
      ` compatibile con molti
      e                                          sono di di鍖cile
      linguaggi di                               consultazione
      programmazione
                                                 problemi ad esportare
      ha molti tipi di viste che                 immagini in caso di viste
      aiutano a comprendere                      molto complesse
      velocemente le
      caratteristiche del
      software


                          Scrum team 2   Understand your code

More Related Content

Presentazione understand

  • 1. ` Universita degli studi di Milano Bicocca Facolt` di Scienze Matematiche Fisiche e Naturali a Corso di Laurea in Informatica Understand your code Presentazione di M. Bonini, L. La Torre, L. Mariot, L. Poto, M.Previtali, A. Ranchetti, D. Ranchetti, M. Susani Anno Accademico 2010/2011 Scrum team 2 Understand your code
  • 2. Introduzione Understand ` un ambiente commerciale multi-piattaforma e e multi-linguaggio sviluppato da SciTools che ha lo scopo di aiutare lutente durante le fasi di reverse engineering. Permette di: 1 calcolare metriche 2 esplorare viste che rappresentano diverse caratteristiche del codice Supporta: Ada Jovial C++ Delphi/Pascal C# PL/M FORTRAN VHDL Java Scrum team 2 Understand your code
  • 3. Funzionalit` a Tra le molte funzionalit` di Understand ` possibile e鍖ettuare a e lanalisi di molte metriche. Le metriche pi` signi鍖cative sono: u CountLineCode : Linee di codice Cyclomatic : Numero ciclomatico (Edge - Nodi + Componenti Connesse) MaxNesting : Massimo livello di annidamento per le strutture di controllo PercentLackOfCohesion : Valore tra 0 e 100, un valore basso indica una alta coesione tra classi e metodi SumCyclomatic : Somma delle complessit` ciclomatiche di a funzioni annidate Una volta selezionato un elemento nel grafo ad albero allinterno del Project Metrics Browser, ` possibile esportare i valori ottenuti e tramite Understand in formato CSV o HTML. Scrum team 2 Understand your code
  • 4. Il software analizzato Il software analizzato ` Gantt Project v. 1.11.1. Gantt ` una e e applicazione desktop per la gestione di progetto e dellorganizzazione del lavoro. Esso ` scritto in Java ed ` composto e e da: 549 classi 318 鍖les 29211 linee di codice Questi dati sono stati ottenuti tramite i report di cui parleremo in seguito. Scrum team 2 Understand your code
  • 5. Metriche AvgCyclomatic : 1.73 AvgCyclomaticModified : 1.70 CountLineCodeDecl : 10048.00 AvgCyclomaticStrict : 1.83 CountLineCodeExe : 11205.00 AvgEssential : 1.09 CountLineComment : 6822.00 AvgLine : 123.15 CountPath : 8083364.00 AvgLineBlank : 19.81 CountSemicolon : 15605.00 AvgLineCode : 82.65 CountStmt : 20017.00 AvgLineComment : 21.59 CountStmtDecl : 9670.00 CountDeclClass : 547.00 CountStmtExe : 10347.00 CountDeclClassMethod : 64.00 Cyclomatic : 4693.00 CountDeclClassVariable : 279.00 CyclomaticModified : 4619.00 CountDeclFile : 316.00 CyclomaticStrict : 4967.00 CountDeclFunction : 2713.00 Essential : 2948.00 CountDeclInstanceMethod : 2338.00 MaxCyclomatic : 106.00 CountDeclInstanceVariable : 1349.00 MaxCyclomaticModified : 106.00 CountDeclMethod : 2402.00 MaxCyclomaticStrict : 131.00 CountDeclMethodAll : 3201.00 MaxInheritanceTree : 3.00 CountDeclMethodDefault : 117.00 Max N est ing : 5.00 CountDeclMethodPrivate : 277.00 RatioCommentToCode : 0.26 CountDeclMethodProtected : 138.00 SumCyclomatic : 4693.00 CountDeclMethodPublic : 1870.00 SumCyclomaticModified : 4619.00 CountLine : 38916.00 SumCyclomaticStrict : 4967.00 CountLineBlank : 6261.00 SumEssential : 2948.00 CountLineCode : 26116.00 Scrum team 2 Understand your code
  • 6. Metric Charts In aggiunta alla semplice visualizzazione testuale ` possibile e ottenere una rappresentazione gra鍖ca delle metriche. La loro generazione ` molto semplice, basta utilizzare i comandi presenti e sotto il menu Metrics. In particolare ` possibile visualizzare: e 1 Code Volume Distribution 2 File Volume 3 Avarage Complexity 4 Sum Complexity 5 Metric TreeMap Scrum team 2 Understand your code
  • 7. Code Volume Distribution Questo gra鍖co rappresenta la distribuzione delle linee di codice nel progetto in termini di: CountLineBlank: linee di codice vuote. CountLineCodeDecl: numero di linee contenente codice dichiarativo. CountLineCodeExe: numero di linee contenente codice sorgente eseguibile. CountLineComment: numero di linee contenente commenti. Dal gra鍖co osserviamo che la ripartizione ` abbastanza uniforme, le linee vuote sono in numero minore, le linee di e codice eseguibile sono le pi` di鍖use. u Scrum team 2 Understand your code
  • 8. File Volume Indica semplicemente da quanti 鍖les ` composto il progetto. e Scrum team 2 Understand your code
  • 9. Avarage Complexity Vengono rappresentate mediante un istogramma alcune misure di complessit`. a AvgCyclomatic: complessit` ciclomatica media di tutti i metodi e di tutte le funzioni innestati. a MaxCyclomatic: complessit` ciclomatica massima di tutti i metodi e di tutte le funzioni innestati. a MaxNesting: livello di innestamento massimo di strutture di controllo in una funzione. Notiamo che c` un forte squilibrio tra la complessit` ciclomatica massima e quella media e questo indica che ci e a sono classi che sono molto pi` complicate della media e sulle quali e quindi consigliabile operare modi鍖che atte a u migliorare il codice. Scrum team 2 Understand your code
  • 10. Sum Complexity CountPath: Numero di percorsi unici attraverso un blocco di codice, senza contare le uscite anomale o goto. SumCyclomatic: somma della complessit` ciclomatica di tutte le funzioni a innestate. SumEssential: somma della complessit` essenziale di tutte le funzioni a innestate. Scrum team 2 Understand your code
  • 11. Metric TreeMap Questo strumento fornisce una vista particolarmente interessante che ci permette di visualizzare una determinata caratteristica del codice che stiamo analizzando in funzione di una seconda caratteristica. Il menu per la generazione di tale gra鍖co ci fornisce le seguenti possibilit`: a Scrum team 2 Understand your code
  • 12. Metric TreeMap In questo esempio sono stati scelti come parametri il numero di linee per classe e la massima complessit` ciclomatica. Notiamo che a nella maggior parte dei casi le classi pi` complesse coincidono con u le classi di maggiori dimensioni. Grazie alleditor integrato ` e possibile mettere subito mano al codice. Scrum team 2 Understand your code
  • 13. Project Overview Charts Tramite la funzione di Project Overview Charts ` possibile avere e una panoramica generale sulle principali caratteristiche dellintero progetto analizzato. Per poter utilizzare questa funzione, dopo aver aperto il progetto, bisogner` andare nel men` Project e a u selezionare Project Overview Charts. Tipi di output: gra鍖ci a torta istogrammi tabelle Scrum team 2 Understand your code
  • 14. Code breakdown Con questa analisi ` possibile capire,tramite un diagramma a torta, e la percentuale e il numero di linee di codice, linee di commento e linee vuote. Scrum team 2 Understand your code
  • 15. Function breakdown Questo strumento mostra, tramite un diagramma a torta, la percentuale e il numero di funzioni di tipo Public, Private, Protected e Default. Scrum team 2 Understand your code
  • 16. Class breakdown Con questa analisi ` possibile capire, tramite un diagramma a e torta, la percentuale e il numero di classi di tipo Public, Private, Protected e Default. Il numero di classi con visibilit` Public sono in numero nettamente a maggiore alle altre con diversa visibilit`. a Scrum team 2 Understand your code
  • 17. Most complex functions ` E possibile identi鍖care le cinque funzioni pi` complesse del u progetto, permettendo quindi al designer, se ` possibile, di spartire e le responsabilit` tra pi` funzioni, aumentando la mantenibilit` e la a u a semplicit` del progetto. Per complessit` si intende il numero di a a cammini linearmente indipendenti attraverso il grafo di controllo di 鍖usso. Scrum team 2 Understand your code
  • 18. Most complex 鍖les Vengono mostrati i cinque 鍖les pi` complessi, identi鍖cando quindi u quei 鍖les che potrebbero essere scomposti per suddividere meglio le responsabilit` e ridurre la complessit`. Per complessit` si intende la a a a media del numero di cammini linearmente indipendenti attraverso il grafo di controllo di 鍖usso per ogni metodo allinterno del File. Scrum team 2 Understand your code
  • 19. Reports Understand genera una grande variet` di reports. I reports a rientrano in queste categorie: Cross-Reference Reports mostrano informazioni simili a quelle nel Browser Info, tranne che sono indicati tutte le entit` a insieme in ordine alfabetico. Structure Reports mostrano la struttura del programma analizzato. Quality Reports mostrano aree in cui il codice potrebbe dover essere esaminato. Metric Reports indicano le metriche di base come il numero di righe di codice e commenti. ` E possibile creare i reports sia in formato HTML sia in formato testuale. La generazione dei reports ` molto semplice; ` su鍖ciente e e andare nel menu Reports e poi cliccare Generate Reports. Scrum team 2 Understand your code
  • 20. Reports Scrum team 2 Understand your code
  • 21. I gra鍖 Per creare un grafo relativo ad una classe/package bisogna: 1 Selezionare il nodo architetturale dinteresse con il tasto destro del mouse 2 Andare su Graphical Views e selezionare il grafo desiderato (Depends on, Depended on By, Butter鍖y-Dependency Graph, Internal Dependencies) Scrum team 2 Understand your code
  • 22. Caratteristiche comuni ai gra鍖 I gra鍖 di dipendenza architetturale sono gra鍖 orientati e pesati. I vertici del grafo si dividono in due tipologie: Classi, rappresentati da riquadri bianchi; Package/cartelle rappresentati da riquadri colorati; facendo doppio clic su questi ultimi, ` possibile espandere la e visualizzazione del grafo alle classi/sottocartelle contenute al loro interno. Gli archi orientati possono essere invece di due colori: gli archi blu indicano una relazione di dipendenza semplice gli archi rossi una relazione di mutua dipendenza I pesi degli archi, in鍖ne, vengono determinati contando il numero di chiamate alla classe (o package/cartella a cui appartiene) di destinazione dellarco. Scrum team 2 Understand your code
  • 23. Dependency graph Un grafo delle dipendenze mostra come le varie classi presenti nel progetto interagiscono tra loro. Attraverso un grafo delle dipendenze ` quindi possibile osservare quali classi o cartelle e vengono maggiormente utilizzate e richiamate o quali nodi fanno maggior uso di altre classi o cartelle allinterno del codice. Scrum team 2 Understand your code
  • 24. Depends on Questo tipo di grafo ` disponibile per classi e package. Mostra le e classi e i package da cui dipende lelemento sul quale ` stato e generato il grafo. Scrum team 2 Understand your code
  • 25. Depended On By Questo tipo di grafo ` disponibile per classi e package. Mostra le e classi e i package che dipendono dallelemento sul quale ` stato e generato il grafo. Scrum team 2 Understand your code
  • 26. Butter鍖y-Dependency Questo tipo di grafo ` disponibile solo per package. Esso pu` e o essere considerato come lunione dei gra鍖 Depends on e Depended on By generati su un elemento; mostra quali classi/package dipendono dallelemento sul quale ` stato generato il grafo e le e classi package da cui lelemento dipende. Scrum team 2 Understand your code
  • 27. Internal dependencies Questo tipo di grafo ` disponibile solo per package. Mostra le e dipendenze delle classi allinterno dellelemento (package) su cui ` e stato generato il grafo. Scrum team 2 Understand your code
  • 28. UML class diagram Attraverso questo tipo di digramma ` possibile comprendere come si e comportano le classi allinterno del software. Ogni freccia indica che la classe di partenza ` 鍖glia della classe di destinazione. e Qui mostriamo solo un dettaglio del diagramma delle classi perch卒 il e diagramma completo contiene 549 classi e la rappresentazione completa del diagramma ` di鍖cilmente fruibile. e Scrum team 2 Understand your code
  • 29. Graph architecture Attraverso il grafo dellarchitettura ` possibile comprendere la e suddivisione e la ripartizione, in termini di 鍖le, del progetto. Questo pu` o servire a comprendere i macro-blocchi che costituiscono il sistema. Ellissi Rappresentano delle cartelle che a loro volta contengono altre sottocartelle. Questi sono nodi interni (non possono essere foglie) dellalbero generato con il grafo dellarchitettura. Riquadri Rappresentano cartelle che al loro interno hanno solo 鍖le contenente codice, ovvero non contengono altre sottocartelle. Questi sono sempre i nodi foglia dellalbero generato attraverso il grafo dellarchitettura. Frecce Le frecce che collegano due cartelle, servono a rappresentare la gerarchia. In particolare una freccia uscente indica che la cartella di partenza contiene al suo interno la cartella di destinazione. Scrum team 2 Understand your code
  • 30. Graph architecture Scrum team 2 Understand your code
  • 31. Code Check Unulteriore funzionalit` o鍖erta dal tool consiste in una breve a analisi del codice. Essa permette di trovare alcuni difetti di programmazione. Permette di rilevare: errori di naming di variabili funzioni troppo lunghe funzioni troppo complesse codice non raggiungibile Scrum team 2 Understand your code
  • 32. Code Check ` E possibile esplorare i risultati per capire dove sono e鍖ettivamente collocati gli errori rilevati. Scrum team 2 Understand your code
  • 33. Pregi e difetti Pregi: facile da installare e da utilizzare Difetti: ha un editor per il codice alcune viste, come il integrato diagramma delle classi, ` compatibile con molti e sono di di鍖cile linguaggi di consultazione programmazione problemi ad esportare ha molti tipi di viste che immagini in caso di viste aiutano a comprendere molto complesse velocemente le caratteristiche del software Scrum team 2 Understand your code