Appunti della lezione del 8/10/2008 del corso di Basi di dati I - Università del Salento Tecnologie per lo sviluppo di applicazioni La tendenza attuale dell'ingegneria è quella dell'integrazione di componenti differenti provenienti da ambiti diversi. Per realizzare un applicazione informatica completa è necessario mettere insieme competenze, strumenti e tecnologie di ingegneria del software, di basi di dati, di sistemi operativi, ecc. Le tecnologie più diffuse sono suddivisibili in due macro mondi: quello di Microsoft e quello di Java. Le tecnologie Microsoft Visual Studio (attualmente alla versione 2008); SQL Server (attualmente alla versione 2008); .NET (attualmente alla versione 3.5; recentemente affiancato ad Ajax); Office Automation; Il Sistema Operativo. Visual studio Si possono definire tre livelli di esperienza del programmatore: iniziale; intermedio; avanzato. Il tipico ciclo di scrittura del software per chi si trova ad un livello iniziale è: editing del codice; compilazione; esecuzione; debug. Tale processo può essere agevolato e semplificato da applicazioni come Visual Studio. Visual Studio appartiene alla categoria degli ambiente di sviluppo e dunque contiene, oltre ad un editor di testo avanzato, numerosi strumenti di ausilio allo sviluppo ed automatismi vari che agevolano la scrittura del software. Ad esempio, esso consente, attraverso un'unica interfaccia coerente, il debug, il controllo del flusso di esecuzione del programma, ecc. Di solito l'ambiente di sviluppo si adotta nei livelli intermedio e avanzato. SQL Server È il DBMS di Microsoft e fornisce il motore per la gestione dei database. L'interfaccia al DBMS è separata dal server ed è chiamata Management Studio. Management Studio consente di amministrare e gestire in maniera completa il DBMS. Ad esempio consente di creare database, le tabelle, di effettuare il debug, ecc. DB1 Schema dei componenti di SQL Server M DBMS (SQL DB2 DB3 .NET L'approccio comune alla programmazione è di tipo bottom-up: in ogni progetto si riscrive tutto il codice da zero, dalle classi base fondamentali a quelle più avanzate. Un metodo di sviluppo più efficiente prevede la possibilità di integrare nel proprio progetto delle librerie di codice esterne, già pronte e spesso fornite da terzi. Esse svolgono funzioni comuni a diversi programmi e quindi evitano la riscrittura di parti consistenti del software: si ottiene software più comprensibile e manutenibile. Perciò si possono linkare le chiamate del proprio programma a delle librerie esterne. Di solito esse sono di tipo dinamico: il linking con il programma che le richiede avviene a run-time. In Windows si chiamano DLL (Dynamic Link Library). L'evoluzione ulteriore è quella dei framework, come .NET. Essi contengono una serie di classi comuni e riusabili in molte applicazioni. Normalmente infatti le classi e le funzioni sono definite nella funzione main. I framework invece invertono l'approccio: le applicazioni hanno una struttura ben definita con operazioni ricorrenti, e queste sono soddisfatte dai framework. Se ad esempio si deve scrivere un gestionale è necessario avere le classi e i metodi per la creazione di una fattura. In un framework tale codice potrebbe essere già presente, ma con classi e metodi astratti. Il lavoro del programmatore consisterà allora nel completare o ridefinire tali classi adattandole alle proprie esigenze: non sarà costretto a riscrivere tutto da zero. MAIN Application Framework C F Classe Funzione Struttura di un tipico programma in C++ o Java C F Classe Funzione Struttura di un application framework. Le classi e le funzioni sono di tipo astratto Ajax Spesso insieme al framework .NET si adotta la tecnologia Ajax che consente la comunicazione asincorna tra client e server. Modelli di applicazioni web Un tipico programma si dice standalone se è su singolo host ed ha la seguente struttura: Presentazione (User Interface) Logica Apllicativa (Business Rules) Dati Nel modello network ci sono tre possibili configurazioni: client/server (si usa in lan: es. università) three tier (si usa in internet) n-tier (ovvero la suddivisione in n livelli) Client/server Sui client c'è la user interface (UI), sul server c'è invece il DBMS Client 1 Client 2 Client 3 ……… Server I client possono essere definiti: thin client, se il server contiene la business rule e il client contiene la UI; fat client, se nel client c'è la UI e anche la business rule. L'archiettura Three Tier Un altro modello è il cosiddetto modello THREE TIER, in cui abbiamo un server che contiene i dati, un web server che serve per diffondere le pagine web e dei client. Anche in questo caso, a seconda che la logica applicativa sia implementata sul server o sul client, si parlerà rispettivamente di THIN e FAT client. Le pagine web possono essere di tipo statico (ovvero sono definite a “design time” e rimangono uguali nel tempo finché non vengono modificate), e sono scritte tipicamente in HTML, o di tipo dinamico (ovvero contengono dati che variano nel tempo – ad es. l’indicazione di una temperatura), che possono contenere codice scritto in ASP, PHP, JSP, etc. Le pagine di tipo dinamico sono formate da TEMPLATE HTML (detto anche maschera o gabbia editoriale), in cui vengono predisposti gli spazi per i singoli oggetti. Al server web viene affiancato un application server che ha il compito di ottenere i dati e di inserirli nella maschera. A questo punto la pagina diventa HTML puro e può essere trasferita al client. Il modello seguito da .NET e Java è Three Thier (o Four Thier). Client 1 Web Server + Application Server Client 2 Data Server Modello THREE TIER Client 3 ……… Ajax è il codice lato client che consente di aggiornare le pagine web senza dover ricaricare: cambia i contenuti del template senza fare intervenire il web server. Office Automation Una caratteristica delle applicazioni da ufficio che spesso sfugge ai più e quella che essi sono programmabili e dunque possono essere intergrati ad esempio in una architettura client/server. Si può affermare che essi sono simili a dei framework: espongono il proprio modello ad oggetti all'esterno e le loro funzionalità possono essere integrate in altri programmi. Tale operazione è possibile attraverso il sistema ODBC (Open DataBase Connectivity). Un esempio è dato dalla stampaunione di MS Word. Servizi del sistema operativo Il sistema operativo offre molti servizi a volte non conosciuti che offrono ausili all'uso del computer. Alcuni esempi sono la gestione delle immagini e della grafica e il sottosistema di riconoscimento vocale. Esempio di stampa-unione con MS Word utilizzando un database di MS Access La funzionalità di stampa-unione di MS Word permette, tramite ODBC, di collegare Word con un database (in questo caso di MS Access) per inserire dati in un documento “maschera” o “template”. Di seguito vengono riportate brevemente le fasi necessarie ad effettuare una stampa-unione. 1) Si supponga di voler creare delle schede per dei clienti utilizzando MS Word e che i dati di tali clienti siano inseriti in un database creato con MS Access. Per prima cosa si crea un documento di base che servirà come “maschera” (o “template”). Dopo di che si visualizzi la barra degli strumenti stampa-unione se non già visualizzata dal menu Visualizza -> Barre degli strumenti -> Stampa unione (fig. 1). Barra degli strumenti stampa-unione Fig. 1 2) Nella barra degli strumenti stampa-unione fare clic sul pulsante “Impostazioni documento principale” e scegliere il tipo di documento da utilizzare (nel nostro caso “Lettere”) (fig. 2) 3) Nella barra degli strumenti stampa-unione fare clic sul pulsante “Apri origine dati” e selezionare il database dove sono memorizzati i dati, quindi fare clic su “Apri”. Apri origine dati 4) Per inserire un campo nel documento, posizionarsi con il cursore nella posizione dove si desidera inserirlo e fare clic sul pulsante “Inserisci campo unione” nella barra degli strumenti stampa-unione. Selezionare il campo desiderato nella finestra successiva e fare clic su “Inserisci” quindi “Chiudi”. Ripetere tale procedura per tutti i campi che si desiderano inserire. (fig. 3) Fig. 3 5) I campi vengono visualizzati nel documento con il nome del campo racchiuso tra doppie parentesi angolari (« »). È possibile formattare il campo selezionandolo (parentesi angolari comprese) e applicando la formattazione desiderata. Un esempio è in fig. 4. Fig. 4 6) Per visualizzare il risultato della stampa-unione, fare clic sul pulsante “Visualizza dati uniti” nella barra degli strumenti stampa-unione. È possibile visualizzare i vari record spostandosi con i pulsanti “Primo record”, “Record precedente”, “Record successivo” e “Ultimo record” presenti sempre nella barra degli strumenti stampa unione. Visualizza dati uniti Pulsanti di navigazione 7) Un esempio di risultato è riportato in figura 5. La formattazione applicata in precedenza ai nomi dei campi viene applicata automaticamente a tutti i risultati. Fig. 5 È da sottolineare che fino a questo punto il documento è effettivamente collegato al database. Quando viene salvato, invece, documento e database non risultano più collegati. Per eventuali correzioni e aggiunte, scrivere agli autori: Francesco Palermo: <haku at salug dot it> Marco Grazioli: <[email protected]> NB: Non avendo ancora Visual Studio, non ho potuto inserire qualcosa riguardo a quello visto a lezione. Se qualcuno fosse interessato, mi può mandare una e-mail e, non appena ho il programma, vedrò di realizzare un documento simile a quello della stampa-unione per riprendere ciò che abbiamo fatto a lezione. Mi scuso per l’inconveniente. Marco G.