Post on 23-Jul-2020
Quando un’immaginevale piu’ di 1000 parole
Riccardo GovoniLinux day - 27/10/2007 - Imola
Chi sono
• Riccardo Govoni - battlehorse@gmail.com
• 5+ anni di esperienza su Java e Linux
• autore per OnJava.com , Javaworld.com , DevX.com
• certificato SCJP
• Google Software Engineer (quasi)
• http://www.battlehorse.net
Obiettivo
• risparmiare tempo!
• aka:
• dato un problema o dominio da analizzare, ottenere il piu’ in fretta possibile il maggior numero di informazioni
• quindi:
• perche’ non usare un’immagine?
• Il cervello interpreta le immagini molto piu’ facilmente del testo.
Obiettivo (2)
Considerazioni
• Parleremo principalmente di situazioni collegate allo sviluppo software
• ... ma l’approccio e’ generale
• costruire rappresentazioni grafiche complete upfront e’ costoso
• e’ piu’ conveniente usare soluzioni quick-and-dirty adattate ad una specifica porzione del problema
Agenda
• Ruby
• GraphViz Dot
• Esempi & Demos
• Extras ( JUNG , DSM e altre sigle )
Ruby
• Linguaggio di programmazione:
• Intepretato
• Dinamico
• Orientato agli Oggetti
• Yukihiro “Matz” Matsumoto , 1995
• Va di moda (aka potete usare Perl, Python etc... con gli stessi risultati )
Ruby (istantaneo)puts “Fruit Salad!”
ingredients = [] << “orange” << “apple” << “strawberry” << “blueberry” << “banana”
your_salad = ingredients.sort_by { |a| rand }[0..2]
puts your_salad
[“banana”,”strawberry”,”apple”]
my_salad = ingredients.sort_by { |a| rand }[0..2]
puts my_salad
[“apple”, “blueberry”,”orange”]
GraphViz
• Tool automatizzato per la generazione di grafi
• Utilizza input testuali e produce vari formati grafici ( png , svg ... )
• Sviluppato da AT&T , Common Public License
• http://www.graphviz.org
GraphViz (istantaneo)digraph G {
a -> b
a -> c
c -> d
c [shape=box,fillcolor=red,style=filled]
}
Esempi
• Sistemi di servizi distribuiti e asincroni
• Sistemi di dipendenze
• Social Networks
• Relazioni causa-effetto
• e molti altri ...
Servizi distribuiti e async
• SOA , Queue Networks , WebServices, Message Routing ... e che roba e’ ?
• Demo: Starbucks !
Starbucks
Starbucks: l’idea
• L’idea creativa e’ stata quella di:
• ottenere una pagina animata “gratis” sfruttando i tag di refresh di una pagina Html e rigenerando continuamente il grafo
Sistemi di dipendenze
• Dipendenze statiche in sorgenti
• C : #include <linux/socket.h>
• Java: import java.util.Map ;
Sistemi di dipendenze
• Makefiles & Builders :
• Makefile
• Ant
<target name="deploy"
depends="compile, test, package" />
Sistemi di dipendenze
• Ubuntu & Debian package repository
Ubuntu Rails deps.
Openoffice deps
Tomboy?
Ubuntu deps: l’idea
• L’idea creativa e’ stata quella di:
• usare un tool di “screen-scraping” (Hpricot) per estrarre informazioni dal web, in assenza di una rappresentazione completa del dominio di analisi in locale
socket.h deps
• Grafo delle dipendenze da socket.h in Linux Kernel 2.6.23
Social Networks
• ENRON
• scandalo finanziario nel 2001
• corpus di mail pubblico per effetto delle indagini giudiziarie
• http://www.cs.cmu.edu/~enron/
• 200.000 e-mails , 160 utenti
• buon dataset per studiare relazioni sociali
Enron Network
• Approccio all’analisi :
• Estrarre i campi From: e To: delle mail
• Assegnare peso maggiore ai destinatari piu’ gettonati
• Assegnare legami piu’ forti alle coppie di persone che si scambiano piu’ mail
• Demo!
Enron Network
Enron network• Una rappresentazione visuale puo’ fornire
nuovi strumenti di indagine
• Es. : algoritmi di clustering visuale
Enron: l’idea
• l’idea creativa e’ stata quella di :
• utilizzare informazioni visive (colore, spessore,vicinanza) per rappresentare in modo intuitivo diverse dimensioni del problema in analisi
Social Networks
• Altre idee:
Altre idee• Relazioni causa-effetto:
• parsing dei log di webserver associando URL richiesti con i rispettivi REFERER
• Si ottiene il grafo dei clickstream sul proprio sito: quali sono i path piu’ frequenti?
Altre idee
• Esistono tante e diverse forme di visualizzazione di uno stesso dominio
• Spesso l’idea nasce da problemi diversi da quello in analisi.
• Es. : Dependency Structure Matrix (DSM).
• Nasce da considerazioni algebriche, ma si applica anche al software
DSM
Quindi?
• Di solito, anche un piccolo software ricopre un dominio troppo ampio per tenerlo a mente
• Oppure si opera in campo distribuito e/o con visione parziale dei dati
• Un buon linguaggio di scripting e gli strumenti adatti possono venirci incontro, se usati in modo creativo!
Domande?
“Beware of bugs in the previous code; I have only proved it correct, not tried it.”
-- Don Knuth (creatore di TeX)