Ai miei genitori Filomena e Mario e mia sorella Stefania Indice Indice ii Elenco delle figure iv Introduzione vii 1 Lo stato dell’arte 1 1.1 Il software gestionale . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 Sistemi ERP: Enterprise Resource Planning . . . . . . . . . . . . . . 3 1.2.1 Moduli core intersettoriali . . . . . . . . . . . . . . . . . . . 4 1.2.2 Moduli core settoriali . . . . . . . . . . . . . . . . . . . . . . 5 1.2.3 Extended ERP . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.2.4 Diffusione . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.2.5 Il paradigma ERP . . . . . . . . . . . . . . . . . . . . . . . . 8 2 Computi metrici 15 2.1 Il computo metrico . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.2 Il computo metrico estimativo . . . . . . . . . . . . . . . . . . . . . 18 3 Caso di studio 25 3.1 Raccolta dei requisiti . . . . . . . . . . . . . . . . . . . . . . . . . . 26 3.2 Analisi dei requisiti . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.3 Progettazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 ii INDICE iii 4 L’ambiente di sviluppo 43 4.1 Il sistema operativo . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 4.2 MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 4.3 MySQL Workbench . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 4.4 Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 4.5 Eclipse e Netbeans . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 5 Conclusioni e sviluppi futuri 55 Bibliografia 59 Elenco delle figure 1.1 Schema a “T” di un sistema ERP . . . . . . . . . . . . . . . . . . . . . . 4 1.2 Architettura ERP dei dati . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.3 Architettura ad isole di sistemi legacy . . . . . . . . . . . . . . . . . . . 10 2.1 Schema esemplif. di impianto per il calcolo del P.U. delle voci di C.M. . . 19 2.2 Schema concettuale di approccio al C.M.E. . . . . . . . . . . . . . . . . 20 2.3 Esempio di computo metrico, parte 1 . . . . . . . . . . . . . . . . . . . . 21 2.4 Esempio di computo metrico, parte 2 . . . . . . . . . . . . . . . . . . . . 22 2.5 Esempio di computo metrico, parte 3 . . . . . . . . . . . . . . . . . . . . 23 3.1 Steps del progetto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 3.2 Raccolta dei requisiti . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 3.3 Modello concettuale del progetto . . . . . . . . . . . . . . . . . . . . . . 27 3.4 Passaggio dei dati tra tabelle del db 1 . . . . . . . . . . . . . . . . . . . . 28 3.5 Passaggio dei dati tra tabelle del db 2 . . . . . . . . . . . . . . . . . . . . 28 3.6 Suddivisione del progetto in un sotto-problema . . . . . . . . . . . . . . 29 3.7 Componenti del Listino Vendite . . . . . . . . . . . . . . . . . . . . . . 30 3.8 Componenti del Listino Acquisti . . . . . . . . . . . . . . . . . . . . . . 30 3.9 Componenti della Home . . . . . . . . . . . . . . . . . . . . . . . . . . 31 3.10 Schema E/R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 3.11 Screenshot della finestra Home . . . . . . . . . . . . . . . . . . . . . . . 32 3.12 Screenshot della finestra Listino Vendite . . . . . . . . . . . . . . . . . . 33 iv Elenco delle figure v 3.13 Screenshot della finestra Listino Acquisti . . . . . . . . . . . . . . . . . . 34 3.14 Risultato della stampa di un computo metrico, parte 1 . . . . . . . . . . . 35 3.15 Risultato della stampa di un computo metrico, parte 2 . . . . . . . . . . . 36 3.16 Risultato della stampa di un computo metrico, parte 3 . . . . . . . . . . . 37 3.17 Risultato della stampa di un computo metrico, parte 4 . . . . . . . . . . . 38 3.18 Risultato della stampa di un computo metrico, parte 5 . . . . . . . . . . . 39 3.19 Risultato della stampa di un computo metrico, parte 6 . . . . . . . . . . . 40 3.20 Risultato della stampa di un computo metrico, parte 7 . . . . . . . . . . . 41 4.1 Interfaccia visuale di MySQL Workbench . . . . . . . . . . . . . . . . . 47 4.2 Il Forward Engineering di MySQL Workbench . . . . . . . . . . . . . . 48 4.3 Il Reverse Engineering di MySQL Workbench . . . . . . . . . . . . . . . 49 4.4 La funzione di sincronizzazione di MySQL Workbench . . . . . . . . . . 50 4.5 Il linguaggio Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 4.6 IDE di sviluppo Eclipse . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 4.7 IDE di sviluppo Netbeans . . . . . . . . . . . . . . . . . . . . . . . . . . 53 Introduzione Da alcuni decenni le tecnologie dell’informazione (IT) sono oggetto di crescente interesse, soprattutto da parte dalle grandi aziende alla ricerca di strategie concorrenziali per emergere in un mercato sempre più agguerrito. Storicamente, i primi vantaggi derivanti dall’introduzione di tali tecnologie si realizzarono in termini di aumento di produttività. Col passare del tempo, ci si rese conto che esse potevano garantire vantaggi strategici non solo relativamente alle funzioni produttive, ma anche in termini di competitività sul mercato: disponibilità di informazioni in tempi brevi, maggiore flessibilità decisionale (possibilità di valutare un numero maggiore di alternative), migliore utilizzo e controllo delle risorse. (5) Con l’evoluzione delle tecnologie di informatizzazione, accade sempre più spesso, di trattare con la veste informatica anche gli aspetti più soft della gestione, in tali circostanze, il sistema informativo gestionale rappresenta sempre più l’immagine riflessa “in formato digitale” dell’azienda, al punto che dove le immagini non si sovrappongono perfettamente, non è detto che a dover mutare sia il sistema informativo gestionale, verificandosi sempre più frequentemente casi in cui accade il viceversa. (6) In conseguenza del decreto “Codice degli appalti” in vigore dal 1 Luglio 2006, è riservato un posto di rilievo all’appalto integrato: con tale procedura di gara si consente all’impresa che dovrà costruire, di controllare anche la progettazione esecutiva. È previsto pertanto un aumento di questa forma di appalti e delle connesse attività computistiche, di valutazione e contabili, sia a carico dell’impresa in gara, sia durante il successivo controllo del processo costruttivo da parte della medesima impresa e del vii INTRODUZIONE viii committente, in contraddittorio. (4) Gli argomenti trattati, in questa relazione, dunque sono quelli relativi all’attività di misurazione e quantificazione dei lavori, in particolare la gestione della contabilità lavori su base informatica, a seguito del lavoro di tirocinio, avente come obiettivo la progettazione e lo sviluppo di un software gestionale che semplifichi le operazioni di calcolo dei computi metrici, svolto per la Monte Impianti, un’azienda, attiva ormai da 4 anni, operante nel territorio Modenese, in ambito edilizio, in particolare nel settore idro-termo-idraulico. Capitolo 1 Lo stato dell’arte 1.1 Il software gestionale Il software gestionale rappresenta l’insieme dei software che automatizzano i processi di gestione all’interno delle aziende. Come per tutti i prodotti software ha avuto una rapida evoluzione dopo i primi anni settanta legata soprattutto alla progressiva diminuzione del costo degli elaboratori e alla diffusione della professione di sviluppatori software. Anche la nascita di ambienti di sviluppo come il COBOL ha accelerato il processo di diffusione portando il computer e software dedicati alla gestione aziendale sempre più vicino a tutti i lavoratori. Intorno agli anni novanta si è assistito ad un cambiamento, il passaggio dai software di gestione con interfaccia a caratteri a quelli di nuova generazione ad interfaccia grafica, inoltre le stampe sono passate dalle tipiche a caratteri e quelle grafiche su laser. (1) Per capire meglio cos’è un software gestionale si prenderanno in considerazione diverse prospettive. È possibile descrivere un gestionale in base alle dimensioni: • piccole dimensioni se si occupa soltanto di differenziati processi gestionali • medie dimensioni se si occupa di diversi processi gestionali tra loro connessi 1 CAPITOLO 1. LO STATO DELL’ARTE 2 • grandi dimensioni se si occupa di tutti o una buona parte dei processi aziendali. È possibile descriverlo in base alle funzionalità: • gestione magazzino • gestione contabilità • gestione anagrafiche • gestione ciclo attivo • gestione ciclo passivo • gestione finanziaria, . . . È possibile descriverlo in base ai livelli di supporto: • supporto operativo: software dedicato al supporto di tutti i processi operativi, al miglioramento degli scambi d’informazione in senso orizzontale (supporto agli scambi d’informazione tra i vari reparti del livello più basso della scala gerarchica). Ne sono un esempio tutti i software che vengono utilizzati direttamente dagli addetti del processo di produzione: acquisizione materie prime, software per l’avvio della macchina di produzione, gestione dei work in progess, . . . • supporto direzionale: software dedicato al supporto di tutti i processi direzionali aziendali. Ottimizzazione degli scambi d’informazione dal livello più basso al livello più alto della scala gerarchica (informazione per il controllo dei processi operativi). Ottimizzazione degli scambi d’informazione dal livello più alto al livello più basso (informazione di direzione dei processi operativi). Un esempio sono i software che vengono utilizzati dai responsabili di un determinato processo per il controllo del numero di prodotti venduti o, più in generale, per la misurazione delle performance di processo. CAPITOLO 1. LO STATO DELL’ARTE 3 • supporto strategico (miglioramento obiettivi strategici): supporto alle decisioni strategiche del management aziendale attraverso un miglioramento dell’efficacia organizzativa. Esistono software in grado di effettuare simulazioni sul comportamento di un determinato processo sulla base dei dati storici dell’azienda. La previsione futura circa l’andamento di un processo è un ottimo supporto alle decisioni strategiche. È da notare, comunque, che un software gestionale possiede delle complicazioni che vanno ben al di là delle competenze informatiche. Un software gestionale è un sistema molto complesso che raggruppa diverse tecnologie informatiche e che deve assolutamente trovare sinergie con la situazione aziendale in cui viene adoperato. Se ciò non avviene il risultato potrebbe essere un fallimento dal punto di vista gestionale del progetto informatico: potrebbero peggiorare gli scambi d’informazione tra i vari reparti, si potrebbero creare malcontenti tra gli utilizzatori, se non viene correttamente adoperato si rischia di non avere dati corretti per fare valutazioni adeguate di controllo sui processi. In poche parole si potrebbero spendere costi e tempi eccessivi non anticipatamente preventivati. (2) 1.2 Sistemi ERP: Enterprise Resource Planning L’acronimo ERP (Enterprise Resource Planning) è stato coniato agli inizi degli anni Novanta dal Gartner Group per indicare una suite di moduli applicativi integrati che supportano l’intera gamma dei processi di un’impresa. Oggi, una suite completa comprende decine di moduli applicativi, che possono essere schematicamente classificati nei tre gruppi di moduli core settoriali, moduli core intersettoriali e moduli extended. Uno schema generale della suite ERP è in Figura1.1, dove la suite ERP è rappresentata da uno schema a T. I moduli settoriali sono la gamba della T, in quanto rappresentano la verticalizzazione delle applicazioni in ogni singolo settore industriale. La barra è formata dai moduli intersettoriali, in quanto orizzontali rispetto ai settori CAPITOLO 1. LO STATO DELL’ARTE 4 industriali, e dai moduli extended, che integrano l’azione degli ERP verso i mondi dei clienti e dei fornitori. La Figura1.1 riporta anche un sommario elenco dei titoli dei principali moduli, che sono illustrati qui di seguito. Figura 1.1: Schema a “T” di un sistema ERP 1.2.1 Moduli core intersettoriali I moduli core intersettoriali sono sostanzialmente invarianti rispetto ai singoli settori industriali; in generale, informatizzano le attività aziendali di supporto. I moduli istituzionali, così detti in quanto riflettono la regolamentazione pubblica, servono le attività amministrative, come la contabilità civilistica, la contabilità gestionale e la finanza aziendale, e la gestione delle risorse umane, che include sia le procedure contabili delle paghe sia i processi di gestione e sviluppo del personale. I sistemi direzionali comprendono una serie di moduli che servono i processi, appunto, di conduzione manageriale dell’impresa, come la pianificazione strategica, la CAPITOLO 1. LO STATO DELL’ARTE 5 programmazione ed il controllo del budget, l’analisi dei costi e, più in generale, il reporting aziendale. Sono intersettoriali, in quanto trasversali ai settori industriali, anche i moduli applicativi che pianificano e controllano le attività dei progetti ed elaborano la contabilità degli investimenti. Fra i moduli intersettoriali includiamo anche il portale aziendale. Apparso alla fine degli anni Novanta, offre un accesso via Web alle informazioni aziendali. L’alta uniformità dei moduli intersettoriali ha favorito l’industrializzazione dell’offerta ERP in termini di qualità/costo; per contro, il cuore del sistema informativo aziendale, quindi il mercato maggiore, è dato dai moduli settoriali. 1.2.2 Moduli core settoriali Le suite settoriali comprendono normalmente i moduli che supportano le attività primarie dell’azienda, tipiche del settore; sono molto diversificate, poiché riflettono le peculiarità d’ogni settore. Nella Figura1.1 è esemplificata, in sintesi estrema, la suite del settore automobilistico. Essa comprende una serie di moduli, che servono i processi d’approvvigionamento, produzione e vendita ai livelli di pianificazione, gestione degli ordini, attività fisiche. La suite del settore automotoristico è diversa da quella del settore elettrico, che invece comprenderà moduli per la programmazione e controllo dei lavori (allacciamenti, nuovi impianti, dismissioni, ecc. . . ) e per la bollettazione. Le suite settoriali sono numerose (per esempio il vendor SAP ne elenca una ventina) ed è conseguentemente elevato il costo sostenuto dai vendor per concepirle, realizzarle e mantenerle nel tempo. Non sorprendentemente, l’effettiva completezza delle suite settoriali è piuttosto variabile. In generale, è massima nel settorea auto-motoristico, terra d’origine degli ERP, mentre è più limitata in altri settori, come banche o pubblica amministrazione, dove le suite includono ancora un limitato numero di moduli. CAPITOLO 1. LO STATO DELL’ARTE 1.2.3 6 Extended ERP L’extended ERP è formato da una serie di moduli che gestiscono le transazioni interaziendali e, più in generale, l’interazione fra più aziende o fra una singola azienda e clienti o fornitori. In generale, queste suite supportano il ciclo vitale del prodotto (PLM, Product Lifecycle Management), la catena d’approvvigionamento (nota come SCM, Supply Chain Management), le interazioni con il cliente (CRM, Customer Relationship Management), l’E-Procurement e forniscono infrastrutture informatiche ai cosiddetti Market Place. Queste suite sono apparse sul mercato a partire dal 1995 come applicazioni indipendenti e separate dagli ERP core; con gli anni 2000, sono state integrate. Il valore distintivo dello schema ERP extended è l’integrazione fra transazioni interaziendali e transazioni interne. Per esempio, le suite ERP core sono integrate con i moduli CRM, che gestiscono i canali di contatto con il cliente (call-center, internet, agenti, negozi). L’integrazione fra CRM ed ERP core assicura l’effettiva esecuzione delle richieste del cliente (p.e. l’ordine di un’automobile, raccolto dai sistemi CRM, è programmato e controllato dai sistemi ERP core che gestiscono la produzione e la distribuzione). In altri termini, i sistemi CRM e, in generale, i sistemi d’interazione formano il frontend della azienda verso clienti e fornitori, mentre i sistemi ERP core formano il backend. 1.2.4 Diffusione Con l’estensione dello schema ERP, le aziende quindi hanno a disposizione una gamma molto ampia d’applicazioni informatiche; infatti: • le suite core informatizzano le attività aziendali interne di livello operativo e direzionale; • le suite extended informatizzano le transazioni interaziendali verso fornitori e clienti. CAPITOLO 1. LO STATO DELL’ARTE 7 Non sorprendentemente, gli ERP sono divenuti uno dei massimi mercati d’applicazioni software. Alla fine degli anni Novanta, nel mondo si spendevano annualmente oltre 23 miliardi di dollari e i sistemi ERP erano installati in oltre 30.000 imprese. Oltre il 50% delle aziende europee ha uno o più moduli ERP e oltre il 35% li usa in tre o più aree funzionali. Il numero totale di vendor sul mercato può essere stimato prossimo al centinaio. Tuttavia, solo alcuni, fra cui SAP, Oracle, Peoplesoft e JDEdwards, sono in grado di offrire l’intera gamma ERP. Il loro scarso numero riflette gli enormi investimenti necessari allo sviluppo ed al mantenimento di una gamma completa di moduli, intersettoriali e settoriali (Tabella1.1). Vendor Vendite Quota mercato SAP 5.839 30% Oracle 2.870 15% Peoplesoft 1.736 9% J.D.Edwards 980 5% Altri 7.127 41% Tabella 1.1: Vendite 2000 dei maggiori vendor ERP (da AMR 2001) Terza azienda software del mondo, SAP è nata intorno all’idea ERP e ha una quota stimata intorno ad un terzo del mercato. Il primo prodotto SAP, R/1, è stato un software batch per mainframe, sostituito nel 1981 da R/2 on-line e, nel 1992, da R/3 on-line e su architettura client-server, che negli anni 2000 è stata integrata da architetture webenabled. A fine 2001, SAP, leader di mercato, dichiarava 12 milioni di utenti, 44.500 installazioni, 1.000 aziende in partnership di vario tipo, 21 suite settoriali. Oracle lancia la sua suite ERP negli anni Novanta, iniziando anch’essa dal core ERP poi integrato a portali e CRM, sfruttando ampiamente le proprie tecnologie di basi dati e Internet. Punto di partenza di Peoplesoft sono i sistemi di gestione delle risorse CAPITOLO 1. LO STATO DELL’ARTE 8 umane, cui si aggiunge, dalla metà degli anni Novanta, la filiera standard ERP e CRM. JD Edwards, fondata nel 1977, si rivolge più specificatamente alla media impresa con un’offerta piuttosto ampia (6.000 clienti, di cui 300 in Italia). Ai vendor multinazionali a gamma completa, si affiancano qualche decina di vendor multinazionali focalizzati su gruppi di moduli o su estensioni dello ERP core. Per esempio, Siebel, leader nel CRM, ha sviluppato un’offerta completa di CRM, che è a sua volta verticalizzata in soluzioni settoriali ed integrata con suite ERP. A sua volta, SAS, azienda leader di software statistici, offre una suite di CRM analitico, che elabora analisi sul comportamento del cliente o supporta la pianificazione delle campagne di promozione. I grandi vendor multinazionali dominano nella grande impresa. Nelle piccole e medie imprese, invece, i primi 5 vendor hanno solo una quota minoritaria del mercato. 1.2.5 Il paradigma ERP La suite ERP rispecchia una precisa concezione del sistema informativo aziendale, con caratteristiche distintive: • unicità dell’informazione; • estensione e modularità funzionale; • prescrittività. Queste caratteristiche formano un paradigma funzionale, che indichiamo come paradigma ERP. Unicità dell’informazione Gli ERP sono caratterizzati da una base dati unica. Unica fisicamente od unificata attraverso un comune repository dei dati e servizi di replica automatica, memorizza i dati condivisi intorno alla quale ruotano i moduli. La base dati unica è una conquista sostanziale degli ERP che ha molti ed importanti vantaggi (Figura1.2). CAPITOLO 1. LO STATO DELL’ARTE 9 Figura 1.2: Architettura ERP dei dati In primo luogo, l’aggiornamento unificato delle basi dati abilita la sincronizzazione di processi gestionali interdipendenti: p.e. l’arrivo di un materiale al magazzino aggiorna la situazione delle scorte, degli ordini ai fornitori e della contabilità dei fornitori, dando ai corrispondenti processi un’informazione unica e sincronizzata. Ciò non è possibile nelle tradizionali architetture ad isole, dove le basi dati sono separate e i dati comuni sono sincronizzati attraverso periodici processi di allineamento. Nell’architettura ad isole, le informazioni sullo stesso oggetto (cliente, fornitore o materiale) sono temporalmente sfasate e ridondanti: il mancato pagamento di un cliente può non essere notificato in tempo alla gestione degli ordini, così che la situazione del cliente alla gestione degli ordini contrasta con quella della contabilità clienti (Figura1.3). CAPITOLO 1. LO STATO DELL’ARTE 10 Figura 1.3: Architettura ad isole di sistemi legacy In secondo luogo, l’architettura ERP certifica l’informazione e ne garantisce la tracciabilità: ogni evento di un processo per esempio la gestione di un magazzino, è testimoniato da un documento, per esempio una bolla di prelievo, che è specificatamente registrato nella base dati; ogni evento gestionale si riflette in una variazione di stato della base dati e la variazione é certificata da un documento. Infine, l’unicità della base dati a livello operativo favorisce, in modo del tutto naturale, l’unicità dei dati per la direzione aziendale. L’unicità è ottenuta attraverso l’integrazione verticale dell’informazione operativa e dell’informazione manageriale. L’integrazione verticale si basa su un Data Warehouse, che memorizza i dati, aggregati e trasformati, estratti dalla base dati operativa (e da altre fonti). I dati sono elaborati da una suite di applicazioni, dette SEM (Strategic Enterprise Management) od EPM (Enterprise Performance Management), che assistono il management nella formulazione CAPITOLO 1. LO STATO DELL’ARTE 11 della strategia, nel budgeting, nell’analisi dei risultati. L’integrazione rende disponibili informazioni sintetiche univoche (in quanto basate su dati operativi univoci ed unici), con un vantaggio rilevante per il management. Come molti studi hanno notato, la qualità dei dati è fra i vantaggi più apprezzati delle soluzioni ERP. Estensione e modularità Grazie all’estensione molto ampia, la suite ERP si propone come soluzione di riferimento per il sistema informativo aziendale, nelle sue componenti intra-aziendale, operativa direzionale, ed inter-aziendale. Tuttavia, l’estensione funzionale sarebbe vana se la suite non fosse composta da moduli autosufficienti. Grazie alla modularità, l’azienda può scegliere una strategia di implementazione coerente con la situazione dei sistemi e con il grado di rischio che è in grado di sostenere. Una diffusa strategia semplice ed a basso rischio è l’implementazione parziale: l’azienda, cioè, sceglie di realizzare un piccolo numero di moduli, che vanno a sostituire preesistenti sistemi legacy. La strategia, più ambiziosa, di implementare un elevato numero di moduli può essere attuata in due varianti, one stop shopping e best of the breed. Nel primo caso, privilegiando linearità e semplicità, l’azienda usa i moduli di un solo vendor, mentre, nel secondo, mette insieme moduli di più vendor, alla ricerca della soluzione ottimale per ogni processo aziendale, p.e. scegliendo il vendor A per la gestione del personale ed il vendor B per la gestione amministrativa. Osserviamo che, data la modularità e l’ampia estensione funzionale degli ERP, la progettazione diventa simile ad una specie di LEGO, in cui è critico l’incastro fra i diversi moduli ERP, magari di più fornitori, e fra i moduli ERP e gli eventuali moduli legacy. Infatti, vanno garantite l’unicità e la sincronizzazione delle informazioni, attraverso interfacce standard, API (Application Programming Interface) e software di CAPITOLO 1. LO STATO DELL’ARTE 12 workflow o d’integrazione. Prescrittività I moduli ERP incorporano, in misura significativa, una logica di processo gestionale. Per esempio, la transazione di ricevimento dei materiali a magazzino presuppone un ordine al fornitore: un materiale non entra in azienda se non è stato ordinato e non può essere ordinato se non è stato richiesto da un ente aziendale autorizzato. Il software quindi norma il comportamento dell’utente aziendale, ribaltando la tradizionale concezione secondo cui è il software che si deve adattare all’utente. La prescrittività ha importanti implicazioni. In primo luogo, semplifica l’analisi dei requisiti. L’analista, infatti, non deve specificare tutto il processo gestionale e tutto il sistema, ma si concentra sulle differenze rispetto al modello standard: definisce il processo ottimale, lo incrocia con le funzioni del sistema e sceglie le funzionalità del sistema. La progettazione funzionale diventa quindi una sorta di attività “taglia ed incolla” su di un menu di opzioni predefinite. In secondo luogo, la prescrittività favorisce la standardizzazione dei processi ed uniforma i comportamenti, un vantaggio rilevante per le aziende distribuite territorialmente e le multinazionali. Infine, la prescrittività può favorire una razionalizzazione dei processi, facendo coincidere il progetto informatico ERP con un progetto di razionalizzazione organizzativa, meglio noto sotto la sigla BPR (Business Process Reengineering). Tuttavia, la prescrittività comporta anche una certa rigidità, che può rendere gli ERP incompatibili con le specificità dell’utente. Infatti, se la razionalizzazione organizzativa richiesta è vasta e profonda, il progetto implica un costoso e rischioso intervento sul tessuto organizzativo dell’impresa. L’intervento può risultare infattibile per i tempi, troppo stretti, per i contenuti dei processi, incompatibili con il sistema dei valori esistente nell’azienda, per il rischio della trasformazione, troppo ampia, o, infine, per la mancanza di un gruppo di lavoro di quantità e qualità adeguata o, equivalentemente, CAPITOLO 1. LO STATO DELL’ARTE 13 per limiti di budget. L’alternativa ad adattare l’azienda al sistema è quella, piuttosto costosa e di un certo rischio tecnico, di adattare il sistema all’azienda, riscrivendo e/o modificando i moduli software. In conclusione, il fenomeno ERP rispecchia la progressiva uniformazione del sistema informativo aziendale ed interaziendale in un paradigma completo ed integrato che ha trasformato, in varia misura, le aziende che lo hanno adottato. La prima sostanziale trasformazione è in realtà la trasformazione del sistema informativo aziendale, che da collezione di applicazioni diverse ed indipendenti diviene un’ordinata catena di montaggio e distribuzione dell’informazione. La trasformazione del sistema informativo può favorire la trasformazione dei processi a livello operativo, direzionale, interaziendale. La trasformazione direzionale é un’area di potenziale alto successo, che integra bene modelli manageriali maturi con una tecnologia adeguata. La trasformazione interaziendale è ancora agli inizi. Il contributo degli ERP all’innovazione del modello di business appare limitato e incidentale. Le trasformazioni qui discusse sono potenziali. La trasformazione effettiva è funzione dell’effettiva capacità dell’azienda di sfruttare le potenzialità ERP attraverso un’opportuna trasformazione del tessuto organizzativo ed un approccio cauto e ben bilanciato al progetto ERP. Per misurare i benefici, potenziali ed effettivi degli ERP, è conveniente considerare il valore totale della trasformazione, concepito come la somma algebrica dei vari guadagni d’efficienza operativa e d’efficacia indotti dai progetti ERP. Capitolo 2 Computi metrici In questo capitolo si parlerà dei computi metrici evidenziandone il pregnante significato nel contesto del processo di produzione edilizia, sottolineandone l’importanza ai fini della gestione del contratto d’appalto, sia per il committente che per l’appaltatore, e la necessità che il prezzo dell’appalto ottenuto dalla stima medesima non abbia a variare durante l’esecuzione fisica del lavoro. (8) 2.1 Il computo metrico Il computo metrico (C.M.) è un documento prettamente tecnico, che viene elaborato, per necessità gestionali, sia dal committente (cliente) che dall’appaltatore principale (main contractor). Il committente ha come obiettivo prioritario, quello di definire se la sua iniziativa economica, sia essa pubblica o privata, rientri nei parametri prefissati di costo. L’impresa esecutrice delle opere, deve necessariamente elaborare il C.M. per poter partecipare ad una gara con forma di compenso a corpo. L’elaborato, infatti, serve a determinare l’importo di offerta, o il ribasso d’asta se si tratta di una gara per lavori pubblici di cui viene a costituire il preventivo. Il preventivo di gara poi (se verranno acquisiti i lavori) dovrà essere revisionato 15 CAPITOLO 2. COMPUTI METRICI 16 prima dell’inizio dei medesimi per definire nel minimo dettaglio tutte le opere da realizzare, al fine di verificare se quanto è stato valutato in fase di gara - e successivamente definito contrattualmente con il committente - rientra nel budget di commessa, trasformandosi così nel preventivo operativo. Quest’ultimo, da questo momento, diventa il perno su cui ruota tutto il project management, cioè l’intera gestione del processo costruttivo. La rilevanza, già in questa fase operativa-gestionale, di differenze nelle valutazioni tecniche ed economiche (es. quantità in meno e maggiori oneri rispetto al budget contrattuale) mette necessariamente in moto il regime delle riserve. Si può dunque definire il computo metrico come la quantificazione analitica e sistemica di tutte le attività di lavoro necessarie per realizzare una data opera nella sua completezza: ad esempio, nel settore civile-abitativo, dallo scavo di sbancamento alla posa in opera delle porte e delle altre finiture. L’elaborazione del C.M. richiede una consumata esperienza in lavori del tipo di quell’oggetto in valutazione, perché il tecnico incaricato deve avere la capacità di individuare esattamente l’opera compiuta tramite la propria immaginazione e fantasia. Tale elaborazione, inoltre per raggiungere il grado di valutazione più vicino possibile alla realtà, deve essere necessariamente supportata da disegni e specifiche tecniche di tipo costruttivo. Con l’attuale sviluppo del controllo costi e della programmazione il computo metrico è diventato un documento di primaria importanza, poiché i suoi dati vengono utilizzati per la gestione a vita intera dell’appalto. Un C.M. si può definire realmente operativo, secondo le attuali metodologie gestionali, solo se da esso è possibile estrapolare: • il monte ore della manodopera, ossia le “ore dirette” (per la programmazione) • la quantificazione e valutazione dei materiali (per acquisti e gestione materiali) • la produzione (resa) per ogni categoria di lavoro (in funzione della squadra tipo e dei mezzi che si suppone saranno utilizzati per realizzare le opere). CAPITOLO 2. COMPUTI METRICI 17 A tal fine è necessario: • calcolare le quantità di ogni singola attività di lavoro, scrupolosamente e secondo precise norme di misurazione. Nel definire tali norme è opportuno tener conto anche delle specifiche consuetudini della località in cui si lavora, per rendere più comprensibile il linguaggio ed efficace la comunicazione tra chi opera in cantiere (possibilmente usare anche la terminologia locale sull’uso di un particolare attrezzo o tipo di lavoro da eseguire). • esporre una descrizione dettagliata delle modalità di esecuzione delle opere, dei tipi di materiali da impiegare e di tutti gli oneri necessari per consegnare il lavoro finito e funzionale in ogni sua parte. Il C.M. ha una duplice divisione logico-strutturale: la prima afferisce al tipo di opera da realizzare (opere edilizie, stradali, marittime, ecc.); la seconda alla divisione fisica e/o sistema secondo la quale si vuole impostare il computo metrico (es. fabbricato A e B per un complesso residenziale; edificio turbina e caldaia per un impianto di produzione energia, ecc. . . ). Quindi si può affermare che per elaborare compiutamente un computo metrico è necessario conoscere: • le discipline tecnologiche cui appartiene l’opera da realizzare (in generale più di una) • la forma di compenso • le categorie e sotto-categorie di lavoro • le norme di misurazione • gli oneri che si intendono inserire in ogni voce di applicazione • la divisione fisica dell’opera da computare • la divisione sistemica della stessa. CAPITOLO 2. COMPUTI METRICI 2.2 18 Il computo metrico estimativo Il computo metrico estimativo (C.M.E.) si può definire come la valutazione economica di tutte le quantità ricavate mediante l’elaborazione del computo metrico; esso perciò prende anche il nome di “stima dei lavori”, “perizia di stima”, o semplicemente “preventivo”. La stima è ottenuta applicando alle singole quantità i prezzi unitari ottenuti da apposite analisi dei prezzi, da elenchi prezzi forniti dal committente o emessi dalle camere di commercio, da consorzi di ditte specializzate o da enti concessionari istituzionali. L’analisi dei prezzi, qualora venga effettuata, ha lo scopo di determinare il prezzo di applicazione per ogni singola attività di lavoro (voce d’opera), prendendo in esame tutti i fattori della produzione, cioè i materiali, la manodopera, i mezzi meccanici, i noleggi, ed infine gli opportuni ricarichi, come: le spese di cantiere, le spese generali e l’utile dell’impresa che concorrono alla formazione del prezzo medesimo. CAPITOLO 2. COMPUTI METRICI 19 Figura 2.1: Schizzo esemplificativo di un impianto per il calcolo del prezzo unitario delle voci di C.M. CAPITOLO 2. COMPUTI METRICI Figura 2.2: Schema concettuale di approccio al C.M.E. 20 CAPITOLO 2. COMPUTI METRICI 21 computo metrico componenti codice Descrizione U.M. Quantità Prezzo Importo RETE IMPIANTO IDRICO (le quantità sono da verificare con gli elaborati grafici di progetto) Impianti di adduzione idrica, diametri come da elaborati grafici, realizzati con seguenti caratteristiche: - Tubo multistrato composto da tubo interno in polietilene reticolato, strato legante, strato intermedio in alluminio saldato di testa longitudinalmente, strato legante e strato esterno in polietilene ad alta densità - Conduttività termica 0,43 W/mK - Coefficiente di dilatazione termica 0,026 mm/mK - Temperatura di esercizio 0 - 70 °C - Temperatura di punta di breve durata ( secondo DIN 1988 ) 95 °C - Pressione d’ esercizio 10 bar - Raccorderia in ottone stampato e in materia sintetica, con ORing in EPDM e rondella in PE-LD anti elettrocorrosione Lavorazione da effettuare pressando direttamente il tubo sul raccordo con le apposite attrezzature omologate dal produttore del sistema. Le istruzioni del fabbricante riguardo il montaggio e la posa in opera, dovranno essere scrupolosamente osservate. in opera c.po 1,0 € 2.000,00 € 2.000,00 Complesso di scarico per ogni apparecchio, con tubazione di scarico al piano, in polietilene con giunzioni ad innesto. Compresi pezzi speciali ed ancoraggi. (costo compreso nella voce 1) in opera Colonne di scarico a cura impresa edile. APPARECCHI SANITARI BAGNI 1 Figura 2.3: Esempio di computo metrico, parte 1. CAPITOLO 2. COMPUTI METRICI 22 computo metrico componenti codice Descrizione VOCE 1 Blocco bagno comprensivo di: Collettore di distribuzione idrosanitaria preassemblato in cassetta. Lavabo in vetrochina sospeso, colore bianco. Completo di piletta di scarico con guarnizioni e comando a saltarello, raccordo di scarico e sifone. Vaso sospeso in vetrochina, colore bianco, con scarico a pavimento. Sedile di tipo pesante. Completo di cassetta di risciacquo ad incasso e accessori di collegamento. Comando a pulsante su placca esterna a parete. Bidet in vetrochina sospeso, colore bianco. Completo di piletta di scarico con guarnizioni e comando a saltarello, raccordo di scarico e sifone. Piatto doccia in gres porcellanato,colore bianco. Dimensione 80x80 cm. Completo di gruppo miscelatore monocomando da incasso, doccia con soffione, piletta di scarico con griglietta, sifone a scatola con tappo e coperchio cromato. U.M. Quantità Prezzo Importo Marca: IDEAL STANDARD o similare Modello: n 5,0 € 2.000,00 € 10.000,00 n 1,0 € 624,00 € 624,00 n 1,0 € 515,00 € 515,00 n 1,0 € 193,00 € 193,00 n 1,0 € 33,00 € 33,00 n 1,0 € 241,00 € 241,00 n 1,0 € 62,50 € 62,50 Lavabo reclinabile c/mov meccanico completo di pikletta, miscelatore, portasapone. Marca: BOCCHI o similare Modello: NS98221 NABI2 -Vaso-bidet c/cass. Esterna ceramica per disabili Marca: BOCCHI o similare Modello: NS96101 Miscelatore termostatico Marca: BOCCHI o similare Modello: NMB016 Doccetta Marca: BOCCHI o similare Modello: NV00621 Maniglione reclinabile. Marca: BOCCHI o similare Modello: MALUX900M Maniglione Marca: BOCCHI o similare Modello: MALUX415 2 Figura 2.4: Esempio di computo metrico, parte 2. CAPITOLO 2. COMPUTI METRICI 23 computo metrico componenti codice Descrizione U.M. Quantità Prezzo Importo Scaldasalviette elettrico riempito con liquido ad alta conducibilità, fornito con resistenza elettrica da 300 W Marca: ZEHENDER o similare Modello: n 3,0 € 200,00 € 600,00 c.po 1,0 € 300,00 € 300,00 Blocco cucina comprensivo di attacco acqua calda/fredda da collettore premontato per lavello zona preparazione e lavello zona lavaggio, completo di tubazioni di scarico (restano esclusi sanitari e rubinetterie a carico dell'arredamento cucina). INSTALLAZIONE Raccorderia, pezzi speciali, attrezzature, materiali di consumo e quant'altro necessario al completamento dell'impianto. a corpo Prove di tenuta e circolazione a corpo PREZZO COMPLESSIVO DELLA FORNITURA (Trasporto e manodopera inclusi) € 14.568,50 3 Figura 2.5: Esempio di computo metrico, parte 3. Capitolo 3 Caso di studio La “Monte impianti”, essendo un’azienda del settore idro-termo-idraulico, operante quindi in ambito edilizio, sia per la cooperazione con altre aziende, dello stesso ambito, che per la partecipazione a gare di appalto, occorre che presenti un computo metrico. Partendo da un modello di foglio elettronico, l’azienda ha richiesto la progettazione e conseguente sviluppo di un applicativo, in grado di semplificare il processo di compilazione/redazione dei computi metrici. Figura 3.1: Steps tipici dell’attività di ingegneria del software. 25 CAPITOLO 3. CASO DI STUDIO 3.1 26 Raccolta dei requisiti Dalla raccolta dei requisiti, è emersa la necessità di avere (Figura3.2): • una finestra “Listino acquisti” dalla quale sia possibile accedere ai prodotti del proprio fornitore. • un database che contenga i prodotti del fornitore • una finestra “Listino vendite” da cui sia possibile creare una singola voce, relativa al tipo di categoria di impianto (composta di più voci del listino acquisti), che andrà aggiunta al computo oppure salvata come modello, per essere facilmente riutilizzata • un database che contenga le voci del listino vendite • un pannello che permetta di, differenziare e, selezionare le varie categorie di impianti (solare, condizionamento, . . . ) • una finestra principale “Home” , che riepiloghi il totale dei singoli impianti e il totale complessivo del computo, dato dalla somma dei vari impianti. Figura 3.2: Raccolta dei requisiti CAPITOLO 3. CASO DI STUDIO 3.2 27 Analisi dei requisiti Tramite l’analisi dei requisiti, si è cercato di schematizzare i vari punti della futura applicazione, in modo da avere un modello da cui partire per l’implementazione (Figura 3.3). Figura 3.3: Modello concettuale del progetto CAPITOLO 3. CASO DI STUDIO 28 Si è partiti dal fatto che, una voce di computo, quindi del listino vendite, è composta di più voci del listino acquisti (i materiali). L’idea, perciò è stata quella di copiare, i record di interesse, dalla tabella acquisti ad una tabella di supporto, quella dei materiali ed associarli alla tabella vendite con una foreign key1 Figura 3.4: (Figura 3.4). Ogni progetto può avere più voci di computo (preventivi) di categorie di impianti diversi. Analogamente, come fatto in precedenza, l’idea è quella di copiare i record dalla tabella vendite a quella dei preventivi, e associare quest’ultima alla tabella progetti, con un chiave esterna (FK) (Figura 3.5). Figura 3.5: 1 oppure FK, denota una chiave esterna nel contesto dei database relazionali, è un vincolo di referenza tra due tabelle. La chiave esterna identifica una colonna o un insieme di colonne di una tabella (referenziante) che referenzia una colonna o un insieme di colonne di un’altra tabella (referenziata). (1) CAPITOLO 3. CASO DI STUDIO 29 Il passo successivo è stato quello di analizzare gli elementi, che al termine andranno implementati nell’interfaccia grafica. Data la natura del progetto, è stato necessario scomporlo in un sotto-problema più facilmente affrontabile (si veda Figura 3.6). Si è presa dunque in esame la voce di computo, che è risultata essere la parte più complessa dell’intera attività progettuale. Figura 3.6: Nel dettaglio, la finestra Listino vendite, avrà (Figura3.7): • una parte dedicata alle operazioni di calcolo • una parte dedicata per listare i materiali, che faranno parte della descrizione della voce di computo. La finestra Listino acquisti avrà la possibilità di (Figura3.8): • visualizzare i materiali, prelevati dal db • filtrare i risultati, con un apposito campo “cerca” • trasferire nel listino vendite il record selezionato. La finestra Home, infine, sarà composta da (Figura3.9): CAPITOLO 3. CASO DI STUDIO • una parte che mostra le categorie di impianti • una parte che mostra le voci di computo relative all’impianto selezionato • una parte di ricapitolazione. Figura 3.7: Componenti del Listino Vendite Figura 3.8: Componenti del Listino Acquisti 30 CAPITOLO 3. CASO DI STUDIO 31 Figura 3.9: Componenti della Home 3.3 Progettazione La (Figura3.3) mostra lo schema E/R della base di dati derivante dalla sua progettazione con “MySQL Workbench”2 . La tabella acquisti contiene voci di materiali dei fornitori, importati da diversi listini (camera di commercio di Modena, . . . ) e che fornisce dati alla finestra Listino Acquisti. La tabella vendite insieme a quella materiali supportano la finestra Listino Vendite, per la memorizzazione di singole voci di computo. Le tabelle progetti e preventivi supportano la fine- Figura 3.10: stra Home per gestire i vari progetti di computo. La finestra Home (Figura3.11) è il punto di partenza dell’intera applicazione, essa è costituita di: • una parte di riepilogo dove è possibile tenere sempre a vista i “totali” delle varie categorie e dell’intero cantiere 2 È uno strumento grafico open source della Oracle per architetti, sviluppatori e DBA. Viene trattato nel ?? CAPITOLO 3. CASO DI STUDIO 32 • una parte relativa alla categoria di impianto. Facendo click con il tasto destro del mouse, all’interno del “Pannello impianti”, si crea una nuova istanza della finestra “Listino Vendite” da cui è possibile costruire la voce di computo desiderata. Figura 3.11: Screenshot della finestra Home La finestra Listino Vendite (Figura3.12) è il cuore del programma. Come visto in precedenza, nell’analisi dei requisiti, essa è formata da: • una parte dedicata alle operazioni di calcolo • una parte dedicata alla descrizione della voce di computo, composta da voci del listino acquisti • una parte di ricapitolazione. Premendo il tasto destro, su una cella vuota del “Pannello materiali”, si crea una nuova istanza della finestra Listino Acquisti, a cui viene passata come argomento il codice CAPITOLO 3. CASO DI STUDIO 33 articolo della voce di preventivo. I valori della riga selezionata nel Listino Acquisti vengono inseriti in un array reso disponibile con il metodo getSelectedMateriale() della classe Materiali; inoltre viene scritto il record nella tabella materiali con la FK codart. Con il metodo setValueAt() si scrive il contenuto dell’array nelle celle del Pannello Materiali. Figura 3.12: Screenshot della finestra Listino Vendite La Figura3.13 mostra la finestra Listino Acquisti. I dati acquisiti dal database vengono renderizzati tramite una jTable3 in cui è possibile filtrarli attraverso il campo “Cerca”. Il testo ottenuto viene inserito in una query che viene passata al db, per recuperare i dati di interesse. Infine in Figura3.14 è riportato un esempio di stampa derivante dall’uso dell’applicazione. I prezzi sono stati volutamente omessi per questioni di privacy. 3 Componente grafico Swing di Java. CAPITOLO 3. CASO DI STUDIO Figura 3.13: Screenshot della finestra Listino Acquisti 34 CAPITOLO 3. CASO DI STUDIO &" "* + , # - (,(, 35 ,, . +* / !" # $! " ! ##.1& +" %& %& ' + 0 ( ) """""""""""" '2 #% ' Figura 3.14: Risultato della stampa di un computo metrico, parte 1 CAPITOLO 3. CASO DI STUDIO 36 + 2 . 2.3 1 ) # $ %$ & ' ( '&$ ! ) *&$ ( ) +% , *& '$ %, & ).% ) - * $) ).43 :; ) *'$&( / . + $ %$ & ' 5 5 5 5 5 ) 1 $ 1 ) '&$ ! " % ) *'$&( # $ %$ & ' ( $* & & * % ) *'$&( # $ %$ & ' ( '&$ ) % %$ & & - & *& $ &)&(( $ '&$ ! ? ! $! + ) *'$&( / 5 $ )) $ &$ 5 * &$ # $ ! ' , $& & ) (%* ($ ! 4% & 1 & & '. 6 %1 %1 ( $ 2%, & ) '&$)9 "> ! - ( ! " " %1 ( "8 $& " ( "+ ! $* " %1 &$& %$ & ' ( '&$ " " @ "$ + ((&*2 1&$ ) 2 ) - ) *'$&( $ * +" + !! 2 &$ & & &*& ! )"+ @" &,, / 5 : & &*& ) & 5 6 '' $ + $ ) &)9 5 1 1 &$* ( ,, 2 & 3 4 5 & & $& 3 4 5 ) '' *& ( & 5 $ (& & ) '$ + $ '&$ %2 # $ 50& %1 '&$ ) % %$ - '&$ ) & *& / ( $ &$& & ) (%* $& '&$ .%& ( * & & &1 9 .1= 3 " ) *' / & $& 484 1 & ) 2 ))9& & %, & '&$ 1 1 & (+ 1 & (+ * % ((& ) & *& ' ( ) ) 5 $ )) $ &$ ' , $& & 5 % $ , & * &$ & & '& "+$ " ! + 7 " ( *& - '&$ $ () " 8 $ * & 3 %2 .3&.1% * $) # $ %$ & ' ( & &$* ( + - '2 40 0 < 0 &1 )% , & +%* & (' $ , & $ ) *2%$& & %2 (&' $ 34 5 $ )) $ ( $ &$& 67 '&$ ) & $& ) $)% $ () *& 5 1 1 (+&$ '&$ &$)& $& ) $)% ).% $&(( 5 +&$$ $ *& '&$ ) & *& & ) $)% ).% ) 5 1 1 (+&$ 67 '&$ &$)& $& ) $)% ( 5 % $ , & * &$ ) (%* . ( ''1 13 %. %$ & ' ( '&$ " " @ "$ + ((&*2 1&$ ) 2 ) - ) *'$&( 5 4 & &*& ) & 5 6 '' $ + $ ) &)9 5 1 1 &$* ( ,, 2 & 3 4 5 & & $& 3 4 5 ) '' *& ( & 5 $ (& & ) '$ + $ '&$ %2 %1 $ * +" + !! 2 &$ & & &*& ! )"+ @" &,, / %1 Figura 3.15: Risultato della stampa di un computo metrico, parte 2 CAPITOLO 3. CASO DI STUDIO # $ ! %$ & ' ( '&$ " " @ "$ + ((&*2 1&$ ) 2 ) - ) *'$&( $ * +" + !! 2 &$ & & &*& 37 ! )"+ @" &,, / 5 6 & &*& ) & 5 6 '' $ + $ ) &)9 5 1 1 &$* ( ,, 2 & 3 4 5 & & $& 3 4 5 ) '' *& ( & 5 $ (& & ) '$ + $ '&$ %2 # $ ! %$ & ' ( '&$ " " @ "$ + ((&*2 1&$ ) 2 ) - ) *'$&( %1 $ * +" + !! 2 &$ & & &*& ! )"+ @" &,, ( / 5 : & &*& ) & 5 6 '' $ + $ ) &)9 5 1 1 &$* ( ,, 2 & 3 4 5 & & $& 3 4 5 ) '' *& ( & 5 $ (& & ) '$ + $ '&$ %2 # $ ! ( %$ & ' ( '&$ " " @ "$ + ((&*2 1&$ ) 2 ) - ) *'$&( " " %$ & ' ( & 8 '&$ &,, " ( %$ & ' ( & 8 '&$ &,, + !! ! )"+ @" 2 ) - ) *'$&( / %1 " 1&$ ) + !! ! )"+ @" 2 ) - ) *'$&( / 5 1 1 &$* ( ,, 2 & 3 4 5 & & $& 3 4 5 ) '' *& ( & 5 $ (& & ) '$ + $ '&$ %2 # $ %$ & ' ( , & .% &*'&$ %$ & ( 23&1 # + ? " $ '&$ "+!D $" * & .? 8 #'&1 # + ? " $ "+!D $" * & # + ? ' + (+ %&4 %1 " 1&$ ) " &13& A 3 ! )"+ @" &,, ( 5 1 1 &$* ( ,, 2 & 3 4 5 & & $& 3 4 5 ) '' *& ( & 5 $ (& & ) '$ + $ '&$ %2 # $ &1 1 $ * +" + !! 2 &$ & & &*& / 5 ; & &*& 6) & 5 6 '' $ + $ ) &)9 5 1 1 &$* ( ,, 2 & 3 4 5 & & $& 3 4 5 ) '' *& ( & 5 $ (& & ) '$ + $ '&$ %2 # $ &1 1 %1 5 5 5 5 < < < %2 " & %1 '&$ &.3& % &.1 * $) 1 '&$ $& &$* '&$ 5? + $ ) $ * , 3& & & & " ? * $* %1 BC * $) +? " BC * $) ? "+ " 0 '&$ 7E $$ '&$ + $ $& ) *'$&( / & ( '&$ ?7 + .> ) $ %2 %1 $& 1 1 $ & 3= 1 1 & &$)& , & ).% 3= $%2 & '&$ '$& &1 ) *' ).% , & ) (( & &( &$ ' .% 9&$* # $ %$ & ' ( +%* $ &( ( & & %1 %1 & ) %1 Figura 3.16: Risultato della stampa di un computo metrico, parte 3 CAPITOLO 3. CASO DI STUDIO 1" ) GG G +" & * - ) *'$&( / '&$ > 38 ) *2%$& & "$ & 1 %1 5 < $ 5 < $ ( & '$ &, & &( &$ &$ ( ) &2 1" GG G +" & * ) *'$&( / ' ( ) 2 ) '&$ > "+ ) G +" " ! " !?! + F 1 %1 5 < 5 < $ $ '$ &, '$ &, # $ %$ & ' ( +%* $ &( ( & & %&4 & &( &$ & &$ '&$ ?7 ' ( ) 2 ' ( ) 2 ) + .> ) ) $ %2 & ) %1 34 & & '. + 2 . 2.3 1 ) # $ %$ & ' ( '&$ *' ! + G + "+ ) & 2 & % % ?* ) %2 %2 ) %. % 40 0 ?7 G + '&$ > ( , & % ) ( % ?+ ?+ H + " + & ( &' ( 2 ) & 50& 4% & 1 2 1 . . 2.3 1 ) 1 . ?G +" " = 3 %. 40 0 # ? " $ '&$ ) % %$ " +? " ! " ! ? ('&(( $& **- & *& $ &)&(( $ '&$ + $* , & & & $& ( *& > $&(( & $& & & > - + > )) *& & & % & ,& *&( )9& @ ) &+ $ & )%) A) *'$&( / 5 %2 5 %2 5 )) $ *& *& $ 6 ** *& $ 4 ** &$ & & $ *& ) 1& $ + $, - * &$ ) (%* # ? " $ '&$ ) % %$ ! ? ('&(( $& -: **- & *& $ & & $& ( *& * (%$ $& + - ) *'$&( / & % - 50& 4% & 1 & & '. 6 %1 $& %1 & % - ' ' ? " $ '&$ ?7 +" * * 8 8 " - '&$ &$ , & ( *& ) *'$&( $ )) $ & * &$ * ' ' # ? " $ " !! ! ) *'$&( $ )) $ # ?7 +" &$)& $& * F .& % " +? " ! " &)&(( $ '&$ + $* , & > $&(( & $& & & > 5 %2 *& $ 4 ** 5 )) $ &$ & & $ *& ) 1& *& $ + $, - * &$ ) (%* '&$ - '&$ & * &$ ( & & '. 6 %1 34 & & '. + F .%& " ( $& " +% )9 ! + $! ( *& )%) ! + - %1 +! $$ & > - %1 34 & & '. F 6 Figura 3.17: Risultato della stampa di un computo metrico, parte 4 CAPITOLO 3. CASO DI STUDIO + 2 . 2.3 1 ) 39 21 %. # =% %&. 40 0 50& 4% & 1 & & '. 6 # $ %$ & ' ( '&$ ?7 G + $ " + 1 54 &I.1 @ ( * $&A- ) % ( &- '&$ + $* , & & & $& $ )9& ).% ) & +$& J + " + " $" G 8 "+ ! & ) *' & & / 54 5 < '% > )) ).% 5 < '% > )) ).% 5 < '% > )) ).% )) 5 < '% > )) ).% 5 < '% > )) ).% 5 < $%2 & $$&( 5 $ )) $ &$ - &$* + & ) ) ) & +$& & +$& & +$& B 1 2 B 2 & B' +$& +$& ) (( & * &$ %1 B C) B 1 $ )& ) (%* # $ %$ & ' ( '&$ ?7 G + $ " + 1 54 &I.1 @ ( * $&A- ) % ( &- '&$ + $* , & & & $& $ )9& ).% ) & +$& J + " + " $" G 8 "+ ! & ) *' & & / 54 5 < '% > )) ).% 5 < '% > )) ).% 5 < '% > )) ).% 2 5 < '% > )) ).% 5 < $%2 & $$&( 5 $ )) $ &$ - &$* + & # $ %$ & ' ( '&$ + $* , & & & $& $ + + 2$ 3 3 1 1 ) ) ) & +$& & +$& & +$& +$& ) (( & * &$ # $ %$ & ' ( '&$ + $* , & & & $& $ + + 2$ '&$ "!!@ %1 &( & ( $&- & &( & ( '&$ "!!@ ) $$&( ) $$&( $& + & 2 + & 2 ).% ) & +$& + & & * &$ %1 ) ((& & ) ) ((& # $ %$ & ' ( '&$ ?7 G + $ " + 1 54 &I.1 @ ( * $&A- ) % ( &- '&$ * G +" " " " !@" !K? ! " * " J+" + " ! " ( !?! + & ) *' & & / 5 < '% > )) 5 $ )) $ &$ - &$* %1 $&- & # $ %$ & ' ( '&$ ?7 G + $ " + 1 54 &I.1 @ ( * $&A- ) % ( &- '&$ * G +" " " " !@" !K? ! "* " $ 7?G +" 8"+" " > &$ & > '' $ *& & ) *' & & / 5 %2 +$& E : ' $ $& ( $ 2%, & $%2 & 5 %2 ) E : ' $ $& ( $ 2%, & $%2 & 54 ) (%* ?7 G + ) $& $ $! ! $ ,, 8+ () $ ) D ! - ) ( % / 5 < '% () $ ) 1 2 5 < '% () $ ) 2 & 5 < '% () $ ) 1 () 2 5 )%$1&- 2$ 9& & $ )) $ ('&) * &$ ) (%* 54 B C) ?7 G + ) $& $ $! ! $ ,, 8+ () $ ) D ! - ) ( % / 5 < '% () $ ) 1 2 5 < '% () $ ) 2 & 5 < '% () $ ) ' )) 5 < '% () $ ) 1 $ )& 5 )%$1&- 2$ 9& & $ )) $ ('&) * &$ ) (%* %1 B 1 2 B2 & B 1 () %1 B 1& ) (%* : Figura 3.18: Risultato della stampa di un computo metrico, parte 5 CAPITOLO 3. CASO DI STUDIO 3 1 ( # $ %$ & ' ( '&$ ?7 G + + 0 0.0 + $* , & & & $& $! ! $ ,, ) * & () $ ) - ) ( % / 5 < '% () $ ) 1& 5 )%$1&- 2$ 9& & $ )) $ ('&) * &$ ) (%* # $ %$ & ' ( 1 $& %( )9 - & '&$ ' &( 7 " + * ! & # $ %$ & ' ( $" " A 2? "+ ) *' & )) '&$ $ 1 $& %( )9 % / ) $& $ '&$ " !?! + + %1 ( $&- & GG = + $" " A "+ ) *' & % 5 * ()& $& * ) * * $) #$ ) () $ ) ( &$& 5(+ & & )$ * 7 7 ) $ (& 51 + (( ' 1 *& )) 40 * & ) '$ + $ L +8 "$" 2 ) - & / (&$ & %1 *%$ ! ' ) GG = + $! ! %1 5 ) ((& () $ ) '' )&$ * ) 5 2 &$ $ &*' *& % * ) 5 (& & 2 ) ' '&( & 51 + (( ' 1 *& # $ A / )) %$ & ' ( '&$ 1 $& %( )9 - & ! ! 5 * ()& $& * ) * * $) #$ (&$ & ) () $ ) ( &$& 5(+ & & )$ * 7 7 ) $ (& *%$ 5) ( (& ' 1 *& 51 + (( ' $& & * & # $ %$ & ' ( 7 +! ! 0 7 ' + * '&$ $! 9 ( ) *' & / 5 * ()& $& * ) * (&$ & ) (( 5 ( ++ & + (( ( ()& 5' & () $ ) ( + )) ! 0 9 7 8+ %1 + !! $ * & !! - * $) #$ $" " % ) '$ + $ )) ( 5 * ()& $& * ) * * $) #$ (&$ & &( &$ 5 ( ++ & ) %2 + &(( 2 & : )* 5' & () $ ) ( &$& # $ %$ & ' ( '&$ 1"+ + $& ) F 2 ) GG = + " " ) *' & ! GG = + ) *' & / %1 $" " * & %1 34 & & '. .1& # 2 .1& . 2.3 1 ) 1" G +" & ) (& ) ** & & & )) &$& !" * ! G +" ! +* %. ) 40 0 $ %++ ) '$&' ( H & >&(&)%, & 1 $ F % 50& 4% & 1 & & '. 6 %1 34 & & '. F ; Figura 3.19: Risultato della stampa di un computo metrico, parte 6 CAPITOLO 3. CASO DI STUDIO ! *'$&( * '&$ '&$ ('&) ,, + $* , & & & '&$& ( '$ &()$ & %& 2 13 %%. #4 ( 1 $ , & % - '&$ >&(&)%, & $& * ,, - ) &$& & $ $ > $ & & & (% & & '&$& $ (' $ & & $ * & ,& 1 $ % * .%& %& %& 3 %. = 3 .& % F # =% %&. F I F 1 . %2 ) 1 , F % .%& F %& .1& # F ) % 2 %# 1 & J F & & '. .3 '43 F " "" * &$ F 224) 21 % F 1. %& %& '2 ) * % 9 41 " K? + J + + "$ "$$ F % "+ " ! = 8 "+ $ < !! + " O +G ! + $$"8+ ! ! < O " +"+G ! +$"8+ "8 + <( O " +"+G ! +$"8+ " " < * +" F " ! ? " $ + " $ " " "$ + " " ? ! + $$"8+ * * " " J "+? ! ? 0 .%& ++ "$"8? ! + $"8?"+ " "8 H " $ "0 8 "GG ! ? 0 " "*+ ? " ! F" F$ + F* ? "" !F! " J + " " ! + "$"+G " ! "+ "F K?"$ ! ! " $ "F $$ ?+ $" + '" "$ "!! $ "8+ " 7 GG G +" $! M NNNNNNNNNNNNNNNNNN ! "+ " NNNNNNNNNNNNNNN 'J"$"!? +" " + Figura 3.20: Risultato della stampa di un computo metrico, parte 7 )) $$& Capitolo 4 L’ambiente di sviluppo Una volta terminata la fase di progettazione ha avuto inizio quella relativa all’implementazione. In questo capitolo verranno trattate le varie tecnologie scelte e i relativi strumenti software utilizzati per la stesura del codice sorgente, durante il periodo di tirocinio, dell’applicazione gestionale. 4.1 Il sistema operativo Una delle numerose attività svolte è stata quella di scegliere una distribuzione Linux, da installare e customizzare ad hoc su di una macchina, dove avrebbe girato il programma gestionale. Tale scelta è ricaduta sulla distro1 Ubuntu Linux. Ubuntu è un sistema operativo GNU Linux nato nel 2004, basato su Debian2 , che si focalizza sull’utente e sulla facilità d’uso. Ubuntu è orientato all’utilizzo de1 2 Abbreviazione di “distribuzione”. È un’altra distribuzione GNU/Linux. 43 CAPITOLO 4. L’AMBIENTE DI SVILUPPO 44 sktop, pone una grande attenzione al supporto hardware, e non necessita di costi di licenza. (1) 4.2 MySQL Un database3 è una collezione di dati gestita da un DBMS. DBMS è l’acronimo di Data Base Management System4 , ovvero un sistema software in grado di gestire collezioni di dati che siano grandi, condivise e persistenti assicurando la loro affidabilità, coerenza e privatezza. Nell’uso comune con il termine Database, si è soliti indicare una pluralità di concetti, ad esempio si indica indifferentemente: un elenco organizzato di dati su un foglio di calcolo, un software applicativo che contiene i dati operativi per la gestione di un Azienda o un DBMS come Oracle o DB2. MySQL un RDBMS (Relational Data Base Management System) ovvero un Sistema per la Gestione di Basi Dati Relazionali. Tale tipologia di DBMS si basa sul modello relazionale che pone le sue basi su due concetti fondamentali: Relazione e Tabella. Tale modello domina la scena da molti anni, esistono però altre tipologie di dbms poco utilizzate ad esempio: a oggetti (OODBMS), gerarchici (alberi) e reticolari (grafi). David Axmark e Micheal “Monty” Widenius, iniziarono a scrivere il codice di MySQL quando erano adolescenti con lo scopo di fare soldi ma non avevano idea di ciò che avrebbero creato. Nel 1995 MySQL divenne Open Source e nel 1996 venne distribuito per la prima volta riscuotendo un forte interesse. Nel giro di pochi mesi centinaia di persone si iscrissero alla mailing list e migliaia furono i download. Fu un ottimo inizio per due giovani e ambiziosi sviluppatori ma ciò non significava ottenere risultati di grande successo. 3 4 in italiano Base di dati. in italiano Sistema di gestione di basi di dati. CAPITOLO 4. L’AMBIENTE DI SVILUPPO 45 La realtà di oggi è che circa il 66% delle aziende del mondo utilizzano o intendono utilizzare MySQL nelle loro applicazioni e alcuni dei siti più popolari sul web, tra cui Google, Wikipedia, Facebook, Yahoo, eBay etc. . . Una delle motivazioni più forti alla base del successo di MySQL coincide con una delle sue caratteristiche principali, lo stesso Axmark svelò in una sessione “Tech Days di Sun Microsystems” nel febbraio del 2008 che già nel 1996 si era cercato di fare un pacchetto che consentisse compilazione e installazione in 15 minuti, l’idea di base doveva essere quella che chi voleva provare MySQL doveva poterlo fare in pochi minuti, e si sarebbe affezionato a MySQL per 10 anni. Un altro punto di forza di MySQL, rivelato al medesimo evento da Axmark, fu la scelta vincente dell’ottimizzare MySQL per il web. Tale scelta ha portato MySQL a dominare il mercato dei database per il web grazie al fatto che il tempo di connessione è più basso rispetto agli altri database tradizionali, infatti un applicazione web necessita di connettersi ad un database molto più spesso di un applicazione tradizionale. A seguire vengono solamente elencate alcune delle caratteristiche fondamentali di MySQL: • un RDBMS basato su architettura Client/Server • supporto di: SubSELECT, Viste, Stored Procedure, Trigger, Eventi, UDF, Unicode, Replicazione, Ricerche full-text, Transazioni, Clustering, Funzioni • architettura a plugin, che permette di implementare una nuova libreria per lo storage dei dati, un nuovo parser Fulltext o funzionalità aggiuntive • è indipendente dalla piattaforma e supporta un gran numero di sistemi e architetture hardware • supporta API per moltissimi linguaggi di programmazione. Per citarne i più usati C/C++, Java, Perl, PHP, Pythom, Ruby, Tcl; inoltre supporta lo standard ODBC. CAPITOLO 4. L’AMBIENTE DI SVILUPPO 46 La grande Community degli utenti costituisce realmente l’arma in più di MySQL, sulla stregua del sistema operativo Linux, i creatori di MySQL sono riusciti a costruire una folta comunità iternazione che contribuisce a favorire la diffusione di MySQL, a scoprire, risolvere e a migliorarlo. MySQL AB è il nome dell’azienda fondata da David Axmark e Monty Widenius che deteneva lo sviluppo di MySQL fino a Gennaio 2008 quando con una maxi acquisizione da un miliardo di dollari Sun Microsystem ne acquisisce la proprietà (http://www.mysql.com/news-and-events/sun-to-acquire-mysql.html). Nell’Aprile del 2009 Oracle con un acquisizione di quasi 8 miliardi di dollari acquisisce SUN Microsystem, e di conseguenza MySQL. Oggi MySQL è il database open source più famoso del mondo, con oltre 11 milioni di installazioni attive (dato 2007) e sessantamila download giornalieri. Molte delle organizzazioni mondiali più grandi e in rapida crescita hanno scelto MySQL per ridurre i tempi e i costi della realizzazione di siti web, sistemi business-critical e software pacchettizzato. (3) 4.3 MySQL Workbench MySQL Workbench è uno strumento di progettazione e modellazione di database visuale, fornito da Sun. Grazie a questo tool, gli sviluppatori e i DBA possono creare nuovi modelli di dati fisici per i database MySQL e modificare quelli esistenti, utilizzando le funzionalità di Reverse/Forward Engineering e di gestione delle modifiche. MySQL Workbench è stato progettato per aumentare la produttività dell’utente e riuscire a concettualizzare, co- municare, generare e gestire i metadati principali dell’azienda, nonché i database ad CAPITOLO 4. L’AMBIENTE DI SVILUPPO 47 Figura 4.1: Interfaccia visuale di MySQL Workbench elevate prestazioni e i datawarehouse. L’applicazione aiuta gli sviluppatori e i DBA a creare visivamente i progetti di database fisici che si trasformeranno poi in database MySQL (Figura4.1). I modelli sono di gran lunga il mezzo migliore e più efficiente per comprendere e creare un database valido e ben funzionante. MySQL Workbench consente agli utenti di accelerare il lavoro utilizzando una serie di funzioni e utility, permette infatti di creare uno o più modelli nell’interfaccia e fornisce varie viste degli oggetti in corso di progettazione (relazioni tra tabelle (chiavi esterne), viste, trigger, stored procedure, funzioni, autorizzazioni per gli oggetti). La funzionalità Forward Engineering di un progetto di database fisico è tra le più utilizzate negli strumenti di modellazione (Figura4.3). Lo strumento può generare CAPITOLO 4. L’AMBIENTE DI SVILUPPO 48 il codice SQL necessario per creare un database fisico su un server target. MySQL Workbench offre questo tipo di utilità, che consente di tradurre un modello di dati visuale rapidamente e semplicemente in un database fisico su un server MySQL target, con il vantaggio che il codice SQL funziona correttamente fin da subito, senza dover più ricorrere al tradizionale processo laborioso che prevede la trascrizione manuale del complesso codice SQL. MySQL Workbench offre anche un’utility di Reverse Engineering (Figura4.3) che crea un collegamento con qualsiasi server MySQL esistente, generando un nuovo modello di dati dell’intero sistema MySQL sorgente (o di parte di esso). Una volta all’interno dello strumento, tutti gli oggetti e le relative relazioni Figura 4.2: Il Forward Engineering possono essere visualizzati, aggiunti e modificati con semplicità. L’utility Synchronization (Figura4.4) mette a confronto un modello di dati e il server MySQL di destinazione, quindi lancia una sincronizzazione tra i due. Utilizzando MySQL Workbench, un DBA o uno sviluppatore prima si collega a un server MySQL, poi lo strumento confronta tutti gli aspetti del modello attualmente utilizzato con il database fisico MySQL. L’utility Synchronization offre una visualizzazione grafica di tutte le differenze rilevate e lascia allo sviluppatore o al DBA la decisione su come procedere. È possibile scegliere fra tre opzioni per ciascuna delle differenze individuate tra un modello e un database fisico: • ignorare le differenze CAPITOLO 4. L’AMBIENTE DI SVILUPPO 49 Figura 4.3: Il Reverse Engineering • sincronizzare il modello con il server del database fisico • sincronizzare il server del database fisico con il modello consente perciò all’utente di procedere su base generale o su singolo oggetto, lasciando al DBA libera scelta. Dopo aver completato la sincronizzazione, il DBA può salvare il modello di MySQL Workbench e conservare le versioni del modello e del database in quel determinato momento.(7) CAPITOLO 4. L’AMBIENTE DI SVILUPPO 50 Figura 4.4: La funzione di sincronizzazione di MySQL Workbench 4.4 Java Per quanto concerne il linguaggio di programmazione è stato scelto Java. Esso appunto è un linguaggio di programmazione orientato agli oggetti, creato da James Gosling e altri ingegneri di Sun Microsystems a partire da ricerche effettuate alla Stanford University agli inizi degli anni Novanta. Nel 1992 nasce il linguaggio Oak (in italiano quercia), prodotto da Sun Microsystems e realizzato da un gruppo di esperti sviluppatori capitanati da James Gosling. Tale nome fu successivamente cambiato in Java a causa di un problema di copyright (il linguaggio di programmazione Oak esisteva già). La sintassi di base del CAPITOLO 4. L’AMBIENTE DI SVILUPPO 51 linguaggio (strutture di controllo, operatori e così via) è stata mantenuta pressoché identica a quella del C++; tuttavia, non sono state introdotte caratteristiche ritenute fonti di una complessità non necessaria a livello di linguaggio e che favoriscono l’introduzione di determinati bug durante la programmazione, come l’aritmetica dei puntatori, l’ereditarietà multipla delle classi, e l’istruzione goto. Per le caratteristiche object-oriented del linguaggio ci si è ispirati al C++ e soprattutto all’Objective C. (1) Figura 4.5: Il linguaggio Java I motivi dunque che hanno portato a scegliere questo linguaggio di programmazione per l’implementazione dell’applicazione gestionale, sono stati dettati dal fatto che il Java soddisfa le seguenti caratteristiche: • è semplice con alte prestazioni • è sicuro e portabile • è orientato agli oggetti • è robusto e dinamico • supporta il multithread • è indipendente dall’architettura. CAPITOLO 4. L’AMBIENTE DI SVILUPPO 4.5 52 Eclipse e Netbeans Eclipse è un ambiente di sviluppo integrato multi-linguaggio e multi-piattaforma. Ideato da un consorzio di grandi società quali Ericsson, HP, IBM, Intel, MontaVista Software, QNX, SAP e Serena Software, chiamato Eclipse Foundation, viene sviluppato da una comunità strutturata sullo stile dell’open source. (1) Eclipse è stato utilizzato per la scrittura del codice di tutte quelle classi che lavorano a livello background (Figura4.6). Figura 4.6: IDE di sviluppo Eclipse NetBeans è un ambiente di sviluppo multi-linguaggio scritto interamente in Java nato nel giugno 2000, scelto dalla Oracle Corporation come IDE ufficiale. (1) Questo IDE è stato utilizzato per la creazione della GUI5 (Graphical User Interface) e di tutte quelle classi che si interfacciano con l’utente (Figura4.7). Prima di poter effettuare la connessione con il database da parte di Netbeans, è stato necessario inserire il 5 Elementi grafici che compongono le finestre. CAPITOLO 4. L’AMBIENTE DI SVILUPPO 53 driver jdbc mysql-connector-java-*-bin.jar6 all’interno del “path” dell’applicazione. Figura 4.7: IDE di sviluppo Netbeans 6 L’asterisco indica la versione del driver, http://www.mysql.it/downloads/connector, previa registrazione. scaricabile dall’indirizzo Capitolo 5 Conclusioni e sviluppi futuri Il lavoro di stage unito a quello di tesi, mi ha permesso di conoscere tutti quegli aspetti, legati al mondo aziendale, relazionati all’attività di progettazione, marcando quelle capacità di problem solving, di cui un ingegnere non può fare a meno per svolgere al meglio la propria professione. L’applicazione realizzata, in definitiva, rispecchia le specifiche richieste, soprattutto per l’organizzazione dei contenuti e la procedura delle operazioni di compilazione delle singole “voci di computo”, della finestra listino vendite, che hanno notevolmente semplificato l’elaborazione del documento, apportando un sostanziale miglioramento in termini di tempo. Il software può comunque essere migliorato aggiungendone funzionalità. Una futura implementazione potrebbe essere un gestore di layout per la stampa, che personalizzi il documento prodotto a seconda se l’appalto di gara, a cui l’azienda partecipa, sia pubblico o privato. 55 Ringraziamenti Si ringrazia il prof. Dragoni per la sua disponibilità e per avermi dato l’opportunità di svolgere un tirocinio esterno. Un grazie all’azienda Monte impianti, che mi ha incentivato e sostenuto nei tre mesi di tirocinio, senza di essa non avrei potuto scrivere questa tesi. Un grazie agli amici della vita d’infanzia, nonché di quella Sannicandrese, in particolare, Enrico, Jacopo, Silvio, Michele ù general, Dino, con cui ho condiviso, fantastiche partite di Poker durante le feste Natalizie e, anche se per pochi giorni, Estati indimenticabili, all’insegna delle partite a beach volley e della spensieratezza. A Marco amico fedele, come dimenticare le battute di pesca che ci hanno costretto a settare la sveglia alle 4.00 del mattino, per arrivare al mare con lo scooter con indosso pigiama, pantaloni, maglione e giubbotto, per difenderci dal pungente freddo invernale. Ai miei fantastici genitori che, con tantissimi sacrifici, anche nei periodi più brutti, hanno “sponsorizzato” il mio non breve periodo di studi, non facendomi mancare mai niente, ma soprattutto hanno saputo credere in me. GRAZIE. 57 Bibliografia [1] Enciclopedia libera online, http://www.wikipedia.it. [2] Informatica gestionale, http://www.informaticagestionale.it. [3] Mysql italia, http://www.mysqlitalia.it. [4] M. Agliata. La direzione dei lavori. Ambiente territorio edilizia urbanistica. Maggioli Editore, 2009. [5] G. Bracchi e G. Motta. Sistemi informativi e imprese. Collana di Informatica. Franco Angeli, 1992. [6] Q.D. Inghirami. I sistemi informativi gestionali. Economia - Monografie. FrancoAngeli, 2005. [7] Oracle. White paper: Data Modeling using MySQL Workbench 5.2, 2011. [8] P.D. Patrone e V. Piras. Contract e project management. Strumenti di programmazione e controlli di commessa edilizia. Alinea, 2007. 59