Tecniche di analisi

Il documento, di una settantina di pagina il cui indice aggiornato all'ultima versione trovate di seguito, leggibile online ma che potete anche scaricare in calce al presente articolo, analizza alcuni metodi e tecniche di analisi - sia dei requisiti che dei sistemi software - che ho avuto modo di utilizzare durante la mia esperienza lavorativa. In particolare gli argomenti sono: modalità di utilizzo delle tabelle decisionali nella elicitazione dei requisiti, macchine a stati finiti e reti di Petri per la modellazione di sistemi e processi dinamici.

  • Introduzione
    • Capitolo 1 - Tabelle Decisionali
      • Definizione di tabella decisionale
      • Logic Friday
      • Care or don’t care ?
      • Esempio # 1 – il form di registrazione utente
      • Tabelle funzionali
      • Riduzione della tabella funzionale in decisionale
      • Il caso degenere della funzione
      • Esempio # 2 – la scuola guida
      • Esempio #3 - un caso un po’ complesso
      • Riduzione delle tabelle di decisione
  • Capitolo 2 – Automa a stati finiti
    • Definizione di automa o macchina a stati finiti
    • Esempio #4 – Le scuole medie inferiori
    • Riduzione di un ASF in tabella decisionale
    • Esempio #4bis – vacanza o studio punitivo?
    • Definizione formale di automa agli stati finiti in termini di tabella decisionale
  • Capitolo 3 – Reti di Petri
    • Definizioni
    • Dinamicità nelle reti di Petri: i token
    • Esempio # 5 – Cucire le … stringhe!
    • Valore semantico e definizioni formali
    • Descrizione operativa di una rete di Petri.
    • Combinazioni parziali distinte di N numeri interi.
    • Vasi, tubi e palline...    
    • Algoritmo di soluzione del problema fondamentale per una rete di Petri
      • Passo # 1 – Aggiunta delle combinazioni distinte a ti,j    
      • Passo # 2 – Riduzione dei valori nelle colonne con più valori negativi
      • Passo # 3 – Calcolo della configurazione finale.
      • Calcolo delle successive configurazioni.
      • Un esempio più complesso
      • Altro esempio: numero token maggiore della somma delle molteplicità del posto.
      • Ultimo esempio: più configurazioni finali
    • Reti di Petri binarie
  • Nota conclusiva

Tabella delle versioni

 

# Numero versione Data Pubblicazione Descrizione
1 1.0 18 marzo 2013 Versione iniziale
2 1.1 29 marzo 2013

Aggiunti i seguenti paragrafi:

 

  • Descrizione operativa di una rete di Petri.
  • Combinazioni parziali distinte di N numeri interi.
  • Vasi, tubi e palline...    
  • Algoritmo di soluzione del problema fondamentale per una rete di Petri
    • Passo # 1 – Aggiunta delle combinazioni distinte a ti,j    
    • Passo # 2 – Riduzione dei valori nelle colonne con più valori negativi
    • Passo # 3 – Calcolo della configurazione finale.
    • Calcolo delle successive configurazioni.
    • Un esempio più complesso
    • Altro esempio: numero token maggiore della somma delle molteplicità del posto.
    • Ultimo esempio: più configurazioni finali
  • Reti di Petri binarie

 

 

 

Il lavoro è da considerarsi “in itinere”; l’intenzione è di inserire altri argomenti ed esempi, ma non ho definito alcun piano di lavoro. Per qualunque errore e/o segnalazione di migliorie e/o commenti potete scrivermi direttamente all’e-mail: berta_danilo@hotmail.com oppure usare il form dei contatti che trovate sul mio sito.

Nota di licenza:

Licenza Creative Commons   Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale 3.0 Italia.

Allegati:
FileDescrizioneDimensione del FileDownloadsCreato
Scarica questo file (Tecniche_analisi_1_0.zip)T.A.Versione 1.0 - Tecniche di analisi dei requisiti e modelli software: le tabelle decisionali, le macchine a stati finiti e le reti di Petri nella descrizione dei requisiti e del software2787 kB5602013-03-18 14:40
Scarica questo file (Tecniche_analisi_1_1.zip)T.A.Versione 1.1 - Tecniche di analisi dei requisiti e modelli software: le tabelle decisionali, le macchine a stati finiti e le reti di Petri nella descrizione dei requisiti e del software1991 kB5342013-03-29 13:28

QT Creator e configurazione di librerie esterne

Chi utilizza l'IDE QT Creator per lo sviluppo di applicazioni in C++, può essere stato messo in difficoltà nel configurare il tool per l'utilizzo di librerie esterne. In questo breve articolo mostreremo come fare utilizzando una bella libreria "musicale" irrKlang.
Per prima cosa scaricate la libreria dal sito http://www.ambiera.com/irrklang/downloads.html. Scaricherete un file zip che scompatterete all'interno di una cartella irrKlang, trovandovi con la seguente struttura:

Struttura cartelle pacchetto irrKlangCreate da qualche parte nel vostro file system la cartella CppLibs (o comunque vogliate chiamarla); nel seguito supporremo che abbiate creato la cartella C:\CppLibs. Copiate all'interno di essa la cartella irrKlang  che avete scompattato poco innanzi. In pratica, lo scopo della CppLibs è quello di contenere tutte le librerie esterne che utilizzate per i vostri progetti, suddivise per prodotto (ad esempio: libreria irrKlang, librerie per la connessione al database mySQL++, etc..). Facciamo notare che non è necessario copiare tutte le cartelle del file zip originale, ma basterebbero le cartelle "include" e "libs"; in ogni caso è buona norma mantenere tutto ciò che si riferisce ad una libreria in un unico posto, per averlo sempre a portata di mano.

A questo punto, create in C:\CppLibs la cartella "bin" (o comunque vogliate chiamarla) e inseritela nella variabile PATH di sistema - per Linux nella variabile LD_LIBRARY_PATH -  (operazione che supponiamo sappiate fare per il vostro sistema operativo). All'interno di tale cartella, copiate le librerie che trovate nella cartella bin della directory irrKlang, per il vostro sistema operativo e per il vostro compilatore: i file con estensione ".dll" se siete su sistema Windows o quelle con estensione ".so" se siete in sistema operativo Linux (su http://www.learncpp.com/cpp-tutorial/a1-static-and-dynamic-libraries/ trovate una ottima spiegazione relativa alle tipologia di librerie C++). Nel mio caso, ad esempio, utilizzo il compilatore gcc in ambiente Windows, quindi ho copiato i file:  ikpFlac.dll, ikpMP3.dll e irrKlang.dll dalla cartella C:\CppLibs\irrKlang\bin\win32-gcc in C:\CppLibs\bin. In definitiva, la struttura finale appare come segue:

Struttura finale cartelle CppLibs

Aprite QT Creator, create un nuovo progetto con il nome irrKlang (ma potete anche qui scegliere il nome che preferite) ed aprite il file irrKlang.pro, trovandoci quanto segue:

 FilePRO

Copiate all'interno del file le seguenti righe:

INCLUDEPATH += C:/CppLibs/irrKlang/include/
DEPENDPATH += C:/CppLibs/irrKlang/include/
LIBS += -L C:/CppLibs/irrKlang/lib/Win32-gcc/ -l irrKlang

Ottenendo quanto mostrato nella figura che segue:

File .pro modificato

Si noti che irrKlang che segue il parametro -l nella stringa a destra della LIBS è il nome della libreria contenuto nella cartella C:\CppLibs\irrKlang\lib\Win32-gcc senza l'estensione e senza la parte lib del nome del file. Mi spiego meglio: se guardiamo nella cartella C:\CppLibs\irrKlang\lib\Win32-gcc troviamo il file libirrKlang.a che è la libreria statica (ha estensione .a) che dobbiamo includere. Per includerla abbiamo utilizzato il parametro LIBS += -L C:/CppLibs/irrKlang/lib/Win32-gcc/ -l irrKlang in cui -L (l maiuscola) fa riferimento alla cartella in cui si trova la libreria, mentre -l (l minuscola) fa riferimento al nome della libreria, che non coincide con il nome del file, ma si "ricava" dal nome del file togliendo "lib" all'inizio e togliendo l'estensione (.a). Questo è coerente con le regole del compilatore gcc che potete leggere su http://gcc.gnu.org/onlinedocs/gcc-4.3.1/gcc/Link-Options.html#index-l-858.  

Per testare che tutto funzioni potete utilizzare il programma che trovate nella cartella irrKlang\examples\01.HelloWorld nel file main.cpp, oppure utilizzare l'HelloWorld semplificato (e scopiazzato dall'HelloWorld originale) che ho inserito qui di seguito. Fate attenzione di inserire un percorso valido per il  file getout.ogg  alla riga 18 del listato

#include <stdio.h>
#include <irrKlang.h>
#include <conio.h>
using namespace irrklang;
using namespace std;
int main()
{
    // start the sound engine with default parameters
    ISoundEngine* engine = createIrrKlangDevice();
    if (!engine)
    {
        printf("Could not startup engine\n");
        return 0; // error starting up the engine
    }
    // To play a sound, we only to call play2D(). The second parameter
    // tells the engine to play it looped.
    // play some sound stream, looped
    engine->play2D("C:/CppLibs/irrKlang/media/getout.ogg", true);
    // In a loop, wait until user presses 'q' to exit
    do
    {
        printf("Press a press 'q' to quit.\n");
    }
    while(getch() != 'q');
    engine->drop(); // delete engine
    return 0;
}

Quanto sopra riportato vale in generale per qualunque componente esterno. In sintesi, occorre ricordarsi di:

  1. Definire il percorso alla cartella di include del componente che si sta utilizzando tramite le variabili INCLUDEPATH  e DEPENDPATH
  2. Definire il percorso alla cartella della libreria del componente che si sta utilizzando tramite la variabile LIBS
  3. Inserire le librerie (che in genere si trovano in una qualche directory "bin" del pacchetto utilizzato per distribuire il componente) in una directory del file system, che deve essere registrata nella variabile PATH (o LD_LIBRARY_PATH per Linux). Ricordiamo infatti che il sistema operativo va a cercare la libreria esterna prima nella stessa cartella in cui si trova l'eseguibile del programma che sta girando quindi in una serie di cartelle tra le quali quelle che trova registrate nella variabile PATH (o LD_LIBRARY_PATH per Linux). Per aprofondimenti si veda ad esempio http://msdn.microsoft.com/en-us/library/windows/desktop/ms682586%28v=vs.85%29.aspx oppure http://msdn.microsoft.com/en-us/library/7d83bc18%28v=vs.80%29.aspx oppure ancora http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html.

La comodità di inserire le librerie in una unica cartella bin per tutti i componenti che si utilizzano quando si sta sviluppando un progetto, consiste nel fatto che, quando si deve preparare il pacchetto di installazione - ad esempio con uno dei tanti installer in commercio  - c'è un unico punto, la cartella bin, in cui si trovano tutte le librerie che dovranno essere incluse nel pacchetto finale.

Le descrizioni dei vari parametri che possono essere utilizzati per configurare il progetto inserendoli nel file .pro di QT Creator, sono disponibili su http://pepper.troll.no/s60prereleases/doc/qmake-variable-reference.html Tra i tanti, ricordiamo ad esempio il parametro QMAKE_CXXFLAGS che serve per passare parametri al compilatore. Ad esempio: QMAKE_CXXFLAGS += -static indica al compiltore gcc che si vuole compilare in modalità statica.

Siete ancora qui ? Pensavo steste ascoltando un po' di musica...

 

Elementi di Statistica e Calcolo delle Probabilità

Nel 1990, o giù di li, quando studiavo Fisica all'università di Torino, tra i corsi di studio ve ne era uno che trattava Statistica e Calcolo delle probabilità. In quei tempi, non avevamo uno specifico libro di testo e utilizzavamo solo gli appunti che prendevamo durante la lezione e, per quello che non si riusciva a capire, ognuno si aggiustava andando a leggere e studiare libri presi in prestito nella biblioteca. Quanto segue è un "libro" di 180 pagine che ho scritto man mano che seguivo il corso e che tratta dei principali argomenti relativi alla statistica ed al calcolo delle probabilità. L'indice degli argomenti è riportato di seguito; ho scritto questi appunti usando la macchina da scrivere (la mitica olivetti lettera 18) e scrivendo parzialmente a mano le formule. 

E' disponibile una preview del primo capitolo ed è possibile scaricare il libro completo oppure i singoli capitoli in calce al presente articolo

 

 Indice completo degli argomenti.

CAPITOLO I - Elementi di calcolo delle probabilità
    - Nozioni introduttive                               
    - Nomenclatura                                   
    - Formula classica della probabilità totale                   
    - Frequenza relativa o probabilità statistica di un evento
    - Definizione di somma e prodotto di due o più eventi
    - Proprietà fondamentali della probabilità
    - Teoremi fondamentali della teroria della probabilità
        * Teorema della probabilità totale
        * Teorema delle probabilità composte
        * Formula della probabilità totale
        * Teorema delle ipotesi (formula di Bayes)
CAPITOLO II - Legge di ripartizione di una variabile aleatoria
    - Legge di ripartizione di una variabile aleatoria
    - Proprietà fondamentali della funzione di distribuzione
    - Probabilità per una variabile aleatoria di cadere in un dato intervallo
    - Funzione densità di probabilità
    - Proprietà essenziali della funzione densità di probabilità
CAPITOLO III - Parametri numerici che caratterizzano una variabile aleatoria
    - Il valor medio e la speranza matematica   
    - Momenti di una variabile aleatoria   
    - Altri parametri strutturali di una distribuzione    
CAPITOLO IV - Leggi di ripartizione
    - Funzioni di distribuzione    
        * Funzione di distribuzione binomiale o di Bernoulli   
        * Distribuzione multinomiale   
        * Distribuzione geometrica   
        * Distribuzione ipergeometrica   
        * Distribuzione  di Poisson
            ** Soluzione delle equazioni differenziali relative alla distribuzione di Poisson   
            ** Deduzione della distribuzione di Poisson a partire dalla distribuzione di Bernoulli   
        * Distribuzione gamma   
        * Funzione di distribuzione normale o gaussiana   
        * Distribuzione binomiale negativa
        * Distribuzione Lorenziana o di Cauchy   
CAPITOLO V - Composizioni di variabili aleatorie. Cenni sui sistemi di due variabili aleatorie
    - Composizione di variabili aleatorie    
    - La funzione caratteristica   
        * Proprietà fondamentali della funzione caratteristica        
        * Relazione tra la funzione caratteristica ed i momenti αr   
        * Calcolo della funzione caratteristica delle leggi di ripartizione descritte nel cap. 4    
    - Calcolo della asimmetria della distribuzione di Poisson    
    - Soluzione del problema (i)   
    - Sistemi di variabile aleatoria   
        * Funzione di ripartizione di un sistema di variabili aleatorie       
        * Funzione densità di probabilità di un sitema di due variabili aleatorie   
        * Legge di ripartizione delle variabili di un sistema. Legge di ripartizione condizionata   
        * Caratteristiche numeriche dei sistemi di due variabili aleatorie. Covarianza e coefficiente di correlazione
        * Formula di correlazione per una relazione lineare tra le variabili del tipo: y = ax + b   
    - Soluzione del problema (ii)   
    - Soluzione del problema (iii) mediante la funzione caratteristica  
    - Composizione di leggi di ripartizione di maggior rilevanza   
        - Legge di ripartizione della variabile y = x2, essendo x distribuita normalmente  
        - Legge di ripartizione della variabile y = x1 + x2, dove x1 e x2 sono ripartite normalmente
        - Legge di ripartizione della variabile y = x1 + x2, dove x1 e x2 seguono un distribuzione gamma
        - Funzione di distribuzione della variabile (1/n)*Σxi , dove le xi seguono una distribuzione normale con parametri (μi , σi)
CAPITOLO VI - Teoremi limite della teoria delle probabilità
    - Legge dei grandi numeri e teorema centrale limite   
    - Ineguaglianza di Tchébychev   
    - Legge dei grandi numeri. Teorema di Tchébychev
        * Teorema di Tchébychev generalizzato. Teorema di Markov   
            ** Teorema di Markov   
        * Conseguenze della legge dei grandi numeri: teorema di Bernoulli e di Poisson
    - Il teorema centrale limite   
    - Teorema centrale limite per variabili aleatorie che seguono la stessa legge di ripartizione
CAPITOLO VII - Trattamento dei dati sperimentali
    - Nozioni introduttive
    - I vari tipi di errore   
    - Stima della speranza matematica e della varianza   
    - Caso in cui le variabili aleatorie seguono una legge di ripartizione normale. Formule pratiche esprimenti il teorema centrale limite
    - Propagazione degli errori    
    - Il calcolo delle curve sperimentali. Il metodo dei minimi quadrati e "best fit" polinomiale    
CAPITOLO VIII - I criteri di conformità o "tests" statistici
    - Introduzione
    - Le variabili dei tests
        * La variabile casuale chi quadro    
        * La variabile casuale w       
        * La variabile casuale r       
        * La variabile casuale t di Student   
        * La variabile casuale F di Fisher   
    - I tests statistici
        * Il test che utilizza la variabile casuale chi quadro per verificare la bontà di un fit
        * Il test che utilizza la variabile casuale chi quadro per verificare l'omogeneità di s provini    
        * Il test che utilizza la variabile casuale chi quadro come controllo della dipendenza o indipendenza di due variabili
        * Il test che utilizza la variabile casuale distribuita normalmente   
        * Il test normale utilizzato per la verifica dell'associazione o della indipendenza di due grandezze aleatorie    
        * Distribuzione di <x> ed s2 in una popolazione normale   
    - Costruzione di variabili utilizzate nei tests       
    - I test statistici. Proseguimento
        * Il test che utilizza la variabile t, per verificare se <x> è una stima esatta della media μ
        * Il test che utilizza la variabile t, utilizzato per valutare la differenza dei valori medi di due provini indipendenti della stessa popolazione   
        * Il test che utilizza la variabile F di Fisher       
APPENDICI
    - Appendice I
        * Integrali euleriani
        * Proprietà della funzione gamma
        * Proprietà della funzione beta
    - Appendice II
        * Soluzione dettagliata dell'integrale di Gauss (normale)
        * Calcolo dell'integrale dei momenti di ordine t della distribuzione gaussiana
        * Binomiale negativo
        * Nozioni generali sulle matrici e sui sistemi di Cramer
    - Appendice III
        * Un curioso metodo per dedurre la distribuzione di Gauss

Nota di licenza:

Licenza Creative Commons   Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale 3.0 Italia.

Allegati:
FileDescrizioneDimensione del FileDownloadsCreato
Scarica questo file (Appunti_Teoria_Probabilita_Statistica.zip)A.P.S.Libro completo - Appunti di Teoria della Probabilità e Statistica48996 kB5992013-01-15 09:44
Scarica questo file (Capitolo_1.zip)Cap.1Capitolo 1 - Appunti di Teoria della Probabilità e Statistica5659 kB5052013-01-15 10:44
Scarica questo file (Capitolo_2.zip)Cap.2Capitolo 2 - Appunti di Teoria della Probabilità e Statistica2744 kB5022013-01-15 10:46
Scarica questo file (Capitolo_3.zip)Cap.3Capitolo 3 - Appunti di Teoria della Probabilità e Statistica2562 kB5132013-01-15 10:49
Scarica questo file (Capitolo_4.zip)Cap.4Capitolo 4 - Appunti di Teoria della Probabilità e Statistica9553 kB5062013-01-15 11:00
Scarica questo file (Capitolo_5.zip)Cap.5Capitolo 5 - Appunti di Teoria della Probabilità e Statistica9596 kB4982013-01-15 11:10
Scarica questo file (Capitolo_6.zip)Cap.6Capitolo 6 - Appunti di Teoria della Probabilità e Statistica4427 kB4952013-01-15 11:22
Scarica questo file (Capitolo_7.zip)Cap.7Capitolo 7 - Appunti di Teoria della Probabilità e Statistica3872 kB5232013-01-15 11:24
Scarica questo file (Capitolo_8.zip)Cap.8Capitolo 8 - Appunti di Teoria della Probabilità e Statistica7826 kB4752013-01-15 11:30
Scarica questo file (xAppendici.zip)App.Appendici - Appunti di Teoria della Probabilità e Statistica2790 kB5132013-01-15 11:33
Copyright © 2017 Berta Danilo. Tutti i diritti riservati.
Joomla! è un software libero rilasciato sotto licenza GNU/GPL.