170 likes | 398 Views
Università degli Studi di Modena e Reggio Emilia. Facoltà di Ingegneria – Sede di Modena Corso di Laurea Specialistica in Ingegneria Informatica. Database reverse engineering e porting di applicazioni Access su Oracle: il caso Bosch Rexroth Oil Control S.p.A. Relatore
E N D
Università degli Studi di Modena e Reggio Emilia Facoltà di Ingegneria – Sede di Modena Corso di Laurea Specialistica in Ingegneria Informatica Database reverse engineering e porting di applicazioni Access su Oracle: il caso Bosch Rexroth Oil Control S.p.A. Relatore Prof.ssa Sonia Bergamaschi Tesi di Laurea di Giampiero Miccoli Anno Accademico 2007 – 2008
INDICE • L’azienda e gli Obiettivi dello stage • Il sistema gestionale ERP e i programmi Access • L’accesso al database • Database Reverse Engineering • I programmi realizzati • Sviluppi futuri • Conclusioni
L’AZIENDA • Bosch Rexroth Oil Control S.p.A. è l’azienda leader mondiale nella progettazione, prototipazione e fabbricazione di valvole oleodinamiche, a cartuccia e con collettore, per il mercato del macchinario mobile e dell’impiantistica industriale • I principali stabilimenti produttivi del gruppo sono a Nonantola (sede principale amministrativa), Modena, Pavullo, Vezzano e Reggio Emilia • Lo stage è stato svolto presso il reparto ISY (Information System) di Nonantola
OBIETTIVI DELLO STAGE • Analisi e modifiche di query e programmi richiesti da vari reparti aziendali, principalmente dall’Ufficio commerciale e dalla Logistica • I programmi sono stati sviluppati nel corso degli anni in Microsoft Access ed accedono al database del sistema gestionale ERP Apache • Quindi è stato richiesto di: • Adeguarli alle recenti integrazioni delle divisioni Bosch Rexroth Oil Control • Realizzare soluzioni che permettano di rendere più sicuri gli accessi ai dati • Consolidarli in ambiente database server
L’ACCESSO AL DATABASE • Il sistema gestionale ERP Apache si basa su RDBMS Oracle 10g • I programmi Access: • accedono direttamente ai dati su Oracle • sono delle macro composte da una serie di query a catena che nell’insieme svolgono determinate funzioni per il raggiungimento di uno scopo 5/15
LA MOTIVAZIONE • Ma se funzionano, perché cambiarli? • Ci sono diversi motivi per effettuare ciò • Sono estremamente lenti in fase di esecuzione (una grande mole di dati viene caricata ma mai utilizzata) • I criteri di protezione e accesso ai dati • Cercare di centralizzare i programmi rispetto alle diverse versioni distribuite nei vari uffici/reparti • Allora si deve scegliere una nuova forma per permettere di risolvere i problemi, ma che sia del tutto trasparente all’utente finale. Quindi la necessità di dover riscrivere completamente i programmi. • Ma come fare se non si una nessuna idea di come sono stati realizzati i programmi e di come è strutturato il DB? Qui vengono in aiuto le tecniche e tool di Database Reverse Engineering
DATABASE REVERSE ENGINEERING • Con appositi tool si è potuto ricavare lo schema logico relazionale del DB di Apache, ma non lo schema E/R in quanto le tabelle del DB del sistema gestionale ERP non presentano le foreign key • Quindi prima di tutto si è dovuto effettuare lo schema E/R per poter capire come sono correlati tra loro i dati
DATABASE REVERSE ENGINEERING • Dopo aver ricavato lo schema E/R delle tabelle interessate per ogni programma, sono state effettuate le seguenti azioni: • Analisi di tutte le query che compongono ogni programma • Rivedere la logica di accesso ai dati, eliminando le parti superflue • Riscrittura delle nuove query SQL ottimizzate per il RDBMS Oracle • Test dei risultati ottenuti e confronto con quelli attesi
ESEGUIRE LE QUERY SQL • Per poter facilitare l’esecuzione delle query SQL da parte degli utenti si è realizzato un programma con tecnologia .NET sviluppato in C# che permette di poter eseguire le query SQL • Sono state realizzare due versioni: • la versione amministrativa • la versione utente
ESEGUIRE LE QUERY SQL • Attraverso il programma realizzato in C# gli utenti possono eseguire le query semplicemente cliccando alcuni bottoni e impostando, se necessario, le date del periodo di riferimento • Inoltre è stato realizzato un menù interattivo che ne permette una facile gestione dei dati (copia, filtra, salva, ecc.) • Le query SQL insieme al programma in C# realizzato sostituiscono in pieno le applicazioni Access e sono pienamente personalizzabili • Vantaggi dell’applicazione: • Maggior sicurezza sulla composizione delle query • Eseguire le query direttamente da cartella di rete • Possibilità di riutilizzo del codice per progetti simili
SVILUPPI FUTURI SULLE QUERY • Ma alcuni comandi presenti nella sintassi di Oracle sono differenti su altri DB (“dialetto” PL/SQL). • Quindi se in un futuro si vuole cambiare DB, bisogna modificare le query? Oppure si vogliono utilizzare fonti diverse, ad es. file XML? • Possibili soluzioni: • si utilizzano dei tool che ne permettano il porting dei dati • si creano dei stati intermedi (data middleware interface) • si cambia tecnica di scrittura delle query e di accesso ai dati • Un maggior legame tra linguaggio object-oriented e SQL • Quindi si è voluto dare un possibile sviluppo del lavoro realizzato utilizzando LINQ (Language-Integrated Query)
SVILUPPI FUTURI SULLE QUERY:LINQ (Language-Integrated Query) • LINQ è una delle novità introdotte con il framework .NET 3.5 di Microsoft • Offre una sintassi indipendente dalla natura dei dati (DB, XML, Objects, ecc.) gestendo dinamicamente tabelle, viste e stored-procedure • LINQ to Entities (ADO.NET Entity Framework): interfaccia di interrogazione al DB attraverso lo schema E/R • LINQ to SQL: interfaccia di interrogazione al DB attraverso sintassi LINQ che viene tradotta in “dialetto” SQL • Ma l’unico DB che utilizza LINQ to SQL è SQL Server. Quindi si è cercato di far interagire con il DB Oracle e i programmi C# realizzando l’architettura LINQ to Oracle (dotConnect for Oracle Data Provider, Entity Developer for dotConnect, OraDeveloper Tools realizzati dalla Devart)
CONCLUSIONI • Attraverso la completa riscrittura delle query SQL, solo dopo aver effettuato l’analisi, e la realizzazione del programma in C# si è cercato di risolvere appieno gli obiettivi prefissati ad inizio stage • Quindi si è realizzato un progetto: • Funzionante e subito utilizzabile • Con le protezioni di accesso richieste • Estendibile per altri scopi (interazione file XML, esecuzione automatica sul DB server come programma batch, user identification con LDAP, ecc.) • Inoltre sono state date le principali direttive da seguire per poter continuare il lavoro attraverso LINQ, in particolare è stata implementata la soluzione LINQ to Oracle