Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Facoltà di Ingegneria
Corso di Laurea Triennale in Ingegneria Informatica
Progettazione e realizzazione di
un’applicazione per la gestione dei privilegi
di accesso ad applicazioni software
Relatore Laureando
A.A. 2008/2009
1. INTRODUZIONE.............................................................................................................................................3
2. ANALISI........................................................................................................................................................4
2.1 – Situazione di partenza.........................................................................................................................4
2.2 – Requisiti...............................................................................................................................................4
2.2.1 – Strutturazione dei requisiti in gruppi di frasi omogenee...............................................................6
2.2.2 – Glossario dei termini.....................................................................................................................8
3. PROGETTAZIONE DELLA BASE DI DATI..........................................................................................................9
3.1 – PROGETTAZIONE CONCETTUALE.........................................................................................................9
3.1.1 – Analisi delle entità......................................................................................................................11
3.1.2 – Analisi delle relazioni e delle cardinalità.....................................................................................12
3.2 – PROGETTAZIONE LOGICA...................................................................................................................14
3.2.1 – Tabelle dei volumi.......................................................................................................................14
3.2.2 – Tabelle delle operazioni..............................................................................................................15
3.2.3 – Tabelle degli accessi....................................................................................................................15
3.2.4 – Ristrutturazione del diagramma E-R...........................................................................................17
3.2.4 – Traduzione verso il relazionale...................................................................................................20
4. SVILUPPO DEL PROTOTIPO DELLA BASE DI DATI.........................................................................................22
5. REALIZZAZIONE DELLA BASE DI DATI..........................................................................................................24
5.1 – Esportazione verso SQL Server..........................................................................................................24
5.2 – Trigger e Stored Procedures..............................................................................................................24
5.2.1 – Trigger.........................................................................................................................................25
5.2.2 – Stored Procedures......................................................................................................................27
6. REALIZZAZIONE DELL’INTERFACCIA UTENTE...............................................................................................29
6.1 – ADO.NET............................................................................................................................................29
6.2 – REALIZZAZIONE DEL FRONT-END.......................................................................................................29
2
1. INTRODUZIONE
3
2. ANALISI
2.2 – Requisiti
La fase di analisi è una fase di notevole criticità nel processo di sviluppo; in essa
il fornitore si reca dal cliente per capire ed interpretare quali siano i bisogni di
quest’ultimo.
Lo svolgimento dell’ attività di analisi dei requisiti è avvenuto tramite interviste
ai futuri utenti del sistema finale. Questa fase ha richiesto notevole tempo per
ottenere un’inquadratura migliore possibile delle esigenze, in modo da evitare
che errori dovuti a un’errata interpretazione dei bisogni del committente si
potessero ripercuotere in tutte le successive fasi di lavoro.
4
utente degli applicativi si vuole memorizzare un’anagrafica contenente Nome,
Cognome, Matricola (o Codice Identificativo), Data di Nascita, Codice Fiscale,
Sede di Appartenenza con relativo Reparto ed eventuale Data di Cessazione.
Per ogni Reparto si vuole poter inserire nel database, oltre al nome di questo, un
Numero di telefono interno e la Sede dove esso è locato, sede che sarà
contraddistinta da nome, indirizzo e numero di telefono.
Per quanto riguarda gli Applicativi ai quali un utente può accedere, essi sono
circa trenta, divisibili tra quelli abilitati dall’ufficio informativo stesso e quelli
abilitati da Insiel; ogni applicativo fornisce da uno o più di un centinaio di ruoli.
Ogni dipendente può ottenere anche un numero elevato di abilitazioni, gli viene
cioè assegnato un ruolo per ogni applicativo che egli può utilizzare.
Un operatore del Servizio Informativo o utente della base di dati, può ricevere
una richiesta di modifica delle abilitazioni di uno o più dipendenti; in questo
caso egli vuole poter effettuare una modifica nel database, modifica che può
riguardare più abilitazioni e più utenti ma che deve essere contrassegnata da un
singolo numero di protocollo (o numero di pratica), dalla data di modifica e
dall’operatore che l’ha effettuata. In caso di abilitazioni ad applicativi fornite da
Insiel , ogni nuovo protocollo dovrà poi essere inoltrato a tale azienda; è stata
perciò richiesta la funzionalità di stampa di un modulo contenente tutte le
informazioni sui ruoli, modulo che preferibilmente dovrà essere adattato a una
singola pagina. Il sistema dovrà distinguere tra abilitazioni fornite dall’azienda
esterna e abilitazioni direttamente effettuate dagli operatori del database; solo
nel primo caso è richiesta la stampa di un modulo.
Deve inoltre essere fornita la possibilità di effettuare ricerche filtrate per dati
anagrafici, numero di matricola, applicativo, numero di protocollo.
Per quanto riguarda l’interfaccia utente definitiva essa deve essere il più
semplice e sobria possibile secondo le preferenze degli utenti.
Non sono stati espressi particolari vincoli riguardanti sicurezza e prestazioni del
sistema finale.
Si vuole progettare e realizzare una base dati che possa permettere agli
operatori di controllare e modificare l’elenco dei dipendenti dell’ospedale
(dell’ordine delle migliaia di persone) che hanno ottenuto l’abilitazione o
meno ad accedere a numerosi applicativi utilizzati a lavoro.
6
Frasi relative alla sede
Per quanto riguarda la Sede si vuole memorizzare Nome della Sede, Città ,
CAP, Indirizzo e Numero di Telefono.
Ogni dipendente può avere più o meno privilegi, ma gli viene assegnato
uno e un solo ruolo per ogni applicativo che egli può utilizzare.
7
2.2.2 – Glossario dei termini
Si è costruito un glossario dei termini; per ogni termine significativo ricavato dai
requisiti si sono inseriti una breve descrizione, relazioni con altri termini del
glossario ed eventuali sinonimi.
8
3. PROGETTAZIONE DELLA BASE DI DATI
9
–
10
3.1.1 – Analisi delle entità
Persona
Matricola: È il codice univoco che identifica qualsiasi dipendente dell’azienda sanitaria
(tuttora lavorante o meno); è candidato ad essere chiave primaria dell’entità
“Persona”.
Nome: Nome proprio della persona
Cognome: Cognome della persona
Data di nascita: Data di nascita della persona
Sesso: Sesso della persona
C.F. : Codice Fiscale della persona
Dipendente
Stessi attributi dell’entità padre “Persona”
Ex-Dipendente
Stessi attributi dell’entità padre “Persona”
Data di cessazione: Data in cui l’impiegato ha concluso l’esperienza lavorativa
Operatore
Stessi attributi del padre “Dipendente”
Non operatore
Stessi attributi del padre “Dipendente”
Reparto
RepartoID: codice univoco che identifica il reparto di appartenenza di una Persona.
Questo campo è candidato a essere chiave primaria dell’entità “Reparto”
Nome Reparto: nome del reparto dell’ospedale
Telefono: numero di telefono interno del reparto
Sede
SedeID: codice univoco che identifica la sede nella quale è situato un reparto. Questo
campo è candidato a essere chiave primaria dell’entità “Sede”
Nome: nome della sede
11
Città : città dove una sede ha locazione
Indirizzo: indirizzo della sede
Telefono: numero di telefono della sede
Applicativo
ApplicativoID: codice univoco che identifica gli applicativi software utilizzati dai
dipendenti dell’ospedale. Questo campo è candidato a essere chiave primaria
dell’entità “Applicativo”
Nome: nome usato per definire l’applicativo
Abilitato da: campo che distingue tra applicativi abilitati dall’azienda esterna o dagli
operatori dell’ufficio informativo stesso
Ruolo
RuoloID: codice univoco che identifica il ruolo o abilitazione che una persona ha per il
singolo applicativo. Questo campo è candidato a essere chiave primaria dell’entità
“Applicativo”
Nome: nome dell’abilitazione che un dipendente può ottenere per un applicativo
Protocollo
ProtocolloID: numero univoco e progressivo che identifica una pratica di modifica
delle abilitazioni dei dipendenti.
Data di modifica: data in cui è stata aperta la nuova pratica
Operatore: colui il quale ha aperto la pratica
12
RELAZIONE CARDINALITA’
Collega l’entità “Persona” con l’entità “Ruolo”; definisce tutti i ruoli per i
quali un dipendente ha ottenuto l’abilitazione all’utilizzo.
Assegnazione Molti a molti: ogni dipendente può avere ottenuto l’abilitazione a uno o a
più ruoli e viceversa un ruolo può essere stato assegnato a numerosi
dipendenti.
13
3.2 – PROGETTAZIONE LOGICA
Dopo aver ottenuto uno schema E-R con attributi e cardinalità , è stata effettuata
come prima cosa una scelta sul modello dei dati, ovvero come sono organizzati i
dati dal punto di vista dell’elaboratore. La scelta è ricaduta sul modello
relazionale dei dati, attualmente il più diffuso, il quale permette di sistemare i
dati in strutture tabellari fisse. Una volta scelto il modello, si è passati alla
traduzione dello schema logico nello schema relazionale, schema meno astratto
del precedente e più ottimizzato per l’utilizzo finale; non si è trattato di una
semplice traduzione perché questa fase deve necessariamente tenere conto di
prestazioni e aspetti realizzativi.
14
3.2.2 – Tabelle delle operazioni
Oltre a tenere in considerazione i volumi dei dati sono state effettuate analisi
anche sulle operazioni tipiche sulla base dati, operazioni raccolte nella seguente
tabella:
15
Operazione in esame: visualizza tutti gli applicativi e ruoli per i quali un
dipendente ha le abilitazioni
Operatore Entità 1 L
Creazione Relazione 1 L
Protocollo Entità 1 S
Abilitazione Relazione 5 S
Persona Entità 5 L
Modifica Relazione 25 S
Ruoli Entià 25 L
16
Una volta ricavate queste informazioni si è potuti passare alle operazioni per la
ristrutturazione del diagramma E-R.
La prima soluzione è stata ritenuta più adatta in quanto nel sistema finale è
sufficiente accedere all’informazione complessiva e non ai campi separatamente.
Scegliendo questa soluzione il campo indirizzo diventa un campo stringa
contenente tutti i precedenti attributi.
17
Nel caso in questione è l’attributo telefono ad essere multi-valore in quanto sia
l’entità sede che l’entità reparto possono avere più di un numero di telefono.
E’ stata scelta la soluzione di creare una nuova entità collegata da una relazione
alle vecchie entità che avevano l’attributo multi valore.
18
Le generalizzazioni che si è dovuti eliminare da questo progetto sono le
seguenti:
Nome Data di
Nome Nome Cognome
Nascita
Applicativo Ruolo Operatore Si/No Codice
ApplicativoID RuoloID Matricola Fiscale
Data di Cessazione
0-N
0-N
Modifica Modifica
1-N
1-N DETTAGLIO
1-N 1-1 1-1
Dettaglio PROTOCOLLO Creazione
PROTOCOLLO
Data
Modifica ProtocolloID
Sono stati scelti gli identificatori primari in maniera che fossero unici per ogni
entità :
tblRuolo tblPersona_Ruolo
PK RuoloID PK,FK2 Matricola
PK,FK1 RuoloID
Nome
FK1 ApplicativoID
tblSede
FK2 DettaglioID
PK SedeID
tblReparto Nome
tblPersona Indirizzo
PK RepartoID
PK Matricola
Nome Reparto
Cognome FK1 SedeID
Nome
tblApplicativo
Data di Nascita
PK ApplicativoID Codice Fiscale
FK1 RepartoID
NomeApplicativo Data di Cessazione
Abilitato da Operatore Si/No
tblTelefono
PK TelefonoID
21
4. SVILUPPO DEL PROTOTIPO DELLA BASE DI DATI
Per quanto riguarda questo prototipo, sono state dapprima create tutte le tabelle
e le relative relazioni, seguendo le indicazioni dello schema relazionale come si
può notare dall’immagine sottostante:
22
Esempio di maschera in lettura, viene visualizzato a schermo l’elenco dei dipendenti
Una volta create alcune funzionalità base, questo prototipo è stato portato in
visione al cliente, il quale, confermando che i requisiti individuati in partenza
erano corretti, ha permesso la continuazione del progetto.
23
5. REALIZZAZIONE DELLA BASE DI DATI
Poiché software come Access sono limitati per vari aspetti e non offrono la
possibilità di utilizzare strumenti avanzati come i trigger, è stata effettuata la
scelta di migrare da Microsoft Access 2007 al ben più completo Microsoft Sql
Server 2005 Express. E’ stata effettuata una scelta di questo tipo soprattutto per
la possibilità di implementare i vincoli non esprimibili tramite l’utilizzo di
trigger e non tramite procedure create ad hoc. Questa scelta è stata effettuata
poichè se un vincolo è implementato nel DBMS viene rispettato comunque si
acceda al database; al contrario se invece il vincolo dovesse venire implementato
nel programma che accede alla base dati, esso sarà rispettato solo se l’accesso
viene effettuato tramite tale programma.
Pertanto è stata effettuata la migrazione a Sql Server sfruttando dei tool appositi
per l’esportazione di struttura e dati da Access.
24
5.2.1 – Trigger
Dopo aver creato le viste tramite codice Sql si è deciso di potenziare il database
tramite la scrittura dei già citati trigger.
Questi strumenti sono particolari tipi di stored procedures, ovvero procedure
memorizzate nel database stesso e scritte in linguaggio Transact-Sql; l’
esecuzione dei trigger è data dallo scatenarsi di un evento particolare, come la
modifica dello stato della base dati, secondo una condizione specificata.
In questo progetto è stato utilizzato un particolare tipo di trigger, i trigger
instead of che verranno illustrati nelle seguenti righe.
Sono stati utilizzati numerosi trigger di tipo instead of; essi sono stati creati
direttamente sulle viste per non dare all’utente dell’applicativo diretto accesso
alle tabelle della base dati; perciò sono stati scritti trigger instead of per ogni
vista del database nella quale ci fosse bisogno di inserire nuovi dati, aggiornare o
eliminare i dati preesistenti nelle tabelle.
Pertanto sono stati creati 15 trigger di tipo instead of per le seguenti viste
aggiornabili:
- View_DettaglioDipendente(trg_InsertDettaglioDipendente,
trg_UpdateDettaglioDipendente, trg_DeleteDettaglioDipendente)
- View_Reparti (trg_InsertReparto, trg_UpdateReparto,trg_DeleteReparto)
- View_Sede(trg_InsertSede,trg_UpdateSede,trg_DeleteSede)
- View_Ruolo(trg_InsertRuolo, trg_UpdateRuolo, trg_DeleteRuolo)
- View_Applicativo(trg_InsertApplicativo,trg_UpdateApplicativo,trg_DeleteA
pplicativo)
25
Codice del trigger trg_InsertDettaglioDipendente
Con la creazione di questi particolari tipi di trigger, ogni modifica effettuata dagli
utenti da programma di front-end sulle viste disponibili può venire gestita in
modo da andare a modificare in maniera controllata le tabelle della base dati.
26
5.2.2 – Stored Procedures
27
Codice della procedura spRevocaRuolo
28
6. REALIZZAZIONE DELL’INTERFACCIA UTENTE
6.1 – ADO.NET
Per quanto riguarda il secondo componente, esso può essere visto come la
rappresentazione dei dati contenuti in memoria centrale, dati che sono
nient’altro che la copia della data source fisica con tutte le tabelle e le relazioni.
Fondamentale è che il DataSet lavori in maniera “disconnessa” rispetto alla fonte
dati in quanto non è connesso direttamente ad essa; a fare da ponte tra le due
componenti è l’oggetto DataAdapter, il quale fornisce metodi per trasferire
informazioni contenute nel DataSet alla base dati e viceversa.
Nelle form sono stati utilizzati prevalentemente oggetti del tipo DataGridView,
che è stato possibile popolare con i dati del database grazie al metodo Fill fornito
dal TableAdapter, pulsanti contenenti codice da scatenare all’evento onclick e
combo-box legate a viste del database.
Qui di seguito vengono illustrate più a fondo le form fondamentali del prototipo:
Home.cs
Dipendente.cs
31
Codice esempio per la definizione del comando UPDATE per l’aggiornamento dell’anagrafica di un dipendente nel
database.
Il pulsante Salva contiene all’interno del proprio evento OnClick due righe
di codice utilizzate per il corretto salvataggio delle modifiche nel database.
32
RiepilogoAssegnazioneRuoli.cs.
La prima delle due form contiene un elemento DataGridView, riempito
dalla vista view_RuoliAssegnati, e più combo box per la scelta
dell’operatore, dei ruoli e dei dipendenti ai quali assegnare le abilitazioni,
oltre che pulsanti per salvare le modifiche; per rimuovere i ruoli di un
dipendente basta selezionare la riga desiderata dal DataGrid e cancellarla.
AssegnazioneRuoli.cs
33
Per la rimozione dei ruoli si è creato un nuovo comando delete, il quale si
occupa della chiamata alla stored procedure spRevocaRuolo passandole in
ingresso gli appositi parametri idProtocollo, Matricola e Ruolo in maniera
che essa gestisca la rimozione dei ruoli selezionati dalla tabella corretta e
aggiunga al dettaglio protocollo l’operazione di rimozione effettuata.
34
Infine il pulsante Salva sfrutta il metodo Update per aggiornare il database
e il pulsante Riepilogo Modifiche va ad aprire un’altra form contenente il
dettaglio dei protocolli come da figura seguente:
RiepilogoAssegnazioniRuoli.cs
35
7. CONCLUSIONI
Lo sviluppo della base dati e del prototipo software per la sua gestione si è
concluso con esito positivo.
Lo sviluppo futuro del progetto riguarderà , dopo presa visione del prototipo da
parte del cliente, aggiunta di ulteriori funzionalità utili per il prodotto finale,
miglioramenti per quanto riguarda i vincoli non funzionali del prodotto, una fase
di test e collaudo in sede seguita da installazione e messa in opera
dell’applicativo finale.
36
8. BIBLIOGRAFIA
Groh, Stockman, Powell, Prague, Irwin, Reardon “Microsoft Office – Access 2007
Bible” , Wiley Publishing
37