Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
FACOLTÀ DI INGEGNERIA
Sistemi Informativi
Correlatori:
1. LA DISTINTA BASE____________________________________15
2
2.3.3. I documenti allegati__________________________46
2.3.4. Altri piccoli problemi ________________________46
2.3.5. I risultati dell’analisi della qualità dei dati ________47
3. IL SISTEMA DI CODIFICA______________________________64
3
3.2.3. Il controllo sui dati inseriti ____________________67
4
L’essenza del problema ___________________________91
5
8.4.1. La ricerca semplice _________________________117
8.4.2. La ricerca avanzata _________________________118
9. LA SICUREZZA ______________________________________123
6
10.3.1. Definizione degli attributi ____________________146
7
11.3.6. L’esplosione della distinta____________________181
11.3.7. La ricerca_________________________________182
La ricerca semplice _____________________________183
La ricerca avanzata_____________________________183
11.3.8. La gestione dei dati _________________________185
L’inserimento di un elemento e la codifica assistita ____186
Il controllo sui dati _____________________________188
La modifica e l’eliminazione dei dati _______________189
La gestione della distinta_________________________190
L’amministrazione dei permessi e la gestione dei backup192
11.3.9. L’esportazione e la stampa ___________________193
La stampa diretta e i CSS ________________________194
La stampa della distinta _________________________196
8
12.2.2. Numero di link interrotti _____________________205
12.2.3. Percentuale di errori evitati nell’inserimento _____205
12.2.4. Istanze eliminate nel passaggio al nuovo sistema __206
Conclusioni_______________________________________________212
Sviluppi futuri_____________________________________________213
Bibliografia_______________________________________________214
Ringraziamenti ____________________________________________216
9
Introduzione
10
individuare i requisiti necessari minimi da rispettare, le problematiche
maggiori da risolvere e per studiare la struttura delle informazioni conformi
alle nuove esigenze.
11
l’importanza della distinta base e degli elementi che la compongono, risulta
però rischioso affidare tutta la responsabilità ad un’unica persona. D’altro
canto risulta pericoloso anche concedere troppe autorizzazioni per
l’intervento sul database. La soluzione a questo problema è l’istituzione di
una procedura di approvazione che delega l’approvazione di un
componente, di una distinta o di una revisione a chi ne ha effettivamente
richiesto l’approvazione mediante uno scambio di e-mail che si instaura tra
il sistema, l’amministratore e l’utente “approvatore”.
12
Il naturale sbocco dell’analisi dei requisiti è la progettazione e
l’implementazione del sistema. La progettazione, come noto dalla teoria, si
suddivide in progettazione della base di dati e progettazione
dell’applicazione. La progettazione della base di dati, sviluppata secondo le
metodologie standard, ci consente di ottenere lo schema ER normalizzato e
quindi la definizione precisa delle tabelle del database. La progettazione
dell’applicazione consiste invece nella realizzazione di un programma
informatico per la gestione del database appena creato. Questo presuppone
la scelta degli strumenti di programmazione che nel nostro caso è ricaduta
su PHP (PHP: Hypertext Preprocessor) con database MySQL, entrambi
disponibili gratuitamente sul mercato e largamente utilizzate nelle
applicazioni web. Il vantaggio principale del PHP è la generazione di
pagine HTML interpretabili da un qualsiasi browser e quindi totalmente
indipendenti dalla piattaforma di utilizzo. Oltre alla programmazione
dell’applicazione bisogna prevedere metodologie di importazione, pulizia e
analisi dei dati del sistema preesistente, ed inoltre sviluppare un interfaccia
utente potente e facile da usare. L’implementazione del sistema riguarda
principalmente quest’ultimo aspetto, cioè su come far interagire l’utente col
database attraverso l’applicazione PHP, e, oltre ad implementare le
procedure definite, si scontra con numerosi ed ostici problemi relativi alla
compatibilità dei formati delle informazioni.
13
netto miglioramento delle prestazioni del sistema riguardo l’affidabilità dei
dati, l’usabilità dell’interfaccia, la ricerca delle informazioni e i costi.
14
1. LA DISTINTA BASE
La distinta base, la sua funzione, la sua importanza per l’azienda e le
problematiche relative ad essa, sono elementi conoscitivi fondamentali per
la comprensione del significato della tesi sviluppata nel presente elaborato.
In questo capitolo cercheremo di fornire al lettore una base teorica sulla
“distinta base” per una comprensione più chiara dei capitoli successivi.
15
alla realizzazione della torta se associata alla ricetta che spiega come
utilizzare tali ingredienti.
16
Una gestione accurata della distinta base è un prerequisito
fondamentale per lo sviluppo di altri sistemi di gestione operativi, come la
gestione degli ordini d’acquisto, la gestione delle revisioni di prodotto, la
gestione del magazzino.
il numero di revisione;
la quantità richiesta;
una descrizione;
17
La distinta può essere completata con informazioni relativi ai costi di
acquisto o di lavorazione dei singoli componenti ai diversi livelli, grazie ai
quali si può risalire un costo complessivo del prodotto. In ogni caso
bisogna porre molta attenzione nel convertire una distinta di produzione in
una distinta di costo in quanto i costi della distinta base di produzione sono
stime e non rappresentano costi reali.
18
dei materiali; inoltre sviluppa un piano di produzione allo scopo di
assicurare la disponibilità dei materiali, dei componenti e dei semilavorati
per rispettare assetto, processo e risultato del piano di produzione fino alle
consegne.
In tali sistemi la distinta base non è più una semplice ricetta tecnica
ma rappresenta un prodotto che si evolve e si trasforma, nello spazio e nel
tempo, dalla progettazione al cliente finale.
19
La gestione dei documenti. Come gestire i documenti allegati alla
distinta base e che insieme ad essa consentono la realizzazione
effettiva del prodotto.
20
2. IL SISTEMA PREESISTENTE
21
2.2. La struttura del database
Aprendo il database Access è possibile visualizzare la struttura
tabellare su cui esso si basa dalla quale è necessario individuare:
22
Facendo le considerazioni sopra descritte per tutte le tabelle si giunge
al seguente risultato:
23
la tabella TBLCOSTI rappresenta una associazione tra l’entità
TBLELEMENTI e l’entità TBLFORNITORI;
le tabelle TBLCODICICOSTRUTTORI,
TBLALTRICOSTRUTTORI, TBLLINK, TBLREVISIONI,
TABELLAMASA e TABELLAOPERAZIONIMAS rappresentano
proprietà relative all’entità TBLELEMENTI;
(0,N) PADRE
TBLELEMENTI TBLDISTINTE
(0,N) FIGLIO
24
(1,1)
tbllink
(0,N)
(0,N) FIGLIO
(1,1) (0,1) (0,N)
Tabellamasa
tblcosti
(0,N)
(0,N)
(1,1) tblfornitori
Tabellaoperazionimas
(0,N)
(0,N)
tblLottoProd
(0,1)
(1,1) (0,1)
tblordini
(0,1)
(0,N)
(0,N)
tblTipoAcq tblprogetti
25
2.2.1. Le due anime del vecchio database
Guardando lo schema rappresentante la struttura del database
preesistente si nota immediatamente una suddivisione logica e funzionale
tra due aree:
GESTIONE (1,1)
DELLA
tbllink
(0,N)
PRODUZIONE
(1,N) (0,N) (0,1)
tblaltricostruttori tblrevisioni
(0,1)
(0,N) FIGLIO
(1,1) (0,1) (0,N)
Tabellamasa
tblcosti
(0,N)
(0,N)
(1,1) tblfornitori
Tabellaoperazionimas
(0,N)
(0,N)
tblLottoProd
(0,1)
(1,1) (0,1)
tblordini
(0,1)
(0,N)
(0,N)
tblTipoAcq tblprogetti
GESTIONE
DEGLI ORDINI
26
Queste due aree appaiono a prima vista scollegate tra loro e il loro
collegamento sembra quantomeno forzato. In particolare la divisione logica
che si evidenzia nell’analisi della struttura è causata dal fatto che tale
database non è il risultato di un unico processo di studio del sistema
informativo aziendale, bensì l’insieme di successivi miglioramenti fatti per
rispondere alle esigenze che si presentavano con l’aumentare delle
dimensioni dell’azienda.
27
prima dell’emissione di un ordine sarebbe necessario effettuare la
codifica degli elementi che si stanno ordinando;
fino ad ora su ogni ordine non è mai stato specificato il relativo codice
elemento, l’introduzione del nuovo sistema implicherebbe un lungo
lavoro di reperimento delle informazioni altrimenti la perdita di una
notevole mole si dati;
28
DATA
CODICE
COSTRUTTORE
CODICE_ELEMENTO
TBLFORNITORE ID_FORNITORE
29
Per eseguire tale analisi abbiamo realizzato un programma,
denominato “statistiche_tabelle.php”, in linguaggio PHP, che svolge le
seguenti funzioni:
determina, per ogni campo di ogni tabella, il totale delle istanze che
hanno un valore “non nullo” relativamente a quel campo.
Questo serve per individuare eventuali errori nella scelta delle chiavi,
quali campi dovrebbero essere dichiarati obbligatori (a parte le chiavi
nessun campo era stato impostato come obbligatorio in precedenza) e ci
aiuterà, in fase di riprogettazione del database, nel determinare le
lunghezze massime da assegnare ai vari campi.
posizionarsi nella directory del server in cui verrà eseguito lo script PHP
e salvare nel formato “CSV (OS/2 or MS-DOS)”;
30
ripetere tale procedura per tutte le tabelle da esportare.
Aprendo uno dei file CSV appena creati con un qualsiasi editor di
testo si può notare che tale formato è una semplice rappresentazione di una
tabella, in particolare ogni riga del file corrisponde a un’istanza della
tabella, ed ogni campo è separato dall’altro mediante un “punto e virgola” e
nel nostro caso la prima riga corrisponde al nome dei campi rappresentati.
TBLELEMENTI
31
L’attributo “gestione” identifica quegli elementi il cui acquisto è
gestito dall’azienda stessa, questo in realtà varia a seconda della
distinta in cui il componente è utilizzato, quindi tale attributo è una
proprietà della entità TBLDISTINTE.
TBLDISTINTE
32
TBLREVISIONI
33
TBLLINK
TBLCODICICOSTRUTTORI
34
“costruttore” e “note” sono attributi facoltativi;
TBLALTRICOSTRUTTORI
TBLFORNITORI
35
L’identificatore primario è “ID_fornitore”, un numero progressivo
auto-incrementante; non viene preso “fornitore” come identificatore
perché potrebbe esistere il caso limite in cui due fornitori diversi
hanno la stessa denominazione.
gli altri attributi sono tutti caratterizzanti del fornitore stesso, sono
tutti facoltativi tranne fornitore.
TBLCOSTI
TABELLAMASA
36
Tale tabella rappresenta un attributo unario e composto dell’entità
ELEMENTI, non può essere incorporato in ELEMENTI a causa della
bassa numerosità.
TABELLAOPERAZIONIMASA
37
E’ evidente come l’incidenza dei valori nulli sarebbe troppo elevata
se le tabelle TBLREVISIONI, TBLCODICICOSTRUTTORI e
TABELLAMASA fossero incorporati nell’entità TBLELEMENTI.
38
2.3. Analisi della qualità dei dati
Un’analisi di questo tipo si presenta inizialmente quantomeno ardua,
in quanto la mole di dati da esaminare è notevole. In realtà l’obbiettivo di
questa analisi non è quello di confrontare i dati contenuti nel database con
altri dati noti contenuti su altri tipi di supporto, ma “semplicemente”
comprendere quali informazioni debbano essere associate ad elevati livelli
di precisione e per tali informazioni verificare la presenza o meno di
meccanismi di controllo ed eventualmente procedere alla verifica dei dati
storici preesistenti.
Per quanto riguarda gli ultimi due punti la risposta è semplice: non è
presente alcun sistema di controllo nell’inserimento dei dati, quindi non c’è
nulla che è sicuramente corretto. Ciò non significa, però, che non vi siano
dati importanti; anzi, i dati relativi alle tabelle TBLELEMENTI e
TBLDISTINTE, contenenti rispettivamente le informazioni su tutti gli
elementi gestiti dal database e su tutte le distinte, sono considerate vitali per
l’azienda. Inoltre sono ritenuti importantissimi tutti i documenti allegati nei
quali sono riportati, tra l’altro, i progetti relativi alle schede elettroniche e
ai prodotti realizzati.
39
2.3.1. La codifica degli elementi
Dall’analisi della struttura del database preesistente si è potuto notare
quanto sia centrale il ruolo dell’entità “Elementi”, rappresentata nella sua
forma tabellare da TBLELEMENTI, per l’intero sistema. Tale importanza
deriva dal fatto che essa definisce il soggetto che le altre tabelle descrivono.
Diventa cruciale a questo punto l’identificatore primario di tale entità che
di conseguenza diventa una “chiave esterna” per quasi tutte le altre tabelle.
AAxxxx-yy: assemblati
40
Le schede elettroniche già codificate in passato da FEP viene
mantenuta la codifica originaria aggiungendo due parametri:
0CSADxxxx-DI-yy
41
Liv.0
Liv.1
Liv.2
42
In particolare, si possono individuare due livelli principali di
categorie:
43
sistema di codifica prevede, saggiamente, una parte di codice seriale
evitando così codici troppo complicati e lunghi e, di conseguenza,
difficilmente interpretabili.
44
Come si può notare il numero di codici errati si aggira attorno all’1%
e corrisponde a un valore assoluto di circa 100 codici, quindi solo un
numero limitato di elementi non rispetta la codifica. E’ necessaria pertanto
una revisione di tali codici per ricondurli eventualmente a una codifica
nota, ma non la creazione di nuove tipologie di codice. Per contenere in
futuro tale numero di codici errati è inoltre auspicabile l’introduzione di
meccanismi di controllo sull’inserimento dei dati.
condensatori;
resistenze;
circuiti integrati;
connettori;
diodi;
transistor.
45
mancanza di un formalismo preciso si rivela un fortissimo limite alle
potenzialità di ricerca e di interrogazione del database.
46
“revisioni” senza descrizione della revisione;
La maggior parte di questi casi, che per fortuna non sono molti, in fase
di importazione dei dati saranno eliminati, in quanto sono privi delle
informazioni necessarie affinché la loro esistenza abbia senso.
Per fortuna non sono stati rilevati problemi di questo tipo in relazione
alle “distinte”, evidentemente è stata posta maggiore attenzione su questa
associazione che in fondo è il cuore del sistema e che rappresenta i dati più
importanti per l’azienda.
47
2.4. Analisi delle procedure di gestione
Per comprendere bene il funzionamento del sistema preesistente è
necessario focalizzare la propria attenzione sulle procedure più importanti
che risultano essere elementi chiave per il funzionamento del sistema.
la creazione di un elemento;
la revisione di un elemento.
48
Inserimento dell’istanza nella tabella. Il codice elemento, insieme alla
descrizione, alla data e a gli altri attributi viene inserito molto
semplicemente aggiungendo una riga in fondo alla tabella degli elementi
(vedi figura).
49
2.4.2. L’inserimento di una distinta
Per comprendere l’inserimento della distinta è necessario
comprendere come viene creata una distinta.
50
Confrontando le due strutture si evidenzia come tra tutti i campi gli
unici rilevanti siano “code” (corrispondente al codice_elemento della
tabella), “description” (descrizione), “item” (pos), “qty” (quantità) e
“reference”.
riordinare i campi;
51
A questo punto, con una delicata operazione di “copia e incolla” si
trasferiscono i dati (tranne la prima riga contenente l’intestazione delle
colonne) nel database Access.
52
2.4.3. La revisione di un elemento
L’ultima procedura di gestione considerata critica per il sistema è la
“revisione di un elemento”. Per comprendere la procedura è necessario
conoscere cosa si intende all’interno dell’azienda per “revisione”.
53
Software. Cambiamenti nel programma che non cambia la
funzionalità dello stesso ma ne migliora le prestazioni. Come i
documenti non hanno distinta.
La procedura di revisione
Nel momento in cui si decide di effettuare una revisione, vi è una
procedura di tipo operativo a cui fare riferimento:
54
Da notare come tutte le operazioni sopra descritte avvengano
intervenendo manualmente sulle istanze presenti all’interno delle tabelle,
senza alcun meccanismo di controllo o verifica dei dati inseriti.
55
2.5.1. La gestione dei permessi
La gestione degli utenti e dei permessi a loro assegnati, nel sistema
preesistente, è di una semplicità disarmante. Una sola persona,
l’amministratore del sistema, ha accesso sia in lettura che in scrittura al
database, mentre tutti gli altri utenti possono accedervi solo in lettura.
56
2.5.2. I backup e il ripristino dei dati
L’altro aspetto importante della sicurezza è quello relativo alle
operazioni di backup e all’eventuale ripristino dei dati.
a fine giornata, se tutto è andato bene (cioè se non ci sono stati crash
del sistema), si memorizza il file con un nome contenente la data del
giorno.
57
non devono, se possibile, essere modificati, per evitare rivoluzioni
d’utilizzo troppo grosse.
l’home page;
58
Schede. Tutte le schede elettroniche Sadel non obsolete.
59
Tale visualizzazione è abbastanza chiara anche se si riscontrano i
seguenti difetti:
60
Tale scheda raccoglie tutte le informazioni relative a un elemento,
dall’eventuale distinta, ai dati della revisione, al magazzino, costi,
costruttore ed allegati. Inoltre è possibile calcolare il numero totale di pezzi
a magazzino e trovare in quali distinte l’elemento in questione è utilizzato.
61
Tale operazione individua nella particolare tabella in basso
(contenente solo Codice Sadel, Descrizione, Codice Costruttore,
Costruttore) l’elemento ricercato, dal quale è possibile successivamente
accedere alla scheda elemento. Per effettuare una selezione è comunque
necessario utilizzare il tasto Access “filtro in base a selezione”, impedendo
a chi non conosce l’applicazione di effettuare ricerche più complesse.
62
2.6.7. Considerazioni conclusive sull’interfaccia utente
Abbiamo rilevato che l’interfaccia utente su cui si basa il sistema
preesistente presenta i seguenti limiti:
63
3. IL SISTEMA DI CODIFICA
64
valutarne la correttezza sulla base di un “modello di riferimento” che
rappresenti tutti i possibili formati.
CODICE
SIGNIFICATO ERRORE
65
3.2.2. La razionalizzazione del sistema di codifica
Dopo aver illustrato il meccanismo con cui agisce la funzione di
analisi del codice, riportiamo lo schema logico di utilizzo di tale funzione
per la razionalizzazione dei dati contenuti nel database.
PRELIEVO DI UN CODICE
CODICE ERRATO
MODIFICA
DB
ELIMINAZIONE
CODICE CORRETTO
66
3.2.3. Il controllo sui dati inseriti
L’altro processo chiave nel quale la “funzione di analisi del codice”
risulta fondamentale, è il controllo sui dati inseriti , in particolare sui nuovi
codici inseriti nel database.
NUOVO CODICE
CODICE CORRETTO
CODICE ERRATO DB
67
realizzazione di un formalismo preciso che definisca in maniera rigida
e univoca il formato dei codici;
Liv.0
Liv.1
Liv.2
68
Dopo aver ricordato che un codice ha un “formato” costituito da più
“parti” ognuna delle quali può avere diversi significati a seconda del “tipo”
di parte e da un numero di serie che cambia se tutte le parti coincidono,
possiamo costruire lo schema ad albero che dovrà essere rappresentato nel
nostro modello di riferimento.
CODICE ELEMENTO
69
[parte2_formato2]
tipo1_parte2_formato2:descrizione_tipo1_parte2_formato2
tipo2_parte2_formato2:descrizione_tipo1_parte2_formato2
tipo3_parte2_formato2:descrizione_tipo1_parte2_formato2
tipo4_parte2_formato2:descrizione_tipo1_parte2_formato2
tipo5_parte2_formato2:descrizione_tipo1_parte2_formato2
70
L’introduzione di queste nuove tipologie di codice è il risultato dello
sforzo di razionalizzazione che l’azienda ha dovuto compiere affinché il
sistema si attenga alle regole (più restrittive) del nuovo sistema di codifica.
71
Conclusioni
72
4. LA GESTIONE DELLE DISTINTE
dal punto della struttura del database non sono state definite le chiavi
della tabella;
come per tutti gli altri dati presenti non esiste un sistema di controllo
sulle informazioni inserite, inoltre l’inserimento di una distinta
avviene in modo estremamente insicuro;
73
4.2. La distinta base per Sadel
Oltre alla soluzione dei problemi esistenti la progettazione di un
nuovo sistema di gestione deve individuare quei requisiti necessari che nel
precedente sistema erano assenti. Per fare questo è fondamentale capire
qual è il significato di “distinta base” per l’azienda.
La distinta base per Sadel consiste in una “ricetta tecnica” dei prodotti
che essa progetta o realizza. Vi sono in particolare tre tipologie di
assemblati che tipicamente possiedono una distinta base:
74
4.2.1. Gli elementi e la distinta base
Il nostro obiettivo è quello di modellare la struttura e le funzionalità
della distinta base sugli elementi che più degli altri ne sono soggetti.
Esaminiamo di seguito, con esempi, le varie tipologie di elementi del
database Sadel che in genere hanno una distinta.
I prodotti Sadel
Riportiamo di seguito un esempio realistico (preso da un caso reale
ma semplificato) di distinta di un prodotto Sadel. Sono presenti solo gli
attributi minimi indispensabili affinché la distinta abbia senso più la
descrizione del componente per renderla più chiara al lettore.
Si nota come il prodotto sia composto da una scheda, che a sua volta
avrà una distinta, da alcuni componenti commerciali (il cavo e il modulo
GSM/GPRS), da alcune parti meccaniche (ghiera e custodia) che
dovrebbero avere a loro volta una distinta, da alcuni componenti meccanici
unificati (vite e rondella) e da un documento contenente le specifiche di
montaggio del prodotto. Da notare il particolare formato del codice del
documento “PS0035-SM03” che nella prima parte riporta l’inizio del
codice di prodotto (PS0035), mentre nella seconda parte vi è specificato il
75
tipo di documento (SM) e il numero di revisione del documento (non del
prodotto!).
Le schede elettroniche
Proseguiamo riportando un esempio di distinta di scheda elettronica
progettata da Sadel. In questo caso tra gli attributi indispensabili per la
definizione della distinta ci sono anche il “reference” che permette di
individuare la posizione dell’elemento sul circuito stampato e la posizione,
che indica semplicemente la posizione dell’elemento in distinta (il motivo
della necessità di questo attributo verrà spiegato in seguito).
5 1SDI0004 2 D1 D4 DIODO
6 1SIN0001 1 L2 INDUTTORE
16 2IN0200 1 F1 INDUTTORE
18 HS0030-SC02 0 SCHEMATICO
19 HS0030-PC03 0 PCB
20 HS0030-GE03 0 GERBER
76
poi si susseguono componenti SMD (il cui codice inizia con “1”),
componenti THD (il cui codice inizia con “2”), infine vi sono i documenti.
Le parti meccaniche
Nel seguente esempio riportiamo la distinta della parte meccanica
relativa al prodotto descritto in precedenza.
77
Il caso limite
Il caso limite si realizza nel momento in cui un componente
commerciale affinché possa essere utilizzato deve essere sottoposto a
lavorazioni particolari realizzate all’interno dell’azienda. In questo caso
l’elemento può avere una distinta.
78
L’esplosione della distinta
In ultimo rappresentiamo graficamente l’esplosione della distinta del
prodotto “PS0035-03” evidenziando le relazioni di “parentela” che legano i
vari elementi.
79
DISTINTA PS0035-03
Codice elemento Quantità
HS0030-03 1
AC0060 1
MC0013 1
PM0025-02 1
PM0513-01 1
UN1004 4
UN1221 14
PS0035-SM03 0
DISTINTA 2SCO1035-01
Codice elemento Quantità
2SCO0152 1
AC0040 19
80
ogni elemento presente nel database può avere una distinta base;
81
4.4.1. La distinta base come auto-associazione
Data la caratteristica per cui ogni elemento può avere una distinta base
e/o esservi contenuto, è naturale esprimere la distinta come auto-
associazione relativa all’entità ELEMENTI, come in effetti era nel database
preesistente: “un elemento può essere padre o figlio di un altro elemento”.
(0,n) padre
ELEMENTI DISTINTE
(0,n) figlio
Quello che però mancava nella struttura del database preesistente era
la definizione della chiave dell’associazione DISTINTE, inoltre è
necessaria la definizione di tutti gli attributi che la identificano.
la quantità;
82
per identificare univocamente un elemento in una distinta (ricordiamo che
lo stesso elemento può essere presente più volte nella stessa distinta).
codice_elemento pos
codice_elemento quantità
codice_distinta reference
descrizione
(0,n) padre
data ELEMENTI DISTINTE
approvato
83
L’idea è quella di inserire direttamente il file B.O.M. generato
dall’applicazione con cui si sviluppa il progetto nel programma che dopo
averla “sistemata” e controllata la inserisce direttamente nel database.
84
Riportiamo di seguito la rappresentazione schematica della procedura
così come avveniva nel sistema preesistente.
B.O.M.
APPLICAZIONE SOFTWARE
DB
85
chiede all’amministratore di controllare la significatività dei dati
inseriti (operazione che un computer non potrebbe mai eseguire);
B.O.M.
APPLICAZIONE SOFTWARE
DB
La procedura sopra illustrata garantisce che i dati inseriti nel database siano
strutturalmente corretti e che siano stati valutati dall’amministratore (che
pertanto ne ha la responsabilità) per quanto riguarda la “correttezza di
significato”.
86
5. LA GESTIONE DELLE
REVISIONI
La gestione delle revisioni e le procedure ad essa connesse sono
senz’altro tra gli aspetti più rilevanti relativi alla distinta base. In
conclusione all’analisi della gestione delle revisioni nel sistema
preesistente avevamo espresso alcuni dubbi riguardo la procedura in uso in
azienda: per comprendere la fondatezza o meno dei nostri dubbi
ripercorriamo il percorso logico che ci deve portare alla procedura corretta,
che naturalmente dipende da che cosa significa “revisione di un elemento”
e dal livello di prestazioni che vogliamo raggiungere.
Questa definizione vale per tutti i tipi di elementi che possono essere
soggetti a revisione (quindi tutti). Il seguente schema è relativo alla
revisione di una scheda.
MTBF = 1 ANNO
MTBF = 2 ANNI
87
Anche le revisioni di documenti, software e componenti assumono il
medesimo significato: cambia la “qualità” del componente ma non la
funzione.
Per gli elementi aventi distinta è inoltre possibile dare una definizione
di revisione più specifica: la revisione di una distinta avviene quando un
elemento presente in distinta viene sostituito con un altro, naturalmente
senza alterane la funzione complessiva della distinta.
A A
SCHEDA-01 SCHEDA-02
B C
88
Si nota da subito come il problema cruciale relativo alla gestione delle
revisioni sia la reperibilità delle informazioni, in particolare le informazioni
riguardo la composizione delle distinte contenenti prodotti revisionati.
esso non dovrà più essere inserito in alcuna nuova distinta (al suo
posto ci deve essere la versione più recente del componente stesso);
se avente distinta, essa non dovrà più essere modificata: è assurdo che
un elemento non più utilizzato sia composto da componenti con
versioni più recenti della versione dell’elemento padre.
89
la revisione può avvenire per tutti gli elementi aventi nel codice un
“numero di versione”;
90
HS0001-02
HS0001-01 REVISIONE
HS0001-01
(OBS)
HS0001-01
HS0001-01
(OBS)
PS0003-01 PS0003-01
(OBS) X REVISIONE (OBS) X
Y Y
HS0001-01 HS0001-02
PS0123-01
J REVISIONE PS0123-01
J
K K
91
dell’elemento padre a cui la distinta fa riferimento. Tale eventualità
genererebbe una sorta di “effetto domino”, ma eviterebbe di perdere la
corrispondenza univoca tra distinta e componenti. E’ la soluzione
alternativa che proponiamo nel paragrafo seguente.
92
HS0001-02
HS0001-01 REVISIONE
HS0001-01
(OBS)
HS0001-01
HS0001-01
(OBS)
PS0003-01 PS0003-01
(OBS) X REVISIONE (OBS) X
Y Y
HS0001-01
(OBS)
PS0123-01
(OBS) J
HS0001-01
K
PS0123-01
J REVISIONE
HS0001-02
K
PS0123-02
J
93
In tal modo l’univocità della relazione distinta/componenti è garantita:
il prodotto “PS0123-01” dell’esempio sarà sempre associato
esclusivamente alla scheda “HS0001-01” senza possibilità di equivoci.
94
La soluzione più affidabile e con meno punti deboli sembrerebbe
l’effetto domino. L’unico problema associato ad esso è difatti il maggior
numero di revisioni (e quindi di codice e relative distinte) da gestire.
La scelta aziendale
L’azienda posta di fronte alla scelta tra le due alternative di gestione
delle revisioni, dopo aver considerato i pro e i contro ha optato per
mantenere la politica in uso, ritenendola più coerente con le metodologie
fino ad ora adottate e sufficientemente solida. Sulla scelta ha pesato
decisamente la propagazione verso l’alto generata dall’effetto domino, che
spinge per la generazione di nuove revisioni anche per prodotti che, per
esempio, potrebbero essere ormai fuori listino, senza essere ancora
considerati obsoleti.
95
La nostra opinione è in disaccordo con tale scelta in quanto una
definizione migliore dell’obsolescenza consentirebbe di limitare la
propagazione verso l’alto dell’effetto domino solo agli elementi padre
effettivamente ancora in uso. Basterebbe che invece di considerare obsoleti
solo gli elementi soggetti a revisione, siano dichiarati obsoleti anche i
prodotti non più utilizzati per risolvere tale problema.
96
6. LA PROCEDURA DI
APPROVAZIONE
Vi sono alcuni tipi di informazioni che prima dell’inserimento
all’interno del database necessitano di approvazione da parte dell’utente
che ne detiene la responsabilità.
codifica dell’elemento;
revisione di un elemento.
97
Tale procedura è priva di strumenti di verifica da parte di colui che
effettivamente detiene la responsabilità sui dati. Paradossalmente sarebbe
possibile che un errore di inserimento da parte dell’amministratore risulti
attribuito alla persona il cui nome è inserito nel campo “approvato” del
database, o, ancor peggio, che per errore l’amministratore attribuisca
l’approvazione alla persona sbagliata.
98
renderebbe necessaria, in tal caso, una procedura che garantisca la diretta
responsabilità di chi effettivamente deve dare l’approvazione di una
informazione. La procedura che presentiamo di seguito si fonda su tale
scelta.
“login” dell’amministratore;
“login” dell’utente;
approvazione finale.
99
FASE 1: RICHIESTA DI CODIFICA (O DI REVISIONE)
UTENTE AMMINISTRATORE
L' utente richiede all'
amministratore DEL SISTEMA
la nuova codifica di un elemento o
la generazione di una nuova revisione.
La richiesta viene effettuata mediante un'e-mail
contenente i dati necessari all'
inserimento.
UTENTE AMMINISTRATORE
DEL SISTEMA
1) L' amministratore
richiede 3) Se l'
amministartore ha i
l'identificazione dovuti permessi viene restituita
l'
autorizzazione all'
uso (sia "in
scrittura" che "in lettura")
del programma di gestione
PROGRAMMA
DI GESTIONE
DATABASE
SADEL
DB
100
FASE 3: INSERIMENTO DEI DATI
1) L'amministratore AMMINISTRATORE
UTENTE inserisce i dati relativi alla DEL SISTEMA
codifica o alla revisione
di un elemento e
3) Il programma sceglie se farlo 2) Il programma controlla e
invia un'email all'
utente approvare e da reinvia iterativamente i dati
informandolo che gli è chi all'
amministartore finché
stata richiesta una non risultano formalmente
approvazione corretti
PROGRAMMA
DI GESTIONE
DATABASE
SADEL
DB
101
FASE 4: LOGIN DELL'UTENTE
UTENTE AMMINISTRATORE
DEL SISTEMA
1) L'utente richiede
l'
identificazione
3) Se l' utente ha i
dovuti permessi viene
restituita l'
autorizzazione
approvazione e all'
all' uso
"in lettura" del programma di
gestione PROGRAMMA
DI GESTIONE
DATABASE
SADEL
DB
102
FASE 5: APPROVAZIONE FINALE
PROGRAMMA
DI GESTIONE
3) Se l'
utente ha approvato i dati inseriti viene
aggiunta, a tali dati, la "firma"
dell'
utente stesso
103
6.4. I miglioramenti apportati
Nelle cinque fasi descritte in precedenza si può notare come tale
protocollo realizza un’interazione tra amministratore, utente e database
armonizzate dal programma di gestione.
104
7. LA GESTIONE DEI DOCUMENTI
La gestione dei documenti è un altro degli aspetti fondamentali,
fortemente collegato alla distinta base. Tra i documenti infatti ritroviamo i
progetti e le specifiche dei prodotti e delle schede realizzati nell’azienda,
senza i quali la distinta base sarebbe un semplice elenco di componenti
senza che sia in alcun modo possibile collegarli fra loro. Sarebbe come
avere una lista di ingredienti senza la ricetta che spiega come impiegarli per
fare la torta. Inoltre i documenti rappresentano, per l’azienda, le
“informazioni riservate”, quelle per cui la protezione deve raggiungere i
livelli più elevati possibili. Per questo si ritiene fondamentale un sistema
che garantisca contemporaneamente la sicurezza e la corretta gestione dei
documenti.
LINK
DB
105
Come per innumerevoli altre funzioni implementate nel sistema
preesistente anche questa è affidata all’amministratore, che ne assume
l’intera responsabilità.
consentire l’inserimento del link solo dopo che il file è stato inserito
nella directory del server;
106
all’atto dell’inserimento accertarsi che il link punti al relativo file;
LINK
DB
107
documento in una predefinita directory del server, crea il link corretto e lo
inserisce all’interno del database.
108
8. RICERCA E VISUALIZZAZIONE
DELLE INFORMAZIONI
L’importanza della ricerca e visualizzazione dei contenuti è almeno
pari all’importanza dei contenuti stessi; informazioni prive di una adeguata
interfaccia per la consultazione risultano essere inutili e incapaci di
svolgere il ruolo per cui esistono: informare.
109
8.1. Il limite del sistema preesistente
L’unico problema grave del sistema preesistente riguarda
l’impossibilità di eseguire interrogazioni altamente specifiche per una
determinata categoria di elementi che, d’ora in avanti, chiameremo
“componenti speciali”. Si tratta di componenti per circuito stampato,
presenti in elevata numerosità, per i quali frequentemente è necessario
effettuare ricerche sulle specifiche caratteristiche funzionali.
condensatori;
resistenze;
circuiti integrati;
connettori;
diodi;
transistor.
110
documenti che stabiliscono le regole per la definizione di tale campo.
Basterebbe pertanto ricondurre i dati esistenti al formato scelto e
controllare l’inserimento dei nuovi dati per garantire la possibilità di
ricerche esatte sui componenti speciali.
ELEMENTI
(p,e)
CIRCUITI
CONDENSATORI RESISTENZE CONNETTORI DIODI TRANSISTOR
INTEGRATI
111
codice_elemento
(0,n) ELEMENTI
(0,n)
(1,1) (1,1)
CONDENSATORI RESISTENZE
..... .....
112
dei componenti speciali preesistenti, all’interno delle nuove tabelle. Per
realizzare tale trasposizione dei dati è necessario:
113
8.2. Le viste principali e la struttura delle informazioni
Per poter stabilire una adeguato sistema di visualizzazione e ricerca
delle informazioni è necessario comprendere quali siano le interrogazioni
che più di frequente vengono poste al database. Se tali interrogazioni
114
raggruppano una categoria di istanze ben definita e con caratteristiche ed
esigenze di visualizzazione simili, si denominano “viste”.
115
“viste” che pertanto non si escludono a vicenda (per esempio un prodotto
che è in magazzino).
116
LIVELLO ZERO
HOME PAGE
LIVELLO "VISTE"
PRODOTTI MAGAZZINO COSTRUTTORI
LIVELLO "ELEMENTI"
PS0001 PS0002 PS0003
LIVELLO
DISTINTA REVISIONE COSTO
"CARATTERISTICHE"
8.4. La ricerca
La ricerca costituisce lo strumento più semplice ed immediato per
trovare facilmente ciò che si cerca o quantomeno per individuare la
categoria in cui cercare “visivamente” l’informazione desiderata.
ricerca semplice;
ricerca avanzata.
117
intervallo di soluzioni che si avvicinano alla ricerca. Questo tipo di ricerca
consente in ogni caso di effettuare ricerche abbastanza complesse anche
grazie alla possibilità di uso dei caratteri “jolly” (o “wild card”).
118
TIPO DI CAMPO FORM
parola ricercata
TESTUALE ordine di grandezza
intervallo su cui ricercare
NUMERICO
= valore K (E +03) ± valore
menu a tendina con l'
elenco delle opzioni possibili
OPZIONI opzione_1
Per i campi testuali vale l’uso dei “wild card” con le stesse
metodologie della ricerca semplice.
119
E’ necessaria pertanto una funzione che dato in input una query SQL
restituisca la visualizzazione del risultato corrispondente, che nella realtà
sarà una tabella in HTML.
FUNZIONE DI
QUERY SQL VISUALIZZAZIONE HTML
120
VISTA FORM SPECIFICHE
FUNZIONE DI
QUERY SQL SELEZIONE
FUNZIONE DI
VISUALIZZAZIONE HTML
121
Sheet) che istruiscono il browser su come visualizzare i contenuti a seconda
del supporto (schermo o stampa). L’unica eccezione riguarda la stampa di
distinte che data l’importanza richiede l’implementazione di una pagina
“printer friendly” che viene interpretata meglio dalla stampante.
122
9. LA SICUREZZA
La sicurezza è uno degli aspetti fondamentali di un qualsiasi sistema
informativo in quanto proteggendo i dati da possibili inquinamenti ne
garantisce l’integrità e la validità degli stessi.
123
utente interno Sadel (accesso in lettura su tutto il database);
124
Mentre per l’utente generico sarà:
GRANT CREATE,SELECT ON sadel.* TO caio@localhost IDENTIFIED
BY 'sadel';
Con tale istruzione si concedono i permessi di “creazione di tabelle”
(necessario per creare le viste che sono tabelle temporanee) e di “selezione”
(proiezione) su tutte le tabelle del database “sadel” all’utente “caio”
dall’host “localhost” con password “sadel”
PERMESSO DATI
UTENTE
APPLICAZIONE
PERMESSO DATI
UTENTE
DB
125
L’unico problema sorge dal fatto che mediante la sintassi prevista da
MySQL non è possibile specificare il permesso per un utente “esterno”
(così come l’abbiamo definito in precedenza) a causa di una imprecisa
gestione dei permessi relativi alle tabelle temporanee (le viste). Tale
problema si può risolvere mediante un controllo a livello applicativo del
tipo di permesso. In questo caso l’utente smaliziato che riesce a trovare un
baco potrà al più riuscire ad accedere come utente Sadel, anziché come
utente esterno, ma in ogni caso non potrà modificare in alcun modo i dati
presenti nel database.
nome
UTENTI_DB
126
meno. L’attributo “permesso” serve invece soprattutto per distinguere le
aree riservate a l’utente interno da quelle accessibili anche da un utente
esterno.
127
livello applicativo (errori umani o malfunzionamenti del programma di
gestione).
128
Il file di log, consiste in un file di testo nel quale ogni riga ha la
medesima sequenza di campi:
data e ora;
utente;
query SQL;
129
implementare una procedura che, dopo aver riportato il sistema a un punto
di ripristino “consistente”, tenti di rieseguire tutte le istruzioni presenti nel
“file di log” fino ad un’eventuale errore o diversa risposta del sistema
(confrontando il numero di righe affette con il relativo numero nel “file di
log”).
130
10. IL PROGETTO DELLA BASE DI
DATI
Dopo aver effettuato una completa analisi dei requisiti si può
procedere con la progettazione del database che ci porterà ad individuare
l’organizzazione e la struttura della base di dati.
la progettazione concettuale;
la progettazione logica;
la progettazione fisica;
131
Parte delle considerazioni che andremo a fare sono ripetizioni di
osservazioni già esposte frammentariamente nei capitoli precedenti, ma per
chiarezza le riproponiamo in modo completo.
elemento;
fornitore;
utente;
132
altro che una proprietà unaria dell’entità elemento (un elemento può avere
al più una revisione). Per esprimere schematicamente queste specifiche è
necessario introdurre tra le istanze di entità, l’entità “revisione”. Essa è in
realtà un’entità “debole” in quanto ha significato solo in funzione
dell’esistenza di una relativa entità “forte” elemento.
Lo schema scheletro
Grazie alle considerazioni fatte è possibile realizzare lo “schema
scheletro” del sistema
(p,e)
133
134
Gli attributi e le chiavi
L’ultimo passo della progettazione concettuale necessario per
giungere alla definizione dello schema E-R è l’assegnazione degli attributi
e delle chiavi delle entità e delle associazioni.
135
L’entità “elemento”
codice
codice costruttore (0,1) costruttore
note
codice
altri costruttori (0,N) costruttore
ELEMENTO note
posizione magazzino (0,1)
numero pezzi
operazioni magazzino (0,N) data
causale
link
documenti/files allegati (0,N)
note
descrizione (1,1)
data (1,1)
obsoleto (1,1)
note (0,1)
codice elemento (1,1)
L’entità “utente”
email (1,1)
136
L’entità “fornitore”
id (1,1)
nome fornitore (1,1)
città (0,1)
tel. (0,1)
fax (0,1)
nome riferimento (0,1)
tel. riferimento (0,1)
tipo prodotto (0,1)
ELEMENTO
(0,1)
(1,1)
descrizione (1,1)
conseguenze (0,1)
azioni attuate (0,1)
link (0,1)
137
L’associazione “costi”
codice elemento
ELEMENTO
(0,N) id (1,1)
costo (1,1)
valuta (1,1)
COSTO data (1,1)
numero pezzi (1,1)
note (0,1)
(0,N)
FORNITORE
id
138
L’autoassociazione “distinta”
PADRE
(0,N)
DISTINTE
posizione (1,1)
quantità (1,1)
reference (0,1)
gestione (0,1)
note (0,1)
139
I componenti speciali
140
codice elemento (1,1)
categoria (1,1)
CIRCUITO
descrizione (1,1)
INTEGRATO package (1,1)
tipo (1,1)
codice costruttore (1,1)
altro (0,1)
Il modello completo
A questo punto il modello concettuale, rappresentato dallo schema
ER, è completo. Abbiamo individuato tutte le entità e le associazioni e i
rispettivi attributi (da notare che per alcune associazioni non vi è alcun
attributo). Non riportiamo l’intero schema completo per motivi di spazio.
141
10.2. La progettazione logica
Il passaggio dallo schema ER al progetto logico può essere fatto in
modo semiautomatico secondo alcune regole di base. Tuttavia è necessario
effettuare delle scelte tra alternative diverse ma comunque valide.
142
143
10.2.2. Gli schemi di relazioni
L’ultimo passo consiste nella definizione finale degli schemi di
relazioni per le entità e le associazioni.
144
TRANSISTOR (codice_elemento, codice_costruttore, tipo,
tensione, corrente, package, altro);
145
10.3.1. Definizione degli attributi
Dallo schema ER normalizzato e dall’analisi statistiche sulle tabelle
preesistenti è possibile, finalmente, definire in maniera precisa tutte le
“nuove” tabelle con i rispettivi attributi. Da questa rappresentazione
“grezza” del database è poi possibile effettuare la traduzione vera e propria
mediante il formalismo del MySQL.
CODICE_ELEMENTO STRINGA 30 NO
DESCRIZIONE TESTO NO
APPROVATO STRINGA 30 SI
NOTE TESTO SI
146
DISTINTE TIPO NULL
CODICE_DISTINTA STRINGA 30 NO
CODICE_ELEMENTO STRINGA 30 NO
REFERENCE TESTO SI
NOTE TESTO SI
CODICE_ELEMENTO STRINGA 30 NO
CODICE_COSTRUTTOR STRINGA 60 NO
E
COSTRUTTORE STRINGA 60 SI
NOTE TESTO SI
CODICE_ELEMENTO STRINGA 30 NO
COSTRUTTORE STRINGA 60 NO
CODICE_COSTRUTTO STRINGA 60 NO
RE
NOTE TESTO SI
147
LINK TIPO NULL
CODICE_ELEMENTO STRINGA 30 NO
NOTE TESTO SI
CODICE_ELEMENTO STRINGA 30 NO
DESCRIZIONE TESTO NO
MOTIVAZIONE TESTO SI
ORIGINATO STRINGA 30 SI
APPROVATO STRINGA 30 SI
CONSEGUENZE TESTO SI
AZIONI_ATTUATE TESTO SI
CODICE_ELEMENTO STRINGA 30 NO
POSIZIONE STRINGA 10 SI
148
OP_MASA TIPO NULL
ID INTERO 6 NO
PROGRESSIVO
CODICE_ELEMENTO STRINGA 30 NO
CAUSALE TESTO SI
ID INTERO 6 NO
PROGRESSIVO
CODICE_ELEMENTO STRINGA 30 NO
NOTE TESTO SI
149
FORNITORI TIPO NULL
ID INTERO 6 NO
PROGRESSIVO
FORNITORE STRINGA 60 NO
CAP STRINGA 20 SI
CITTÀ STRINGA 60 SI
TEL STRINGA 80 SI
FAX STRINGA 80 SI
RIFTEL STRINGA 80 SI
TIPO_PRODOTTO STRINGA 80 SI
CODICE_ELEMENTO STRINGA 30 NO
CASE_CER INTERO 6 SI
CAPACITÀ REALE SI
TENSIONE REALE SI
TOLLERANZA DECIMALE SI
PASSO_THD DECIMALE SI
ALTRO BLOB SI
150
RESISTENZE TIPO NULL
CODICE_ELEMENTO STRINGA 30 NO
OHM REALE NO
TOLLERANZA DECIMALE SI
CASE INTERO 6 SI
POTENZA REALE SI
PPM INTERO 6 SI
ALTRO BLOB SI
CODICE_ELEMENTO STRINGA 30 NO
N_POLI STRINGA 10 SI
CODICE_COSTRUTTOR STRINGA 60 SI
E
ALTRO BLOB SI
151
CIRCUITI_INTEGRATI TIPO NULL
CODICE_ELEMENTO STRINGA 30 NO
CODICE_COSTRUTTOR STRINGA 60 SI
E
ALTRO BLOB SI
CODICE_ELEMENTO STRINGA 30 NO
CODICE_COSTRUTTOR STRINGA 60 NO
E
REVERSE_VOLTAGE REALE SI
FORWARD_CURRENT REALE SI
ALTRO BLOB SI
152
TRANSISTOR TIPO NULL
CODICE_ELEMENTO STRINGA 30 NO
CODICE_COSTRUTTOR STRINGA 60 NO
E
TENSIONE REALE SI
CORRENTE REALE SI
ALTRO BLOB SI
153
11. L’IMPLEMENTAZIONE DEL
SISTEMA
Dopo aver individuato i requisiti necessari per lo sviluppo del sistema
e dopo aver elaborato soluzioni mediante la progettazione della logica di
gestione, viene naturalmente l’implementazione operativa del sistema. Tale
aspetto, pur non essendo il cuore del problema, risulta essere fondamentale
per poter comprendere e far comprendere la qualità del lavoro svolto,
rappresenta il concretizzarsi di idee e ragionamenti fino ad ora astratti.
154
caratterizzati dalla presenza di una grande quantità di informazioni
organizzate all’interno di uno o più database in modo tale da essere
consultate facilmente da particolari programmi chiamati CGI (Common
Gateway Interface) il cui compito è quello di fornire all’utente finale una
pagina HTML generata dinamicamente con i contenuti richiesti.
155
SQL Standard, per l’accesso ai database relazionali in cui i dati sono
conservati su più tabelle collegate tra loro.
Il software MySQL è Open Source, ciò significa che come per il PHP
chiunque può scaricarlo da Internet ed utilizzarlo senza dover pagare nulla
e pertanto un programmatore esperto potrebbe anche modificarlo secondo
le proprie esigenze. L’utilizzo di MySQL è definito da una licenza GPL
(GNU General Public License).
156
Riportiamo di seguito le ragioni che spingono verso l’utilizzo di
MySQL a scapito di Microsoft Access [7].
157
Scelta dell’hardware. MySQL può funzionare su più piattaforme
mentre Access è una applicazione “single-platform”, per cui la scelta
dell’hardware è già predeterminata.
158
11.1.3. L’architettura del sistema
Possiamo rappresentare l’architettura del sistema che andiamo ad
implementare come segue.
Server Client
richiesta dati
HTML
DB
PHP Protocollo TCP/IP
LINUX
159
# Struttura della tabella `altri_costr`
CREATE TABLE `altri_costr` (
`codice_elemento` varchar(30) NOT NULL default '',
`costruttore` varchar(60) NOT NULL default '',
`codice_costruttore` varchar(60) NOT NULL default '',
`note` blob,
PRIMARY KEY (`codice_elemento`,`codice_costruttore`)
) TYPE=MyISAM;
160
# Struttura della tabella `connettori`
CREATE TABLE `connettori` (
`codice_elemento` varchar(30) NOT NULL default '',
`descrizione` varchar(100) NOT NULL default '',
`tipo_connettore` enum('MASC','FEMM') NOT NULL default 'MASC',
`n_poli` varchar(10) NOT NULL default '',
`posizione` enum('ORIZ','VERT') NOT NULL default 'ORIZ',
`codice_costruttore` varchar(60) NOT NULL default '',
`altro` blob,
PRIMARY KEY (`codice_elemento`)
) TYPE=MyISAM;
161
# Struttura della tabella `elementi`
CREATE TABLE `elementi` (
`codice_elemento` varchar(30) NOT NULL default '',
`descrizione` blob NOT NULL,
`data` date NOT NULL default '0000-00-00',
`approvato` varchar(30) default NULL,
`obsoleto` enum('NO','SI') NOT NULL default 'NO',
`note` blob,
PRIMARY KEY (`codice_elemento`)
) TYPE=MyISAM;
162
# Struttura della tabella `resistenze`
CREATE TABLE `resistenze` (
`codice_elemento` varchar(30) NOT NULL default '',
`ohm` double NOT NULL default '0',
`tolleranza` decimal(4,2) default NULL,
`case` int(6) default NULL,
`potenza` double default NULL,
`ppm` int(6) default NULL,
`altro` blob,
PRIMARY KEY (`codice_elemento`)
) TYPE=MyISAM;
163
L’applicazione di tali istruzioni al database MySQL è estremamente
semplice se utilizzata una semplice interfaccia standard di gestione del
database denominata PhpMyAdmin.
PhpMyAdmin
PhpMyAdmin consiste in una raccolta di script PHP che consente di
gestire in modo completo uno o più database MySQL mediante
un’interfaccia grafica piuttosto semplice e senza dover conoscere
necessariamente l’SQL. Tra le funzionalità più utili vi è quella che noi
abbiamo utilizzato che consente di dare una serie di istruzioni al database
mediante l’invio di un semplice file di testo, contenente tali istruzioni.
164
11.2.2. La creazione dei permessi iniziali
Oltre alle tabelle è necessario creare almeno un permesso iniziale da
amministratore, per potere in seguito agire sul database e importare i dati
preesistenti.
165
INSERT INTO `utenti_db` VALUES ('MICHELE BORGHI','mick',
'AMMINISTRATORE', 'michele@bakeka.net');
GRANT ALL ON *.* TO mick@localhost identified by 'mick' WITH GRANT
OPTION;
FLUSH PRIVILEGES;
166
deve essere automatizzata in quanto non è realizzabile il trasferimento
manuale di una mole di dati così elevata.
Tale procedura è affidata ad uno script PHP che dato una serie di file
in formato CSV (Comma Separated Values) in rappresentazione delle
167
tabelle preesistenti del database Access, inserisce i dati in esse contenuti
nelle relative tabelle MySQL.
import_data.php
DB
file CSV
ERRORI
istanze_non_inserite.txt
168
Anche in questo caso tale operazione viene affidata ad uno script PHP
che sulla base dei link indicati nel database preesistente cerca il documento
relativo lo copia in una predefinita directory del server e aggiorna
l’appropriata istanza della tabella “link”.
PROGRAMMA
DI GESTIONE
OLD LINK
DB NEW LINK
COPIA
DOCUMENTO DOCUMENTO
ALLEGATI ALLEGATI
DATABASE DATABASE
MySQL ACCESS
169
La pulizia dei dati
Le tre operazioni di pulizia dei dati previste in fase di importazione
sono:
170
La pulizia delle tabelle riguarda l’eliminazione di tutte le istanze
relative alle tabelle direttamente collegate all’entità “elemento” aventi un
codice elemento inesistente. Tale problema, che viene risolto mediante un
semplice controllo incrociato affidato ad uno script, non ha in ogni caso
alcuna conseguenza sulla qualità dei dati presenti ma viene comunque
effettuato per evitare di mantenere istanze prive di alcun significato. Dopo
l’importazione risultano esservi 67 istanze relative ad elementi inesistenti e
quindi eliminabili.
171
11.3. L’interfaccia utente
L’interfaccia utente è lo strumento attraverso il quale l’utente dialoga
con il database, attraverso il quale si accede e si interviene sulle
informazioni. E’ evidente quanto tale aspetto sia rilevante ai fini di una
corretta gestione del sistema ed è per questo che non si può prescindere
dalla “usabilità” nella definizione di una adeguata interfaccia utente.
11.3.1. L’usabilità
Secondo la definizione data dalla norma ISO 9241 [13], l'
usabilità è il
"grado in cui un prodotto può essere usato da particolari utenti per
raggiungere certi obiettivi con efficacia, efficienza e soddisfazione in uno
specifico contesto d'
uso."
172
L'
usabilità nasce dunque soprattutto come ausilio alla progettazione, e
si applica in particolare alle interfacce. E'con l'
interfaccia di un software,
infatti, che l'
utente si relaziona. Ad ogni sua azione l'
interfaccia proporrà un
risultato, un cambiamento di stato. Poco importa, ai fini dell'
usabilità, come
l'
interfaccia sia giunta a quello stato, attraverso cioè quali meccanismi di
programmazione, che rimangono racchiusi in una vera e propria scatola
nera impermeabile all'
utente.
173
E’ necessario analizzare il sistema dal punto di vista dell’utente, in
particolare l’esperienza di navigazione deve essere esaminata sotto diversi
aspetti.
174
scade nella carenza di organizzazione del grafo né nell’eccessivo
annodamento dell’informazione in un albero verticale.
MENU'DI NAVIGAZIONE
CONTENUTO
INFORMATIVO
Il menù di navigazione
Il menu di navigazione è presente in tutte le pagine generate dal
sistema ed è sempre uguale, consente all’utente di mantenere un punto di
riferimento mediante il quale esso si può spostare tra le aree informative
del database. E’ costituito dall’elenco delle “viste principali” che abbiamo
descritto nel capitolo riguardante la “ricerca e la visualizzazione delle
informazioni” più l’indicazione dell’home page e della pagina per
effettuare il login.
175
11.3.3. L’home page
In base alle considerazioni sull’usabilità effettuate in precedenza, la
scelta riguardo la struttura informativa più adeguata al sistema è ricaduta su
l’albero orizzontale, per cui assume un ruolo molto importante l’home page
dalla quale deve essere possibile raggiungere, mediante un numero limitato
di passaggi (click), tutte le informazioni conservate nel database.
176
Componenti. Mediante i link presenti in questa sezione si accede ai
cosiddetti “componenti speciali” per i quali sono previste metodologie
avanzate di ricerca e visualizzazione.
Dati login. In questo angolo dell’home page si riportano i dati con cui
l’utente è stato riconosciuto dal sistema e il tipo di permesso assegnato
ad esso.
177
Gli elementi
178
cliccando sul titolo delle colonne è possibile ordinare la tabella
secondo il relativo campo.
I prodotti
179
Il magazzino
180
Nella “scheda elemento” sono riportate tutte le informazioni relative
all’elemento di interesse presenti su le tabelle “accessorie” all’entità
“elementi”, più una serie di informazioni derivate: dov’è utilizzato, le altre
revisioni. Se presente dalla scheda elemento è possibile visualizzare
l’esplosione della distinta la cui radice è l’elemento stesso.
181
ecc. Avendo, per esempio, a disposizione l’esplosione della distinta di un
prodotto si può conoscere il prodotto in tutte le sue parti ed è sufficiente (se
corredata da i documenti di progetto necessari) per la realizzazione del
prodotto stesso.
11.3.7. La ricerca
Grazie alla “funzione di visualizzazione” definita in precedenza il
problema della ricerca si riduce ad una serie di meccanismi che traducano
la ricerca desiderata dall’utente in una query SQL. Tale soluzione dà la
possibilità di implementare diversi tipologie di ricerca, noi ne abbiamo
definiti due: ricerca semplice e ricerca avanzata.
182
La ricerca semplice
La ricerca semplice è possibile dall’home page e da qualsiasi vista del
database (tasto “trova”), consiste nella ricerca di una frase esatta all’interno
di uno o più campi di una determinata vista.
La ricerca avanzata
La ricerca avanzata, che è già stata descritta nel dettaglio, consente di
effettuare ricerche complesse sugli attributi di una qualsiasi vista del
database. Risulta estremamente importante per la ricerca di componenti
speciali. Di seguito riportiamo, a titolo di esempio, la “form” di ricerca di
un condensatore e la ricerca avanzata per un prodotto.
183
184
11.3.8. La gestione dei dati
Fino ad ora abbiamo parlato solo di interfacce di visualizzazione e di
presentazione delle informazioni, tralasciando l’interfaccia attraverso il
quale l’amministratore può modificare i contenuti del database.
l’inserimento di un elemento;
l’inserimento di un fornitore;
185
la gestione dei backup.
186
Utilizzando la funzione di “codifica assistita” e rispondendo ad alcune
domande sul tipo di elemento che si vuole codificare si ottiene un “codice
valido”.
187
Come si può notare oltre alla richiesta di conferma viene avvertito
l’utente che verrà inviata una email all’approvatore per chiedere la
conferma sui dati inseriti.
188
informazioni con la struttura logica della tabella e il formato del codice
dell’elemento.
189
Naturalmente l’eliminazione o la modifica di un elemento comporta
l’eliminazione o la modifica di tutte le istanze relative ad esso (eventuali
link, codici costruttori, ecc.). Ciò non avviene invece per gli attributi o le
caratteristiche relative ad esso.
190
L’interfaccia di gestione della distinta e la visualizzazione della
distinta con costo risultano come nelle due figure seguenti.
191
Il costo di una distinta consiste in un calcolo dei costi di tutti gli
elementi dei figli e di tutti i discendenti dei figli. Tale operazione è
effettuata grazie una funzione ricorsiva che procede fino all’ultimo degli
elementi presenti nella gerarchia della distinta. La visualizzazione di tale
calcolo è riservata all’amministratore in quanto il costo ottenuto è
totalmente indicativo e deve essere utilizzato con estrema prudenza.
192
11.3.9. L’esportazione e la stampa
L’esportazione dei dati delle tabelle frutto di interrogazioni semplici o
complesse del database, avviene semplicemente scaricando un file in
formato CSV, generato sulla base della query SQL di riferimento.
193
La stampa avviene invece secondo due modalità:
194
Di seguito riportiamo un esempio di una pagina come viene
visualizzata sullo schermo e come viene poi stampata.
195
La stampa della distinta
L’esportazione su carta di una distinta è una caratteristica
fondamentale per l’azienda e per questo deve essere curata con maggior
attenzione. Tale vincolo si unisce al fatto che i fogli di stile non riescono ad
interagire adeguatamente con il browser per quanto riguarda la dimensione
e la forma del foglio su cui una distinta deve essere stampata.
196
Per questo nel caso della stampa di una distinta è stata implementata
una procedura semiautomatica per la generazione di una pagina
correttamente interpretabile dai CSS.
In base alle scelte effettuate viene generata una pagina per la stampa
che dovrebbe essere meglio interpretata dal browser e che comunque deve
essere preventivamente testata con l’opzione “anteprima di stampa” del
browser.
197
Riportiamo di seguito la relativa anteprima di stampa (effettuata con
Microsoft Internet Explorer 6.0).
198
12. VARO DEL SISTEMA E SUA
VALUTAZIONE
Il primo ottobre 2003 il sistema descritto in questo elaborato è entrato
in funzione in azienda.
velocità;
usabilità dell’interfaccia;
sicurezza;
costi.
199
miglioramenti misurabili quantitativamente, mediante l’individuazione
di indicatori di processo;
Velocità
La velocità del database non è un parametro molto importante ai fini
del paragone tra i due sistemi. O meglio risulta estremamente grave la
“lentezza” superato un certo limite, ma all’interno di un intervallo di
velocità adeguato non risulta una importante proprietà distintiva la
maggiore o minore velocità di risposta del sistema. In effetti sia il sistema
preesistente che quello attuale presentano velocità adeguate di
funzionamento, ma comunque è noto che il database MySQL presenta
velocità superiori a Microsoft Access (vedi il confronto dei tempi nel
paragrafo del capitolo precedente: “Perché MySQL è meglio di Access”).
200
interessante porre una domanda nel questionario risguardo la velocità
percepita.
Usabilità dell’interfaccia
Quanto l’interfaccia è comprensibile e facile da usare e come le
informazioni vengono visualizzate all’utente finale. Questa caratteristiche
non sono misurabili oggettivamente, ma sono fortemente legate alla
percezione dell’utente: l’unica maniera per ottenere una valutazione
sull’usabilità è, pertanto, mediante quesito.
201
percentuale di volte che il “nuovo” sistema deve intervenire per
evitare un inserimento errato rispetto il totale degli inserimenti (nel
sistema preesistente non vi era alcun meccanismo di verifica dei dati
inseriti);
Sicurezza
Questa caratteristica è estremamente importante, ma risulta di difficile
valutazione in quanto dipende in buona parte dalla sicurezza del
“supporto”, cioè del server su cui sono installati i database. Nel nuovo
sistema sono implementati sistemi di identificazione degli utenti e di
backup di “alto livello” per il ripristino dei dati che però non possono
essere valutati se non con simulazioni estremamente approfondite e
complicate.
202
di esportazione e stampa. In ogni caso è necessario chiamare l’utente a
rispondere sul quesito relativo alla stampa e all’importazione per dare una
valutazione significativa su tale caratteristica.
Costi
Il sistema sviluppato utilizza software liberamente reperibili ed
utilizzabili gratuitamente, mentre l’utilizzo di Access è vincolato da licenze
acquistabili sul mercato. Basta questo per dire che il nuovo sistema è
senz’altro più economicamente conveniente per l’azienda.
203
Nel nuovo sistema è implementata una procedura che si può
richiamare in qualsiasi momento e che si rifà al medesimo script che invece
restituisce il seguente risultato.
204
Su 8343 codici elemento nel nuovo sistema, vi sono 19 (0,23%) codici
errati di cui 5 presentano un formato errato e 14 parte parlante di codice
sconosciuta. In ogni caso vi è una netta riduzione di codici errati rispetto il
sistema preesistente.
205
In ogni caso tale valore deve essere preso con cautela in quanto
bisogna tenere conto di due fattori che ne inquinano in parte il valore:
206
TABELLA N° ISTANZE NON INSERITE
elementi 15
distinte 0
revisioni 3
link 18
cod_costr 108
altri_costr 4
fornitori 1
costi 2
masa 2
op_masa 3
TOTALE 156
12.3. Il questionario
L’altro elemento fondamentale per la valutazione dei risultati ottenuti
è la creazione di un questionario da sottoporre a tutti gli utenti del database.
Il formato del questionario è estremamente semplice e punta a dare una
valutazione oggettiva [5] sui miglioramenti ottenuti nel nuovo sistema
rispetto il precedente sulla base di alcune caratteristiche prestazionali
primarie.
207
Come si può notare viene richiesta una valutazione sull’importanza
relativa alle caratteristiche in analisi e successivamente, nel secondo e nel
terzo riquadro, viene richiesta una valutazione sul livello di prestazione del
preesistente database Access e del nuovo sistema in uso.
208
È possibile pertanto dare una valutazione media per ogni caratteristica
dei due database ed inoltre calcolare una media globale, pesata
sull’importanza attribuita ad ogni prestazione, dei due sistemi.
209
Riportiamo di seguito i risultati ottenuti.
TA
tà
tà
à
ca
pa
ne
lit
on
ci
ili
er
SA
am
io
i
lo
ab
ab
zi
ri c
az
PE
za
ve
st
st
us
rt
iz
po
IA
al
es
ED
su
vi
210
riduzione dei codici errati dall’1,08% allo 0,27% sul totale degli
elementi;
211
Conclusioni
212
Sviluppi futuri
213
Bibliografia
214
[12] Stevahn, Waters. CSS Printing Extensions. Håkon Wium Lie
(http://www.w3.org/pub/WWW/TR/WD-print-970626)
215
Ringraziamenti
216