119
Universit` a degli Studi di Bologna Facolt ` a di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia di Tesi: Ingegneria del Software Analisi e Riprogettazione di un sistema informativo in ambiente Sybase Tesi di Laurea di: Emanuela Scionti Relatore: Chiar.mo Prof. Paolo Ciancarini Relatore esterno: Lino Bellocchio II Sessione Anno Accademico 2003/2004

Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

  • Upload
    others

  • View
    21

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

Universita degli Studi di Bologna

Facolta di Scienze Matematiche, Fisiche e Naturali

Corso di Laurea in Informatica SpecialisticaMateria di Tesi: Ingegneria del Software

Analisi e Riprogettazione di

un sistema informativo in ambiente Sybase

Tesi di Laurea di:Emanuela Scionti

Relatore:Chiar.mo Prof. Paolo Ciancarini

Relatore esterno:Lino Bellocchio

II SessioneAnno Accademico 2003/2004

Page 2: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia
Page 3: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

Universita degli Studi di Bologna

Facolta di Scienze Matematiche, Fisiche e Naturali

Corso di Laurea in Informatica SpecialisticaMateria di Tesi: Ingegneria del Software

Analisi e Riprogettazione di

un sistema informativo in ambiente Sybase

Tesi di Laurea di:Emanuela Scionti

Relatore:Chiar.mo Prof. Paolo Ciancarini

Relatore esterno:Lino Bellocchio

Parole chiave: PowerBuilder, Sybase

II SessioneAnno Accademico 2003/2004

Page 4: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia
Page 5: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

Alla mia famiglia e a Davide

Page 6: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia
Page 7: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

Indice

1 Introduzione 11.1 Struttura dei capitoli . . . . . . . . . . . . . . . . . . . . . . . 2

2 Panorama del sistema informativo Aimag 52.1 Infrastruttura Tecnologica . . . . . . . . . . . . . . . . . . . . 52.2 Architettura dei dati . . . . . . . . . . . . . . . . . . . . . . . 82.3 Architettura dell’applicazione . . . . . . . . . . . . . . . . . . 10

3 Analisi orientata agli oggetti dell’Applicazione 153.1 Diagrammi dei casi d’uso . . . . . . . . . . . . . . . . . . . . . 153.2 Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163.3 Descrizione sottosistema Utenza . . . . . . . . . . . . . . . . . 20

4 Strumenti utilizzati 294.1 PowerBuilder . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

4.1.1 Caratteristiche principali di PowerBuilder . . . . . . . 294.1.2 Applicazioni PowerBuilder . . . . . . . . . . . . . . . . 31

Eventi PowerBuilder . . . . . . . . . . . . . . . . . . . 324.1.3 Linguaggio PowerScript . . . . . . . . . . . . . . . . . 32

Funzioni PowerScript . . . . . . . . . . . . . . . . . . . 334.1.4 Oggetti PowerBuilder . . . . . . . . . . . . . . . . . . . 33

Oggetto Applicazione . . . . . . . . . . . . . . . . . . . 33Windows . . . . . . . . . . . . . . . . . . . . . . . . . . 34Data Window . . . . . . . . . . . . . . . . . . . . . . . 36Menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37Funzioni Globali . . . . . . . . . . . . . . . . . . . . . 38Interrogazioni . . . . . . . . . . . . . . . . . . . . . . . 38Strutture . . . . . . . . . . . . . . . . . . . . . . . . . 38User Objects . . . . . . . . . . . . . . . . . . . . . . . 39Librerie PowerBuilder . . . . . . . . . . . . . . . . . . 39Progetti . . . . . . . . . . . . . . . . . . . . . . . . . . 40

Page 8: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

ii INDICE

4.1.5 File di inizializzazione . . . . . . . . . . . . . . . . . . 404.1.6 Eredita, incapsulazione e polimorfismo . . . . . . . . . 414.1.7 Oggetto transazionale . . . . . . . . . . . . . . . . . . 424.1.8 Garbage Collection . . . . . . . . . . . . . . . . . . . . 434.1.9 Compilazione . . . . . . . . . . . . . . . . . . . . . . . 444.1.10 Package . . . . . . . . . . . . . . . . . . . . . . . . . . 45

4.2 PowerDesigner . . . . . . . . . . . . . . . . . . . . . . . . . . . 464.2.1 Conceptual Data Model . . . . . . . . . . . . . . . . . 474.2.2 Physical Data Model . . . . . . . . . . . . . . . . . . . 474.2.3 Object-Oriented Model . . . . . . . . . . . . . . . . . . 494.2.4 Business Process Model . . . . . . . . . . . . . . . . . 50

4.3 Visual Expert . . . . . . . . . . . . . . . . . . . . . . . . . . . 504.4 PBDelta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

5 PowerBuilder Fondation Class 575.1 PowerBuilder Fondation Class Library . . . . . . . . . . . . . 57

5.1.1 Librerie ed Oggetti PFC . . . . . . . . . . . . . . . . . 575.1.2 Come PFC utilizza il livello estensione . . . . . . . . . 59

Scegliere una strategia per l’utilizzo di un livello esten-sione . . . . . . . . . . . . . . . . . . . . . . . 60

5.1.3 Componenti PFC . . . . . . . . . . . . . . . . . . . . . 635.1.4 Servizi forniti . . . . . . . . . . . . . . . . . . . . . . . 635.1.5 Message Router . . . . . . . . . . . . . . . . . . . . . . 67

5.2 Analisi tabelle PFC . . . . . . . . . . . . . . . . . . . . . . . . 685.3 Intervento sulle PFC . . . . . . . . . . . . . . . . . . . . . . . 68

5.3.1 Modifiche PFC5Base - PFC5Aimag . . . . . . . . . . . 735.3.2 Modifiche PFC5Aimag - PFC7 . . . . . . . . . . . . . . 735.3.3 Oggetti PFC7 che hanno subito modifiche . . . . . . . 73

pfc n cst dwcache . . . . . . . . . . . . . . . . . . . . . 73pfc n cst dwsrv dropdownsearch . . . . . . . . . . . . . 73pfc n cst dwsrv multitable . . . . . . . . . . . . . . . . 74pfc n cst dwsrv querymode . . . . . . . . . . . . . . . 74pfc w debuglog . . . . . . . . . . . . . . . . . . . . . . 74pfc w dwdebugger . . . . . . . . . . . . . . . . . . . . . 74

6 Riorganizzazione Librerie, Window e Menu Aimag 756.1 Riorganizzazione Librerie Aimag . . . . . . . . . . . . . . . . . 756.2 Riorganizzazione Menu Aimag . . . . . . . . . . . . . . . . . . 75

6.2.1 Modifiche Menu M APPLICAZIONI . . . . . . . . . . 776.3 Sistemazione Window ereditate dalle PFC . . . . . . . . . . . 786.4 Sistemazione Window non ereditate dalle PFC . . . . . . . . . 78

Page 9: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

INDICE iii

6.5 Creazione/Modifica Oggetti Cuscinetto . . . . . . . . . . . . . 786.5.1 uo ds generale - uo dw generale . . . . . . . . . . . . . 796.5.2 uo checkbox generale -

uo radiobutton generale - uo ddlb generale -uo ddplb generale - uo st generale . . . . . . . . . . . . 79

6.5.3 uo treeview generale . . . . . . . . . . . . . . . . . . . 806.5.4 w gen base . . . . . . . . . . . . . . . . . . . . . . . . 80

6.6 Creazione Oggetti Estensione . . . . . . . . . . . . . . . . . . 806.6.1 corp n cst tvattrib . . . . . . . . . . . . . . . . . . . . 816.6.2 corp u cbx, corp u ddlb, corp u ddlbp,

corp u dw, corp u gb, corp u rb, corp u st . . . . . . . 816.6.3 corp w master . . . . . . . . . . . . . . . . . . . . . . . 816.6.4 corp w sheet . . . . . . . . . . . . . . . . . . . . . . . . 816.6.5 corp w statusbar . . . . . . . . . . . . . . . . . . . . . 81

7 Migrazione 837.1 Informazioni sulla Migrazione . . . . . . . . . . . . . . . . . . 83

7.1.1 Parole riservate . . . . . . . . . . . . . . . . . . . . . . 837.1.2 L’oggetto transport e obsoleto . . . . . . . . . . . . . . 837.1.3 Cambiamenti dell’evento SystemError . . . . . . . . . . 847.1.4 Cambiamenti della funzione IsValid . . . . . . . . . . . 84

7.2 Migration Assistant . . . . . . . . . . . . . . . . . . . . . . . . 857.3 Migrazione dell’applicazione . . . . . . . . . . . . . . . . . . . 857.4 Nuove funzionalita PowerBuilder 9.0 . . . . . . . . . . . . . . 93

7.4.1 Accessibilita a nuovi tipi utilizzabili per implementazionifuture . . . . . . . . . . . . . . . . . . . . . . . . . . . 93

7.5 Nuove funzionalita PowerBuilder 9.1 . . . . . . . . . . . . . . 947.5.1 Nuove voci di menu nei painters SQL Select e Query . 947.5.2 Nuovo formato Excel per salvare i dati . . . . . . . . . 947.5.3 Nuovo DBParm: PBNewSPInvocation . . . . . . . . . 947.5.4 Comportamento cambiato per la voce di menu Extend

Ancestor Script . . . . . . . . . . . . . . . . . . . . . . 947.5.5 Menu e controlli ereditati non possono essere copiati . 95

8 Utilizzo dei servizi PFC e di Oracle PL/SQL 978.1 Gestione degli operatori . . . . . . . . . . . . . . . . . . . . . 978.2 Modifica password e scadenza . . . . . . . . . . . . . . . . . . 1008.3 Dettaglio Contrattuale . . . . . . . . . . . . . . . . . . . . . . 101

9 Conclusioni 1039.1 Lavori futuri . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104

Page 10: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

iv INDICE

Bibliografia 107

Page 11: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

Capitolo 1

Introduzione

Lo scopo di questa tesi e di analizzare, riprogettare parte del sistema in-formativo gestionale utilizzato in Aimag [Aim01] ed esaminare i problemiriscontrati in seguito alla migrazione dell’applicazione.

Aimag Spa e una societa per azioni con sede a Mirandola che gestiscei servizi di pubblica utilita per 14 Comuni dell’area nord della provinciadi Modena e per 7 comuni nell’Oltrepo mantovano. Aimag gestisce il ciclointegrato dell’acqua (captazione, distribuzione, depurazione, fognature), ilservizio di distribuzione del gas metano, i servizi di igiene ambientale e ilservizio di pubblica illuminazione. La distribuzione dell’acqua coinvolge circa57.000 utenti, mentre quella del gas circa 76.800 utenti. E costituita da tredicisedi operative collegate alla rete aziendale attraverso una rete geografica edha un fatturato annuo di circa 110 milioni di euro.

L’applicazione gestionale e sviluppata in ambiente di programmazione adoggetti Sybase [Syb04]. Sybase Inc. e una delle principali societa di soft-ware indipendenti del mondo ed e stata fondata nel 1984 a Emeryville inCalifornia. Sybase offre alle aziende un’infrastruttura software completa cheintegra tecnologie e sistemi eterogenei. La sua gamma di prodotti e soluzionicomprende: database, application server, piattaforme per i portali, soluzionimobile e wireless, tool di sviluppo, una serie di soluzioni middleware perl’integrazione tra e con ambienti legacy, software pacchettizzato per il datawarehouse e la business intelligence. La tecnologia Sybase permette il designe lo sviluppo di applicazioni aziendali (client/server, Web e n-tier), un’effi-cace integrazione ”enterprise-wide” che coinvolge i sistemi di back-office, ipiu diffusi pacchetti Enterprice Resource Planning (Erp) 1, Customer Rela-tionship Management (CRM) 2 ed e-business, oltre a tutte le applicazioni

1Sistemi informativi integrati2Strategia di business focalizzata sulla gestione della relazione con il cliente. La sua

grande efficacia deriva dall’integrazione delle componenti aziendali di interazione con il

Page 12: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

2 Introduzione

legacy presenti in azienda. Il tutto nel quadro di un’affidabile e funzionaleinfrastruttura per l’e-business, la piattaforma per i portali Sybase EnterprisePortal (EP).Cardine della strategia Sybase e lo sviluppo di soluzioni verticali end-to-endper i mercati finanziari e delle telecomunicazioni. Nel 2000, Sybase ha creato”Financial Fusion Inc”, una consociata dedicata alle soluzioni di e-financee middleware per le banche e i mercati di capitali. L’offerta per il mondodella Pubblica Amministrazione ruota attorno al concetto di portale integra-to della nuova generazione e assicura l’integrazione tra sistemi e applicazionidifferenti e l’accesso ”universale” e personalizzabile alle informazioni. Sybasee presente in Italia dal 1993 e ha sede a Milano ed una filiale a Roma.

1.1 Struttura dei capitoli

Viene esposta in seguito l’organizzazione dei capitoli.

Nel capitolo 2 viene effettuata un’analisi del panorama del sistema in-formativo Aimag, analizzando l’infrastruttura tecnologica, l’architettura deidati e dell’applicazione.

Nel capitolo 3 viene analizzata l’applicazione orientata agli oggetti at-traverso diagrammi UML.

Nel capitolo 4, vengono descritti tutti gli strumenti utilizzati per la rea-lizzazione della tesi quali PowerBuilder, PowerDesigner, Visual Expert e PB-DeltaPowerBuilder e PowerDesigner sono prodotti del gruppo Sybase.PowerBuilder fornisce tools di sviluppo client/server, distribuiti e applicazioniInternet. Permette di eseguire applicazioni su piu piattaforme e di intera-gire con vari database. Ha un implementazione orientata ad oggetti e generaHTML e Javascript per mostrare le DataWindow su web e applicare cam-biamenti al database dal web.PowerDesigner fornisce tools per modellare sia i sistemi software (attraversomodelli Unified Modeling Language) che la struttura di database.Visual Expert e un prodotto del gruppo Novalys che analizza il codice, i datie i commenti di applicazioni sviluppate in PowerBuilder.PBDelta e un utility progettata per trovare le differenze tra versioni di codicesorgente di applicazioni.

Nel capitolo 5, vengono descritte le PowerBuilder Fondation Class e comesono state utilizzate in Aimag.

cliente (Collaborative CRM) con quelle di front office e di back office (Operational CRM)e con quelle di business intelligence (Analytical CRM).

Page 13: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

1.1 Struttura dei capitoli 3

Nel capitolo 6, viene trattata la riorganizzazione delle Librerie, delleWindow e dei Menu Aimag.

Nel capitolo 7, viene presentata la migrazione dell’applicazione Aimagdalla versione 7 alla versione 9 di PowerBuilder.

Nel capitolo 8, viene descritto come utilizzando i servizi PFC e comandiOracle PL/SQL sono state create e riprogrammate piccole parti del sistemainformativo Aimag.

Infine, il capitolo 9 riassume lo stato attuale dell’applicazione Aimag; perconcludere, vengono presentati i possibili sviluppi futuri.

Page 14: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

4 Introduzione

Page 15: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

Capitolo 2

Panorama del sistemainformativo Aimag

Nel contesto degli obiettivi aziendali, si devono analizzare e disegnare trediverse architetture:

- Infrastruttura tecnologica

- Architettura dei dati

- Architettura delle applicazioni

2.1 Infrastruttura Tecnologica

L’infrastruttura tecnologica [S.P00] offre le fondamenta alle architetture deidati e delle applicazioni. Essa comprende hardware e software su cui poggianole applicazioni e i dati; in particolare comprende computer, sistemi operativie reti, dispositivi telematici e di memoria, ma anche l’architettura in cui sonoimplementate queste tecnologie.

Aimag S.p.A. [BT03] e una multitutility che gestisce i servizi a rete(acqua, gas, illuminazione pubblica, ambiente) in una ventina di comuni delleprovince di Modena e Mantova. E costituita da 13 sedi operative collegatealla rete aziendale attraverso una rete geografica basata sulle tecnologie HD-SL 1 e Wireless. La rete privata virtuale (VPN) rappresenta per l’aziendail mezzo piu economico ed affidabile per estendere i collegamenti sicuri aipropri utenti remoti, siano essi dipendenti ad alta mobilita o sedi distaccate.

1il servizio di accesso a larga banda ad alta qualita che rappresenta la valida alternativaai servizi di connettivita dedicata, garantendo prestazioni elevate e bassi tempi di latenza.

Page 16: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

6 Panorama del sistema informativo Aimag

L’architettura Aimag prevede un server farm centrale basato su circa 12server Windows 2000 (DBMS Oracle, DBMS SQL Server, Terminal Server,Application Server, File server e Printer server) e un server di riferimentoper ognuna delle sedi remote principali. I server svolgono un duplice ruolo:da un lato aggiornano e richiedono i dati gestiti da due mainframe, dall’altrohanno un ruolo chiave nella comunicazione fra i PC degli utenti. I main-frame fungono da deposito dei dati aziendali, in uno denominato alfa e pre-sente il database di produzione (Gespa), l’altro denominato beta contiene tredatabase di prova (Gespa1, Gespa2, Gespa3). I client che sono collegati allarete sono circa 240 e la connessione al server avviene con un collegamento di100Mb (vedi fig 2.1). La tecnica utilizzata sulla rete aziendale e Server LoadBalancing. Questo metodo [Bel03] consiste nel distribuire il traffico tra i di-versi server della farm (detti anche real server) in modo trasparente ai client,i quali ”vedono” un unico server virtuale. In sostanza, alla server farm sonoassociati un unico indirizzo Ip e un’unica porta Tcp. Il server load balancingassocia ogni nuova connessione Tcp a un server specifico, tramite appositialgoritmi, e ridirige verso lo stesso server tutti i pacchetti Ip appartenentialla stessa connessione. Gli stessi dispositivi sono impiegati per distribuireil carico fra i firewall, elementi che frenano le reti. Esistono due tipologie diapparati: content-unaware, o switch di livello 4, e content-aware, o switchdi livello 7 (utilizzata attualmente in Aimag). Ovviamente, piu si va in altocon i livelli Osi, piu aumenta la complessita, il costo e le prestazioni. Nelprimo caso l’apparato non ha nessuna consapevolezza del contenuto informa-tivo della comunicazione in corso. Cio richiede che tutti i server della farmabbiano lo stesso contenuto, perche devono essere in grado di rispondere aqualunque tipo di richiesta. Nel caso del content-aware, al contrario, il serverload balancer diventa egli stesso il punto di terminazione della connessioneTcp verso i client. Deve dunque essere in grado di gestire la connessioneper tutta la durata. Una volta stabilita la connessione, l’apparato decide einstrada verso il contenuto richiesto. Le server farm vengono suddivise inbase al contenuto del sito, e il load balancer indirizza le chiamate al serverappropriato: questo introduce una complessita notevole.

La presenza del File server [S.P00] permette ai client di richiedere speci-fici record da un file. Il server trasmette al client, tramite la rete, i recordrichiesti.I Database Server permettono ai client di inviare al server richieste SQL(Structured Query Language). Le richieste attraversano la rete in forma dimessaggi, il server elabora le richieste, estrae le informazioni e rispedisce alclient solo i risultati.Il Windows Terminal Server consente agli amministratori di installare le ap-plicazioni una sola volta sul Terminal Server e fornire a tutti i client Ter-

Page 17: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

2.1 Infrastruttura Tecnologica 7

Figura 2.1: Struttura Client/Server di Aimag.

Page 18: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

8 Panorama del sistema informativo Aimag

minal Server connessi un accesso immediato alle applicazioni piu recenti.Una delle aree di maggiore interesse del Terminal Server e quella relativaalle prestazioni del protocollo RDP (Remote Display Protocol) 2. Molti deimiglioramenti apportati alla procedura di caching, all’utilizzo dei pacchetti,alle dimensioni dei frame e cosı via hanno fornito un significativo incrementodelle prestazioni nel processo di sviluppo. L’azienda ha deciso per questodi installare applicazioni terminalizzate non solo nelle sedi remote, ma an-che nella sede principale. Ancora migliori prestazioni (tra aggiornamento delsoftware e manutenzione hardware) si sono ottenuti utilizzando la soluzioneCitrix Metaframe.

2.2 Architettura dei dati

L’architettura dei dati [S.P00] forma un quadro di riferimento per le esigenzeinformative di un’azienda o di una funzione aziendale. Il gestionale utilizzacontinuamente i dati contenuti nel database. Per questo motivo la proget-tazione dei dati e un aspetto dominante. Per utilizzare al meglio le capacitadi un database relazionale (RDBMS) o orientato agli oggetti (OODBMS) laprogettazione dei dati assume piu importanza nelle applicazioni client/serverche nelle applicazioni tradizionali. Il database utilizzato in Aimag e Oracleversione 8.0.0.6. Oracle e un sistema complesso [BDMD03] costituito da unsoftware in grado di gestire un database relazionale in base a richieste ef-fettuate nel linguaggio SQL (Structured Query Language). In altre paroleOracle e l’ insieme dei seguenti componenti:

- un database relazionale

- un linguaggio SQL (un linguaggio di quarta generazione per l’accessoai dati)

- un insieme di programmi di gestione del database (il Kernel ed i Tool).

Il Kernel e il motore del sistema, e un software di notevoli dimensioni cheorganizza la definizione e la memorizzazione dei dati, controlla e limita l’ac-cesso ai dati, permette il backup e il recovery dei dati e interpreta i linguaggiSQL e PL/SQL. I Tool sono strumenti in grado di offrire vari servizi:

2Questo protocollo rappresenta uno dei componenti principali di Terminal Server inquanto consente le comunicazioni sulla rete tra un client e Terminal Server. Progettato inbase al protocollo International Telecommunications Union (ITU), RDP e un protocollo apiu canali per ambienti aziendali ad alta larghezza di banda che puo supportare tre livellidi crittografia.

Page 19: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

2.2 Architettura dei dati 9

- SQL*DBA consente di eseguire le operazioni di amministrazione deldatabase (e utilizzato anche il server manager)

- Export scarica in un file la definizione della struttura e i dati deldatabase

- Import carica nel database i dati letti da un file generato con Export

- SQL*Loader carica nel database i dati letti da un file ASCI

- SQL*Net consente la comunicazione, attraverso la rete, di databaseOracle residenti su server e applicazioni residenti su client

- SQL*Plus consente di eseguire statement SQL e blocchi PL/SQL, con-sente di formattare, registrare e stampare il risultato delle query, con-sente di vedere le definizioni delle colonne di ogni tabella

- SQL*Forms consente lo sviluppo di applicazioni complesse, consente diprogrammare ad oggetti e di usare il PL/SQL, consente la produzionerapida di maschere di default per la manipolazione dei dati, consentela generazione di menu per il controllo e l’esecuzione di applicazioni

- SQL*ReportWriter consente di generare report complessi

- Precompilers consentono di inserire statement SQL all’interno di pro-grammi scritti in linguaggi di terza generazione

ORACLE Server e dotato del meccanismo di Two-phase Commit. Tale mec-canismo consente l’esecuzione di operazioni di manipolazione che coinvolgonodue o piu database residenti su nodi diversi della rete (transazione distribui-ta). Oracle garantisce un efficiente supporto della multiutenza e cioe la pos-sibilita, da parte di piu utenti, di condividere i dati con la sicurezza dellaconsistenza in lettura ottenuta senza sacrificare le qualita delle performance.Il lock a livello di riga consente l’aggiornamento concorrente di record diversidella stessa tabella da parte di processi utente differenti.

La consistenza in lettura [ACPT99] permette di leggere i dati in uno statoimmutato per tutta la durata della lettura stessa, nonostante le operazioni dimodifica che possono aver luogo su quei dati. La sicurezza dei dati e garanti-ta dalla creazione di utenti Oracle con precisi privilegi, ruoli e profili. Oracleconsente di far uso di strumenti di ottimizzazione in grado di migliorare leperformance. E possibile una vera e propria metodologia di tuning che miriad ottimizzare tanto gli statement SQL quanto il consumo da parte di Ora-cle di risorse di sistema (memoria, i/o). Per l’ottimizzazione degli statementSQL assume importanza il Query Optimizer, un modulo del kernel al quale

Page 20: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

10 Panorama del sistema informativo Aimag

spetta il compito di decidere il piano di esecuzione di uno statement. ORA-CLE permette di scegliere tra un approccio Rule based (basato su regolesintattiche) ed un approccio Cost based (basato sulla valutazione dei costidi accesso ai dati valutati basandosi sulla dimensione delle tabelle e la selet-tivita delle condizioni). ORACLE server supporta sia l’integrita dichiarativache l’integrita procedurale. L’integrita dichiarativa consiste nel controllarel’integrita dei dati senza scrivere a questo scopo programmi, ma definendo di-rettamente nello statement di creazione della tabella dei vincoli (i constraint)che vengono processati in caso di inserimento, cancellazione o modifica deidati. L’integrita procedurale si realizza invece tramite comandi PL/SQLmemorizzati sotto forma di trigger di database associati alle tabelle. Essiscattano compiendo un’operazione o un controllo ogni volta che le tabelle inquestione vengono modificate.

Il database relazionale e costituito da 602 tabelle, di cui 63 generali, 277riguardanti il sottosistema utenza, 81 riguardanti il sottosistema pratiche, 52il sottosistema contabilita generale, 40 il sottosistema contabilita industriale,36 il sottosistema magazzino, 43 il sottosistema acquisti e 10 il sottosistemacontenzioso. Mi sono concentrata sull’analisi del sottosistema utenza, mag-giormante utilizzato in Aimag, e ho generato il phisical data model (vedi par.4.2.2) grazie al quale ho potuto osservare le relazioni fra le varie tabelle.

2.3 Architettura dell’applicazione

L’architettura dell’applicazione [S.P00] e costituita dagli elementi di un si-stema che trasformano gli oggetti dell’architettura dei dati per scopi definitidall’azienda.

Anche in Aimag, come in molte altre aziende simili, l’applicazione diriferimento [BT03] e il gestionale che viene utilizzato in quasi tutti gli ufficie in alcuni casi (contabilita, commerciale, magazzino) e il programma diriferimento.

L’approccio di un’applicazione tradizionale client/server (come quella uti-lizzata in Aimag) e di eseguire l’interfaccia utente e i processi logici sui cliente utilizzare il server per fornire l’accesso ai dati come illustrato in fig 2.2.Per applicazioni medio-piccole che vengono utilizzate non da molte personein un organizzazione, questo e spesso molto efficiente per l’implementazione,specialmente se non si progetta di modificare l’applicazione o l’ambiente incui viene eseguita. Lo sviluppo di applicazioni utilizzando questo approccioha i seguenti svantaggi:

- Il mantenimento e difficile. Quando processi logici e interfaccia utentesono posizionati in segmenti di codice monolitico, un cambiamento di

Page 21: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

2.3 Architettura dell’applicazione 11

Client

Interfaccia +

Processi Logici

Database Server

Database

Figura 2.2: Struttura applicazione tradizionale.

qualcosa spesso richiede la riprogettazione di qualcos’altro. Qualchevolta trovare il codice che deve essere modificato e difficile.

- Il riutilizzo di componenti/processi logici e difficile. Le regole dei pro-cessi sono una parte importante di ogni organizzazione e loro ven-gono applicate unilateralmente e in modo consistente. Comunque, conquesto approccio, la definizione e l’implementazione di regole deve ne-cessariamente avvenire ogni volta che un’applicazione viene progettata.

- Performance limitate. Quando l’interfaccia e i processi logici ven-gono eseguiti su un client, sara limitata la potenza computazione delclient. Non ci sono modi di aumentare l’efficienza computazionale diun’applicazione.

- La scalabilita e limitata. Visto che ogni client comunica direttamentecol database ed esiste un limite sul numero di interazioni simultaneeche un database puo supportare, e probabile che verra presto superatoil limite sul numero di utenti che un’applicazione supporta.

Per definizione, le applicazioni tradizionali client/server non possono essereusate in ambienti computazionali distribuiti. Se si vuole progettare, imple-mentare, e mantenere complesse applicazioni che vengono eseguite in ambien-ti computazionali eterogenei si necessita di separare i livelli logici. Questaarchitettura dell’applicazione e partizionata in modo che il codice per ognu-no dei livelli sia indipendente dagli altri. Con questo tipo di architettura,ogni livello logico e responsabile per specifiche azioni. I livelli possono comu-nicare con ogni altro e passare dati e richieste, ma nessun livello necessitadi conoscere come gli altri implementano le richieste. I livelli necessitanosolo di conoscere che cosa gli altri processi si aspettano come input e cosaloro restituiscono. L’approccio partizionato fornisce i seguenti significativivantaggi:

- Applicazioni flessibili. Per esempio il cambiamento di una regola deiprocessi non richiedera un cambiamento dell’interfaccia.

Page 22: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

12 Panorama del sistema informativo Aimag

Client

Interfaccia

Database Server

Database

Accesso ai dati

Processi logici

Figura 2.3: Approccio a due livelli

- Permette di riutilizzare componenti dell’applicazione. Per esempio lostesso processo logico puo essere applicato a piu finestre.

- Si presta bene a sforzi sviluppativi di gruppo. Per esempio l’interfacciautente puo essere utilizzata anche se non si e a conoscenza di come ildatabase e organizzato. In aggiunta, la natura modulare incoraggia ilavori di gruppo.

- Permette di distribuire le parti di un’applicazione su macchine e/o lo-cazioni che sono le piu appropriate. Questo puo molto migliorare sia lascalabilita che la performance.

Un’architettura a livelli fornisce un framework che puo facilmente essere ap-plicato a un ambiente computazionale distribuito, che permette ai livelli (oanche ai componenti al loro interno) di poter essere eseguiti su macchineseparate. In un ambiente distribuito, i clients non necessitano di conosceredove un oggetto risiede o anche il loro ambiente operativo. Le applicazionidistribuite orientate ad oggetti possono cosı essere dinamiche. Una volta chee stata partizionata un’applicazione in livelli logici, si puo iniziare a pensareall’implementazione fisica dell’applicazione, cioe come voler distribuire questilivelli su una rete. Il tipo piu semplice di architettura e di tipo Client/Servera due livelli raffigurato in fig 2.3. L’interfaccia e i processi logici vengono ese-guiti su client, mentre l’accesso ai dati e il recupero dei dati viene eseguitosu un database server. Nonostante questo approccio sia facile da mantenere,ha degli svantaggi quali performance e scalabilita. Il client viene sottopo-sto a molte richieste e il traffico di rete puo essere molto alto, in quanto ogniclient deve accordarsi direttamente con il database server centrale. La cresci-ta del numero di utenti puo portare ad ingorghi sul database. Il tempo haprovato che questo approccio non ha ancora il potere di flessibilita necessarioper maneggiare grandi applicazioni. Per risolvere questi problemi puo essereusato l’approccio a tre livelli, a cui Aimag pensa di mirare in futuro, il qualelocalizza un’altro server tra gli utenti e il database. Questo Application ser-ver puo gestire sia il traffico di rete e caricare i dati sul database server in

Page 23: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

2.3 Architettura dell’applicazione 13

Application Server Database Server

Database

Accesso ai dati

Processi logici

Client

Interfaccia

Figura 2.4: Approccio a tre livelli.

modo piu efficiente che con l’approccio a due livelli rappresentato in fig 2.4.Come l’approccio a due livelli, l’accesso ai dati e i processi sono maneggiatidal database server. Ci sono diversi vantaggi da questo approccio:

- il caricamento dei dati puo essere eseguito su una macchina che puomaneggiare piu efficacemente i dati.

- Le risorse condivise possono essere centralizzate.

- Le interfacce client non sono legate fortemente al singolo ambiente.

Mentre l’interfaccia puo comunicare con i processi logici attraverso l’appli-cation server, l’ambiente client puo essere richiesto da Windows e/o da Webbrowser.

Page 24: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

14 Panorama del sistema informativo Aimag

Page 25: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

Capitolo 3

Analisi orientata agli oggettidell’Applicazione

L’applicazione e utilizzata in quasi tutti gli uffici in Aimag ed e spesso il pro-gramma di riferimento. Attraverso i diagrammi dei casi d’uso e dei package inquesto capitolo si cerca di far comprendere l’organizzazione dell’applicazione.

3.1 Diagrammi dei casi d’uso

Aimag e suddivisa in vari settori: gestione utenza, contabilita, servizi tecnici,magazzino e CED. Ognuno di questi settori accede all’applicazione con fun-zionalita differenti. Il caso d’uso (fig 3.1) mostra le funzionalita consentite aitre settori gestione utenza, contabilita e servizi tecnici. Gli attori coinvoltisono nove: amministrazione clienti, back-office, front-end, amministrazionefinanza e controllo, servizi tecnici, cartografia, progetto e costruzioni, reti econsorzio smaltimenti rifiuti.Il settore gestione utenza e rappresentato dagli attori amministrazione clien-ti, back-office e front-end, il settore servizi tecnici e rappresentato dagli at-tori servizi tecnici, cartografia, progetto e costruzioni, reti, mentre il settorecontabilita e rappresentato dall’attore amministrazione finanza e controllo.L’attore front-end rappresenta il ruolo interpretato dal dipendente Aimagche e allo sportello, cioe l’addetto al ricevimento degli utenti che si occupadi effettuare nuovi contratti di fornitura, disdire, subentrare un contratto odare semplicemente informazioni su contratti, bollette, letture e fatturazioni(funzionalita denotate con il termine Utenza User).L’attore back-end rappresenta il ruolo del dipendente al retro sportello chesi occupa di gestire i piani delle letture e controllare le fatturazioni (UtenzaManager).

Page 26: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

16 Analisi orientata agli oggetti dell’Applicazione

L’attore amministrazione clienti puo svolgere tutte le funzionalita consentiteall’attore front-end e back-office e si occupa inoltre di gestire le pratiche, ilcontenzioso e parte della contabilita generale.L’attore amministrazione controllo e finanza gestisce sia la contabilita gene-rale (gestione pagamenti, cespiti, solleciti, contabilita utenti e fornitori ...)che industriale (gestione commesse, movimenti, periodi contabili, criteri diaggregazione ...).L’attore servizi tecnici (a cui fanno parte gli attori cartografia, progetto ecostruzioni, reti) accede a parte della contabilita industriale e alle funzion-alita dell’Utenza User. L’attore consorzio smaltimento rifiuti non rappresentaun settore dell’azienda, ma un consorzio esterno all’azienda che ha il permes-so di accedere ad alcune funzionalita del gestionale Aimag quali la contabilitaindustriale e l’utenza user.

Il caso d’uso in fig 3.2 rappresenta le funzionalita del settore magazzi-no. Gli attori coinvolti in questo caso sono due: gestore magazzino e gestoreacquisti. L’attore gestore del magazzino puo gestire l’anagrafica dei materialidel magazzino (funzionalita magazzino), ma puo anche controllare le movi-mentazioni, gli ordini (funzionalita Acquisti User). L’attore gestore acquistioltre alle funzionalita Acquisti User puo gestire i fornitori, richiedere acquisti,gestire delibere e clausule (funzionalita Acquisti Manager).

Il caso d’uso in fig 3.3 rappresenta le funzionalita del ced (unico attore)che comprendono le funzionalita di tutti gli attori e altre funzionalita aggiun-tive quali la gestione delle parametrizzazioni, dell’ambiente operativo e delleemissioni delle bollette.

3.2 Package

Essendo il sistema Aimag molto grande, la divisione in package permettedi comprenderlo meglio. Effettuando un Reverse Engineer utilizzando Po-werDesigner si nota come ogni libreria di PowerBuilder viene considerata unpackage in PowerDesigner. Attraverso i package in fig. 3.4 e in fig. 3.5 sipuo notare come nel passaggio dalla versione 5 alla versione 7 delle PFCsono state aggiunte due librerie nuove, pfcutil e pfeutil, che forniscono servizidi utilita. Dalla versione 7 alla versione 9 il numero di librerie e rimastoinalterato.

Nel diagramma in fig. 3.6 si possono notare le sezioni in cui e suddi-visa l’applicazione. Ogni package e a sua volta composto da altri package,ad eccezione del package ambiente. Tutti i package dipendono dal packageGenerali.

In fig. 3.7 e rappresentato nel dettaglio il package Generali contenente

Page 27: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

3.2 Package 17

Figura 3.1: Use Case Diagram riguardante le funzionalita dei settori gestioneutenza, contabilita e servizi tecnici.

Page 28: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

18 Analisi orientata agli oggetti dell’Applicazione

Figura 3.2: Use Case Diagram riguardante le funzionalita del settoremagazzino.

Figura 3.3: Use Case Diagram riguardante le funzionalita del settore ced.

Page 29: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

3.2 Package 19

Figura 3.4: Package riguardante le PFC5

Figura 3.5: Package riguardante le PFC7

Page 30: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

20 Analisi orientata agli oggetti dell’Applicazione

Figura 3.6: Package riguardante le sezioni in cui e suddivisa l’applicazione

le librerie generali dell’applicazione, cioe le librerie contenenti gli oggetti chevengono utilizzati dalle varie sezioni e sottosezioni di cui e costituita l’azienda.Nella libreria ge ancestor sono presenti gli oggetti del livello cuscinetto (vedipar. 6.5) e altri oggetti di base dell’applicazione.

Nel diagramma dei package in fig. 3.8 sono visibili le librerie del sottosi-stema utenza prima della riorganizzazione. Il diagramma in fig. 3.9 mostrainvece le librerie riorganizzate (vedi par. 6.1). Nei diagrammi non sono pre-senti le frecce perche li avrebbero resi meno leggibili. Nel diagramma in fig.3.9 le frecce dovrebbero dirigersi tutte verso i package presenti nella primacolonna a sinistra, mentre nel diagramma in fig. 3.9 le frecce dovrebberodirigersi tutte verso i package presenti nella prima colonna a sinistra in altoda ut str a ut dw, poiche contengono gli oggetti utilizzati da piu package.

3.3 Descrizione sottosistema Utenza

Essendo l’applicazione costituita da un numero elevato di window, mi sonoconcentrata sull’analisi del sottosistema utenza. Effettuando un Reverse En-gineer utilizzando PowerDesigner sono stati creati i diagrammi delle classidi tutto il sottosistema utenza, ma non possono essere inseriti in questatesi per questione di dimensione dei diagrammi. Ho deciso quindi di descri-vere a parole le sottosezioni del sottosistema utenza maggiormente utilizzate.Attraverso il menu utenza vengono gestiti i contratti utenza, visionata la si-

Page 31: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

3.3 Descrizione sottosistema Utenza 21

Figura 3.7: Package riguardante le librerie generali dell’applicazione

tuazione dei clienti, gestiti i divisionali, i misuratori, le letture, le procedureperiodiche, i pagamenti, le tariffe, gli addebiti.

La gestione dei contratti utenza prevede lo svolgimento delle seguentioperazioni:

- ricercare un punto di esercizio

- emettere un contratto

- effettuare una voltura

- effettuare la stampa di un contratto

- registrare la variazione del conto corrente

Per ricercare un punto di esercizio si puo utilizzare la selezione manualeche consente di inserire il comune in cui si ricerca il punto di esercizio osi puo utilizzare lo stradario per visualizzare tutte le province, i comuni, lelocalita, i quartieri e gli indirizzi in cui sono localizzati i luoghi di fornitu-ra. Nella sezione emissione di un contratto e possibile emettere un nuovocontratto, effettuare un subentro, variazioni o volture del contratto. Si puo

Page 32: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

22 Analisi orientata agli oggetti dell’Applicazione

Figura 3.8: Package riguardante le librerie della sezione utenzadell’applicazione

Page 33: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

3.3 Descrizione sottosistema Utenza 23

Figura 3.9: Package riguardante le librerie della sezione utenzadell’applicazione riorganizzate

Page 34: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

24 Analisi orientata agli oggetti dell’Applicazione

quindi ricercare un contratto esistente inserendo uno di questi identificatividell’utente:

- il codice utente

- la ragione sociale

- cognome e nome

- codice fiscale

- partita iva

Si deve poi inserire il tipo di servizio preso in considerazione:

- gas vendita

- acqua

- igiene ambientale

- gas distribuzione

Si nota la distinzione tra gas vendita e gas distribuzione poiche l’azienda divendita (Sinergas) non e la stessa di quella di produzione (Aimag).

Per quanto riguarda l’analisi della situazione dei clienti possono esseresvolte le seguenti operazioni:

- situazione cliente per codice

- situazione cliente

- situazione cliente per via

- situazione cliente per stato

- riepilogo bolletta per codice

- ricerca bolletta di un cliente

- riepilogo utente utilizzando il foglio famiglia

- dettagli calcolo bolletta

- report clienti per via

- gestione contestazione

Page 35: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

3.3 Descrizione sottosistema Utenza 25

- schede tecniche

La situazione cliente per codice illustra il dettaglio contrattuale del cliente.Inserendo il codice del cliente e possibile riscontrare la residenza, i serviziattivi e la data dei contratti del cliente. Inoltre si possono avere informazionivarie riguardanti:

- le potenzialita: il consumo calcolato in acconto e in conguaglio, lamedia storica e annua del consumo negli ultimi due anni, la potenzaimpegnata.

- le unita domestiche, il numero di bollette insolute, il numero e anno difatturazione.

- i flag: assicurazione, spese del contratto, tipologia utente e mora, tipodi misuratore e prima fatturazione avvenuta.

- le date di scadenze: consumo, nolo, imposta consumo e imposta con-sumo addizionale.

- gli importi: deposito cauzionale, quote fisse, consumo, imposta con-sumo, addizionale imposta consumo e vendita gas.

- le bollette in dettaglio: codice e scadenza

- le tariffe: tipo utilizzo e descrizione tariffa

- i coefficienti: descrizione coefficiente.

- ulteriori: incentivazioni, addebiti, misuratori, deposito cauzionale, stori-co variazioni, ISTAT, bollette contestate e mora utente.

La situazione cliente, la situazione cliente per via e per stato mostrano laresidenza del cliente, i servizi attivi, il numero di matricola, lo stato del mi-suratore e tutte le informazioni riguardanti le letture (data e stato lettura,giri misuratore). Nel primo caso basta inserire il codice del cliente (o ef-fettuare una ricerca se non lo si ricorda), nel secondo caso basta inserire ilpunto di esecizio e il numero civico di cui si vuole avere informazioni e perquanto riguarda la situazione cliente per stato basta selezionare il servizio inconsiderazione e lo stato che puo essere:

- anagrafica collegata

- emesso contratto

- misuratore posato

Page 36: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

26 Analisi orientata agli oggetti dell’Applicazione

- utente attivo

- cessato per chiusura semplice

- cessato per morosita

La ricerca di una bolletta per codice o per utente permette di recuperarel’emissione, la scadenza e il riscontro della bolletta, il numero contabile del-l’istituto di credito del fornitore, le informazioni riguardanti il cliente (codiceutente, ragione sociale, servizio fornito e importo bolletta), dettaglio dellabolletta, addebiti particolari, elenco imponibili, elenco letture e recapito delcliente o dell’istituto di credito del cliente. Si puo inoltre riscontrare l’esisten-za di bollette morate, doppi pagamenti, solleciti, vecchie letture o anticipi.La gestione dello stato di contestazione comporta il controllo della variazionedello stato di contestazione e il controllo delle bollette contestate. Le schedetecniche servono per poter stampare la situazione di un utente.

La gestione dei divisionali permette di connettere o disconnettere uncliente al divisionale.

La gestione dei misuratori prevede la creazione e ricerca di un misuratoreimpostando le caratteristiche quali la matricola, l’anno di fabbricazione, iltipo, la marca e lo stato del misuratore; e possibile conoscendo matricola ecodice utente visionare lo stato del misuratore e controllare i movimenti, leletture, il divisionale. Altre operazioni consentite dato il codice cliente e ilservizio in considerazione sono:

- apertura di un misuratore

- chiusura per morosita

- chiusura per rimozione

- chiusura per variazione contratto

- chiusura per voltura di nome

- chiusura semplice

La gestione delle letture prevede

- inserire una lettura singola

- modificare una lettura errata

- bollettare una lettura

- non bollettare una lettura

Page 37: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

3.3 Descrizione sottosistema Utenza 27

Si puo inoltre creare o modificare un libro lettura e stampare anomalie diletture.

Nella sottosezione procedure periodiche si puo definire una tipologia disollecito (sollecito grave o non grave) per un dato servizio ed un ente con-tabile, si possono controllare le bollette emesse e quelle insolute inserendo illoro codice e modificare la data di scadenza delle bollette.

La gestione dei pagamenti consiste invece nella gestione dei riscontri edegli storni.

Page 38: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

28 Analisi orientata agli oggetti dell’Applicazione

Page 39: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

Capitolo 4

Strumenti utilizzati

In questo capitolo vengono analizzati gli strumenti che sono stati da me uti-lizzati per la realizzazione della tesi. Nella prima sezione viene analizzatoPowerBuilder, ambiente di sviluppo dell’applicazione utilizzata nell’aziendaAimag. Nella seconda sezione viene analizzato PowerDesigner, tool che mi eservito per l’analisi e la riprogettazione dell’applicazione. Nella terza sezioneviene presentato Visual Expert, strumento utilizzato per ricercare le dipen-denze tra gli oggetti dell’applicazione. Nella quarta sezione viene presentatoPBDelta, strumento utilizzato per trovare le differenze tra versioni di codicesorgente di applicazioni.

4.1 PowerBuilder

PowerBuilder [Syb99] e un ambiente di sviluppo di applicazioni grafiche orien-tate ad oggetti che permette di costruire applicazioni potenti eseguite supiu piattaforme e interagire con vari databases. Utilizzando PowerBuilder epossibile sviluppare applicazioni Client/Server, distribuite e Internet, poichefornisce tutti i tool necessari per costruirle.

4.1.1 Caratteristiche principali di PowerBuilder

Le caratteristiche principali di PowerBuilder sono:

- Implementazione orientata ad oggetti: supporta eredita, incapsulazionee polimorfismo, con l’abilita di utilizzare metodi allo stesso livello deglioggetti senza usare eredita per far questo.

- Supporta SQL dinamico ed embedded

Page 40: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

30 Strumenti utilizzati

- DataWindow: e il cuore di PowerBuilder ed e usata per mostrare i datipresentandoli con vari stili (form, tabelle, griglie, etichette, gruppi,grafici . . . ) dopo l’esecuzione di una SELECT o di Stored Proceduresnel database. DataWindow modifica automaticamente la sorgente deidati grazie alla scrittura di poche righe di codice Powerscript.

- Supporta Stored Procedures utilizzando la notazione delle chiamate afunzioni.

- Connettivita al database: fornisce facili accessi alle informazioni loca-lizzate in un’ampia varieta di database. E possibile accedere ai datiattraverso PowerBuilder ODBC o interfacce JDBC, attraverso un ser-ver di accesso ai dati di ordine medio come il Sybase DirectCONNECTserver, o attraverso una connessione nativa o diretta al database. Ledifferenti sorgenti di dati con cui PowerBuilder puo comunicare sono:

- Database relazionali, come Sybase SQL Server, Oracle, Informix,Microsoft SQL Server, DB2, Adaptive Server Anywhere (Wat-com), etc.

- Database come tabelle FoxPro.

- Altre sorgenti come file di testo, fogli di Excel

- Cambiamento dinamico dei dati: PowerBuilder supporta DDE a livellodegli oggetti window. Le applicazioni PowerBuilder possono agire comeDDE client o DDE server o entrambi.

- Supporta OLE 2.0

- OCX Control: puo essere inserito in DataWindow come un qualsiasialtro oggetto.

- Supporto Web: DataWindow possono essere salvate come tabelle HTMLe form con solo una riga di codice. Le applicazioni PowerBuilderpossono essere sviluppate sul web in differenti modi:

– Data Window Plug-in: usandole per mostrare i resoconti delleDataWindow sul web

– Window Plug-in: usate per mostrare applicazioni PowerBuildersul web. Usando oggetti ”Context” si puo dare l’accesso al serviziesposti dai browser.

– Window ActiveX Control: ha funzionalita simili a Window-Plug-in, e un modo per eseguire altre applicazioni su browser e ActiveXe un modalita Microsoft.

Page 41: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

4.1 PowerBuilder 31

– Web.PB Class Library: usate per generare HTML dinamicamentea livello di server web.

Con la versione 9 di PowerBuilder e possibile anche importare ed es-portare dati in formato XML.

- Oggetti Distribuiti: le applicazioni PowerBuilder possono essere svilup-pate come applicazioni client, server o entrambe. Le applicazioni cliente server comunicano usando una connessione TCP/IP e altri protocollicomuni.

- Sincronizzato: permette all’utente di usare sempre gli ultimi files. Lasincronizzazione puo essere fatta su web.

- C++ Class Builder: permette di creare classi C++ ed usare questeclassi in PowerBuilder.

4.1.2 Applicazioni PowerBuilder

Un’applicazione PowerBuilder contiene:

- Un interfaccia utente: menu, finestre, e controlli su finestre che per-mettono l’interazione diretta tra l’utente e l’applicazione.

- I processi logici dell’applicazione: script di eventi e funzioni con i qualivengono codificati i ruoli validi e altri processi dell’applicazione. Power-Builder permette di codificare i processi logici dell’applicazione in unaparte dell’interfaccia utente o in moduli separati, chiamati custom classuser objects.

- Dati solitamente localizzati in un database sicuro.

Esistono diversi tipi di applicazioni PowerBuilder:

- Applicazione eseguibile: una collezione di finestre di PowerBuilder chefornisce attivita collegate tra loro. Un’applicazione eseguibile puo es-sere un’applicazione tradizionale client/server su due livelli (che accedea un server database), un’applicazione che agisce come un client inun sistema distribuito (e richiede servizi da un’applicazione server),o un’applicazione server in un’applicazione distribuita PowerBuilder.Possono essere sviluppate anche applicazioni distribuite, in cui solita-mente un’applicazione client chiede servizi ad un’applicazione server.Una tradizionale applicazione client/server e un insieme di finestre checontengono controlli con cui gli utenti possono interagire. E possibile

Page 42: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

32 Strumenti utilizzati

usare controlli standard (come bottoni, checkboxes, dropdown, listbox-es), controlli edit e controlli speciali che rendono le applicazioni facilida sviluppare e da utilizzare.

- Applicazione server: una componente contenente uno o piu oggetti chehanno metodi per fornire richieste logiche commerciali e le caratteri-stiche necessarie per sviluppare un’applicazione server distribuita comeuna Jaguar CTS.

- Applicazione Internet: una finestra PowerBuilder o una DataWindoweseguite in un browser web. PowerBuilder include Internet Tools chepermettono di costruire applicazioni basate su web e di estendere ap-plicazioni esistenti per Internet.

PowerBuilder e inoltre multi piattaforma, cioe e possibile sviluppare un’ap-plicazione utilizzando PowerBuilder sotto Windows e sviluppare la stessaapplicazione, senza effettuare cambiamenti, sotto Unix.

Eventi PowerBuilder

Le applicazioni PowerBuilder sono guidate da eventi. Quando un utenteclicca un bottone, sceglie una voce da un menu o inserisce dati all’interno diuna textbox, si verifica un evento. Gli script creati specificano che cosa deveavvenire quando un evento si verifica. Per esempio, i bottoni hanno un even-to Clicked. Bisogna scrivere uno script per un evento Clicked dei bottoni chespecifica che cosa succede quando l’utente clicca il bottone. PowerBuilder for-nisce un evento che cattura gli errori, cioe l’evento SystemError dell’oggettoApplicazione. Quando un errore occorre in un’applicazione, lo script scrittoper questo evento e eseguito, PowerBuilder popola l’informazione dell’errorein un oggetto globale denominato Error. L’oggetto Error e uno degli oggettiglobali costruiti usati da PowerBuilder. Quando un errore occorre, l’even-to SystemError si verifica a livello di applicazione e PowerBuilder mostra ilmessaggio di errore di default. In molti casi l’applicazione terminera. Se nonsi vuole che l’applicazione termini, questi errori devono essere catturati.

4.1.3 Linguaggio PowerScript

Per scrivere uno script viene utilizzato PowerScript, il linguaggio di Power-Builder. Gli script consistono in comandi, funzioni e dichiarazioni di Power-Builder che forniscono il procedimento in risposta ad un evento. Lo script perun evento Clicked del bottone puo recuperare e mostrare le informazioni daldatabase. Lo script per un evento Modified di un edit control deve valutare i

Page 43: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

4.1 PowerBuilder 33

dati e fornire la procedura basata sui dati. Gli script possono anche far veri-ficare eventi. Per esempio lo script per un evento Clicked di un bottone deveaprire un’altra finestra, quindi si verifichera l’evento open di questa finestra.

Funzioni PowerScript

PowerScript fornisce un’ampia gamma di funzioni gia costruite che possonoessere utilizzate nei vari componenti di un applicazione. Per esempio c’e unafunzione per aprire una finestra, una funzione per chiudere una finestra, unafunzione per abilitare un bottone, una funzione per modificare il database ecosı via. E possibile comunque creare funzioni definite dall’utente per forniredelle procedure uniche per un’applicazione.

4.1.4 Oggetti PowerBuilder

Gli elementi base di un’applicazione PowerBuilder sono gli oggetti. Questivengono descritti in breve in tabella 4.1.

Oggetto Utilizzo

Applicazione Punto d’inizio di un’applicazioneWindow Interfaccia primaria tra l’utente e l’applicazione PowerBuilderDataWindow Recupera e manipola i dati da un database relazionale o altre

sorgentiMenu Lista di comandi o opzioni che l’utente puo selezionare nella

window attivaStruttura Collezione di una o piu variabili raggruppate sotto un unico

nomeUser Object Moduli riutilizzabili o insieme di controlliLibreria Localizza oggetti PowerBuilder, come window e menuProgetto Pacchetti dell’applicazione per la distribuzione agli utenti

Tabella 4.1: Oggetti utilizzati in PowerBuilder

Oggetto Applicazione

Ogni applicazione ha un oggetto Applicazione. L’oggetto applicazione e ilpunto d’inizio per un’applicazione e viene salvato in una libreria Power-Builder, come avviene anche per una finestra, un menu, una funzione o unoggetto DataWindow.L’oggetto applicazione definisce le proprieta a livello applicazione (come quali

Page 44: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

34 Strumenti utilizzati

fonts utilizzare di default per il testo) e il comportamento a livello appli-cazione (come quale procedura viene avviata quando l’applicazione inizia etermina). Quando un utente esegue un’applicazione, viene eseguito l’eventoOpen dell’oggetto applicazione. Lo script scritto per l’evento Open inizial’attivita dell’applicazione. Tipicamente viene impostato l’ambiente, apertala finestra iniziale e vengono recuperati gli oggetti dalle librerie. Per un’ap-plicazione server, la finestra iniziale deve essere la sola parte visuale dell’ap-plicazione visto che lo scopo dell’applicazione e fornire i servizi richiesti dalleapplicazioni client. Quando un utente termina l’applicazione, viene eseguitol’evento Close dell’oggetto applicazione. Lo script scritto per l’evento Closesolitamente ripulisce tutte le richieste, come la chiusura del database o lascrittura in un file preferenziale. Se ci sono errori durante l’esecuzione, unevento SystemError si verifica nell’oggetto Applicazione (vedi fig 4.1) .

Windows

Le windows sono l’interfaccia primaria tra l’utente e l’applicazione Power-Builder. Le windows possono mostrare informazioni, permettere all’utente dirichiedere informazioni e rispondere alle azioni eseguite dall’utente attraversoil mouse o la tastiera. Una finestra e composta da:

- Proprieta che definiscono il comportamento della finestra

- Eventi che si verificano in seguito alle azioni dell’utente

- Controlli localizzati nella finestra

La window contiene vari controlli come la barra del titolo con i bottoni perla minimizzazione, la massimizzazione o la chiusura della finestra. Quandoviene salvata una finestra, PowerBuilder genera automaticamente due entitain una libreria:

- un nuovo tipo di dato: il nome del tipo di dato e lo stesso del nomedella window.

- una nuova variabile globale del nuovo tipo di dato: il nome dellavariabile globale e lo stesso del nome della window.

Visto che la window e attualmente un tipo di dato si puo dichiarare variabilidi quel tipo di dato, come vengono dichiarati interi, stringhe ...

Page 45: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

4.1 PowerBuilder 35

Inizio Applicazione

/ Viene eseguito l’evento Open dell’oggetto Applicazione

Apertura finestra Iniziale

do/impostazione ambiente

L’Applicazione viene eseguita

do/altre finestrevengono aperte e chiuse, dati vengono recuperati

dal database e scrittinel database ...

[L’utente interagisce con le finestre]

Termine Applicazione

Termine applicazione

Esecuzione Evento SystemError

do/l’evento System Error dell’oggetto Applicazione

viene eseguito

[Evento SystemError]

[Evento SystemError]

Figura 4.1: Ciclo Operativo di Vita di un’Applicazione.

Page 46: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

36 Strumenti utilizzati

Data Window

Una Data Window e un oggetto consapevole dei dati, usato per recuperaree manipolare i dati da un database relazionale o da altre sorgenti di dati(come fogli Excel o file dBASE). L’oggetto Data Window puo presentare idati all’utente in un’ampia varieta di stili. Per esempio e possibile mostrare idati in tabella o con una form e includere immagini e grafici legati ai dati. Puopermettere all’utente di cambiare i dati e modificare il database effettuandocambiamenti con qualche restrizione. Ci sono due parti in una DataWindow:

- Un oggetto DataWindow che ha tutte le definizioni

- Un controllo DataWindow o Datastore con lo script richiesto per ma-nipolare l’oggetto DataWindow.

Ci sono cinque passi richiesti per creare e utilizzare una DataWindow inun’applicazione:

- Selezionare una sorgente di dati (es. database) e uno stile di presen-tazione (formato con il quale i dati devono essere visualizzati).

- Definire appropriate dichiarazioni SQL, come una dichiarazione SE-LECT o un nome di una stored procedure con argomenti necessari, perfornire informazioni all’utente. Per esempio una dichiarazione SELECTper riprendere tutte le informazioni sui prodotti.

- Disegnare la DataWindow (definire fonts, colori, locazione di ogni cam-po) per visualizzare opportunamente le informazioni.

- Associare l’oggetto DataWindow con un DataWindow control, cosı chei dati contenuti in un oggetto possano essere visualizzati dall’utente.

- Scrivere dichiarazioni e funzioni PowerScript per agire su DataStore eDataWindow control.

Sebbene un oggetto DataWindow contenga tutte le definizioni, non puoriprendere dati in esecuzione senza essere utilizzato all’interno di un Da-taStore o un DataWindow control. DataWindow control e un contenitoreper l’oggetto DataWindow e ha eventi in cui e possibile scrivere script permanipolare l’oggetto DataWindow utilizzando funzioni del DataWindow con-trol. E possibile agire su un oggetto DataWindow attraverso il DataWindowcontrol o DataStore. L’oggetto DataWindow e indipendente da ogni Data-Window control e puo essere associato ad un numero qualsiasi di controlli.La DataWindow e l’oggetto DataWindow associato puo essere modificato

Page 47: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

4.1 PowerBuilder 37

dinamicamente in esecuzione. Uno degli obiettivi fondamentali di una Data-Window e mostrare una collezione di informazioni recuperate da un database.PowerBuilder fornisce cinque metodi differenti per connettersi a una sorgentedi dati. Questi cinque metodi hanno strutture differenti e sono:

- Quick select

- SQL select

- Query

- Dati Esterni (file di testo ...)

- Stored Procedure

Quick select e un metodo spesso usato per selezionare dati da una tabella sin-gola, sebbene sia possibile anche effettuare selezioni da tabelle multiple. SQLselect e un metodo molto flessibile e usato molto per creare una DataWindow.Permette di fare join tra piu tabelle, di selezionare specifici valori (clausu-la where), di ordinare i risultati ottenuti, di raggruppare i dati (clausulaGroup by), di selezionare i dati aventi determinate condizioni (clausula ha-ving), selezionare un insieme di valori senza considerare i duplicati (clausuladistinct). E possibile esportare report con differenti formati, includendo for-mato HTML, SQL, Excel, Text, etc ... Due DataWindow con due stilidi presentazioni differenti possono utilizzare la stessa sorgente di dati. Inquesto caso viene chiesto a PoweBuilder di condividere i dati tra queste dueDataWindow. Solo i dati vengono condivisi tra DataWindow, non gli stilidi presentazione. Questo significa che DataWindow possono avere differenticriteri di ordinamento e stili di presentazione. Se si elimina una riga in unaDataWindow la sorgente dei dati e la stessa, viene quindi anche cancellatadalle atre DataWindow che la condividono. Allo stesso modo, se viene ag-giunta una riga questa e disponibile in tutte le altre DataWindow condivise.Condividere dati permette di utilizzare risorse piu efficacemente.

Menu

I menu sono liste di voci che un utente puo selezionare da una barra deimenu per la finestra attiva. Le voci di un menu sono solitamente collegatee forniscono comandi o modi alternativi di eseguire un processo. E possibileselezionare le voci del menu con il mouse o con la tastiera, o utilizzare chiavidefinite per le voci. Un dropdown menu e un menu sotto la barra dei menu.Un menu a cascata e un menu che appare se ci si localizza su una voce di undropdown menu. Ogni scelta in un menu e definito come un oggetto Menuin PowerBuilder.

Page 48: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

38 Strumenti utilizzati

Funzioni Globali

Ci sono due tipi di funzioni definite in PowerBuilder:

- Funzioni globali: le quali possono essere associate a qualsiasi oggettodell’applicazione e sono sempre accessibili da qualsiasi punto dell’ap-plicazione. Non sono incapsulate all’interno di un oggetto, ma sonooggetti indipendenti.

- Funzioni a livello oggetto: le quali sono definite per una finestra, menu,oggetto utente o oggetto applicazione. Queste funzioni sono parte del-la definizione dell’oggetto e possono essere sempre usate in script perl’oggetto stesso. Si puo scegliere di rendere queste funzioni disponibiliper altri script.

A differenza delle funzioni a livello oggetto, le funzioni globali non agisconosu particolari istanze di un oggetto. PowerBuilder supporta sia funzionioverriding che funzioni overloading. In funzioni overriding, la funzione di-scendente ha gli stessi argomenti o argomenti dello stesso tipo di dato dellafunzione antenato. In funzioni overloading, la funzione discendente (o unafunzione nominata identicamente nello stesso oggetto) ha argomenti diversi oargomenti con diverso tipo di dato rispetto alla funzione antenato. Possonoessere implementate funzioni overloading in due modi:

- Sintassi multipla: funzioni multiple contengono argomenti che utiliz-zano diversi tipi di dato o sono in diverso ordine. Questo permette dimaneggiare molti tipi di dati negli argomenti delle funzioni.

- Argomenti opzionali: funzioni multiple contengono un numero crescen-te di argomenti con gli stessi tipi di dato e nello stesso ordine.

Interrogazioni

Un interrogazione e una dichiarazione SQL che e salvata con un nome cosı chesia possibile utilizzarla ripetutamente come sorgente di dati per un oggettoDataWindow.

Strutture

Una struttura e una collezione di una o piu variabili dello stesso tipo o condifferenti tipi di dato raggruppati utilizzando un unico nome. In qualchelinguaggio, come in Pascal o in Cobol, le strutture sono chiamate records.La struttura permette di riferirsi ad entita collegate come ad un’unita in-dividuale. Per esempio e possibile definire l’ID di un utente, l’indirizzo, il

Page 49: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

4.1 PowerBuilder 39

livello di accesso e un immagine dell’impiegato come una struttura chiamatauser struct e riferirsi a questa collezione di variabili come user struct. Cisono due tipi di strutture:

- Strutture a livello oggetto sono associate ad un particolare tipo di ogget-to come una finestra o un menu. Queste strutture possono sempre es-sere usate in scripts per l’oggetto stesso, ma si puo anche scegliere direndere la struttura accessibile ad altri script.

- Strutture globali non sono associate ad un oggetto o ad un tipo di ogget-to in un’applicazione. E possibile dichiarare un istanza della strutturaa cui fare riferimento in qualche script dell’applicazione.

User Objects

Le applicazioni spesso hanno caratteristiche in comune. Per esempio, diverseapplicazioni devono avere un bottone di chiusura che esegue un insieme dioperazioni che permettono la chiusura della finestra. Diverse applicazionihanno controlli Data Window che eseguono lo stesso tipo di controllo deglierrori. Uno user object viene definito quando la stessa applicazione utilizzaripetutamente alcune caratteristiche. Ci sono due tipi di user object:

- Visual User Objects: controlli riutilizzabili o insieme di controlli chehanno comportamenti coerenti. Per esempio, Visual User Object puoessere costituito da diversi bottoni che funzionano come un’unita. Ibottoni possono avere scripts a loro associati che forniscono processistandards. L’oggetto viene definito una sola volta e utilizzato ognivolta che se ne ha bisogno.

- Class User Objects: moduli di processi riutilizzabili che non sono com-ponenti visivi. Vengono tipicamente usati class user objects per definireprocessi che agiscono come un’unita. Per esempio, se si vogliono effet-tuare calcoli o fornire analisi statistiche in diverse applicazioni, si puodefinire un class user object. Per far questo basta creare un istanza diun oggetto in uno script e chiamarla attraverso una funzione. I CustomClass User Objects definiscono funzioni e variabili e sono fondamentaliper la realizzazione di sistemi distribuiti con PowerBuilder.

Librerie PowerBuilder

Una libreria di PowerBuilder e un file che ha una collezione di uno o piuoggetti di PowerBuilder. Per il sistema operativo e un file come un filedatabase. Quando viene salvato un oggetto, come una finestra o un menu,

Page 50: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

40 Strumenti utilizzati

PowerBuilder localizza l’oggetto in una libreria (file PBL). In modo simile,quando viene aperto un oggetto, PowerBuilder recupera l’oggetto dalla libre-ria. Le applicazioni possono usare molte librerie, non esiste, infatti, un limitemassimo di librerie che l’applicazione puo utilizzare. Le librerie possono es-sere localizzate sul proprio PC, su una workstation o su un server. Quandoviene creata un’applicazione devono essere specificate quali librerie vengonoutilizzate dall’applicazione. In fase di sviluppo di un’applicazione il percorsodove ricercare una libreria puo cambiare. Ogni oggetto e salvato in due partiin una libreria:

- Source form: questa e una rappresentazione sintattica di un oggetto,incluso il codice script.

- Object form: questa e una rappresentazione binaria dell’oggetto, similea un file oggetto dei linguaggi C o C++. PowerBuilder compila unoggetto automaticamente ogni volta che viene salvato.

Non ci sono limiti sulla quantita di oggetti che una libreria puo contenere,ma per performance e convenienza e meglio non avere piu di 50/60 oggettiper libreria. Le librerie di PowerBuilder possono essere pubbliche o private.Una libreria pubblica e condivisa da tutti gli sviluppatori. Una libreria dilavoro e una libreria privata se e accessibile solo dallo sviluppatore che la stautilizzando.

Progetti

Per permettere agli utenti di eseguire un’applicazione bisogna creare unoggetto Progetto. Si possono creare oggetti Progetto che contengono ap-plicazioni eseguibili, librerie dinamiche e componenti che possono essere uti-lizzati da un server di transazione, come da classi Java, files HTML e oggettiproxy che vengono utilizzati in applicazioni distribuite. Quando viene creatoun pacchetto di un’applicazione devono necessariamente essere fornite dellerisorse aggiuntive, come bitmaps e icone. PowerBuilder permette di include-re risorse aggiuntive in un eseguibile e/o in librerie dinamiche o distribuirleseparatamente.

4.1.5 File di inizializzazione

Il file .INI e un file di inizializzazione che contiene i valori inizializzati diun’applicazione come quelli di default, gli ultimi valori usati e i preferiti eviene suddiviso in sezioni. Questo file puo essere letto attraverso la fun-zione ProfileString() che ha quattro parametri: il file di lettura, il nome della

Page 51: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

4.1 PowerBuilder 41

sessione, il nome della variabile e il valore di default se la variabile non edefinita nel file o se non si trova il file. Se il percorso del nome del filenon e dato PowerBuilder cerca prima la directory di lavoro e dopo il per-corso. Se viene fatto qualche cambiamento ultimo, per esempio spostare ildatabase, necessariamente si deve aprire lo script per tutte le applicazioniche sono state distribuite per modificare il codice e riflettere il cambiamento.Se viene usato un file .INI, e necessario distribuire un nuovo file .INI conte-nente le informazioni modificate. Se la funzione SetProfileString() restituisce-1 significa che non c’e il file ed e necessario crearlo.

4.1.6 Eredita, incapsulazione e polimorfismo

La programmazione orientata ad oggetti supporta tre principi fondamentali:eredita, incapsulazione e polimorfismo. Eredita significa che gli oggetti pos-sono essere derivati da oggetti esistenti, con accesso ai loro componenti visivi,dati e codice. Questo permette di definire un oggetto che descrive caratte-ristiche generali ed utilizzare questo oggetto come la base per altri specificioggetti che hanno propri attributi aggiuntivi e/o comportamenti. Incapsu-lazione (chiamata anche informazione nascosta) significa che un oggetto con-tiene dati e codice proprio, permettendo accesso esterno in modo appropriato.E il meccanismo per nascondere informazioni in un oggetto cosı che i compo-nenti esterni non siano consapevoli di esse. Gli oggetti interagiscono con altriattraverso metodi che forniscono controllo e sicurezza. Polimorfismo signifi-ca che le funzioni con lo stesso nome si comportano diversamente a secondadell’oggetto referenziato e del numero di argomenti. Vengono supportati duetipi di polimorfismo:

- polimorfismo operazionale, in cui oggetti diversi non collegati defini-scono una funzione con lo stesso nome.

- polimorfismo inclusionale, in cui vari oggetti di una catena ereditariadefiniscono una funzione con lo stesso nome, ma differenti argomenti.

Queste tecniche forniscono i seguenti principali benefici:

- Riusabilita: visto che un oggetto e un pacchetto di dati incapsulato eche ha una bene definita interfaccia, altri oggetti possono facilmenteinvocare le funzioni che l’oggetto contiene o semplicemente riutilizzarele funzioni attraverso l’eredita.

- Scalabilita: gli oggetti utilizzano attributi come entita maneggevoli.

Page 52: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

42 Strumenti utilizzati

4.1.7 Oggetto transazionale

PowerBuilder necessita di informazioni come il nome di login, password, ilnome del database e solo allora puo connettersi al database. PowerBuilderposiziona queste informazioni in un oggetto chiamato Oggetto Transazionale.PowerBuilder usa queste informazioni per caricare i drivers del database eper entrare nel database. Un oggetto transazionale contiene informazioni ri-chieste per connettersi al database e i risultati dell’ultima dichiarazione SQLeseguita. Gli oggetti transazionali sono oggetti invisibili, questo significa chenon hanno nessuna proprieta visibile come il colore, il bordo il font e cosı via.PowerBuilder fornisce un oggetto transazionale globale (che puo essere acce-duto da una qualunque applicazione) chiamato SQLCA (Structured QueryLanguage Comunication Area). E disponibile quando un’applicazione iniziae viene automaticamente distrutto quando l’esecuzione dell’applicazione ecompletata. Un oggetto transazionale ha 14 proprieta (DBMS, DataBase,UserId, DBParm, DBPass, Lock, LogId, LogPass, ServerName, AutoCom-mit, SQLCode, SQLNRows, SQLDBCode, SQLErrText, SQLReturnData).Ci sono quattro dichiarazioni PowerScript per gestire le transazioni:

- CONNECT: permette di iniziare una transazione una volta che e statacreata.

- DISCONNECT: permette di terminare una transazione.

- COMMIT: quando viene eseguita, tutti i cambiamenti al database dal-l’inizio della transazione corrente (o dall’ultima COMMIT o ROLL-BACK) vengono resi permanenti e una nuova transazione ha inizio.

- ROLLBACK: quando viene eseguita, tutti i cambiamenti al databasedall’inizio della transazione corrente vengono annullati e una nuovatransazione ha inizio.

Per connettersi ad un database bisogna popolare l’oggetto transazionale eusare la dichiarazione CONNECT per eseguire l’oggetto transazionale for-nito per la connessione. Se si ha un errore, per esempio se viene inseritauna password non valida o il database non e disponibile, allora la propri-eta SQLCode conterra un valore diverso da 0 la proprieta SQLErrText sarapopolato con un messaggio d’errore che puo essere visualizzato. Quandol’utente esegue l’applicazione, la prima cosa che vuole fare e entrare, usan-do un profilo corretto. Quindi per prima cosa viene mostrata una finestradi login per l’utente. Quando PowerBuilder incontra la dichiarazione CON-NECT automaticamente utilizza i valori dell’oggetto SQLCA. Per connettersia un database usando un differente oggetto transazionale, bisogna specificare

Page 53: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

4.1 PowerBuilder 43

l’oggetto transazionale nella dichiarazione Connect. Se non viene specificatoPowerBuilder usa SQLCA di default. PowerBuilder e progettato per lavo-rare in un ambiente di database eterogeneo. Questo significa che e possibileconnettere un’applicazione PowerBuilder a qualsiasi database e si possonoavere piu connessioni aperte a differenti database allo stesso tempo nellastessa applicazione. E possibile creare multipli oggetti transazionali e con-nettere vari database per ogni DataWindow. Per recuperare i dati da undatabase bisogna assegnare un oggetto DataWindow a un DataWindow con-trol, connettere il database, settare l’oggetto transazionale al DataWindowcontrol, chiamare la funzione per recuperare i dati dal database e popolarela DataWindow. Tutte le informazioni definite nella DataWindow sarannorecuperate e mostrate nella DataWindow control.

4.1.8 Garbage Collection

Il meccanismo garbage collection [Syb01a] di PowerBuilder controlla la memo-ria automaticamente per gli oggetti non referenziati e orfani e li rimuove nelcaso vengano trovati. E possibile usare il garbage collection per distruggeregli oggetti, invece di distruggerli esplicitamente utilizzando la dichiarazioneDESTROY. Questo permette di evitare gli errori in esecuzione che si veri-ficano quando viene distrutto un oggetto che e stato utilizzato da un altroprocesso o e stato passato come referenza ad un evento o ad una funzione. Ilgarbage collection agisce:

- quando una referenza viene rimossa da un oggetto. Una referenza diun oggetto e una variabile il cui valore e l’oggetto. Quando la variabileesce dal suo scope o quando viene assegnata ad un valore differentePowerBuilder rimuove la referenza dell’oggetto, contando le referenzerimanenti, e distruggendo l’oggetto se non rimane referenziato. Quan-do vengono utilizzati eventi e funzioni e viene passato un oggetto perreferenza, PowerBuilder aggiunge una referenza interna all’oggetto cheviene rimosso quando l’evento o la funzione viene eseguita.

- quando l’intervallo del garbage collection viene superato. Quando Power-Builder completa l’esecuzione di un evento di sistema, viene utilizzato ilgarbage collection se l’intervallo del garbage collection e ecceduto. L’in-tervallo di default e 0,5 secondi. Il garbage collector utilizzato rimuovegli oggetti e le classi che non sono referenziate.

Ci sono degli oggetti che non vengono controllati dal garbage collection:

- Visual objects: gli oggetti visibili sullo schermo non sono garbagecollected perche quando un oggetto viene creato e visualizzato sullo

Page 54: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

44 Strumenti utilizzati

schermo una referenza interna viene aggiunta all’oggetto. Quando unvisual objects viene chiuso viene esplicitamente distrutto.

- Timing objects: i Timing objects che vengono eseguiti correntementenon sono garbage collected perche la funzione Start per un Timingobject aggiunge una referenza interna e la funzione Stop rimuove lareferenza.

- Shared objects: gli oggetti condivisi registrati non sono garbage col-lected perche la funzione SharedObjectRegister aggiunge una referenzainterna e la rimuove.

Il garbage collection occorre automaticamente in PowerBuilder, ma si pos-sono utilizzare funzioni per rafforzare il garbage collection o per cambiare ilnumero di referenze controllate.

4.1.9 Compilazione

PowerBuilder offre due formati alternativi di compilazione:

- Pcode: e un linguaggio interpretato che e supportato su tutte le piat-taforme PowerBuilder. Ha lo stesso formato che PowerBuilder utilizzanelle librerie (files PBL) per localizzare oggetti individuali nello statoeseguibile. I vantaggi di PCode includono convenienza e portabilita.

- Machine Code: PowerBuilder genera e compila codice per creare uncodice macchina eseguibile o librerie dinamiche. Il vantaggio chiave delcodice macchina e la velocita di esecuzione.

Per decidere quale utilizzare si deve considerare:

- Velocita: l’obiettivo primario e ottimizzare la velocita di esecuzione.E preferibile utilizzare Machine Code, invece di PCode se il codice fauso pesantemente di costrutti loop, aritmetica intera o reale e chia-mate a funzione. PCode e particolarmente utile quando si vuole crearevelocemente una versione eseguibile dell’applicazione di testing.

- Dimensione: i files generati da PCode sono piu piccoli che quelli generatidal codice macchina.

- Portabilita: PCode puo essere utile per applicazioni cross-piattaforma,perche portabile. Si possono utilizzare le stesse PDB sulla piattaformaWindow e su Linux. Comunque si deve generare l’eseguibile dell’appli-cazione sulla piattaforma desiderata, e le perforance sono solitamente

Page 55: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

4.1 PowerBuilder 45

migliori se vengono generate anche le PDB sulla piattaforma deside-rata. Il codice macchina e naturalmente di una piattaforma specifi-ca. Questo significa che viene richiesto di mantenere versioni completedell’applicazione eseguibile su ogni piattaforma.

4.1.10 Package

Un’applicazione creata in PowerBuilder puo essere costituita da uno o piuparti:

- un file eseguibile: se viene costruita un’applicazione a uno o a duelivelli, deve essere distribuita a utenti come un file eseguibile. Se vienecostruita un’applicazione distribuita di PowerBuilder bisogna creare unfile eseguibile su client e uno su server. Il file eseguibile contiene unaversione compilata degli oggetti, una lista delle librerie di esecuzione(il sistema di esecuzione di PowerBuilder utilizza gli oggetti trovati ele risorse nelle librerie dinamiche) e risorse che l’applicazione utilizza(come bitmaps).

- librerie dinamiche: alternativa di mettere l’intera applicazione in un fileeseguibile e inserire degli oggetti in una o piu librerie dinamiche. Il mo-do con cui PowerBuilder implementa le librerie dinamiche dipende dalformato della compilazione scelta. Se viene generato codice macchinale librerie dinamiche sono files DLL (collegamenti dinamici alle librerie)su Windows e librerie dinamiche condivise su UNIX. Se viene generatoPCode le librerie dinamiche sono files PBD. Queste librerie dinamichesono simili ai files DDL in quanto sono collegati all’applicazione in fasedi esecuzione. Ma non sono intercambiabili con DDL, perche hannoun formato interno diverso. Non si possono mescolare questi due di-versi tipi di librerie dinamiche (DLL e PBD) in un’applicazione. Lelibrerie dinamiche possono includere risorse (come bitmaps). Le li-brerie dinamiche consentono: modularita, perche suddividono l’appli-cazione in piu files modulari facili da maneggiare; riutilizzabilita perchepiu applicazioni possono utilizzare le stesse componenti e le librerie di-namiche possono essere condivise da piu applicazioni; flessibilita perchefornisce referenze dinamiche di oggetti in fase di esecuzione; efficienzaperche PowerBuilder non carica un’intera libreria dinamica in memoria,ma carica individualmente gli oggetti della libreria dinamica quando enecessario.

- risorse: un’applicazione PowerBuilder puo utilizzare diversi tipi di risorsequali icone (files ICO), immagini (BMP, GIF, JPEG, RLE e WMF

Page 56: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

46 Strumenti utilizzati

files) e puntatori (CUR files). Le risorse possono essere incluse nelfile eseguibile, ma PowerBuilder non copia automaticamente le risorseche sono referenziate dinamicamente e quindi queste devono essere in-serite in un file di risorsa (PBR). Il file di risorsa e semplicemente unfile di testo nel quale viene inserita la lista dei file ICO, BMP, GIF,JPEG, RLE, WMF e CUR. Una volta creato un file PBR si deve direa PowerBuilder di leggerlo quando viene creato il file eseguibile perdeterminare quali risorse copiare. Le risorse possono essere inclusein librerie dinamiche, ma PowerBuilder non copia automaticamente lerisorse in una libreria dinamica. E necessario creare un file PBR e dire aPowerBuilder quali risorse copiare in questi particolari file DLL o PBD.Bisogna utilizzare un diverso file PBR per ogni libreria dinamica nelquale si voglia includere le risorse. Le risorse possono essere distribuitein file separati in aggiunta al file eseguibile e alle librerie dinamiche.Questo non e l’approccio piu veloce in fase di esecuzione, perche e ri-chiesta molta ricerca. Infatti quando un’applicazione ha bisogno dirisorse per prima cosa le ricerca avviene nel file eseguibile, poi nellelibrerie dinamiche e infine nei file separati.

4.2 PowerDesigner

PowerDesigner permette di scambiare i modelli Unified Modeling Language(UML) realizzati con differenti tool UML utilizzando come formato del fileXML Metadata Interchange (XMI) standard. Permette non solo di importareXMI files come diagrammi delle classi e casi d’uso, ma anche di esportarefiles XMI. XMI combina i vantaggi dell’XML standard utilizzato nel webper definire, validare e condividere formati di documenti sul web con i van-taggi che si ottengono con l’UML Object-Oriented. Utilizzando XML pertrasmettere i dati si ha il vantaggio che i dati possono essere scambiati indif-ferentemente dalla piattaforma. PowerDesigner fornisce un supporto integra-to per Microsoft VBScript cosı che sia possibile scrivere ed eseguire scriptsper agire sui metamodelli di oggetti di PowerDesigner in un ambiente disviluppo utilizzando proprieta e metodi. I principali oggetti di PowerDesi-gner possono essere letti e modificati (creazione, modifica ed eliminazione).VBScripts fornisce operazioni su una serie di oggetti o modelli in modo auto-matico. L’ambiente di modellazione di PowerDesigner supporta quattro tipidi modelli:

- Conceptual Data Model (CDM) per modellare la struttura logica glo-bale di un database, indipendentemente da ogni considerazione riguar-

Page 57: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

4.2 PowerDesigner 47

dante il software o la struttura di localizzazione dei dati. Un CDMvalido puo essere convertito in un PDM o in un OOM.

- Physical Data Model (PDM) per modellare la struttura fisica globaledi un database, considerando il software o la struttura di localizzazionedei dati. Un PDM valido puo essere convertito in un CDM o in unOOM.

- Object Oriented Model (OOM) per modellare un sistema software uti-lizzando un approccio object-oriented per Java e altri linguaggi orien-tati agli oggetti. Un OOM valido puo essere convertito in un PDM oin un CDM.

- Business Process Model (BPM) per modellare come uno o piu processisi comportano nelle operazioni tra processi.

4.2.1 Conceptual Data Model

Un Conceptual Data Model (CDM) [Syb01c] rappresenta la struttura globaledi un sistema informativo. Descrive le relazioni concettuali di tipi differentidi informazioni nonostante la loro struttura fisica. Un CDM e indipendenteda un particolare database management system (DBMS) e in esso si possonoconsiderare le problematiche di progettazione senza preoccuparsi dei dettaglidell’implementazione fisica. Si ci occupa principalmente delle entita e delleloro relazioni essendo facili da capire e da manipolare. Attraverso una sem-plice procedura di generazione, e possibile trasferire la solida progettazionedi un framework da CDM a Physical Data Model (PDM). Il PDM adattala progettazione alle specifiche di un DBMS. Il primo passo per creare unConceptual Data Model (CDM) e individuare e conseguentemente formularei problemi che coinvolgono i processi su cui il CDM si dovra indirizzare. Sideve decidere:

- Quali informazioni si devono localizzare

- Quali entita sono coinvolte nei processi

- Quali sono le operazioni tra processi

Una descrizione dei processi indica quali entita sono coinvolte nei processi.

4.2.2 Physical Data Model

Con PowerDesigner [Syb01e] e possibile:

Page 58: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

48 Strumenti utilizzati

- Generare un Physical Data Model dallo script di creazione del databaseo utilizzando una sorgente di dati ODBC.

- Costruire un Physical Data Model per gestire un DBMS

- Utilizzare il PDM per effettuare considerazioni fisiche e di performance.

- Generare script per la creazione di un database.

- Generare script per testare i dati

- Progettare un DataWarehouse

- Utilizzare diagrammi multidimensionali.

Il Physical Data Model specifica l’implementazione fisica di un database.Con il PDM si possono considerare i dettagli di un implementazione fisicaattuale. Il PDM fornisce i seguenti ruoli:

- Rappresenta l’organizzazione fisica dei dati in un formato grafico.

- Genera script per la creazione di database e permette di modificarescript.

- Genera attributi estesi.

- Permette di riprogettare l’ingegneria dei databases esistenti.

Si puo imparare a denormalizzare il PDM generato in modo da poter archi-viare dati, velocizzare l’accesso alle informazioni del database e risolvere iproblemi dell’integrita del database. E possibile anche progettare un datawarehouse, in modo da poter utilizzare come sorgente di dati un databaseOLAP. A seconda del tipo di database che si vuole progettare, vengono usatidiversi tipi di diagrammi PDM. Se si vuole realizzare un database oper-azionale, il diagramma fisico servira per definire l’implementazione fisica deldatabase e sara possibile ottimizzare le caratteristiche del database utiliz-zando tabelle, colonne, indici, integrita referenziale, viste, triggers e storedprocedures. Se si vuole realizzare un Data Warehouse o un Data Mart il di-agramma fisico servira per localizzare i dati commerciali. Se si vuole invecerealizzare un database OLAP verra utilizzato un diagramma multidimen-sionale per definire le possibili interrogazioni che vengono effettuate sui datioperazionali.

Page 59: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

4.2 PowerDesigner 49

4.2.3 Object-Oriented Model

Un Object Oriented Model (OOM) [Syb01d] e una struttura che fornisce ladescrizione di un sistema utilizzando i seguenti diagrammi UML:

- Diagrammi dei casi d’uso che definiscono la struttura fondamentaledell’applicazione. Vengono usati per disegnare ad alto livello il sistema:come per definire quali sono gli attori esterni di un sistema e qualiattivita svolgono.

- Diagrammi di sequenza che descrivono come il sistema ottiene cio cheviene descritto con i casi d’uso. Vengono utilizzati per disegnare oggetti(istanze di classi) e mostrare in ordine temporale una serie di metodiinvocati da questi oggetti.

- Diagrammi delle classi che definiscono la struttura statica del modello.Contengono un insieme di pacchetti, classi, interfacce e loro relazioni.Questi oggetti formano una struttura classe che e la vista progettualelogica di tutto o parte del sistema software.

- Diagramma dei componenti che modellano la struttura del softwareincludendo le dipendenze tra il codice sorgente, codice binario e com-ponenti eseguibili.

- Diagrammi delle attivita che modellano gli aspetti dinamici del siste-ma. Descrivono il flusso guidato dai processi interni e rappresenta ilcomportamento interno di un elemento del modello.

Si puo costruire un Object Oriented Model per le seguenti ragioni:

- Con lo scopo di modellare orientandosi ad oggetti, e necessario man-tenere il modello come documentazione o come requisito legale.

- Per aiutare a mantenere il sistema, e possibile utilizzare i diagrammicome mappa all’interno del codice e come veicolo per capire che cosa ilcodice fa.

- Per generare oggetti da un Object Oriented Model per un’analisi diprogettazione del database relazionale

- Per usare sorgenti java o java beans o applicazioni generate.

Con un Object Oriented Model e possibile creare oggetti in modo organizzatoe coerente utilizzando pacchetti. I sistemi informativi complessi possono es-sere rappresentati nell’eredita logica dei pacchetti nei quali e possibile creare

Page 60: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

50 Strumenti utilizzati

altri pacchetti. Permette facilmente di visualizzare e manipolare oggetti. Unworkspace definisce l’intero insieme di informazioni di cui si necessita permodellare i processi con PowerBuilder.

4.2.4 Business Process Model

Un Business Process Model (BPM) [Syb01b] e un modello concettuale ilquale fornisce una descrizione dei processi logici e i ruoli dal punto di vistadei patners commerciali. Viene usato un diagramma che mostra l’interazionetra i processi, i flussi, i messaggi e i protocolli di comunicazione. In un BPMpossono essere trattati i problemi progettuali senza preoccuparsi dei dettaglifisici implementativi. Vengono trattati principalmente i processi e i loro flussiche sono facili da capire e manipolare. Per costruire un PDM vengono cat-turati i processi del mondo reale (generali o molto specifici) all’interno di unarappresentazione logica che puo essere studiata e manipolata per sosteneremodi diversi e migliori per compiere questi processi. Si puo costruire unBPM per per:

- Capire i processi di business

- Fornire processi business

- Rappresentare graficamente l’interazione tra organizzazioni all’internodi un’azienda.

- Illustrare la durata di vita di un processo

4.3 Visual Expert

Visual Expert [Nov01] istantaneamente analizza il codice, i dati e i commentidell’applicazione (vedi fig 4.2). Tutte le informazioni estratte sono visualizza-te sullo schermo o formattate in documentazione che viene automaticamentegenerata. Possono essere analizzate:

- Tutte le applicazioni sviluppate con PowerBuilder dalla versione 4 alla9.

- Le applicazioni di qualsiasi dimensione (Visual Expert puo analizzarecentinaia di diverse librerie di PowerBuilder)

- Framework e librerie di oggetti sviluppate in PowerBuilder

Page 61: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

4.3 Visual Expert 51

Figura 4.2: Funzionalita Visual Expert.

Visual Expert include l’analisi del codice sorgente (da 10 a 30 MBytes dicodice). I commenti inseriti nel codice sorgente non sono richiesti da VisualExpert per analizzare l’applicazione, comunque, se l’applicazione contienecommenti, Visual Expert li include nelle informazioni che vengono forniteagli sviluppatori. Dopo aver aperto un progetto vengono visualizzate unlista di voci ordinate per tipo. Ogni voce e un possibile punto d’ingressoper esplorare l’applicazione. Il layout della barra di navigazione dipende daicomponenti selezionati nella treeview. Le opzioni della barra di navigazionesono raggruppate in quattro sezioni. Ogni sezione fornisce un tipo diverso diinformazioni:

- Descrizione: informazioni dettagliate riguardo al componente seleziona-to quali descrizione del contenuto (controlli, funzioni, ...), localizzazione(PBL, oggetti, ...), possibili antenati e discendenti.

- Analisi d’impatto: oggetti collegati al componente selezionato e nelcaso in cui il componente selezionato venga modificato quali oggettipossono essere coinvolti.

- Architettura: l’architettura dell’applicazione riguardo il componenteselezionato come gli antenati, tutti i discendenti, la struttura del com-ponente e componenti di cui e costituito (controlli, metodi, attributi).

- Miscellanea: localizzazione del componente nell’applicazione, graficapreview (window, userobject, datawindow), voci inutilizzate (non refe-renziate) nel componente (funzioni e attributi).

Nella barra di navigazione, qualche opzione della sezione descrizione mostrala relazione Contenitore/Contenuto tra componenti, che indica il componente

Page 62: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

52 Strumenti utilizzati

contenitore o contenuto nel componente selezionato. Visual Expert mostragli antenati e i discendenti di ogni oggetto ereditato (window, userobject emenu). Questo permette di capire sia le caratteristiche di un’applicazioneesistente, sia di un framework che viene utilizzato. Qualche volta e pos-sibile conoscere dove i controlli sono localizzati su una finestra, ma non ilcodice sorgente. Visual Expert permette facilmente di navigare all’interodell’applicazione anche nel caso in cui sia ampia e complessa e aiuta nellosviluppo e nel mantenimento di un’applicazione, permettendo facilmente ainuovi sviluppatori di interagire con l’applicazione. Durante lo sviluppo eil mantenimento dell’applicazione gli sviluppatori ripetutamente riscontranoproblemi attraverso l’analisi di impatto. Quando il codice viene modificato,si ha la necessita di essere certi che queste modifiche non abbiano un impattonegativo sul resto dell’applicazione, perche c’e sempre un rischio, che deveessere considerato, di riscontrare errori regressivi in seguito alle modifiche ap-portate. PowerBuilder non fornisce questi tipi di tool, ma permette ricercheglobali spesso pero incomplete. Visual Expert aiuta nel fornire l’analisi d’im-patto che permette di conoscere quali componenti utilizzano l’oggetto sucui si sta lavorando e visualizzare velocemente il codice sorgente dopo unaricerca. Le analisi d’impatto sono possibili su tutti i componenti dell’appli-cazione quali una colonna di un database, un attributo, un metodo (funzionio eventi), una variabile o una funzione globale.

Le informazioni possono essere esportate per generare automaticamentela documentazione. Diversi tipi di documentazione sono supportati da Vi-sual Expert. Queste sono chiamate ”templates”. Visual Expert viene dis-tribuito con trenta diversi templates. I risultati possono essere documentiRTF, HTML o TXT. Le informazioni visualizzate sulle schermo sono piucomplesse e flessibili che la documentazione tecnica stampata. Vengono for-nite molte informazioni dettagliate sull’applicazione e viene adattato il lorocontenuto in base alle necessita. Questo permette di migliorare la qualita delcodice sorgente. I progetti necessitano di regole di sviluppo per:

- Normalizzare il codice

- Semplificarne la lettura

- Anticipare la manutenzione

Sebbene ci sia solitamente il desiderio di applicare queste regole, il tempo espesso troppo poco e gli sviluppatori non sempre si ricordano di applicaretutte le regole. D’altra parte le regole devono essere applicate all’inizio delprogetto perche sara difficile farlo dopo. Visual Expert offre una soluzione:

- Facile da utilizzare per gli sviluppatori

Page 63: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

4.3 Visual Expert 53

- Implementata in pochi minuti all’inizio del progetto

- Non comporta molto tempo durante lo sviluppo

- Salvata spesso durante il ciclo di mantenimento.

Visual Expert aiuta durante tre fasi:

- Prima dello sviluppo, Visual Expert aiuta a definire le regole di sviluppo(e possibile utilizzare quelle definite di default)

- Durante lo sviluppo, Visual Expert aiuta ad applicare le regole e cor-reggere gli errori.

- Dopo lo sviluppo, Visual Expert permette di ricercare i componenti chenon concordano con le regole dell’applicazione o i componenti utilizzati.

Qualche regola deve essere definita. La nomenclatura standard viene definitaper:

- Tipo oggetto (windows, userobject, . . . )

- Tipo funzione (funzione menu, funzione window, . . . )

- Tipo attributo (long, integer, . . . )

- Il loro scope (globale, locale, . . . )

Per avere informazioni significanti nel codice sorgente, e fortemente racco-mandato commentare gli script in modo strutturato. Per questa ragione unoscript header dovrebbe essere definito all’inizio di ogni script. Questo in-clude differenti tipi di informazioni (nome funzione, scopo funzione, prototipo. . . ). Visual Expert aiuta ad analizzare l’intera applicazione per trovare icomponenti che:

- Non concordano con le regole di sviluppo

- Non sono commentati

- Contengono troppe linee di codice

- Hanno troppi livelli di eredita

- Sono inutilizzati nell’applicazione.

Per componenti inutilizzati vengono intesi i componenti per cui Visual Expertnon trova referenze statiche nel codice sorgente. Questo non significa che icomponenti non sono utilizzati nell’applicazione:

Page 64: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

54 Strumenti utilizzati

- Ogni voce non menzionata come inutilizzata e referenziata qualchevolta nell’applicazione.

- Per ogni voce inutilizzata e possibile utilizzare Visual Expert GlobalSearch per riscontrare se questa voce viene referenziata dinamicamentenel codice.

- Qualche referenza dinamica non viene definita nel codice PB (per istan-za, il nome del componente puo essere caricato da un database). Inquesto caso, Visual Expert non trovera il nome di questo componente.

Le informazioni analizzate da Visual Expert provengono oltre che da un’anal-isi dei file del codice sorgente PowerBuilder (PBL) e da una comprensionesintattica di PowerBuilder e SQL, da un’analisi delle chiamate da Power-Builder a componenti esterni (stored procedure, DLL, . . . ). Questo aiutaa valutare l’impatto di queste componenti sull’applicazione PowerBuilder. Ifile sorgenti non PowerBuilder non possono essere aggiunti all’analisi (storedprocedures, file .INI, . . . ) e non puo essere quindi analizzata la loro sintassi.Se l’applicazione contiene chiamate a stored procedures e utile analizzare lerelazioni tra il codice PowerBuilder e queste procedure. Visual Expert per-mette di analizzarle elencando tutte le procedure chiamate e trovare tutte lereferenze a stored procedure all’interno dell’applicazione PowerBuilder (ana-lisi d’impatto). Comunque Visual Expert non si connette al database e nonpuo automaticamente leggere il loro codice sorgente. Se si vuole visualizzareil codice di una stored procedure la si deve esportare in un file con lo stessonome della stored procedure che viene referenziata nel codice di PowerBuildered includere questo file esportato all’interno del progetto di Visual Expert.

4.4 PBDelta

PBDelta e un utility progettata per trovare le differenze tra versioni di codicesorgente di applicazioni. PBDelta fornisce tools standard per fare il parsingdi file sorgenti e confrontare parti di programma. PBDelta fornisce quindi lapossibilita di:

- riscontrare ricorsivamente le differenze tra file, includendo il supportoa librerie PowerBuilder

- effettuare il parser di codice sorgente PowerBuilder o Java.

- effettuare il merge di codice sorgente (Merge Edit)

- confrontare linee di codice (Line compare)

Page 65: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

4.4 PBDelta 55

PBDelta e utilizzato per produrre reports sui cambiamenti fatti tra versionidi file utilizzati per sviluppare applicazioni PowerBuilder. I reports possonoincludere confronto tra librerie, oggetti, file risorse o file .INI.

Page 66: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

56 Strumenti utilizzati

Page 67: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

Capitolo 5

PowerBuilder Fondation Class

Questo capitolo introduce le PowerBuilder Fondation Class Library (PFC)e descrive i servizi forniti che possono essere utilizzati in un’applicazione.Infine vengono presentati gli interventi svolti sulle PowerBuilder FondationClass Library utilizzate dall’applicazione Aimag. Questi interventi sono statinecessari per garantire un corretto aggiornamento delle PFC.

5.1 PowerBuilder Fondation Class Library

La PowerBuilder Foundation Class Library [Syb03b] e un insieme di oggettiche possono essere utilizzati per sviluppare librerie di classi avanzate e orien-tate agli oggetti. E scritta in PowerBuilder e utilizza molte tecniche avanzatedi codifica di PowerBuilder.

5.1.1 Librerie ed Oggetti PFC

La PowerBuilder Foundation Class Library e costituita da un insieme dilibrerie PowerBuilder che contengono gli oggetti antenati e discendenti pervengono utilizzati per scrivere un’applicazione con le PowerBuilder FondationClass Library. Prima di utilizzare oggetti delle PFC bisogna aggiungere lelibrerie delle PFC nel percorso delle librerie dell’applicazione. Gli oggettiprincipalmente utilizzati con PFC sono le windows, i menu, le dataWindowe gli user object. Gli user object sono di due tipi: visual user objects e classuser objects. I visual user objects sono controlli visuali riutilizzabili o insiemedi controlli visuali con comportamento predefinito. Le PFC forniscono duetipi di Visual User Objects:

- Standard visual user objects: controlli utilizzati in una finestra di

Page 68: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

58 PowerBuilder Fondation Class

PowerBuilder con comportamenti predefiniti che forniscono un’inte-grazione completa con servizi PFC.

- Custom visual user objects: controlli utilizzati in una finestra di Power-Builder che forniscono funzionalita avanzate che vengono utilizzate insituazioni specifiche.

I class user objects sono controlli non visuali riutilizzabili che possono essereutilizzati per implementare processi senza componenti visuali. PFC includedue tipi di Class User Objects:

- Standard class user objects: ereditano le loro definizioni da ogget-ti di sistema costruiti in PowerBuilder. PFC fornisce standard classuser objects per transazioni, errori e tutti gli altri oggetti di sistemaestendibili.

- Custom class user objects: ereditano la loro definizione dalle classi dioggetti non visivi di PowerBuilder. Il tipo delle classi degli User Objectspermette di definire una classe oggetto. PFC utilizza custom class userobjects per implementare molti dei suoi servizi e fornisce funzioni perabilitare istanze di questi oggetti servizio. Fornisce anche variabili diriferimento, le quali sono puntatori ad un oggetto istanziato e possonoessere utilizzate per accedere ad una variabile d’istanza, a funzioni edeventi di un oggetto.

PowerBuilder supporta funzioni globali e funzioni oggetto. PFC forniscemolti dei processi attraverso funzioni user-object. Windows, user objects econtrolli hanno un insieme predefinito di eventi. PFC estende questi perdefinire eventi users per molti oggetti PFC. Ci sono tre tipi di eventi PFC:

- Eventi PowerBuilder predefiniti: vengono eseguiti quando l’utente for-nisce un’azione che induce il sistema operativo ad invocare l’evento.

- Eventi User predefiniti: vengono eseguiti quando l’utente fornisce un’azione(come la selezione di un menu) che induce le PFC a invocare l’eventouser.

- Eventi User vuoti: vengono eseguiti quando l’utente fornisce un’azione(come la selezione di un menu) che induce le PFC a invocare l’eventouser.

Molti eventi sono invocati dalle voci dei menu, utilizzando il message routere altri vengono invocati dal codice dell’applicazione specifica. PFC includemolti processi pre-evento con i quali viene aggiunto codice che estende le

Page 69: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

5.1 PowerBuilder Fondation Class Library 59

funzionalita degli eventi associati e fornisce un numero di oggetti utenti consoli attributi. Questi oggetti utente:

- Contengono variabili d’istanza pubbliche

- Sono autoistanzianti

- Hanno il nome che finisce con attrib

- Sono speso usati per passare informazioni ai processi pre-evento PFC

- Sono estendibili (e possibile definire variabili d’istanza aggiuntive)

Funzioni ed eventi sono simili in molti casi: accettano argomenti e restitui-scono valori. Ma ci sono differenze tra funzioni ed eventi mostrate in tabella5.1

Caratteristica Funzioni Eventi

Chiamata a metodi Invocare una funzione non Invocare un evento nonnon esistenti esistente in fase di esistente con TriggerEvent

esecuzione produce un errore restituisce un valoreuguale a -1

Processare lo Le funzioni sovrascrivono Gli eventi possono estenderescript ancestor lo script ancestor (sebbene o sovrascrive gli script

e possibile chiamare funzioni ancestorancestor utilizzando la parolachiave Super)

Accesso Le funzioni oggetto possono Gli eventi hanno sempreessere pubbliche, private accesso pubblicoo protette

Overloading Le funzioni con lo stesso Gli eventi non possononome possono avere essere overloadeddifferenti argomenti

Tabella 5.1: Eventi e Funzioni a confronto

5.1.2 Come PFC utilizza il livello estensione

Tipicamente vengono modificati gli oggetti delle PFC per integrare funzionie oggetti di un’ampia applicazione. Senza il livello di estensione delle PFCsi possono verificare problemi qualora una nuova versione di PFC venga rea-lizzata. PFC implementa un livello estensione e tutti gli oggetti estensione

Page 70: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

60 PowerBuilder Fondation Class

risiedono in PBL separate (vedi tabella 5.2). Gli oggetti nelle librerie a li-vello antenato contengono tutte le variabili d’istanza, gli eventi e le funzioni.Gli oggetti nelle librerie a livello estensione sono discendenti non modificatidegli oggetti corrispondenti nelle libreria antenato, ma attraverso l’ereditahanno accesso alle variabili d’istanza, agli eventi e alle funzioni della libreriaantenato. Gli oggetti a livello antenato utilizzano il prefisso pfc , mentre glioggetti a livello estensione hanno lo stesso nome dei loro antenati, ma senzail prefisso pfc . Per esempio, l’antenato per l’oggetto servizio della DataWin-

Contenuto Livello Antenato Livello Estensione

Servizi Applicazione e globali PFCAPSRV.PBL PFEAPSRV.PBLServizi DataWindow PFCDWSRV.PBL PFEDWSRV.PBLClass User Objects Visuali PFCMAIN.PBL PFEMAIN.PBLe StandardServizi di utilita PFCUTIL.PBL PFEUTIL.PBLServizi window PFCWNSRV.PBL PFEWNSRV.PBL

Tabella 5.2: Ultima versione di PFC

dow e pfc n cst dwsrv e il discendente a livello-estensione e n cst dwsrv. Inn cst dwsrv e possibile aggiungere variabili e codice. PFC e costituito oltreche dall’insieme di librerie (PBLs) da un database contenente tabelle riguar-danti il servizio di messaggi di errore ed il servizio di sicurezza. PFC e ilfondamento sul quale e possibile costruire librerie di classi e definire anchepropri servizi.

Scegliere una strategia per l’utilizzo di un livello estensione

Sebbene ci siano molti modi per estendere e implementare le PFC, ci sonodue principali strategie di estensione delle PFC:

- Creare un livello estensione intermedio (vedi fig. 5.1)

- Utilizzare il livello estensione delle PFC esistente

Creare un nuovo o piu livelli di estensione tra il livello antenato delle PFCe il livello estensione delle PFC comporta ridefinire l’eredita delle PFC. Glioggetti del livello intermedio creato devono discendere dagli oggetti antenatidelle PFC, mentre gli oggetti a livello estensione dovranno discendere daglioggetti del livello estensione intermedio. Perche gli oggetti delle PFC uti-lizzino il tipo di dato degli oggetti a livello estensione delle PFC quando levariabili di riferimento vengono dichiarate, questi cambiamenti devono es-sere resi disponibili immediatamente. Creare un livello intermedio ha duevantaggi:

Page 71: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

5.1 PowerBuilder Fondation Class Library 61

pfc_w_sheet

corp_w_sheet

w_sheet

w_product_sheet w_employee_sheet w_orders_sheet

Figura 5.1: Livello estensione tra il livello antenato e il livello estensione dellePFC

- I cambiamenti fatti sugli oggetti a livello estensione intermedio sonodisponibili per gli oggetti discendenti nel livello estensione delle PFC

- Lo sviluppatore ha controllo totale sul livello estensione delle PFC.

Il prefisso che viene utilizzato per gli oggetti del livello estensione intermedioviene scelto in base all’uso o alle funzionalita fornite dal livello creato. Questotipo di livello di estensione da agli sviluppatori completo controllo del livellodi estensione delle PFC. Si puo

- modificare e utilizzare gli oggetti a livello estensione

- modificare e ereditare dal livello di estensione finestre incluse la w master

- modificare ed ereditare dal livello estensione menu

Utilizzare il livello estensione esistente delle PFC ha due vantaggi:

- Gli sviluppatori possono condividere un insieme comune di PBLs du-rante la fase di sviluppo

- Gli utenti possono condividere un insieme comune di PBLs quandovengono sviluppate applicazioni PFC multiple.

Ma ha anche diversi svantaggi:

Page 72: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

62 PowerBuilder Fondation Class

pfc_w_sheet

w_sheet

w_product_sheet w_employee_sheet w_orders_sheet

app_w_sheet

Figura 5.2: Livello estensione tra il livello estensione delle PFC el’applicazione

- Gli sviluppatori non possono modificare gli oggetti a livello estensione.I cambiamenti sono persi quando l’amministratore crea una nuova ver-sione degli oggetti.

- C’e solo un livello estensione

- Gli sviluppatori non possono estendere oggetti a livello estensione.Perche le PFC utilizzino il tipo di dato degli oggetti a livello esten-sione quando vengono dichiarate le variabili di riferimento, i cambia-menti degli oggetti discendenti non sono automaticamente disponibiliattraverso le PFC.

E possibile aggiungere, modificare ed estendere le PFC attraverso oggettinel livello estensione delle PFC. Quando si lavora utilizzando questo tipo distrategia, gli sviluppatori utilizzano i servizi delle PFC, ma non modificanonessun oggetto nel livello di estensione delle PFC. Tutte le estensioni svilup-pate devono essere fatte attraverso l’eredita. Per esempio, gli sviluppatoripossono aggiungere funzionalita specifiche dell’applicazione per una finestrasheet e utilizzarla come ancestor per tutte le finestre sheet (vedi fig 5.2.

Page 73: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

5.1 PowerBuilder Fondation Class Library 63

5.1.3 Componenti PFC

PFC e costituita da:

- insieme di PBL (di cui si e parlato nella sezione precedente)

- un database

- un esempio di codice

- una semplice applicazione

PFC ha un database locale pfc.db. Questo database contiene sei tabelle:Messages (la quale contiene servizi per i messaggi d’errore) e Security apps,Security groupings, Security info, Security template e Security users (le qualicontengono servizi di sicurezza). Viene utilizzato il codice d’esempio PFC pervedere oggetti e servizi PFC in azione e imparare come implementare le piucomuni funzionalita PFC. Viene utilizzata PEAT (la semplice applicazioned’esempio) per vedere un esempio di PFC utilizzate in progetto.

5.1.4 Servizi forniti

I servizi abilitati hanno molti vantaggi inclusi:

- Minimizzare il numero di oggetti antenati tipicamente trovati nel canaleereditario

- Minimizzare applicazioni (utilizzare solo i servizi di cui si ha bisogno)

- Costruire applicazioni sia semplici che complesse

- Facilita di uso e di mantenimento

L’orientamento del servizio delle PFC riflette il concetto di delegazione orien-tata ad oggetti, la quale suddivide l’oggetto principale e la sua implemen-tazione in diversi oggetti ereditati. PFC utilizza due tipi di relazioni per ladelegazione:

- Relazioni aggregate: l’oggetto servizio non puo funzionare in dispartedal suo proprio oggetto. Questa e qualche volta chiamata relazioneparte intera. Per esempio, l’oggetto utente visivo DataWindow u dwutilizza l’oggetto utente n cst dwsrv querymode per i servizi sullemodalita di interrogazioni.

Page 74: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

64 PowerBuilder Fondation Class

- Relazioni associate: l’oggetto servizio puo funzionare da solo. Per esem-pio, i servizi stringa sono forniti dall’oggetto utente n cst string e sonocompletamente disponibili per gli oggetti dell’applicazione.

Le librerie PowerBuilder Foundation Class forniscono molti servizi qualiservizi per la gestione dell’applicazione, delle datawindow, delle window, deimenu, servizi per il ridimensionamento degli oggetti, la conversione di tipi didato, la gestione delle date e del tempo, le gestione dei file e del file .INI ecc.,ma analizzero solamente i servizi dell’applicazione e presentero quelli delledatawindow e delle window.

I servizi forniti per l’applicazione sono i seguenti:

- DataWindow caching

- Debugging

- Error

- Preferenze dell’applicazione

- Oggetti utilizzati piu recentemente

- Sicurezza

- Registrazione delle transazioni

E possibile controllare i servizi dell’applicazione attraverso n cst appmanager,il gestore dell’applicazione. Vengono utilizzate le funzioni del gestore dell’ap-plicazione per abilitare e disabilitare i servizi dell’applicazione.

Il servizio DataWindow caching bufferizza i dati per gli oggetti dellaDataWindow e mettendo le righe in memoria, aiuta a ridurre gli acces-si al database ed ottimizza la performance dell’applicazione. Il servizioDataWindow caching sostiene le seguenti sorgenti dei dati:

- Oggetto DataWindow

- Dichiarazione SQL

- Controllo DataWindow

- Controllo DataStore

- Righe di un array

- Un file

Page 75: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

5.1 PowerBuilder Fondation Class Library 65

PFC abilita DataWindow caching attraverso l’oggetto utente n cst dwcache.Il servizio di debugging automaticamente mostra i messaggi quando le

condizioni delle PFC indicano la presenza di un errore. Il message routerPFC utilizza il servizio di debugging per controllare la visualizzazione deimessaggi di errore quando un evento invocato non esiste.

Viene utilizzato il servizio di preferenza dell’applicazione per salvare erecuperare le informazioni utente e dell’applicazione utilizzando anche il file.INI o il registro Windows. Salvare e caricare gli ambienti dell’applicazioneha due vantaggi:

- Persistenza: salvando lo stato dell’applicazione, gli utenti non devonoridefinire le preferenze riguardo all’applicazione ogni volta che inizial’applicazione.

- Facile da mantenere: impostando esternamente gli ambienti dell’ap-plicazione, e possibile modificare gli ambienti dell’applicazione senzamodificare il codice in n cst appmanager.

PFC abilita il servizio sulle preferenze dell’applicazione attraverso l’oggettoutente n cst apppreference. Il servizio di preferenza dell’applicazione au-tomaticamente carica gli ambienti quando l’applicazione viene aperta e lilocalizza quando l’applicazione viene chiusa. Queste informazioni sono loca-lizzate in alcuni registri (disponibili su Windows) o in un file .INI (disponibilesu tutte le applicazioni).

Si puo utilizzare il servizio che visualizza gli oggetti utilizzati piu recente-mente (MRU) per visualizzare le finestre sul File menu utilizzate piu recente-mente. Di default questa lista mostra cinque voci, ma si puo incrementare ilnumero. PFC abilita il servizio MRU attraverso l’oggetto utente n cst mru.Il servizio MRU automaticamente carica le informazioni MRU quando l’ap-plicazione si apre. Il servizio salva informazioni in alcuni registri (disponibilisu Windows) o in un file .INI (disponibile su tutte le applicazioni).

Il servizio per i messaggi d’errore fornisce molte caratteristiche per visua-lizzare i messaggi d’errore. E possibile visualizzare i messaggi in MessageBoxdi PowerBuilder o nella dialog box di w message delle PFC. Le opzioni divisualizzazione offrono le seguenti caratteristiche:

- Message logging: message logging per un file, incluso il supporto dellapiattaforma.

- Supporto MAPI: la notificazione di errore avviene automaticamenteattraverso e-mail.

- Message Database: accesso ai messaggi predefiniti del database.

Page 76: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

66 PowerBuilder Fondation Class

- Sostituzione di parametri simbolici: i messaggi possono avere argomentiche vengono sostituiti in fase di esecuzione.

- Opzioni inattese: i messaggi sono loggati (o mandati per e-mail) manon visualizzati.

Se viene usata la dialog box w message si hanno opzioni aggiuntive:

- L’utente puo stampare i messaggi e puo eventualmente aggiungerecommenti.

- La dialog box w message si puo chiudere automaticamente dopo unnumero specifico di secondi.

Se si vogliono mettere messaggi in un database, si puo usare la tabelladei messaggi PFC.DB del database dell’applicazione che contiene messaggid’errore predefiniti delle PFC.

Il servizio della sicurezza delle PFC e in grado di gestire la sicurezzadi un’applicazione. Include componenti amministrative e un oggetto per lasicurezza in fase di esecuzione, n cst security. Per utilizzare il sistema disicurezza delle PFC si devono prima definire utenti e gruppi che possonoaccedere a finestre, menu, oggetti utente e controlli e solo dopo aggiungere ilcodice all’applicazione.

Il servizio di registrazione delle transazioni tiene traccia degli oggettitransazione utilizzati dall’applicazione. PFC abilita la registrazione delletransazioni attraverso l’oggetto utente n cst trregistration. Viene utilizza-to questo servizio per tenere traccia delle transazioni quando l’applicazioneutilizza piu di una transazione. Quando l’applicazione viene chiusa questooggetto automaticamente distrugge tutte le transazioni registrate.

Le applicazioni PowerBuilder solitamente utilizzano intensamente i con-trolli DataWindow. Le PFC forniscono un’ampia varieta di servizi Data-Window che possono essere usati per aggiungere caratteristiche fortementeproduttive ad un’applicazione. PFC implementa i servizi DataWindow at-traverso un insieme di custom class user objects che discendono da un comuneantenato. L’oggetto antenato contiene funzioni, eventi e variabili d’istanzache vengono richieste da servizi multipli. Ogni servizio DataWindow contienefunzioni, eventi e variabili d’istanza aggiuntivi. Per accedere ai servizi delleDataWindow si possono creare oggetti DataWindow che si basano su oggettiu dw. I servizi antenati della DataWindow contengono variabili d’istanza,eventi e funzioni per usare tutti i servizi dell’applicazione. PFC abilita tuttii servizi di base della DataWindow attraverso l’oggetto utente n cst dwsrv. Iservizi della DataStore sono abilitati dal DataStore n ds attraverso l’oggettoutente n cst dssrv.

Page 77: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

5.1 PowerBuilder Fondation Class Library 67

Le PFC implementano servizi anche per le window attraverso funzioni,eventi e variabili d’istanza contenute in w master e nei suoi discendenti eattraverso i custom class user objects. Per accedere ai servizi per le win-dow bisogna creare window che discendono da uno dei discendenti della win-dow w master come w child, w frame, w main, ecc. La window w mastercontiene:

- funzioni per abilitare e disabilitare i servizi window implementati incustom class user objects.

- variabili d’istanza che permettono di referenziare ogni funzione, evento,variabile d’istanza dei class user objects.

- eventi che forniscono servizi window e chiamano funzioni custom classuser object.

- eventi user vuoti al quale si puo aggiungere codice per fornire processispecifici all’applicazione.

5.1.5 Message Router

PFC utilizza un message router per la comunicazione tra menu e finestre.Questo meccanismo di passaggio dei messaggi viene costruito all’interno deimenu e finestre PFC. Sebbene si possa utilizzare il message router per co-municare tra alcuni oggetti e una finestra, viene tipicamente utilizzato perinviare messaggi da menu a finestre. Implementa un algoritmo di ricercaper determinare l’oggetto appropriato che deve ricevere il messaggio. Grazieall’uso del message router lo script del menu necessita di conoscere l’eventoutente da chiamare e non la finestra corrente o il nome del controllo associato,e le finestre non devono mantenere gli eventi utente chiamati, ma semplice-mente gli eventi utente della DataWindow. Questo riduce il numero di eventiutente mantenuti dalla finestra. Il messaggio inviato da una funzione delmessaggio router e attualmente una stringa contenente il nome di un eventoutente che viene utilizzato da una finestra o da uno dei suoi controlli. Il mes-sage router include messaggi di debugging costruiti per fornire informazionid’errore. Quando un utente seleziona una voce di menu lo script dell’even-to Clicked chiama la funzione Of SendMessage del menu, passando il nomedell’evento utente che e stato chiamato. Of SendMessage chiama la funzioneOf SendMessage di n cst menu la quale chiama l’evento pfc MessageRouterdella finestra il quale a sua volta chiama lo specifico evento.

Page 78: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

68 PowerBuilder Fondation Class

5.2 Analisi tabelle PFC

La gestione della sicurezza avviene tramite il servizio sicurezza fornito dallePFC. Come detto in precedenza per utilizzare il sistema di sicurezza dellePFC si devono prima definire utenti e gruppi che possono accedere a finestre,menu, oggetti utente e controlli. Per far questo devono essere popolate letabelle presenti in fig. 5.3.Nella tabella security apps vengono definite le applicazioni di cui si vuolegestire la sicurezza, mentre nella tabella security template sono definiti tuttii controlli dell’applicazione.Nella tabella security info viene definito lo stato di ogni controllo per ogniuser name. Ogni controllo puo essere definito come invisibile (’I’), abilitato(’E’) o disabilitato (’D’).Nella tabella security users vengono definiti tutti gli user esistenti ognuno deiquali puo essere di tipo utente (0) o di tipo gruppo (1). La priorita assumeun valore compreso tra 0 (priorita alta) a 5001 (priorita bassa). Solitamenteviene assegnata la priorita 0, cioe piu alta agli utenti rispetto a quella asseg-nata ai gruppi (5000).Nella tabella security groupings vengono definiti tutti i gruppi di cui fannoparte gli utenti.

5.3 Intervento sulle PFC

L’applicazione utilizzata in Aimag e stata costruita utilizzando la Power-Builder Fondation Class Library. Interventi realizzati in seguito alla mi-grazione dell’applicazione della versione 5 alla versione 7 hanno comportatodelle modifiche ad alcuni oggetti delle PFC. Queste modifiche hanno coin-volto oggetti del livello estensione, ma anche oggetti del livello ancestor (sucui non e consigliato effettuare modifiche). Questo ha portato ad avere pro-blemi al momento del cambio di versione delle PFC. Grazie al tool PBDelta sie potuto confrontare le PFC della versione 5 originale con quella modificata.Si e cosı osservato che la maggior parte delle modifiche apportate erano staterealizzate per migrare le PFC alla versione 7 evitandone cosı la sostituzione.Altre modifiche riguardavano invece personalizzazioni per Aimag. Una voltariscontrate le personalizzazioni sono state da me inserite in due livelli: unlivello detto ”cuscinetto” e un livello detto ”estensione” (vedi fig. 5.4). I duelivelli sono stati creati con lo scopo di lasciare inalterate le PFC originali,evitando cosı problemi ogni qual volta si verifichi un cambio di versione dellePFC. Se l’applicazione non fosse gia costruita sulle PFC sarebbe bastatocreare il livello cuscinetto. La creazione del livello estensione comporta una

Page 79: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

5.3 Intervento sulle PFC 69

Figura 5.3: Tabelle PFC riguardanti la sicurezza

Page 80: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

70 PowerBuilder Fondation Class

w_product_sheet w_employee_sheet w_orders_sheet

w_sheet_generale

pfc_w_sheet

corp_w_sheet

w_sheet

Figura 5.4: Livello cuscinetto e livello estensione creato

Page 81: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

5.3 Intervento sulle PFC 71

ridefinizione dell’eredita degli oggetti ereditati dalle PFC (PFE) in modo chevengano ereditati dai nuovi oggetti presenti nel livello estensione creato. Nellivello estensione sono presenti solo gli oggetti (ereditati dal livello ancestordelle PFC) che hanno subito modifiche in modo da identificarli.Il primo passo nella creazione di un’applicazione basato sulle PFC e config-urare e abilitare l’application manager (n cst appmanager). Nell’applicationmanager sono istanziate variabili e funzioni per mantenere gli attributi del-l’applicazione, l’applicazione, i file INI o le chiavi di registro e il file Help del-l’applicazione. Gli oggetti [Syb03b], le funzioni e gli eventi PFC richiedonoche venga definito l’application manager come gnv app con un tipo di daton cst appmanager (o un discendente di n cst appmanager). Nel caso dell’ap-plicazione Aimag e stato creato un discendente di n cst appmanager denomi-nato n cst appmanager generale e quindi e stata modificata la dichiarazionedella variabile globale da ”n cst appmanager gnv app” a ”n cst appmanagergenerale gnv app”. Con il diagramma delle attivita (vedi fig 5.5) vienerappresentata la configurazione dell’application manager utilizzato nell’ap-plicazione. Per visualizzare la finestra di logon viene utilizzata la funzioneOf LogonDlg che visualizza la dialog box w logon in cui inserire ID e passworde chiama l’evento pfc Logon di n cst appmanager generale quando l’utenteclicca ok [Syb03b]. La finestra di logon e stata personalizzata per Aimag eper questo motivo ho creato una finestra chiamata w logon generale eredita-ta da w logon che e stata inserita nella libreria ge ancestor.pbl. Si e dovutoridefinire la funzione Of LogonDlg in modo che richiamasse w logon generalee non w logon. Per visualizzare una screen splash (w splash generale) vienechiamata la funzione Of Splash prima che venga aperto il frame principale.Anche la splash screen e stata personalizzata, quindi il procedimento utilizza-to e lo stesso di quello riguardante la finestra w logon. Per costruire un’ap-plicazione MDI con PFC vengono utilizzate le finestre w frame e w sheetcome ancestor per le finestre frame e sheet. Essendo stata personalizza-ta w sheet ho creato sia una window corp w sheet (ereditato pfc w sheet)che una window w sheet generale (ereditata da w sheet) contenente le per-sonalizzazioni presenti in w sheet. Ho cambiato poi l’eredita di w sheet dapfc w sheet a corp w sheet. Sono state create sia corp w sheet che w sheet,perche quasi tutte le window dell’applicazione sono ereditate da w sheet,quindi le personalizzazioni non avrebbero effetto se fossero state inserite so-lo in w sheet generale. Quando tutte le window dell’applicazione sarannoereditate da w sheet generale sara possibile eliminare corp w sheet e verraridefinita l’eredita delle PFC.

Page 82: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

72 PowerBuilder Fondation Class

Figura 5.5: Activity Diagram riguardante la configurazione dell’applicationmanager.

Page 83: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

5.3 Intervento sulle PFC 73

5.3.1 Modifiche PFC5Base - PFC5Aimag

Le differenze tra le PFC 5.0 Base e le PFC 5.0 AIMAG sono state riscontrategrazie all’utilizzo del tool PBDelta. Le differenze servono per identificare lepersonalizzazioni effettuate sulle PFC 5.0 da AIMAG. Non tutte le differenzesono state riportate sulle PFC 7.0 in quanto alcune di queste sono state fat-te durante la precedente migrazione e sono quindi gia parte integrante dellePFC 7.0. Ci sono oggetti che sono stati cancellati nelle PFC 5.0 di AIMAG(d pfcsecurity appllications). Ci sono oggetti che sono stati inseriti nellePFC 5.0 di AIMAG (n nst filesrvmac, n cst filesrvsol2, n cst platformmac,n cst platformsol2, pfc n cst filesrvmac, pfc n cst filesrvsol2, pfc n cst plat-formmac, pfc n cst platformsol2, pfc w print, u rb prova, w print); la quasitotalita dei quali fanno gia parte delle PFC 7.0.

5.3.2 Modifiche PFC5Aimag - PFC7

Le differenze tra le PFC 5.0 AIMAG e le PFC 7.0 di Sybase sono anch’essestate riscontrate grazie all’utilizzo del tool PBDelta. Il controllo effettua-to rispetto alle PFC 7.0 di Sybase e servito per identificare quali sono glioggetti che non sono piu presenti nelle PFC 7.0, indentificati con il simbo-lo ”D”. Ci sono alcuni oggetti che sono stati inseriti nella precedente mi-grazione e che sono gia parte integrante delle PFC 7.0 (pfc n cst filesrvsol2,pfc n cst platformsol2, pfc w print e w print).

5.3.3 Oggetti PFC7 che hanno subito modifiche

pfc n cst dwcache

Con la versione 7.0 delle PFC e stata eliminata la struttura locale ”os cachelist”e sostituita con il nuovo oggetto ”n cst dwcacheattrib”. La struttura vieneutilizzata solo in questo oggetto e non esternamente quindi non causa anoma-lie. E stata introdotta una nuova gestione del Refresh (of refresh) con lanuova versione delle PFC 7.0 e potenziata la gestione della funzione di Regi-ster (of register), passati da 5 funzioni della versione 5.0 a 16 presenti nellaversione 7.0 delle PFC.

pfc n cst dwsrv dropdownsearch

Con la versione 7.0 delle PFC e stata eliminata la struttura locale ”os column”e sostituita con il nuovo oggetto ”n cst dwsrv dropdownsearchattrib”.

Page 84: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

74 PowerBuilder Fondation Class

pfc n cst dwsrv multitable

Con la versione 7.0 delle PFC e stata eliminata la struttura locale”os updcharacteristics” e sostituita con il nuovo oggetto”n cst dwsrv multitableattrib”.

pfc n cst dwsrv querymode

Con la versione 7.0 delle PFC e stata eliminata la struttura locale”os querymodeinfo” e sostituita con il nuovo oggetto”n cst dwsrv querymodeattrib”.

pfc w debuglog

Nell’evento ”open” non e piu presente del codice che esisteva nella versionedelle PFC 5.0, ma e stato inserito nell’evento ”pfc preopen”.

pfc w dwdebugger

Questa finestra non e piu presente nelle PFC 7.0, essendo utilizzata nella”u dw” e stata ricopiata nella libreria ”ge ancestor.pbl”, cambiandole il nomein ”w dwdebugger”. Inoltre sono stati copiati anche gli oggetti utilizzati, trai quali ”s dwdebugger”, ”d dwdebuggerstatus”, ”d dwdebuggerattributes”.

Page 85: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

Capitolo 6

Riorganizzazione Librerie,Window e Menu Aimag

Questo capitolo introduce la riorganizzazione delle librerie, delle window edei menu Aimag.

6.1 Riorganizzazione Librerie Aimag

Parte delle librerie dell’applicazione sono state da me riorganizzate in mo-do da raggruppare tutti gli elementi correlati all’interno della stessa libreria.L’organizzazione precedente delle librerie considerava per la maggioranza deicasi un raggruppamento per tipologia di oggetto (window, datawindow, struc-ture ...). In questo modo non e immediato comprendere le dipendenze tra ivari oggetti della libreria. Per ricercare tutte le dipendenze esistenti mi sonoservita del tool Visual Expert (vedi par. 4.3).

6.2 Riorganizzazione Menu Aimag

E stato deciso di riorganizzare i Menu in maniera diversa in modo da per-mettere di rendere piu elastica l’applicazione. E’ stato modificato il mododi gestire l’apertura dei menu all’interno dell’applicazione. Prima venivanousate delle finestre ”fantasma” per aprire il menu riguardante il modulo,mentre ora viene cambiato direttamente il menu dell’applicazione. Per farequesto e stato necessario rivedere ulteriormente la struttura dei Menu. Estata sistemata la funzione ”f abilita menu” per far si che venga riapplicatala sicurezza in seguito al cambio di menu. E’ stata aggiunta una nuova fun-zione globale, chiamata ”f changemenu”, che serve per cambiare i menu, siadurante l’attivazione dei moduli che durante la chiusura.

Page 86: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

76 Riorganizzazione Librerie, Window e Menu Aimag

I Menu presenti nell’Applicazione AIMAG erano cosı organizzati:

- m gen base

– m acquisti

– m ambiente

– m applicazioni

– m authority

– m ced

– m config fatturazioni

– m contab ind

– m contenzioso

– m magazzino

– m menucoge

– m menuute

– m parametriz

– m pratiche

– m pratiche new: non utilizzato quindi viene ignorato e non piuriportato nella nuova versione.

– m strumenti

– m variazioni

La nuova organizzazione e:

- pfc m master

- m master

- m frame

- m frame base: ereditato dal m frame con l’aggiunta dellevoci presenti nel vecchio m gen base. Da cui e ereditatom applicazioni: menu dell’applicazione MDI.

- m gen base

- m utenza base: e ereditato dal menu m gen base. Adessonon ha nessuna personalizzazione, ma potranno essere fat-te successivamente per evitare di fare le stesse modifichesui quattro menu m menuute, m pratiche, m variazioni em authority.

Page 87: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

6.2 Riorganizzazione Menu Aimag 77

- m contabilita base: e ereditato dal menu m gen base.Adesso non ha nessuna personalizzazione, ma potrannoesser fatte successivamente per evitare di fare le stessemodifiche sui cinque menu m acquisti, m contab ind, mcontenzioso, m magazzino e m menu coge.

- m configurazione base: e ereditato dal menu m gen base.Adesso non ha nessuna personalizzazione, ma potrannoesser fatte successivamente per evitare di fare le stessemodifiche sui quattro menu m ambiente, m ced, m para-metriz e m config fatturazioni.

- m strumenti base: corrisponde al menu m strumenti, si-stemato in modo tale da non avere conflitti con le voci dimenu presenti in m master.

Per poter arrivare alla nuova organizzazione e stato necessario creare i duemenu di base chiamati m frame base e m gen base, entrambi sono ereditatidalle PFC (come mostrato sopra) e contengono le voci presenti nel vecchiomenu m gen base. In questi due menu sono gia state tolte alcune voci dimenu che erano gia presenti nel menu delle PFC. Oltre ai due menu dibase e stato necessario creare altri tre menu, necessari per raggruppare letre categorie dei menu dell’applicazione. I menu creati sono m utenza base,m contabilita base e m configurazione base. Visto che per la generazione deimenu e stato creato un ambiente a parte non legato all’applicazione, e statonecessario commentare il codice presente nei vari Eventi. Per quanto riguar-da tutti gli altri menu e stato necessario effettuare un lavoro menu per menuper far si che non si verificassero conflitti con le PFC. Per fare questo e sta-to fatto un Export in sintassi degli Oggetti Menu e sono state effettuate lemodifiche singolarmente per ognuno di essi.

6.2.1 Modifiche Menu M APPLICAZIONI

E stato deciso di non utilizzare piu la funzione ”mf changeapplsheet” che con-teneva il riferimento fisso alla finestra MDI ”w applicazioni”, ma di utilizzareuna nuova funzione ”f changemenu” che ha come riferimento la finestra vari-abile contenuta nell’oggetto ”gnv app” (gnv app.of getFrame()). Nel caso incui vi siano finestre aperte di un modulo e si decida di entrare in un altromodulo si e deciso di inserire momentaneamente queste finestre nel menu delnuovo modulo e in particolare queste vengono inserite a runtime come ultimesottovoci della voce di menu ”Window” o ”Finestra”. Questo per consentireagli operatori di lavorare utilizzando piu finestre aperte anche di moduli dif-ferenti e di poter gestire correttamente la sicurezza. Per quanto riguarda il

Page 88: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

78 Riorganizzazione Librerie, Window e Menu Aimag

parametro che indica la posizione sotto la quale mettere le finestre aperte,funziona in automatico utilizzando il valore fisso a 0 in quanto le finestrevengono aperte sotto la penultima voce di menu che coincide sempre conla voce ”Window” o ”Finestra”. In questa maniera se il menu cambia incontinuazione e la posizione della voce di menu ”Window” cambia, non enecessario preoccuparsi di valorizzare in maniera corretta questo parametroin quanto sara PowerBuilder ad occuparsi di tutto.

6.3 Sistemazione Window ereditate dalle PFC

Una volta effettuate le modifiche alle PFC 9.0 di Sybase per introdurre tuttele personalizzazioni effettuate da AIMAG alle PFC 5.0 ho proceduto allasistemazione delle Window dell’applicativo che gia utilizzavano le PFC inseguito a eventuali modifiche apportate nel cambio di versione.

6.4 Sistemazione Window non ereditate dalle

PFC

Un lavoro piu grosso ha riguardato invece la parte di sistemazione delle Win-dow non ereditate dalle PFC in quanto ha comporta un lavoro iniziale per farsi che venissero ereditate dalle PFC e un lavoro successivo di adattamento.

6.5 Creazione/Modifica Oggetti Cuscinetto

Per oggetti cuscinetto si intendono gli oggetti tra le PFC e l’applicazioneAIMAG, cioe ereditati dalle PFC e sui cui vengono ereditati gli oggettidell’applicazione. Non tutti gli oggetti presenti nella libreria ge ancestorsono oggetti cuscinetto in quanto la maggior parte di questi sono oggettidi base dell’applicazione. Oltre agli oggetti cuscinetto riguardanti i menu,(m frame base e m gen base) ho creato o modificato i seguenti oggetti:

- uo cb generale

- uo checkbox generale

- uo ddlb generale

- uo ds generale

- uo dw generale

Page 89: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

6.5 Creazione/Modifica Oggetti Cuscinetto 79

- uo em generale

- uo gruppo generale

- uo message base

- uo mle generale

- uo pb generale

- uo pipeline generale

- uo radiobutton generale

- uo sle generale

- uo tabpage generale

- uo testo generale

- uo treeview generale

- uov dw

- w gen base

6.5.1 uo ds generale - uo dw generale

L’evento DBError e relativi eventi collegati sono stati eliminati e verra uti-lizzata la gestione degli errori delle PFC 9.0. L’evento RButtonDown e statocommentato perche verra usata la nuova gestione tasto destro (Popup).

6.5.2 uo checkbox generale -uo radiobutton generale - uo ddlb generale -uo ddplb generale - uo st generale

L’unica personalizzazione trovata riguarda l’evento ”constructor”, nel qualee stato messo il richiamo della funzione ”f nomi oggetto”.

La funzione f nomi oggetto permette di recuperare il nome dell’ogget-to chiamante data come chiave di ricerca il tag dell’oggetto stesso. Se iltag non viene inserito ho deciso di evitare la chiamata a funzione, in mo-do da ripristinare il comportamento standard dell’oggetto che utilizza comenome oggetto quello eventualmente inserito. Il richiamo di questa funzione

Page 90: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

80 Riorganizzazione Librerie, Window e Menu Aimag

e stata mantenuta sia nell’oggetto del livello estensione che in quello del li-vello cuscinetto (descendant Generale) in quanto non e possibile attualmentemetterlo solo nell’oggetto Generale (cosa migliore) in quanto una parte del-l’applicazione utilizza direttamente l’oggetto delle PFE. Prima di poter farequesto e necessario ”bonificare” tutta l’applicazione in modo tale che uti-lizzi solamente l’oggetto generale. Fino a quando non verra fatto, bisogneracontinuare con la duplicazione per far si che tutto funzioni correttamente.

6.5.3 uo treeview generale

Questo oggetto era stato personalizzato da AIMAG. E stato necessario unintervento in quanto tutte le versioni delle PFC dalla 7.0 in poi non utilizzanopiu la struttura chiamata ”os datasource”. L’oggetto e stato modificato perutilizzare il nuovo oggetto ”n cst tvattrib” ed e stata sostituita la variabiledi istanza ”istr ds” con ”inv ds”. Inoltre sono stati creati due nuovi ogget-ti treeview, uno ereditato da ”u tv” e uno da ”u tvs”, sono stati chiamati”uo tv generale” e ”uo tvs generale” e messi nella libreria ”ge ancestor.pbl”.

6.5.4 w gen base

La finestra e stata ereditata dalle PFC attraverso il livello cuscinetto. Estata ereditata infatti dalla ”w sheet generale” e il cambio di Ancestor nonha dato nessun problema.

6.6 Creazione Oggetti Estensione

Per oggetti estensione si intendono gli oggetti tra il livello antenato e il livelloestensione delle PFC. Questi oggetti sono stati creati per evitare di effettuarecambiamenti alle PFC. Ho creato i seguenti oggetti:

- corp n cst tvattrib

- corp u cbx

- corp u ddlb

- corp u ddlbp

- corp u dw

- corp u gb

- corp u rb

Page 91: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

6.6 Creazione Oggetti Estensione 81

- corp u st

- corp w master

- corp w sheet

- corp w statusbar

6.6.1 corp n cst tvattrib

E stato necessario aggiungere una nuova variabile di istanza ”any a arg[]”, inmodo che venisse utilizzato questo oggetto da uo treeview generale al postodella struttura ”os datasource” eliminata dalla versione 7 in poi delle PFC.

6.6.2 corp u cbx, corp u ddlb, corp u ddlbp,corp u dw, corp u gb, corp u rb, corp u st

Stesse modifiche effettuate per creare il livello cuscinetto.

6.6.3 corp w master

Inserite personalizzazioni Aimag, riguardanti l’evento open, l’evento show incui viene abilitato il servizio della sicurezza per la finestra e abilitato il menue l’evento resize in cui viene definito il titolo della finestra.

6.6.4 corp w sheet

Inserite personalizzazioni Aimag riguardanti l’evento close e pre open in cuiviene controllata la presenza di errori.

6.6.5 corp w statusbar

Viene sovrascritto l’evento show.

Page 92: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

82 Riorganizzazione Librerie, Window e Menu Aimag

Page 93: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

Capitolo 7

Migrazione

Questo capitolo introduce la migrazione dell’applicazione a PowerBuilder 9,descrive i cambiamenti riscontrati nella nuova versione e i problemi riscontratia seguito della migrazione.

7.1 Informazioni sulla Migrazione

Per migrare un’applicazione [Syb03c] nella versione 9 di PowerBuilder si deveprima creare un workspace e aggiungervi un target. Per aggiungere un tar-get ad un workspace che utilizza un’applicazione costruita in PowerBuilder7 o in versioni precedenti si deve utilizzare la wizard Existing ApplicationTarget. I cambiamenti rilevanti dalle versioni precedenti a PowerBuilder 9sono mostrati successivamente.

7.1.1 Parole riservate

Nuove parole riservate sono state aggiunte al linguaggio PowerScript in Power-Builder 8 per supportare la gestione delle eccezioni. Se viene utilizzata unadi queste parole riservate (TRY, CATCH, FINALLY, THROW e THROWS)come identificatori nell’applicazione esistente bisogna cambiare questi iden-tificatori, attribuendogli nomi non conflittuali.

7.1.2 L’oggetto transport e obsoleto

L’oggetto transport, le sue proprieta e metodi associati sono obsoleti inPowerBuilder 8 e sono stati rimossi in PowerBuilder 9.0. Questo oggettoera utilizzato per applicazioni PowerBuilder distribuite. Le proprieta e imetodi seguenti che sono utilizzati per applicazioni PowerBuilder distribuitesono obsoleti:

Page 94: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

84 Migrazione

- Gli eventi ConnectionBegin e ConnectionEnd sull’oggetto applicazione

- Le funzioni GetServerInfo, RemoteStopConnection, e RemoteStopLi-stening sull’oggetto Connection

- La funzione SetConnect per l’oggetto proxy

- Le proprieta ConnectString e Trace sull’oggetto Connection

- La struttura ConnectInfo

I generatori JavaBeans Proxy e WEB.PB erano anche utilizzati con appli-cazioni PowerBuilder distribuite e sono stati rimossi.

7.1.3 Cambiamenti dell’evento SystemError

In PowerBuilder 7 o versioni precedenti se un errore occorre e non viene cat-turato da un evento Error o ExternalException, l’evento SystemError vieneinvocato immediatamente. Se non c’e codice associato all’evento SystemEr-ror, l’applicazione termina, altrimenti dopo che l’evento SystemError vieneeseguito i controlli restituiscono la locazione del codice dove si e verificatol’errore. In PowerBuilder 8 e successive versioni, se un errore occorre e nonviene catturato dal meccanismo di gestione delle eccezioni o da un eventoError o ExternalException lo script termina e la chiamata allo stack vieneeseguita. Se un errore occorre come risultato di una chiamata Triggereventin uno script, lo script chiamante termina e lo stack chiamato viene eseguito.In molti casi l’evento System Error non viene eseguito fino a quando la chia-mata allo stack diventa vuota. Se un evento di una finestra response causaun errore, l’evento SystemError viene eseguito prima che l’evento della fine-stra response viene completato. Prima di questi cambiamenti, il codice chesegue la dichiarazione che causa l’errore non viene eseguito dopo che l’even-to SystemError viene eseguito. Si possono maneggiare i potenziali erroriutilizzando blocchi try-catch per prevenire che l’evento SystemError vengaeseguito quando un errore occorre.

7.1.4 Cambiamenti della funzione IsValid

La funzione IsValid adesso restituisce false se passato un argomento di tipoAny non e possibile convertirlo in PowerObject. In PowerBuilder 7 e prece-denti versioni il passaggio di un oggetto non valido alla funzione IsValidcausava un errore.

Page 95: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

7.2 Migration Assistant 85

7.2 Migration Assistant

Il Migration Assistant scansiona le librerie di PowerBuilder e mette in risaltol’utilizzo di sintassi obsoleta, come funzioni ed eventi obsoleti. Funzioni edeventi che sono diventati obsoleti in una versione specifica di PowerBuilderlavorano ancora in quella versione e non possono lavorare in versioni future.Se si progetta di mantenere un’applicazione in futuro, e meglio utilizzare lasintassi e gli eventi della versione corrente. Si puo utilizzare il MigrationAssistant per scansionare PBLs che sono state create e salvate in qualunqueversione di PowerBuilder. Utilizzando il Migration Assistant:

- Si specifica il tipo di sintassi che deve essere verificata. Si puo control-lare la sintassi delle PFC, la sintassi PowerScript e si puo controllarela sintassi obsoleta nelle varie versioni di PowerBuilder.

- Si specifica in quali librerie si cerca la sintassi obsoleta.

- Si effettua la ricerca

- Si utilizza la pagina Search Results per vedere la lista di funzioni edeventi obsoleti trovati nelle PBLs specificate. La visualizzazione in-clude librerie, nomi di oggetti, tipi di oggetti, contenuti ed evenualisostituzioni suggerite.

- Si modifica il codice per utilizzare la sintassi corrente.

7.3 Migrazione dell’applicazione

Prima di utilizzare il supporto del Migration Assistant per controllare la sin-tassi obsoleta, ho effettuato la migrazione dell’applicazione utilizzando la Mi-grate Application dialog box che permette di migrare le librerie selezionatedell’applicazione alla versione corrente di PowerBuilder. Sono stati visua-lizzati gli errori e warning riscontrati nell’applicazione e anche i messaggiinformativi e obsoleti (opzione da me scelta) che ho poi salvato in un file.Gli errori che si sono verificati in seguito alla migrazione dell’applicazioneAimag riguardavano l’utilizzo di variabili duplicate, mentre grazie al sup-porto del Migration Assistant e stata riscontrata la presenza di funzioni edeventi ritenuti obsoleti nella versione 9 di PowerBuilder. Ho sostituito quindile funzioni e gli eventi obsoleti con quelli utilizzati nella versione 9 come vienesuggerito dopo aver eseguito il Migration Assistant. In seguito sono state ri-portate tabelle contenenti la descrizione di ogni funzione o evento obsoleto edi ogni funzione o evento da sostituire.

Page 96: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

86 Migrazione

Funzione obsoleta

Nome of RefreshDDDWsAccesso pubblicoSintassi dwcontrol.instancename.of RefreshDDDWs()

dwcontrol: nome dell’istanza della DataWindow controlinstancename: nome dell’istanza di n cst dwsrv(di default inv base)

Valore restituito numero di DropDownDataWindows trovate

Funzione da sostituire

Nome of PopulateDDDWDescrizione popola la colonna o le colonne

DropDownDataWindows specificateAccesso pubblicoSintassi dwcontrol.instancename.of PopulateDDDW({column})

dwcontrol: nome dell’istanza della DataWindow controlinstancename: nome dell’istanza di n cst dwsrv(di default inv base)column: nome o numero della colonna specificata(se viene omesso l’argomento la funzione popola tuttele DropDownDataWindows in una DataWindow)

Valore restituito 1 se la funzione ha successo, -1 se avviene un errore

Page 97: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

7.3 Migrazione dell’applicazione 87

Funzione obsoleta

Nome of AddColumnAccesso pubblicoSintassi dwcontrol.instancename.of AddColumn({column})

dwcontrol: nome dell’istanza della DataWindow controlinstancename: nome dell’istanza din cst dwsrv dropdownsearch (di defaultinv dropdownsearch)column: nome della colonna da aggiungere all’arrayistr columns (se viene omesso l’argomento lafunzione aggiunge tutte le DropDownDataWindowsnell’array istr columns)

Valore restituito se la funzione ha successo il numero delle colonneDropDownDataWidow aggiunte, 0 se le colonne nonsono state aggiunte, -1 se avviene un errore

Funzione da sostituire

Nome of RegisterDescrizione registra una o tutte le colonne

DropDownDataWindow e DropDownListBox con il serviziodi ricerca dropdown

Accesso pubblicoSintassi dwcontrol.instancename.of Register({column})

dwcontrol: nome dell’istanza della DataWindow controlinstancename: nome dell’istanza din cst dwsrv dropdownsearch (di defaultinv dropdownsearch)column: nome della colonna che deve essere registrata.Se l’argomento viene omesso la funzioneregistra tutte le colonne accettabili

Valore restituito numero di colonne registrate sela funzione ha successo, -1 se avviene un errore

Page 98: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

88 Migrazione

Funzione obsoleta

Nome of LinkToAccesso pubblicoSintassi dwcontrol.instancename.of LinkTo(master)

dwcontrol: nome dell’istanza della DataWindow controlinstancename: nome dell’istanza di n cst dwsrv linkage(di default inv linkage)master: variabile DataWindow che punta allaDataWindow master

Valore restituito 1 se la funzione ha successo, -1 se avviene un errore

Funzione da sostituire

Nome of SetMasterDescrizione collega quasta DataWindow

alla DataWindow masterAccesso pubblicoSintassi dwcontrol.instancename.of SetMaster(masterdw)

dwcontrol: nome dell’istanza della DataWindow controlinstancename: nome dell’istanza di n cst dwsrv linkage(di default inv linkage)masterdw: variabile DataWindow che si riferisce allaDataWindow Master

Valore restituito 1 se la funzione ha successo, -1 se avviene un errore

Page 99: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

7.3 Migrazione dell’applicazione 89

Funzione obsoleta

Nome of SetArgumentsAccesso pubblicoSintassi dwcontrol.instancename.of SetArguments(mastercol, detailcol)

dwcontrol: nome dell’istanza della DataWindow controlinstancename: nome dell’istanza di n cst dwsrv linkage(di default inv linkage)mastercol: colonna nella DataWindow master che eun argomento collegatodetailcol: colonna nella DataWindow detailconnessa alla mastercol

Valore restituito 1 se la funzione ha successo, -1 se avviene un errore

Funzione da sostituire

Nome of SetMasterDescrizione stabilisce le colonne che collegano

DataWindows master e detailAccesso pubblicoSintassi dwcontrol.instancename.of Register(mastercol, detailcol)

dwcontrol: nome dell’istanza della DataWindow controlinstancename: nome dell’istanza di n cst dwsrv linkage(di default inv linkage)mastercol: colonna nella DataWindow master che eun argomento collegatodetailcol: colonna nella DataWindow detailconnessa alla mastercol

Valore restituito 1 se la funzione ha successo, -1 se avviene un errore

Page 100: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

90 Migrazione

Funzione obsoleta

Nome of SetUseColLinksAccesso pubblicoSintassi dwcontrol.instancename.of SetUseColLinks(linktype)

dwcontrol: nome dell’istanza della DataWindow controlinstancename: nome dell’istanza di n cst dwsrv linkage(di default inv linkage)linktype: specifica il tipo di collegamento:1 - PFC utilizza colonne nella DataWindow mastercome criterio di filtro per la DataWindow detail2 - PFC utilizza colonne nella DataWindow mastercome argomenti di recupero per la DataWindow detail3 - PFC utilizza colonne nella DataWindow masterper controllare lo scrolling della DataWindow detail

Valore restituito 1 se la funzione ha successo, -1 se avviene un errore

Funzione da sostituire

Nome of SetStyleDescrizione specifica come il servizio linkage rivisualizza

le DataWindow detail:- Filter: il servizio linkage utilizza la colonna collegata percostruire un filter e applicarlo alla DataWindow detail- Retrieve: il servizio linkage utilizza la colonna collegatacome argomento per la DataWindow detail- Scroll: il servizio linkage utilizza la colonna collegata perfare scrolling della DataWindow detail alla riga giusta.

Accesso pubblicoSintassi dwcontrol.instancename.of SetStyle(style)

dwcontrol: nome dell’istanza della DataWindow controlinstancename: nome dell’istanza di n cst dwsrv linkage(di default inv linkage)style: costante n cst dwsrv linkage che specifica lo stile(1 o FILTER, 2 o RETRIEVE, 3 o SCROLL)

Valore restituito 1 se la funzione ha successo, -1 se avviene un errore

Page 101: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

7.3 Migrazione dell’applicazione 91

Funzione obsoleta

Nome of UnLinkAccesso pubblicoSintassi dwcontrol.instancename.of UnLink()

dwcontrol: nome dell’istanza della DataWindow controlinstancename: nome dell’istanza di n cst dwsrv linkage(di default inv linkage)

Valore restituito 1 se la funzione ha successo, -1 se avviene un errore

Funzione da sostituire

Nome of ResetMasterDescrizione scollega la corrente DataWindow da qualla masterAccesso pubblicoSintassi dwcontrol.instancename.of ResetMaster(style)

dwcontrol: nome dell’istanza della DataWindow controlinstancename: nome dell’istanza di n cst dwsrv linkage(di default inv linkage)

Valore restituito 1 se la funzione ha successo, -1 se avviene un errore

Page 102: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

92 Migrazione

Funzione obsoleta

Nome of AddToUpdateAccesso pubblicoSintassi dwcontrol.instancename.of AddToUpdate(table, kewcolumns

{, updatetablecols {, keyimplace, whereoption}})dwcontrol: nome dell’istanza della DataWindow controlinstancename: nome dell’istanza di n cst dwsrv multitable(di default inv multitable)table: nome della tabellakeycolumns: array contenente le colonne chiave utilizzate perla modificaupdatetablecols: array contenente la lista delle colonnemodificabili (default tutte le colonne della DataWindow)keyinplace: indica se modificare la chiave (true) o cancellarlao reinserirla (false)(default false). Se viene specificato questo argomento bisognaspecificare whereoptionwhereoption: specifica dove modificare la DataWindow:- 0 colonne chiave- 1 colonne chiave e modificabili- 2 colonne chiave e modificate

Valore restituito 1 se la funzione ha successo, -1 se avviene un errore

Funzione da sostituire

Nome of RegisterDescrizione registra una tabella con il servizio multitable updateAccesso pubblicoSintassi dwcontrol.instancename.of Register(table, kewcolumns

{, updatetablecols {, keyimplace, whereoption}})dwcontrol: nome dell’istanza della DataWindow controlinstancename: nome dell’istanza di n cst dwsrv multitable(di default inv multitable)table: nome della tabellakeycolumns: array contenente le colonne chiave utilizzate perla modificaupdatetablecols: array contenente la lista delle colonnemodificabili (default tutte le colonne della DataWindow)keyinplace: indica se modificare la chiave (true) o cancellarlao reinserirla (false)(default false). Se viene specificato questo argomento bisognaspecificare whereoptionwhereoption: specifica dove modificare la DataWindow:- 0 colonne chiave- 1 colonne chiave e modificabili- 2 colonne chiave e modificate

Valore restituito 1 se la funzione ha successo, -1 se avviene un errore

Page 103: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

7.4 Nuove funzionalita PowerBuilder 9.0 93

Evento obsoleto

Nome pfc RetrieveDDDWAccesso pubblicoSintassi dwcontrol.instancename.pfc RetrieveDDDW(column)

instancename: nome dell’istanza di u dwcolumn: colonna che contiene la dropodown DataWindowper la quale le righe sono recuperate. Si accede a questovalore attraverso l’argomento as column

Valore restituito risultato della funzione Retrieve

Evento da sostituire

Nome pfc PopulateDDDWDescrizione evento vuoto che bisogna estendere per popolare

la DropDownDataWindow specificataAccesso pubblicoSintassi dwcontrol.instancename.pfc PopulateDDDW(column, dddw)

instancename: nome dell’istanza di u dwcolumn: colonna che contiene la dropodown DataWindowper la quale le righe sono recuperate. Si accede a questovalore attraverso l’argomento as columndddw: istanza della DataWindowChild che si riferiscealla colonna DropDownDataWindow. Questo argomento eacceduto attraverso l’argomento adwc obj(passato per referenza)

Valore restituito numero di righe popolate se l’evento ha successo,-1 se avviene un errore

7.4 Nuove funzionalita PowerBuilder 9.0

7.4.1 Accessibilita a nuovi tipi utilizzabili per imple-mentazioni future

Il tipo enumerato AccessibleRole, gli oggetti di sistema AccessibleState eAccessibility e gli eventi e le proprieta relative sono state aggiunte a Power-Builder. Queste aggiunte forniranno pieno supporto alle richieste della sezione508 dell’atto di riabilitazione del governo federale degli Stati Uniti per fornireun interfaccia per la tecnologia Microsoft Active Accessibility. La sezione 508specifica le richieste di accessibilita per gli handicappati.

Page 104: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

94 Migrazione

7.5 Nuove funzionalita PowerBuilder 9.1

7.5.1 Nuove voci di menu nei painters SQL Select eQuery

Le viste Where e Having nei painter SQL Select e Query hanno due nuovevoci di menu pop-up: Insert Clause e Delete Clause. La vista Compute hatre nuove voci di menu: Clear, Insert Compute e Delete compute. Questevoci di menu permettono di gestire l’ordine nel quale le clausule e i campicalcolati sono visualizzati nelle viste.

7.5.2 Nuovo formato Excel per salvare i dati

Si possono salvare i dati dal formato Excel utilizzato da microsoft Excel 97(versione 8) all’ultima versione. Per farlo bisogna selezionare Excel8 nel tipodi salvataggio nella dialog box Save As del painter DataWindow, o specificareExcel8 come argomento saveastype nella funzione SaveAs.

7.5.3 Nuovo DBParm: PBNewSPInvocation

Il PBNewSPInvocation DBParm abilita l’utilizzo delle parole OUTPUT oOUT quando vengono invocate stored procedures utilizzando l’interfacciaODBC. Il comportamento del driver ODBC PowerBuilder quando questoDBParm viene impostato e simile al comportamento di default dei driverOLE DB e JDBC. Il DBParm puo essere impostato dinamicamente in fasedi esecuzione dopo la connessione al database. si puo anche impostare il filePBODB90.INI se si vogliono creare o recuperare dati nelle DataWindow consorgenti di dati come stored procedure in painter DataWindow. Il DBParmnon ha effetto quando si usa RPC per invocare una stored procedure. Quandoquesto DBParm non e impostato, i parametri di output devono essere resti-tuiti quando vengono utilizzati comandi SQL embedded per chiamare unastored procedure. Quando PBNewSPInvocation e impostato come ”Yes”,si puo utilizzare una dichiarazione per ottenere il valore del parametro dioutput di una stored procedure.

7.5.4 Comportamento cambiato per la voce di menuExtend Ancestor Script

La voce di menu Extend Ancestor Script del menu Edit o del menu pop-up nella vista Script per un evento determina quando lo script e esteso osovrascritto. Se la voce di menu e selezionata, l’ancestor script viene esteso,

Page 105: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

7.5 Nuove funzionalita PowerBuilder 9.1 95

altrimenti e sovrascritto. Quando non c’e script nel discendente, la voce dimenu Extend Ancestor Script e selezionata e disabilitata. Quando viene ag-giunto uno script, la voce di menu e abilitata e si puo decidere di sovrascriverel’ancestor script o estenderlo. Se dopo aver aggiunto uno script al discenden-te si decide di eliminare lo script, la voce di menu adesso ritorna allo stato didefault: selezionato e disabilitato. Se si aggiunge uno script la voce di menuviene riabilitata.

7.5.5 Menu e controlli ereditati non possono esserecopiati

Non si possono copiare menu o controlli su una finestra dicsendente o un vi-sual user object se il controllo o il menu viene ereditato dall’oggetto ancestor.Nelle precedenti release un controllo o menu ereditato poteva essere copiato,ma il modo nel quale gli script erano ereditati era incorretto e poteva esseregenerato un crash di PowerBuilder.

Page 106: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

96 Migrazione

Page 107: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

Capitolo 8

Utilizzo dei servizi PFC e diOracle PL/SQL

L’intervento effettuato sulle PFC ha dato la possibilita di utilizzare tutti inuovi servizi forniti dalla versione successiva delle PFC. In questo capitoloviene descritto come sono stati utilizzati questi servizi creando e riprogettan-do piccole parti del sistema informativo Aimag.

Vengono inoltre maggiormente sfruttate le potenzialita di Oracle e uti-lizzati i comandi PL/SQL. Il PL/SQL e un’implementazione procedurale(Procedural Language) del linguaggio SQL per lo sviluppo di applicazioniche usano l’RDBMS Oracle. Oltre alle potenzialita del linguaggio SQL, ilPL/SQL offre le capacita di un linguaggio procedurale: l’uso di variabili edi costanti, i cicli, le label e un gestore di errori. PL/SQL invia all’RDBMSun unico blocco comprensivo di diverse istruzioni SQL, riducendo cosı il traf-fico di rete verso l’RDBMS. Permette inoltre di compilare dei blocchi diistruzioni, di memorizzarli sul database e di utilizzarli senza piu bisogno dicompilazione, migliorando le prestazioni. PL/SQL lavora all’interno dei toolOracle come ad esempio SQL*Forms e SQL*ReportWriter. In PL/SQL sonoscritti i Database Trigger e le Procedure.

8.1 Gestione degli operatori

E stata creata una sezione riservata alla gestione degli operatori. In questasezione e possibile inserire, eliminare e modificare i dati di ogni operato-re (nome, cognome, username, email, stradario, civico, interno). Attual-mente esiste una tabella ge login users in cui sono inseriti i dati riguardantiusername, password degli operatori che viene utilizzata per l’autentificazionedegli utenti quando accedono all’applicazione. Per una migliore gestione degli

Page 108: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

98 Utilizzo dei servizi PFC e di Oracle PL/SQL

operatori sono state create due nuove tabelle ’ge user login’ e ’ge user dati’(vedi fig. 8.1) in cui sono stati separati i dati personali dell’operatore contenu-ti in ge user dati da quelli legati al login da parte dell’operatore contenuti in’ge user login’. La tabella ge user login verra utilizzata per l’autentificazionecome avveniva per la tabella ge login users.

Per realizzare la datawindow contenente i dati delle due tabelle cre-ate e stato necessario l’utilizzo del servizio multitable update. Il serviziomultitable update permette facilmente di modificare una datawindow con-tenente colonne di piu tabelle e viene abilitato attraverso lo user objectn cst dwsrv multitable.

Per inserire e cancellare righe dalla datawindow e stato utilizzato il serviziorowmanagement che viene abilitato attraverso lo user objectn cst dwsrv rowmanager. Il servizio rowmanagement fornisce anche una fun-zione per annullare l’avvenuta eliminazione di una riga. Si puo utilizzarequesto servizio per

- aggiungere una riga vuota alla fine della datawindow

- inserire una riga vuota tra due righe esistenti

- cancellare una o piu righe

- visualizzare una dialog box che permette di recuperare righe cancellate

Per inserire le chiavi nelle tabelle ge user login e ge user dati sono stateutilizzate due sequence. La sequence e un oggetto ORACLE che genera nu-meri progressivi, usato per creare chiavi primarie. E necessario creare unasequence corrispondente alla tavola in questione e incrementarla del valoredesiderato, di solito 1. L’opzione CACHE nella creazione della sequence per-mette di allocare in memoria un set di numeri della sequence in modo daaccedervi piu velocemente. La sequence e referenziata negli statements SQLcon le pseudo-colonne NEXTVAL e CURRVAL. NEXTVAL genera un nuovonumero quando necessario. CURRVAL referenzia il numero corrente e puoessere usato solo se NEXTVAL e stato precedentemente usato nella sessionecorrente. Le sequenze possono essere utilizzate per la funzione di generazionedella chiave univoca di una tabella. Tale utilizzo e molto efficiente ed e con-sigliato in tutti i casi in cui sia possibile. La generazione di chiavi numerichesi puo fare come segue:

select max(ge nume user) + 1 into nume userfrom ge user login;

insert into ge user loginvalues (nume user, nome, cognome, ...)

Page 109: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

8.1 Gestione degli operatori 99

Figura 8.1: Phisical Diagram riguardante le tabelle ge user login ege user dati, create per la gestione degli operatori

Page 110: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

100 Utilizzo dei servizi PFC e di Oracle PL/SQL

Questa tecnica si presta a deadlock;ORACLE mette a disposizione contatori persistenti, detti sequence:

create sequence seq ge nume userincrement by 1start with 1maxvalue 999;

Per selezionare il valore assunto dalla sequence ho utilizzato la pseudo-tabellaDUAL, presente in ogni database Oracle, accessibile a tutti gli utenti, checontiene 1 colonna di 1 carattere e 1 riga. Questa permette di eseguire ’false’SELECT allo scopo di eseguire calcoli, visualizzare la data, incrementare unasequence di 1 unita.

8.2 Modifica password e scadenza

E stata creata una sezione per permettere agli operatori di cambiare la pro-pria password. La password ha una durata limitata, quindi deve essere setta-ta la data di scadenza della password fissata di default a un mese dopo delladata di modifica password. E stato creato lo user object uo gestione utenti incui sono presenti le funzioni che permettono di controllare la correttezza dellapassword dell’operatore, controllare la scadenza della password e settare ledate di impostazione e scadenza password. E possibile inoltre settare la datadi ultima modifica che si riferisce a modifiche rilevanti al database da partedegli utenti.

Per creare questa sezione mi sono servita dell’oggetto u calendar dellePFC. Questo oggetto permette all’utente di cliccare sul drop down calendare automaticamente selezionare la data associata al campo. Questo oggettopero puo essere utilizzato in una datawindow control basata su u dw e inun editmask control basato su u em. Volendo utilizzare l’oggetto in manieradifferente da quella preimpostata ho creato un oggetto uo calendar generaleereditato da u calendar e ho creato funzioni che mi permettessero di utiliz-zarlo in modo indipendente da datawindow control ed editmask. Ho con-seguentemente creato una window w calendar costituita dall’oggettouo calendar generale che una volta selezionata la data dall’oggetto la riportain un editmask. La window creata mi e servita per crearne una successiva diimpostazione della data di scadenza password.

Page 111: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

8.3 Dettaglio Contrattuale 101

8.3 Dettaglio Contrattuale

La sezione del dettaglio del contratto e stata riprogettata, perche era diventa-ta poco leggibile vista la presenza di molti oggetti non bene strutturati. Nelriprogettarla ho utilizzato i servizi delle PFC e l’oggetto treeview u tvs. Iltreeview control permette facilmente di utilizzare DataWindow per visualiz-zare e modificare gerarchicamente i dati del database in una treeview. U tvsinclude servizi che possono essere abilitati quali:

- Base service: fornisce servizi base

- Level source service: controlla la visualizzazione e la modifica dei datidel database in un livello treeview. Controlla anche le bitmaps visua-lizzate con i dati della treeview.

Si puo usare il servizio Level source per associare ogni livello treeview conuna sorgente di dati. Una sorgente di dati puo essere:

- oggetto datawindow

- dichiarazioni SQL

- controllo datawindow

- controllo datastore

- righe di un array

- un file

Il servizio Level source della treeview (implementato attraverso il customuser class object n cst tvsrv levelsource) mantiene una sorgente di dati perogni livello e la utilizza per popolare i livelli della treeview.

Sono stati creati tre livelli alla treeview. Dopo aver inserito il codiceutente (o averlo ricercato) il primo livello della treeview elenca i servizi abili-tati per l’utente (gas vendita, gas distribuzione, acqua, igiene ambientale ...)Il secondo livello riporta tutti i tipi di contratto esistenti per ogni servizio(attivo, cessato per morosita, cessato per variazione contrattuale ...). Il terzolivello infine riporta i dettagli del contratto quali potenzialita, bollette pagatee insolute, flag, tariffe, note ecc..

Nelle datawindow in cui sono presenti dropdown e stato utilizzato ilservizio DropDownDataWindow search che automaticamente scrolla la drop-down datawindow alla voce che inizia con la lettera editata. Per es. seun utente edita la lettera S nella drop-down DataWindow questo servizio

Page 112: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

102 Utilizzo dei servizi PFC e di Oracle PL/SQL

permette di far scrollare automaticamente la drop-down alla prima voceche inizia con S. Il servizio DropDownDataWindow search viene abilitatoattraverso lo user object n cst dwsrv dropdownsearch.

Per una migliore visione di tutti gli oggetti presenti nella sezione deldettaglio contrattuale si puo decidere di ridimensionare la finestra, quindi estato attivato il servizio Resize che fornisce funzioni in grado di muovere eridimensionare controlli quando l’utente ridimensiona una finestra, un tabo un tabpage. Questo servizio permette di controllare come e se i controllivengono ridimensionati quando la finestra, tab o tabpage viene ridimensio-nato. Il servizio Resize viene abilitato attraverso lo user object n cst resize.Si puo usare il servizio DataWindow resize (n cst dwsrv resize) per muoveree ridimensionare le colonne all’interno di una DataWindow.

Inoltre sono state utilizzata funzioni scritte in Oracle PL/SQL come es-plodi do codici ed esplodi ge codi ente. La funzione esplodi do codici resti-tuisce il nome dell’oggetto ricercato dato il codice ed il tipo di codice, mentrela funzione esplodi ge codi ente restituisce il nome dell’ente ricercato dato ilcodice dell’ente.

Per creare il terzo livello dell’oggetto treeview e stato necessario popolareun oggetto datawindow con le voci desiderate. Per far questo ho utilizzatola tabella dual di cui ho parlato precedentemente.

Page 113: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

Capitolo 9

Conclusioni

Quando e stata realizzata l’applicazione gestionale Aimag non sono stati uti-lizzati i principi di eredita, incapsulazione e polimorfismo supportati dall’am-biente di sviluppo di PowerBuilder. Capire l’organizzazione dell’applicazionesi e presentato da subito non semplice, poiche le librerie di cui era costi-tuita non raggruppavano oggetti correlati. Recuperare gli oggetti associatiavrebbe richieste molto piu tempo di quello effettivamente impiegato se nonfosse stato utilizzato il tool Visual Expert e la funzionalita Global Search diPowerBuilder. Come prima cosa sono state quindi riorganizzate le librerie delsottosistema utenza. La riorganizzazione e stata molto utile, perche oltre adaver raggruppato tutti gli oggetti associati, sono stati eliminati molti oggettipresenti nelle librerie, ma non effettivamente utilizzati. A questo punto si eproceduto per fasi nella realizzazione della migrazione dell’applicazione.

La prima fase ha comportato la sistemazione delle PFC. In seguito aduna precedente migrazione dalla versione 5 alla versione 7, le PFC avevanosubito modifiche che avevano permesso di rendere l’applicazione stabile. LePFC della versione 5 non erano state sostituite con quelle della versione7 e le funzionalita delle PFC della versione 7 non potevano quindi essereutilizzate. Si e dovuto sostituire le PFC versione 5 modificate con quelle dellaversione 9 e inserire le personalizzazioni ed eventuali cambiamenti effettuatiper garantire stabilita (se non gia presenti nella versione 9) in livelli estensionedelle PFC. Le personalizzazioni e i cambiamenti sono stati individuati graziead un confronto delle PFC 5 modificate con le PFC 5 base e con le PFC7 effettuato utilizzando il tool PBDelta. Sono stati cosı creati due livelli:un livello detto ”cuscinetto” (livello estensione del livello estensione dellepfc) e un livello detto ”estensione” (livello intermedio tra le pfc e il livelloestensione delle pfc). Il livello estensione ha comportato il cambio di ereditadelle PFC e potra essere eliminato solamente quando tutta l’applicazione sibasera sul livello ”cuscinetto” creato. Con la creazione di questi due livelli

Page 114: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

104 Conclusioni

non si avra nessun problema ogni qual volta si desiderera migrare ad unaversione successiva di PowerBuilder.

La seconda fase ha comportato il cambio di eredita di menu e window chenon si basavano sulle PFC.

La terza e ultima fase ha comportato l’effettiva migrazione dell’appli-cazione alla versione 9. Sono stati corretti gli errori e sostituite le funzioni egli eventi obsoleti.

Una volta migrata l’applicazione alla versione 9 ho cominciato a crearee riprogettare alcune parti dell’applicazione gestionale utilizzando i serviziforniti dalle PFC versione 9 e i comandi Oracle PL/SQL in modo da sfruttareanche le potenzialita del sistema Oracle. Ho inoltre sfruttato i principi dieredita, incapsulazione e polimorfismo forniti da PowerBuilder, un ambientedi sviluppo 4GL, RAD (Rapid Application Development) object oriented.Questo vuol dire che l’applicazione puo essere riprogettata sfruttando tuttele piu moderne tecnologie. Questo ambiente consente di ottenere massimeperformance proprio in quelle situazioni in cui la gestione dei dati e al centrodell’intero sistema.

La migrazione a PowerBuilder 9 consente cosı di sfruttare le nuove fun-zionalita e i nuovi servizi forniti dalle PFC9 e di utilizzare anche sistemioperativi aggiornati. PowerBuilder 9 e infatti compatibile con le seguentipiattaforme e configurazioni del sistema operativo: Microsoft Windows NTcon Service Pack 6a o successivi, Microsoft Windows 2000 con Service Pack2 o successivi e con Microsoft Windows XP.

PowerBuilder sta assumendo sempre piu importanza sul mercato e vienesempre piu utilizzato, perche viene ritenuta tra le piu stabili e potenti soluzionipresenti sul mercato. A dimostrazione lo e il fatto che sia stata utilizzatala tecnologia Sybase [Zil04] anche per la realizzazione del progetto ”Sissi inRete” per l’informatizzazione e la gestione della segreteria scolastica, commis-sionato dal Ministero dell’Istruzione, dell’Universita e della Ricerca (MIUR)nel marzo 2003.

9.1 Lavori futuri

La migrazione dell’applicazione a PowerBuilder 9 fornisce la possibilita direalizzare applicazioni web e costruire web services client.

Con PowerBuilder 9 e possibile inserire piu target all’interno di uno stessoworkspace. Un target puo essere di due tipi:

- PowerScript target: componenti server, applicazioni client/server omultitier

Page 115: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

9.1 Lavori futuri 105

- Web target: un’applicazione web che puo contenere tutti gli elementidi cui necessita un’applicazione localizzata su web (file HTML, scripts,immagini, componenti scaricabili) o un’applicazione Java server Pages.

Un’applicazione Web [Syb03d] puo rappresentare parte o tutto un sito Web.Le applicazioni web create utilizzando PowerBuilder Web targets sono di-namiche, interagiscono con i dati del database e accedono a componenti lo-calizzati in server middle-tier. Le applicazioni possono includere semplicipagine HTML o pagine HTML complesse con:

- scripting client/server side

- contenuti del database

- datawindows web

- componenti EAServer o controlli ActiveX

- componenti di transazione per accedere al server

I servizi web [Bal02], meglio noti come web services, sono diventanti unodegli argomenti piu attuali nel panorama dello sviluppo in ambiente Internet.Posti al centro delle piu recenti strategie di aziende del calibro di IBM, Mi-crosoft e Sun, vengono spesso descritti come una vera e propria rivoluzionenel mondo del web ed in particolare per tutto quanto attiene allo sviluppodi applicazioni distribuite ed all’integrazione di applicazioni. I web servicescostituiscono una estensione ed una generalizzazione di componenti dinamici”tradizionali” quali applicazioni CGI, servlet Java, script e cosı via ... Essi,infatti, li estendono in quanto consentono, ad esempio, di ottenere l’indipen-denza dell’applicazione dal protocollo di trasporto e dalla piattaforma di im-plementazione. Ne costituiscono, inoltre, una generalizzazione in quanto uncomponente dinamico tradizionale puo essere considerato un caso particolaredi servizio web in cui alcune caratteristiche sono prestabilite (il protocollo ditrasporto, ad esempio, che e HTTP). Un’importante implicazione di questofatto e che spesso e possibile riformulare un’applicazione preesistente (comeun CGI) sotto forma di servizio web. Una delle caratteristiche piu interessan-ti dei web services e la possibilita di utilizzarli per comunicazioni e scambi diinformazioni automatici: non interazione tra persona e applicazione (comeavviene nella navigazione sul web), bensı interazione tra applicazioni. Lacomunicazione tra il web service e le altre applicazioni avviene tramite mes-saggi codificati in un formato XML (tipicamente SOAP). Un servizio webpuo essere a sua volta descritto mediante una descrizione del servizio chespecifica in modo formale tutte le informazioni necessarie per la sua invo-cazione: ad esempio la localizzazione, il formato dei messaggi, il protocollo

Page 116: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

106 Conclusioni

di trasporto. La descrizione dei servizi web e anch’essa basata su un apposi-to formato XML: WSDL (Web Services Description Language). Con SybaseEAServer [Syb03a] e Web Services Toolkit (non con PowerBuilder 9) questadescrizione puo essere utilizzata dalle applicazioni e registrata sul sito webche utilizza Universal Description Discovery Integration (UDDI). Si possonoricercare registri UDDI con il browser per scegliere e trovare i sevizi necessariper l’applicazione. PowerBuilder supporta i seguenti standards Web services:

- SOAP 1.1

- WSDL 1.1

- HTTP o HTTPS

Si puo accedere ai Web services da un target PowerScript o JSP. Un’appli-cazione PowerBuilder puo agire come un client utilizzando Web services edessere acceduta attraverso Internet. Un Web Service accetta e risponde arichieste mandate dalle applicazioni o da altri Web services. Invocare Webservices attraverso SOAP richiede serializzazione e deserializzazione dei tipidi dato e la costruzione e parsing di messaggi SOAP basati su XML. Utiliz-zando le librerie PBSoapClient90.pbd e PBSoapClient90.dll, il Web servicesclient proxy fornisce questi processi.

Page 117: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

Bibliografia

[ACPT99] Atzeni, Ceri, Paraboschi, and Torlone. Basi di Dati, chapterAppendice C. McGraw-Hill, second edition, 1999.

[Aim01] Aimag. L’azienda, 2001. http://www.aimag.it, 20/09/2004.

[Bal02] Balzerani L. Web services: un approccio morbido, 2002.http://www.latoserver.it/web services/, 20/09/2004.

[BDMD03] Bogliolo B., Di Sclafani A., Maggiora F., and Di Pietro N.Ambienti: Oracle, 2003. http://www.archesis.it/white/oracle/,05/09/2004.

[Bel03] Beltrami S. Teorie e tecniche per velocizzare il web. pages 1–2,2003. http://www.01net.it/01NET/HP, 10/09/2004.

[BT03] Boschetti F. and Tabarelli B. Terminal Server based comput-ing: dall’ambiente host a Citrix, l’evoluzione sistemistica delleapplicazioni di rete in Aimag S.p.A. Aimag Notizie, pages 1–5,2003.

[Nov01] Novalys, editor. Visual Expert. Getting Started. Boulogne, firstedition, 2001.

[S.P00] Roger S.Pressman. Principi di Ingegneria del software. McGraw-Hill, third edition, 2000.

[Syb99] Sybase, editor. Sybase PowerBuilder. Getting Started, chapter 1.Emeryville, first edition, 1999.

[Syb01a] Sybase, editor. Application Tecniques: Selected Object-OrientedProgramming Topics, chapter 1-2. Emeryville, first edition, 2001.

[Syb01b] Sybase, editor. Sybase PowerDesigner. Business Process Model.Getting Started, chapter 1. Emeryville, first edition, 2001.

Page 118: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

108 BIBLIOGRAFIA

[Syb01c] Sybase, editor. Sybase PowerDesigner. Conceptual Data Model.Getting Started, chapter 1. Emeryville, first edition, 2001.

[Syb01d] Sybase, editor. Sybase PowerDesigner. Object-Oriented Model.Getting Started, chapter 1. Emeryville, first edition, 2001.

[Syb01e] Sybase, editor. Sybase PowerDesigner. Physical Data Model.Getting Started, chapter 1. Emeryville, 2001.

[Syb03a] Sybase, editor. Application Tecniques: Building a Web ServicesClient, chapter 30. Emeryville, first edition, March 2003.

[Syb03b] Sybase, editor. PowerBuilder Foundation Class Library User’sGuide. Emeryville, first edition, March 2003.

[Syb03c] Sybase, editor. Release Bulletin PowerBuilder Enterprice 9.0.Emeryville, first edition, March 2003.

[Syb03d] Sybase, editor. Working with Web and JSP Targets: Workingwith Web Targets, chapter 1. Emeryville, first edition, March2003.

[Syb04] Sybase. Profilo Societa, April 2004.http://www.sybase.it/corporate/, 20/09/2004.

[Zil04] Zilli A. Sql Anywhere e Powerbuilderdi Sybase per la segreteria, May 2004.http://www.azpoint.net/news/Software News 7998.asp,20/09/2004.

Page 119: Universitµa degli Studi di Bologna · Universitµa degli Studi di Bologna Facoltµa di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Specialistica Materia

Ringraziamenti

Tante volte ho pensato a quante persone devo ringraziare, ma non solo peravermi supportato nella realizzazione di questa tesi, ma in tutti questi cinqueanni universitari.

Frequentare l’universita e stato un divertimento, quando non c’erano gliesami in vista, e per questo devo ringraziare i miei compagni di corso e diviaggio. E sı di viaggio, perche con loro quanti viaggi che ci siamo fat-ti a Bologna ... e quante giocate a carte tra briscola in cinque e scoponescientifico.

Ringrazio Manu, Luca ed Alessio con cui ho sviluppato la maggior partedei miei progetti, il Bomber ed Enrico che hanno sempre risolto qualsiasiproblema si riscontrasse nella preparazione di qualunque esame, Gianre eVale che con la loro simpatia hanno rallegrato tutte le giornate trascorseinsieme. Ringrazio anche Salvatore che penso sia una delle persone piu gentiliche abbia conosciuto, che mi ha sempre aiutato, procurato appunti e tenutoaggiornata su qualsiasi novita si presentasse a Bologna.

Ringrazio il mio relatore interno, Prof. Paolo Ciancarini, che mi ha ascol-tato e dato consigli utili non solo per la realizzazione della tesi, ma per lamia carriera.

Ringrazio il mio relatore esterno, Lino Bellocchio, che mi ha dato sugge-rimenti e spunti durante lo svolgimento della tesi; tutte le persone del CEDdi Aimag che si sono resi sempre disponibili e Stefano che mi ha aiutato astampare i miei bellissimi diagrammi su plotter.

Ringrazio Davide che mi e stato sempre vicino e la mia famiglia che miha permesso di vivere questa indimenticabile esperienza che e l’universita.