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
Il sistema gestionale ERP Apache si basa su RDBMS Oracle 10g 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
I PROGRAMMI ACCESS
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
DATABASE REVERSE ENGINEERING 10/15
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
Vantaggi dell’applicazione: 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)
Quindi si è realizzato un progetto: 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
Grazie per l’attenzione!