SlideShare uma empresa Scribd logo
1 de 26
Baixar para ler offline
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
Introduzione
                     Understand for Java    Software Architecture Reconstruction
                                  ARMIN     Passaggi fondamentali
                                  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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Introduzione    Introduzione
              Understand for Java    HOWTO
                           ARMIN     Architettura u4j2rsf
                           u4j2rsf   TODO e sviluppi futuri


ARMIN:Importare schema




                   Michele Zonca     u4j2rsf
Introduzione    Introduzione
               Understand for Java    HOWTO
                            ARMIN     Architettura u4j2rsf
                            u4j2rsf   TODO e sviluppi futuri


ARMIN:Importare rsf




                    Michele Zonca     u4j2rsf
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
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

Mais conteúdo relacionado

Semelhante a U4J2RSF

Introduzione al java
Introduzione al javaIntroduzione al java
Introduzione al javaGiovanni Pace
 
Struttin' on, novità in casa Struts
Struttin' on, novità in casa StrutsStruttin' on, novità in casa Struts
Struttin' on, novità in casa StrutsMarcello Teodori
 
Analisi di prestazione dell'interprete tuProlog su piattaforma Java - Present...
Analisi di prestazione dell'interprete tuProlog su piattaforma Java - Present...Analisi di prestazione dell'interprete tuProlog su piattaforma Java - Present...
Analisi di prestazione dell'interprete tuProlog su piattaforma Java - Present...MicheleDamian
 
SPRING - MAVEN - REST API (ITA - Luglio 2017)
SPRING - MAVEN - REST API (ITA - Luglio 2017)SPRING - MAVEN - REST API (ITA - Luglio 2017)
SPRING - MAVEN - REST API (ITA - Luglio 2017)Valerio Radice
 
Progettazione di uno strumento per la reingegnerizzazione di applicazioni legacy
Progettazione di uno strumento per la reingegnerizzazione di applicazioni legacyProgettazione di uno strumento per la reingegnerizzazione di applicazioni legacy
Progettazione di uno strumento per la reingegnerizzazione di applicazioni legacyGiacomo Russo
 
La Unix Way vista da un DevOps
La Unix Way vista da un DevOpsLa Unix Way vista da un DevOps
La Unix Way vista da un DevOpsFabio Mora
 
03-Lezione PON BAITAH Dott. Suma - Software Engineering - cenni
03-Lezione PON BAITAH Dott. Suma - Software Engineering - cenni03-Lezione PON BAITAH Dott. Suma - Software Engineering - cenni
03-Lezione PON BAITAH Dott. Suma - Software Engineering - cenniMarco Suma
 
Progetto SOD Davide Sito
Progetto SOD Davide SitoProgetto SOD Davide Sito
Progetto SOD Davide SitoDavide Sito
 
Continuous Integration e High Quality Code
Continuous Integration e High Quality CodeContinuous Integration e High Quality Code
Continuous Integration e High Quality CodeDaniele Mondello
 
Inversion of control e Dependency Injection (ITA)
Inversion of control e Dependency Injection (ITA)Inversion of control e Dependency Injection (ITA)
Inversion of control e Dependency Injection (ITA)Giancarlo Valente
 
Aspect Oriented Programming
Aspect Oriented ProgrammingAspect Oriented Programming
Aspect Oriented ProgrammingAndrea Bozzoni
 
Lezione 12 - Observer
Lezione 12 - ObserverLezione 12 - Observer
Lezione 12 - ObserverMarco Bianchi
 
Webbit 2004: Tiger, java
Webbit 2004: Tiger, javaWebbit 2004: Tiger, java
Webbit 2004: Tiger, javaMatteo Baccan
 
Progettazione e realizzazione di una piattaforma middleware per la gestione a...
Progettazione e realizzazione di una piattaforma middleware per la gestione a...Progettazione e realizzazione di una piattaforma middleware per la gestione a...
Progettazione e realizzazione di una piattaforma middleware per la gestione a...LucaGre
 

Semelhante a U4J2RSF (20)

Introduzione al java
Introduzione al javaIntroduzione al java
Introduzione al java
 
Struttin' on, novità in casa Struts
Struttin' on, novità in casa StrutsStruttin' on, novità in casa Struts
Struttin' on, novità in casa Struts
 
Analisi di prestazione dell'interprete tuProlog su piattaforma Java - Present...
Analisi di prestazione dell'interprete tuProlog su piattaforma Java - Present...Analisi di prestazione dell'interprete tuProlog su piattaforma Java - Present...
Analisi di prestazione dell'interprete tuProlog su piattaforma Java - Present...
 
SPRING - MAVEN - REST API (ITA - Luglio 2017)
SPRING - MAVEN - REST API (ITA - Luglio 2017)SPRING - MAVEN - REST API (ITA - Luglio 2017)
SPRING - MAVEN - REST API (ITA - Luglio 2017)
 
Progettazione di uno strumento per la reingegnerizzazione di applicazioni legacy
Progettazione di uno strumento per la reingegnerizzazione di applicazioni legacyProgettazione di uno strumento per la reingegnerizzazione di applicazioni legacy
Progettazione di uno strumento per la reingegnerizzazione di applicazioni legacy
 
La Unix Way vista da un DevOps
La Unix Way vista da un DevOpsLa Unix Way vista da un DevOps
La Unix Way vista da un DevOps
 
03-Lezione PON BAITAH Dott. Suma - Software Engineering - cenni
03-Lezione PON BAITAH Dott. Suma - Software Engineering - cenni03-Lezione PON BAITAH Dott. Suma - Software Engineering - cenni
03-Lezione PON BAITAH Dott. Suma - Software Engineering - cenni
 
Thesis Frascino Slide iT
Thesis Frascino Slide iTThesis Frascino Slide iT
Thesis Frascino Slide iT
 
Progetto SOD Davide Sito
Progetto SOD Davide SitoProgetto SOD Davide Sito
Progetto SOD Davide Sito
 
Java AWT
Java AWTJava AWT
Java AWT
 
Continuous Integration e High Quality Code
Continuous Integration e High Quality CodeContinuous Integration e High Quality Code
Continuous Integration e High Quality Code
 
Inversion of control e Dependency Injection (ITA)
Inversion of control e Dependency Injection (ITA)Inversion of control e Dependency Injection (ITA)
Inversion of control e Dependency Injection (ITA)
 
Tesi di Laurea
Tesi di LaureaTesi di Laurea
Tesi di Laurea
 
Lezione 11 - Bridge
Lezione 11 - BridgeLezione 11 - Bridge
Lezione 11 - Bridge
 
Aspect Oriented Programming
Aspect Oriented ProgrammingAspect Oriented Programming
Aspect Oriented Programming
 
Lezione 12 - Observer
Lezione 12 - ObserverLezione 12 - Observer
Lezione 12 - Observer
 
Webbit 2004: Tiger, java
Webbit 2004: Tiger, javaWebbit 2004: Tiger, java
Webbit 2004: Tiger, java
 
Progettazione e realizzazione di una piattaforma middleware per la gestione a...
Progettazione e realizzazione di una piattaforma middleware per la gestione a...Progettazione e realizzazione di una piattaforma middleware per la gestione a...
Progettazione e realizzazione di una piattaforma middleware per la gestione a...
 
RCIM 2008 -- EHW
RCIM 2008 -- EHWRCIM 2008 -- EHW
RCIM 2008 -- EHW
 
Tesi Todone
Tesi TodoneTesi Todone
Tesi Todone
 

Último

ScrapeGraphAI: a new way to scrape context with AI
ScrapeGraphAI: a new way to scrape context with AIScrapeGraphAI: a new way to scrape context with AI
ScrapeGraphAI: a new way to scrape context with AIinfogdgmi
 
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Associazione Digital Days
 
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Associazione Digital Days
 
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Associazione Digital Days
 
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Associazione Digital Days
 
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Associazione Digital Days
 
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Associazione Digital Days
 
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Associazione Digital Days
 
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Associazione Digital Days
 

Último (9)

ScrapeGraphAI: a new way to scrape context with AI
ScrapeGraphAI: a new way to scrape context with AIScrapeGraphAI: a new way to scrape context with AI
ScrapeGraphAI: a new way to scrape context with AI
 
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
 
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
 
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
 
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
 
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
 
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
 
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
 
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
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
  • 2. Introduzione Understand for Java Software Architecture Reconstruction ARMIN Passaggi fondamentali 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
  • 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