Pagina 1 di 1

Flowchart generator - dal sorgente al diagramma

Inviato: lun gen 25, 2016 18:45
da joe
Qualcuno di voi avvezzo alla programmazione, revisione, ma soprattutto analisi di codice scritto da altri probabilmente si sarà posto il problema.

Scenario: abbiamo davanti al naso il sorgente di un programma che non abbiamo scritto noi, dobbiamo capire cosa fà senza perderci tra i vari costrutti, chiamate e... mettiamoci anche qualche "go to".

Ok, prima di buttarci a pesce nell'analisi del nostro sorgente riga per riga, sarà anche a voi venuto da chiedervi:
"E se avessimo il diagramma di flusso delle operazioni che vengono svolte?
Non sarebbe più facile e rapida la nostra analisi?"

Siccome d'esperienza in programmazione ne ho pochina e tutta robetta semplice, immagino che qualcuno con più esperienza di me si sia già posto la domanda.
E infatti in rete si trova qualche tool che dandogli in pasto il sorgente, ci sputa fuori un bel disegnino che mostra la strada che segue il programma per svolgere le sue operazioni.

Prima di installare e provare questo o quello, vi chiedo (a voi programmatori, ma anche a chi ha a che fare per vie traverse con l'analisi di codice sorgente..):

  1. vi siete mai trovati a farvi questa domanda? Ha un certo senso che un programmatore se la ponga?

  2. avete da consigliare qualche programma per analizzare un sorgente...? Ed in particolare qualcosa che ne disegni il diagramma? (possibilmente qualcosa di personalmente testato).

Nel mio caso ho a che fare con programmi scritti in Fortran 77.
Al solito, grazie per le eventuali risposte! :)

Re: Flowchart generator - dal sorgente al diagramma

Inviato: lun gen 25, 2016 19:16
da targzeta
1. Ha assolutamente senso. Se qualcuno non se la pone sarebbe un problema!
2. Io ho usato questo anche se è un progetto vecchio. Per il perl ha fatto il suo dovere.

Emanuele

Re: Flowchart generator - dal sorgente al diagramma

Inviato: mar gen 26, 2016 11:00
da joe
Grazie della risposta.
Il programma che hai linkato non mi pare supporti il fortran...

Avevo trovato questo ieri:
http://www.deater.net/weave/vmwprod/f77_diagram/

Provato, ma il risultato è abbastanza pietoso: disegna solo una piccola parte del diagramma del programma ma se ne lascia indietro troppo. Quindi niente da fare...
Non so cosa non digerisca esattamente, se qualche "go to" di troppo o roba simile...

Ho provato anche doxygen, prendendo spunto da questo breve tutorial pratico:
http://www.softeng-support.ac.uk/docume ... xygen.html

Funziona, ma non disegna il diagramma d flusso... piuttosto un diagramma di quali parti del programma vengono chiamate da altre. Quali funzioni e subroutines vengono chiamate dal programma ecc. Insomma è comunque utile ma non è quello che cercavo.
Se avete qualche altro suggerimento benvenga. Nel frattempo provo a cercare qualche alche alternativa e al limite mi rassegno e proseguo con l'analisi manuale.

Re: Flowchart generator - dal sorgente al diagramma

Inviato: mer gen 27, 2016 12:40
da joe
Ho fatto alcune prove poco fà.
Odio dirlo, ma non sono riuscito a trovare un software che funzioni sotto linux. Ci sono diversi software, ma alcuni non funzionano, altri non supportano il linguaggio fortran...
Insomma non sono riuscito a produrre un diagramma di flusso del programmino che sto studiando. Codice tutto sommato non così complesso, programmato in modo "procedurale" e minimamente strutturato (c'è il main, due subroutines e due functions... niente di che insomma).

Alla fine cercando e cercando ho trovato un'applicazione chiamata "Visustin".
Problema, non c'è una versione per Linux.
Ho provato con wine, ma il risultato prodotto è... quanto meno strano. Viene disegato un flowchrat, ma non completamente: mancano le operazioni (proprio il testo) dentro i riquadri e non viene visualizzato correttamente.

Mi sono arreso e ho fatto partire la macchina virtuale con XP (W KVM!!). Spostato l'installer di visustin e il sorgente dall'host al sistema guest via samba...
Con grande stupore... perchè ormai non ci speravo più.... Bè, Visustin ha riprodotto graficamente tutte le operazioni, le scelte ecc, che riporta il sorgente datogli in pasto.
Proprio quello che mi serviva insomma.
Unica pecca, non da poco è l'impossibilità di stampare o salvare il disegnino, in quanto la versione installata è comunque solo una demo in valutazione. D'altra parte "a caval donato..".

Ora che ho fatto il nome di un software concreto e magari ho dato meglio l'idea di quel che mi serve.
Non è che per caso qualcuno conosce una valida alternativa possibilmente Libera e "Linux compatibile" a questo Visustin?

Se la risposta fosse negativa e qualcuno sta cercando un software del genere e magari no ha trovato niente di funzionate, consiglio di provare quello indicato, ok, non gira sul pinguino, ma a volte la priorità è ottenere un risultato al volo.

Spero che mi possiate consigliare qualche alternativa.
Alla prossima! :)

Re: Flowchart generator - dal sorgente al diagramma

Inviato: mer gen 27, 2016 13:07
da nico giraldi
Domanda probabilmente idiota: ma usare Doxygen? Anche se il codice non contiene documentazione, basta attivare qualcosa tipo "optimize for fortran", "call graph" e "have_dot" e dovrebbe fare quello che chedi se non ho capito male.
Serve anche una libreria, ora non ricordo quale ma te lo dice Doxygen quando lo fai girare. Io l'ho usato per analizzare 20k righe di F77 e funziona.

ng

Re: Flowchart generator - dal sorgente al diagramma

Inviato: mer gen 27, 2016 13:34
da joe
Per capirci, a me servirebbe sta roba:
https://dl.dropboxusercontent.com/u/410 ... sustin.jpg

Con doxygen ho provato ma senza risultati.
Però, come ho già detto sopra, mi restituisce non un flowchart ma uno schema delle chiamate tra il main e le varie subroutines e funzioni. A me quello non serve.
Però non conosco bene doxygen.
Se sai che è in grado di produrre un diagramma di flusso come quello in figura, fammi sapere! E grazie per il consiglio :D
Se dai un'occhiata alla figura e mi sai dire qualcosa mi saresti in ogni caso di grande aiuto.

Re: Flowchart generator - dal sorgente al diagramma

Inviato: mer gen 27, 2016 13:59
da nico giraldi
Ok, mi sembrava troppo facile, avevo capito male. Hai ragione tu, doxygen non fa una cosa del genere. Non conosco un strumento che la faccia, anzi se lo scopri aggiorna il thread!

Re: Flowchart generator - dal sorgente al diagramma

Inviato: mer gen 27, 2016 14:51
da joe
Ok, grazie comunque per la risposta.
A me uno strumento del genere pare piuttosto utile se si deve analizzare il codice scritto da altri. E a dirla tutta mi pare anche un po' strano che non ve ne sia uno simile sotto linux. Forse anche il linguaggio fortran che interessa a me non è così diffuso tra gli sviluppatori... quindi magari il tool per ottenere la stessa cosa esiste, ma supporta solo altri linguaggi più consueti...

Provo, anche se ci ho già cercato dentro a chiedere su linuxquestions vediamo se loro conoscono qualche alternativa linuxita. :)
Ad ogni modo eventualmente aggiornerò la discussione se ci fossero degli sviluppi.
Per il momento grazie a tutti.

Re: Flowchart generator - dal sorgente al diagramma

Inviato: gio gen 28, 2016 10:49
da nico giraldi