progettazione e sviluppo di un sistema informativo per la ... e sviluppo di un sistema... ·...

216
Università degli Studi di Bologna FACOLTÀ DI INGEGNERIA Corso di Laurea in Ingegneria Gestionale Sistemi Informativi Progettazione e Sviluppo di un Sistema Informativo per la Gestione della Distinta Base Tesi di Laurea di: Michele Borghi Relatore: Chiar.ma Prof. Wilma Penzo Correlatori: Ing. Marco Patella Ing. Andrea Regazzi Anno Accademico 2002-2003

Upload: truongtuyen

Post on 14-Mar-2018

221 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

Università degli Studi di Bologna

FACOLTÀ DI INGEGNERIA

Corso di Laurea in Ingegneria Gestionale

Sistemi Informativi

Progettazione e Sviluppo di un Sistema Informativo

per la Gestione della Distinta Base

Tesi di Laurea di:

Michele Borghi

Relatore:

Chiar.ma Prof. Wilma Penzo

Correlatori:

Ing. Marco Patella

Ing. Andrea Regazzi

Anno Accademico 2002-2003

Page 2: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

2

Introduzione _______________________________________________10

1. LA DISTINTA BASE____________________________________15

1.1. La definizione di distinta base ______________________15

1.1.1. Una ricetta tecnica di prodotto _________________15

1.1.2. Un risultato della progettazione di prodotto _______16

1.2. Le conseguenze di errori nella distinta base ___________16

1.3. La struttura della distinta base _____________________17

1.4. La distinta base nei sistemi MRP____________________18

1.5. Le problematiche relative alla distinta base ___________19

1.6. L’importanza della distinta base ____________________20

2. IL SISTEMA PREESISTENTE ___________________________21

2.1. Caratteristiche tecniche ___________________________21

2.2. La struttura del database __________________________22

2.2.1. Le due anime del vecchio database ______________26

2.2.2. Analisi statistica sulle tabelle __________________29

2.2.3. I risultati dell’analisi della struttura______________38

2.3. Analisi della qualità dei dati________________________39

2.3.1. La codifica degli elementi _____________________40

La gerarchia degli elementi________________________41

I dati reali e il codice ____________________________44

2.3.2. La descrizione dei componenti _________________45

Page 3: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

3

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

2.4. Analisi delle procedure di gestione __________________48

2.4.1. La creazione di un elemento ___________________48

2.4.2. L’inserimento di una distinta___________________50

2.4.3. La revisione di un elemento ___________________53

Cos’è una revisione______________________________53

La procedura di revisione _________________________54

2.5. Analisi dei sistemi di sicurezza ______________________55

2.5.1. La gestione dei permessi ______________________56

2.5.2. I backup e il ripristino dei dati__________________57

2.6. Analisi dell’interfaccia ____________________________57

2.6.1. L’home page _______________________________58

2.6.2. La visualizzazione delle tabelle_________________59

2.6.3. La scheda elemento __________________________60

2.6.4. La visualizzazione della distinta ________________61

2.6.5. La ricerca delle informazioni __________________61

2.6.6. L’esportazione dei dati _______________________62

2.6.7. Considerazioni conclusive sull’interfaccia utente ___63

3. IL SISTEMA DI CODIFICA______________________________64

3.1. Gli obiettivi da raggiungere ________________________64

3.2. La soluzione proposta _____________________________64

3.2.1. La funzione di analisi del codice________________65

3.2.2. La razionalizzazione del sistema di codifica _______66

Page 4: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

4

3.2.3. Il controllo sui dati inseriti ____________________67

3.3. La soluzione operativa: il modello di riferimento_______67

3.3.1. L’albero dei formati _________________________68

3.3.2. La rappresentazione testuale dell’albero __________69

4. LA GESTIONE DELLE DISTINTE ________________________73

4.1. I limiti del sistema preesistente _____________________73

4.2. La distinta base per Sadel__________________________74

4.2.1. Gli elementi e la distinta base __________________75

I prodotti Sadel _________________________________75

Le schede elettroniche ____________________________76

Le parti meccaniche _____________________________77

Il caso limite ___________________________________78

Gli assemblati senza distinta _______________________78

L’esplosione della distinta_________________________79

4.3. I requisiti della distinta base________________________80

4.4. La proposta operativa_____________________________81

4.4.1. La distinta base come auto-associazione__________82

4.4.2. Procedura di inserimento di una distinta __________83

5. LA GESTIONE DELLE REVISIONI _______________________87

5.1. Cosa si intende per revisione _______________________87

5.2. Gli obiettivi da raggiungere ________________________88

5.3. Gli elementi obsoleti ______________________________89

5.4. La politica aziendale delle revisioni __________________89

Page 5: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

5

L’essenza del problema ___________________________91

5.5. L’effetto domino sulle revisioni _____________________92

5.6. Il confronto tra le due alternative ___________________94

La scelta aziendale ______________________________95

Alcuni dubbi conclusivi ___________________________96

6. LA PROCEDURA DI APPROVAZIONE ____________________97

6.1. La situazione preesistente__________________________97

6.2. Come affrontare il problema _______________________98

6.3. Il protocollo di approvazione _______________________99

6.4. I miglioramenti apportati _________________________104

7. LA GESTIONE DEI DOCUMENTI _______________________105

7.1. I documenti nel sistema preesistente ________________105

7.2. Una soluzione semplice e potente ___________________106

7.3. Obiettivi raggiunti_______________________________108

8. RICERCA E VISUALIZZAZIONE DELLE INFORMAZIONI _109

8.1. Il limite del sistema preesistente____________________110

8.1.1. La soluzione al problema dei componenti speciali _110

8.1.2. L’importazione del campo descrizione __________112

8.2. Le viste principali e la struttura delle informazioni ____114

8.3. La struttura di visualizzazione_____________________116

8.4. La ricerca______________________________________117

Page 6: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

6

8.4.1. La ricerca semplice _________________________117

8.4.2. La ricerca avanzata _________________________118

8.5. La progettazione operativa________________________119

8.6. Esportazione e stampa delle informazioni____________121

9. LA SICUREZZA ______________________________________123

9.1. Gestione dei permessi di accesso ___________________123

9.1.1. Gli strumenti offerti da MySQL _______________124

9.1.2. La progettazione della logica di gestione ________125

9.1.3. La gestione dei permessi _____________________127

9.2. Sistemi di prevenzione e recupero dei dati ___________127

9.2.1. Gli strumenti offerti da MySQL _______________128

9.2.2. Il file di log _______________________________128

9.2.3. La gestione dei backup ______________________130

10. IL PROGETTO DELLA BASE DI DATI ___________________131

10.1. La progettazione concettuale ______________________131

10.1.1. Lo schema E-R ____________________________131

Individuazione delle entità e delle associazioni _______132

Lo schema scheletro ____________________________133

Gli attributi e le chiavi __________________________135

Il modello completo_____________________________141

10.2. La progettazione logica___________________________142

10.2.1. Lo schema normalizzato _____________________142

10.2.2. Gli schemi di relazioni ______________________144

10.3. La progettazione fisica ___________________________145

Page 7: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

7

10.3.1. Definizione degli attributi ____________________146

11. L’IMPLEMENTAZIONE DEL SISTEMA__________________154

11.1. Gli strumenti ___________________________________154

11.1.1. Il linguaggio PHP __________________________154

11.1.2. Il database MySQL _________________________155

Perché MySQL è meglio di Access _________________156

11.1.3. L’architettura del sistema ____________________159

11.2. La realizzazione del database______________________159

11.2.1. La creazione delle tabelle ____________________159

PhpMyAdmin__________________________________164

11.2.2. La creazione dei permessi iniziali ______________165

11.2.3. L’importazione dei dati ______________________166

Riempimento delle tabelle compatibili ______________167

L’importazione dei documenti allegati ______________168

La pulizia dei dati ______________________________170

Importazione dei componenti speciali_______________171

11.3. L’interfaccia utente______________________________172

11.3.1. L’usabilità ________________________________172

11.3.2. La struttura di visualizzazione_________________175

Il menù di navigazione __________________________175

11.3.3. L’home page ______________________________176

11.3.4. Le viste principali __________________________177

Gli elementi ___________________________________178

I prodotti _____________________________________179

Il magazzino __________________________________180

11.3.5. La “scheda elemento” _______________________180

Page 8: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

8

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

12. VARO DEL SISTEMA E SUA VALUTAZIONE _____________199

12.1. Come misurare i miglioramenti ottenuti_____________199

Velocità ______________________________________200

Usabilità dell’interfaccia_________________________201

Ricerca delle informazioni _______________________201

Qualità dei dati ________________________________201

Quantità dei dati contenibili ______________________202

Sicurezza _____________________________________202

Esportazione e stampa dei dati ____________________202

Stabilità del sistema_____________________________203

Costi ________________________________________203

12.2. Valutazione degli indicatori di processo _____________203

12.2.1. Numero di codici errati ______________________203

Page 9: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

9

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

12.3. Il questionario __________________________________207

12.4. Valutazioni conclusive sul nuovo sistema ____________210

12.4.1. Miglioramenti ottenuti_______________________210

12.4.2. I lati negativi ______________________________211

Conclusioni_______________________________________________212

Sviluppi futuri_____________________________________________213

Bibliografia_______________________________________________214

Ringraziamenti ____________________________________________216

Page 10: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

10

Introduzione

La progettazione e lo sviluppo di un sistema informativo per la

gestione della distinta base è il tema del presente elaborato. Il discorso

nasce dal contesto aziendale e si sviluppa su problematiche

economico/gestionali ed informatiche.

L’azienda SADEL s.r.l. di Castelmaggiore (BO), presso la quale è

stata svolta questa tesi, si occupa di progettazione, sviluppo e realizzazione

di schede elettroniche e di macchine che fanno uso di schede elettroniche.

Al fine di ottenere la Certificazione di Qualità secondo le norme ISO 9000,

l’azienda ha pensato alla realizzazione di un sistema organizzativo per la

gestione della distinta base estremamente snello e gestibile con applicazioni

informatiche.

La distinta base è la “ricetta tecnica” del prodotto ed è un documento

chiave per l’azienda di progettazione e di produzione; essa rappresenta

difatti il legame tra la fase di progettazione e la fase di realizzazione di un

prodotto, inoltre ha numerose implicazioni gestionali su diverse altre

problematiche aziendali: il magazzino, l’approvvigionamento, l’assistenza

ai clienti, la gestione delle revisioni, il sistema di codifica, la gestione dei

documenti di progetto, ecc. All’interno del contesto aziendale presso la

quale è stata svolta questa tesi, la distinta base svolge un ruolo

fondamentale: essa è il “cuore informativo” dell’azienda e da sola consente

la realizzazione di qualsiasi prodotto sviluppato in quanto comprende oltre

che i componenti per la realizzazione anche i documenti di progetto

necessari per la produzione e la realizzazione.

La situazione aziendale, e quindi le caratteristiche del sistema di

gestione della distinta base esistente, è il punto dal quale bisogna partire per

Page 11: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

11

individuare i requisiti necessari minimi da rispettare, le problematiche

maggiori da risolvere e per studiare la struttura delle informazioni conformi

alle nuove esigenze.

L’individuazione dei requisiti minimi che il sistema dovrà soddisfare

precede un’analisi dei requisiti più approfondita relativa alle numerose

esigenze aziendali. In particolare si possono distinguere due diverse

tipologie di requisiti: requisiti gestionali e requisiti del sistema informativo.

Il primo punto debole riscontrato nel sistema preesistente riguarda la

mancanza di una verifica sui dati inseriti che ha generato numerosi errori

sui dati esistenti ed in particolare provoca gravi effetti relativi al sistema di

codifica semiparlante adottato dall’azienda: il rischio è quello di perdere la

corrispondenza tra l’elemento fisico codificato e il codice che lo

rappresenta all’interno del sistema informativo aziendale. Si rende pertanto

necessaria l’introduzione di un sistema di controllo sui dati inseriti ed in

particolare sui codici che si basi su una codifica definita in maniera

rigorosa affidata al sistema di gestione.

Un’altra delle problematiche fondamentali legate alla distinta base

riguarda la gestione delle revisioni, cioè le metodologie gestionali con cui i

prodotti cambiano di versione e di come tali cambiamenti si ripercuotono

sulla distinta base dei prodotti. In particolare, il sistema esistente ha una

gestione discutibile per quanto riguarda la reperibilità delle informazioni

riguardo le precedenti versioni dei prodotti. L’analisi dei requisiti in questo

campo impone la definizione di una metodologia di gestione delle revisioni

precisa e gestita in maniera semiautomatica dal sistema.

All’interno dell’azienda la gestione della distinta base è affidata ad

unico amministratore del sistema che ne ha la responsabilità per quanto

riguarda qualunque modifica che venga effettuata su di essa. Data

Page 12: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

12

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”.

Tra le problematiche più importanti relative alla distinta base spicca

anche la gestione dei documenti allegati. L’idea è quella di legare

indissolubilmente il documento fisico al link testuale contenuto nel

database, per assicurare una perfetta reperibilità dei documenti stessi

mediante semplici ricerche sul database ed evitare perdite estremamente

gravi.

Per quanto riguarda i requisiti a cui deve rispondere il sistema

informativo, essi si concretizzano in due grandi categorie: ricerca delle

informazioni e sicurezza. È chiaro come la visualizzazione e la ricerca delle

informazioni debbano rispettare le esigenze di interrogazione del database

da parte degli utenti. Per questo motivo oltre a due meccanismi di ricerca

(semplice ed avanzata) si rende necessario un sistema per una ricerca

dettagliata all’interno di quelle categorie di elementi più numerose e

ritenute più importanti dagli utenti, oltre a meccanismi per l’esportazione e

la stampa delle informazioni in altri formati. I requisiti relativi alla

sicurezza del sistema si possono invece dividere in due aspetti diversi:

gestione dei permessi d’accesso e sistemi di recupero dei dati. In entrambi i

casi le procedure rispecchiano le metodologie di sicurezza standard per il

database utilizzato.

Page 13: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

13

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.

Il varo del sistema è l’ultimo passo nella realizzazione di un sistema

informativo ed è l’elemento che ci consente di dargli una valutazione.

Questo può essere effettuato mediante la raccolta di dati relativi ad alcuni

indicatori di processo e mediante la misurazione della soddisfazione

dell’utente finale, attraverso un questionario. I risultati ottenuti mostrano un

Page 14: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

14

netto miglioramento delle prestazioni del sistema riguardo l’affidabilità dei

dati, l’usabilità dell’interfaccia, la ricerca delle informazioni e i costi.

Fra i possibili sviluppi futuri del sistema implementato vi è l’apertura

verso la rete Internet, naturale sbocco per un sistema web-based, ed il

miglioramento delle procedure di esportazione e stampa delle informazioni

su un formato più portabile.

Page 15: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

15

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.

1.1. La definizione di distinta base

La distinta base si può definire come “prospetto di dettaglio” quali-

quantitativo che riporta i componenti (materie prime, accessori, ecc.) e le

quantità-qualità degli stessi, necessari per la produzione di dati prodotti.

Essa disegna la configurazione di un prodotto la cui architettura viene

abbozzata dal mix delle parti e materiali che lo compongono e che sono

necessari per la sua realizzazione.

1.1.1. Una ricetta tecnica di prodotto

La distinta base è spesso paragonata alla lista di ingredienti di una

torta. Entrambi sono composti da una serie di componenti che insieme

costituiscono un prodotto finito, ma gli ingredienti della distinta base,

anziché uova, zucchero e farina, sono materie prime, sottoassemblati ed

elementi intangibili che contribuiscono al costo del prodotto finito.

Non per niente, in inglese, la distinta base è identificata dall’acronimo

B.O.M. (Bill Of Materials) e comunque il paragone funziona in quanto la

distinta base è sufficiente alla realizzazione del prodotto se associata a delle

specifiche di montaggio, così come la lista degli ingredienti è sufficiente

Page 16: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

16

alla realizzazione della torta se associata alla ricetta che spiega come

utilizzare tali ingredienti.

Se associata a delle specifiche di montaggio, quindi sufficiente per la

realizzazione di un prodotto, la distinta base può essere considerata una

vera e propria “ricetta tecnica di prodotto”.

1.1.2. Un risultato della progettazione di prodotto

La distinta base è uno tra i risultati della progettazione del prodotto

[9]. I disegni esecutivi generati da questa importante fase dello studio di

fattibilità contengono oltre che i disegni di complessivo e di dettaglio, tutte

le indicazioni da fornire ai reparti interessati alla produzione ed in

particolare la distinta base, rivolta all’ufficio acquisti, che contiene la lista

dei materiali da approvvigionare con le relative quantità.

1.2. Le conseguenze di errori nella distinta base

Se un ingrediente sbagliato nella torta può avere pesanti effetti nel

contesto familiare (un forte mal di pancia o una figuraccia con gli ospiti),

nel contesto aziendale ciò assume proporzioni ben più gravi ed incide

negativamente sulle prestazioni dell’azienda.

Gli effetti indesiderati che può causare sono [6]:

� errato costo di prodotto;

� errati livelli di inventario;

� errori nella contabilità;

� ritorni di prodotti dal cliente;

� realizzazione di prodotti “non conformi” alle specifiche;

� reclami e lamentele dei clienti.

Page 17: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

17

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.

1.3. La struttura della distinta base

La distinta base può essere riportata su una struttura ad albero oppure

più semplicemente in un documento in cui ogni sottolivello è rientrato

rispetto il livello superiore (vedi esempio).

La distinta base può essere strutturata per vari gradi di complessità a

seconda dei requisiti aziendali. Un documento relativo a una distinta base

dovrebbe rappresentare perlomeno le seguenti informazioni:

� livello nella struttura;

� un codice identificativo del componente;

� il numero di revisione;

� la quantità richiesta;

� l’unità di misura (se le quantità non sono omogenee);

� una descrizione;

� un indicatore di “Make or Buy” (naturalmente solo gli elementi

realizzati dall’azienda, e pertanto “Make”, avranno a loro volta livelli

inferiori di dettaglio, mentre le “foglie dell’albero” saranno

necessariamente acquistati “Buy”).

Page 18: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

18

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.

1.4. La distinta base nei sistemi MRP

La distinta base di produzione contiene tutte le informazioni relative al

prodotto e tiene traccia di tutti i passaggi che il prodotto percorre fino alla

sua realizzazione.

La distinta base di produzione è utilizzata nei sistemi MRP. Esistono

due tipi di sistemi MRP:

� MRP I (Materials Requirements Planning);

� MRP II (Manufacturing Resources Planning).

Il sistema MRP I è lo strumento che permette di tenere sotto controllo

produzione, fornitori, terzisti, allo scopo di consentire una lineare gestione

Page 19: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

19

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.

Negli anni ottanta si è sviluppato l’MRP II che non riguarda solo i

materiali ma tutte le risorse che si trovano lungo il processo produttivo. Per

questo l’MRP II è diventato uno strumento di “decision-making” per

qualsiasi azienda di produzione.

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.

1.5. Le problematiche relative alla distinta base

La corretta gestione della distinta base racchiude in sé una serie di

problematiche dalla quale non si può prescindere. Riportiamo le principali

di seguito.

� La rappresentazione dei livelli. Come rappresentare i livelli e i

legami di parentela tra i componenti e gli assemblati.

� Il sistema di codifica. I componenti sono identificati nella distinta

base mediante un codice, è necessario pertanto istituire un sistema di

codifica adeguato per la rappresentazione delle distinte e dei

componenti.

� La gestione delle revisioni. Come gestire le nuove versioni dei

componenti in distinta.

Page 20: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

20

� La gestione dei documenti. Come gestire i documenti allegati alla

distinta base e che insieme ad essa consentono la realizzazione

effettiva del prodotto.

� La gestione del magazzino. Come gestire il magazzino e

l’approvvigionamento in relazione alla distinta base di produzione.

� Il supporto informativo. Come conservare e reperire le informazioni

relative alla distinta base.

1.6. L’importanza della distinta base

La distinta base è il cuore dell’azienda di progettazione e/o produzione

e rappresenta il legame tra la fase di progettazione e la fase di produzione

di un prodotto, con forti implicazioni anche riguardo il problema

dell’approvvigionamento e della gestione del magazzino. Abbiamo inoltre

visto come la distinta base assuma un ruolo principale all’interno

dell’azienda e come essa rappresenti la base informativa su cui sviluppare

qualsiasi tipo di sistema informativo per la gestione aziendale.

Page 21: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

21

2. IL SISTEMA PREESISTENTE

Nelle pagine che seguono riportiamo l’analisi svolta riguardo la

struttura del sistema preesistente.

L’analisi si può suddividere nelle seguenti fasi:

� analisi generica delle caratteristiche tecniche;

� analisi della struttura del database;

� analisi qualitativa dei dati;

� analisi delle procedure di gestione;

� analisi dei sistemi di sicurezza;

� analisi dell’interfaccia utente.

L’obiettivo è individuare le cose da mantenere, quelle da eliminare,

quelle da modificare e quelle da aggiungere.

2.1. Caratteristiche tecniche

Si tratta di un database realizzato con Microsoft Access 2000, delle

dimensioni di circa 10Mbyte (dopo la compressione). Dal punto di vista

tecnico, a giudicare dall’opinione degli utenti, non presenta particolari

problemi. Svolge senza problemi le operazioni principali per cui è stato

creato, mentre la gestione degli inserimenti e di eventuali problemi tecnici

è affidata ad un operatore che lo conosce molto bene e che è in grado di

risolvere qualsiasi problema si presenti. Il database funziona bene se è

usato bene: richiede una conoscenza tecnica elevata e poco trasmissibile.

Page 22: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

22

2.2. La struttura del database

Aprendo il database Access è possibile visualizzare la struttura

tabellare su cui esso si basa dalla quale è necessario individuare:

� le tabelle che rappresentano delle “entità” (qualcosa che esiste

“fisicamente”).

� le tabelle che rappresentano “associazioni” tra più entità;

� le tabelle che rappresentano “proprietà” (attributi) di entità.

La cosa risulta abbastanza semplice in quanto le entità rappresentano

qualcosa di tangibile ed hanno senso in sé e per sé (non necessitano di altre

tabelle per avere significato), le associazioni collegano due entità e quindi

contengono le “chiavi” di entrambe, le proprietà (oltre ad essere per forza

le rimanenti) si individuano in quanto perdono di significato se non

collegati all’entità di riferimento.

Riportiamo di seguito le tabelle così come sono state trovate nel

database Access (le chiavi dove presenti sono in neretto).

Page 23: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

23

Facendo le considerazioni sopra descritte per tutte le tabelle si giunge

al seguente risultato:

� la tabelle TBLELEMENTI, TBLFORNITORI, TBLORDINI

rappresentano entità;

Page 24: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

24

� 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;

� le tabelle TBLLOTTOPROD, TBLPROGETTI, TBLTIPOACQ

rappresentano proprietà relative all’entità ORDINI;

� la tabella TBLDISTINTE rappresenta un’associazione, in particolare

un’auto-associazione tra l’entità TBLELEMENTI e sé stessa, serve

per evidenziare il legame di parentela tra due elementi (vedi figura).

TBLELEMENTI TBLDISTINTE(0,N) PADRE

(0,N) FIGLIO

A questo punto è possibile ricavare lo “schema scheletro” della

struttura del database preesistente.

Page 25: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

25

tblelementi

tblrevisioni

tbllink

tbldistinte

tblcosti

tblfornitori

tblordini

tblLottoProd

tblprogettitblTipoAcq

tblaltricostruttori

tblcodicicostruttori

Tabellamasa

Tabellaoperazionimas

(0,N)(1,N)

(0,1)(1,1)

(1,1) (0,1)

(1,1)

(0,N)

(0,N)

(0,N)

PADRE

FIGLIO(0,N)

(0,N)

(0,N)

(1,1)

(0,1)

(0,N)

(0,N)

(0,1)

(0,1)

(0,N)

(0,N)

(1,1)

(0,1)(0,1)

Page 26: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

26

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:

� la gestione della produzione;

� la gestione degli ordini.

L’area di “produzione” si occupa di immagazzinare le informazioni

relative agli elementi e alla distinta base, l’area di gestione degli ordini

raccoglie invece i dati relativi agli ordini emessi con le relative

caratteristiche.

tblelementi

tblrevisioni

tbllink

tbldistinte

tblcosti

tblfornitori

tblordini

tblLottoProd

tblprogettitblTipoAcq

tblaltricostruttori

tblcodicicostruttori

Tabellamasa

Tabellaoperazionimas

(0,N)(1,N)

(0,1)(1,1)

(1,1) (0,1)

(1,1)

(0,N)

(0,N)

(0,N)

PADRE

FIGLIO(0,N)

(0,N)

(0,N)

(1,1)

(0,1)

(0,N)

(0,N)

(0,1)

(0,1)

(0,N)

(0,N)

(1,1)

(0,1)(0,1)

GESTIONEDELLAPRODUZIONE

GESTIONEDEGLI ORDINI

Page 27: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

27

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.

Esaminando la struttura del database riportata in precedenza si

evidenziano le due aree di gestione della produzione e di gestione degli

ordini che si intersecano nell’entità TBLFORNITORI. Tale intersezione è

estremamente debole, basti considerare la numerosità dei fornitori (circa

170) rispetto quella degli elementi (quasi 9000). La causa di questo si può

individuare proprio nella forzata unione di due parti che sia

concettualmente che operativamente svolgono funzioni diverse all’interno

dell’azienda. Si evidenziano pertanto i seguenti problemi:

� sono pochi gli elementi a cui è associato un costo e quindi un

fornitore;

� dal singolo ordine non è possibile risalire direttamente al codice

elemento in quanto ogni elemento viene codificato nel momento in cui

viene utilizzato;

� le due parti hanno diversi obiettivi e diverse funzioni.

Queste considerazioni portano alla conclusione che non vi è alcun

motivo che giustifichi l’unione di queste due aree così diverse tra loro, a

meno che non si operi una revisione globale di tutto il sistema degli ordini.

In particolar modo vi dovrebbe essere una correlazione diretta tra “ordine”

ed “elemento”. Ciò implica una lunga serie considerazioni:

Page 28: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

28

� 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;

� nell’entità TBLELEMENTI sono codificati nel medesimo modo sia

componenti acquistati (per i quali vi è un relativo ordine) sia prodotti

realizzati all’interno dell’azienda;

� il legame tra TBLELEMENTI e TBLFORNITORI non sarebbe diretto

bensì realizzabile solo attraverso l’entità TBLORDINI, stesso discorso

vale per la relazione tra TBLELEMENTI e TBLCODICI

COSTRUTTORI;

� la ricostruzione di tali relazioni a partire dalla struttura attuale è

pressoché impossibile, significherebbe procedere nell’analisi manuale

di ogni singolo ordine emesso, con una elevatissima probabilità di

errore.

Le soluzioni che possono essere prese sono infine le seguenti due:

� Creazione di una nuova struttura informativa corretta concettualmente e

che comprenda tutte le aree dell’azienda. Questo significherebbe la

perdita pressoché totale di tutti le informazioni che attualmente

afferiscono all’entità elementi e che passerebbero all’entità

TBLORDINI (codice costruttore, costi), fatto non accettabile per

l’azienda. Riporto di seguito una rappresentazione semplificata sulla

possibile nuova struttura del database (sono omesse le parti meno

rilevanti).

Page 29: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

29

TBLELEMENTOTBLORDINE

TBLFORNITORE

TBLDISTINTE

DATA

COSTO

CODICECOSTRUTTORE

CODICE_ELEMENTO

ID_FORNITORE

� Suddivisione delle due parti in due sistemi di gestioni differenti. Questo

consente di mantenere tutti i dati storici relativi alla gestione della

produzione e alla gestione degli ordini. L’unico limite è l’impossibilità

di future interrogazioni incrociate sulle due aree, cosa che comunque

attualmente è impedita dalla scorretta impostazione.

Date le considerazioni fatte, si è optato per la seconda soluzione

decidendo di affidare la gestione degli ordini ad un sistema commerciale e

di procedere invece allo studio della gestione della produzione. Pertanto

d’ora in avanti ci occuperemo solo di tale parte.

2.2.2. Analisi statistica sulle tabelle

Per comprendere a fondo la struttura del database preesistente e

necessario cercare eventuali errori nella definizione delle tabelle. Per

questo, è necessaria un’analisi statistica sulle tabelle del database che ci

fornisca il significato reale dei campi da confrontare con il significato che i

medesimi campi “dovrebbero” avere.

Page 30: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

30

Per eseguire tale analisi abbiamo realizzato un programma,

denominato “statistiche_tabelle.php”, in linguaggio PHP, che svolge le

seguenti funzioni:

� determina il totale delle istanze per ciascuna tabella;

� determina, per ogni campo di ogni singola tabella, la lunghezza

massima (in caratteri) della stringa;

� 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.

Per funzionare, tale programma, necessita delle tabelle in formato

CSV (Comma Separated Values) ottenibile mediante i seguenti semplici

passi:

� aprire il file Access contenente tutto il database;

� selezionare la tabella che si vuole esportare;

� nel menu a tendina selezionare FILE, poi EXPORT;

� posizionarsi in una directory qualsiasi e salvare il file in un formato

Excel, per esempio “Microsoft Excel 97-2002”;

� aprire il file appena salvato con Excel;

� nel menu a tendina selezionare FILE, poi SALVA CON NOME;

� posizionarsi nella directory del server in cui verrà eseguito lo script PHP

e salvare nel formato “CSV (OS/2 or MS-DOS)”;

Page 31: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

31

� 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.

Il programma procederà quindi alla parserizzazione dei file in

questione e gli esaminerà generando un output contenente le statistiche

relative.

Il risultato consiste in una serie di tabelle, che riportiamo di seguito

insieme a un breve elenco di problematiche riscontrate.

TBLELEMENTI

� L’attributo “descrizione” deve essere un attributo obbligatorio, ma vi

sono un certo numero di istanze (12) con tale campo nullo: da

eliminare.

� L’attributo “data_inserimento” è un attributo obbligatorio, ma vi sono

molte istanze con tale campo nullo: nel nuovo sistema verrà inserita la

“data nulla” 0000-00-00.

Page 32: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

32

� 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

� Non è definita la chiave della tabella! Essendo tale tabella

un’associazione, la chiave è individuata dall’insieme delle due chiavi

delle entità a cui essa afferisce: “codice_distinta” e

“codice_elemento”. Inoltre siccome all’interno della stessa distinta

può essere presente più volte lo stesso elemento ma in posizione

diversa, la chiave definitiva deve essere il trio “codice_distinta”,

“codice_elemento”, “pos”.

� L’attributo “descrizione” è una banale ripetizione della descrizione

dell’elemento padre, è pertanto una ridondanza inutile da eliminare.

� L’attributo “quantità” è un attributo obbligatorio ma può essere anche

zero, nelle istanze dove non è presente sarà inserito “0”.

Page 33: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

33

TBLREVISIONI

� Questa tabella ha un bassissimo numero totale di istanze, è per questo

che nonostante sia un attributo con cardinalità unaria (ad ogni

elemento può essere associata una sola revisione) non può essere

incorporato nell’entità TBLELEMENTI.

� Ad ogni elemento può essere associata al più una revisione pertanto è

identificativo della revisione stessa il “codice_elemento”: è del tutto

inutile e superfluo l’identificatore “ID_rev”;

� “descrizione_revisione” è un attributo obbligatorio;

� “data_revisione” è un attributo obbligatorio;

� Gli attributi “originato” e “approvato” sono facoltativi, ma necessari;

� I campi “conseguenze” e “azioni_attuate”, nonostante la bassissima

numerosità di valori non nulli vanno mantenuti in quanto potrebbero

essere utilizzati maggiormente in futuro;

� L’attributo “link”, anche se praticamente inutilizzato, può essere

molto utile quindi va mantenuto.

Page 34: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

34

TBLLINK

� La tabella TBLLINK rappresenta un attributo composto a cardinalità

multipla (0,N), cioè ad ogni “codice_elemento” possono essere

associati più link, per questo non è possibile incorporarlo con l’entità

ELEMENTI.

� “codice_elemento” e “link” caratterizzano univocamente un’istanza, il

loro insieme è pertanto la chiave primaria della tabelle rendendo

superfluo l’identificatore progressivo “ID” e prive di significato le

istanze contenenti link nulli.

TBLCODICICOSTRUTTORI

� Tale tabella rappresenta un attributo unario (0,1) e composto, non

viene integrato con ELEMENTI per evitare troppi campi con valori

nulli;

� La chiave primaria è “codice_elemento”, ad essa deve riferire sempre

un “codicecostruttore” che pertanto è attributo obbligatorio;

Page 35: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

35

� “costruttore” e “note” sono attributi facoltativi;

TBLALTRICOSTRUTTORI

� Tale tabella rappresenta un attributo multiplo (0,N) composto

dell’entità ELEMENTI.

� Ad ogni “codice_elemento” (campo obbligatorio) deve essere

associato un “costruttore” e un “codice_costruttore” (campi

obbligatori).

� La chiave primaria è l’insieme degli attributi “codice_elemento” e

“codice_costruttore” (ID è superfluo).

TBLFORNITORI

Page 36: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

36

� 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

� Deve essere possibile associare un elemento a un costo anche in

assenza di un fornitore, quindi è corretto utilizzare come identificatore

“ID”. Da notare però che in tale modo l’associazione tra elementi e

costi è più debole.

� “codice_elemento”, “costo” e “data” sono attributi obbligatori;

� gli altri attributi sono facoltativi.

TABELLAMASA

Page 37: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

37

� Tale tabella rappresenta un attributo unario e composto dell’entità

ELEMENTI, non può essere incorporato in ELEMENTI a causa della

bassa numerosità.

� è identificativo lo stesso “codice_sadel” (che in realtà corrisponde

esattamente al solito “codice_elemento”), “ID-codice” è superfluo;

� “posizione” è un attributo facoltativo in quanto anche se non è

specificata la posizione del componente in magazzino va comunque

mantenuta l’informazione della sua presenza.

TABELLAOPERAZIONIMASA

� Tale tabella rappresenta un attributo composto multiplo (0,N)

dell’entità ELEMENTI, non può pertanto essere incorporata e

“codice_sadel” (“codice_elemento”) non può svolgere il ruolo di

chiave primaria che è affidato a “ID-op”, numero progressivo auto-

incrementante;

� “codice_sadel”, “npezzi_operazione” e “data” sono attributi

caratterizzanti e quindi obbligatori;

Riassumiamo quindi i risultati ottenuti relativamente ai valori nulli

nella tabella TBLELEMENTI allargata agli attributi composti unari che in

linea di principio potrebbero essere accorpati ad essa:

Page 38: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

38

E’ evidente come l’incidenza dei valori nulli sarebbe troppo elevata

se le tabelle TBLREVISIONI, TBLCODICICOSTRUTTORI e

TABELLAMASA fossero incorporati nell’entità TBLELEMENTI.

2.2.3. I risultati dell’analisi della struttura

Completata l’analisi della struttura del database preesistente abbiamo

le idee un po’ più chiare su quali saranno le modifiche strutturali da

effettuare, quali tabelle dovremo mantenere, quali i campi che dovremo

definire come “chiavi” e quali come “obbligatori”, come dovremo

comportarci in alcuni casi nella fase di importazione (per esempio cosa fare

dei valori nulli nei campi obbligatori). Tutto questo però non è sufficiente

se non accompagnato da un’analisi qualitativa sui dati e sulle procedure.

Page 39: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

39

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.

L’analisi in particolare si deve concentrare su:

� la documentazione esistente riguardo il sistema di codifica;

� eventuali sistemi di controllo nell’inserimento dei dati;

� le informazioni considerate più importanti dall’azienda;

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.

L’attenzione a questo punto passa sulla documentazione esistente che

determina il formalismo a cui si deve attenere il “codice_elemento”

(identificatore dell’entità TBLELEMENTI).

Page 40: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

40

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.

La scelta di tale identificatore è caduta su un codice semi-parlante, in

parte ereditato dalla azienda precedente, in parte rivisto dall’azienda

attuale.

Esiste una serie di documenti che riporta la struttura che il codice

dovrebbe avere, che si può riassumere nei seguenti formati (le lettere

minuscole individuano numeri, quelle maiuscole lettere, le “xxxx” numeri

progressivi, le “yy” i numeri di revisione):

� tAAxxxx: componenti per circuito stampato

� AAxxxx-yy: assemblati

� AAxxxx-BByy: documenti relativi all’assemblato

� AAxxxx: componenti commerciali

� AAxxxx-BByy: Software, Firmware

Naturalmente i valori letterali presenti, assumono diverso significato a

seconda del tipo di elemento che viene identificato dal formato ed inoltre vi

è un certo numero di eccezioni che complica notevolmente le cose:

� Per i componenti per circuito stampato codificati da Sadel viene

introdotta una S tra la prima e la seconda cifra

Page 41: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

41

� Le schede elettroniche già codificate in passato da FEP viene

mantenuta la codifica originaria aggiungendo due parametri:

0CSADxxxx-DI-yy

Per effettuare una valutazione del sistema di codifica esistente è

necessario esaminare i seguenti punti:

� confrontare il sistema di codifica con le tipologie di elementi;

� verificare l’attinenza dei dati reali al formato di codifica.

La gerarchia degli elementi

Il codice semi-parlante, se esistente, deve poter dare informazioni

sull’elemento che rappresenta. Utilizzato in un database ciò significa poter

effettuare selezioni di istanze sulla base del tipo di codice. Questo ha senso

solo se tali selezioni raggruppano un insieme di dati simili, quindi una

tipologia di codice deve essere associata ad una ben precisata tipologia di

elementi.

Parlando più dipendenti dell’azienda è stato possibile determinare una

certa gerarchia di elementi (vedi figura).

Page 42: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

42

��������

����������� �������

��������

����������

�������� ���

��������

�����������

����������

���� ���

���������

����������

���

�������

�����

����������

���

�����

����������

������������

���������

�����

���������

��������

������������

�����������

����������

����� ��

����������

����������

�������

����������

��������

����������

��������

�������

�������

�����

����������

�����������

�����������

��������

�����

�����������

���������

�������������

���������

���� ���

��������

�������������

����

���������

�� ��

�����������

���������

��������

�� �����

��������

��������

Liv.1

Liv.2

Liv.0

Page 43: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

43

In particolare, si possono individuare due livelli principali di

categorie:

� Livello 1. Vi sono 4 grandi tipi di elemento: assemblati, componenti

commerciali, componenti per circuito stampato, documenti e software.

Il primo dubbio riguarda la denominazione della categoria

“componenti commerciali”, in quanto anche i componenti per circuito

stampato sono in larga parte commerciali: quindi sarebbe necessario

cambiare tale denominazione, ma comunque la divisione tra le due

categorie è corretta in quanto si tratta di elementi che svolgono ruoli

molto diversi nel processo di produzione. L’altro dubbio da chiarire è

il perché dell’unione di documenti e software. Il motivo è perché

nonostante l’evidente diversità tra le due tipologie essi svolgono ruoli

simili in quanto si tratta di elementi associati a distinte con quantità

nulla, necessari per la costruzione e l’utilizzo del prodotto ma

difficilmente quantificabili. In ogni caso l’unione tra documenti e

software rimane discutibile, ma è tollerabile in quanto nel successivo

livello di definizione i ruoli si possono distinguere facilmente.

� Livello 2. A questo livello si differenziano le singole tipologie di

elementi (in figura sono riportate solo le principali), più in basso vi

sono solamente caratteristiche tecniche che possono differenziare un

elemento da un altro (per esempio due condensatori con capacità

diverse).

La gerarchia sopra descritta, se confrontata con la struttura del codice,

è rappresentata abbastanza bene, in particolare si nota come le categorie al

primo livello corrispondano a diversi formati di codice, mentre quelle al

secondo hanno per ogni ramo il medesimo formato e si distinguono tra loro

grazie alla parte “parlante” del codice. Per livelli di dettaglio superiore il

Page 44: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

44

sistema di codifica prevede, saggiamente, una parte di codice seriale

evitando così codici troppo complicati e lunghi e, di conseguenza,

difficilmente interpretabili.

I dati reali e il codice

Considerato il fatto che non esiste alcun meccanismo di controllo

sull’inserimento dei dati è facile immaginare come un buon numero di

codici inseriti non corrispondano al sistema di codifica previsto.

Per effettuare quest’analisi ci siamo serviti di un piccolo programma

(“analisi_vecchi_codici.php”), realizzato in linguaggio PHP, che prende

tutti i codici contenuti nella tabella TBLELEMENTI e li confronta con i

diversi formati possibile, restituendo quanti codici rispettano tale codifica.

Tale programma si basa su un file di testo “strutturato” mediante un

certo formalismo che permette di esprimere l’intero sistema di codifica (un

file simile lo utilizzeremo anche per effettuare la verifica dei dati inseriti

nel sistema in progettazione; allora lo descriveremo nel dettaglio).

Otteniamo il seguente risultato.

Page 45: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

45

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.

2.3.2. La descrizione dei componenti

Un’altra caratteristica molto importante dell’elemento è naturalmente

la descrizione che, associata a al codice, esprime le caratteristiche

(prevalentemente tecniche) dell’elemento. Tale descrizione assume

un’importanza ancora maggiore per una serie di “componenti per circuito

stampato” presenti in elevata numerosità e con caratteristiche tecniche ben

definite. In particolare per i seguenti componenti, che in seguito

denomineremo “speciali” a causa dell’importanza del loro ruolo, dovrebbe

essere previsto un “campo descrizione” formalizzato in modo tale da poter

distinguere chiaramente componenti con diverse caratteristiche tecniche:

� condensatori;

� resistenze;

� circuiti integrati;

� connettori;

� diodi;

� transistor.

In effetti, la definizione di un formato per il campo descrizione dei

suddetti elementi è già in studio all’interno dell’azienda, in quanto la

Page 46: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

46

mancanza di un formalismo preciso si rivela un fortissimo limite alle

potenzialità di ricerca e di interrogazione del database.

2.3.3. I documenti allegati

Altro punto importantissimo e che non può essere tralasciato

nell’analisi della qualità dei dati è quello dei documenti allegati. Nella

tabella TBLLINK del database preesistente sono contenuti i collegamenti ai

documenti reali presenti all’interno di un apposito server.

Questo rischia di essere un fortissimo limite per l’affidabilità e

l’integrità dei dati contenuti, in quanto non vi è un legame biunivoco tra il

collegamento scritto all’interno del database e i dati reali contenuti in una

directory del server. Un operatore distratto o un malintenzionato potrebbe,

per ipotesi, modificare o eliminare un documento senza che questo venga

rilevato nel database.

Non è possibile pertanto dare un giudizio, come nei casi precedenti,

sulla qualità e sull’integrità dei dati contenuti attualmente nel database

(anche se una decina di link che indirizzano a documenti inesistenti fanno

riflettere), ma si può senz’altro dire che tale sistema di gestione dei

documenti presenta gravi falle e, se possibile, deve essere cambiato.

2.3.4. Altri piccoli problemi

Vi è una serie di altri piccoli problemi legati alla qualità dei dati, ma

che in genere possono essere risolti con un’adeguata pulizia dei dati:

� “codici costruttori” senza codice, ma con solo il nome del costruttore;

� “costi” senza costo, ma con solo l’associazione del fornitore;

� “elementi” senza descrizione;

Page 47: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

47

� “revisioni” senza descrizione della revisione;

� “link” senza collegamento;

� “altri costruttori” senza il nome del costruttore;

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.

2.3.5. I risultati dell’analisi della qualità dei dati

In base a tutte le considerazioni fatte riguardo l’attuale livello di

qualità dei dati si rilevano le seguenti problematiche:

� manca un sistema di verifica dei dati in inserimento, in particolare per

quanto riguarda il codice di un elemento;

� risulta mal definito il “campo descrizione” di alcuni componenti per il

quale si rendono necessarie frequenti interrogazioni complesse del

database;

� manca un sistema che garantisca la corretta associazione dei link ai

documenti che essi rappresentano, creando un problema di sicurezza e

di integrità dei dati.

Page 48: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

48

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.

Abbiamo individuato nei seguenti tre punti le procedure principali:

� la creazione di un elemento;

� l’inserimento di una distinta;

� la revisione di un elemento.

Tutte le suddette funzioni sono affidate ad un operatore che ha la

responsabilità dell’intero sistema e delle operazioni che su di esso svolge.

Questo fatto favorisce possibili errori determinati dall’inserimento di dati

richiesti da altri e sui quali l’operatore non può valutare la correttezza (per

esempio schede tecniche o progetti).

Nei seguenti paragrafi si descrivono le tre procedure in uso.

2.4.1. La creazione di un elemento

Nel momento in cui si rende necessaria la creazione di un elemento si

procede secondo i seguenti passi:

� Codifica di un elemento. Avviene determinando il formato e la parte

parlante del codice a seconda della tipologia dell’elemento e

successivamente cercando tra i codici già esistenti un numero seriale

non ancora utilizzato, in modo tale da avere la certezza che

l’identificatore non esista (fortunatamente Access impedisce

l’inserimento di istanze se la chiave è già esistente).

Page 49: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

49

� 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).

Si individuano pertanto i seguenti problemi:

� non vi è alcun controllo sull’inserimento;

� una distrazione potrebbe modificare altri elementi già inseriti;

� non vi è una chiara attribuzione delle responsabilità. Il campo

“approvato da” indica chi ha approvato l’inserimento dell’elemento,

quindi chi ha la responsabilità dei dati immessi nel database. Potrebbe

per assurdo capitare che risulti che una persona ha approvato un

elemento che però a causa di un banale errore di battitura

dell’operatore contiene dati sbagliati. In questo caso, la responsabilità

è dell’operatore, ma l’errore risulta attribuito a chi è nominato

all’interno del campo “approvato da”.

Page 50: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

50

2.4.2. L’inserimento di una distinta

Per comprendere l’inserimento della distinta è necessario

comprendere come viene creata una distinta.

La distinta, che come abbiamo già detto, è la ricetta tecnica di un

prodotto, viene estratta dal progetto sotto forma di B.O.M. (Bill Of

Materials). In genere, si tratta di una tabella Excel, con determinati campi,

che prima di essere inserita nel database deve essere rivista, ordinata ed

eventualmente modificata.

Riportiamo di seguito un esempio di B.O.M.

Per capire a quali modifiche essa debba essere sottoposta affinché

possa collocarsi all’interno del database riportiamo la struttura della tabella

TBLDISTINTE utilizzata.

Page 51: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

51

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”.

Inoltre oltre all’eliminazione dei campi inutili, prima dell’inserimento

nel database è necessario:

� riordinare i campi;

� aggiungere come primo campo il codice della distinta (è l’elemento

padre ed è lo stesso per tutti i componenti);

� sommare le quantità e unire le stringhe di “reference” per i

componenti con lo stesso codice elemento (a meno che non vi sia la

dicitura “non saldare”);

� se presente il campo “non saldare” inserire l’elemento con quantità

pari a zero;

� modificare la quantità dei documenti che deve essere sempre pari a

zero;

� aggiungere eventuali note.

Il risultato dell’elaborazione “manuale” del file dovrebbe essere il

seguente:

Page 52: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

52

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.

Considerazioni sulla procedura

Essendo la distinta un elemento critico dell’intero sistema, riteniamo

sia troppo poco affidabile la procedura di gestione della distinta. In

particolare, il susseguirsi di operazioni estremamente delicate realizzate

manualmente e senza alcun meccanismo di verifica dei dati inseriti, può

generare gravi errori ed è suscettibile di distrazioni e dimenticanze. Si

ritiene pertanto che il sistema di gestione della distinta base debba essere

modificato.

Page 53: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

53

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”.

Cos’è una revisione

Il significato di revisione cambia a seconda dell’elemento che viene

revisionato. Non tutti gli elementi presenti nel database possono essere

oggetto di revisione per esempio ne sono esclusi tutti i componenti

commerciali e quindi non prodotti all’interno dell’azienda.

Elenchiamo di seguito i diversi elementi che possono essere soggetti a

revisione e ne esplichiamo il significato per ognuno di essi.

� Assemblati (prodotti, schede, parti meccaniche, cablaggi). Per tali tipi

di elementi la revisione è il cambiamento di un componente nella

distinta corrispondente che lascia invariate le caratteristiche funzionali

dell’elemento, modificando (innalzando) la caratteristiche

prestazionali dello stesso (per es. affidabilità). Da notare che è

possibile l’esistenza di una “versione” (relativa a una revisione) di un

elemento senza che nel database sia presente la distinta

corrispondente.

� Documenti. Per revisione di un documento si intende

l’aggiornamento del documento (per esempio se si tratta di un

progetto CAD, qualche piccola modifica dello stesso, che non

influisce sulla distinta a cui il documento si riferisce). I documenti non

hanno mai una distinta (cioè non sono mai l’elemento padre di una

distinta).

Page 54: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

54

� Software. Cambiamenti nel programma che non cambia la

funzionalità dello stesso ma ne migliora le prestazioni. Come i

documenti non hanno distinta.

� Componenti. E’ un caso limite: può capitare che un componente

commerciale debba essere sottoposto a lavorazioni (per esempio di

tipo chimico) per migliorarne le prestazioni, in tal caso si crea una

piccola distinta contenente il componente e la lavorazione a cui è stato

sottoposto. Tale componente modificato può successivamente essere

sottoposto a revisione come un qualsiasi altro assemblato.

La procedura di revisione

Nel momento in cui si decide di effettuare una revisione, vi è una

procedura di tipo operativo a cui fare riferimento:

� individuare il numero di revisione (per esempio, se si tratta di una

scheda il cui codice è HS0001-01, quindi di versione 01, la sua

revisione sarà del tipo HS0001-02, con numero di revisione 02);

� creare un nuovo elemento con il codice determinato in precedenza;

� inserire nella tabella TBLREVISIONI i dati relativi alla revisione

(descrizione revisione, motivazione, ecc.);

� se prevista, inserire la distinta relativa alla nuova revisione

dell’elemento;

� si dichiarano obsoleti tutti gli elementi con versioni precedenti

(cambiando il campo “obsoleto” nella tabella TBLELEMENTI);

� se qualche versione dell’elemento revisionato era già presente in

qualche distinta, si modifica l’elemento (aggiornandolo a l’ultima

revisione) in tutte le distinte non ancora marchiate come obsolete.

Page 55: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

55

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.

E’ da segnalare inoltre il fatto che le revisioni debbano essere

approvate da qualcuno che si prende la responsabilità delle modifiche

effettuate sull’elemento. Questo avviene mediante una procedura di

approvazione assai simile a quella per la creazione di un elemento, con tutti

i limiti sull’attribuzione delle responsabilità che ciò comporta.

Considerazioni sulla procedura

Dal punto di vista operativo la procedura presenta tutti i limiti che

abbiamo già visto nel caso della creazione di un elemento e di inserimento

di una distinta. In particolare l’assenza di controllo sui dati inseriti e la

difficile attribuzione delle responsabilità minano fortemente l’affidabilità e

l’integrità di dati relativi. Inoltre, sorgono alcuni dubbi, riguardo la

procedura logica utilizzata per le revisioni, soprattutto riguardo la

reperibilità delle informazioni (modificando elementi in distinte già in uso

non si rischia di perdere informazioni su prodotti già realizzati o venduti?).

2.5. Analisi dei sistemi di sicurezza

In questo paragrafo analizzeremo la sicurezza del sistema sotto due

aspetti fondamentali:

� la gestione dei permessi;

� i backup e il ripristino dei dati.

Page 56: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

56

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.

Tale sistema nella sua semplicità funziona abbastanza bene. Si evitano

rischi di inquinamento dei dati da parte di malintenzionati o inesperti e si

da la responsabilità dell’intero sistema ad una persona affidabile all’interno

dell’azienda stessa.

In sostanza qualsiasi operazione effettuata sul database ed eventuali

errori di inserimento di “basso livello” (errori di battitura o di distrazione)

sono attribuibili solo ed esclusivamente all’amministratore del sistema, con

un chiara attribuzione delle responsabilità. Il problema sorge per gli errori

più gravi, che minano effettivamente la qualità globale dei dati: in questo

caso tale meccanismo non è sufficiente, come abbiamo visto nell’analisi

della qualità dei dati.

Vi è anche un problema di riservatezza delle informazioni. Ci sono un

certo tipo di dati che sono considerati riservati e che pertanto non devono

uscire dall’azienda. Tali dati sono in particolare quelli relativi ai costi degli

elementi e alla situazione del magazzino. Non è previsto alcun permesso

che conceda ad un utente di vedere tutti i dati tranne quelli riservati,

impedendo pertanto di aprire le porte del database verso l’esterno (in

particolare verso i terzisti e i fornitori che necessitano solo dei dati relativi

alla distinta base).

Page 57: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

57

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.

L’intero database preesistente consiste in un unico file che può essere

letto con l’applicazione Microsoft Access. Esso è contenuto in un apposito

server sul quale sia l’amministratore che gli utenti accedono, l’hard disk nel

quale si trova è replicato per tutelarsi da eventuali crash del sistema.

Si adottano inoltre i seguenti accorgimenti:

� tutte le operazioni di inserimento o modifica del database vengono

effettuate su una copia del file contenente il database;

� 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.

In sostanza si effettua un backup del sistema ogni giorno, questo

consente di perdere, nella peggiore delle ipotesi, al massimo una giornata

lavorativa di dati inseriti. Questo è tollerabile se il numero di modifiche e

inserimenti che giornalmente si effettuano è basso, mentre diventa un forte

limite se tale numero è destinato ad aumentare.

2.6. Analisi dell’interfaccia

In questo paragrafo descriveremo la struttura generale dell’interfaccia

utente, senza dilungarsi nei particolari tecnici, per limiti di tempo e di

pertinenza.

L’obiettivo e valutare l’usabilità dell’attuale sistema e individuare

quegli elementi che entrati ormai nell’uso comune all’interno dell’azienda

Page 58: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

58

non devono, se possibile, essere modificati, per evitare rivoluzioni

d’utilizzo troppo grosse.

Si procede di seguito analizzando:

� l’home page;

� la visualizzazione delle tabelle;

� la scheda degli elementi;

� la visualizzazione della distinta;

� la ricerca delle informazioni;

� l’esportazione dei dati.

2.6.1. L’home page

Riportiamo di seguito l’home page del sistema preesistente.

Si denotano immediatamente i tasti che consentono la visualizzazione

delle varie viste più importanti.

� Tutti gli elementi. La visualizzazione della tabella elementi.

� Elementi. Tutti gli elementi non obsoleti.

Page 59: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

59

� Schede. Tutte le schede elettroniche Sadel non obsolete.

� Prodotti Sadel. Tutti i prodotti non obsoleti.

� Circuiti stampati. Tutti i circuiti stampati.

� Fornitori, clienti, ordini. Si accede ad un altro menu contenente i

tasti relativi alla “gestione degli ordini”.

� Produzione. Si accede a un menu da cui è possibile interrogare il

database secondo query standard.

� Magazzino. Il magazzino dell’azienda (corrispondente al “join” tra le

tabelle TBLELEMENTI, TABELLAMASA,

TBLCODICICOSTRUTTORI).

� Ricerca dati. Si accede ad una pagina dalla quale si può impostare

una ricerca.

2.6.2. La visualizzazione delle tabelle

Di seguito la visualizzazione che si ottiene premendo dall’home page

il tasto ELEMENTI.

Page 60: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

60

Tale visualizzazione è abbastanza chiara anche se si riscontrano i

seguenti difetti:

� manca la possibilità di effettuare selezioni se non mediante il tasto

“Ricerca dati” o mediante l’apposito tasto di Access dopo aver

selezionato la parte del campo che interessa;

� non si possono eseguire interrogazioni complesse (per es. tutti gli

elementi con data maggiore di …., ecc.)

� manca un modo semplice di ordinamento dei dati se non utilizzando le

caratteristiche di Access;

2.6.3. La scheda elemento

Ciccando su un codice elemento dalla tabella “Elementi” è possibile

visualizzare la “scheda dell’elemento”.

Page 61: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

61

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.

2.6.4. La visualizzazione della distinta

Mediante il tasto “Visualizza” vicino alla distinta riportata in basso a

destra nella scheda elemento si accede alla visualizzazione completa della

distinta.

2.6.5. La ricerca delle informazioni

Dall’home page la ricerca delle informazioni può essere effettuata

mediante il tasto “Ricerca Dati” che invia alla seguente pagina.

Page 62: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

62

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.

2.6.6. L’esportazione dei dati

L’esportazione dei dati in altri formati e la stampa degli stessi e

senz’altro la funzionalità migliore che si ritrova nel database preesistente.

In particolare la perfetta compatibilità di Access con gli altri prodotti

Microsoft consente di esportare i dati in tutti i formati più comunemente

utilizzati (tipica è l’esportazione di una tabella in Excel) con ottimi risultati.

Inoltre è ottimo anche il sistema di stampa che consente di riportare le

tabelle su più pagine mantenendo belle intestazioni e impaginazioni.

Riportiamo di seguito, per esempio, l’anteprima di stampa di una

distinta Sadel.

Page 63: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

63

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:

� è “Access dipendente”, l’utente che ne fa uso deve conoscere bene

l’applicazione Microsoft;

� mancano funzioni che ne facilitino l’usabilità (per esempio un menu

fisso che consenta di navigare fra le varie aree del database);

� è difficile effettuare interrogazioni complesse e selezioni successive.

Page 64: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

64

3. IL SISTEMA DI CODIFICA

Il sistema di codifica come abbiamo dimostrato nel capitolo

precedente è uno dei punti critici del sistema preesistente, in quanto

identificatore unico degli elementi e di conseguenza punto di raccordo per

tutti gli attributi che afferiscono ad un qualche elemento del database.

3.1. Gli obiettivi da raggiungere

Dall’analisi della qualità dei dati del sistema preesistente abbiamo

individuato nella mancanza di una verifica sui dati inseriti il difetto

maggiore del sistema di codifica. Non è pertanto sbagliata la codifica semi-

parlante utilizzata bensì il fatto che non c’è alcun meccanismo che controlli

l’attinenza dei dati inseriti con il codice.

Sono tre gli obiettivi da raggiungere:

� in fase di “importazione dei dati” bisogna ricondurre i codici “errati”

alla codifica scelta (razionalizzazione);

� in fase “operativa” bisogna impedire l’inserimento di codici non

attinenti alla codifica (validità dei dati);

� in ogni caso è necessario consentire l’inserimento di nuove tipologie

di codici e di poter modificare le esistenti (flessibilità).

3.2. La soluzione proposta

Per raggiungere tutti gli obiettivi proposti è necessario fornire al

sistema che è in fase di sviluppo la capacità di “riconoscere un codice” e di

Page 65: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

65

valutarne la correttezza sulla base di un “modello di riferimento” che

rappresenti tutti i possibili formati.

Una volta “istruito il sistema” in tal senso sarà possibile individuare i

codici errati preesistenti, impedirne l’inserimento di nuovi e,

semplicemente modificando il “modello di riferimento”, garantire la

flessibilità necessaria.

3.2.1. La funzione di analisi del codice

La rappresentazione logica della “funzione” necessaria è la seguente.

1

CODICE

ERRORESIGNIFICATO

codice corretto codice errato

Come si può notare dato in input il codice da esaminare essa

restituisce l’interpretazione del codice se corretto, mentre restituisce un

errore (e magari anche il motivo dell’errore) se sbagliato. Tutto questo il

programma lo realizza confrontando il codice con le specifiche contenute

nel “modello di riferimento”.

Page 66: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

66

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 CORRETTO

CODICE ERRATO

MODIFICA

ELIMINAZIONE

DB

Il programma deve prendere ad uno ad uno tutti i codici presenti nel

database e controllarli. Se il codice risulta corretto viene lasciato nel

database, mentre se è errato viene richiesto all’amministratore di

modificare o eventualmente eliminare il codice. Naturalmente il codice

inserito dall’amministratore deve risultare corretto altrimenti viene

restituito nuovamente un errore.

Page 67: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

67

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.

Tale processo può essere realizzato mediante il seguente schema

logico.

CODICE ERRATO

NUOVO CODICE

CODICE CORRETTO

DB

Molto semplicemente, il sistema non accetta il codice inserito

dall’utente finché non si rivela un codice attinente alle specifiche contenute

sul “modello di riferimento”.

3.3. La soluzione operativa: il modello di riferimento

Nei paragrafi precedenti abbiamo citato più volte il “modello di

riferimento” senza però mai addentrarci nella sua definizione.

Esso è in effetti il cuore del sistema di analisi dei codici e consiste in

quella serie di informazioni da cui il programma attinge per valutare la

correttezza dei codici.

Mentre sarebbe noioso e poco produttivo dilungarsi nella descrizione

del programma e di come esso confronti i codici, risulta invece assai

interessante studiare la struttura del “modello di riferimento” che abbiamo

elaborato.

Le due caratteristiche principali che deve rispettare sono:

Page 68: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

68

� realizzazione di un formalismo preciso che definisca in maniera rigida

e univoca il formato dei codici;

� possibilità di modifica, sempre rispettando il formalismo predefinito,

per introdurre nuove tipologie di codice.

3.3.1. L’albero dei formati

L’idea su cui si basa la soluzione operativa che proponiamo è quella

che la codifica può essere espressa mediante uno schema ad albero in

accordo con la gerarchia degli elementi presenti nel database, che

riportiamo nuovamente.

��������

����������� �������

��������

����������

�������� ���

��������

�����������

����������

���� ���

���������

����������

���

�������

�����

����������

���

�����

����������

������������

���������

�����

���������

��������

������������

�����������

����������

����� ��

����������

����������

�������

����������

��������

����������

��������

�������

�������

�����

����������

�����������

�����������

��������

�����

�����������

���������

�������������

���������

���� ���

��������

�������������

����

���������

�� ��

�����������

���������

��������

�� �����

��������

��������

Liv.1

Liv.2

Liv.0

Page 69: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

69

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

FORMATO_1 FORMATO_3FORMATO_2

PARTE_1 PARTE_2 PARTE_3 NUMERO

TIPO_1 TIPO_5TIPO_4TIPO_3TIPO_2

3.3.2. La rappresentazione testuale dell’albero

Lo schema ad albero riportato nel paragrafo precedente può essere

rappresentato mediante un file di testo formattato secondo il seguente

schema.

[formato]

formato1:descrizione_formato1

formato2:descrizione_formato2

formato3:descrizione_formato3

Page 70: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

70

[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

Grazie a tale rappresentazione è inoltre possibile associare ad ogni

formato e parte di codice il significato che esso rappresenta e quindi

riuscire ad estrarre informazioni sulla parte parlante del codice.

Mediante l’esempio sul caso reale riportato nella pagina seguente

risulterà tutto più chiaro. In particolare si nota come nella definizione dei

formati le lettere minuscole rappresentino “numeri” mentre quelle

maiuscole lettere, le “xxxx” rappresentano numeri di serie, le “rr” numeri

di revisione e le “R” lettere che individuano revisioni. La stringa “(OBS)”,

dopo la descrizione, indica che il formato è corretto ma non più in uso,

quindi i codici corrispondenti non verranno proposti nella “procedura di

codifica assistita” (di cui parleremo più avanti). Infine il carattere speciale

“#” prima di una riga indica che si tratta di un commento quindi per il

programma è come se tale riga non ci fosse.

Da notare inoltre, oltre ai primi cinque formati relativi alla codifica

preesistente, tre formati obsoleti relativi alla codifica utilizzata dall’azienda

precedente all’attuale (da cui Sadel ha ereditato parte dei codici) e quattro

nuove tipologie di formato che saranno introdotte nel nuovo sistema

secondo la politica attuale per cui qualsiasi elemento può essere revisionato

e di conseguenza avere una distinta ed eventuali documenti allegati in

distinta.

Page 71: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

71

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.

Page 72: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

72

Conclusioni

Dopo aver definito operativamente il modello di riferimento e

implementato il sistema di analisi dei codici, è realistico pensare di ottenere

l’azzeramento del numero di codici non corrispondenti al sistema di

codifica predefinito, con notevoli miglioramenti dal punto di vista della

“qualità dei dati”. Inoltre risulta estremamente agevole creare nuovi formati

di codice, basterà scaricare il file di testo dal server, modificarlo secondo il

semplice schema predefinito e ricaricarlo sul server mediante modalità che

riporteremo nel dettaglio nella descrizione dell’interfaccia utente.

Page 73: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

73

4. LA GESTIONE DELLE DISTINTE

In questo capitolo cercheremo di individuare i requisiti necessari

relativi alla gestione delle distinte per l’implementazione del nuovo

sistema. Naturalmente non è facile scorporare la questione della “distinta

base” dal resto del sistema in quanto essa è strettamente collegata a tutte le

altre problematiche esistenti, comunque ci proveremo riservandoci

eventualmente di rimandare ad altri capitoli le questioni più rilevanti.

4.1. I limiti del sistema preesistente

Naturalmente, come i requisiti, anche i problemi relativi alla distinta

base sono trasversali all’intero sistema di gestione. Val la pena quindi

ricordare quali sono i limiti del sistema preesistente più evidenti relativi

alla distinta base:

� 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;

� la distinta può essere sottoposta a revisione e quindi risente di tutte le

problematiche relative a tale procedura;

� manca la possibilità di “esplodere” la distinta, cioè di visualizzare

tutte le distinte da l’elemento radice fino all’ultimo “figlio”.

Page 74: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

74

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:

� i prodotti finiti Sadel, codice del tipo PS0123-01;

� le schede elettroniche, codice del tipo HS0123-01;

� le parti meccaniche, codice del tipo PM0123-01;

A questi tre si aggiungono inoltre i cablaggi (CB0123-01) che

dovrebbero possedere una distinta base, ma che in realtà non viene mai

inserita (al posto della distinta viene inserito un documento contenente il

progetto dettagliato) e il caso limite dell’inserimento di distinte per

componenti commerciali che però hanno subito lavorazioni all’interno

dell’azienda.

La caratteristica più rilevante sul tipo di “distinta base” utilizzata da

Sadel è la scelta di poter introdurre in distinta come elementi anche i

documenti relativi alla distinta stessa (per esempio, specifiche di progetto,

specifiche di lavorazione o di montaggio, manuali d’uso, ecc.). Essi

vengono in genere inseriti in fondo alla distinta con quantità “zero”. Tale

soluzione consente a chi ha accesso ai dati relativi alla distinta di avere

tutte le informazioni necessarie alla realizzazione del prodotto.

Page 75: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

75

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.

Codice elemento Quantità DescrizioneHS0030-03 1 SCHEDA OBOE OUT VER6

AC0060 1 CAVO

MC0013 1 MODULO GSM/GPRS

PM0025-02 1 CUSTODIA IN ALLUMNINIO OBOE OUT

PM0513-01 1 GHIERA DI FISSAGGIO

UN1004 4 VITE

UN1221 14 RONDELLA

PS0035-SM03 0 SPECIFICHE DI MONTAGGIO OBOE OUT VER6

DISTINTA PRODOTTO SADEL PS0035-03

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

Page 76: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

76

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).

Pos Codice Qtà Reference Descrizione1 TS0036 1 CIRCUITO STAMPATO

2 1CC6214 2 CAP7 CAP11 CONDENSATORE CERAMICO

3 1SCI0273 1 U6 DIGITAL INVERTER (CIRCUITO INTEGRATO)

4 1SCO0001 1 CONN15 CONNETTORE

5 1SDI0004 2 D1 D4 DIODO

6 1SIN0001 1 L2 INDUTTORE

7 1LE0001 1 LED1 LED VERDE

8 1RE3004 4 R6-9 RESISTENZA

9 1RE2501 6 RES3 RES8 RES2 RES12-14 RESISTENZA

10 1RE2501 0 RES15 RESISTENZA

11 1STF0002 2 T1-2 TRASFORMATORE AUDIO

12 1TR0020 1 TR1 TRANSISTOR

13 2SCE0020 3 C4 C5 C8 CONDENSATORE ELETTROLITICO VERTICALE

14 2CE0052 2 C1-2 CONDENSATORE ELETTROLITICO RADIALE

15 2SCO1035-01 1 J1 CONNETTORE FISSO 19 POLI MASCHIO

16 2IN0200 1 F1 INDUTTORE

17 2SOP0522 1 OP1 OPTOISOLATORE

18 HS0030-SC02 0 SCHEMATICO

19 HS0030-PC03 0 PCB

20 HS0030-GE03 0 GERBER

21 HS0030-SM03 0 SPECIFICHE DI MONTAGGIO

DISTINTA SCHEDA SADEL HS0030-03

La prima cosa che si nota guardando l’esempio è che vi è un ordine

ben preciso: il primo elemento è il circuito stampato (la base della scheda),

Page 77: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

77

poi si susseguono componenti SMD (il cui codice inizia con “1”),

componenti THD (il cui codice inizia con “2”), infine vi sono i documenti.

I quattro tipi di documenti presenti sono i documenti standard che

vengono associati ad una distinta di scheda: lo schematico, il PCB, il

Gerber e le specifiche di montaggio.

L’unica distinta presente sembrerebbe essere quella relativa al

“connettore fisso” in quanto è l’unico tra gli elementi ad avere associato un

numero di revisione. Questo caso rientra in quei casi limite nei quali risulta

necessaria la revisione di componenti commerciali.

L’ultimo particolare da evidenziare è la presenza in distinta dello

stesso componente due volte: la resistenza “1RE2501”. Il motivo di questa

“stranezza” è che tale componente potrebbe servire (nella posizione

specificata dal “reference”) ma non viene installato sulla scheda (per questo

è presente in quantità nulla). Tale caso particolare crea la necessità di

introdurre l’attributo “posizione” per identificare univocamente i

componenti presenti in distinta.

Le parti meccaniche

Nel seguente esempio riportiamo la distinta della parte meccanica

relativa al prodotto descritto in precedenza.

Codice elemento Quantità DescrizioneAC0036 1 CUSTODIA IN ALLUMINIO 140X180X70

PM0025-CM01 0 DISEGNO "CAD MECCANICO" CUSTODIA

DISTINTA PARTE MECCANICA PM0025-02

L’esempio è estremamente chiaro: la parte meccanica è costituita da

un componente commerciale (la custodia) più il progetto che ne descrive

dettagliatamente le caratteristiche.

Page 78: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

78

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.

Segue l’esempio relativo.

Codice elemento Quantità Descrizione2SCO0152 1 CONNETTORE FISSO 19 POLI MASCHIO

AC0040 19 CONTATTO

DISTINTA COMPONENTE 2SCO1035-01

Gli assemblati senza distinta

Capita abbastanza frequentemente esaminando il database preesistente

di imbattersi in assemblati già utilizzati in distinta (quindi importanti) privi

di una propria distinta base. Questo, raro per quanto riguarda le schede

elettroniche, è assai frequente per “parti meccaniche” e la regola per i

“cablaggi”. Tale grave incoerenza dal punto di vista logico si spiega assai

bene da un punto di vista operativo. Vi sono due motivi che chiariscono

questo punto:

� molti assemblati vengono già acquistati come tali e pertanto non si

dispongono dei dati relativi alla distinta base;

� a volte anziché inserire la distinta base si preferisce inserire un

documento allegato contenente le specifiche di progetto.

Nell’esempio riportato nelle pagine precedenti per esempio la parte

meccanica “PM0513-01” non possiede la distinta, ma ad essa è associato

un documento contenente le seguenti specifiche di progetto.

Page 79: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

79

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.

L’esplosione della distinta ha un significato molto importante in

quanto è la rappresentazione globale di un prodotto in tutte le sue parti e

fino a un elevato livello di dettaglio, con tutte le indicazioni di lavorazione

e i progetti necessari per realizzarlo.

Nell’esempio che segue non sono riportate le descrizioni degli

elementi per motivi di spazio.

Page 80: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

80

Codice elemento QuantitàAC0036 1PM0025-CM01 0

DISTINTA PM0025-02

Codice elemento QuantitàHS0030-03 1

AC0060 1

MC0013 1PM0025-02 1

PM0513-01 1

UN1004 4UN1221 14

PS0035-SM03 0

DISTINTA PS0035-03

Pos Codice Qtà Reference1 TS0036 12 1CC6214 2 CAP7 CAP11

3 1SCI0273 1 U6

4 1SCO0001 1 CONN15

5 1SDI0004 2 D1 D4

6 1SIN0001 1 L2

7 1LE0001 1 LED1

8 1RE3004 4 R6-9

9 1RE2501 6 RES3 RES8 RES2 RES12-14

10 1RE2501 0 RES15

11 1STF0002 2 T1-2

12 1TR0020 1 TR1

13 2SCE0020 3 C4 C5 C8

14 2CE0052 2 C1-2

15 2SCO1035-01 1 J1

16 2IN0200 1 F1

17 2SOP0522 1 OP1

18 HS0030-SC02 019 HS0030-PC03 0

20 HS0030-GE03 021 HS0030-SM03 0

DISTINTA HS0030-03

Codice elemento Quantità2SCO0152 1

AC0040 19

DISTINTA 2SCO1035-01

4.3. I requisiti della distinta base

Dopo aver capito bene cosa è la distinta base per Sadel ed individuato

i punti deboli del sistema preesistente è possibile stilare una serie di

requisiti a cui l’implementazione e la gestione della distinta base si devono

attenere:

Page 81: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

81

� ogni elemento presente nel database può avere una distinta base;

� ogni elemento può essere contenuto in una o più distinte;

� se un elemento ha una distinta il suo codice deve avere un numero di

revisione;

� se il codice di un elemento ha un numero di revisione, l’elemento

corrispondente non necessariamente deve avere una distinta;

� per identificare un elemento di una distinta univocamente è necessario

un attributo che ne individui la posizione;

� il “reference” è un attributo necessario per la definizione dei

componenti delle schede elettroniche, ma non ha significato per altri

tipi di elemento;

� è necessario poter visualizzare l’esplosione di una distinta;

� è necessario un controllo sull’inserimento della distinta base;

� è auspicabile l’introduzione di una procedura automatica o

semiautomatica di inserimento di una distinta direttamente dal file

B.O.M. generato assieme al progetto.

4.4. La proposta operativa

La nostra proposta di implementazione del sistema di gestione relativa

alla distinta base riguarda due aspetti:

� la struttura relazionale della distinta base;

� la procedura semiautomatica di inserimento di un file B.O.M. in

distinta.

Page 82: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

82

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”.

ELEMENTI DISTINTEpadre

figlio

(0,n)

(0,n)

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.

Gli attributi che risultano indiscutibilmente legati alla distinta sono:

� la quantità;

� il reference (anche se necessario solo per i componenti in distinte di

schede).

Inoltre vi sono altri due attributi necessari, ma meno evidenti:

� la gestione dell’elemento (questo attributo individua se l’acquisto

dell’elemento presente in distinta è gestito da Sadel o meno, prima era

erroneamente presente come attributo dell’elemento);

� l’attributo note (per annotazioni sull’elemento relative alla distinta in

cui è contenuto).

La chiave dell’associazione DISTINTE è naturalmente formata

dall’insieme delle chiavi delle entità che collega, più l’attributo “posizione”

Page 83: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

83

per identificare univocamente un elemento in una distinta (ricordiamo che

lo stesso elemento può essere presente più volte nella stessa distinta).

A questo punto possiamo riportare lo schema E/R completo che

rappresenta la relazione tra l’entità ELEMENTI e l’auto-associazione

DISTINTE.

ELEMENTI DISTINTEpadre

figlio

(0,n)

(0,n)

codice_elemento

codice_elemento

codice_distinta

descrizione

data

approvato

obsoleto

note

pos

quantità

reference

gestionenote

Quello appena riportato è il cuore del sistema informativo in

progettazione ed su questo che costruiremo l’intero e complesso sistema di

relazioni del futuro database.

4.4.2. Procedura di inserimento di una distinta

Per facilitare l’inserimento di una distinta nel database e ridurre il

numero di operazioni manuali da effettuare per preparare i dati

all’inserimento in distinta, evitando rischi di errori banali ma dalle gravi

conseguenze (rimando al paragrafo relativo all’inserimento di una distinta

nel database preesistente) abbiamo pensato di realizzare una procedura

semiautomatica che aiuti l’amministratore del sistema, incaricato

dell’inserimento di una distinta, nel suo compito.

Page 84: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

84

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.

La fattibilità di questo dipende dal tipo di “operazioni di

sistemazione” che devono essere svolte:

� riordinare i campi del file B.O.M.;

� aggiungere come primo campo il codice della distinta (è l’elemento

padre ed è lo stesso per tutti i componenti);

� sommare le quantità e unire le stringhe di “reference” per i

componenti con lo stesso codice elemento (a meno che non vi sia la

dicitura “non saldare”);

� se presente il campo “non saldare” inserire l’elemento con quantità

pari a zero;

� controllare che la quantità dei documenti sia pari a zero ed

eventualmente modificarla;

� segnalare se l’acquisto dell’elemento per la distinta è gestito

dall’azienda;

� aggiungere eventuali note.

Come si può notare molte di queste operazioni sono meccaniche e

dipendono esclusivamente dal file B.O.M, quindi possono essere eseguite

in maniera automatica da un programma.

Le uniche informazioni che spesso non sono presenti nel file di

B.O.M. (ma che a volte comunque sono presenti) sono quelle relative alle

note ed alla gestione dell’acquisto, per cui la procedura deve essere

comunque realizzata in interazione con l’amministratore.

Page 85: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

85

Riportiamo di seguito la rappresentazione schematica della procedura

così come avveniva nel sistema preesistente.

APPLICAZIONE SOFTWARE

B.O.M.

DB

E’ evidente come l’amministratore, in precedenza, aveva l’intera

responsabilità della distinta inserita nel database, perché era egli che dalla

B.O.M. estraeva e modificava i dati da inserire.

La procedura semiautomatica che proponiamo, prevede invece

un’interazione dell’amministratore con il programma. In particolare il

programma compie le seguenti operazioni:

� propone una sistemazione del file di B.O.M.;

� evidenzia eventuali errori strutturali (per esempio se i codici non sono

presenti nella tabella ELEMENTI, o se manca la quantità di un

elemento);

� obbliga l’amministratore a risolvere i problemi strutturali;

Page 86: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

86

� chiede all’amministratore di controllare la significatività dei dati

inseriti (operazione che un computer non potrebbe mai eseguire);

� permette all’amministratore di inserire informazioni aggiuntive

(attributi “note” e “gestione”);

� se i dati sono strutturalmente corretti e l’amministratore dà

l’autorizzazione, inserisce i dati nel database.

APPLICAZIONE SOFTWARE

B.O.M.

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”.

Page 87: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

87

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.

5.1. Cosa si intende per revisione

Per revisione si intende la modifica di un elemento tale per cui la

funzione dell’elemento stesso non cambia, ma cambiano le sue

caratteristiche prestazionali.

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.

SCHEDA-01

SCHEDA-02

INPUT

INPUT

OUTPUT

OUTPUT

MTBF = 1 ANNO

MTBF = 2 ANNI

Page 88: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

88

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.

SCHEDA-01

A

B

SCHEDA-02

A

C

5.2. Gli obiettivi da raggiungere

Le caratteristiche fondamentali a cui una procedura di revisione degli

elementi si deve attenere sono le seguenti:

� deve consentire l’aggiornamento di un elemento;

� deve mantenere le informazioni storiche relative a tutte le revisioni

precedenti;

� l’ultima versione di una distinta (per esempio, la versione più recente

di un prodotto o di una scheda) deve contenere tutte le versioni più

recenti dei componenti che la compongono;

� deve mantenere le informazioni relative alla composizione di tutte le

distinte precedenti (per esempio di prodotti già prodotti o venduti con

all’interno versioni obsolete di componenti).

Page 89: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

89

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.

5.3. Gli elementi obsoleti

Il concetto di “obsolescenza” di un elemento è strettamente associato

al concetto di “revisione”. E’ naturale che nel momento in cui un elemento

viene revisionato e di conseguenza generata una nuova versione, con le

stesse funzioni ma migliori prestazioni, esso diventi a tutti gli effetti

obsoleto.

Tale informazione è fondamentale ai fini di una corretta gestione della

distinta base ed è per questo che deve essere presente come attributo

dell’elemento anche nella struttura relazionale del database.

“Tutte le versioni di un elemento precedenti all’ultima devono essere

dichiarate obsolete”

Una volta che un elemento è dichiarato “obsoleto” sono due le

principali conseguenze:

� 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.

5.4. La politica aziendale delle revisioni

La politica delle revisioni già in uso in azienda è la seguente:

Page 90: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

90

� la revisione può avvenire per tutti gli elementi aventi nel codice un

“numero di versione”;

� in particolare, la revisione di un elemento avente distinta avviene se

cambia un suo componente (ma non se cambia solo la versione!);

� nel momento in cui esce una nuova versione di un elemento, il codice

sarà uguale a quello della versione precedente, ma con il numero di

revisione aumentato di uno;

� tutti gli elementi relativi a versioni precedenti vengono dichiarati

obsoleti;

� viene aggiornata la distinta di tutti gli elementi, non obsoleti, che

sono padre dell’elemento revisionato.

L’esempio riportato nello schema seguente chiarisce quali sono le

conseguenze operative a cui la politica di revisione già in uso in azienda

conduce.

Page 91: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

91

HS0001-01

HS0001-02

REVISIONE

PS0003-01(OBS)

HS0001-01

X

Y

PS0123-01

HS0001-01

J

K

REVISIONE PS0123-01

HS0001-02

J

K

HS0001-01(OBS)

PS0003-01(OBS)

HS0001-01(OBS)

X

Y

REVISIONE

Come si può facilmente notare la medesima revisione di un

componente ha due effetti diversi a seconda se la distinta in cui è contenuto

è dichiarata obsoleta o meno.

L’essenza del problema

Il punto più delicato della suddetta politica è evidentemente la

possibile modifica di una distinta già presente nel database, che fa perdere

la corrispondenza univoca tra la distinta e i componenti della distinta, tra

l’elemento padre e i propri figli.

Ciò è diretta conseguenza del fatto che il cambiamento di revisione di

un elemento contenuto in distinta non innesca a sua volta la revisione

Page 92: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

92

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.

5.5. L’effetto domino sulle revisioni

L’unica differenza procedurale rispetto la politica esposta in

precedenza è la seguente regola:

� la revisione di un elemento avente distinta avviene se cambia un suo

componente o se viene revisionato un componente della sua distinta.

Continua a valere inoltra la regola implicita:

� le distinte obsolete non vengono modificate, quindi i loro componenti

non cambiano di versione e di conseguenza sono escluse dall’effetto

domino.

Di conseguenza non è più necessario intervenire sulle distinte di tutti

gli elementi padre non obsoleti; infatti, per ogni distinta in cui è presente il

componente revisionato verrà generata, per “effetto domino”, una nuova

versione dell’elemento padre e quindi una nuova distinta contenente la

versione aggiornata del componente revisionato.

L’esempio dovrebbe chiarire tutto.

Page 93: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

93

HS0001-01

HS0001-02

REVISIONE

PS0003-01(OBS)

HS0001-01

X

Y

PS0123-01

HS0001-01

J

K

REVISIONE

PS0123-01(OBS)

HS0001-01(OBS)

J

K

HS0001-01(OBS)

PS0003-01(OBS)

HS0001-01(OBS)

X

Y

REVISIONE

PS0123-02

HS0001-02

J

K

Come si nota l’effetto domino si propaga verso l’alto, infatti la

revisione di una scheda ha innescato a sua volta la revisione del prodotto

contenente la scheda, in generale il susseguirsi di revisioni si propaga fino

alla radice dell’albero delle distinte.

Page 94: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

94

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.

5.6. Il confronto tra le due alternative

Per comprendere quale sia l’alternativa migliore tra le due politiche di

revisione riportiamo in una tabella il confronto sui vari punti.

Senza effetto domino Effetto domino

Il cambiamento di un elemento alla base dell’albero della distinta implica una sola revisione.

Il cambiamento di un elemento alla base dell’albero della distinta implica la propagazione di nuove revisione fino all’elemento radice.

Il totale delle revisioni per scheda o componente è in media basso (esempio: se un prodotto contiene 5 schede e per ogni scheda escono 3 revisioni, viene aggiornata la distinta del prodotto 15 volte, ma il numero di revisione non cambia).

Il totale delle revisioni per scheda o componente sarebbe in media notevolmente più alto (esempio: se un prodotto contiene 5 schede e per ogni scheda escono 3 revisioni, per il prodotto verranno generate ben 15 revisioni e relative distinte).

Si perdono informazioni storiche sulla composizione esatta delle vecchie distinte (esempio: se un cliente riscontra un problema su un prodotto non si è in grado di sapere con certezza quali versioni di schede sono presenti su di esso). Possibili problemi in fase di ASSISTENZA.

Vi è la reperibilità totale delle informazioni relative a vecchie distinte successivamente sottoposte a revisioni (a un determinato codice di scheda corrisponde esattamente una e una sola distinta perché non è mai stata modificata).

In fase di PRODUZIONE non vi sono problemi perché vi è la certezza che ogni distinta non obsoleta è composta con le ultime versioni esistenti dei suoi componenti.

In fase di PRODUZIONE non vi sono problemi: l'ultima revisione di un prodotto ha, in distinta, tutte le ultime revisioni dei sui componenti.

Se un componente è presente in più distinte (ha più padri), la sua eventuale revisione, non propagandosi, non influisce sul numero di revisione degli elementi padre.

Un componente con più padri propaga l’aggiornamento di revisioni in più direzioni con l’effetto collaterale di ritrovarsi nuove revisioni di prodotti che potrebbero non essere più in catalogo perché, per esempio, l’azienda non è più interessata nella loro produzione.

Page 95: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

95

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.

Risulta meno grave di quello che appare, invece, il problema della

reperibilità per la politica “senza effetto domino” già in uso in azienda, in

quanto nel momento in cui si genera una nuova versione relativa ad un

elemento si tiene traccia delle caratteristiche della revisione. In particolare

si memorizza la “descrizione della revisione”, la “motivazione”, la “data di

revisione”, ed eventualmente si associa, mediante un link, un documento

che rappresenta nel dettaglio le modifiche effettuate. Data una qualsiasi

versione di un elemento è nota la “data” a cui essa si riferisce. Mediante il

meccanismo inverso è pertanto possibile risalire alla versione in uso in una

certa data passata. Quindi è possibile, conoscendo per esempio la data in

cui il prodotto fu venduto, risalire alla composizione esatta della distinta

con le versioni dei componenti allora in uso. La coppia distinta/data

individua pertanto univocamente i componenti della distinta a quella data.

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.

Page 96: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

96

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.

Alcuni dubbi conclusivi

Rimangono inoltre alcuni dubbi sulla correttezza concettuale di alcune

procedure in uso relative alla gestione delle revisioni.

� L’uscita di una nuova revisione, come abbiamo detto, non cambia la

funzione dell’elemento ma può cambiare altre proprietà, come per

esempio l’affidabilità. Il cambiamento dell’affidabilità di un

componente, può di conseguenza cambiare l’affidabilità dell’elemento

che lo contiene. Il cambiamento dell’affidabilità di un elemento non è

sufficiente per affermare che tale elemento è diverso da quello

precedente e quindi che è necessaria l’uscita di una nuova revisione

dell’elemento stesso?

� E’ corretto, da un punto di vista concettuale, prevedere una procedura

standard per la modifica di dati già archiviati in un database? A mio

avviso questo è lecito solo se i dati suscettibili di tale modifica non

hanno un valore storico. E’ questo il caso delle distinte?

Page 97: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

97

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à.

Tale elemento è fondamentale per una chiara e precisa distribuzione

delle responsabilità tra i dipendenti dell’azienda e si scontra con la

decisione aziendale di centralizzare l’inserimento dei dati attribuendo ad un

solo utente “amministratore” tale compito.

Vi sono due tipi di operazioni sul database, in particolare, che

necessitano di “approvazione” da parte dell’utente in quanto informazioni

ritenute critiche per l’azienda.

� codifica dell’elemento;

� revisione di un elemento.

6.1. La situazione preesistente

Come abbiamo già avuto modo di vedere, nel sistema preesistente, la

codifica e la revisione di un elemento avviene secondo la procedura

implicita seguente:

� il progettista richiede la codifica o la creazione di una revisione

all’amministratore e gli fornisce i dati da inserire;

� l’amministratore attribuisce l’approvazione degli stessi a colui che l’ha

richiesta o a colui che ne detiene la responsabilità;

� l’amministratore inserisce i dati nel database.

Page 98: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

98

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.

Questa mancanza di controllo esaspera ancora maggiormente la

responsabilità delle informazioni verso l’amministratore, privando di

conseguenza di valore i dati relativi all’approvazione inseriti nel database.

6.2. Come affrontare il problema

Il problema relativo all’approvazione nasce da una confusione di

fondo sull’attribuzione delle responsabilità. E’ necessario scegliere

chiaramente su chi si vuole far ricadere la responsabilità dei dati inseriti.

Se la responsabilità la si vuol far ricadere su una sola persona per

poter meglio identificare la possibile fonte di errori, l’esistenza di un

attributo “approvato” crea solo confusione e può spingere l’amministratore

a disinteressarsi della validità dei dati in quanto “sembra” che la

responsabilità non sia sua. A questo punto sarebbe meglio rimuovere tale

attributo e responsabilizzare maggiormente l’unico responsabile del sistema

in modo che si assicuri che i dati inseriti siano corretti. Il livello di

responsabilità da affidare ad egli, in questo caso, sarebbe veramente molto

alto e in alcuni casi potrebbe generare problemi: per esempio se gli si

richiedesse di inserire dati di un elevato livello tecnico, difficilmente

valutabili.

L’altra soluzione è quella di mantenere una distinzione delle

responsabilità, quanto meno per quanto riguarda i dati più importanti. Si

Page 99: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

99

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.

6.3. Il protocollo di approvazione

La soluzione che proponiamo relativa alla procedura di approvazione

si basa su due presupposti fondamentali che devono essere implementati

nel sistema:

� la possibilità da parte del programma di inviare e-mail agli utenti;

� la possibilità da parte del sistema di riconoscere gli utenti.

Il protocollo si articola in cinque fasi:

� richiesta di codifica o di revisione;

� “login” dell’amministratore;

� inserimento dei dati;

� “login” dell’utente;

� approvazione finale.

Nelle seguenti pagine riportiamo schematizzate graficamente le

cinque fasi relative al protocollo di approvazione.

Page 100: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

100

FASE 1: RICHIESTA DI CODIFICA (O DI REVISIONE)

UTENTE AMMINISTRATOREDEL SISTEMAL'utente richiede all'amministratore

la nuova codifica di un elemento ola generazione di una nuova revisione.La richiesta viene effettuata mediante un'e-mailcontenente i dati necessari all'inserimento.

FASE 2: LOGIN DELL'AMMINISTRATORE

UTENTE AMMINISTRATOREDEL SISTEMA

PROGRAMMADI GESTIONE

DB

DATABASESADEL

2) Il programma confronta i dati di LOGINinseriti dall'amministratore con quelli presentinel database

1) L'amministratorerichiedel'identificazione

3) Se l'amministartore ha idovuti permessi viene restituital'autorizzazione all'uso (sia "inscrittura" che "in lettura")del programma di gestione

Page 101: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

101

FASE 3: INSERIMENTO DEI DATI

UTENTE AMMINISTRATOREDEL SISTEMA

PROGRAMMADI GESTIONE

DB

DATABASESADEL

1) L'amministratoreinserisce i dati relativi allacodifica o alla revisionedi un elemento esceglie se farloapprovare e dachi

2) Il programma controlla ereinvia iterativamente i datiall'amministartore finchénon risultano formalmentecorretti

3) Il programmainvia un'email all'utenteinformandolo che gli èstata richiesta unaapprovazione

4) Vengono inseriti nel database tutti i dati trannela conferma di approvazione dell'utente

Page 102: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

102

FASE 4: LOGIN DELL'UTENTE

UTENTE AMMINISTRATOREDEL SISTEMA

PROGRAMMADI GESTIONE

DB

DATABASESADEL

2) Il programma confronta i dati di LOGINinseriti dall'utente con quelli presentinel database

1) L'utente richiedel'identificazione

3) Se l'utente ha idovuti permessi vienerestituita l'autorizzazioneall'approvazione e all'uso"in lettura" del programma digestione

Page 103: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

103

FASE 5: APPROVAZIONE FINALE

UTENTE AMMINISTRATOREDEL SISTEMA

PROGRAMMADI GESTIONE

DB

DATABASESADEL

3) Se l'utente ha approvato i dati inseriti vieneaggiunta, a tali dati, la "firma"dell'utente stesso

1) Dopo aver controllato i dati inseritil'utente decide se approvarli o meno,inviando la sua sceltaal programma di gestione

2) Viene inviata una e-mailall'amministratore informandolodella scelta fatta

N.B. Se l'approvazione non èconcessa, i dati inseriti rimangononel database, ma senza la "firma"dell'utente.

E’ da chiarire, probabilmente, il perché è consentita la mancata

approvazione di un elemento o di una revisione. Questa scelta dipende

dalla mole di dati che altrimenti sarebbero soggetti ad approvazione (si

pensi solamente a gli oltre 9000 elementi codificati) e al fatto che si vuole

lasciare all’amministratore la decisione su quali siano le informazioni

importanti. Un elemento approvato è “garantito” dal nome della persona

che lo approva e sarà pertanto preferibile nell’uso rispetto ad un

equivalente non approvato.

Page 104: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

104

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.

Questa tipo di soluzione consente di distribuire correttamente le

responsabilità nonché di effettuare ripetuti controlli sui dati più importanti.

Difatti le informazioni suscettibili di approvazione sono esaminate

molteplici volte:

� l’utente, che ne richiede l’inserimento nel database, controlla il

“significato”;

� l’amministratore, che le inserisce nel database, controlla sia il

significato che la correttezza formale;

� il programma di gestione verifica la correttezza strutturale;

� l’utente, che le deve approvare, controlla la correttezza di

“significato” dopo che sono passate sotto le modifiche

dell’amministratore e del programma di gestione.

Si può affermare pertanto che il protocollo di approvazione, una volta

implementato, garantisca due aspetti fondamentali del sistema di gestione:

� una corretta distribuzione di responsabilità;

� la sicurezza della correttezza delle informazioni ritenute più importanti.

Page 105: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

105

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.

7.1. I documenti nel sistema preesistente

La metodologia di gestione dei documenti nel sistema preesistente

separa l’inserimento fisico del documento nel server, dall’inserimento del

link relativo nel database.

LINK

DB

Page 106: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

106

Come per innumerevoli altre funzioni implementate nel sistema

preesistente anche questa è affidata all’amministratore, che ne assume

l’intera responsabilità.

Il problema comunque va al di là della responsabilità su eventuali

errori, infatti risulta assai più pericolosa la relazione unilaterale che vi è tra

link e documento associato. Per la natura stessa del concetto di “link”

(collegamento), cioè di puntatore a una posizione ben precisa, esso non

risente di eventuali modifiche o cancellazioni del file a cui esso punta. Se

per esempio un file viene cancellato dal server, tale cambiamento non viene

rilevato dal database che continuerà ad avere un link che però, quando

servirà, si rivelerà interrotto. Nel database preesistente sono presenti circa

25 documenti con link interrotto.

La soluzione di questo grave problema è il requisito fondamentale su

cui costruire un valido sistema di gestione dei documenti.

7.2. Una soluzione semplice e potente

La soluzione al problema va ricercata nell’unione di quelle due

operazione di base che nel sistema preesistente erano separate:

� l’inserimento del documento nel server;

� l’inserimento del link nel database.

Sia il link, che il documento vero e proprio devono essere sotto la

protezione del “programma di gestione” che ne deve garantire una

“gestione coordinata”, in particolare deve implementare le seguenti

funzioni:

� consentire l’inserimento del link solo dopo che il file è stato inserito

nella directory del server;

Page 107: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

107

� all’atto dell’inserimento accertarsi che il link punti al relativo file;

� impedire la modifica del file;

� consentire l’eliminazione o la sostituzione di un file eliminando o

cambiando anche il link presente nel database.

Lo schema seguente rappresenta l’inserimento di un documento,

secondo la metodologia proposta.

LINK

DB

In particolare si nota come l’amministratore “dia in affidamento” il

documento al programma di gestione, il quale oltre ad inserire il

Page 108: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

108

documento in una predefinita directory del server, crea il link corretto e lo

inserisce all’interno del database.

Con la medesima logica di gestione si possono implementare anche le

operazioni di sostituzione e di eliminazione dei documenti conservati nel

server.

7.3. Obiettivi raggiunti

Mediante la gestione congiunta dei documenti e dei link, descritta nel

paragrafo precedente, è possibile raggiungere elevati livelli di qualità nella

gestione dei documenti. In particolare si ottengono i seguenti risultati:

� azzeramento del numero di link interrotti;

� rintracciabilità dei documenti mediante ricerca sul database;

� possibilità di eliminazione e sostituzione dei documenti senza

rischiare di alterare la validità e l’integrità dei dati;

� semplificazione della procedura di inserimento dei documenti per

l’amministratore.

Page 109: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

109

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.

In questo capitolo cercheremo di individuare i requisiti necessari per

una corretta ricerca e presentazione dei contenuti all’utente finale e

svilupperemo la logica di gestione relativa.

Tale lavoro prende forma da alcune considerazioni di base:

� è necessario evitare di stravolgere la struttura di visualizzazione

presente in precedenza, per attenuare le difficoltà del passaggio dal

sistema preesistente a quello in studio;

� vi sono alcune “viste” (query standard) indispensabili;

� è necessaria una tipologia di ricerca per livelli successivi: da una

ricerca molto generale ad una ricerca estremamente specifica;

� serve un menù fisso per la navigazione che consenta all’utente di

muoversi nelle varie aree dell’interfaccia in modo semplice ed

intuitivo;

� è necessario prevedere metodologie per l’esportazione in formato

Excel delle tabelle;

� servono strumenti adeguati per la stampa delle tabelle, delle distinte e

delle schede degli elementi.

Page 110: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

110

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.

I componenti di cui stiamo parlando sono:

� condensatori;

� resistenze;

� circuiti integrati;

� connettori;

� diodi;

� transistor.

Nel sistema preesistente le ricerche sulle caratteristiche funzionali di

questi componenti venivano effettuate mediante semplici ricerche testuali

all’interno del campo descrizione della tabella degli elementi. Questo

dovrebbe presupporre due condizioni:

� che il campo descrizione sia definito mediante un formalismo preciso;

� che sia necessario effettuare solo ricerche esatte.

In realtà nessuna delle condizioni sopra citate è rispettata.

8.1.1. La soluzione al problema dei componenti speciali

La necessità di un formalismo preciso per il campo descrizione dei

componenti speciali era già stata recepita dall’azienda che ha sviluppato

Page 111: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

111

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.

In realtà ciò non è sufficiente in quanto abbiamo rilevato la necessità

di effettuare anche ricerche “non esatte”, per esempio trovare tutti i

condensatori con tensione maggiore di un certo valore prefissato.

(p,e)

CONDENSATORI RESISTENZE TRANSISTORDIODICIRCUITIINTEGRATI CONNETTORI

ELEMENTI

.....

..... ..... ..... ..... ..... .....

codice_elemento

Dalla gerarchia degli elementi si nota come le sottocategorie relative

ai componenti speciali non possano essere incorporate nell’entità padre

ELEMENTI, pena la perdita di tutti gli attributi importanti contenenti le

caratteristiche dei componenti.

Per consentire la realizzazione di ricerche “non esatte” è necessario

rappresentare tali caratteristiche funzionali, diverse per ogni tipologia di

componente, mediante entità collegate mediante una relazione di

appartenenza all’entità degli elementi. Di seguito riportiamo, per chiarezza,

lo schema E/R, dopo l’eliminazione delle gerarchie, relativo a due

categorie di componenti speciali: i condensatori e le resistenze.

Page 112: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

112

CONDENSATORI RESISTENZE

ELEMENTI

..... .....

codice_elemento

(0,n)

(0,n)

(1,1) (1,1)

Tale schema si concretizza in una serie di tabelle, ognuna relativa ad

un componente speciale, aventi come chiave il codice dell’elemento a cui si

riferiscono e come attributi tutte le varie caratteristiche funzionali

dell’elemento.

L’insieme degli attributi del componente speciale sostituiscono, per

tali componenti, il campo “descrizione” presente nell’entità degli elementi.

Per consentire comunque una veloce identificazione del componente, il

campo “descrizione” viene generato mediante un semplice funzione

direttamente dagli attributi del componente relativo in maniera univoca,

permettendo così anche una eventuale ricerca esatta col “vecchio sistema”.

8.1.2. L’importazione del campo descrizione

La creazione di sei nuove entità derivate dall’entità degli elementi

genera un problema di “trasporto” dei dati, contenuti nel campo descrizione

Page 113: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

113

dei componenti speciali preesistenti, all’interno delle nuove tabelle. Per

realizzare tale trasposizione dei dati è necessario:

� interpretare il campo descrizione;

� inserire i dati negli appropriati campi delle nuove tabelle;

� segnalare i componenti per i quali non è stato possibile interpretare il

campo descrizione correttamente.

L’interpretazione del campo descrizione viene realizzata grazie ad un

meccanismo simile a quello usato per l’interpretazione dei codici.

� Mediante un file di testo, viene istruito il sistema sul formato che il

campo descrizione deve avere.

� Il sistema confronta il campo descrizione del componente col formato

restituendo il significato delle varie parti del campo.

� Se il sistema comprende tutte le parti del formato lo inserisce nei

rispettivi campi della tabella del componente.

� Se lo riconosce solo in parte e il componente non è utilizzato in altre

tabelle, lo elimina.

� Se lo riconosce solo in parte e il componente è utilizzato, inserisce nella

tabella del componente i dati che ha riconosciuto e segnala il

riconoscimento parziale inserendo in un apposito campo “altro”,

presente in tutte le tabelle dei componenti, l’intera descrizione che non

ha riconosciuto completamente.

Riportiamo di seguito parte del file di testo necessario per realizzare

tale procedura. Da notare come i valori numerici siano rappresentati da un

asterisco.

Page 114: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

114

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

Page 115: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

115

raggruppano una categoria di istanze ben definita e con caratteristiche ed

esigenze di visualizzazione simili, si denominano “viste”.

Le viste fondamentali sono le seguenti:

� “elementi”: tutti gli elementi presenti nel database;

� “prodotti”: tutti i prodotti non obsoleti con evidenziazione di quelli

aventi distinta;

� “schede”: tutte le schede elettroniche non obsolete con evidenziazione

di quelle aventi distinta;

� “circuiti stampati”: tutti i circuiti stampati;

� “documenti interni”: tutti i documenti ad uso interno (moduli, ecc.)

con riportato il link associato;

� “magazzino”: tutti gli elementi presenti in magazzino con evidenziato

anche il costruttore e il relativo codice e il numero di pezzi

attualmente presenti;

� “codici costruttori”: tutti gli elementi aventi associato un codice

costruttore ed eventualmente gli alternativi.

� “fornitori”: tutti i fornitori con i relativi dati.

Come si può notare, tutte le viste descritte tranne quella relativa ai

fornitori, rappresentano sottocategorie di elementi e sono pertanto

identificate univocamente dal “codice elemento”. Questo significa che è

sempre possibile ricondursi ad una “scheda elemento” che raggruppi in sé

tutte le informazioni relative all’elemento stesso. L’informazione relativa

alle caratteristiche dell’elemento è pertanto un sottoinsieme della

informazione più vasta relativa alla categoria a cui l’elemento appartiene.

Da notare, infine, che il medesimo elemento può essere presente in diverse

Page 116: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

116

“viste” che pertanto non si escludono a vicenda (per esempio un prodotto

che è in magazzino).

Le viste corrispondono alle opzioni che devono essere presenti nel

menu di navigazione.

8.3. La struttura di visualizzazione

Le problematiche relative alla visualizzazione e alla ricerca delle

informazioni nonostante siano fortemente interconnesse, debbono essere

studiate separatamente in quanto corrispondono a due sistemi di

consultazione dei dati alternativi: è possibile trovare un’informazione sia

mediante una ricerca che mediante un susseguirsi di visualizzazioni più

specifiche o (come accade il più delle volte) mediante l’utilizzo di entrambi

gli strumenti.

Per quanto riguarda la visualizzazione si è scelto di mantenere una

struttura simile a quella preesistente, che consente di muoversi dalla prima

pagina verso l’informazione cercata mediante la scelta di viste successive.

Nell’esempio di seguito riportiamo una possibile rappresentazione

gerarchica per la visualizzazione delle informazioni, su quattro livelli:

� livello zero: l’home page;

� livello “viste”: tutte le viste più importanti del database;

� livello “elementi”: tutti gli elementi relativi alla vista selezionata;

� livello “caratteristiche”: tutte le caratteristiche relative all’elemento

scelto.

Page 117: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

117

HOME PAGE

COSTRUTTORIMAGAZZINOPRODOTTI

PS0003PS0002PS0001

COSTOREVISIONEDISTINTA

LIVELLO ZERO

LIVELLO "VISTE"

LIVELLO "ELEMENTI"

LIVELLO"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.

Come per la visualizzazione anche la ricerca deve essere possibile su

più livelli di dettaglio e deve essere correttamente gestita dall’utente

affinché raggiunga le migliori prestazioni.

Le tipologie di ricerca che abbiamo deciso di implementare sono:

� ricerca semplice;

� ricerca avanzata.

8.4.1. La ricerca semplice

Questa tipologia di ricerca consente di effettuare una ricerca “esatta”

all’interno di una specificata “vista” ed eventualmente all’interno di un

determinato “campo” della “vista”.

Per ricerca esatta si intende la ricerca di una corrispondenza diretta tra

la parola che si inserisce e il risultato ottenuto e non di un determinato

Page 118: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

118

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”).

In particolare se nella parola inserita per la ricerca non è presente

alcun “wild card” il sistema ricerca tutte le istanze i cui campi contengono

tale parola: per esempio la ricerca della parola “DSP” produrrà tra i risultati

anche la descrizione “SCHEDA DSP FS”. Se invece viene fatto uso dei

“wild card” il risultato ne terrà conto: per esempio la ricerca della parola

“HS*” produrrà come risultato tutti i codici che iniziano per HS.

8.4.2. La ricerca avanzata

La ricerca avanzata, come quella semplice, svolge il suo ruolo

all’interno di una specificata “vista”, ma con alcuni importanti vantaggi:

� è possibile specificare i criteri della ricerca sulla base del tipo di

campo;

� è possibile impostare più criteri contemporaneamente;

� è possibile effettuare più ricerche successive;

� è possibile stabilire un ordinamento del risultato.

La cosa più interessante è senz’altro la possibilità di specificare i

criteri di ricerca sulla base del tipo di campo. In particolare ciò si

concretizza nelle seguenti implicazioni logiche.

Page 119: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

119

TIPO DI CAMPO

TESTUALE parola ricercata

NUMERICO = valore K (E +03) ± valore

OPZIONI opzione_1

DATA giorno mese anno>

FORM

menu a tendina con l'elenco delle opzioni possibili

ordine di grandezza

intervallo su cui ricercare

menu a tendina per la scelta dell'intervallo temporale

Per i campi testuali vale l’uso dei “wild card” con le stesse

metodologie della ricerca semplice.

La ricerca avanzata consente, per esempio, di effettuare la ricerca di

un componente “condensatore” con capacità maggiore di 2pF, tensione pari

a 50V codificato dopo il primo gennaio 2003 con precisione compresa tra

lo 0,25 e l’1,75 % (1±0.75), ordinato per “codice elemento”.

8.5. La progettazione operativa

La progettazione della logica di gestione relativa alle funzionalità di

visualizzazione e di ricerca consiste nel realizzare strumenti operativi che

consentano all’utente di interagire col sistema. In questo paragrafo

presenteremo a grandi linee le funzioni che riguardano la visualizzazione

delle informazioni sia come risultato di una “vista” sia come risultato di

una ricerca.

L’idea di fondo è quella che in ogni caso le informazioni da riportare

sono frutto di una query SQL eseguita su una tabella del database o, come

accade più frequentemente, su una “vista” che non è altro che una tabella

temporanea frutto di selezioni e “join” sulle tabelle già esistenti.

Page 120: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

120

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 DIVISUALIZZAZIONEQUERY SQL HTML

La “funzione di visualizzazione” consente, da sola, di visualizzare

tutte le tabelle e “viste” del database. Dopo aver creato la “vista” basta

difatti inserire in input la query SQL “select * from nome_tabella” per

ottenere sotto forma tabellare tutte le istanze relative alla tabella o alla vista

desiderata.

Per quanto riguarda la ricerca le cose si complicano leggermente, in

quanto, non è pensabile di chiedere all’utente direttamente l’espressione

SQL della ricerca, pena l’impossibilità di effettuare ricerche da parte

dell’utente medio che non conosce il linguaggio SQL. E’ necessario

pertanto una funzione che data la struttura della vista proponga all’utente

un modulo con determinati campi (“form”) da compilare e che generi delle

specifiche precise dalle quali sarà possibile creare una query SQL che

rappresenti in modo “strutturato” le scelte dell’utente.

Nello schema di seguito riportiamo la sequenza logica delle funzioni

che consentono di visualizzare il risultato di una ricerca a partire dalla

compilazione della “form” da parte dell’utente.

Page 121: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

121

FUNZIONE DIVISUALIZZAZIONE HTML

FUNZIONE DISELEZIONEQUERY SQL

FORMVISTA SPECIFICHE

8.6. Esportazione e stampa delle informazioni

Oltre alla ricerca delle informazioni è estremamente importante

definire delle metodologie per la stampa e l’esportazione dei dati.

Per quanto riguarda l’esportazione essa è realizzabile mediante una

“funzione di visualizzazione” con le medesime caratteristiche di quella

illustrata in precedenza, ma che in output restituisce un file in formato

C.S.V. (Comma Separated Values), che può essere interpretato

agevolmente dall’applicazione Microsoft Excel.

La stampa si può realizzare direttamente mediante il comando “print”

del browser utilizzato dal programma di gestione, semplicemente

impostando in maniera adeguata i fogli di stile C.S.S. (Cascading Style

Page 122: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

122

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.

Page 123: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

123

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.

In questo capitolo affronteremo il tema “sicurezza” sotto due aspetti

differenti:

� gestione dei permessi di accesso;

� sistemi di prevenzione e recupero dei dati in caso di crash del sistema.

Tralasciamo di proposito il tema relativo alla “sicurezza del server”, in

quanto oltre ad essere estremamente complesso, non è pertinente con

questo elaborato.

9.1. Gestione dei permessi di accesso

Nel sistema preesistente, la gestione dei permessi era estremamente

semplice, tutti gli utenti avevano accesso al database solo in letture mentre

solo l’amministratore aveva accesso al database anche in scrittura.

Nel sistema che si sta implementando tale soluzione risulta

insufficiente in quanto si vuole impedire l’accesso al database (anche in

lettura) ad un utente non identificato.

La riservatezza delle informazioni deve essere garantita da un accesso

mediante password e da alcuni livelli di permesso, diversi a seconda delle

caratteristiche dell’utente. In particolare si vorrebbero realizzare tre livelli

di permesso:

� amministratore (accesso in lettura e in scrittura su tutto il database);

Page 124: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

124

� utente interno Sadel (accesso in lettura su tutto il database);

� utente esterno (accesso in lettura su tutto tranne che sulle informazioni

relative ai costi, al magazzino e ai fornitori).

9.1.1. Gli strumenti offerti da MySQL

Il database MySQL prevede alcuni strumenti per la gestione degli

utenti mediante i quali è possibile assegnare o revocare permessi per le

diverse operazioni sulle tabelle. Di seguito riportiamo la sintassi dei

suddetti strumenti tratto dal manuale ufficiale di MySQL.

Mediante questa sintassi il permesso per l’amministratore sarà

pertanto:

GRANT ALL ON *.* TO tizio@localhost IDENTIFIED BY 'sadel' WITH GRANT OPTION;

Con tale istruzione si autorizza l’amministratore “tizio” dall’host

“localhost” con password “sadel” ad accedere sia in lettura che in scrittura

(GRANT ALL) su tutti i database e su tutte le tabelle (ON *.*) e a

concedere altri permessi (WITH GRANT OPTION).

Page 125: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

125

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”

9.1.2. La progettazione della logica di gestione

Affinché la gestione degli accessi in fase di sviluppo si riveli corretta è

necessario che i permessi concessi a livello “applicativo” coincidano con

quelli necessari all’applicazione per accedere al database. In tal modo

anche l’utente più “smaliziato” che eventualmente riuscisse, attraverso un

“baco” dell’applicazione, ad interfacciarsi direttamente al database non

potrà eseguire operazioni a cui non è autorizzato.

APPLICAZIONE

PERMESSOUTENTE

PERMESSOUTENTE

DATI

DATI

DB

Page 126: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

126

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.

La gestione dei permessi a livello applicativo necessita di una tabella

che associ gli utenti ad una tipologia di permesso. Riportiamo l’entità

relativa ad essa.

UTENTI_DB

nome

nom

e_co

mpl

eto

perm

esso

e-m

ail

Naturalmente in questa tabella non vi è alcuna password, la

correttezza di “dati di login” inseriti dall’utente che prova ad accedere al

sistema viene verificata direttamente dal programma di gestione provando a

porre un’interrogazione relativa ad un’area riservata al database. A seconda

della risposta di MySQL si comprende se l’utente ha diritto all’accesso o

Page 127: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

127

meno. L’attributo “permesso” serve invece soprattutto per distinguere le

aree riservate a l’utente interno da quelle accessibili anche da un utente

esterno.

9.1.3. La gestione dei permessi

Naturalmente deve essere prevista anche un’interfaccia riservata

all’amministratore per la gestione dei permessi, dalla quale si potranno:

� creare nuovi permessi;

� revocare i permessi esistenti;

� promuovere o declassare gli utenti;

� modificare i dati relativi agli utenti, compresi i “dati di login” (nome

utente e password).

L’ultima particolarità da segnalare è la possibilità di coesistenza di più

amministratori. In particolare un amministratore può essere nominato solo

da un amministratore già esistente e un amministratore non può attraverso

l’interfaccia modificare il proprio permesso o i propri dati di login.

E’ necessario pertanto in fase di implementazione del sistema la

creazione di un primo amministratore che possa generare a sua volta tutti i

permessi necessari.

9.2. Sistemi di prevenzione e recupero dei dati

L’aspetto della sicurezza relativo ai sistemi di prevenzione e recupero

dei dati deve essere implementato a livello del “server”, ma, come abbiamo

già avuto modo di rilevare, noi non ci addentreremo fino a tal punto.

In ogni caso abbiamo pensato di implementare un sistema di recupero

dei dati ad un livello più elevato, che tuteli il database da possibili errori a

Page 128: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

128

livello applicativo (errori umani o malfunzionamenti del programma di

gestione).

9.2.1. Gli strumenti offerti da MySQL

Anche in questo caso MySQL ci viene in aiuto prevedendo un

semplice ma efficace meccanismo di “backup” e “restore” (ripristino) dei

dati.

In realtà, essendo le tabelle utilizzate da MySQL contenute sottoforma

di file in una determinata directory, tali comandi non fanno altro che

copiare da una directory all’altra i file relativi alle tabelle di cui si vuole

effettuare il backup o il ripristino.

È necessario che sia l’amministratore a dare questi comandi al

sistema, in quanto MySQL non prevede un backup automatico dei dati ad

intervalli regolari, per questo serve un’interfaccia che permetta

all’amministartore di gestire le operazioni di rispristino e di backup.

9.2.2. Il file di log

Per aumentare le capacità di ripristino dei dati è possibile affiancare al

meccanismo di backup un “file di log” che tiene traccia di tutte le istruzioni

eseguite sul database che hanno modificato i dati a partire dall’ultimo

backup.

Page 129: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

129

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;

� righe affette (cioè il numero di istanze che sono state modificate);

� errore (il numero dell’eventuale errore).

Riportiamo di seguito un esempio.

Il tipo di operazioni memorizzate sono tutte quelle che modificano in

qualche modo i dati presenti:

� inserimento di istanze (insert);

� eliminazione di istanze (delete);

� modifica di istanze (update);

� modifica dei permessi (grant);

� revoca dei permessi (revoke).

In caso di necessità è possibile, grazie al “file di log”, tentare un

ripristino di tutti i dati presenti fino al momento di crash del sistema. Si può

Page 130: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

130

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”).

9.2.3. La gestione dei backup

La gestione dei backup e delle operazioni di ripristino del sistema che

abbiamo deciso di implementare, viene affidata ad un’interfaccia dalla

quale l’amministratore:

� visualizza tutti i punti di ripristino del sistema esistenti;

� può riportare il sistema a punti di ripristino precedenti;

� può eliminare vecchi punti di ripristino;

� può effettuare backup del database;

� può tentare il ripristino del sistema ad un qualsiasi istante successivo

all’ultimo backup (grazie al “file di log”).

Inoltre il programma di gestione svolge alcune funzioni automatiche:

� ogni volta che viene eseguita un’operazione di backup o di ripristino

“svuota” il “file di log”;

� prima di ogni operazione di backup verifica la consistenza delle

tabelle;

� prima di ogni tentativo di recupero mediante il file di log effettua un

backup della situazione attuale;

� segnala sempre in home page quante ore sono trascorse dall’ultima

operazione di backup;

Page 131: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

131

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 del database si può distinguere in tre fasi [1]:

� la progettazione concettuale;

� la progettazione logica;

� la progettazione fisica;

10.1. La progettazione concettuale

Lo scopo della progettazione concettuale è quello di tradurre il

risultato dell’analisi dei requisiti in una descrizione formale, indipendente

dal tipo di database che si andrà ad utilizzare (nel nostro caso MySQL).

Si deve giungere pertanto ad uno “schema concettuale” che, anche se

in forma semplificata, dovrà contenere tutti e soli gli aspetti interessanti per

la gestione del sistema.

Il modello utilizzato per esprimere il risultato della progettazione

concettuale, ormai da tempo affermato nelle metodologie di progetto delle

basi di dati, è il modello E-R (Entity – Relationship, P.P. Chen 1976).

10.1.1. Lo schema E-R

Il primo passo nella progettazione della base di dati è la definizione di

uno schema E-R, che rappresenti in maniera completa il database.

Page 132: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

132

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.

Individuazione delle entità e delle associazioni

Per prima cosa individuiamo le istanze di entità, cioè (dalla

definizione) quegli oggetti esistenti di per sé in azienda e della quale si

vogliono registrare fatti specifici.

Le entità rilevate sono le seguenti:

� elemento;

� fornitore;

� utente;

Le specifiche che esprimono le associazioni sono invece:

� un utente può approvare uno o più elementi, un elemento può essere

approvato da un solo utente;

� un elemento può essere stato comprato o realizzato da uno o più

fornitori sotto il corrispettivo di un costo, un fornitore può aver

venduto o realizzato uno o più elementi;

� un elemento (padre) può essere costituito da uno o più altri elementi

(figli), un elemento (figlio) può essere parte di uno o più altri elementi

(padri);

� un utente può originare una o più revisioni di un elemento;

� un utente può approvare una o più revisioni di un elemento.

Si nota come vi siano due associazioni che legano l’utente alla

revisione di un elemento che da un punto di vista concettuale non sarebbe

Page 133: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

133

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.

L’ultima considerazione relativa alla struttura di massima del sistema

riguarda le gerarchie presenti. Abbiamo già avuto modo di rilevare che

possono esistere diverse tipologie di elemento tra le quali alcune, che

abbiamo denominato “componenti speciali” di rilevante importanza. Esse

possono essere considerate, a ragion veduta, sottocategorie dell’entità

elemento. La gerarchia è di tipo parziale (esistono elementi che non

appartengono ad alcuna delle sottocategorie) ed esclusiva (se un elemento è

nella sottocategoria “condensatore” non è di sicuro presente nella

sottocategoria “resistenza”).

Lo schema scheletro

Grazie alle considerazioni fatte è possibile realizzare lo “schema

scheletro” del sistema

�������� ������

����

�� ���� �

�� �

������

�� ��������

� �������

�� ��� ����

�������� � ������ �������� ��� �����

����� ������� � ����

(p,e)

Nella pagina seguente riportiamo lo schema scheletro completo delle

cardinalità delle associazioni.

Page 134: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

134

Page 135: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

135

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.

Gli attributi sono “fatti che descrivono le caratteristiche delle istanze

di entità e le caratteristiche delle istanze di associazione”. Possono essere:

� obbligatori, scalari (1,1);

� obbligatori, multipli (1,N);

� opzionali, scalari (0,1);

� opzionali, multipli (0,N).

Le chiavi sono invece insieme di attributi identificatori di istanze di

entità o associazioni. Una chiave deve essere totale, obbligatoria, unica,

esplicita e non può contenere valori nulli.

Page 136: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

136

L’entità “elemento”

ELEMENTO

codice costruttore (0,1)

codice

costruttore

note

altri costruttori (0,N)

codice

costruttore

note

posizione magazzino (0,1)

operazioni magazzino (0,N)

numero pezzi

data

causale

documenti/files allegati (0,N)link

note

descrizione (1,1)

data (1,1)

obsoleto (1,1)

note (0,1)

codice elemento (1,1)

L’entità “utente”

UTENTE

nome completo (1,1)

nome utente (1,1)

permesso (1,1)

email (1,1)

Page 137: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

137

L’entità “fornitore”

FORNITORE

id (1,1)

città (0,1)

tel. (0,1)

nome fornitore (1,1)

via (0,1)

c.a.p. (0,1)

fax (0,1)

nome riferimento (0,1)

tel. riferimento (0,1)

tipo prodotto (0,1)

L’entità debole “revisione” e la sua associazione con l’entità “elemento”

ELEMENTO

REVISIONE

HA

codice elemento

codice elemento (1,1)

descrizione (1,1)

conseguenze (0,1)

azioni attuate (0,1)

link (0,1)

(1,1)

(0,1)

data (1,1)

motivazione (0,1)

Page 138: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

138

L’associazione “costi”

ELEMENTO

FORNITORE

COSTO

codice elemento

(0,N)

(0,N)

id

id (1,1)

costo (1,1)

valuta (1,1)

numero pezzi (1,1)

note (0,1)

data (1,1)

Page 139: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

139

L’autoassociazione “distinta”

ELEMENTI

DISTINTE

FIG

LIO

(0,N)

(0,N)

codice elemento

codi

ce e

lem

ento

(1,

1)

codi

ce d

isti

nta

(1,1

)

posizione (1,1)

quantità (1,1)

reference (0,1)

gestione (0,1)

note (0,1)

PAD

RE

Page 140: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

140

I componenti speciali

CONDENSATORE

codice elemento (1,1)

categoria (1,1)

case (0,1)

tipo (0,1)

posizione (0,1)

capacità (1,1)

tensione (1,1)

tolleranza (0,1)

passo (0,1)

altro (0,1)

RESISTENZA

codice elemento (1,1)

ohm (1,1)

tolleranza (0,1)

case (0,1)

potenza (0,1)

ppm (0,1)

altro (0,1)

CONNETTORE

codice elemento (1,1)

descrizione (1,1)

tipo (1,1)

numero di poli (1,1)

posizione (1,1)

codice costruttore (1,1)

altro (0,1)

Page 141: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

141

CIRCUITOINTEGRATO

codice elemento (1,1)

categoria (1,1)

descrizione (1,1)

package (1,1)

tipo (1,1)

codice costruttore (1,1)

altro (0,1)

DIODO

codice elemento (1,1)

codice costruttore (1,1)

caratteristica (0,1)

reverse voltage (0,1)

forward current (0,1)

package (0,1)

altro (0,1)

TRANSISTOR

codice elemento (1,1)

codice costruttore (1,1)

tipo (1,1)

tensione (0,1)

corrente (0,1)

package (0,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.

Page 142: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

142

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.

Per la realizzazione dello schema logico dallo schema ER è necessario

eseguire i seguenti passi:

� eliminazione delle gerarchie;

� selezione delle chiavi primarie ed eliminazione delle identificazioni

esterne;

� normalizzazione degli attributi composti o multipli;

� traduzione di entità e associazioni in schemi di relazioni;

10.2.1. Lo schema normalizzato

Per giungere allo schema normalizzato è necessario eseguire le prime

tre fasi della procedura illustrata in precedenza. Questo risulta abbastanza

semplice in quanto lo schema ER è stato ottenuto da un’analisi dei requisiti

che teneva conto dei problemi strutturali di maggior rilievo: nella gerarchia

dell’entità elementi, per esempio, sono stati inseriti solo quei componenti

ritenuti importanti dall’azienda, non si prenderà pertanto neanche in

considerazione l’ipotesi di un “collasso verso l’alto” della gerarchia. In

modo analogo gli attributi composti dell’entità elementi sono tali a causa

dell’elevata incidenza di valori nulli rispetto il numero totale di elementi,

non è possibile pertanto una loro integrazione con l’entità elemento.

Possiamo quindi presentare direttamente lo schema scheletro

normalizzato (per motivi di spazio sono riportati solo gli attributi “chiave”).

Page 143: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

143

Page 144: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

144

10.2.2. Gli schemi di relazioni

L’ultimo passo consiste nella definizione finale degli schemi di

relazioni per le entità e le associazioni.

Per quanto riguarda l’entità “elemento”, l’associazione “approvato”

viene inglobata come attributo tra le proprietà, mentre per gli attributi

composti vengono create relazioni separate. Abbiamo abbreviato i termini

per semplificare la comprensione, le chiavi sono sottolineate e i campi

obbligatori riportati in grassetto.

ELEMENTI (codice_elemento, descrizione, data, approvato, obsoleto, note);

COD_COSTR (codice_elemento, codice_costruttore, costruttore, note);

ALTRI_COSTR (codice_elemento, costruttore, codice_costruttore, note);

MASA (codice_elemento, posizione);

OP_MASA (id, codice_elemento, npezzi, data, causale);

LINK (codice_elemento, link, note);

Le sottocategorie dell’entità “elemento” vengono mantenute separate

mediante la creazione di altrettante relazioni separate.

CONDENSATORI (codice_elemento, categoria, case_cer, tipo_cer, posiz_elet, capacita, tensione, tolleranza, passo_thd, altro);

RESISTENZE (codice_elemento, ohm, tolleranza, case, potenza, ppm, altro)

CONNETTORI (codice_elemento, descrizione, tipo_connettore, n_poli, posizione, codice_costruttore, altro);

CIRCUITI_INTEGRATI (codice_elemento, categoria, descrizione, package, tipo_componente, codice_costruttore, altro);

DIODI (codice_elemento, codice_costruttore, caratteristica, reverse_voltage, forward_current, package, altro);

Page 145: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

145

TRANSISTOR (codice_elemento, codice_costruttore, tipo, tensione, corrente, package, altro);

L’autoassociazione “distinta” è definita come segue.

DISTINTE (codice_distinta, codice_elemento, pos, quantita, reference, gestione, note);

L’entità “revisione” contiene il riferimento all’elemento e agli utenti

che l’hanno originata ed approvata.

REVISIONI (codice_elemento, descrizione, motivazione, data, originato, approvato, conseguenze, azioni_attuate, link);

UTENTI_DB (nome_completo, nome, permesso, email);

L’entità “fornitore” rimane legata all’entità “elemento” attraverso un

associazione di costo. Come si può notare può comunque esistere un costo

relativo a un elemento senza aver assegnato un fornitore.

FORNITORI (id, nome fornitore, via, C.A.P., città, tel., fax, nome riferimento, tel. riferimento, tipo prodotto);

COSTI (id, codice_elemento, costo, valuta, data, npezzi, note, id_fornitore);

10.3. La progettazione fisica

La progettazione fisica consiste nella definizione ultima degli attributi

ed infine nella traduzione delle specifiche relazionali individuate in

conclusione della progettazione logica in un linguaggio interpretabile dal

database che si sceglie di utilizzare e dalle applicazioni che su di esso si

intendono realizzare.

Page 146: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

146

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.

Riporto di seguito le tabelle del database: nella colonna sinistra viene

specificato il nome del campo, in quella centrale la tipologia dei dati

relativi ad esso e nella colonna destra se sono consentiti campi nulli. Sono

evidenziate in grassetto le chiavi primarie.

ELEMENTI TIPO NULL

CODICE_ELEMENTO STRINGA 30 NO

DESCRIZIONE TESTO NO

DATA DATA AAAA-MM-GG NO

APPROVATO STRINGA 30 SI

OBSOLETO BOOLEAN (0/1) NO

NOTE TESTO SI

Page 147: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

147

DISTINTE TIPO NULL

CODICE_DISTINTA STRINGA 30 NO

CODICE_ELEMENTO STRINGA 30 NO

POS INTERO 6 CIFRE NO

QUANTITA INTERO 6 CIFRE NO

REFERENCE TESTO SI

GESTIONE CARATTERE (“S”) SI

NOTE TESTO SI

COD_COSTR TIPO NULL

CODICE_ELEMENTO STRINGA 30 NO

CODICE_COSTRUTTORE

STRINGA 60 NO

COSTRUTTORE STRINGA 60 SI

NOTE TESTO SI

ALTRI_COSTR TIPO NULL

CODICE_ELEMENTO STRINGA 30 NO

COSTRUTTORE STRINGA 60 NO

CODICE_COSTRUTTORE

STRINGA 60 NO

NOTE TESTO SI

Page 148: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

148

LINK TIPO NULL

CODICE_ELEMENTO STRINGA 30 NO

LINK STRINGA 150 NO

NOTE TESTO SI

REVISIONI TIPO NULL

CODICE_ELEMENTO STRINGA 30 NO

DESCRIZIONE TESTO NO

MOTIVAZIONE TESTO SI

DATA DATA AAAA-MM-GG NO

ORIGINATO STRINGA 30 SI

APPROVATO STRINGA 30 SI

CONSEGUENZE TESTO SI

AZIONI_ATTUATE TESTO SI

LINK STRINGA 150 SI

MASA TIPO NULL

CODICE_ELEMENTO STRINGA 30 NO

POSIZIONE STRINGA 10 SI

Page 149: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

149

OP_MASA TIPO NULL

ID INTERO 6 PROGRESSIVO

NO

CODICE_ELEMENTO STRINGA 30 NO

NPEZZI INTERO 8 CIFRE NO

DATA DATA AAAA-MM-GG NO

CAUSALE TESTO SI

COSTI TIPO NULL

ID INTERO 6 PROGRESSIVO

NO

CODICE_ELEMENTO STRINGA 30 NO

COSTO DECIMALE 0.00000 NO

DATA DATA AAAA-MM-GG NO

NPEZZI INTERO 6 CIFRE SI

NOTE TESTO SI

ID_FORNITORE INT 6 CIFRE SI

Page 150: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

150

FORNITORI TIPO NULL

ID INTERO 6 PROGRESSIVO

NO

FORNITORE STRINGA 60 NO

VIA STRINGA 100 SI

CAP STRINGA 20 SI

CITTÀ STRINGA 60 SI

TEL STRINGA 80 SI

FAX STRINGA 80 SI

RIFNOME STRINGA 100 SI

RIFTEL STRINGA 80 SI

TIPO_PRODOTTO STRINGA 80 SI

CONDENSATORI TIPO NULL

CODICE_ELEMENTO STRINGA 30 NO

CATEGORIA SET DI VALORI NO

CASE_CER INTERO 6 SI

TIPO_CER SET DI VALORI SI

POSIZ_ELET SET DI VALORI SI

CAPACITÀ REALE SI

TENSIONE REALE SI

TOLLERANZA DECIMALE SI

PASSO_THD DECIMALE SI

ALTRO BLOB SI

Page 151: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

151

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

CONNETTORI TIPO NULL

CODICE_ELEMENTO STRINGA 30 NO

DESCRIZIONE STRINGA 100 NO

TIPO_CONNETTORE SET DI VALORI SI

N_POLI STRINGA 10 SI

POSIZIONE SET DI VALORI SI

CODICE_COSTRUTTORE

STRINGA 60 SI

ALTRO BLOB SI

Page 152: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

152

CIRCUITI_INTEGRATI TIPO NULL

CODICE_ELEMENTO STRINGA 30 NO

CATEGORIA SET DI VALORI NO

DESCRIZIONE STRINGA 100 SI

PACKAGE STRINGA 100 SI

TIPO_COMPONENTE SET DI VALORI SI

CODICE_COSTRUTTORE

STRINGA 60 SI

ALTRO BLOB SI

DIODI TIPO NULL

CODICE_ELEMENTO STRINGA 30 NO

CODICE_COSTRUTTORE

STRINGA 60 NO

CARATTERISTICA SET DI VALORI SI

REVERSE_VOLTAGE REALE SI

FORWARD_CURRENT REALE SI

PACKAGE STRINGA 100 SI

ALTRO BLOB SI

Page 153: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

153

TRANSISTOR TIPO NULL

CODICE_ELEMENTO STRINGA 30 NO

CODICE_COSTRUTTORE

STRINGA 60 NO

TIPO SET DI VALORI SI

TENSIONE REALE SI

CORRENTE REALE SI

PACKAGE STRINGA 100 SI

ALTRO BLOB SI

Notare come l’attributo data, dove presente, sia sempre stato

dichiarato “non nullo” quindi obbligatorio, nonostante nel database

preesistente abbastanza spesso presentasse valori nulli. Ciò significa che

nella ridefinizione della struttura a tali valori nulli verrà associato

comunque un valore predefinito, più precisamente il valore 0000-00-00.

Come impostazione per la lunghezza massima possibile delle stringhe

e dei numeri ho scelto circa il doppio del valore massimo rilevato dalle

statistiche effettuate in precedenza.

La traduzione di tali specifiche in istruzioni per il database MySQL

verrà riportata in fase di implementazione del sistema, in particolare nella

parte riguardante la “creazione del database”.

Page 154: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

154

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.

In questo capitolo presenteremo le metodologie di implementazione

della logica di gestione progettata nei capitoli precedenti e descriveremo il

funzionamento dell’applicazione sviluppata.

11.1. Gli strumenti

La scelta degli strumenti per l’implementazione operativa del sistema

è stata fatta dall’azienda ed è pertanto un prerequisito fondamentale dal

quale non si può prescindere: il sistema dovrà essere sviluppato su

piattaforma Linux, con database MySQL e gestito dall’applicazione

realizzata in linguaggio PHP.

11.1.1. Il linguaggio PHP

Il PHP (PHP: Hypertext Preprocessor) [3] è un linguaggio di scripting

creato nel 1994 da Rasmus Lerdorf [10], disegnato per la generazione

dinamica di pagine web. Fino a dieci anni fa, difatti, un sito web era

costituito essenzialmente da semplici pagine HTML, i documenti erano

raggiungibili mediante un indice generale e non vi era alcuna possibilità di

effettuare ricerche. Oggi, invece, la maggior parte dei siti sono

Page 155: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

155

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.

Il PHP rientra tra questi particolari e ne rappresenta uno tra i migliori

dal punto di vista prestazionale e per numerosi altri vantaggi.

� Curva di apprendimento. Il PHP è uno tra i linguaggi più semplici da

imparare, ha una sintassi molto simile ad altri linguaggi da cui prende

spunto come il “C”, Java ed il Perl.

� Integrazione col database. Mediante il PHP è possibile interfacciarsi

con i più diffusi database (Oracle, Informix, SyBase, Microsoft SQL

Server, MySQL, mSQL, PostGreSQL) tra i quali la combinazione più

usata e più flessibile è con il MySQL.

� Modularità. Il PHP è modulare, l’interprete principale può essere

esteso realizzando, in linguaggio C, ulteriori moduli da affiancare a

quelli preesistenti.

� Estensibilità. Il PHP è distribuito con licenza Open Source per cui è

possibile, per un programmatore, estenderne le funzionalità.

11.1.2. Il database MySQL

MySQL è un sistema Open Source di gestione di database relazionali

[2]. Con l’aumentare delle potenzialità dei computer nel contenere enormi

quantità di dati si è reso necessario lo sviluppo di elaborati sistemi di

gestione di basi di dati; MySQL si basa su “SQL” (Structured Query

Language), che è il linguaggio standard, definito dallo standard ANSI/ISO

Page 156: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

156

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).

Il server MySQL è uno tra i più utilizzati e conosciuti database, grazie

alle sue numerose qualità tra cui spiccano la velocità, l’affidabilità e la

semplicità d’uso. Riportiamo di seguito le principali caratteristiche.

� Può funzionare su diversi tipi di piattaforma ed è utilizzabile da

numerose API (interfacce di programmazione).

� Dal punto di vista della sicurezza è estremamente affidabile e

flessibile, le password sono crittate ad ogni connessione.

� Può gestire database di grandi dimensioni (fino a 60.000 tabelle e

5.000.000.000 di righe).

� I “client” si possono collegare al server MySQL utilizzando il

protocollo TCP/IP.

� Supporta numerose lingue e insiemi di caratteri.

Perché MySQL è meglio di Access

Nel presente elaborato si descrive la progettazione e lo sviluppo di un

sistema informativo di un sistema che precedentemente era basato su

Microsoft Access. In questo paragrafo cercheremo di individuare i motivi

per cui, nel contesto aziendale, sia preferibile utilizzare un sistema basato

su MySQL.

Page 157: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

157

Riportiamo di seguito le ragioni che spingono verso l’utilizzo di

MySQL a scapito di Microsoft Access [7].

� Sviluppo delle informazioni. Se i dati sono contenuti in un database

MySQL è possibile accedere ad essi mediante numerosi tipi di

interfaccia, attraverso lo stesso Access o attraverso numerosi

linguaggi per il Web, dando la possibilità di accedere alle

informazioni in maniere indipendente dalla piattaforma utilizzata.

� Accesso multi-utente. Sebbene Access preveda alcune funzionalità

per la condivisione dei dati, esse non sono affatto il suo punto di forza.

Vi è sempre la sensazione di un sistema di gestione dei dati orientato

al singolo utente. MySQL, invece, può gestire simultaneamente molti

utenti in quanto è stato disegnato per l’utilizzo all’interno di network.

� Gestione di grandi database. MySQL al contrario di Access può

gestire centinaia di megabytes di informazioni.

� Sicurezza. Quando le informazioni sono conservate su database

Access chiunque possa accedere al computer di un utente ha di

conseguenza accesso alla base di dati. E’ possibile in Access

assegnare una password al database, ma la maggior parte degli utenti

regolarmente non lo fa. Con MySQL per connettersi al database è

sempre necessario conoscere l’appropriata password, da qualunque

computer si tenti di accedere.

� Costi. MySQL può essere utilizzato gratuitamente, Access no. Inoltre

MySQL può essere utilizzato su piattaforme e con diversi tipi di

interfaccia Open Source riducendo, di conseguenza, la dipendenza da

software proprietari.

Page 158: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

158

� Scelta dell’hardware. MySQL può funzionare su più piattaforme

mentre Access è una applicazione “single-platform”, per cui la scelta

dell’hardware è già predeterminata.

� Prestazioni. Le prestazioni di MySQL superano notevolmente quelle

di Access. Riportiamo di seguito il confronto sui tempi delle più

frequenti operazioni.

Page 159: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

159

11.1.3. L’architettura del sistema

Possiamo rappresentare l’architettura del sistema che andiamo ad

implementare come segue.

LINUX

PHP

richiesta dati

HTML

Protocollo TCP/IP

Server Client

DB

Notiamo come MySQL e PHP siano entrambe applicazioni allo stesso

livello sulla piattaforma Linux, ma il ruolo di PHP è di più alto livello dal

punto di vista logico in quanto realizza l’interfaccia con il quale l’utente

può accedere al database, generando un codice HTML interpretabile da un

qualsiasi browser.

11.2. La realizzazione del database

In questo paragrafo tratteremo la realizzazione del database, intesa

come costruzione della struttura tabellare del database MySQL secondo le

specifiche di progetto e riporteremo le metodologie di importazione dei dati

preesistenti.

11.2.1. La creazione delle tabelle

Una volta effettuata la progettazione fisica del database abbiamo a

disposizione l’elenco delle istruzioni SQL che realizzano la struttura

completa del database. Le riportiamo di seguito.

Page 160: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

160

# 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; # Struttura della tabella `circuiti_integrati` CREATE TABLE `circuiti_integrati` ( `codice_elemento` varchar(30) NOT NULL default '', `categoria` enum('ANALOG','DIGITAL','MICRO','DSP','PLD','INTERFACE','LINEAR','MEM','REG') NOT NULL default 'ANALOG', `descrizione` varchar(100) NOT NULL default '', `package` varchar(100) NOT NULL default '', `tipo_componente` enum('IND','COM','AUT','MIL') NOT NULL default 'IND', `codice_costruttore` varchar(60) NOT NULL default '', `altro` blob, PRIMARY KEY (`codice_elemento`) ) TYPE=MyISAM; # Struttura della tabella `cod_costr` CREATE TABLE `cod_costr` ( `codice_elemento` varchar(30) NOT NULL default '', `codice_costruttore` varchar(60) NOT NULL default '', `costruttore` varchar(60) default NULL, `note` blob, PRIMARY KEY (`codice_elemento`) ) TYPE=MyISAM; # Struttura della tabella `condensatori` CREATE TABLE `condensatori` ( `codice_elemento` varchar(60) NOT NULL default '', `categoria` enum('CER.','ELET.','POL.','TANTALIO','VAR.') NOT NULL default 'CER.', `case_cer` int(6) default NULL, `tipo_cer` enum('NPO','COG','X7R','Z5U','Y5V') default NULL, `posiz_elet` enum('RAD.','ASS.') default NULL, `capacita` double NOT NULL default '0', `tensione` double NOT NULL default '0', `tolleranza` decimal(4,2) default NULL, `passo_thd` decimal(4,2) default NULL, `altro` blob, PRIMARY KEY (`codice_elemento`) ) TYPE=MyISAM;

Page 161: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

161

# 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; # Struttura della tabella `costi` CREATE TABLE `costi` ( `id` int(6) NOT NULL auto_increment, `codice_elemento` varchar(60) NOT NULL default '', `costo` decimal(7,5) NOT NULL default '0.00000', `valuta` enum('�','$') NOT NULL default '�', `data` date NOT NULL default '0000-00-00', `npezzi` int(6) NOT NULL default '0', `note` blob, `id_fornitore` int(6) default NULL, PRIMARY KEY (`id`) ) TYPE=MyISAM; # Struttura della tabella `diodi` CREATE TABLE `diodi` ( `codice_elemento` varchar(30) NOT NULL default '', `codice_costruttore` varchar(60) NOT NULL default '', `caratteristica` enum('SHOTTKY','RECT','FAST','ULTRA-FAST','HIGH SPEED') default NULL, `reverse_voltage` double default NULL, `forward_current` double default NULL, `package` varchar(100) default NULL, `altro` blob, PRIMARY KEY (`codice_elemento`) ) TYPE=MyISAM; # Struttura della tabella `distinte` CREATE TABLE `distinte` ( `codice_distinta` varchar(30) NOT NULL default '', `codice_elemento` varchar(30) NOT NULL default '', `pos` int(6) NOT NULL default '0', `quantita` int(6) NOT NULL default '0', `reference` blob, `gestione` enum('S') default NULL, `note` blob, PRIMARY KEY (`codice_distinta`,`codice_elemento`,`pos`) ) TYPE=MyISAM;

Page 162: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

162

# 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; # Struttura della tabella `fornitori` CREATE TABLE `fornitori` ( `id` int(6) NOT NULL auto_increment, `fornitore` varchar(60) NOT NULL default '', `via` varchar(100) default NULL, `cap` varchar(20) default NULL, `citta` varchar(60) default NULL, `tel` varchar(80) default NULL, `fax` varchar(80) default NULL, `rifnome` varchar(100) default NULL, `riftel` varchar(80) default NULL, `tipo_prodotto` varchar(80) default NULL, PRIMARY KEY (`id`) ) TYPE=MyISAM; # Struttura della tabella `link` CREATE TABLE `link` ( `codice_elemento` varchar(30) NOT NULL default '', `link` varchar(150) NOT NULL default '', `note` blob, PRIMARY KEY (`codice_elemento`,`link`) ) TYPE=MyISAM; # Struttura della tabella `masa` CREATE TABLE `masa` ( `codice_elemento` varchar(30) NOT NULL default '', `posizione` varchar(10) default NULL, PRIMARY KEY (`codice_elemento`) ) TYPE=MyISAM; # Struttura della tabella `op_masa` CREATE TABLE `op_masa` ( `id` int(6) NOT NULL auto_increment, `codice_elemento` varchar(30) NOT NULL default '', `npezzi` decimal(8,0) NOT NULL default '0', `data` date NOT NULL default '0000-00-00', `causale` blob, PRIMARY KEY (`id`) ) TYPE=MyISAM;

Page 163: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

163

# 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; # Struttura della tabella `revisioni` CREATE TABLE `revisioni` ( `codice_elemento` varchar(30) NOT NULL default '', `descrizione` blob NOT NULL, `motivazione` blob, `data` date NOT NULL default '0000-00-00', `originato` varchar(30) default NULL, `approvato` varchar(30) default NULL, `conseguenze` blob, `azioni_attuate` blob, `link` varchar(150) default NULL, PRIMARY KEY (`codice_elemento`) ) TYPE=MyISAM; # Struttura della tabella `transistor` CREATE TABLE `transistor` ( `codice_elemento` varchar(30) NOT NULL default '', `codice_costruttore` varchar(60) NOT NULL default '', `tipo` enum('NPN','PNP','N-MOS','P-MOS','N-MOSFET','N-ENHANCEMENT FET') NOT NULL default 'NPN', `tensione` double default NULL, `corrente` double default NULL, `package` varchar(100) default NULL, `altro` blob ) TYPE=MyISAM; # Struttura della tabella `utenti_db` CREATE TABLE `utenti_db` ( `nome_completo` varchar(100) NOT NULL default '', `nome` varchar(30) NOT NULL default '', `permesso` enum('AMMINISTRATORE','SADEL','ESTERNO') NOT NULL default 'ESTERNO', `email` varchar(100) NOT NULL default '', PRIMARY KEY (`nome`), UNIQUE KEY `nome_completo` (`nome_completo`) ) TYPE=MyISAM;

Page 164: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

164

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.

Page 165: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

165

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.

Questo è realizzato mediante le seguenti istruzione per MySQL.

Page 166: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

166

INSERT INTO `utenti_db` VALUES ('MICHELE BORGHI','mick', 'AMMINISTRATORE', '[email protected]'); GRANT ALL ON *.* TO mick@localhost identified by 'mick' WITH GRANT OPTION; INSERT INTO `utenti_db` VALUES ('ANDREA REGAZZI','andrear', 'AMMINISTRATORE', '[email protected]'); GRANT ALL ON *.* TO andrear@localhost identified by 'sadel' WITH GRANT OPTION; INSERT INTO `utenti_db` VALUES ('PINCO PALLINO','sadel', 'SADEL', '[email protected]'); grant create,select on sadel.* to sadel@localhost identified by 'sadel'; grant delete on sadel.approvazione to sadel@localhost identified by 'sadel'; grant update (`approvato`) on sadel.elementi to sadel@localhost identified by 'sadel'; grant update (`approvato`) on sadel.revisioni to sadel@localhost identified by 'sadel'; INSERT INTO `utenti_db` VALUES ('TIZIO CAIO','esterno', 'ESTERNO', '[email protected]'); grant create,select on sadel.* to esterno@localhost identified by 'esterno'; FLUSH PRIVILEGES;

In questo modo si creano due amministratori, un utente interno e un

utente esterno, così come gli abbiamo definiti nell’affrontare l’argomento

dei “permessi utente”. Notare che per un’identificazione completa risulta

anche necessario inserire alcune istanze all’interno della tabella

“utenti_db”.

11.2.3. L’importazione dei dati

Una volta concretizzata la struttura relazionale del database in tabelle

grazie a MySQL, è necessario procedere all’importazione dei dati

preesistenti.

Tale processo è un’operazione molto delicata in quanto deve

assolutamente evitare qualsiasi perdita di informazioni e nello stesso tempo

Page 167: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

167

deve essere automatizzata in quanto non è realizzabile il trasferimento

manuale di una mole di dati così elevata.

Tutto il processo di importazione dei dati verrà pertanto affidato ad

una serie di script che provvederanno a svolgere le seguenti funzioni:

� trasferire i dati del database preesistente compatibili con il nuovo

sistema, tenendo traccia di eventuali istanze che non è stato possibile

inserire;

� importare i documenti allegati e aggiornare i relativi link;

� ripulire i dati inseriti dalle “virgolette” che vengono male interpretati

dal sistema;

� analizzare i codici degli elementi inseriti rispetto il nuovo sistema di

codifica ed consentirne l’eliminazione o la modifica;

� pulire le tabelle eliminando le istanze relative ad elementi non

esistenti;

� interpretare e copiare i dati relativi ai “componenti speciali” nelle

apposite tabelle.

Riempimento delle tabelle compatibili

Come si può notare confrontando lo schema ER normalizzato

preesistente con quello elaborato nella progettazione logica del sistema, vi

sono una serie di tabelle con caratteristiche molto simili. Per queste è

possibile sviluppare una procedura di importazione automatica che

trasferisca i dati dal database Access al nuovo sistema in MySQL.

Tale procedura è affidata ad uno script PHP che dato una serie di file

in formato CSV (Comma Separated Values) in rappresentazione delle

Page 168: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

168

tabelle preesistenti del database Access, inserisce i dati in esse contenuti

nelle relative tabelle MySQL.

Oltre al trasferimento dei dati tale procedura si occupa di controllare

se i dati rispettano le nuove specifiche strutturali della tabella. Per esempio

se un’istanza è priva di un campo obbligatorio essa non viene inserita e ne

viene tenuto traccia in un apposito file di testo. Non viene invece

controllata in questa fase la correttezza del codice identificativo

dell’elemento.

ERRORI

file CSV

import_data.php

istanze_non_inserite.txt

DB

Il risultato dell’operazione consiste in 130 istanze non inserite a causa

di problemi strutturali, di cui 12 elementi, 3 revisioni, 17 link, 86 codici

costruttori, 4 altri costruttori, un fornitore, 2 costi, 2 posizioni di

magazzino, 3 operazioni di magazzino.

L’importazione dei documenti allegati

Nel sistema preesistente sono presenti oltre 200 megabyte di

documenti allegati che, naturalmente, devono continuare ad essere

rintracciabili ed fruibili nel sistema in fase di sviluppo.

Page 169: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

169

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”.

Da notare come in fase di importazione dei dati la tabella “link” è

stata riportata esattamente con gli stessi campi, per questo la procedura di

importazione dei documenti va a ricercare nel nuovo database il vecchio

link e poi lo modifica a seconda della reale posizione del documento.

ALLEGATIDATABASE

ACCESS

ALLEGATIDATABASE

MySQL

OLD LINK

NEW LINK

DOCUMENTOCOPIADOCUMENTO

PROGRAMMADI GESTIONE

DB

L’esecuzione dello script sopra schematizzato ha portato alla luce 25

link interrotti nel database preesistente.

Page 170: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

170

La pulizia dei dati

Le tre operazioni di pulizia dei dati previste in fase di importazione

sono:

� l’eliminazione delle virgolette;

� l’analisi dei codici;

� la pulizia delle tabelle.

L’eliminazione delle virgolette si rende necessaria in quanto le

virgolette all’interno dei campi del database vengono male interpretate in

fase di visualizzazione dei dati da PHP. Questa operazione consiste,

banalmente, nella sostituzione tabella per tabella, istanza per istanza,

campo per campo di tutte le virgolette con l’apice singolo.

L’analisi dei codici consiste, invece, nella operazione di

razionalizzazione del sistema di codifica esistente che abbiamo descritto

nel capitolo relativo al sistema di codifica. Dopo l’importazione risultano

esservi 19 codici errati di cui 9 eliminabili, cioè elementi presenti

esclusivamente nella tabella “elementi” e quindi di importanza limitata.

Page 171: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

171

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.

Importazione dei componenti speciali

Il trasferimento delle informazioni relative ai componenti speciali dal

campo descrizione della tabella “elementi” alle relative tabelle viene

affidata a uno script che esegue la procedura che abbiamo descritto nel

capitolo riguardante la “ricerca e la visualizzazione delle informazioni”. Il

risultato ottenuto da tale programma è il seguente (ricordiamo che vengono

eliminati i componenti la cui descrizione non è stata riconosciuta e che non

sono utilizzati).

� Condensatori: totale 660, inseriti 567, eliminati 93;

� Resistenze: totale 1351, inseriti 1245, eliminati 106;

� Connettori: totale 374, inseriti 312, eliminati 62;

� Circuiti integrati: totale 2088, inseriti 620, eliminati 1468;

� Diodi: totale 188, inseriti 110, eliminati 78;

� Transistor: totale 180, inseriti 100, eliminati 80.

Page 172: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

172

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."

La normativa ISO 9241 è del 1993 e si riferisce ai prodotti informatici

in genere. Tuttavia l'usabilità è un concetto molto precedente ed esteso [4]:

nasce negli anni 60 nell'ambito dell'ergonomia in relazione a qualunque

interazione uomo-artefatto. In seguito trova maggior fortuna proprio per i

prodotti a base informatica (soprattutto i software), nel settore

dell'ergonomia cognitiva. In questo specifico settore dell'ergonomia si

studia il modo in cui un utente si costruisce un modello mentale del

prodotto che sta usando, e si crea perciò determinate aspettative sul suo

funzionamento. Compito degli studi di usabilità è fare in modo che il

modello mentale di chi ha progettato il software (design model), da cui

deriva il suo reale funzionamento, corrisponda il più possibile al modello

mentale del funzionamento del software così come se lo costruisce l'utente

finale (user model) [8].

Page 173: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

173

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.

I principali attributi dell’usabilità sono i seguenti [8].

� Utilità: il software serve a qualcosa?

� Facilità di apprendimento: è facile capire come utilizzarlo?

� Efficienza: gli utenti possono interrogare il sistema e ricevere risposte

sensate in tempi brevi?

� Facilità di ricordo: nei successivi utilizzi l’utente ricorda come si

utilizza il software?

� Prevenzione degli errori: il software contiene errori?

� Soddisfazione: il sistema è soddisfacente da usare o crea ansia e

frustrazione?

Page 174: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

174

E’ necessario analizzare il sistema dal punto di vista dell’utente, in

particolare l’esperienza di navigazione deve essere esaminata sotto diversi

aspetti.

Inoltre è necessario definire l’organizzazione e la metodologia di

navigazione del sistema che si deve implementare, in particolare bisogna

orientarsi tra diversi tipologie di “alberi informativi” e trovare l’adeguata

via di mezzo.

L’albero orizzontale, riportato in figura, ha i pregi della semplicità

d’uso di un testo lineare e ha i vantaggi di flessibilità dell’ipertesto, ma non

Page 175: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

175

scade nella carenza di organizzazione del grafo né nell’eccessivo

annodamento dell’informazione in un albero verticale.

11.3.2. La struttura di visualizzazione

Prima di addentrarci nella descrizione dettagliata dell’interfaccia

utente e delle varie aree del sistema, è necessario comprendere la struttura

di visualizzazione adottata in tutte le pagine dell’interfaccia.

CONTENUTOINFORMATIVO

TITOLO DELLA PAGINA

MENU' DI NAVIGAZIONE

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.

Prendiamo per esempio la prima pagina che viene visualizzata nel

momento in cui ci si connette col sistema.

Page 176: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

176

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.

Come si può notare, l’home page è strutturata in modo molto

semplice. In particolare e suddivisa in quattro aree differenti.

� Elenchi. Da qui è possibile accedere alle viste principali del database

in maniera diretta.

Page 177: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

177

� 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.

� Ricerca. Grazie alla “form” presente in questa area dell’home page è

possibile effettuare ricerche di tipo generale sulle varie “viste” del

database.

� 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.

11.3.4. Le viste principali

La definizione delle viste principali sul database è stata fatta nel

capitolo riguardo la “ricerca e la visualizzazione delle informazioni”.

Ricordiamo che la rappresentazione grafica di tali viste è frutto di un’unica

“funzione di visualizzazione” che data una determinata query SQL è in

grado di visualizzarla in forma standard.

Di seguito riportiamo, a titolo di esempio, alcune tra le viste principali

che sfruttano la “funzione di visualizzazione” sviluppata.

Page 178: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

178

Gli elementi

Come si può notare tale vista è la rappresentazione grafica della

tabella “elementi” del database MySQL, da notare vi è il menu sotto il

titolo che consente all’utente di effettuare diverse tipologie di ricerca, di

accedere ai componenti speciali (che, ricordiamo, sono “figli” dell’entità

elementi) e di esportare o stampare la tabella. Inoltre vi sono altre opzioni a

margine della tabella vere e propria:

� mediante il link “vedi solo elementi già utilizzati” è possibile

selezionare solo gli elementi della tabella che già sono presenti in

qualche distinta;

� mediante le frecce “prev” e “next” si può navigare tra le varie pagine

visualizzate;

� mediante il link “vedi tutti in una pagina” è possibile visualizzare in

un’unica pagina tutti gli elementi presenti;

Page 179: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

179

� cliccando sul titolo delle colonne è possibile ordinare la tabella

secondo il relativo campo.

I prodotti

Tale vista è il frutto di una semplice selezione sulla tabella elementi,

l’unica particolarità da segnalare rispetto quella descritta in precedenza è

l’evidenziazione in rosso degli elementi privi di una distinta.

Page 180: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

180

Il magazzino

Individuare l’origine informativa di tale vista è assai più complesso,

essa è, difatti, il frutto di un “join” tra ben quattro tabelle.

In ogni caso la struttura di visualizzazione dell’interfaccia rimane

sempre la stessa per consentire all’utente di continuare ad utilizzare i

medesimi meccanismi di navigazione.

11.3.5. La “scheda elemento”

Un’altra visualizzazione importante delle informazioni è la “scheda

elemento” che consiste in una pagina dalla quale è possibile visualizzare

tutte le informazioni relative ad un specifico elemento del database.

Tale scheda è raggiungibile cliccando sul codice dell’elemento di

interesse da una qualsiasi delle viste sul database.

Page 181: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

181

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.

11.3.6. L’esplosione della distinta

Sul ramo più basso del nostro “albero informativo” non vi poteva

essere null’altro che la distinta esplosa dell’elemento. La distinta

rappresenta infatti l’informazione di maggior rilievo conservata nel

database ed è molto spesso l’obiettivo delle ricerche effettuate su di esso.

L’esplosione della distinta consiste in una serie di distinte successive,

da quella dell’elemento radice a quella dei figli, a quella dei figli dei figli,

Page 182: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

182

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.

Page 183: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

183

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.

Page 184: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

184

Page 185: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

185

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.

Già l’home page si presenta con in aggiunta, rispetto a quella vista in

precedenza, un menu laterale su sfondo grigio che propone alcune opzioni

riservate all’amministratore:

� l’inserimento di un elemento;

� l’inserimento di un fornitore;

� la possibilità di modificare il formato della codifica;

� alcune operazioni di pulizia e analisi dei dati;

� la gestione dei permessi;

Page 186: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

186

� la gestione dei backup.

Per motivi di spazio descriveremo nel dettaglio solo alcune delle

procedure di gestione dei dati implementate nel sistema.

L’inserimento di un elemento e la codifica assistita

Scegliendo l’opzione di “inserimento elemento” dall’home page,

l’amministratore ottiene il seguente risultato.

Da qui è possibile inserire direttamente un elemento od affidarsi ad

alcune procedure guidate per l’inserimento di particolari tipologie di

elementi.

A titolo di esempio, simuleremo l’inserimento di un “elemento

generico” utilizzando la funzione di codifica assistita.

Page 187: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

187

Utilizzando la funzione di “codifica assistita” e rispondendo ad alcune

domande sul tipo di elemento che si vuole codificare si ottiene un “codice

valido”.

Dopo aver ottenuto il codice si può procedere nell’inserimento

dell’elemento.

Page 188: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

188

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.

Nell’email inviata al presunto “approvatore” sarà chiesto di recarsi

sull’home page del database nella quale verrà visualizzata la richiesta di

approvazione.

Selezionando il link l’approvatore puà confermare o negare

l’approvazione dell’elemento, secondo la procedura di approvazione

definita.

Il controllo sui dati

La procedura di inserimento di un elemento generico o di qualsiasi

altra tipologia di informazione viene sempre verificata da un sistema di

verifica dei dati inseriti. In particolare viene verificata l’attinenza delle

Page 189: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

189

informazioni con la struttura logica della tabella e il formato del codice

dell’elemento.

Per quanto riguarda il controllo sul formato del codice è comunque

prevista un’opzione “evita controllo formato” per il quale si forza

l’inserimento di un codice anche se non corrispondente alle specifiche del

sistema di codifica.

La modifica e l’eliminazione dei dati

La modifica e l’eliminazione dei dati può avvenire esclusivamente

dalla “scheda elemento” che, come l’home page, si presente notevolmente

diversa dalla “scheda elemento” per l’utente generico.

Page 190: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

190

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.

La gestione della distinta

Dalla scheda degli elementi aventi distinta è possibile inoltre accedere

ad una particolare interfaccia per la gestione della distinta e ad una

visualizzazione della distinta con costo (tale possibilità è riservata

esclusivamente agli amministratori).

Page 191: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

191

L’interfaccia di gestione della distinta e la visualizzazione della

distinta con costo risultano come nelle due figure seguenti.

Come si nota da qui è possibile inserire, modificare ed eliminare gli

elementi in distinta, eliminare l’intera distinta ed inoltre vi è anche una

procedura guidata per l’inserimento di un documento in distinta.

Page 192: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

192

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.

L’amministrazione dei permessi e la gestione dei backup

All’amministratore come abbiamo già visto in precedenza è affidata

anche la gestione della sicurezza che si concretizza nella gestione dei

permessi e dei backup. Riportiamo di seguito le due interfacce relative.

Page 193: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

193

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.

Page 194: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

194

La stampa avviene invece secondo due modalità:

� direttamente mediante il tasto “print” del browser;

� mediante una procedura di stampa implementata solo per l’esplosione

della distinta.

La stampa diretta e i CSS

La stampa diretta di una qualsiasi pagina dell’interfaccia è possibile

grazie i fogli di stile, o CSS (Cascading Style Sheet) [11], medianti i quali

è possibile nella progettazione di una pagina HTML distinguere il

contenuto informativo dalla formattazione grafica. Inoltre grazie ad essi è

possibile strutturare una pagina a seconda del supporto con cui tale pagina

è visualizzata [12], in particolare è possibile progettare uno “stile” per la

pagina visualizzata da schermo e uno “stile” per la pagina stampata, senza

dover modificare il contenuto informativo. In tal modo, per esempio, la

stampa di una pagina sarà in bianco e nero anziché a colori, senza il menù,

senza i link evidenziati, ecc.

Page 195: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

195

Di seguito riportiamo un esempio di una pagina come viene

visualizzata sullo schermo e come viene poi stampata.

Page 196: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

196

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.

Page 197: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

197

Per questo nel caso della stampa di una distinta è stata implementata

una procedura semiautomatica per la generazione di una pagina

correttamente interpretabile dai CSS.

Nel momento in cui si richiede la stampa di una distinta il sistema

propone la scelta tra diverse opzioni di stampa.

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.

Page 198: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

198

Riportiamo di seguito la relativa anteprima di stampa (effettuata con

Microsoft Internet Explorer 6.0).

Page 199: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

199

12. VARO DEL SISTEMA E SUA VALUTAZIONE

Il primo ottobre 2003 il sistema descritto in questo elaborato è entrato

in funzione in azienda.

In questo capitolo cercheremo di dare una valutazione complessiva sul

sistema implementato e lo confronteremo con il sistema in uso

precedentemente nell’azienda.

12.1. Come misurare i miglioramenti ottenuti

Il nostro obiettivo è quello di dare una valutazione il più oggettiva

possibile sui miglioramenti ottenuti rispetto il preesistente sistema. E’

necessario pertanto per prima cosa individuare una serie di caratteristiche

generali sulle quali poter paragonare i due sistemi.

� velocità;

� usabilità dell’interfaccia;

� ricerca delle informazioni;

� qualità dei dati;

� quantità dei dati contenibili;

� sicurezza;

� esportazione e stampa dei dati;

� stabilità del sistema;

� costi.

Su tali caratteristiche dobbiamo rilevare:

Page 200: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

200

� miglioramenti misurabili quantitativamente, mediante l’individuazione

di indicatori di processo;

� livello di soddisfazione dell’utente, misurabile mediante un

questionario.

Le caratteristiche sopra riportate sono, in effetti, estremamente diverse

tra loro: alcune sono misurabili oggettivamente, altre possono essere

valutate solo dalla percezione dell’utente, altre sono note per precedenti

studi. Ve ne sono di più o meno conoscibili ed in modo più o meno preciso,

inoltre ognuna corrisponde ad un diverso livello di importanza.

Procediamo descrivendo per ogni singola caratteristica le prestazioni

dei due sistemi, cercando di individuare le caratteristiche critiche su cui

porre maggiormente l’attenzione e di estrarre indicatori di processo e

quesiti per il questionario.

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”).

Date le premesse risulta pertanto inutilmente dispendioso effettuare

una rilevazione empirica sulle velocità dei due sistemi, mentre può essere

Page 201: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

201

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.

Ricerca delle informazioni

La facilità con cui si trova ciò che si cerca, la precisione nella risposta

del sistema. Sono queste le proprietà relative alla ricerca che bisogna

riuscire a valutare e che pertanto devono essere inserite nel questionario.

Qualità dei dati

La valutazione di questa caratteristica è estremamente ardua in quanto

è scomponibile in due aspetti: la qualità formale dei dati e la qualità

concettuale dei dati. Naturalmente solo la prima di tali caratteristiche può

essere misurata mentre la seconda risulta di difficile valutazione anche per

la percezione dell’utente.

La “qualità formale dei dati” può essere misurata precisamente

mediante diversi indicatori di processo:

� numero di “codici” errati;

� numero di “link” interrotti;

Page 202: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

202

� 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);

� numero di istanze eliminate nel passaggio dal sistema preesistente

perché sbagliate.

Quantità dei dati contenibili

Questa misura è oggettiva ed indipendente dalla percezione

dell’utente. Non esistono livelli quantitativi precisi in quanto ciò dipende

anche dalla struttura relazionale con cui i dati vengono conservati, ma

secondo diversi studi Access è indicato per piccoli o medi database

dell’ordine di una decina di megabyte mentre MySQL può gestire anche

grandi database dell’ordine di centinaia di megabyte.

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.

Esportazione e stampa dei dati

L’esportazione e la stampa dei dati è probabilmente il lato più forte

del sistema preesistente in quanto Access si interfaccia perfettamente con

gli altri prodotti Microsoft in commercio e prevede sofisticati meccanismi

Page 203: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

203

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.

Stabilità del sistema

Questa proprietà è valutabile dopo un certo periodo di utilizzo del

sistema e sarà oggetto di un quesito nel questionario.

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.

12.2. Valutazione degli indicatori di processo

Gli indicatori di processo che possiamo rilevare quantitativamente

sono relativi alla caratteristica “qualità formale dei dati”. In particolare

introducendo nuovi meccanismi di verifica dei dati è possibile misurare con

precisione la quantità di errori presenti nel vecchio e nel nuovo sistema

secondo diversi indicatori.

12.2.1. Numero di codici errati

Il numero di “codici elemento” errati è realizzabile mediante uno

script, che abbiamo già descritto in precedenza, e che dato un codice cerca

di interpretarne le caratteristiche della parte parlante e segnala un errore in

caso di fallimento.

Riportiamo il risultato che avevamo ottenuto con i codici del sistema

preesistente.

Page 204: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

204

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.

Come si può notare, oltre ad individuare i codici errati distingue tra

codici eliminabili e non eliminabili ed inoltre ne consente l’eliminazione o

la modifica. Per codice “eliminabile” si intende, come abbiamo già avuto

modo di spiegare, un codice errato che non è utilizzato in alcuna altra

tabella al di fuori della tabella “elementi”.

Page 205: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

205

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.

12.2.2. Numero di link interrotti

Il numero di link interrotti è un buon indicatore della qualità dei dati.

Nel nuovo sistema è stato implementato un meccanismo che lega

indissolubilmente la sorte del documento con la sorte del relativo link, in

tal modo è impossibile che vi siano link che puntino a un documento

inesistente e quindi interrotti. Nel precedente sistema erano presenti invece

ben 25 link interrotti.

12.2.3. Percentuale di errori evitati nell’inserimento

Questo indicatore di processo ci consente di valutare quale

percentuale di dati inseriti sarebbe errata in assenza del sistema di verifica

sui dati. L’idea è quella di contare il numero di volte che il nuovo sistema

deve intervenire per evitare un inserimento errato e quindi per impedire un

inserimento che invece nel preesistente sistema sarebbe stato permesso.

Questo è realizzabile mediante un semplice file di log che registra

tutte le operazioni di modifica od inserimento di dati e tutte le

comunicazioni di errore che il sistema genera in seguito a tali operazioni.

Dall’analisi del suddetto file, in data 10 ottobre 2003 (9 giorni dopo

l’avvio del nuovo sistema) risulta che vi sono 34 errori rilevati ed impediti

dal sistema su 157 operazioni effettuate. Significa che senza il sistema di

verifica sui dati vi sarebbe stato una percentuale di errore, pari a circa il

22% dei dati inseriti.

Page 206: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

206

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:

� l’operatore addetto all’inserimento è alle prese per la prima volta con

il nuovo sistema;

� essendo presenti meccanismi di verifica automatica è probabile che si

proceda con un po’ meno attenzione affidandosi al sistema per la

rilevazione degli errori più banali.

12.2.4. Istanze eliminate nel passaggio al nuovo sistema

In fase di importazione viene tenuto traccia di tutte le istanze

eliminate in un file denominato “istanze_non_inserite.txt”: contando per

ogni tabella il numero di righe risaliamo al totale di errori “strutturali”

presenti in precedenza nel sistema.

Di seguito riportiamo i risultati dell’analisi.

Page 207: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

207

TABELLA N° ISTANZE NON INSERITEelementi 15distinte 0revisioni 3

link 18cod_costr 108altri_costr 4fornitori 1

costi 2masa 2

op_masa 3TOTALE 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.

Il questionario indaga sull’utilità del sistema solo dal punto di vista

dell’utente comune in quanto essendovi un solo amministratore non

avrebbe senso porre quesiti riguardo l’interfaccia di amministrazione.

Riportiamo nella pagina seguente il questionario che abbiamo

sottoposto agli utenti.

Page 208: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

208

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.

Page 209: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

209

È 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.

Page 210: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

210

Riportiamo di seguito i risultati ottenuti.

RISULTATO QUESTIONARIO

0

1

2

3

4

5

velocit

à

usabilit

à

visuali

zzaz

ione

ricer

ca

stab

ilità

esporta

zione

stampa

MEDIA P

ESATA

ACCESSMYSQL

12.4. Valutazioni conclusive sul nuovo sistema

In base alle valutazione statistiche effettuate possiamo affermare che il

sistema implementato presenta innumerevoli lati positivi ed anche qualche

lato negativo

12.4.1. Miglioramenti ottenuti

I principali risultati positivi ottenuti sono:

� pulizia dei dati preesistenti: 156 istanze errate eliminate in fase di

importazione dei dati;

� azzeramento del numero di link interrotti;

Page 211: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

211

� riduzione dei codici errati dall’1,08% allo 0,27% sul totale degli

elementi;

� blocco dell’inserimento, causa dati errati, del 22% degli inserimenti

effettuati (dato comunque destinato a ridursi nel tempo all’aumentare

dell’esperienza dell’operatore);

� netto miglioramento della soddisfazione dell’utente riguardo la

visualizzazione;

� maggiore stabilità del sistema.

12.4.2. I lati negativi

Naturalmente vi è anche qualche lato negativo, in particolare sono

state individuate carenze nelle seguenti caratteristiche:

� esportazione delle informazioni;

� stampa dei dati.

Page 212: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

212

Conclusioni

Il sistema informativo che abbiamo sviluppato è entrato in funzione

nell’azienda il primo ottobre 2003 ed attualmente si stanno ottenendo i

primi risultati delle innovazioni gestionali introdotte.

La definizione di meccanismi per la verifica ed il controllo dei dati in

fase di inserimento garantisce al sistema l’integrità e l’affidabilità dei dati

contenuti nel database; la “procedura di approvazione” prevista per i

componenti, le distinte e le revisioni introduce una giusta ed equilibrata

distribuzione delle responsabilità tra gli utenti del sistema; la gestione

integrata dei documenti allegati con il database garantisce la reperibilità e

la sicurezza di tutti i documenti importanti per l’azienda; l’introduzione di

metodologie di ricerca dettagliata consentono all’utente di effettuare

interrogazioni complesse del database e di trovare le informazioni ricercate

con maggiore precisione; la gestione dei permessi utente per l’accesso al

database secondo diversi livelli permette di proteggere le aree riservate;

l’introduzione di un sistema di backup e ripristino dei dati ad “alto livello”,

consente di cautelarsi da errori nell’amministrazione dei dati e da crash

“non gravi” del sistema. Inoltre grazie al supporto informativo dato dalla

coppia formata da PHP e MySQL, si ottiene un risultato estremamente

flessibile, economico, indipendente dalla piattaforma software utilizzata ed

è stato possibile, sfruttando l’attitudine dell’utente alla navigazione nella

rete Internet, implementare un’interfaccia estremamente “user friendly”

nonché estremamente potente.

Page 213: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

213

Sviluppi futuri

Il naturale sviluppo per un sistema sviluppato nel linguaggio PHP e su

database MySQL è la rete Internet. Tra i possibili sviluppi futuri del

sistema vi è in effetti un integrazione informativa tra l’azienda e i fornitori

e tra l’azienda e i terzisti che per essa realizzano alcuni prodotti: questi tre

attori della filiera sono legati tra loro proprio dalla distinta base che da un

lato rappresenta una ricetta tecnica per produrre e dall’altro una lista di

componenti da acquistare.

L’altro rilevante sviluppo possibile relativo al sistema sviluppato

riguarda le carenze notate in fase di valutazione per quanto riguarda

l’esportazione e la stampa delle informazioni. E’ in effetti possibile

sviluppare un sistema per l’esportazione delle informazioni in un formato

più portabile e più adeguato alla stampa, il P.D.F. (Portable Document

Format) che è supportato da PHP. Questo consentirebbe di ottenere stampe

migliori ed adatte anche a presentazioni importanti.

Page 214: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

214

Bibliografia

[1] Atzeni, Ceri, Paraboschi, Torlone. Basi di dati: concetti,

linguaggi e architetture. McGraw-Hill Italia, 1999.

[2] Axmark David, Widenius Michael. MySQL Reference Manual

(http://www.mysql.com/documentation/mysql/bychapter/index.ht

ml).

[3] Bakken, Aulbach, Schmid, Winstead, Wilsons, Lerdorf,

Zmievski, Ahto. Manuale PHP (http://www.php.net/manual/it/).

[4] Boscarol Maurizio. Che cos'è l'usabilità dei siti web

(http://www.usabile.it/012000.htm). Usabile.it, 2000.

[5] Bosco Andrea. Come si costruisce un questionario. Carrocci, Le

Bussole, 2003.

[6] Clancy Jon. Engineering bill of materials. Ciras News

(http://www.ciras.iastate.edu/publications/CIRASNews/fall97/bo

m.htm)

[7] Dubois Paul. Migrating from Microsoft Access to MySQL. 2003

(http://www.kitebird.com/articles/access-migrate.html).

[8] Gugnelli Emanuela. Usabilità dei siti web. HTML.it

(http://www.html.it/usabilita/).

[9] Insinga Filippo. La gestione della produzione e della supply

chain. ISU Università Cattolica, 2002.

[10] Lerdorf Rasmus. PHP Pocket Reference. Hops Libri, 2000.

[11] Meyer Eric. CSS Pocket Reference. Hops Libri, 2001.

Page 215: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

215

[12] Stevahn, Waters. CSS Printing Extensions. Håkon Wium Lie

(http://www.w3.org/pub/WWW/TR/WD-print-970626)

[13] Travis David. Bluffers’ guide to ISO9241. Userfocus, 2003

(http://www.userfocus.co.uk/articles/ISO9241.pdf ).

Page 216: Progettazione e Sviluppo di un Sistema Informativo per la ... e sviluppo di un sistema... · Perché MySQL è meglio di Access _____156 11.1.3. L’architettura del sistema _____159

216

Ringraziamenti

Ringraziamenti vanno a tutti coloro che hanno collaborato alla

realizzazione di questa tesi ed in particolare alla Dott. Wilma Penzo, che

come relatore ha fornito le linee guida, all’Ing. Andrea Regazzi, che mi ha

costantemente affiancato nella realizzazione operativa del sistema, agli

ingegneri Katy Proietti e Fabio Galli, che mi hanno dato preziosi consigli e

a tutti i dipendenti di SADEL s.r.l.