Progetto di Ingegneria del Software Fantacalcio On-Line

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Progetto di Ingegneria del Software Fantacalcio On-Line"

Transcript

1 Alla mia famiglia che mi ha permesso di studiare. A mio fratello per i suoi preziosi insegnamenti. Ai miei migliori amici, nonché compagni di viaggio, Marco e Mirko con cui ho trascorso tre anni bellissimi della mia vita. Alla mia migliore amica Marzia. 1

2 Prefazione Questo progetto è stato realizzato, per il superamento di un esame universitario previsto nel mio piano di studi, da un gruppo di studenti formato da: Previtali Fabio, Paluci Marco e Malacario Mirko. 2

3 Indice Strumenti utilizzati...14 Note sugli strumenti utilizzati...15 Note sulle revisioni dei documenti Requisiti utente e specifiche funzionali del sistema Introduzione Scopo dell'unità Requisiti utente Dichiarazione di portata del progetto Sintesi degli attori e dei relativi scenari di successo Il dominio di interesse Il dominio di interesse in sintesi Analisi dei dati: progettazione concettuale Introduzione al Class Diagram Class Diagram Giustificazione delle scelte effettuate Textual Analysis: data dictionary Attori Use Case Classi Glossario degli attributi Requisiti funzionali del sistema: gli Use Case Diagram Introduzione agli Use Case Diagram Schema completo dello Use Case Diagram Sommario Giustificazione delle scelte effettuate Use Case Diagram in dettaglio: Visitatore Use Case Visitatore: registrazione al sistema Sequence Diagram: registrazione al sistema

4 Use Case Visitatore: consultazione delle rose delle squadre iscritte Sequence Diagram: consultazione delle rose delle squadre iscritte Use Case Visitatore: consultazione informazioni sulla lega Sequence Diagram: consultazione informazioni sulla lega Use Case Visitatore: consultazione statistiche Sequence Diagram: consultazione statistiche Use Case Visitatore: consultazione risultati Sequence Diagram: consultazione risultati Use Case Diagram in dettaglio: Allenatore Use Case Allenatore: partecipazione al calciomercato durante la stagione Sequence Diagram: partecipazione al calciomercato durante la stagione Use Case Allenatore: creazione rosa Use Case Allenatore: modalità asta a rialzo Sequence Diagram: modalità asta a rialzo Use Case Allenatore: modalità asta a busta chiusa Sequence Diagram: modalità asta a busta chiusa Use Case Allenatore: login Sequence Diagram: login Use Case Allenatore: scelta modalità formazione Sequence Diagram: scelta modalità formazione Use Case Allenatore: scelta formazione senza l'ausilio del sistema Sequence Diagram: scelta formazione senza l'ausilio del sistema Use Case Allenatore: scelta formazione con l'ausilio del sistema Sequence Diagram: scelta formazione con l'ausilio del sistema Gli Use Case diagram in dettaglio: Presidente Use Case Presidente: creazione della lega Sequence Diagram: creazione della lega Use Case Presidente: inserimento numero partecipanti Sequence Diagram: inserimento numero partecipanti Use Case Presidente: scelta modalità asta Sequence Diagram Presidente: scelta modalità asta Use Case Presidente: scelta modalità busta chiusa Sequence Diagram: scelta modalità busta chiusa

5 Use Case Presidente: scelta modalità di offerta a rialzo Sequence Diagram: scelta modalità di offerta a rialzo Gli Use Case diagram in dettaglio: Amministratore Use Case Amministratore: gestione lega Sequence Diagram: gestione lega Use Case Amministratore: modifica lista calciatori Sequence Diagram: modifica lista calciatori Conclusioni dell'unità Pianificazione del progetto Introduzione Scopo dell'unità Function Point Bozza dello schema logico Descrizione del metodo di stima dei Function Point Function Point non pesati: funzioni di tipo dati ILF (Internal Logic File) Calcolo degli UFP (Unadjusted Function Point) per gli ILF Function Point non pesati: funzioni di tipo transazione Identificazione degli EI (External Input) Calcolo degli UFP (Unadjusted Function Point) per gli EI (External Input) Identificazione degli EO (External Output) Calcolo degli UFP (Unadjusted Function Point) per gli EO (External Output) Identificazione degli EQ (External Query) Calcolo degli Unadjusted Function Point (UFP) per gli EQ (External Query) Calcolo degli UFP (Unadjusted Function Point) totali Calcolo degli Adjusted Function Point (AFP) Fattori di aggiustamento Stima dello sforzo complessivo Assegnazione degli scale factors Motivazione delle scelte Assegnazione degli effort multiplers Motivazione delle scelte

6 2.3.3 Distribuzione dello sforzo complessivo Pianificazione temporale Work Breakdown Structure Diagrammi di Pert e GANTT Diagramma di Pert: visione d'insieme Diagramma di Pert: analisi e pianificazione Diagramma di Pert: progettazione Diagramma di Pert: implementazione Diagramma di Pert: test e rilascio Diagramma di Pert: cammino critico Diagramma GANTT Diagramma GANTT: cammino critico Ripartizione delle attività Work Breakdown Structure con la durata di ciascuna attività Malacario Mirko Paluci Marco Previtali Fabio Conclusioni dell'unità Prototipo dell'applicazione Introduzione Scopo dell'unità Albero di navigazione Visione d'insieme Diagrammi albero di navigazione Diagrammi albero di navigazione: Amministratore Diagrammi albero di navigazione: Allenatore Diagrammi albero di navigazione: Allenatore (Parte 1) Diagrammi albero di navigazione: Allenatore (Parte 2) Diagrammi albero di navigazione: Allenatore (Parte 3) Diagrammi albero di navigazione: Allenatore (Parte 4) Diagrammi albero di navigazione: Allenatore (Parte 5) Diagrammi albero di navigazione: Presidente della Lega

7 Diagrammi albero di navigazione: Visitatore Diagrammi albero di navigazione: Visitatore (Parte 1) Diagrammi albero di navigazione: Visitatore (Parte 2) Diagrammi albero di navigazione: Visitatore (Parte 3) Diagrammi albero di navigazione: Visitatore (Parte 4) ADM (Araneus Data Model) ADM (Araneus Data Model): Amministratore ADM (Araneus Data Model): Amministratore (Parte 1) ADM (Araneus Data Model): Amministratore (Parte 2) ADM (Araneus Data Model): Allenatore ADM (Araneus Data Model): Allenatore (Parte 1) ADM (Araneus Data Model): Allenatore (Parte 2) ADM (Araneus Data Model): Allenatore (Parte 3) ADM (Araneus Data Model): Allenatore (Parte 4) ADM (Araneus Data Model): Allenatore (Parte 5) ADM (Araneus Data Model): Allenatore (Parte 6) ADM (Araneus Data Model): Presidente della Lega ADM (Araneus Data Model): Visitatore ADM (Araneus Data Model): Visitatore (Parte 1) ADM (Araneus Data Model): Visitatore (Parte 2) ADM (Araneus Data Model): Visitatore (Parte 3) Sequence Diagram Sequence Diagram: registrazione al sistema (UC-1) Sequence Diagram: consultazione delle rose delle squadre iscritte (UC-2) Sequence Diagram: consultazione informazioni sulla lega (UC-3) Sequence Diagram: consultazione statistiche (UC-4) Sequence Diagram: consultazione risultati (UC-5) Sequence Diagram: partecipazione al calciomercato durante la stagione (UC-6) Sequence Diagram: modalità asta a rialzo (UC-8) Sequence Diagram: modalità asta a busta chiusa (UC-9) Sequence Diagram: login (UC-1) Sequence Diagram: scelta modalità formazione (UC-11) Sequence Diagram: scelta formazione senza l'ausilio del sistema 7 (UC-12)...151

8 Sequence Diagram: scelta formazione con l'ausilio del sistema (UC-13) Sequence Diagram: creazione della lega (UC-14) Sequence Diagram: inserimento numero partecipanti (UC-15) Sequence Diagram: scelta modalità asta (UC-16) Sequence Diagram: scelta modalità busta chiusa (UC-17) Sequence Diagram: scelta modalità di offerta a rialzo (UC-18) Sequence Diagram: gestione lega (UC-19) Sequence Diagram: modifica lista calciatori (UC-2) Il prototipo Scelte effettuate Struttura delle pagine Screenshot Login (index.html, logadmin.html, logallenatore.html) Registrazione al sistema (registrazione.html) Consultazione statistiche (statistiche_calciatore.html, lista_calciatori.html, calciatore.html) Consultazione risultati (calendario.html, partita.html classifica.html) Consultazione rose delle squadre iscritte (rosa.html) Consultazione informazioni sulla lega (infolega.html) Scelta modalità senza l'ausilio del sistema (formazione_manuale.html) Scelta modalità con l'ausilio del sistema (formazione_assistita.html, formazione_assistita_passo2.html, riepilogo_formazione_assistita.html) Partecipazione al calciomercato durante la stagione (mercato_in_stagione.html, mercato_in_stagione_passo2.html, mercato_in_stagione_passo3.html, mercato_in_stagione_passo4.html) Modalità asta a busta chiusa (crea_rosa_busta.html, crea_rosa_busta_riepilogo.html) Crea rosa modalità asta a rialzo (crea_rosa_rilancio_passo1.html, crea_rosa_rilancio_passo2.html, crea_rosa_rilancio_passo6.html, crae_rosa_rilancio_passo7.html) Gestione Lega (inserimento_voti.html, modifica_calciatori.html, riepilogo_dati_inseriti.html) Modifica lista calciatori (modifica_calciatori.html)

9 Crea Lega (crea_lega.html) Inserimento numero partecipanti (numero_partecipanti.html) Scelta modalità asta (scelta_modalita_asta.html) Crea lega modalità busta chiusa (crea_lega_modalita_busta.html, riepilogo_crea_lega_busta.html) Crea lega modalità rialzo (crea_lega_modalita_rilancio.html, riepilogo_crea_lega_rilancio.html) Dettaglio delle pagine (forma tabellare) Conclusioni dell'unità Disegno del sistema Introduzione Scopo dell'unità Basi di dati Schema ER Glossario delle entità e delle relazioni Elenco di tutti i vincoli non esprimibili mediante lo schema ER Schema ER ristrutturato Schema logico Schema logico ristrutturato Definizione della politica adottata nelle cancellazioni di dati nel caso di vincoli di inclusione o foreign key Elenco delle utenze che devono essere definite sulla base di dati Codice SQL per la creazione della base di dati Creazione delle tabelle Foreign Key Stored Procedure Trigger Vincoli di stato Specifica dei trigger Altri vincoli di stato Vincoli di stato implementati tramite transazioni

10 Ridondanze Architettura hardware Piattaforma software Architettura software Introduzione Scelte effettuate Implementation Model Deployment Diagram Component Diagram Package Diagram Design Model Servlets Controller Domain Classes Persistence Classes Utility Responsabilità delle associazioni Design Model e Sequence Diagram suddivisi per Use Case Design Model e Sequence Diagram: registrazione al sistema (UC-1) Design Model e Sequence Diagram: consultazione delle rose delle squadre iscritte (UC-2) Design Model e Sequence Diagram: consultazione informazioni sulla lega (UC-3) Design Model e Sequence Diagram: consultazione statistiche (UC-4) Design Model e Sequence Diagram: consultazione risultati (UC-5) Design Model e Sequence Diagram: consultazione calendario Design Model e Sequence Diagram: consultazione classifica Design Model e Sequence Diagram: partecipazione al calciomercato durante la stagione (UC-6) Design Model e Sequence Diagram: creazione rosa modalità asta a rialzo (UC-8) Design Model e Sequence Diagram: creazione rosa modalità asta a busta chiusa (UC-9) Design Model e Sequence Diagram: login (UC-1) Design Model e Sequence Diagram: scelta formazione senza l'ausilio del sistema (UC-12) 1

11 Design Model e Sequence Diagram: scelta formazione con l'ausilio del sistema (UC-13) Design Model e Sequence Diagram: creazione della lega modalità asta a rialzo (UC-18) Design Model e Sequence Diagram: gestione lega (UC-19) Design Model e Sequence Diagram: inserimento voti Design Model e Sequence Diagram: calcolo dei risultati Design Model e Sequence Diagram: modifica lista calciatori (UC-2) Design Model e Sequence Diagram: modifica calciatori Design Model e Sequence Diagram: inserimento calciatori Conclusioni dell'unità Implementazione Introduzione Scopo dell'unità Regole adottate per la stesura del codice Differenze introdotte rispetto alla fase di analisi e di prototipazione Conclusioni dell'unità Manuale d'installazione e d'uso Installazione degli stumenti necessari al funzionamento Installazione della Java Virtual Machine Installazione del DBMS MySQL Configurazione MySQL Server Creazione e popolamento Installazione Tomcat Manuale d'uso Funzionalità del visitatore Funzionalità dell'allenatore Funzionalità dell'amministratore Piano dei test Introduzione

12 7.1.1 Scopo dell'unità Strategia dei test Test di unità White Box Black Box Test di accettazione Rapporto dei test Test di unità White Box ServletLogin: metodo dopost ServletAcquisisciRose: metodo dopost DAOAllenatore: metodo verifica Black Box AssociazioneDisputa: metodo calcolafantavoto ControllerCalciatore: metodo acquisiscicalciatoriperastarialzo DAOAllenatore: metodo verifica DAOPortiere: metodo inserimentoportiere Test di accettazione registrazione al sistema (UC-1) scelta formazione senza l'ausilio del sistema (UC-12) Conclusioni dell'unità Conclusioni del progetto Introduzione Scopo dell'unità Criticità e problemi riscontrati Assessment del lavoro svolto Foglio di rilascio: generale Foglio di rilascio: Malacario Mirko Foglio di rilascio: Paluci Marco Foglio di rilascio: Previtali Fabio Attendibilità sulla stima Bibliografia

13 1. Sitografia

14 Strumenti utilizzati Applicazioni utilizzate Scopo dell'utilizzo OpenOffice.org Writer 2.4 Stesura del presente documento. Analisi testuale; realizzazione degli use case e del class diagram; stesura del Visual Paradigm for UML Standard Edition 6.2 report di analisi; stesura dei sequence diagram. COCOMO II Calcolo dello sforzo. PlanBee Realizzazione del diagramma di Pert e GANTT. Microsoft Office Excel 23 Realizzazione dei diagrammi di COCOMO. Adobe Dreamweaver CS3 Stesura delle pagine HTML. OpenOffice.org Impress 2.4 Stesura dell'albero di navigazione. Microsoft Visio 27 Stesura dell'araneus Data Model (ADM). Mozilla Firebug Debugging codice Javascript ed analisi del DOM. Microsoft Office Picture Manager Modifica degli screenshot e del prototipo freddo. Paint Shop Pro 4.14 Realizzazione dello schema ER. Eclipse versione Ganymede Scrittura ed esecuzione del codice dell'applicazione. Apache Tomcat Web Server. JUnit 4.5 Esecuzione dei test riguardanti il codice diverso da Servlet e JSP. Cactus 2 Esecuzione dei test riguardanti il codice relativo a Servlet e JSP. Microsoft Office Power Point 23 Disegno degli alberi per i test White Box. 14

15 Note sugli strumenti utilizzati OpenOffice.org Writer 2.4: E' stato preferito al software Microsoft Office per la sua stabilità ma soprattutto per la sua natura open source; inoltre OpenOffice.org permette di passare su qualsiasi sistema operativo senza alcun problema di compatibilità dei file, grazie alla sua realizzazione in linguaggio Java. Un problema è nato durante la stesura del report generato da Visual Paradigm: tale report infatti risulta esssere totalmente compatibile esclusivamente con Microsoft Word 23. Visual Paradigm for UML Standard Edition 6.2: Il software consigliato dal professor Marchetti ha supportato in maniera buona la fase di analisi per la stesura dei diagrammi; ottima la generazione automatica dei Sequence Diagram a partire dalla compilazione del template fornitoci. Tuttavia sono state riscontrate varie pecche: innanzitutto problemi di compatibilità del software con l'interfaccia avanzata Compiz disponibile sulle ultime distribuzioni Linux. Una grande pecca del programma è che la licenza accademica ha bisogno necessariamente di una connessione ad internet per essere controllata; questo ha reso complicate più del previsto le giornate in cui tale accesso alla rete non ci era permesso o non lo riuscivamo ad ottenere. Sono sorti poi problemi dovuti al disegno del Class Diagram dove è impossibile modificare gli ancoraggi delle note alle classi, così come le frecce delle subset, piccoli bug fastidiosi sono stati riscontrati nello strumento Textual Analysis. Infine è risultata molto fastidiosa la stesura del report dell'analisi. Tale report come specificato sopra risulta essere compatibile esclusivamente con Microsoft Word 23; nel Writer di OpenOffice.org le tabelle sono piene di lacune e sovrapposizioni sia di immagini che di righe e colonne. In generale tuttavia è risultato un buono strumento di supporto alla fase di analisi, vista la completa rappresentabilità dei diagrammi UML. 15

16 COCOMO II: E' stato un ottimo supporto alla fase di pianificazione del progetto; l'interfaccia grafica è molto intuitiva e semplice permettendo un veloce raggiungimento degli obiettivi prefissati. L'unica pecca riscontrata è quella che una cartella del percorso del file non può superare la dimensione di 8 caratteri e questo ha creato all'inizio alcuni problemi nel suo utilizzo. PlanBee: E' stato un buono strumento per la realizzazione dei diagrammi di Pert e GANTT a partire dalla WBS definita. Una pecca fastidiosa è stata quella dell'impossibilità di utilizzare il programma a tutto schermo poiché ciò non era permesso. Microsoft Office Excel 23: E' stata una scelta obbligata poiché l'esportazione dei file di COCOMO utilizzava alcune macro che OpenOffice.org Writer non era in grado di riconoscere. Adobe Dreamweaver CS3: Il programma di casa Adobe è stato preferito a quello di casa Microsoft (FrontPage 23), per la sua maggiore potenza espressiva a parità di facilità di utilizzo. Ottimo è il supporto per la scrittura dell'html e il supporto per la stesura di codice javascript. Le difficoltà sopraggiungono per eventuali errori di sintassi nella stesura di codice javascript, che non vengono riportati. Tuttavia, anche se non utilizzati nel nostro caso, ci sono ottimi strumenti di supporto per creare oggetti utilizzanti codice javascript (ad esempio dei menu dinamici) senza però avere il bisogno di scrivere codice. Una nota negativa è che in alcuni casi le pagine create mediante la sezione Progettazione del programma (la sezione per cui si possono inserire elementi senza scrivere alcuna riga di codice HTML) ha comportato la non compatibilità delle pagine con il browser Internet Explorer di casa Microsoft. Questo ha sottratto tempo per la revisione di ogni riga del codice automaticamente generato,codice che è stato modificato in alcuni casi anche in maniera massiccia. Questa incompatibilità è risultata esclusivamente sul browser sopra indicato, 16

17 poiché il prototipo è stato testato anche su altri browser (Mozilla Firefox, Safari, Opera e Google Chrome) senza riportare alcun problema. OpenOffice.org Impress 2.4: Il programma è stato utilizzato limitatamente alla stesura dell'albero di navigazione; il lavoro è stato svolto in maniera pulita ed ottimale, senza alcun intoppo. Il programma ha quindi supportato in ottima maniera il lavoro svolto. Microsoft Visio 27: Il programma è stato utilizzato limitatamente alla stesura del diagramma ADM (Araneus Data Model); il lavoro è stato svolto in maniera pulita ed ottimale, senza alcun intoppo. Il programma ha quindi supportato in ottima maniera il lavoro svolto. Mozilla Firebug 1.2.1: L'estensione del noto browser Mozilla Firefox ha supportato egregiamente la fase di controllo sul codice javascript. L'estensione risulta essere molto potente; essa infatti segnala gli errori del codice indicando la riga e l'errore a tempo di esecuzione. Ottimo anche il supporto per l'analisi del DOM e del codice html che ci ha permesso di trovare molto facilmente delle imprecisioni presenti nel codice. Microsoft Picture Manager: Il software è stato utilizzato unicamente per il ridimensionamento delle immagini di seguito inserite. Visto che il compito richiesto al programma non era particolare, il software ha risposto bene senza provocare problemi di alcun tipo. Paint Shop Pro 4.14: Vista la mancanza di un tool per realizzare diagrammi ER ciò è stato fatto tramite questo ottimo (anche se vecchio) programma. 17

18 Eclipse versione Ganymede: E' stato scelto poiché consigliato durante il corso. E' stato un buon supporto durante la fase di implementazione e test soprattutto per l'ottima integrazione con gli altri strumenti utilizzati (Visual Paradigm for UML Standard Edition 6.2, JUnit 4.5, Cactus 2 e Apache Tomcat 6..14). Una pecca molto grande è la non intuitività dell'importazione di un progetto già esistente come per esempio è nell'ide Netbeans. Apache Tomcat 6..14: E' stato scelto poiché consigliato durante il corso. E' stato un buon web server per la nostra applicazione web, anche se molte volte durante l'implementazione andava in errore interno senza nessun particolare motivo. JUnit: E' stato scelto poiché consigliato durante il corso. E' stato un ottimo strumento per l'effettuazione dei test per codice diverso da Servlet o JSP. Non abbiamo riscontrato nessun difetto. Cactus: E' stato scelto poiché consigliato durante il corso. E' stato un buono strumento per l'effettuazione dei test su Servlet e JSP. Sono stati riscontrati alcuni difetti durante l'esecuzione dei test dove occorreva riavviare più volte la procedure di test per errori interni. Microsoft Office Power Point 23: E' stato scelto per disegnare gli alberi dei test a scatola bianca vista la semplicità di utilizzo. Note sulle revisioni dei documenti Durante il processo di sviluppo abbiamo creato diverse versioni della documentazione. Una nuova versione è stata creata in caso di aggiornamenti importanti della versione precedente. 18

19 1. Requisiti utente e specifiche funzionali del sistema 1.1 Introduzione Scopo dell'unità La seguente unità ha l'intenzione di tracciare l'analisi relativa all'applicazione che si andrà di seguito a sviluppare; tale unità sarà la base per le successive fasi del progetto. L'analisi nella presente unità sarà suddivisa in passi successivi: primo passo sarà quello di dichiarare una portata generale del progetto, cercando di focalizzare l'attenzione sugli scenari principali di successo dell'applicazione; successivamente, per comodità, effettueremo una sintesi delle funzionalità individuate. In terza istanza ci sarà la dichiarazione completa del dominio di interesse, cui seguiranno tutti i diagrammi realizzati in questa fase: Class Diagram, Use Case Diagram, Sequence Diagram; ognuno di essi corredato con la documentazione relativa prodotta. Nota Avendo adottato un modello di sviluppo a cascata i cambiamenti sui dettagli della specifica dei casi d'uso non saranno riportati in questa unità poiché essa descriverà esclusivamente il nostro processo di sviluppo durante la fase di analisi, mentre le successive modifiche o variazioni saranno documentate nelle successive unità riguardanti le fasi di progettazione e implementazione. Inoltre abbiamo deciso di inserire nella presente unità il Class Diagram già raffinato rispetto alla bozza iniziale, anche se come riportato in seguito forniremo nel materiale elettronico che consegneremo tutte le versione precedenti della documentazione in modo tale che sia possibile verificare i nostri successivi cambiamenti effettuati nel progetto. 19

20 1.2 Requisiti utente Dichiarazione di portata del progetto L applicazione da progettare riguarda la realizzazione software del celebre gioco Fantacalcio in ambiente web. Tale applicazione sarà residente su un sito web in linguaggio HTML con tecnologia di sviluppo Java. Per partecipare alla lega nel ruolo di allenatore l utente deve necessariamente registrarsi al sistema ed effettuare il login ogni qualvolta vuole accedervi, oppure può visitare il sito web senza registrarsi. Durante la visita del sito web può: consultare statistiche sui calciatori, consultare i risultati e le classifiche delle varie leghe, consultare le rose delle squadre iscritte alle leghe ed infine può ottenere informazioni generali su di esse. Durante la registrazione l'utente può iscriversi ad una delle leghe già create oppure crearne una nuova diventando così il presidente della lega. Egli ha il compito di creare la lega stabilendone il nome, il numero di squadre partecipanti ad essa (4, 6, 8 o 1) ed infine la modalità di gestione dell asta: modalità busta chiusa con relative date di apertura e chiusura dell'asta oppure modalità di offerta a rialzo con data d'inizio e durata. Ciascun allenatore, per creare la propria rosa in base alla modalità scelta dal presidente della lega (asta a busta chiusa o asta a rialzo), partecipa al calciomercato il quale è suddiviso in due fasi: asta e mercato libero. Prima dello svolgimento di ogni giornata gli allenatori selezionano la modalità di scelta della formazione da schierare nell odierna partita, utilizzando una delle due opzioni previste: con l ausilio del sistema o senza l ausilio del sistema. Successivamente alla creazione della rosa si aprirà la sessione di mercato libero, che durerà sino al termine della lega in corso (ovviamente tale fase è sospesa nel periodo che intercorre tra l inizio della prima partita della giornata del campionato di serie A ed il giorno successivo all ultima partita della medesima giornata), nel quale l'allenatore può modificare la propria rosa acquistando e vendendo i calciatori. L amministratore (unico nel sistema) ha l onere di gestire la lega inserendo nuovi giocatori, modificando alcuni già presenti oppure eliminandone altri a causa di una loro 2

21 cessione ad un campionato estero oppure inserendo, dopo ogni giornata, i voti di ciascun giocatore, compresi i bonus-malus necessari per il corretto calcolo dei fantapunti. Il sistema, appena avvenuta l iscrizione di tutti i partecipanti alla lega e terminata l'asta iniziale, genera il calendario delle giornate e le relative classifiche (ovviamente con i relativi campi azzerati). Il sistema gestisce anche le operazioni necessarie allo svolgimento del calciomercato in base alle scelte effettuate dal presidente della lega durante la creazione della lega. Nel caso in cui la modalità d asta sia a rialzo, al termine dell'asta per ciascun calciatore il sistema lo assegnerà alla squadra miglior offerente. Il secondo caso, quello in modalità busta chiusa, prevede l assegnazione dei calciatori al termine dell asta alla squadra miglior offerente. Terminata questa fase le rose incomplete verranno automaticamente completate dal sistema. Al termine di ciascuna giornata il sistema attenderà il comando dell amministratore per avviare le procedure necessarie per calcolare i risultati della giornata e quindi stilare la classifica aggiornata. 21

22 1.2.2 Sintesi degli attori e dei relativi scenari di successo Visitatore Può iscriversi al fantacampionato mediante la registrazione al sistema; Può consultare le statistiche; Può consultare risultati e classifiche; Può consultare le rose delle fantasquadre; Può ottenere informazioni sulla lega. Allenatore Costruisce la rosa della sua squadra; Può partecipare al calciomercato durante la stagione; Gioca le partite ogni giornata della lega schierando di volta in volta una specifica formazione. Presidente della Lega Crea la lega e vi partecipa nel ruolo di allenatore; Sceglie il numero di partecipanti alla lega; Sceglie la modalità dell asta nell ambito della lega creata. Amministratore Gestisce il corretto svolgimento della lega aggiornando dopo ogni giornata i dati necessari al corretto svolgimento del gioco; Può modificare la lista dei calciatori inserendone di nuovi o modificando quelli già esistenti. 22

23 1.2.3 Il dominio di interesse Nell'applicazione sono di interesse gli allenatori caratterizzati da: username (identificativo), password, . Ogni allenatore allena una ed una sola fantasquadra, della quale interessa: nome (identificativo), fantastadio, fantamilioni a disposizione e la lista di offerte per i calciatori che ha effettuato nel caso di lega con asta a modalità a rialzo. Un allenatore può creare una lega diventandone presidente. Di ogni lega (composta da 4, 6, 8 o 1 fantasquadre) interessa: nome (identificativo), la tipologia dell'asta, data apertura dell'asta. La lega è esattamente di due tipologie: lega con asta a rialzo (della quale interessa la durata dell'asta) oppure lega con asta a busta chiusa (della quale interessa la data di scadenza dell'asta). E' inoltre di interesse per le leghe mantenere informazioni relative alla classifica delle fantasquadre. Le classifiche sono costituite dall'insieme delle fantasquadre iscritte alle leghe, ciascuna caratterizzata da: giornata, posizione, punteggio, fantapunteggio, numero di partite vinte, numero di partite pareggiate e numero di partite perse, gol fatti e gol subiti. Ogni fantasquadra è composta da una rosa di esattamente 25 calciatori (3 portieri, 8 difensori, 8 centrocampisti, 6 attaccanti). Ogni partita del calendario della lega (disputata tra due fantasquadre) è caratterizza da: gol della squadra di casa, gol della squadra ospite, fantapunti totalizzati dalla squadra di casa, fantapunti totalizzati dalla squadra ospite, numero della giornata in cui la partita si svolge ed infine l'informazione sul fatto che sia stata disputata oppure no. La formazione schierata da ogni fantasquadra è composta da un insieme di 18 calciatori (11 titolari e 7 riserve) presenti nella rosa. Di ogni calciatore schierato nella formazione interessa: giornata, se è stato schierato titolare ed infine se ha inciso nel calcolo del fantapunteggio. Di ogni calciatore interessa: id (identificativo), cognome, nome, squadra di appartenenza, foto, media voto, fantamedia, prezzo cartellino, totale dei gol realizzati, totale dei gol subiti, la somma delle ammonizioni, la somma delle espulsioni, il numero di rigori parati, il numero di rigori sbagliati, il numero totale di assist ed infine le presenze collezionate. Per ogni giornata di campionato reale inoltre interessa mantenere il numero di gol fatti, il numero di gol subiti, il numero di assist, se è stato o meno ammonito o espulso, rigori parati, rigori sbagliati, fantavoto e voto e se il calciatore ha disputato o meno la giornata. 23 Esistono solo 4

24 tipologie di calciatore: portiere, difensore, centrocampista, attaccante Il dominio di interesse in sintesi Di ogni Allenatore interessa: Username Password Fantasquadra creata Di ogni Fantasquadra interessa: Nome Allenatore Fantastadio Fantamilioni Rosa Formazione schierata in ogni giornata Lega a cui è iscritta Classifica Partite giocate Lista dei calciatori per cui ha effettuato un'offerta Di ogni Lega interessa: Nome Tipologia asta (asta a rialzo oppure a busta chiusa) Fantasquadre partecipanti Classifica squadre Calendario Data apertura dell'asta Data scadenza dell'asta (solo per la tipologia d'asta a busta chiusa) 24

25 Durata (solo per la tipologia d'asta a rialzo) Di ogni Calciatore interessa: Id Cognome Nome Squadra reale di appartenenza Squadra fantacalcistica di appartenenza Gol fatti Gol subiti Assist Ammonizioni Espulsioni Voti presi nelle giornate reali Media voto Fantavoto Fantamedia Rigori sbagliati Rigori parati Foto Ruolo (Portiere, Difensore, Centrocampista, Attaccante) Di ogni GiornataCampionatoReale interessa: Giornata 25

26 1.3 Analisi dei dati: progettazione concettuale Introduzione al Class Diagram Il Class Diagram ricalca la definizione del nostro dominio di interesse; vista la dinamicità della nostra applicazione e della sua base di dati, in fase di progettazione ci aspetteremo la possibilità che il diagramma ER diverga rispetto al Class Diagram, poiché quest'ultimo è più astratto e rappresenta come il dominio è visto a livello applicativo e non come esso è memorizzato effettivamente nella base di dati; risulta quindi più semplice lavorare a livello di oggetti piuttosto che di entità. In questa fase non mostreremo i metodi delle singole classi poiché essi verranno analizzati attentamente in fase di progettazione durante il raffinamento del Class Diagram stesso. 26

27 1.3.2 Class Diagram 27

28 1.3.3 Giustificazione delle scelte effettuate Abbiamo scelto di creare le classi: portiere, difensore, centrocampista ed attaccante nonostante non apportino ulteriori informazioni rispetto alla classe calciatore; tuttavia in prospettiva futura, ci sembra che tale suddivisione porti a miglioramenti delle performance della nostra applicazione, poiché è importante mantenere i calciatori suddivisi per ruolo. La seconda scelta che potrebbe portare qualche perplessità è quella della creazione di una classe giornatacampionatoreale avente esclusivamente un campo di tipo intero al suo interno. Un calciatore, se presente nel campionato di serie A, parteciperà sempre all'associazione disputa sia che disputi o meno la giornata in questione. La molteplicità..1 giustifica il fatto che un calciatore potrebbe non essere più presente nella lista dei calciatori del campionato di serie A oppure che sia presente in tale lista dopo un numero n di giornate arbitrario. Tutto ciò impatta tutti i vari calcoli che bisogna compiere di giornata in giornata e tutte le statistiche che la nostra applicazione mantiene. Un'altra scelta importante è la molteplicità 2..2 di partita: essa rappresenta il fatto che un fantacampionato prevede che vengano disputate partite andata e ritorno, per due volte, tra tutte le fantasquadre iscritte in una specifica lega. Infine l'associazione offerta è necessaria per mantenere le informazioni relative agli allenatori (e relative squadre) collegati al momento dello svolgimento dell'asta a rialzo Textual Analysis: data dictionary Per la realizzazione dei diagrammi (come il Class Diagram mostrato in precedenza e i successi Use Case Diagram) relativi a questa fase è stata utilizzata la funzionalità textual analysis di Visual Paradigm. Questa ci ha aiutato notevolmente nel lavoro svolto poiché ci ha permesso di focalizzare in modo immediato i vari attori del sistema, le loro principali funzionalità e il dominio di interesse dell'applicazione. Per motivi di estetica sono state omesse le evidenziature nel documento di portata sopra riportato. Qui di seguito illustriamo il glossario dell'applicazione. 28

29 Attori Visitatore Candidate Item Type Actor Candidate Item Description Il visitatore può registrarsi al sistema ricoprendo quindi il ruolo di allenatore, oppure può visitare il sito web ed eventualmente consultare le statistiche sui calciatori o i risultati ed altre informazioni sulle leghe in corso Candidate Item Text utente Create Model Visitatore Allenatore Candidate Item Type Actor Candidate Item Description L'allenatore è il principale attore dell'applicazione. Egli partecipa alla lega e può effettuare le seguenti azioni: crea la rosa della propria squadra, può partecipare al calciomercato durante la stagione calcistica, sceglie la formazione da schierare in ogni giornata di campionato attraverso due modalità: con o senza l'ausilio del sistema Candidate Item Text allenatore Create Model Allenatore Amministratore Candidate Item Type Actor Candidate Item Description L'amministratore è colui che gestisce le leghe Candidate Item Text amministratore Create Model Amministratore 29

30 Presidente della Lega Candidate Item Type Actor Candidate Item Description Il presidente della lega è l'allenatore che sceglie di creare una nuova lega. Ha l'onere di scegliere il nome della lega in creazione, la tipologia di asta che caratterizzerà il calciomercato iniziale della lega ed infine effettua la scelta riguardo al numero dei partecipanti. Si iscrive come primo allenatore di tale lega Candidate Item Text presidente della lega Create Model Presidente della Lega 3

31 Use Case registrazione al sistema Candidate Item Type Use Case Candidate Item Description Il visitatore inserisce: username, password, , nome della fantasquadra, nome del fantastadio e sceglie la lega a cui vuole partecipare per registrarsi al sistema Candidate Item Text registrarsi al Sistema Create Model registrazione al sistema login Candidate Item Type Use Case Candidate Item Description L'allenatore e l'amministratore devono necessariamente loggarsi per accedere a tutte le funzionalità del sistema Candidate Item Text login Create Model login creazione della lega Candidate Item Type Use Case Candidate Item Description Il presidente della lega effettua la creazione della nuova lega da disputare scegliendone il nome, numero di partecipanti, modalità dell'asta e le informazioni temporali sullo svolgimento dell'asta Candidate Item Text creare la lega Create Model creazione della lega 31

32 scelta modalità asta Candidate Item Type Use Case Candidate Item Description Il presidente della lega sceglie la modalità di asta attraverso la quale i partecipanti alla lega parteciperanno al calciomercato iniziale per la creazione della rosa della propria squadra Candidate Item Text modalità di gestione dell'asta Create Model scelta modalità asta scelta modalità busta chiusa Candidate Item Type Use Case Candidate Item Description Il presidente della lega imposta il giorno in cui l'asta a busta chiusa inizia ed il giorno in cui avrà termine Candidate Item Text modalità busta chiusa Create Model scelta modalità busta chiusa inserimento numero partecipanti Candidate Item Type Use Case Candidate Item Description Il presidente della lega inserisce il numero di partecipanti che possono partecipare alla lega che si sta creando Candidate Item Text numero di squadre partecipanti Create Model inserimento numero partecipanti scelta formazione con l'ausilio del sistema Candidate Item Type Use Case Candidate Item Description L'allenatore sceglie in modo guidato dal sistema i calciatori che faranno parte della formazione da schierare nella giornata di fantacampionato Candidate Item Text con l'ausilio del sistema Create Model scelta formazione con l'ausilio del sistema 32

33 scelta formazione senza l'ausilio del sistema Candidate Item Type Use Case Candidate Item Description L'allenatore sceglie in modo diretto i calciatori che faranno parte della formazione da schierare nella giornata di fantacampionato Candidate Item Text senza l'ausilio del Sistema Create Model scelta formazione senza l'ausilio del sistema consultazione statistiche Candidate Item Type Use Case Candidate Item Description Il visitatore può consultare le statistiche relative a qualsiasi calciatore presente nel sistema Candidate Item Text consultare statistiche sui calciatori Create Model consultazione risultati consultazione risultati Candidate Item Type Use Case Candidate Item Description Il visitatore può consultare le informazioni sulle leghe (calendario con i risultati delle partite e classifica delle squadre). Candidate Item Text consultare i risultati Create Model consultazione risultati gestione lega Candidate Item Type Use Case Candidate Item Description L'amministratore gestisce la lega inserendo i voti relativi ad ogni calciatore e dopo tale operazione da' un comando al sistema per far iniziare i calcoli dei risultati e l'aggiornamento delle varie classifiche Candidate Item Text gestire la lega Create Model gestione lega 33

34 partecipazione al calciomercato durante la stagione Candidate Item Type Use Case Candidate Item Description L'allenatore può partecipare alle sessioni di calciomercato successive alla fase di asta Candidate Item Text partecipa al calciomercato Create Model partecipazione al calciomercato durante la stagione scelta modalità formazione Candidate Item Type Use Case Candidate Item Description L'allenatore seleziona la modalità di scelta della formazione: con o senza l'ausilio del sistema Candidate Item Text selezionano la modalità di scelta della formazione Create Model scelta modalità formazione creazione rosa Candidate Item Type Use Case Candidate Item Description L'allenatore dopo essersi iscritto alla lega crea la propria rosa partecipando al calciomercato Candidate Item Text creare la propria rosa Create Model creazione rosa modalità asta a busta chiusa Candidate Item Type Use Case Candidate Item Description L'allenatore partecipa all'asta in modalità busta chiusa Candidate Item Text asta a busta chiusa Create Model modalità asta a busta chiusa 34

35 modalità asta a rialzo Candidate Item Type Use Case Candidate Item Description L'allenatore partecipa all'asta in modalità a rialzo Candidate Item Text asta a rialzo Create Model modalità asta a rialzo scelta modalità di offerta a rialzo Candidate Item Type Use Case Candidate Item Description Il presidente della lega imposta il giorno in cui l'asta a rialzo inizia e la sua durata Candidate Item Text modalità di offerta a rialzo Create Model scelta modalità di offerta a rialzo consultazione delle rose delle squadre iscritte Candidate Item Type Use Case Candidate Item Description Il visitatore può consultare le rose delle varie squadre iscritte alle leghe Candidate Item Text consultare le rose delle squadre iscritte Create Model Consultazione delle rose delle squadre iscritte consultazione informazioni sulla lega Candidate Item Type Use Case Candidate Item Description Il visitatore può consultare le informazioni sulle leghe Candidate Item Text può ottenere informazioni generali su di esse Create Model Consultazione delle rose delle squadre iscritte 35

36 modifica lista calciatori Candidate Item Type Use Case Candidate Item Description L'amministratore ha la possibilità di inserire nuovi calciatori oppure può modificare o eliminare calciatori già presenti Candidate Item Text modificando alcuni gia presenti Create Model modifica lista calciatori 36

37 Classi Allenatore Candidate Item Type Class Candidate Item Description La classe mantiene le informazioni fondamentali relative agli allenatori Candidate Item Text allenatore allenatore Create Model Lega Candidate Item Type Class Candidate Item Description La classe mantiene le informazioni fondamentali relative alle leghe Candidate Item Text lega Lega Create Model LegaConAstaBustaChiusa Candidate Item Type Class Candidate Item Description La classe mantiene in particolare le informazioni sulla lega con modalità d'asta a busta chiusa Candidate Item Text lega con asta a busta chiusa LegaConAstaBustaChiusa Create Model LegaConAstaRialzo Candidate Item Type Class Candidate Item Description La classe mantiene in particolare le informazioni sulla lega con modalità d'asta a rialzo Candidate Item Text lega con asta a rialzo LegaConAstaRialzo Create Model 37

38 Fantasquadra Candidate Item Type Class Candidate Item Description La classe mantiene le informazioni fondamentali della fantasquadra Candidate Item Text fantasquadra Fantasquadra Create Model Calciatore Candidate Item Type Class Candidate Item Description La classe mantiene informazioni molto importanti per l'oggetto calciatore, in particolare le informazioni anagrafiche ed alcune statistiche Candidate Item Text calciatore Calciatore Create Model Portiere Candidate Item Type Class Candidate Item Description La classe dedicata ai calciatori il cui ruolo è portiere Candidate Item Text portiere Portiere Create Model Difensore Candidate Item Type Class Candidate Item Description La classe dedicata ai calciatori il cui ruolo è difensore Candidate Item Text difensore Difensore Create Model 38

39 Centrocampista Candidate Item Type Class Candidate Item Description La classe dedicata ai calciatori il cui ruolo è centrocampista Candidate Item Text centrocampista Centrocampista Create Model Attaccante Candidate Item Type Class Candidate Item Description La classe dedicata ai calciatori il cui ruolo è attaccante Candidate Item Text attaccante Attaccante Create Model GiornataCampionatoReale Candidate Item Type Class Candidate Item Description Rappresenta la giornata del campionato reale di serie A Candidate Item Text giornata del campionato di seria A GiornataCampionatoReale Create Model 39

40 1.3.5 Glossario degli attributi Classe: GiornataCampionatoReale Attributo Dominio Descrizione giornata Intero[,38] Numero corrispondente alla giornata di campionato reale Dominio Descrizione Stringa [1,1] Il nome assegnato dall'allenatore alla propria fantasquadra Stringa [1,1] Il nome assegnato dall'allenatore allo stadio della sua fantasquadra Intero [,25] Il numero di crediti disponibili nella cassa dellla fantasquadra Dominio Descrizione giornata Intero [1,36] Numero corrispondente alla giornata di campionato fantacalcistica in cui viene schierato il calciatore nella formazione della squadra titolare Booleano Valore che indica se il calciatore parte titolare o no nella formazione Inciso Booleano Indica se il calciatore ha inciso o meno nel calcolo dei fantapunti Classe: Fantasquadra Attributo nome fantastadio fantamilioni Associazione: Formazione Attributo 4

41 Classe: Calciatore Attributo Dominio Descrizione id Intero [>= ] Numero corrispondente univocamente ad un calciatore iscritto al campionato si serie A cognome Stringa [1,5] Il cognome del calciatore nome Stringa [1,1] Il nome del calciatore squadra Stringa [1,4] Il nome della squadra di serie A a cui appartiene il calciatore media_voto Reale [>= ] La media dei voti ottenuti dal calciatore nel campionato di serie A fantamedia Reale [>= ] La media dei voti calcolati secondo le regole del fantacalcio foto Stringa La foto del calciatore prezzo_cartellino Intero [1-226] La valutazione nell'ambito del fantacalcio del calciatore totale_gol_fatti Intero [>= ] Il numero di reti segnate dal calciatore totale_gol_subiti Intero [>= ] Il numero di reti subite dal calciatore totale_ammonizioni Intero [>= ] La somma delle ammonizioni ricevute totale_espulsioni Intero [>= ] La somma delle espulsioni totale_rigori_parati Intero [>= ] Il numero di rigori parati dal calciatore totale_rigori_sbagliati Intero [>= ] Il numero di rigori sbagliati dal calciatore totale_assist Intero [>= ] Il totale degli assist effettuati dal calciatore presenze Intero [>= ] Il numero di presenze totalizzate dal calciatore 41

42 Associazione: Disputa Attributo Dominio Descrizione Intero [>= ] Numero dei gol realizzati dal calciatore nell'ambito della giornata di interesse Intero [>= ] Numero dei gol subiti dal calciatore nell'ambito della giornata di interesse assist Intero [>= ] Numero degli assist effettuati dal calciatore nell'ambito della giornata di interesse ammonito Booleano Individua se il calciatore nella giornata è stato di ammonito o no espulso Booleano Individua se il calciatore nella giornata è stato espulso o meno voto Reale [,.5,1,1.5,2,2.5,3,3.5,4,4.5,5,5.5,6,6.5,7, 7.5,8,8.5,9,9.5,1] Valore che indica il voto preso nella giornata di campionato reale dal calciatore rigori_parati Intero [>= ] Numero di rigori parati dal calciatore nella giornata di campionato reale rigori_sbagliati Intero [>= ] Numero di rigori falliti dal calciatore nella giornata di campionato reale fantavoto Reale [>= ] Il voto del fantacalciatore ricalcolato con le regole del fantacalcio disputata Booleano Indica se il calciatore ha disputato o meno la giornata gol_fatti gol_subiti 42

43 Associazione: Partita Attributo Dominio Descrizione Intero [1,36] Numero corrispondente alla giornata di campionato fantacalcistico in cui si disputa la partita Intero [>= ] Numero dei gol effettuati dalla fantasquadra che gioca in casa nella partita Intero [>= ] Numero dei gol effettuati dalla fantasquadra che gioca in trsferta nella partita Reale [>= ] Punti realizzati dalla squadra che gioca in casa nella partita Reale [>= ] Punti realizzati dalla squadra che gioca in trasferta nella partita Booleano Indica se la partita in questione è stata disputata o meno Attributo Dominio Descrizione nome Stringa [1,1] Nome della lega data_apertura_asta Stringa [1] La data che indica l'inizio dell'asta numero_partecipanti Intero [4,6,8,1] Il numero delle squadre che partecipano alla lega Dominio Descrizione Stringa [1] La data che indica il termine di presentazione delle buste per la partecipaizone all'asta giornata gol_squadra_casa gol_fantasquadra_ospite fantapunti_casa fantapunti_ospite disputata Classe: Lega Classe: LegaConAstaBustaChiusa Attributo data_scadenza_asta 43

44 Classe: LegaconAstaRialzo Attributo Dominio Descrizione Intero[1,12] Numero corrispondente alla durata dell'asta interattiva a rialzo. La durata indica le ore Dominio Descrizione Stringa [4,3] L'identificativo scelto dall'allenatore all'atto della registrazione per loggarsi al sistema password Stringa [4,12] La password per l'accesso alle funzionalità del sistema a disposizione dell'allenatore Stringa [6,8] La mail dell'allenatore durata Classe: Allenatore Attributo username 44

45 Associazione: Classifica Attributo giornata posizione punteggio fantapunteggio vinte pareggiate perse gol_fatti gol_subiti Dominio Descrizione Intero [,36] Numero corrispondente alla giornata di campionato fantacalcistico Intero [1,numero_partecipanti] La posizione della fantasquadra nella classifica della lega in una determinata giornata Intero [>= ] I punti totalizzati fino all'ultima giornata disputata dalla fantasquadra nella lega Reale [>= ] I fantapunti totalizzati fino all'ultima giornata disputata dalla fantasquadra nella lega Intero [>= ] Il numero di vittorie totalizzatie fino alla giornata disputata dalla fantasquadra nella lega Intero [>= ] Il numero di partite pareggiate fino alla giornata disputata dalla fantasquadra nella lega Intero [>= ] Il numero di partite perse fino alla giornata disputata dalla fantasquadra nella lega Intero [>= ] Il numero di reti segnate fino alla giornata disputata dalla fantasquadra nella lega Intero [>= ] Il numero di reti subite fino alla giornata disputata dalla fantasquadra nella lega 45

46 1.4 Requisiti funzionali del sistema: gli Use Case Diagram Introduzione agli Use Case Diagram Mostreremo dapprima lo Use Case Diagram in una visione generale, senza entrare nel dettaglio; successivamente andremo ad analizzare gli Use Case Diagram per attore in dettaglio e per ogni funzionalità mostreremo il Sequence Diagram ad essa associata, con la relativa documentazione specifica, generata mediante il report writer disponibile nell'applicazione Visual Paradigm. I nostri use case sono molto corposi: abbiamo di fatto scelto di analizzare i nostri scenari principali di successo in maniera tale che ogni use case non corrisponda ad una singola e semplice interazione (un'azione atomica) con la base di dati o con il sistema del tipo Richiesta Risposta, ma ad un'interazione più articolata. Ad esempio lo use case scelta formazione con l'ausilio del sistema non prevede una semplice query sulla base di dati o una semplice interazione col sistema; piuttosto è un sistema dinamico di scelta della formazione, suddivisa in più passi in cui l'attore interagisce significativamente con il sistema. Il culmine dell'interattività lo otteniamo nello use case modalità asta a rialzo in cui l'interattività con il sistema e con altre persone è molto lunga. 46

47 1.4.2 Schema completo dello Use Case Diagram 47

48 1.4.3 Sommario Nome Documentazione Visitatore Il visitatore può registrarsi al sistema ricoprendo quindi il ruolo di allenatore, oppure può visitare il sito web ed eventualmente consultare le statistiche sui calciatori o i risultati ed altre informazioni sulle leghe in corso registrazione al sistema Il visitatore inserisce: username, password, , nome della fantasquadra, nome del fantastadio e sceglie la lega a cui vuole partecipare per registrarsi al sistema consultazione delle rose delle squadre iscritte Il visitatore può consultare le rose delle varie squadre iscritte alle leghe consultazione informazioni sulla lega Il visitatore può consultare le informazioni sulle leghe consultazione statistiche Il visitatore può consultare le statistiche relative a qualsiasi calciatore presente nel sistema consultazione risultati Il visitatore può consultare le informazioni sulle leghe (calendario con i risultati delle partite e classifica delle squadre) Allenatore L'allenatore è il principale attore dell'applicazione. Egli partecipa alla lega e può effettuare le seguenti azioni: crea la rosa per la propria squadra, può partecipare al calciomercato durante la stagione calcistica, sceglie la formazione da schierare in ogni giornata di campionato attraverso due modalità: sceglierla con o senza l'ausilio del sistema partecipazione al calciomercato durante la stagione L'allenatore può partecipare alle sessioni di calciomercato successive alla fase di asta login L'allenatore e l'amministratore devono necessariamente loggarsi per accedere a tutte le funzionalità del sistema scelta modalità formazione L'allenatore seleziona la modalità di scelta della formazione: con o senza l'ausilio del sistema 48

49 scelta formazione senza l'ausilio del sistema L'allenatore sceglie in modo diretto i calciatori che faranno parte della formazione da schierare nella giornata di campionato scelta formazione con l'ausilio del sistema L'allenatore sceglie in modo guidato dal sistema i calciatori che faranno parte della formazione da schierare nella giornata di campionato creazione rosa L'allenatore dopo essersi iscritto alla lega crea la propria rosa partecipando al calciomercato modalità asta a busta chiusa L'allenatore partecipa all'asta in modalità busta chiusa modalità asta a rialzo L'allenatore partecipa all'asta in modalità a rialzo Presidente della Lega Il presidente della lega è l'allenatore che sceglie di creare una nuova lega. Ha l'onere di scegliere il nome della lega in creazione, la tipologia di asta che caratterizzerà il calciomercato iniziale della lega ed infine effettua la scelta riguardo al numero dei partecipanti. Si iscrive come primo allenatore di tale lega creazione della lega Il presidente della lega effettua la creazione della nuova lega da disputare scegliendone il nome, numero di partecipanti, modalità dell'asta e le informazioni temporali sullo svolgimento dell'asta inserimento numero partecipanti Il presidente della lega inserisce il numero di partecipanti che possono partecipare alla lega che si sta creando scelta modalità asta Il presidente della lega sceglie la modalità di asta attraverso la quale i partecipanti alla lega parteciperanno al calciomercato iniziale per la creazione della rosa della propria squadra scelta modalità busta chiusa Il presidente della lega imposta il giorno in cui l'asta a busta chiusa inizia ed il giorno in cui avrà termine scelta modalità di offerta a rialzo Il presidente della lega imposta il giorno in 49

50 cui l'asta a rialzo inizia e la sua durata Amministratore L'amministratore è colui che gestisce la lega gestione lega L'amministratore gestisce la lega inserendo i voti relativi ad ogni calciatore e dopo tale operazione da un comando al sistema per far iniziare i calcoli dei risultati e l'aggiornamento delle varie classifiche modifica lista calciatori L'amministratore ha la possibilità di inserire nuovi calciatori oppure può modificare o eliminare calciatori già presenti Giustificazione delle scelte effettuate Nonostante il nostro approccio agli use case sia stato un approccio orientato agli scenari principali di successo, per alcuni use case abbiamo individuato delle azioni atomiche. L'attore Presidente della Lega in particolare effettua dell'azioni come inserimento numero partecipanti e scelta modalità asta che sono azioni atomiche. Tuttavia queste azioni sono realmente degli scenari principali di successo, poiché vanno ad incidere in maniera molto significativa sulla nostra applicazione. La scelta del numero dei partecipanti difatti coinvolge la generazione dei calendari e delle classifiche che è significativamente diversa a seconda dei partecipanti. Ancora più importante è lo use case di scelta del tipo di asta iniziale, per cui si prospettano due scenari totalmente diversi: uno molto più interattivo che coinvolge tutti gli utenti iscritti alla lega creata; il secondo in cui bisogna semplicemente scegliere la lista di calciatori di interesse che alla scadenza della data di chiusura dell'asta verranno assegnati. Visto che gli use case non sono gli Use Case Diagram, di seguito illustreremo anche i Sequence Diagram che sono parte integrante della specifica di ciascun use case; abbiamo generato tali diagrammi automaticamente da Visual Paradigm dopo avere compilato il template fornitoci durante il corso. I Sequence Diagram sono stati realizzati per ogni use case ad eccezione di: creazione rosa che rappresenta un caso d'uso astratto come è visibile dal diagramma. creazione rosa è generalizzazione di casi d'uso più specifici dei quali è mostrato il sequence diagram relativo. 5

51 1.4.5 Use Case Diagram in dettaglio: Visitatore Use Case Visitatore: registrazione al sistema Main Use Case ID UC-1 Use Case Realtions Nessuna Primary Actor Visitatore Goal Registrarsi al sistema per ricoprire il ruolo di allenatore. Secondary Actor(s) and their goals Nessuno Brief Description Il visitatore inserisce i suoi dati personali. Il sistema registra tale visitatore nella lega a cui vuole partecipare nel ruolo di allenatore. Può scegliere di creare una nuova lega di cui diventa presidente. PreConditions Nessuna PostConditions Il visitatore è registrato al sistema nel ruolo di allenatore. Main Succes Scenario Actor Input 1 System Response Dati personali 51

52 Riepilogo operazione e richiesta conferma 2 3 Conferma Operazione effettuata con successo 4 Extensions 2a: Nel caso username e password non rispettino la lunghezza minima e massima consentita il sistema manda un messaggio di errore al visitatore e richiede nuovamente di inserire i dati. Lo stesso avviene nel caso che l' sia in un formato sintatticamente scorretto 2b: Nel caso di utente oppure nome della fantasquadra già esistente il sistema manda un messaggio di errore 3a: Se non c'è la conferma il sistema annulla l'operazione Non-behavior Il sito web visualizza i dati inseriti in forma tabellare requirements Author Marco Paluci Date 28/4/ Sequence Diagram: registrazione al sistema 52

53 Use Case Visitatore: consultazione delle rose delle squadre iscritte Main Use Case ID UC-2 Use Case Realtions Nessuna Primary Actor Visitatore Goal Ottenere informazioni sulle rose delle varie squadre iscritte Secondary Actor(s) and their goals Nessuno Brief Description Il visitatore può ottenere le informazioni sulle rose delle varie squadre scegliendo la squadra desiderata PreConditions Deve essere stata creata una lega e tutte le squadre partecipanti hanno creato una rosa PostConditions Nessuna Actor Input Main Succes Scenario 1 Extensions Nessuna System Response Squadra, Lega 2 Rosa della squadra Non-behavior Il sito web visualizza i dati ricercati in forma tabellare requirements Author Marco Paluci Date 5/6/ Sequence Diagram: consultazione delle rose delle squadre iscritte 53

54 Use Case Visitatore: consultazione informazioni sulla lega Main Use Case ID UC-3 Use Case Realtions Nessuna Primary Actor Visitatore Goal Ottenere informazioni sulla lega in corso Secondary Actor(s) and their goals Nessuno Brief Description Il visitatore può ottenere le informazioni sulle leghe in corso PreConditions Deve essere stata creata la lega PostConditions Nessuna Actor Input Main Succes Scenario 1 Extensions Nessuna System Response Lega 2 Informazioni Lega Non-behavior Il sito web visualizza i dati ricercati in forma tabellare requirements Author Fabio Previtali Date 5/6/ Sequence Diagram: consultazione informazioni sulla lega 54

55 Use Case Visitatore: consultazione statistiche Main Use Case ID UC-4 Use Case Realtions Nessuna Primary Actor Visitatore Goal Ottenere le informazioni desiderate sul calciatore richiesto Secondary Actor(s) and their goals Nessuno Brief Description Il visitatore può ottenere le statistiche dei calciatori usando svariati metodi di selezione: id, cognome, nome, gol fatti, gol subiti, media voto, fantamedia, squadra e ruolo PreConditions Nessuna PostConditions Nessuna Actor Input 1 Main Succes Scenario System Response Ricerca del calciatore Lista dei calciatori che soddisfano la richiesta 2 3 Selezione del calciatore Informazioni complete sul calciatore selezionato 4 Extensions 2a: Nel caso nessun calciatore corrisponda alle specifiche richieste il sistema notifica l'assenza di calciatori con tali caratteristiche Non-behavior Il sito web visualizza i dati ricercati in forma tabellare requirements Author Mirko Malacario Date 3/4/28 55

56 Sequence Diagram: consultazione statistiche Use Case Visitatore: consultazione risultati Main Use Case ID UC-5 Use Case Realtions Nessuna Primary Actor Visitatore Goal Ottenere le informazioni desiderate sui risultati delle leghe in corso Secondary Actor(s) and their goals Nessuno Brief Description Il visitatore può ottenere le informazioni sulle leghe in corso scegliendo la pagina opportuna del sito web PreConditions Deve essere stata creata una lega e tutte le squadre partecipanti si sono iscritte ad essa PostConditions Nessuna Actor Input Main Succes Scenario 1 System Response Scelta delle informazioni da consultare sulla lega (calendario con risultati delle partite o classifica delle squadre) 2 Dati richiesti 56

57 Extensions Nessuna Non-behavior Il sito web visualizza i dati ricercati in forma tabellare requirements Author Marco Paluci Date 3/4/ Sequence Diagram: consultazione risultati Use Case Diagram in dettaglio: Allenatore 57

58 Use Case Allenatore: partecipazione al calciomercato durante la stagione Main Use Case ID UC-6 Use Case Realtions Include lo use case login Primary Actor Allenatore Goal Modificare la rosa secondo gli obiettivi di mercato prestabiliti Secondary Actor(s) and their goals Nessuno Brief Description L'allenatore tramite le operazioni di vendita ed acquisto di calciatori può modificare la propria rosa lasciando però invariato il numero totale di 25 calciatori rispettando i vincoli di cardinalità ruolo per ruolo PreConditions Aver creato la propria rosa PostConditions La rosa è stata modificata in modo consistente in base alle operazioni effettuate nella fase di calciomercato Main Succes Scenario Actor Input 1 System Response Giocatore da vendere Accetta la vendita del calciatore ed aumenta i crediti a disposizione dell'allenatore Pagina di ricerca dei calciatori Ricerca del calciatore per id, cognome o nome (con il vincolo implicito che il ruolo sia uguale a quello del calciatore appena venduto e il suo costo sia minore o uguale ai propri crediti disponibili) Lista dei calciatori che soddisfano la richiesta 5 6 Selezione del calciatore 7 Riepilogo operazione e richiesta conferma 58

59 8 Conferma Operazione effettuata con successo 9 Extensions 5a: Nel caso nessun calciatore corrisponda alle specifiche richieste il sistema genera un messaggio di errore 8a: Se non c'è la conferma il sistema annulla l'operazione Non-behavior Il sito web visualizza le pagine che permette lo svolgimento di tale requirements operazione Author Fabio Previtali, Marco Paluci, Mirko Malacario Date 3/4/ Sequence Diagram: partecipazione al calciomercato durante la stagione 59

60 Use Case Allenatore: creazione rosa Main Use Case ID UC-7 Use Case Realtions E' generalizzato dagli use case: modalità asta a rialzo e modalità asta a busta chiusa Include lo use case: login Primary Actor Allenatore Goal Creare la rosa della propria squadra Secondary Actor(s) and their goals Nessuno Brief Description L'allenatore crea la propria rosa partecipando all'asta con gli altri allenatori PreConditions Nessuna PostConditions L'allenatore dispone della rosa composta esattamente da 25 calciatori per disputare la lega Actor Input Main Succes Scenario 1 Extensions Nessuna System Response Non-behavior Il sito web mostra la pagina di riepilogo della propria rosa in forma requirements tabellare Author Marco Paluci Date 7/5/28 6

61 Use Case Allenatore: modalità asta a rialzo Main Use Case ID UC-8 Use Case Realtions Generalizza lo use case: creazione rosa Primary Actor Allenatore Goal Creare la propria rosa partecipando al calciomercato iniziale che sarà caratterizzato dalla modalità asta a rialzo Secondary Actor(s) and their goals Nessuno Brief Description L'allenatore partecipa all'asta per ogni singolo calciatore. Il primo allenatore che inizia l'asta propone un calciatore da contrattare con la relativa offerta, in maniera circolare ogni allenatore può aumentare l'offerta oppure ritirarsi dall'asta per il calciatore in questione. Tale operazione continua fino a quando tutti gli allenatori non completano la propria rosa PreConditions Nessuna PostConditions L'allenatore dispone della rosa composta esattamente da 25 calciatori per disputare la lega Actor Input Main Succes Scenario 1 Proposta calciatore 2 Offerta System Response 3 Accetta offerta 4 5 Extensions 6 Comunica esito del turno 7 Operazione effettuata con successo 3a: Nel caso l'offerta fatta non sia in un formato valido oppure superi i crediti disponibili viene richiesto di formulare nuovamente l'offerta 6a: Nel caso l'allenatore non fosse il migliore offerente può tornare al passo 2 oppure ritirarsi dall'asta per quel calciatore Non-behavior Il sito web visualizza la pagina che permette lo svolgimento di tale requirements operazione 61

62 Author Fabio Previtali, Marco Paluci, Mirko Malacario Date 7/5/ Sequence Diagram: modalità asta a rialzo Use Case Allenatore: modalità asta a busta chiusa Main Use Case ID UC-9 Use Case Realtions Generalizza lo use case: creazione rosa Primary Actor Allenatore Goal Creare la propria rosa partecipando al calciomercato iniziale che sarà caratterizzato dalla modalità busta chiusa Secondary Actor(s) and their goals Nessuno Brief Description L'allenatore durante il periodo prestabilito per l'asta deve stilare la propria lista e può modificarla a piacimento. Alla scadenza dell'asta il sistema assegnerà ogni calciatore alla squadra miglior offerente PreConditions Nessuna PostConditions L'allenatore dispone della rosa composta esattamente da 25 calciatori per disputare la lega Main Succes Scenario Actor Input 1 System Response Lista calciatori 62

63 Riepilogo operazione e richiesta conferma 2 3 Conferma Operazione effettuata con successo 4 Extensions 2a: Nel caso l'offerta fatta non sia in un formato valido oppure superi i crediti disponibili viene richiesto di formulare nuovamente l'offerta 3a: Se non c'è la conferma il sistema annulla l'operazione Non-behavior Il sito web visualizza la lista in forma tabellare requirements Author Fabio Previtali, Marco Paluci, Mirko Malacario Date 7/5/ Sequence Diagram: modalità asta a busta chiusa 63

64 Use Case Allenatore: login Main Use Case ID UC-1 Use Case Realtions E' incluso dagli use case: partecipazione al calciomercato durante la stagione, creazione rosa, scelta modalità formazione, creazione della lega, gestione lega Primary Actor Allenatore Goal Accedere al sistema Secondary Actor(s) and their goals Amministratore Brief Description Accedere al sistema mediante l'inserimento dello username e della password PreConditions Essere registrato al sistema PostConditions Accesso illimitato nel sistema durante la sessione corrente Actor Input Main Succes Scenario Extensions 1 System Response Username e password Operazione effettuata con successo 2 2a: Nel caso in cui username e/o password non sono presenti nel database del sistema verrà generato dallo stesso un messaggio di errore Non-behavior Il sito web mostra una form per loggarsi requirements Author Fabio Previtali Date 3/4/28 64

65 Sequence Diagram: login Use Case Allenatore: scelta modalità formazione Main Use Case ID UC-11 Use Case Realtions Generalizza gli use case: scelta formazione senza l ausilio del sistema e scelta formazione con l ausilio del sistema Include lo use case: login Primary Actor Allenatore Goal Selezionare la modalità di scelta della formazione: con o senza l'ausilio del sistema Secondary Actor(s) and their goals Nessuno Brief Description L'allenatore seleziona la modalità di scelta della formazione tra le due disponibili PreConditions Aver creato la propria rosa PostConditions Nessuna Actor Input Main Succes Scenario 1 Extensions Nessuna System Response Scelta modalità 2 Pagina relativa alla scelta Non-behavior Il sito web mostra la pagina relativa alla modalità scelta in precedenza requirements Author Mirko Malacario 65

66 Date 3/4/ Sequence Diagram: scelta modalità formazione 66

67 Use Case Allenatore: scelta formazione senza l'ausilio del sistema Main Use Case ID UC-12 Use Case Realtions Generalizza lo use case: scelta modalità formazione Primary Actor Allenatore Goal Selezionare il modulo da schierare ed inserire direttamente gli 11 calciatori titolari e le 7 riserve, presenti nella propria rosa, da utilizzare nella giornata di campionato Secondary Actor(s) and their goals Nessuno Brief Description Selezionare il modulo da schierare ed inserire direttamente gli 11 calciatori titolari e le 7 riserve, presenti nella propria rosa, da utilizzare nella giornata di campionato PreConditions Aver creato la propria rosa PostConditions La formazione selezionata in questa fase è stata memorizzata nella base di dati del sistema Actor Input 1 System Response Modulo da utilizzare Disposizione dei menu a tendina in base al modulo scelto 2 Main Succes Scenario 3 Scelta dei calciatori Riepilogo operazione e richiesta conferma 4 5 Conferma Operazione effettuata con successo 6 Extensions 4a: Nel caso ci siano delle ripetizioni di uno o più calciatori verrà generato dal sistema un messaggio di errore 5a: Se non c'è la conferma il sistema annulla l'operazione Non-behavior Il sito web mostra la pagina dedicata a fare tale operazione requirements Author Marco Paluci Date 3/4/8 67

68 Sequence Diagram: scelta formazione senza l'ausilio del sistema Use Case Allenatore: scelta formazione con l'ausilio del sistema Main Use Case ID UC-13 Use Case Realtions Generalizza lo use case: scelta modalità formazione Primary Actor Allenatore Goal Creare la formazione da schierare nella giornata odierna con l'ausilio del sistema Secondary Actor(s) and their goals Nessuno Brief Description L'allenatore dispone di questa funzionalità per creare la propria formazione migliore da schierare in campo con il supporto del sistema. Il sistema viene messo a conoscenza degli indisponibili, del modulo scelto e del parametro di scelta per i titolari (media voto, presenze, fantamedia, gol fatti, gol subiti o assist) PreConditions Aver creato la propria rosa PostConditions La formazione selezionata in questa fase è stata memorizzata nella base di dati del sistema Main Succes Actor Input System Response 68

69 1 Indisponibili 2 Rosa senza indisponibili 3 Scelta modulo 4 Selezione modulo e parametro 5 Scenario 6 Riepilogo formazione Modifica e conferma formazione Riepilogo operazione e richiesta conferma 7 8 Conferma Operazione effettuata con successo 9 Extensions 8a: Se non c'è la conferma il sistema annulla l'operazione Non-behavior Il sito web mostra le pagine dedicate a compiere tali operazioni requirements Author Mirko Malacario, Fabio Previtali, Marco Paluci Date 6/5/ Sequence Diagram: scelta formazione con l'ausilio del sistema 69

70 1.4.7 Gli Use Case diagram in dettaglio: Presidente Use Case Presidente: creazione della lega Main Use Case ID UC-14 Use Case Realtions Include gli use case: inserimento numero partecipanti, scelta modalità asta Primary Actor Presidente della Lega Goal Procedere alla creazione della lega inserendone il nome per permettere di disputare il nuovo campionato ed effettuare la scelta della modalità dell'asta ed il numero di partecipanti alla competizione Secondary Actor(s) and their goals Nessuno Brief Description Il Presidente della Lega crea la nuova lega inserendo il nome, il numero di partecipanti e la modalità dell'asta PreConditions Nessuna PostConditions Il sistema ha memorizzato la lega creata Actor Input 1 Main Succes Scenario System Response Nome della lega Riepilogo operazione e richiesta conferma 2 3 Conferma Operazione effettuata con successo 4 7

71 Extensions 3a: Se non c'è la conferma il sistema annulla l'operazione Non-behavior Il sistema mostra la pagina dedicata ad effettuare tale operazione e requirements riepiloga i dati in forma tabellare Author Mirko Malacario Date 5/5/ Sequence Diagram: creazione della lega 71

72 Use Case Presidente: inserimento numero partecipanti Main Use Case ID UC-15 Use Case Realtions E' incluso dallo use case: creazione della lega Primary Actor Presidente della Lega Goal Inserire il numero di partecipanti alla lega Secondary Actor(s) and their goals Nessuno Brief Description Il Presidente della Lega Inserisce il numero di partecipanti alla lega appena creata. I partecipanti possono essere: 4, 6, 8 o 1 PreConditions Nessuna PostConditions Sono aperte le iscrizioni per la lega creata. I partecipanti sono necessariamente in egual numero a quelli impostati dal Presidente della Lega Actor Input 1 Main Succes Scenario System Response Numero Partecipanti Riepilogo operazione e richiesta conferma 2 3 Conferma Operazione effettuata con successo 4 Extensions 3a: Se non c'è la conferma il sistema annulla l'operazione Non-behavior Il sistema mostra la pagina dedicata ad effettuare tale operazione e requirements riepiloga i dati in forma tabellare Author Fabio Previtali Date 5/5/28 72

73 Sequence Diagram: inserimento numero partecipanti Use Case Presidente: scelta modalità asta Main Use Case ID UC-16 Use Case Realtions E' incluso dallo use case: creazione della lega E' generalizzato dagli use case: scelta modalità busta chiusa e scelta modalità offerta a rilancio Primary Actor Presidente della Lega Goal Il Presidente della Lega sceglie la modalità di asta (busta chiusa o asta a rialzo) attraverso la quale i partecipanti alla lega parteciperanno al calciomercato iniziale per la creazione della rosa della propria squadra Secondary Actor(s) and their goals Nessuno Brief Description Il Presidente della Lega dopo aver creato la lega sceglie attraverso l'opportuna pagina del sito la modalità d'asta che caratterizzerà il calciomercato iniziale della lega PreConditions Nessuna PostConditions Il calciomercato iniziale della lega sarà caratterizzato dalla modalità di asta scelta dal Presidente della Lega (busta chiusa o asta a rialzo) Main Succes Scenario Actor Input 1 System Response Modalità asta 73

74 Riepilogo operazione e richiesta conferma 2 3 Conferma Operazione effettuata con successo 4 Extensions 3a: Se non c'è la conferma il sistema annulla l'operazione Non-behavior Il sito web mostra la pagine dedicata a fare tale operazione requirements Author Marco Paluci Date 5/5/ Sequence Diagram Presidente: scelta modalità asta 74

75 Use Case Presidente: scelta modalità busta chiusa Main Use Case ID UC-17 Use Case Realtions Generalizza lo use case: scelta modalità asta Primary Actor Presidente della Lega Goal Scelta della modalità a busta chiusa e impostazione della data di apertura e di scadenza della stessa Secondary Actor(s) and their goals Nessuno Brief Description Il Presidente della Lega sceglie la modalità a busta chiusa ed imposta la data di apertura e di scadenza dell'asta PreConditions Aver scelto la tipologia di asta da utilizzare nella lega PostConditions Gli Allenatori possono preparare la propria lista di calciatori da mettere all'asta Actor Input 1 Main Succes Scenario System Response Data di apertura e data di scadenza Riepilogo operazione e richiesta conferma 2 3 Conferma Operazione effettuata con successo 4 Extensions 2a: Se la data di apertura e di scadenza non sono valide il sistema genera un messaggio di errore 3a: Se non c'è la conferma il sistema annulla l'operazione Non-behavior Il sito web mostra una form dove inserire la data di inizio e la data di requirements scadenza dell'asta Author Fabio Previtali Date 5/5/28 75

76 Sequence Diagram: scelta modalità busta chiusa Use Case Presidente: scelta modalità di offerta a rialzo Main Use Case ID UC-18 Use Case Realtions Generalizza lo use case: scelta modalità asta Primary Actor Presidente della Lega Goal Scelta della modalità di offerta a rialzo e conseguente inserimento della data in cui si svolge l'asta e relativa durata Secondary Actor(s) and their goals Nessuno Brief Description Il Presidente della Lega effettua la scelta della modalità di offerta a rialzo, stabilisce il giorno in cui si svolgerà l'asta e la durata temporale in ore della sessione di asta a rialzo PreConditions Nessuna PostConditions Gli Allenatori possono partecipare all'asta nella data prevista e nell'arco di tempo previsto Main Succes Scenario Actor Input 1 System Response Data di apertura e durata dell'asta 2 Riepilogo operazione e richiesta 76

77 conferma 3 Conferma Operazione effettuata con successo 4 Extensions 2a: Nel caso la data inserita non sia valida il sistema manda un messaggio di errore 3a: Se non c'è la conferma il sistema annulla l'operazione Non-behavior Il sito web mostra la pagina dedicata ad effettuare tale operazione requirements Author Mirko Malacario Date 5/5/ Sequence Diagram: scelta modalità di offerta a rialzo Gli Use Case diagram in dettaglio: Amministratore 77

78 Use Case Amministratore: gestione lega Main Use Case ID UC-19 Use Case Realtions Include lo use case: login Primary Actor Amministratore Goal Gestire correttamente le leghe aggiornando i dati necessari Secondary Actor(s) and their goals Nessuno Brief Description L'Amministratore inserisce i dati necessari al corretto proseguimento della lega (e.g. voti dopo ogni giornata) e dopo tale operazione da il comando al sistema per iniziare i calcoli dei risultati e l'aggiornamento delle varie classifiche PreConditions Nessuna PostConditions I calcoli dei risultati e l'aggiornamento delle classifiche sono avvenuti con successo e i dati sono persistenti nel database del sistema Actor Input System Response Main Succes Scenario 1 Extensions 2a: Nel caso i dati fossero stati inseriti in maniera non corretta (incompleti, formato non corretto ecc.) il sistema notifica questi avvenimenti all'amministratore e lo invita a correggere questi errori 3a: Se non c'è la conferma il sistema annulla l'operazione Voti calciatori 2 Riepilogo dati inseriti Non-behavior Il sito web mostra la pagine dedicata a fare tale operazione requirements Author Marco Paluci Date 5/5/28 78

79 Sequence Diagram: gestione lega Use Case Amministratore: modifica lista calciatori Main Use Case ID UC-2 Use Case Realtions Include lo use case: login Primary Actor Amministratore Goal Inserire, modificare o eliminare calciatori Secondary Actor(s) and their goals Nessuno Brief Description L'Amministratore ha la possibilità di inserire nuovi calciatori oppure può modificare o eliminare calciatori già presenti PreConditions Nessuna PostConditions Il database dei calciatori è aggiornato con le modifiche apportate Main Succes Scenario Actor Input 1 System Response Nuovo calciatore 2 3 Richiesta conferma Conferma 4 Operazione effettuata con successo 79

80 5 Ricerca dei calciatori Lista dei calciatori che soddisfano la richiesta 6 7 Modifiche sui calciatori 8 9 Richiesta conferma Conferma Operazione effettuata con successo 1 Extensions 2a: Nel caso i campi non siano in un formato valido e/o il prezzo del cartellino superi la soglia di 226 crediti il sistema genera un messaggio di errore 3a: Se non c'è la conferma il sistema annulla l'operazione 7a: Nel caso i campi non siano in un formato valido e/o il prezzo del cartellino superi la soglia di 226 crediti il sistema genera un messaggio di errore 9a: Se non c'è la conferma il sistema annulla l'operazione Non-behavior Il sito web mostra la pagine dedicata a fare tale operazione requirements Author Fabio Previtali Date 5/5/28 8

81 Sequence Diagram: modifica lista calciatori Nota I passi 1-4 e 5-1 non sono mutuamente escludentesi e possono essere eseguiti in maniera separata ed indipendente. 81

82 1.5 Conclusioni dell'unità La fase di raccolta dei requisiti utente e delle specifiche funzionali del sistema è stata condotta con molto entusiasmo dal gruppo di lavoro, visto che si trattava proprio dell'inizio del progetto e soprattutto è stata la prima nostra esperienza in progetti di tale portata. Abbiamo trovato subito familiarità con gli strumenti forniti come ad esempio Visual Paradigm che ci ha consentito di realizzare gli schemi e la documentazione necessaria in questa fase. La nostra poca esperienza in progetti del genere ha sicuramente portato ad alcune difficoltà di approccio alle metodologie di processo richieste per il superamento dell'esame. Questo ha richiesto quindi più tempo di quanto previsto per completare l'attività come documenteremo nella fase di assessment del lavoro svolto. 82

83 2. Pianificazione del progetto 2.1 Introduzione Scopo dell'unità L'obbiettivo della presente unità è effettuare una pianificazione temporale e dello sforzo per lo sviluppo dell'applicazione che si sta andando a realizzare. Nella presente unità verranno quindi riportati: la stima dei Function Point (di seguito abbreviati con FP) essenziali per la pianificazione del progetto; tali FP sono stati calcolati dopo aver sviluppato una bozza dello schema logico della base di dati che in seguito andremo a documentare; viene poi riportato il ciclo di vita del software utilizzato con relativa Work Breakdown Structure; vengono poi mostrati e discussi i diagrammi di Pert e GANTT identificando il cammino critico e procedendo infine alla ripartizione delle attività tra i singoli membri del team di sviluppo. 83

84 2.2 Function Point Bozza dello schema logico Illustriamo a seguire una bozza dello schema logico: la strutturazione effettiva della base di dati con schema ER e schema logico definitivo verranno effettuate in seguito. Il presente schema logico è tuttavia sufficiente ad una buona stima dei FP permettendo l'individuazione dei dati logici individuabili dall'utente, gli ILF, con i relativi DET e RET. Le funzionalità illustrate nell'unità precedente ci permetteranno poi di calcolare i FP relativi a EI (External Input), EO (External Output) ed EQ (External Query). Trattandosi di una bozza dello schema logico mancano i vincoli di chiave esterna e i vincoli esterni; tuttavia questi vincoli potranno essere introdotti solo in fasi successive dopo una accurata analisi dello schema della base di dati da produrre. Calciatore(id,cognome,nome,squadra,ruolo,foto) CalciatoreCampionatoGiornataReale(giornata,id_calciatore,gol_subiti,gol_fatti,voto,assist,rigori_parati, rigori_sbagliati,fantavoto,prezzo_cartellino,disputata,ammonito,espulso) Fantacalciatore(id) Portiere(id_fantacalciatore) Difensore(id_fantacalciatore) Centrocampista(id_fantacalciatore) Attaccante(id_fantacalciatore) Fantasquadra(nome,fantastadio,fantamilioni) OffertaCalciatore(versione,nome_fantasquadra,id_calciatore,offerta) FantacalciatoreInFormazione(giornata,id_fantacalciatore,nome_fantasquadra,maglia,titolare,inciso) FantacalciatoreNellaRosa(versione,id_fantacalciatore,nome_fantasquadra) Allenatore(username,password, ) mappato_in(id_fantacalciatore,id_calciatore) presidente_della_lega(nome_lega,username_allenatore) allena(username_allenatore,nome_fantasquadra) Lega(nome,data_apertura_asta,numero_partecipanti) LegaConAstaBustaChiusa(nome_lega,data_scadenza_asta) LegaConAstaRialzo(nome_lega,durata) Classifica(giornata,nome_lega,nome_fantasquadra,posizione,punteggio,vinte,pareggiate,perse,gol_fatti, gol_subiti,fantapunteggio) Partita(giornata,nome_fantasquadra_casa,nome_fantasquadra_ospite,gol_squadra_casa,gol_squadra_ospite, fantapunti_casa,fantapunti_ospite,disputata) 84

85 2.2.2 Descrizione del metodo di stima dei Function Point Il metodo da noi utilizzato per stimare i FP è stato quello da noi acquisito nel corso di Ingegneria del Software tenuto dai professori Giuseppe Santucci e Valentina Presutti. Qui di seguito riportiamo quindi le tabelle, presenti in tali dispense, da noi utilizzate per la stima dei FP: Function Point non pesati: funzioni di tipo dati Svolgeremo in questo paragrafo il calcolo degli UFP (Unadjusted Function Point) sia riguardo le funzioni di tipo dato sia riguardo le funzioni di tipo transazione. 85

86 ILF (Internal Logic File) I gruppi di dati logici identificabili dall'utente dell'applicazione sono i seguenti: Calciatore Allenatore Fantasquadra Lega Classifica Partita Procediamo al calcolo dei RET e DET riguardanti ogni ILF della nostra applicazione. Calciatore RET Calciatore (dati personali) Calciatore (dati statistici) Calciatore (dati giornata campionato reale) Calciatore (dati giornata fantacalcistica) Portiere Difensore Centrocampista Attaccante 86

87 DET Dati personali id cognome nome squadra foto Dati statistici fantamedia media_voto totale_gol_fatti totale_gol_subiti totale_ammonizioni totale_espulsioni totale_rigori_parati totale_rigori_sbagliati totale_assist presenze Dati giornata fantacalcistica titolare maglia inciso 87

88 Dati giornata campionato reale gol_fatti gol_subiti assist ammonito espulso voto giornata fantavoto rigori_sbagliati rigori_parati disputata Riepilogando: RET 8 DET 29 88

89 Allenatore RET Allenatore username password DET Riepilogando: RET 1 DET 3 Fantasquadra RET Fantasquadra nome fantastadio fantamilioni DET Riepilogando: RET 1 DET 3 89

90 Lega RET Lega LegaConAstaBustaChiusa LegaConAstaRialzo nome data_apertura_asta numero_partecipanti data_scadenza_asta durata DET Riepilogando: RET 3 DET 5 9

91 Classifica RET Classifica Fantasquadra Lega nome_fantasquadra nome_lega giornata posizione punteggio fantapunteggio vinte pareggiate perse gol_fatti gol_subiti DET Riepilogando: RET 3 DET 11 91

92 Partita RET Partita Fantasquadra nome_fantasquadra_casa nome_fantasquadra_ospite giornata gol_squadra_casa gol_squadra_ospite fantapunti_casa fantapunti_ospite disputata DET Riepilogando: RET 2 DET Calcolo degli UFP (Unadjusted Function Point) per gli ILF Nome RET DET Complessità UFP Calciatore 8 29 Alta 15 Allenatore 1 3 Bassa 7 Fantasquadra 1 3 Bassa 7 Lega 3 5 Bassa 7 Classifica 3 11 Bassa 7 Partita 2 8 Bassa 7 Totale 5 92

93 2.2.4 Function Point non pesati: funzioni di tipo transazione Procediamo al calcolo delle funzioni di tipo transazione: EI (External Input) EO (External Output) EQ (External Query) Nota Le funzioni di seguito analizzate saranno la conseguenza della scomposizione dei casi d'uso in funzioni elementari per un corretto calcolo dei FP. Mostreremo quindi tra perentesi il caso d'uso a cui ogni funzione si riferisce Identificazione degli EI (External Input) registrazione al sistema (UC-1) acquisto dei fantacalciatori (UC-6) vendita dei fantacalciatori (UC-6) creazione rosa (UC-7) scelta formazione (UC-11) creazione della lega (UC-14) aggiornamento dati della lega (UC-19) modifica lista dei calciatori (UC-2) inserimento nuovo calciatore (UC-2) Procediamo al calcolo degli FTR e DET riguardanti ogni EI della nostra applicazione. registrazione al sistema FTR 3 (Allenatore,Fantasquadra,Lega) DET 6 (username,password, ,nome_fantasquadra,nome_fantastadio,lega) 93

94 acquisto dei fantacalciatori FTR 3 (Calciatore,Fantasquadra,Lega) DET 9 (id,cognome,nome,ruolo,squadra,prezzo_cartellino,nome_fantasquadra, nome_lega,fantamilioni) vendita dei fantacalciatori 2 (Fantacalciatore,Fantasquadra) FTR DET 7 (id,cognome,nome,ruolo,prezzo_cartellino,nome_fantasquadra,fantamilioni) creazione rosa FTR 3 (Calciatore,Fantasquadra,Lega) DET 8 (id,cognome,nome,ruolo,squadra,nome_fantasquadra,nome_lega, fantamilioni) scelta formazione FTR 3 (Calciatore,Fantasquadra,Lega) DET 7 (id,cognome,nome,ruolo,media_voto o fantamedia o gol_fatti, nome_fantasquadra,nome_lega) creazione della lega FTR 3 (Lega,Allenatore,Fantasquadra) DET 9 (nome_lega,data_apertura_asta,numero_partecipanti,data_chiusura_asta o durata,username,password, ,nome_fantasquadra,nome_fantastadio) aggiornamento dati della lega FTR 1 (Calciatore) DET 16 (id,ruolo,cognome,nome,squadra,disputata,gol_fatti,gol_subiti, assist,ammonito,espulso,voto,prezzo_cartellino,rigori_sbagliati,rigori_parati, giornata) modifica lista dei calciatori FTR 1 (Calciatore) DET 6 (id,cognome,nome,squadra,ruolo,foto) 94

95 inserimento nuovo calciatore FTR 1 (Calciatore) DET 7 (id,cognome,nome,foto,squadra,ruolo,prezzo_cartellino) Calcolo degli UFP (Unadjusted Function Point) per gli EI (External Input) Nome FTR DET Complessità UFP registrazione al sistema 3 6 Alta 6 acquisto calciatori 3 9 Alta 6 vendita calciatori 2 7 Media 4 creazione rosa 3 8 Alta 6 scelta formazione 3 7 Alta 6 creazione della lega 3 9 Alta 6 aggiornamento dati della lega 1 16 Media 4 modifica lista dei calciatori 1 6 Bassa 3 inserisci nuovo calciatore 1 7 Bassa 3 Totale Identificazione degli EO (External Output) calcolo fantavoti della giornata (UC-19) aggiornamento classifica (UC-19) aggiornamento partita (UC-19) aggiorna rosa (UC-6 e UC-7) Procediamo al calcolo degli FTR e DET riguardanti ogni EO della nostra applicazione. calcolo fantavoti della giornata FTR 1 (Calciatore) DET 16 (id,ruolo,cognome,nome,squadra,gol_fatti,gol_subiti,assist,ammonito, espulso,voto,rigori_parati,rigori_sbagliati,giornata,prezzo_cartellino, disputata) 95

96 aggiornamento classifica FTR 4 (Classifica,Lega,Fantasquadra,Partita) DET 11 (nome_lega,nome_fantasquadra,giornata,posizione,punteggio, fantapunteggio,vinte,pareggiate,perse,gol_fatti,gol_subiti) aggiornamento partita FTR 4 (Lega,Fantasquadra,Calciatore,Partita) DET 12 (nome_lega,nome_fantasquadra_casa,nome_fantasquadra_ospite, nome_fantastadio,gol_squadra_casa,gol_squadra_ospite,fantapunti_casa, fantapunti_ospite,giornata,id,fantavoto,inciso) aggiornamento rosa FTR 2 (Fantasquadra,Calciatore) DET 4 (cognome,nome,prezzo_cartellino,fantamilioni) Calcolo degli UFP (Unadjusted Function Point) per gli EO (External Output) Nome FTR DET Complessità UFP calcolo fantavoti della giornata 1 16 Bassa 4 aggiornamento classifica 4 11 Alta 7 aggiornamento partita 4 12 Alta 7 aggiornamento rosa 2 4 Bassa 4 Totale 22 96

97 Identificazione degli EQ (External Query) login (UC-1) consultazione statistiche sui calciatori (UC-4) consultazione rosa delle squadre (UC-2) consultazione informazioni sulla lega (UC-3) consultazione risultati partite (UC-5) consultazione classifica (UC-5) login Input FTR 1 (Allenatore) DET 2 (username,password) Output FTR DET 3 (Allenatore,Fantasquadra,Lega) 5 (username,nome_squadra,nome_lega,fantastadio, fantamilioni) consultazione statistiche sui calciatori Input FTR DET 1 (Calciatore) 1 (id o cognome o nome o squadra o ruolo o gol_fatti o gol_subiti o media_voto o fantamedia) Output FTR DET 1 (Calciatore) 17 (id,cognome,nome,ruolo,gol_fatti,gol_subiti,assist,ammonizioni, espulsioni,presenze,rigori_parati,rigori_sbagliati,media_voto, fantamedia,squadra,foto,prezzo_cartellino) 97

98 consultazione rosa delle squadre Input FTR 2 (Lega,Fantasquadra) DET 2 (nome_lega,nome_fantasquadra) Output FTR DET 4 (Calciatore,Lega,Allenatore,Fantasquadra) 1 (nome_fantasquadra,nome_lega,id,cognome,nome,ruolo,prezzo_cartellino, nome_fantastadio,squadra,username) consultazione informazioni sulla lega Input FTR 1 (Lega) DET 1 (nome) Output FTR DET 2 (Lega,Allenatore) 6 (nome_lega,username_presidente_della_lega, _presidente_della_lega,numero_partecipanti,data_apertura_asta, data_scadenza_asta o durata) consultazione risultati partite Input FTR DET 3 (Lega,Fantasquadra,Partita) 4 (nome_lega,nome_fantasquadra_casa,nome_fantasquadra_ospite, giornata) Output FTR DET 4 (Lega,Fantasquadra,Calciatore,Partita) 21 (nome_lega,nome_fantasquadra_casa,nome_fantasquadra_ospite, nome_fantastadio,gol_squadra_casa,gol_squadra_ospite,fantapunti_casa, fantapunti_ospite,giornata,cognome,nome,voto,ammonito,espulso, rigori_parati,rigori_sbagliati,gol_fatti,gol_subiti,assist,fantavoto,inciso) 98

99 consultazione classifica Input FTR 2 (Lega,Classifica) DET 2 (nome,giornata) Output FTR DET 3 (Fantasquadra,Lega,Classifica) 11 (nome_lega,nome_fantasquadra,posizione,punteggio, fantapunteggio,vinte,pareggiate,perse,gol_fatti,gol_subiti,giornata) Calcolo degli Unadjusted Function Point (UFP) per gli EQ (External Query) Nome FTR DET Complessità UFP login 3 6 Media 4 consultazione statistiche sui calciatori 1 17 Bassa 3 consultazione rosa delle squadre 4 1 Alta 6 consultazione informazioni sulla lega 2 6 Media 4 consultazione risultati partite 4 21 Alta 6 consultazione classifica 3 11 Media 4 Totale Calcolo degli UFP (Unadjusted Function Point) totali Gli UFP totali sono la somma degli UFP per ILF, EI, EO ed EQ. Quindi la nostra applicazione ha un numero di UFP pari a

100 2.2.5 Calcolo degli Adjusted Function Point (AFP) Fattori di aggiustamento Introduciamo ora i fattori di aggiustamento che permetteranno il calcolo dei FP pesati secondo i vari scenari di complessità che si aprono durante lo sviluppo del progetto. Il calcolo dei FP pesati avverrà mediante una formula in cui i fattori di aggiustamento correggeranno il valore dei FP fin'ora calcolati. Fattore Complessità Motivazione della complessità 5 Poiché la nostra applicazione effettuerà con frequenza elevata accessi alla base di dati e molti di essi in maniera transazionale per mantenere la consistenza dei dati stessi 1 Poiché l'elaborazione dei dati sarà quasi esclusivamente lato server tranne che per alcuni controlli javascript presenti a lato client 2 Poiché i requisiti in ambito delle prestazioni non sono molto stringenti anche se alcune funzionalità complesse richiedono un tempo di risposta ragionevole Utilizzo della configurazione Poiché la nostra applicazione non necessità di utilizzare le configurazioni con vincoli sulle risorse Frequenza delle transazioni 4 Poiché la maggior parte delle funzionalità relative alla manipolazione dei dati sarà di tipo transazionale Inserimento dati interattivo 3 Poiché diverse funzionalità permettono una interazione interrattiva con il sistema Efficienza per l'utente finale 4 Poiché è un gioco online che richiede un'alta usabilità per l'utente finale 4 Poiché è un gioco basato soprattutto sulla manipolazione continua dei dati è necessaria un'alta protezione con procedure automatiche Comunicazione dati Distribuzione della elaborazione Prestazioni Aggiornamento interattivo 1

101 3 Poiché saranno presenti un buon numero di funzioni basate su calcoli matematici Riusabilità 4 Poiché la nostra applicazione sarà progettata e sviluppata utilizzando un modello che permetterà in futuro un alto riuso Facilità di installazione 2 Poiché sarà necessario installare e configurare più di uno strumento Facilità di gestione operativa 4 Poiché sarà richiesta una medio-alta gestione operativa Molteplicità dei siti Poiché la nostra applicazione è basato su un unico sito web 4 Poiché la nostra applicazione sarà progettata e sviluppata utilizzando un modello che permetterà in futuro un'alta facilità di modifica Complessità elaborativa Facilità di modifica TDI 4 Calcolo del fattore di aggiustamento: VAF = TDI *,1 +,65 -> VAF = 4 *,1 +,65 = 1,5 Calcolo degli AFP (Adjusted Function Point): AFP = UFP * 1,5 -> AFP = 143 * 1,5 -> AFP = 15,15 11

102 2.3 Stima dello sforzo complessivo Per il calcolo dello sforzo e del tempo abbiamo ritenuto opportuno scegliere l Early Design Model di COCOMO. Utilizzando le manopole di COCOMO e selezionando uno stile Object Oriented (la nostra applicazione sarà sviluppata in Java) abbiamo già una stima delle LOC che dovremmo scrivere. 12

103 2.3.1 Assegnazione degli scale factors Qui di seguito riportiamo la tabella degli scale factors da noi scelti: Motivazione delle scelte Precedentedness: Abbiamo scelto nominal poiché dopo 3 anni di università e altre esperienze personali riteniamo che la nostra preparazione in questo ambito si attesti ad un livello medio. Development Flexibility: Abbiamo scelto nominal poiché visti i nostri impegni di studio e personali crediamo di avere una flessibilità di sviluppo abbastanza elevata. Architecture / risk resolution: Abbiamo scelto extra high poiché durante lo sviluppo dell'applicazione prevediamo molte milestones per verificare la correttezza di ciò che in quel momento si sta sviluppando. Team cohesion: Abbiamo scelto very high poiché ci conosciamo da molto tempo sia dal punto di vista personale che tecnico: quindi riteniamo di avere un'alta coesione nello sviluppare l'applicazione. Process maturity: Abbiamo scelto low poiché non abbiamo mai affrontato un progetto di tale portata: quindi riteniamo che avremo all'inizio molti problemi legati alla nostra inesperienza. 13

104 2.3.2 Assegnazione degli effort multiplers Qui di seguito riportiamo la tabella degli effort multiplers da noi scelti: Motivazione delle scelte I valori sono stati da noi scelti prendendo spunto dalle dispense del corso e dalle tesine precedenti poiché, come detto dal docente a lezione, questi sono molto simili per tutti i progetti dei corsi precedenti e futuri che si andranno a sviluppare. 14

105 2.3.3 Distribuzione dello sforzo complessivo Una volta impostati tutti i parametri di COCOMO procediamo al calcolo dello sforzo complessivo: 15

106 2.4 Pianificazione temporale Qui di seguito vengono mostrati i grafici ricavati con COCOMO: 16

107 2.4.1 Work Breakdown Structure Per avviare la pianificazione temporale del progetto è necessario prima individuare l elenco delle attività che lo compongono e quindi ripartirle tra i membri del gruppo di lavoro. Per il presente progetto è stato scelto il modello di sviluppo software detto a cascata e la Work Breakdown Structure è stata realizzata basandosi su tale modello. Rispetto agli standard del modello a cascata si è scelto di realizzare il prototipo freddo del sito nella fase di progettazione, anziché nella fase di definizione dei requisiti; esso svolgerà quindi la funzione di una presentazione del prodotto al fine di ottenere la validazione finale da parte del committente e prima di procedere alla successiva fase di implementazione. Rispetto al modello proposto da COCOMO viene aggiunta una quinta fase detta di rilascio stimata in 2 giorni/uomo. Ovviamente per la nostra esperienza e per la portata del nostro progetto saranno certe iterazioni sia in una specifica fase sia tra tutte le fasi del processo a cascata proposto. Di seguito viene presentato un diagramma che sintetizza il modello del processo di sviluppo adottato. 17

108 Qui di seguito è presente la definizione della Work Breakdown Structure: Fase Attività Prodotti Individuazione degli obiettivi del progetto Definizione dei requisiti Individuazione degli utenti del progetto Definizione delle funzionalità del sistema esportate agli utenti Descrizione delle funzionalità mediante diagramma degli Use Case Documento Requisiti Utente e Specifiche Funzionali del Sistema Analisi dei dati e conseguente stesura del Class Analisi e Pianificazione del Diagram progetto Stima dei Function Point dell'applicazione Stima dello sforzo complessivo e dello sforzo per ogni fase del progetto Definizione della WBS Ripartizione attività tra i membri del gruppo di lavoro Documento Pianificazione del Sistema Definizione dei diagrammi Pert e GANTT a partire dal WBS Disegno architettura hardware Progettazione della basi di dati Disegno architettura software (Class Diagram, Sequence/Collaboration Diagram, State Progettazione del Diagram, Activity Diagram, Implementation sistema Model) Documento Disegno del Sistema Realizzazione del Hypertext Logical Design utilizzando il modello ADM e relativi Sequence Diagram Realizzazione del prototipo freddo Prototipo freddo Implementazione Stesura pagine HTML del sito web Codice dell'applicazione e documento Stesura codice JAVA per la creazione di Servlet, Implementazione JSP,Controller, Domain Classes e DAO del Sistema Definizione del manuale di installazione e di utilizzo 18 Documento Manuale di

109 installazione e di utilizzo Definizione strategia di test Documento Piano di Verifica Effettuazione di ispezione e walkthrough Test e validazione Effettuazione test di unità Effettuazione test di integrazione Documento Piano di Verifica Effettuazione test di validazione e debugging Rilascio Assestement del lavoro Rilascio e installazione sulla piattaforma 19 Conclusioni

110 2.5 Diagrammi di Pert e GANTT In questa sezione descriveremo la Work Breakdown Structure attraverso un diagramma di Pert e un diagramma GANTT. Il diagramma di Pert stabilirà sia le precedenze temporali tra le attività previste che la durata di ognuna di esse; esso verrà presentato dapprima in versione completa poi successivamente sarà diviso per fase di processo. Inoltre verrà mostrato il cammino critico di tale processo di sviluppo. Il diagramma GANTT verrà generato a partire dal diagramma di Pert e mostrerà la pianificazione temporale di ciascuna attività e la possibile elasticità, ovvero la possibilità di far iniziare un'attività in diversi momenti. Anche qui verrà mostrato il cammino critico del processo sviluppato. I seguenti diagrammi sono stati realizzati considerando anche la ripartizione personale del lavoro da svolgere che sarà documentata in seguito con la Work Breakdown Structure Diagramma di Pert: visione d'insieme Diagramma di Pert: analisi e pianificazione 11

111 Diagramma di Pert: progettazione Diagramma di Pert: implementazione 111

112 Diagramma di Pert: test e rilascio Diagramma di Pert: cammino critico Diagramma GANTT 112

113 Diagramma GANTT: cammino critico 113

114 2.6 Ripartizione delle attività Qui di seguito verrà mostrata la durata temporale di ciascuna attività della Work Breakdown Structure. Questi dati sono stati ricavati da COCOMO ed espressi in ore. Successivamente descriveremo la ripartizione delle singole attività del progetto tra i singoli membri del gruppo. Tale pianificazione individuale sarà definita in modo tale che il lavoro sia equamente distribuito tra i membri del gruppo Work Breakdown Structure con la durata di ciascuna attività Fase Analisi e Pianificazione del progetto Attività Prodotti Ore Individuazione degli obiettivi del progetto 2 Definizione dei requisiti 3 Individuazione degli utenti del progetto 3 Definizione delle funzionalità del sistema esportate agli utenti Descrizione delle funzionalità mediante diagramma degli Use Case Documento Requisiti utente e specifiche funzionali del sistema Analisi dei dati e conseguente stesura del Class Diagram Stima dei Function Point dell'applicazione Stima dello sforzo complessivo e dello sforzo per ogni fase del progetto Documento Pianificazione del progetto 21 1 Definizione della WBS 2 Ripartizione attività tra i membri del gruppo di lavoro 3 Definizione dei diagrammi Pert e GANTT

115 a partire dal WBS Totale 72 Disegno architettura hardware 2 Progettazione della basi di dati 35 Disegno architettura software (Class Diagram, Sequence/Collaboration Diagram, State Diagram, Progettazione del Activity Diagram, sistema Implementation Model) Documento Disegno del sistema Realizzazione del Hypertext Logical Design utilizzando il modello ADM e relativi Sequence Diagram Realizzazione del prototipo freddo 14 Prototipo freddo Totale Stesura codice JAVA per la creazione di: Servlet, JSP,Controller, Domain Classes e DAO Codice dell'applicazio ne e documento Implementazi one del sistema Definizione del manuale di installazione e di utilizzo Documento Manuale di installazione e di utilizzo 22 Definizione strategia di test Documento Piano di verifica 17 Totale Test e validazione 3 14 Stesura pagine HTML del sito web Implementazione Effettuazione di ispezione e walkthrough Effettuazione test di unità Effettuazione test di accettazione Documento Piano di verifica

116 Effettuazione test di validazione e debugging 35 Totale 168 Assestement del lavoro Rilascio Rilascio e installazione sulla piattaforma 8 Conclusioni 8 Totale 16 Totale Generale

117 2.6.2 Malacario Mirko Fase Attività Prodotti Individuazione degli obiettivi del progetto 2 Definizione dei requisiti 3 Individuazione degli utenti del progetto 3 Definizione delle funzionalità del sistema esportate agli utenti Descrizione delle funzionalità mediante diagramma degli Use Case Analisi e Pianificazione del progetto Ore Documento Requisiti utente e specifiche funzionali del sistema 6 1 Analisi dei dati e conseguente stesura del Class Diagram 6 Stima dei Function Point dell'applicazione 3 Stima dello sforzo complessivo e dello sforzo per ogni fase del progetto Definizione della WBS Ripartizione attività tra i membri del gruppo di lavoro Documento Pianificazione del progetto Definizione dei diagrammi Pert e GANTT a partire dal WBS Totale 4 Progettazione del Disegno architettura sistema hardware Progettazione della basi di dati Disegno architettura software (Class Diagram, Sequence/Collaboration 117 Documento Disegno del sistema 35 15

118 Diagram, State Diagram, Activity Diagram, Implementation Model) Realizzazione del Hypertext Logical Design utilizzando il modello ADM e relativi Sequence Diagram Realizzazione del prototipo freddo 6 Prototipo freddo Totale 86 Stesura pagine HTML del sito web Stesura codice JAVA per la creazione di: Servlet, JSP,Controller, Domain Classes e DAO Implementazione Codice dell'applicazio ne e documento Implementazi one del sistema 9 Documento Manuale di installazione e di utilizzo 22 Definizione strategia di test Documento Piano di verifica Effettuazione di ispezione e walkthrough Effettuazione test di unità Effettuazione test di accettazione 1 Documento Piano di verifica Effettuazione test di validazione e debugging Totale 9 Assestement del lavoro Rilascio 15 Definizione del manuale di installazione e di utilizzo Totale Test e validazione 3 Rilascio e installazione sulla piattaforma 8 Conclusioni 8 Totale 16 Totale Generale

119 2.6.3 Paluci Marco Fase Attività Prodotti Individuazione degli obiettivi del progetto 2 Definizione dei requisiti 3 Individuazione degli utenti del progetto Definizione delle funzionalità del sistema esportate agli utenti Descrizione delle funzionalità mediante diagramma degli Use Case Analisi e Pianificazione del progetto Ore Documento Requisiti utente e specifiche funzionali del sistema Analisi dei dati e conseguente stesura del Class Diagram 6 Stima dei Function Point dell'applicazione 2 Stima dello sforzo complessivo e dello sforzo per ogni fase del progetto 1 Definizione della WBS Ripartizione attività tra i membri del gruppo di lavoro Documento Pianificazione del progetto Definizione dei diagrammi Pert e GANTT a partire dal WBS Totale Progettazione del Disegno architettura sistema hardware Progettazione della basi di dati Disegno architettura software (Class Diagram, Sequence/Collaboration Diagram, State Diagram, 119 Documento Disegno del sistema

120 Activity Diagram, Implementation Model) Realizzazione del Hypertext Logical Design utilizzando il modello ADM e relativi Sequence Diagram Realizzazione del prototipo freddo Prototipo freddo Totale 55 Stesura pagine HTML del sito web Stesura codice JAVA per la creazione di: Servlet, JSP,Controller, Domain Classes e DAO Implementazione Codice dell'applicazio ne e documento Implementazi one del sistema 9 Documento Manuale di installazione e di utilizzo 22 Definizione strategia di test Documento Piano di verifica Effettuazione di ispezione e walkthrough Effettuazione test di unità Effettuazione test di accettazione 1 Documento Piano di verifica Effettuazione test di validazione e debugging Totale 9 Assestement del lavoro Rilascio 6 Definizione del manuale di installazione e di utilizzo Totale Test e validazione 8 Conclusioni Rilascio e installazione sulla piattaforma 8 Totale 16 Totale Generale

121 2.6.4 Previtali Fabio Fase Attività Prodotti Individuazione degli obiettivi del progetto 2 Definizione dei requisiti 3 Individuazione degli utenti del progetto 3 Definizione delle funzionalità del sistema esportate agli utenti Descrizione delle funzionalità mediante diagramma degli Use Case Analisi e Pianificazione del progetto Ore Documento Requisiti utente e specifiche funzionali del sistema 6 1 Analisi dei dati e conseguente stesura del Class Diagram 6 Stima dei Function Point dell'applicazione 2 Stima dello sforzo complessivo e dello sforzo per ogni fase del progetto 1 Definizione della WBS Ripartizione attività tra i membri del gruppo di lavoro Documento Pianificazione del progetto Definizione dei diagrammi Pert e GANTT a partire dal WBS Totale 65 Progettazione del Disegno architettura sistema hardware Progettazione della basi di dati Disegno architettura software (Class Diagram, Sequence/Collaboration 121 Documento Disegno del sistema 35 1

122 Diagram, State Diagram, Activity Diagram, Implementation Model) Realizzazione del Hypertext Logical Design utilizzando il modello ADM e relativi Sequence Diagram Realizzazione del prototipo freddo 8 Prototipo freddo Totale 53 Stesura pagine HTML del sito web Stesura codice JAVA per la creazione di: Servlet, JSP,Controller, Domain Classes e DAO Implementazione Codice dell'applicazio ne e documento Implementazi one del sistema 18 Documento Manuale di installazione e di utilizzo 22 Definizione strategia di test Documento Piano di verifica Effettuazione di ispezione e walkthrough Effettuazione test di unità Effettuazione test di accettazione 2 Documento Piano di verifica Effettuazione test di validazione e debugging Totale 1 Assestement del lavoro Rilascio 15 Definizione del manuale di installazione e di utilizzo Totale Test e validazione Rilascio e installazione sulla piattaforma 8 Conclusioni 8 Totale 16 Totale Generale

123 2.7 Conclusioni dell'unità La pianificazione del progetto è stata una fase molto importante per il nostro progetto poiché ci ha permesso di valutare la vera portata del lavoro che avremmo dovuto affrontare per realizzare l'intero progetto. Quindi una volta valutata la complessità dell'applicazione abbiamo pianificato il lavoro da svolgere nei giorni successivi, dividendo anche il lavoro per tutti i membri del gruppo. Non abbiamo avuto molte difficoltà nell'utilizzare gli strumenti necessari per questa fase. 123

124 3. Prototipo dell'applicazione 3.1 Introduzione Scopo dell'unità La seguente unità ha l'obiettivo di illustrare la progettazione dell'applicazione attraverso più mezzi. Il primo mezzo a nostra disposizione è un semplice albero di navigazione, che illustra la struttura generale del prototipo che di seguito si andrà a realizzare e documentare. Tale albero fungerà da spunto per la costruzione dell'araneus Data Model, atto a mostrare in maniera più dettagliata le singole pagine HTML del prototipo e l'interazione (per ora statica) tra esse. Prima di mostrare gli screenshot del documento mostreremo i Sequence Diagram del prototipo, divisi per funzionalità. Tali funzionalità verranno poi illustrate, attraverso le immagini del prototipo realizzato, e opportunamente commentate. Le sezioni del sito verranno mostrate sempre divise per funzionalità. 124

125 3.2 Albero di navigazione Visione d'insieme Per la documentazione del prototipo, abbiamo deciso di introdurre dapprima un albero di navigazione semplificato che descrive in maniera generale la struttura del prototipo; mostriamo infatti solo i nomi delle pagine html ed i loro collegamenti per avere una visione d'insieme che permetta di costruire successivamente il definitivo ADM (Araneus Data Model) per documentare in maniera specifica il prototipo nella sua totalità. Vista l'importante mole degli schemi, essi sono stati suddivisi in varie parti, dal momento che una eventuale visione d'insieme non sarebbe stata chiara e leggibile. Gli schemi sono quindi zoom sugli attori della nostra applicazione e sulle pagine messe a loro disposizione Diagrammi albero di navigazione Diagrammi albero di navigazione: Amministratore 125

126 Diagrammi albero di navigazione: Allenatore Diagrammi albero di navigazione: Allenatore (Parte 1) Diagrammi albero di navigazione: Allenatore (Parte 2) 126

127 Diagrammi albero di navigazione: Allenatore (Parte 3) Diagrammi albero di navigazione: Allenatore (Parte 4) 127

128 Diagrammi albero di navigazione: Allenatore (Parte 5) Diagrammi albero di navigazione: Presidente della Lega 128

129 Diagrammi albero di navigazione: Visitatore Diagrammi albero di navigazione: Visitatore (Parte 1) Diagrammi albero di navigazione: Visitatore (Parte 2) 129

130 Diagrammi albero di navigazione: Visitatore (Parte 3) Diagrammi albero di navigazione: Visitatore (Parte 4) 13

131 3.2.3 ADM (Araneus Data Model) ADM (Araneus Data Model): Amministratore ADM (Araneus Data Model): Amministratore (Parte 1) 131

132 ADM (Araneus Data Model): Amministratore (Parte 2) 132

133 ADM (Araneus Data Model): Allenatore ADM (Araneus Data Model): Allenatore (Parte 1) 133

134 ADM (Araneus Data Model): Allenatore (Parte 2) 134

135 ADM (Araneus Data Model): Allenatore (Parte 3) 135

136 ADM (Araneus Data Model): Allenatore (Parte 4) 136

137 ADM (Araneus Data Model): Allenatore (Parte 5) 137

138 ADM (Araneus Data Model): Allenatore (Parte 6) 138

139 ADM (Araneus Data Model): Presidente della Lega 139

140 ADM (Araneus Data Model): Visitatore ADM (Araneus Data Model): Visitatore (Parte 1) 14

141 ADM (Araneus Data Model): Visitatore (Parte 2) 141

142 ADM (Araneus Data Model): Visitatore (Parte 3) 142

143 3.3 Sequence Diagram Sequence Diagram: registrazione al sistema (UC-1) 143

144 3.3.2 Sequence Diagram: consultazione delle rose delle squadre iscritte (UC-2) 144

145 3.3.3 Sequence Diagram: consultazione informazioni sulla lega (UC-3) Sequence Diagram: consultazione statistiche (UC-4) 145

146 3.3.5 Sequence Diagram: consultazione risultati (UC-5) 146

147 3.3.6 Sequence Diagram: partecipazione al calciomercato durante la stagione (UC-6) 147

148 3.3.7 Sequence Diagram: modalità asta a rialzo (UC-8) 148

149 3.3.8 Sequence Diagram: modalità asta a busta chiusa (UC-9) 149

150 3.3.9 Sequence Diagram: login (UC-1) Sequence Diagram: scelta modalità formazione (UC-11) 15

151 Sequence Diagram: scelta formazione senza l'ausilio del sistema (UC-12) Sequence Diagram: scelta formazione con l'ausilio del sistema (UC-13) 151

152 Sequence Diagram: creazione della lega (UC-14) Sequence Diagram: inserimento numero partecipanti (UC-15) 152

153 Sequence Diagram: scelta modalità asta (UC-16) Sequence Diagram: scelta modalità busta chiusa (UC-17) 153

154 Sequence Diagram: scelta modalità di offerta a rialzo (UC-18) Sequence Diagram: gestione lega (UC-19) 154

155 Sequence Diagram: modifica lista calciatori (UC-2) 155

156 3.4 Il prototipo Scelte effettuate Il prototipo è stato sviluppato interamente in HTML con il supporto di Dreamweaver. Sono stati implementati i controlli basilari in javascript in alcuni form; sono state inoltre simulate scelte dinamiche sempre mediante l'utilizzo di javascript (si veda l'index.html con un unico pulsante di login atto a esplorare le due diverse sezioni del sito che prevedono autenticazione). Sono stati aggiunti inoltre dei pulsanti fasulli o dei link facilmente visibili, atti a simulare la dinamicità dei contenuti delle pagine lì dove mediante implementazioni javascript non è stato possibile o comunque non è stato ritenuto essenziale. L'aspetto grafico non è basilare in una applicazione del genere, per cui si è puntato molto alla praticità dell'esplorazione dell'applicazione, mantenendo un formato delle pagine standard. Il sito risulta comunque avere un aspetto gradevole e colorato. Di seguito mostreremo dapprima la struttura utilizzata nella stesura delle pagine ed successivamente gli screenshot delle pagine del prototipo divise per casi d'uso implementati. 156

157 3.4.2 Struttura delle pagine La maggior parte delle pagine del prototipo ha la struttura indicata sopra con un logo fisso come intestazione, una barra di navigazione diversa a seconda del tipo di utente connesso posta sul lato destro ed infine la parte più estesa e centrale in cui si sviluppa l'interattività con l'intero sistema. 157

158 Qui di sotto invece è riportata la struttura delle pagine che interessano la sezione dedicata all'asta interattiva a rialzo in cui, a differenza delle pagine standard, viene portata un'informazione aggiuntiva, riguardo la storia degli acquisti effettuati durante l'asta. Tale riepilogo è visibile sulla destra sopra la barra di navigazione Screenshot Verranno ora illustrati con opportuni commenti gli screenshot del prototipo. Gli screenshot sono stati divisi secondo un preciso criterio: ogni sotto paragrafo individua uno use case; vengono quindi mostrate tutte le pagine che implementano il singolo use case. I commenti riguardano la lettura della pagina html visualizzata e servono infatti ad illustrare le possibilità date al cliente durante la navigazione del prototipo, illustrando il comportamento del sistema in seguito alla pressione dei vari pulsanti o link presenti. 158

159 Login (index.html, logadmin.html, logallenatore.html) Figura 1: index.html La pagina index.html permette l'autenticazione al sistema qualora l'utente sia registrato (può accedere come amministratore fig.2 o come allenatore fig.3). Nel caso l'utente non sia registrato, potrà accedere come visitatore cliccando sul link sito (l'home page del visitatore risulta essere essenzialmente quella di figura 3, con l'esclusione dei tasti rossi relativi all'asta e i tasti relativi alla scelta della formazione) dove potrà beneficiare di alcune funzioni di esplorazione del sito. Sempre dall'index l'utente che accede al sito senza la possibilità di autenticazione può proseguire nella registrazione illustrata nel paragrafo

160 Figura 2: logadmin.html Figura 3: logallenatore.html Per quanto riguarda il Login dell'allenatore, dalla pagina logallenatore.html (fig. 3), si può accedere ad ogni funzionalità dedicata all'allenatore. E' infatti possibile vedere il menu di navigazione disposto sulla destra della pagina che permette l'accesso a quelli che poi sono gli scenari di successo, individuati precedentemente in fase di analisi. 16

161 Registrazione al sistema (registrazione.html) Figura 4: registrazione.html Da questa pagina, accessibile mediante la pagina index.html, l'utente che accede può registrarsi al sito per partecipare di seguito come allenatore, immettendo i dati personali richiesti. L'ultimo campo visibile permette la scelta della lega a cui partecipare oppure la possibilità di diventare presidente di lega: tale scelta viene illustrata nello specifico dal paragrafo al paragrafo

162 Consultazione statistiche (statistiche_calciatore.html, lista_calciatori.html, calciatore.html) Figura 5: statistiche_calciatore_visitatore.html, statistiche_calciatore_allenatore.html Queste pagine illustrate sono in realtà distinte per l'allenatore e per il visitatore (statistiche_calciatore_allenatore.html,statistiche_calciatore_visitatore.html,ecc.) esclusivamente a causa della staticità del prototipo e dei conseguenti link statici. Dalla pagina in figura 5 l'allenatore o il visitatore sceglie un parametro di ricerca selezionandolo mediante la checkbox e scrive nella casella di testo il valore da ricercare. Nel caso di ID si cercherà l'id esattamente immesso; nel caso di Cognome si cercherà il cognome iniziante con la stringa immessa; nel caso di gol fatti si cercheranno tutti i calciatori che hanno realizzato almeno il numero di gol immessi e così via. Nella figura 6 è illustrato un esempio di ricerca effettuata, che mostra quattro risultati. 162

163 Cliccando sul testo seleziona si accede ai dati illustrati in figura 7 relativi al calciatore selezionato. Figura 6: lista_calciatori_visitatore.html, lista_calciatori_allenatore.html Figura 7: totti_visistatore.html, totti_allenatore.html 163

164 Consultazione risultati (calendario.html, partita.html classifica.html) Figura 8: calendario_visistatore.html, calendario_allenatore.html In figura 8 viene illustrato il risultato ottenuto cliccando sul pulsante calendario nella home page dell'allenatore o del visitatore (illustrate nel paragrafo ). In figura 8, l'utente seleziona una lega qualsiasi da consultare; il risultato è una tabella costituita dalle singole partite: con risultato nel caso di partita disputata o campo vuoto nel caso di gara ancora da disputare. Cliccando sul link del risultato della partita, è possibile prendere visione dei dettagli della partita (fig. 9), consultando le prestazioni dei singoli giocatori di calcio, le formazioni e il risultato finale. 164

165 Figura 9: partita_visitatore.html, partita_allenatore.html E' possibile anche visualizzare (fig.1) le classifiche delle singole leghe, procedendo alla selezione della lega da consultare. Figura 1: classifica_visitatore.html, classifica_allenatore.html 165

166 Consultazione rose delle squadre iscritte (rosa.html) Figura 11: rosa_visitatore.html, rosa_allenatore.html Accedendo invece alla pagina rosa.html (figura 11), il visitatore o allenatore può vedere le rose delle singole squadre, scegliendole da una lista. Verranno visualizzati i calciatori di cui è composta la squadra, il nome e l' dell'allenatore e il fantastadio in cui disputa le partite in casa la squadra. 166

167 Consultazione informazioni sulla lega (infolega.html) Figura 12: infolega_visitatore.html, infolega_allenatore.html Da questa pagina l'utente può consultare le informazioni fondamentali relative alle leghe attive al momento nell'applicazione. La lega viene selezionata mediante il menu a tendina visibile nella figura

168 Scelta modalità senza l'ausilio del sistema (formazione_manuale.html) Figura 13: formazione_manuale.html La funzionalità per lo schieramento della formazione è riservata esclusivamente agli allenatori la cui lega è ufficialmente partita, dunque successivamente al completamento dell'asta (indifferentemente se la scelta della lega è ricaduta sull'asta a rialzo o asta a busta chiusa). In questa pagina l'allenatore anzitutto deve scegliere il modulo da schierare, in un elenco di moduli predefiniti. Una volta selezionato il modulo, l'allenatore procede alla selezione dei calciatori titolari e dei panchinari. Un controllo javascript provvede ad effettuare la verifica dello schieramento di 18 calciatori diversi (non è possibile infatti schierare due volte lo stesso calciatore). 168

169 Scelta modalità con l'ausilio del sistema (formazione_assistita.html, formazione_assistita_passo2.html, riepilogo_formazione_assistita.html) In figura 14 è mostrato il primo passo di una funzionalità un po' più complessa dell'applicazione. L'allenatore che sceglie di schierare la propria formazione chiedendo un aiuto al sistema può selezionare i calciatori indisponibili o che comunque non vuole schierare nella giornata odierna; confermando tale operazione viene reindirizzato alla pagina formazione_assistita_passo2.html (fig. 15), che, oltre a mostrare il riepilogo dei calciatori disponibili, permette di selezionare il modulo da schierare e il parametro di selezione per la formazione migliore. Viene quindi mostrato il riepilogo della formazione consigliata dal sistema(fig. 16) che l'allenatore può accettare cliccando sul pulsante conferma o annullare. E' inoltre data la possibilità di tornare indietro per modificare alcuni parametri di selezione precedentemente impostati. Figura 14: formazione_assistita.html 169

170 Figura 15: formazione_assistita_passo2.html 17

171 Figura 16: riepilogo_formazione_assistita.html 171

172 Partecipazione al calciomercato durante la stagione (mercato_in_stagione.html, mercato_in_stagione_passo2.html, mercato_in_stagione_passo3.html, mercato_in_stagione_passo4.html) Figura 17: mercato_in_stagione.html In figura 17 l'allenatore ha la possibilità di scegliere il calciatore che intende vendere, selezionandolo dal menu al tendina presente nella pagina Figura 18: mercato_in_stagione_passo2 Una volta individuato il calciatore che non farà più parte della rosa, l'allenatore può procedere con la ricerca del nuovo calciatore che andrà acquistato. La ricerca verrà 172

173 effettuata solo nell'ambito del ruolo che aveva il calciatore che è stato selezionato per essere eliminato dalla rosa. L'allenatore può selezionare le checkbox (figura 18) per imporre il parametro di ricerca del nuovo calciatore. Figura 19: mercato_in_stagione_passo3.html Nel passo 3 di 4 in figura 19, l'allenatore attraverso un radio button può selezionare il calciatore che intende acquistare, cliccando poi su conferma per proseguire. Figura 2: mercato_in_stagione_passo4.html Prima dell'avvio della transazione, il sistema chiede una verifica dei dati inseriti. Una volta cliccato su conferma, il sistema procede all'assegnazione. 173

174 Modalità asta a busta chiusa (crea_rosa_busta.html, crea_rosa_busta_riepilogo.html) Figura 21: crea_rosa_busta_chiusa.html L'allenatore attraverso i 25 menu a tendina (fig. 21) seleziona i 25 calciatori cui intende fare l'offerta. Nelle caselle vuote viene inserito il valore dell'offerta. Un controllo javascript verifica il corretto utilizzo delle text box; l'allenatore infatti non può inserire dei caratteri diversi da numeri. Nel caso in cui l'allenatore non inserisca la cifra che intende offrire per il determinato calciatore, cliccando sul pulsante calcola, il sistema assegnerà automaticamente un valore pari a zero. Tuttavia se dovesse essere presente ancora qualche valore pari a, cliccando sul pulsante conferma, l'utente riceverà un messaggio che inibirà la possibilità di proseguire nella consegna della busta; verrà quindi invitato ad inserire un'offerta maggiore di zero, con un totale, nella somma delle singole offerte, minore di 25 crediti. 174

175 Un ultimo controllo javascript provvede ad assicurarsi che i 25 calciatori selezionati siano tutti diversi. Figura 22: riepilogo_crea_rosa_busta.html Successivamente alla consegna della busta avverrà il riepilogo che mostra il quadro generale delle offerte effettuate ed il costo potenziale di tutti gli acquisiti. 175

176 Crea rosa modalità asta a rialzo (crea_rosa_rilancio_passo1.html, crea_rosa_rilancio_passo2.html, crea_rosa_rilancio_passo6.html, crae_rosa_rilancio_passo7.html) Figura 23: crea_rosa_rilancio_passo1.html 176

177 Per lo Use Case numero 8 il discorso è un po' più complesso, come illustrato in presentazione del paragrafo; in questo caso non sono stati elaborati tutti gli screenshot. In figura 23 è illustrato lo stato in cui si trova l'allenatore che detiene il turno per l'asta di un determinato calciatore (in questo caso Del Piero). L'allenatore, sulla destra dello schermo, possiede il riepilogo dei calciatori che ha in precedenza acquistato. Nella parte centrale, ci sono le informazioni fondamentali relative all'asta. Vi è inoltre una text box che permette l'inserimento dell'offerta per il calciatore specificato. L'allenatore ha la possibilità di confermare la cifra offerta o ritirarsi dall'asta. Nel secondo caso passa a delle pagine molto simili a quelle in figura 24, dove però l'allenatore che in figura 23 deteneva il turno, compare nella lista degli allenatori che hanno abbandonato l'asta per il calciatore. 177

178 Figura 24: crea_rosa_rilancio_passo2.html In figura 24 l'allenatore deve esclusivamente attendere il refresh automatico del sistema, che avverrà ad ogni cambio di turno, nella fattispecie nel prototipo, tale reindirizzamento non è automatizzato, ma è implementato un link statico, presentato in rosso, che simula il comportamento dinamico. 178

179 Figura 25: crea_rosa_rilancio_passo6.html I passi dal 3 al 6 escluso, sono stati omessi, poiché le pagine che vengono mostrate all'allenatore sono essenzialmente le pagine di figura 24 prima e figura 23 dopo. Infatti nel prototipo viene simulato un turno di asta composto da due giri di offerte tra gli allenatori. L'allenatore vincente alla fine risulta essere pippo che in figura 25 è informato del fatto che l'asta è terminata e lui è risultato vincitore. 179

180 Figura 26: crea_rosa_rilancio_passo7.html L'ultimo screenshot del paragrafo illustra il riepilogo degli acquisti effettuati dall'allenatore durante l'asta interattiva a rialzo; l'unica possibilità data all'allenatore è prendere visione delle scelte fatte durante la sessione d'asta e confermare, venendo reindirizzato alla sua home page personale. 18

181 Gestione Lega (inserimento_voti.html, modifica_calciatori.html, riepilogo_dati_inseriti.html) Figura 27: inserimento_voti.html L'amministratore attraverso la sua home page (figura 2), cliccando sul pulsante inserisci voti, viene condotto alla pagina inserimento_voti.html (figura 27) in cui provvede alla selezione del ruolo e della giornata dei calciatori. Una volta scelto ruolo e giornata l'amministratore inserirà i voti e i parametri importanti per il corretto svolgimento delle leghe. L'amministratore dapprima cliccherà sul pulsante salva per ogni ruolo; 181

182 successivamente cliccando sul pulsante presente sulla destra (calcola) farà partire il calcolo nel sistema, al termine del quale verrà indirizzato alla pagina in figura 28 riepilogo_dati_inseriti.html. Figura 28: riepilogo_dati_inseriti.html L'amministratore mediante il menu a tendina (visualizzato in maniera completa in figura 28) sceglie quali dati consultare una volta effettuato il calcolo. 182

183 Modifica lista calciatori (modifica_calciatori.html) Figura 29: modifica_calciatori.html Dalla pagina modifica_calciatori.html l'amministratore può inserire nuovi calciatori mediante il form sito nella parte superiore della pagina; nella parte inferiore invece è data la possibilità di eliminare i calciatori dal sistema, memorizzando le modifiche mediante il tasto salva. 183

184 Crea Lega (crea_lega.html) Figura 3: crea_lega.html Il presidente di lega, all'atto della registrazione, dovrà creare una nuova lega. Di tale lega sceglierà il nome riempiendo l'apposito campo nella pagina crea_lega.html. Una finestra implementata in javascript mostrerà il riepilogo del nome inserito e chiederà al presidente la conferma per proseguire nella registrazione Inserimento numero partecipanti (numero_partecipanti.html) Figura 31: numero_partecipanti.html L'inserimento degli iscritti che parteciperanno alla lega è un passo molto importante; in figura 31 il presidente della lega ha selezionato una nuova lega costituita da quattro squadre. Questa scelta, apparentemente irrilevante, è stata presa come scenario principale di successo poiché a seconda della scelta del presidente il sistema genererà il calendario ed altri elementi in maniera sostanzialmente diversa. 184

185 Scelta modalità asta (scelta_modalita_asta.html) Figura 32: scelta_modalita_asta.html Attraverso il menu a tendina, il presidente decide il principale scenario dell'applicazione, cioè come si svolgerà l'asta per l'assegnazione dei calciatori. Le due possibilità sono Busta Chiusa e Asta a Rialzo. Cliccando sul pulsante conferma, mediante una finestra di notifica viene mostrato il riepilogo della scelta e un'ulteriore conferma per la prosecuzione della registrazione e creazione della lega Crea lega modalità busta chiusa (crea_lega_modalita_busta.html, riepilogo_crea_lega_busta.html) Figura 33: crea_lega_modalita_busta.html Il presidente della lega deve inserire le date relative all'apertura e chiusura dell'asta a busta chiusa. Un controllo javascript provvede alla verifica della validità della data e che la data di fine asta non sia antecedente quella di inizio. In figura 34 il presidente prende visione delle scelte effettuate. Cliccando su Conferma il 185

186 Figura 34: riepilogo_crea_rosa_busta.html sistema memorizza le scelte effettuate; cliccando sul pulsante annulla, l'utente che si era presentato come presidente della lega dovrà ricominciare la registrazione da capo. La scelta dell'impossibilità di tornare indietro è voluta, poiché ad ogni passo al presidente della lega è chiesta una conferma per proseguire nella registrazione; schiacciando il pulsante annulla della finestra che di volta in volta apparirà come conferma, nei passi della registrazione, l'utente può modificare le sue scelte. 186

187 Crea lega modalità rialzo (crea_lega_modalita_rilancio.html, riepilogo_crea_lega_rilancio.html) Figura 35: crea_lega_modalita_rilancio.html Figura 36: riepilogo_crea_lega_rilancio.html In figura 35 e 36 viene mostrata la creazione della lega con asta a modalità a rialzo; il funzionamento è praticamente uguale a quello del paragrafo Una differenza è 187

188 dovuta dal fatto che in figura 35, per quanto riguarda la creazione di una lega con asta a rialzo, viene controllata la validità della data di inizio dell'asta mediante un controllo javascript, mentre non esiste una data di fine; invece è richiesta la durata in ore dell'asta a rialzo mediante un menu a tendina Dettaglio delle pagine (forma tabellare) Nome pagina index.html logadmin.html Implementa la funzionalità Permette di accedere alla funzionalità Descrizione UC-1 login Home Page del sito, permette ad un visitatore di UC-1 registrazione effettuare sistema l'autenticazione mediante inserimento dati negli appositi campi index.jsp UC-1 login Nel momento dell'autenticazione UC-19 gestione lega dell'amministratore, UC-2 modifica questo può calciatori visualizzare le funzionalità a sua disposizione logadmin.jsp inserimento_voti.ht UC-19 gestione lega ml nessuno Da tale pagina l'amministratore può attribuire i punteggi di ogni inserimento_voti.jsp giornata conseguiti dai calciatori presenti in database L'amministratore può prendere riepilogo_dati_inser UC-19 gestione lega UC-19 gestione lega visione dei risultati iti.html dovuti all'apporto delle sue modifiche modifica_lista_calci atori.html Realizzata UC-2 modifica calciatori nessuno Non implementata Da tale pagina l'amministratore modifica_lista_calci può inserire nuovi atori.jsp calciatori, e modificare o inserisci_calciatori.js eliminare altri già p presenti in database riepilogo_dati_inser L'amministratore UC-19 gestione lega UC-19 gestione lega Non implementata iti_classifica.html prende visione delle 188

189 modifiche apportate alla classifica L'amministratore prende visione delle riepilogo_dati_inser modifiche apportate UC-19 gestione lega UC-19 gestione lega Non implementata iti_formazione.html alle formazioni coinvolte nella giornata L'amministratore riepilogo_dati_inser prende visione delle UC-19 gestione lega UC-19 gestione lega Non implementata iti_calendario.html modifiche apportate al calendario logallenatore.html UC-1 login UC-11 scelta modalità formazione statistiche_calciator UC-4 consultazione e_allenatore.html statistiche lista calciatori_alle UC-4 consultazione natore.html statistiche UC-2 consultazione delle rose delle squadre iscritte UC-3 consultazione informazioni sulla lega UC-4 consultazione statistiche UC-5 consultazione Nel momento risultati dell'autenticazione UC-6 l'allenatore può partecipazione al accedere a tutte le calciomercato funzionalità messe a durante la stagione sua disposizione dal UC-7 creazione rosa sistema. UC-8 modalità asta a rialzo UC-9 modalità asta a busta chiusa UC-12 scelta formazione senza l'ausilio del sistema UC-13 scelta formazione con l'ausilio del sistema logallenatore.jsp Nessuno Da tale pagina l'allenatore loggato ha la possibilità di statistiche_calciator effettuare ricerche e_allenatore.jsp per la consultazione delle statistiche Nessuno Il sistema risponde all'allenatore che ha richiesto lista calciatori_alle determinati natore.jsp parametri di ricerca per le statistiche 189

190 calciatore_allenator UC-4 consultazione e.html statistiche Nessuno L'allenatore può consultare in calciatore_allenator dettaglio le e.jsp statistiche relative al calciatore L'allenatore può consultare il calendario con tutti calendario_allenator UC-5 consultazione UC-5 consultazione i risultati delle varie calendario_allenator e.html risultati risultati giornate e può e.jsp accedere al dettaglio dei risultati delle singole giornate partita_allenatore.ht UC-5 consultazione ml risultati Nessuno classifica_allenatore UC-5 consultazione UC-5 consultazione.html risultati risultati L'allenatore accede nel dettaglio ai risultati di una specifica partita partita_allenatore.js p L'allenatore accede nel dettaglio ai risultati della Lega scelta, consultando classifica_allenatore. la classifica jsp aggiornata all'ultima giornata di campionato svolta L'allenatore accede alla funzione in cui rosa_squadre_allen UC-2 consultazione UC-2 consultazione può consultare le rosa_squadre_allena atore.html rose squadre iscritte rose squadre iscritte rose di tutte le tore.jsp squadre iscritte nelle varie leghe UC-12 scelta UC-12 scelta formazione senza formazione senza l'ausilio del sistema l'ausilio del sistema L'allenatore può compilare la formazione da formazione_manual schierare nella e.jsp giornata odierna di campionato riepilogo_formazion e_manuale.html UC-12 scelta formazione senza l'ausilio del sistema nessuno Da questa pagina l'allenatore può prendere visione riepilogo_formazion delle sue scelte e in e_manuale.jsp caso modificarle tornando indietro reindirizza.html Nessuno Nessuno formazione_manual e.html 19 Permette il reindirizzamento automatico alla Home Page personale dell'allenatore reindirizza.html

191 Permette all'allenatore di UC-13 scelta UC-13 scelta selezionare i formazione_assistita formazione_assistita formazione con formazione con giocatori.html.jsp l'ausilio del sistema l'ausilio del sistema indisponibili per il turno di campionato in corso La pagina permette all'allenatore di UC-13 scelta UC-13 scelta inserire vari formazione_assistita formazione_assistita formazione con formazione con parametri per la _passo2.html _passo2.jsp l'ausilio del sistema l'ausilio del sistema generazione della formazione da parte del sistema riepilogo_formazion e_assistita.html UC-13 scelta formazione con l'ausilio del sistema riepilogo_formazion UC-13 scelta e_assistita_passo2.h formazione con tml l'ausilio del sistema Nessuno L'allenatore può prendere visione ed eventualmente modificare le scelte effettuate dal sistema nello schieramento della formazione Nessuno L'allenatore prende visione delle scelte definitive e riepilogo_formazion conferma la e_assistita.jsp transazione al sistema L'allenatore individua il calciatore che non farà più parte della sua rosa Non implementata UC-6 partecipazione al calciomercato durante la stagione UC-6 partecipazione al calciomercato durante la stagione mercato_in_stagion e_passo2.html UC-6 partecipazione al calciomercato durante la stagione Da questa pagina l'allenatore può UC-6 effettuare una partecipazione al ricerca del calciatore mercato_in_stagion calciomercato che vuole comprare e_passo2.jsp durante la stagione attraverso il suo id o il suo cognome o il suo nome mercato_in_stagion e_passo3.html UC-6 partecipazione al calciomercato durante la stagione UC-6 partecipazione al calciomercato durante la stagione mercato_in_stagion e_passo4.html UC-6 partecipazione al calciomercato durante la stagione mercato_in_stagion e.html Nessuno 191 L'allenatore può selezionare il calciatore che intende acquistare mercato_in_stagion e.jsp mercato_in_stagion e_passo3.jsp In questa pagina è mostrato il riepilogo mercato_in_stagion dell'operazione di e_passo4.jsp mercato appena effettuata

192 Nessuno In questa pagina ci sono le informazioni relative alla lega a cui partecipa l'allenatore (con modalità di asta iniziale a rialzo) info_lega_rialzo_all enatore.jsp Nessuno In questa pagina ci sono le informazioni relative alla lega a cui partecipa l'allenatore (con modalità di asta iniziale a busta chiusa) info_lega_bustachiu sa_allenatore.jsp In queste pagine è possibile completare la rosa UC-7 creazione rosa UC-7 creazione rosa crea_rosa_rilancio_ della propria UC-9 modalità asta UC-9 modalità asta passo1...7 squadra mediante a rialzo a rialzo un'asta a rialzo realizzata in maniera interattiva attesa.jsp offerta.jsp attesa_turno.jsp crea_rosa_rialzo.jsp info_lega_rialzo_all enatore.html info_lega_bustachiu sa_allenatore.html UC-3 consultazione informazioni sulla lega UC-3 consultazione informazioni sulla lega crea_rosa_busta.ht ml L'allenatore può selezionare i 25 UC-7 creazione rosa UC-7 creazione rosa calciatori che UC-9 modalità asta UC-9 modalità asta crea_rosa_busta.jsp intende acquistare a busta chiusa a busta chiusa per la sua squadra e le relative offerte crea_rosa_busta_rie pilogo.html UC-7 creazione rosa UC-9 modalità asta a busta chiusa crea_lega.html UC-14 creazione della lega numero_partecipant UC-15 inserimento i.html numero partecipanti scelta_modalita_ast a.html UC-16 scelta modalità asta Nessuno La pagina mostra all'allenatore il riepilogo delle scelte effettuate Il presidente della UC-15 inserimento lega può scegliere il numero partecipanti nome per la lega in creazione crea_rosa_busta_rie pilogo.jpg crea_lega.jsp Il presidente della lega sceglie il numero dei partecipanti alla competizione numero_partecipant i.jsp UC-17 scelta Il presidente della modalità busta lega può operare la chiusa scelta tra due UC-18 scelta tipologie di asta modalità di offerta a iniziale per la sua rilancio lega scelta_modalita_ast a.jsp UC-16 scelta modalità asta 192

193 crea_lega_modalita _busta.html UC-17 scelta modalità busta chiusa Nessuno Il presidente sceglie le date significanti crea_lega_modalita.j per la creazione sp delle rose riepilogo_crea_lega _busta.html UC-17 scelta modalità busta chiusa Nessuno Il presidente prende riepilogo_crea_lega. visione delle scelte jsp effettuate Nessuno Il visitatore che effettua la registrazione al sito reindirizza_registra viene zione.jsp automaticamente reindirizzato alla home page del sito UC-18 scelta crea_lega_modalita modalità di offerta a _rilancio.html rilancio Nessuno Il presidente sceglie la data di apertura e crea_lega_modalita.j la durata dell'asta sp avente modalità interattiva a rialzo UC-18 scelta riepilogo_crea_lega modalità di offerta a _riancio rilancio Nessuno Il presidente prende riepilogo_crea_lega. visione delle scelte jsp effettuate reindirizza_registra zione.html registrazione.html conferma.html logvisitatore.html Nessuno UC-1 registrazione sistema UC-1 registrazione sistema Nessuno statistiche_calciator UC-4 consultazione e_visitatore.html statistiche UC-1 registrazione sistema Da tale pagina compilando i campi richiesti è possibile creare un account per accedere successivamente al sistema e sfruttare più funzionalità registrazione.jsp Nessuno Il visitatore può prendere visione dei dati immessi al momento della registrazione conferma.jsp UC-2 consultazione delle rose delle squadre iscritte Il visitatore può UC-3 consultazione visitare il sito senza informazioni sulla accedere alle lega funzionalità più UC-4 consultazione importanti statistiche dell'applicazione UC-5 consultazione risultati Nessuno 193 Da tale pagina il visitatore ha la possibilità di logvisitatore.html statistiche_calciator e_visitatore.jsp

194 effettuare ricerche per la consultazione delle statistiche Il visitatore può consultare il calendario con tutti calendario_visitator UC-5 consultazione UC-5 consultazione i risultati delle varie calendario_visitator e.html risultati risultati giornate e può e.jsp accedere al dettaglio dei risultati delle singole giornate classifica_visitatore. UC-5 consultazione html risultati rosa_squadre_visita UC-2 consultazione tore.html rose squadre iscritte info_lega_rialzo_vis itatore.html info_lega_bustachiu sa_visitatore.html UC-3 consultazione informazioni sulla lega UC-3 consultazione informazioni sulla lega Nessuno Il visitatore accede nel dettaglio ai risultati della Lega scelta, consultando classifica_visitatore.j la classifica sp aggiornata all'ultima giornata di campionato svolta Nessuno Il visitatore accede alla funzione in cui può consultare le rose di tutte le squadre iscritte nelle varie leghe Nessuno Da questa pagina è possibile accedere alle informazioni info_lega_visitatore. delle leghe (con jsp modalità di asta iniziale a rialzo) Nessuno Da questa pagina è possibile accedere alle informazioni info_lega_visitatore. delle leghe (con jsp modalità di asta iniziale a busta chiusa) 194 rosa_squadre_visita tore.jsp

195 3.5 Conclusioni dell'unità Anche la fase di prototipazione è risultata molto interessante come le fasi finora incontrate. Ci ha permesso infatti di avere una chiara idea di come sarà sviluppata successivamente la nostra applicazione anche a livello visivo; siamo dunque passati da una fase concettuale ed astratta ad una fase pratica e visiva. Il prototipo è stato sviluppato in più fasi; in una prima fase solo mediante il programma Dreamweaver; una seconda fase è stata di revisione del codice HTML per il controllo della compatibilità con il browser Microsoft Internet Explorer 7.; infine una terza fase in cui è stato introdotto del codice javascript, per la simulazione di scelte dinamiche e controlli a livello presentazione. Questo ha portato via più tempo di quanto avevamo previsto; il risultato tuttavia è stato più che soddisfacente, ci aspettiamo infatti di aver un'ottima base per lo sviluppo dell'applicazione e delle pagine JSP che svilupperemo in fase di implementazione. 195

196 4. Disegno del sistema 4.1 Introduzione Scopo dell'unità La presente unità ha l'intenzione di definire e presentare le scelte tecnologiche inerenti la piattaforma di sviluppo (Web Server, DBMS, ecc.) e inoltre ha lo scopo di illustrare la progettazione completa del sistema in termini di architettura software ovvero: Progettazione e realizzazione della base di dati; Disegno di dettaglio dell'architettura software utilizzando i diagrammi UML. 196

197 4.2 Basi di dati Schema ER 197

198 Discussione delle scelte critiche effettuate Una delle principali scelte critiche effettuate è la separazione dei dati relativi ai calciatori disposti in 3 entità separate: Calciatore: mantiene le informazioni anagrafiche e personali; CalciatoreGiornataCampionatoReale: mantiene le informazioni statistiche sulle giornate disputate; Fantacalciatore: mantiene le informazioni di mappatura con i calciatori non appena essi vengono comprati da una fantasquadra. Un'ulteriore scelta critica effettuata è stata quella che classifica, oltre a mantenere informazioni sulla classifica stessa, serve a rappresentare l'iscrizione di una fantasquadra in una determinata lega. 198

199 4.2.2 Glossario delle entità e delle relazioni CalciatoreGiornataCampionatoReale Tipologia Entità Descrizione Mantiene le informazioni statistiche sulle giornate disputate dai calciatori CalciatoreGiornataCampionatoReale Attributo giornata gol_fatti gol_subiti Dominio Descrizione Intero[,38] Numero corrispondente alla giornata di campionato reale Intero [>= ] Numero dei gol realizzati dal calciatore nell'ambito della giornata di interesse Intero [>= ] Numero dei gol subiti dal calciatore nell'ambito della giornata di interesse voto Valore che indica il Reale voto preso nella [,.5,1,1.5,2,2.5,3,3.5,4,4.5,5,5.5,6,6.5,7,7.5,8,8.5,9,9.5, giornata di 1] campionato reale dal calciatore assist Intero [>= ] Numero degli assist effettuati dal calciatore nell'ambito della giornata di interesse rigori_parati Intero [>= ] Numero di rigori parati dal calciatore nella giornata di campionato reale rigori_sbagliati Intero [>= ] Numero di rigori 199

200 falliti dal calciatore nella giornata di campionato reale fantavoto Il voto del fantacalciatore ricalcolato con le regole del fantacalcio Reale [>= ] Calciatore Tipologia Entità Descrizione Mantiene le informazioni anagrafiche e personali del calciatore Calciatore Attributo Dominio Descrizione id Intero [>= ] Numero corrispondente univocamente ad un calciatore iscritto al campionato si serie A cognome Stringa [1,5] Il cognome del calciatore nome Stringa [1,1] Il nome del calciatore squadra Stringa [1,4] Il nome della squadra di serie A a cui appartiene il calciatore ruolo Stringa [Portiere,Difensore,Centrocampista,Attaccante] Rappresenta il ruolo del calciatore foto Stringa La foto del calciatore Fantacalciatore Tipologia Entità Descrizione Mantiene le informazioni di mappatura con i calciatori non appena essi vengono comprati da una fantasquadra 2

201 Fantacalciatore Attributo id Dominio Descrizione Intero[>= ] Numero corrispondente univocamente ad un calciatore iscritto al campionato si serie A disputa Tipologia Relazione Descrizione E' la relazione tra Calciatore e CalciatoreGiornataCampionato Reale Molteplicità verso CalciatoreGiornataCampionatoReale (1,1) poiché la tabella Calciatore contiene tutti i calciatori della base di dati Molteplicità verso Calciatore (,1) poiché se l'amministratore inserisce un nuovo Calciatore alla giornata g quest'ultimo ovviamente non sarà presente nella tabella in questione nelle giornata (,g-1) disputa Attributo prezzo_cartellino Dominio Descrizione Intero [1,226] La valutazione nell'ambito del fantacalcio del calciatore nella giornata specifica Fantasquadra Tipologia Entità Descrizione Mantiene le informazioni fondamentali della fantasquadra 21

202 Fantasquadra Attributo nome fantastadio Dominio Descrizione Stringa [1,1] Il nome assegnato dall'allenatore alla propria fantasquadra Stringa [1,1] Il nome assegnato dall'allenatore allo stadio della sua fantasquadra Cassa Tipologia Entità Descrizione Mantiene le informazioni relative allo stato economico della fantasquadra Cassa Attributo Dominio Descrizione versione Intero [>= ] Numero corrispondente alla versione della cassa Intero [,25] Numero corrispondente ai fantamilioni disponibili dalla fantasquadra in quella versione fantamilioni FantacalciatoreNellaRosa Tipologia Entità Descrizione Mantiene le informazioni relative all'acquisto di un fantacalciatore da parte di una fantasquadra FantacalciatoreNellaRosa Attributo Dominio Descrizione versione Intero [>= 1] Numero corrispondente alla versione della rosa 22

203 FantacalciatoreInFormazione Tipologia Entità Descrizione Mantiene le informazioni relative ai calciatori schierati in formazione da un allenatore FantacalciatoreInFormazione Attributo giornata maglia Dominio Descrizione Intero [1,36] Numero corrispondente alla giornata di campionato fantacalcistica in cui viene schierato il calciatore nella formazione della squadra Intero[1,2,...,17,18] Numero corrispondente al numero di maglia indossato dal fantacalciatore in una determinata giornata fantacalcistica OffertaCalciatore Tipologia Entità Descrizione Mantiene le informazioni relative alle offerte a busta chiusa effettuate da parte di una fantasquadra per un determinato calciatore OffertaCalciatore Attributo Dominio Descrizione versione Intero [>= ] Numero corrispondente alla versione dell'offerta Intero[1,226] Numero corrispondente al valore dell'offerta per un calciatore offerta 23

204 Partita Tipologia Entità Descrizione Mantiene le informazioni sul calendario con i relativi risultati del fantacampionato Partita Attributo giornata gol_squadra_casa gol_fantasquadra_ospite fantapunti_casa fantapunti_ospite Dominio Descrizione Intero [1,36] Numero corrispondente alla giornata di campionato fantacalcistico in cui si disputa la partita Intero [>= ] Numero dei gol effettuati dalla fantasquadra che gioca in casa nella partita Intero [>= ] Numero dei gol effettuati dalla fantasquadra che gioca in trasferta nella partita Reale [>= ] Punti realizzati dalla squadra che gioca in casa nella partita Reale [>= ] Punti realizzati dalla squadra che gioca in trasferta nella partita Lega Tipologia Entità Descrizione La classe mantiene le informazioni fondamentali relative alle leghe Lega Attributo Dominio Descrizione nome Stringa [1,1] Nome della lega data_apertura_asta Stringa [1] La data che indica l'inizio dell'asta numero_partecipanti Intero [4,6,8,1] Il numero delle squadre che partecipano alla lega 24

205 LegaConAstaBustaChiusa Tipologia Entità Descrizione La classe mantiene in particolare le informazioni sulla lega con modalità d'asta a busta chiusa LegaConAstaBustaChiusa Attributo data_scadenza_asta Dominio Descrizione Stringa [1] La data che indica il termine di presentazione delle buste per la partecipaizone all'asta LegaConAstaRialzo Tipologia Entità Descrizione La classe mantiene in particolare le informazioni sulla lega con modalità d'asta a rialzo LegaConAstaRialzo Attributo durata Dominio Descrizione Intero [1,12] Numero corrispondente alla durata dell'asta interattiva a rialzo. La durata indica le ore Classifica Tipologia Entità Descrizione Mantiene le informazioni relative alle classifiche delle varie leghe 25

206 Classifica Attributo Dominio Descrizione Intero [,36] Numero corrispondente alla giornata di campionato fantacalcistico Intero [1,numero_partecipanti] La posizione della fantasquadra nella classifica della lega in una determinata giornata punteggio Intero [>= ] I punti totalizzati fino all'ultima giornata disputata dalla fantasquadra nella lega fantapunteggi o Reale [>= ] I fantapunti totalizzati fino all'ultima giornata disputata dalla fantasquadra nella lega Intero [>= ] Il numero di vittorie totalizzatie fino alla giornata disputata dalla fantasquadra nella lega Intero [>= ] Il numero di partite pareggiate fino alla giornata disputata dalla fantasquadra nella lega Intero [>= ] Il numero di partite perse fino alla giornata disputata dalla fantasquadra nella lega Intero [>= ] Il numero di reti segnate fino alla giornata disputata dalla fantasquadra nella lega Intero [>= ] Il numero di reti subite fino alla giornata disputata dalla fantasquadra nella lega giornata posizione vinte pareggiate perse gol_fatti gol_subiti 26

207 Allenatore Tipologia Entità Descrizione Mantiene le informazioni relative agli allenatori iscritti alle leghe Allenatore Attributo Dominio Descrizione username Stringa [4,3] L'identificativo scelto dall'allenatore all'atto della registrazione per loggarsi al sistema password Stringa [4,12] La password per l'accesso alle funzionalità del sistema a disposizione dell'allenatore Stringa [6,8] La mail dell'allenatore CalciatoreDisputa Tipologia Entità Descrizione Mantiene le informazioni relative ai calciatori che disputano le giornate del campionato reale di seria A CalciatoreNonDisputa Tipologia Entità Descrizione Mantiene le informazioni relative ai calciatori che non disputano le giornate del campionato reale di seria A CalciatoreAmmonito Tipologia Entità Descrizione Mantiene le informazioni relative ai calciatori ammoniti nel campionato reale di serie A 27

208 CalciatoreEspulso Tipologia Entità Descrizione Mantiene le informazioni relative ai calciatori espulsi nel campionato reale di serie A Portiere Tipologia Entità Descrizione Mantiene le informazioni relative ai portieri Difensore Tipologia Entità Descrizione Mantiene le informazioni relative ai difensori Centrocampista Tipologia Entità Descrizione Mantiene le informazioni relative ai centrocampisti Attaccante Tipologia Entità Descrizione Mantiene le informazioni relative agli attaccanti PartitaDisputata Tipologia Entità Descrizione Mantiene le informazioni relative alle partite disputate PartitaNonDisputata Tipologia Entità Descrizione Mantiene le informazioni relative alle partite non disputate 28

209 FantacalciatoreTitolare Tipologia Entità Descrizione Mantiene le informazioni relative ai fantacalciatori che hanno giocato titolare FantacalciatoreNonTitolare Tipologia Entità Descrizione Mantiene le informazioni relative ai fantacalciatori che non hanno giocato FantacalciatoreTitolareInciso Tipologia Entità Descrizione Mantene le informazioni relative ai fantacalciatori titolari che hanno inciso nel calcolo del fantapunteggio di una fantasquadra FantacalciatoreTitolareNonInciso Tipologia Entità Descrizione Mantene le informazioni relative ai fantacalciatori titolari che non hanno inciso nel calcolo del fantapunteggio di una fantasquadra FantacalciatoreNonTitolareInciso Tipologia Entità Descrizione Mantene le informazioni relative ai fantacalciatori riserve che hanno inciso nel calcolo del fantapunteggio di una fantasquadra FantacalciatoreNonTitolareNonInciso Tipologia Entità Descrizione Mantiene le informazioni relative ai fantacalciatori riserve che non hanno inciso nel calcolo del fantapunteggio di una fantasquadra 29

210 mappato_in Tipologia Entità Descrizione E' la relazione tra Calciatore e Fantacalciatore Molteplicità verso Calciatore (,1) poiché un Calciatore sarà presente nella tabella Fantacalciatore solo nel caso venga comprato da almeno una Fantasquadra Molteplicità verso Fantacalciatore (1,1) poiché la tabella Calciatore contiene tutti i calciatori della base di dati del Tipologia Relazione Descrizione E' la relazione tra OffertaCalciatore e Fantacalciatore Molteplicità verso OffertaCalciatore (1,1) poiché OffertaCalciatore era inizialmente una relazione che poi è stata reificata Molteplicità verso Fantacalciatore (,1) poiché una Fantasquadra può o non può fare offerte per un Calciatore fa Tipologia Relazione Descrizione E' la relazione OffertaCalciatore e Fantasquadra Molteplicità verso OffertaCalciatore (1,1) poiché OffertaCalciatore era inizialmente una relazione che poi è stata reificata Molteplicità verso Fantasquadra (,25) poiché ogni Fantasquadra può fare offerte per i calciatori che vuole acquistare con l'obbligo di farle per tutti i calciatori della sua rosa 21

211 in Tipologia Relazione Descrizione E' la relazione tra FantacalciatoreInFormazione e Fantacalciatore Molteplicità verso FantacalciatoreInFormazione (1,1) poiché FantacalciatoreInFormazione era inizialmente una relazione che poi è stata reificata Molteplicità verso Fantacalciatore (,n) poiché ogni Fantacalciatore può o non può essere schierato dalla Fantasquadra che lo possiede schiera Tipologia Relazione Descrizione E' la relazione tra FantacalciatoreInFormazione e Fantasquadra Molteplicità verso FantacalciatoreInFormazione (1,1) poiché FantacalciatoreInFormazione era inizialmente una relazione che poi è stata reificata Molteplicità verso Fantasquadra (18,18) poiché ogni Fantasquadra ha l'obbligo di schierare 18 Fantacalciatori in formazione dal Tipologia Relazione Descrizione E' la relazione tra FantacalciatoreNellaRosa e Fantacalciatore Molteplicità verso FantacalciatoreNellaRosa (1,1) poiché FantacalciatoreNellaRosa era inizialmente una relazione che poi è stata reificata Molteplicità verso Fantacalciatore (1,n) poiché ogni Fantacalciatore deve essere comprato da almeno una Fantasquadra 211

212 ha Tipologia Relazione Descrizione E' la relazione tra FantacalciatoreNellaRosa e Fantasquadra Molteplicità verso FantacalciatoreNellaRosa (1,1) poiché FantacalciatoreNellaRosa era inizialmente una relazione che poi è stata reificata Molteplicità verso Fantasquadra (25,25) poiché ogni Fantasquadra deve possedere 25 fantacalciatori allena Tipologia Relazione Descrizione E' la relazione tra Allenatore e Fantasquadra Molteplicità verso Allenatore (1,1) poiché un Allenatore allena una ed una sola Fantasquadra Molteplicità verso Fantasquadra (1,1) poiché ogni Fantasquadra è allenata da uno ed un solo Allenatore presidente della lega Tipologia Relazione Descrizione E' la relazione tra Allenatore e Lega Molteplicità verso Allenatore (,1) poiché un Allenatore può o non può essere presidente di una Lega Molteplicità verso Lega (1,1) poiché ogni Lega ha uno ed un solo presidente della lega della Tipologia Relazione Descrizione E' la relazione tra Classifica e Lega Molteplicità verso Classifica (1,1) poiché Classifica era inizialmente una relazione che poi è stata reificata Molteplicità verso Lega (4,1) poiché una Lega è composta da 4 o 6 o 8 o 1 fantasquadre 212

213 inserita Tipologia Relazione Descrizione E' la relazione tra Classifica e Fantasquadra Molteplicità verso Classifica (1,1) poiché Classifica era inizialmente una relazione che poi è stata reificata Molteplicità verso Fantasquadra (1,1) poiché ogni Fantasquadra è iscritta ad una Lega quindi è inserita in una ed una sola Classifica casa Tipologia Relazione Descrizione E' la relazione tra Partita e Fantasquadra Molteplicità verso Partita (1,1) poiché Partita era inizialmente una relazione che poi è stata reificata Molteplicità verso Fantasquadra (2,2) poiché una Fantasquadra disputa 2 partite in casa contro un'altra Fantasquadra ospite Tipologia Relazione Descrizione E' la relazione tra Partita e Fantasquadra Molteplicità verso Partita (1,1) poiché Partita era inizialmente una relazione che poi è stata reificata Molteplicità verso Fantasquadra (2,2) poiché una Fantasquadra disputa 2 partite in trasferta contro un'altra Fantasquadra dispone _di Tipologia Relazione Descrizione E' la relazione tra Cassa e Fantasquadra Molteplicità verso Cassa (1,1) poiché una Cassa è posseduta da una ed una sola Fantasquadra Molteplicità verso Fantasquadra (1,1) poiché ogni Fantasquadra dispone di una ed una sola Cassa 213

214 4.2.3 Elenco di tutti i vincoli non esprimibili mediante lo schema ER In una Lega possono partecipare 4, 6, 8 o 1 fantasquadre; L'attributo giornata delle entità FantacalciatoreInFormazione, Classifica e Partita rappresenta la stessa informazione; Nella tabella FantacalciatoreNellaRosa sono presenti necessariamente: 3 portieri, 8 difensori, 8 centrocampisti e 6 attaccanti; Una Fantasquadra può fare offerte oppure fare offerte per tutti e 25 i calciatori che vorrebbe avere in rosa; Nella tabella FantacalciatoreInFormazione sono presenti necessariamente 11 titolari e 7 riserve; La somma dei fantacalciatori che hanno inciso è pari ad 11, mentre la somma dei fantacalciatori che non hanno inciso è pari a

215 4.2.4 Schema ER ristrutturato 215

216 4.2.5 Schema logico Calciatore(id,cognome,nome,squadra,ruolo,foto) CalciatoreGiornataCampionatoReale(giornata,id_calciatore,gol_subiti,gol_fatti,voto,assist,rigori_parati, rigori_sbagliati,fantavoto,prezzo_cartellino) FK: CalciatoreGiornataCampionatoReale(id_calciatore) <= Calciatore(id) CalciatoreDisputa(giornata,id_calciatore) FK: CalciatoreDisputa(giornata,id_calciatore) <= CalciatoreGiornataCampionatoReale(giornata,id_calciatore) CalciatoreNonDisputa(giornata,id_calciatore) FK: CalciatoreNonDisputa(giornata,id_calciatore) <= CalciatoreGiornataCampionatoReale(giornata,id_calciatore) CalciatoreDisputa(giornata,id_calciatore) AND CalciatoreNonDisputa(giornata,id_calciatore) = CalciatoreAmmonito(giornata,id_calciatore) FK: CalciatoreAmmonito(giornata,id_calciatore) <= CalciatoreDisputa(giornata,id_calciatore) CalciatoreEspulso(giornata,id_calciatore) FK: CalciatoreEspulso(giornata,id_calciatore) <= CalciatoreDisputa(giornata,id_calciatore) CalciatoreAmmonito(giornata,id_calciatore) AND CalciatoreEspulso(giornata,id_calciatore) = Fantacalciatore(id) FK: Fantacalciatore(id) <= mappato_in(id_fantacalciatore) Portiere(id_fantacalciatore) FK: Portiere(id_fantacalciatore) <= Fantacalciatore(id) Difensore(id_fantacalciatore) FK: Difensore(id_fantacalciatore) <= Fantacalciatore(id) Centrocampista(id_fantacalciatore) FK: Centrocampista(id_fantacalciatore) <= Fantacalciatore(id) Attaccante(id_fantacalciatore) FK: Attaccante(id_fantacalciatore) <= Fantacalciatore(id) Portiere(id_fantacalciatore) AND Difensore(id_fantacalciatore) AND Centrocampista(id_fantacalciatore) AND Attaccante(id_fantacalciatore) = Fantacalciatore(id) = Portiere(id_fantacalciatore) OR Difensore(id_fantacalciatore) OR Centrocampista(id_fantacalciatore) OR Attaccante(id_fantacalciatore) 216

217 Fantasquadra(nome,fantastadio) FK: Fantasquadra(nome) <= allena(nome_fantasquadra) FK: Fantasquadra(nome) <= Classifica(nome_fantasquadra) FK: Fantacasquadra(nome) <= Cassa(nome_fantasquadra) OffertaCalciatore(versione,nome_fantasquadra,id_calciatore,offerta) FK: OffertaCalciatore(nome_fantasquadra) <= Fantasquadra(nome) FK: OffertaCalciatore(id_calciatore) <= Calciatore(id) FantacalciatoreInFormazione(giornata,id_fantacalciatore,nome_fantasquadra,maglia) FK: FantacalciatoreInFormazione(nome_fantasquadra) <= Fantasquadra(nome) FK: FantacalciatoreInFormazione(id_fantacalciatore) <= Fantacalciatore(id) FantacalciatoreInFormazione(id_fantacalciatore,nome_fantasquadra) < FantacalciatoreNellaRosa(id_fantacalciatore,nome_fantasquadra) FantacalciatoreTitolare(giornata,id_fantacalciatore,nome_fantasquadra) FK: FantacalciatoreTitolare(giornata,id_fantacalciatore,nome_fantasquadra) <= FantacalciatoreInFormazione(giornata,id_fantacalciatore,nome_fantasquadra) FantacalciatoreNonTitolare(giornata,id_fantacalciatore,nome_fantasquadra) FK: FantacalciatoreNonTitolare(giornata,id_fantacalciatore,nome_fantasquadra) <= FantacalciatoreInFormazione(giornata,id_fantacalciatore,nome_fantasquadra) FantacalciatoreTitolare(giornata,id_fantacalciatore,nome_fantasquadra) AND FantacalciatoreNonTitolare(giornata,id_fantacalciatore,nome_fantasquadra) = FantacalciatoreInFormazione(giornata,id_fantacalciatore,nome_fantasquadra) = FantacalciatoreTitolare(giornata,id_fantacalciatore,nome_fantasquadra) OR FantacalciatoreNonTitolare(giornata,id_fantacalciatore,nome_fantasquadra) FantacalciatoreTitolareInciso(giornata,id_fantacalciatore,nome_fantasquadra) FK: FantacalciatoreTitolareInciso(giornata,id_fantacalciatore,nome_fantasquadra) <= FantacalciatoreTitolare(giornata,id_fantacalciatore,nome_fantasquadra) FantacalciatoreTitolareNonInciso(giornata,id_fantacalciatore,nome_fantasquadra) FK: FantacalciatoreTitolareNonInciso(giornata,id_fantacalciatore,nome_fantasquadra) <= FantacalciatoreTitolare(giornata,id_fantacalciatore,nome_fantasquadra) FantacalciatoreTitolareInciso(giornata,id_fantacalciatore,nome_fantasquadra) AND FantacalciatoreTitolareNonInciso(giornata,id_fantacalciatore,nome_fantasquadra) = FantacalciatoreTitolare(giornata,id_fantacalciatore,nome_fantasquadra) = FantacalciatoreTitolareInciso(giornata,id_fantacalciatore,nome_fantasquadra) OR FantacalciatoreTitolareNonInciso(giornata,id_fantacalciatore,nome_fantasquadra) FantacalciatoreNonTitolareInciso(giornata,id_fantacalciatore,nome_fantasquadra) FK: FantacalciatoreNonTitolareInciso(giornata,id_fantacalciatore,nome_fantasquadra) <= FantacalciatoreNonTitolare(giornata,id_fantacalciatore,nome_fantasquadra) FantacalciatoreNonTitolareNonInciso(giornata,id_fantacalciatore,nome_fantasquadra) FK: FantacalciatorenonTitolareNonInciso(giornata,id_fantacalciatore,nome_fantasquadra) <= FantacalciatorenonTitolare(giornata,id_fantacalciatore,nome_fantasquadra) 217

218 FantacalciatoreNonTitolareInciso(giornata,id_fantacalciatore,nome_fantasquadra) AND FantacalciatoreNonTitolareNonInciso(giornata,id_fantacalciatore,nome_fantasquadra) = FantacalciatoreNonTitolare(giornata,id_fantacalciatore,nome_fantasquadra) = FantacalciatoreNonTitolareInciso(giornata,id_fantacalciatore,nome_fantasquadra) OR FantacalciatoreNonTitolareNonInciso(giornata,id_fantacalciatore,nome_fantasquadra) FantacalciatoreNellaRosa(versione,id_fantacalciatore,nome_fantasquadra) FK: FantacalciatoreNellaRosa(nome_fantasquadra) <= Fantasquadra(nome) FK: FantacalciatoreNellaRosa(id_fantacalciatore) <= Fantacalciatore(id) Cassa(versione,nome_fantasquadra,fantamilioni) FK: Cassa(nome_fantasquadra) <= Fantasquadra(nome) Allenatore(username,password, ) FK: Allenatore(username) <= allena(username_allenatore) mappato_in(id_fantacalciatore,id_calciatore) FK: mappato_in(id_fantacalciatore) <= Fantacalciatore(id) FK: mappato_in(id_calciatore) <= Calciatore(id) Chiave Secondaria: id_calciatore presidente_della_lega(nome_lega,username_allenatore) FK: presidente_della_lega(nome_lega) <= Lega(nome) FK: presidente_della_lega(username_allenatore) <= Allenatore(username) Chiave Secondaria: username_allenatore allena(username_allenatore,nome_fantasquadra) FK: allena(username_allenatore) <= Allenatore(username) FK: allena(nome_fantasquadra) <= Fantasquadra(nome) Chiave Secondaria: nome_fantasquadra Lega(nome,data_apertura_asta,numero_partecipanti) FK: Lega(nome) <= presidente_della_lega(nome_lega) LegaConAstaBustaChiusa(nome_lega,data_scadenza_asta) FK: LegaConAstaBustaChiusa(nome_lega) <= Lega(nome) LegaConAstaRialzo(nome_lega,durata) FK: LegaConAstaRialzo(nome_lega) <= Lega(nome) LegaConAstaBustaChiusa(nome_lega) AND LegaConAstaRialzo(nome_lega) = Lega(nome) = LegaConAstaBustaChiusa(nome_lega) OR LegaConAstaRialzo(nome_lega) Classifica(giornata,nome_lega,nome_fantasquadra,posizione,punteggio,vinte,pareggiate,perse,gol_fatti, gol_subiti,fantapunteggio) FK: Classifica(nome_lega) <= Lega(nome) FK: Classifica(nome_fantasquadra) <= Fantasquadra(nome) 218

219 Partita(giornata,nome_fantasquadra_casa,nome_fantasquadra_ospite,gol_squadra_casa,gol_squadra_ospite, fantapunti_casa,fantapunti_ospite) FK: Partita(nome_fantasquadra_casa) <= Fantasquadra(nome_fantasquadra_casa) FK: Partita(nome_fantasquadra_ospite) <= Fantasquadra(nome_fantasquadra_ospite) PartitaDisputata(giornata,nome_fantasquadra_casa,nome_fantasquadra_ospite) FK: PartitaDisputata(giornata,nome_fantasquadra_casa,nome_fantasquadra_ospite) <= Partita(giornata,nome_fantasquadra_casa,nome_fantasquadra_ospite) PartitaNonDisputata(giornata,nome_fantasquadra_casa,nome_fantasquadra_ospite) FK: PartitaNonDisputata(giornata,nome_fantasquadra_casa,nome_fantasquadra_ospite) <= Partita(giornata,nome_fantasquadra_casa,nome_fantasquadra_ospite) PartitaDisputata(giornata,nome_fantasquadra_casa,nome_fantasquadra_ospite) AND PartitaNonDisputata(giornata,nome_fantasquadra_casa,nome_fantasquadra_ospite) = Partita(giornata,nome_fantasquadra_casa,nome_fantasquadra_ospite) = PartitaDisputata(giornata,nome_fantasquadra_casa,nome_fantasquadra_ospite) OR PartitaNonDisputata(giornata,nome_fantasquadra_casa,nome_fantasquadra_ospite) 219

220 4.2.6 Schema logico ristrutturato Calciatore(id,cognome,nome,squadra,ruolo,foto) CalciatoreGiornataCampionatoReale(giornata,id_calciatore,gol_subiti,gol_fatti,voto,assist,rigori_parati, rigori_sbagliati,fantavoto,prezzo_cartellino,ammonito,espulso,disputata) FK: CalciatoreGiornataCampionatoReale(id_calciatore) <= Calciatore(id) Per motivi di efficienza di tempo e spazio abbiamo deciso di eliminare le tabelle: CalciatoreDisputa, CalciatoreNonDisputa, CalciatoreAmmonito, CalciatoreEspulso poiché non portano alcuna informazione aggiuntiva rispetto alla tabella CalciatoreGiornataCampionatoReale, tranne per il fatto di stabilire se un calciatore ha disputato o non disputato la giornata e in caso l'abbia disputata se è stato ammonito o espulso. Abbiamo quindi aggiunto tre campi booleani nella tabella CalciatoreGiornataCampionatoReale che ci indicano queste informazioni. Gli attributi ammonito ed espulso non possono essere contemporaneamente settati a true. Fantacalciatore(id,id_calciatore) FK: Fantacalciatore(id_calciatore) <= Calciatore(id) Chiave Secondaria: id_calciatore Per motivi di efficienza di tempo e spazio abbiamo deciso di eliminare la tabella mappato_in poiché non porta alcuna informazione aggiuntiva alla base di dati tranne per il fatto di stabilire la mappatura tra i Calciatori ed i Fantacalciatori ma vista la molteplicità (1,1) non è necessaria. Portiere(id_fantacalciatore) FK: Portiere(id_fantacalciatore) <= Fantacalciatore(id) Difensore(id_fantacalciatore) FK: Difensore(id_fantacalciatore) <= Fantacalciatore(id) Centrocampista(id_fantacalciatore) FK: Centrocampista(id_fantacalciatore) <= Fantacalciatore(id) Attaccante(id_fantacalciatore) FK: Attaccante(id_fantacalciatore) <= Fantacalciatore(id) Portiere(id_fantacalciatore) AND Difensore(id_fantacalciatore) AND Centrocampista(id_fantacalciatore) AND Attaccante(id_fantacalciatore) = Fantacalciatore(id) = Portiere(id_fantacalciatore) OR Difensore(id_fantacalciatore) OR Centrocampista(id_fantacalciatore) OR Attaccante(id_fantacalciatore) Fantasquadra(nome,fantamilioni,fantastadio) FK: Fantasquadra(nome) <= Classifica(nome_fantasquadra) FK: Fantasquadra(nome) <= Allenatore(nome_fantasquadra) Abbiamo deciso di eliminare l'entità Cassa che era stata creata in fase di analisi per gestire una eventuale storicizzazione delle spese di una squadra. Abbiamo deciso che nell'applicazione interessa solo mantenere informazioni sull'ultimo stato finanziario della cassa di una fantasquadra. 22

221 OffertaCalciatore(versione,nome_fantasquadra,id_calciatore,offerta) FK: OffertaCalciatore(nome_fantasquadra) <= Fantasquadra(nome) FK: OffertaCalciatore(id_fantacalciatore) <= Calciatore(id) FantacalciatoreInFormazione(giornata,id_fantacalciatore,nome_fantasquadra,titolare,inciso,maglia) FK: FantacalciatoreInFormazione(nome_fantasquadra) <= Fantasquadra(nome) FK: FantacalciatoreInFormazione(id_fantacalciatore) <= Fantacalciatore(id) FantacalciatoreInFormazione(id_fantacalciatore,nome_fantasquadra) < FantacalciatoreNellaRosa(id_fantacalciatore,nome_fantasquadra) Per motivi di efficienza di tempo e spazio abbiamo deciso di eliminare le tabelle: FantacalciatoreTitolare, FantacalciatoreNonTitolare, FantacalciatoreTitolareInciso, FantacalciatoreTitolareNonInciso, FantacalciatoreNonTitolareInciso e FantacalciatoreNonTitolareNonInciso poiché non portano alcuna informazione aggiuntiva rispetto alla tabella FantacalciatoreInFormazione tranne il fatto di stabilire se un calciatore è titolare o non titolare oppure se ha inciso o no nel calcolo dei fantapunti. Abbiamo quindi aggiunto due campi booleani nella tabella FantacalciatoreInFormazione che indicano queste informazioni. FantacalciatoreNellaRosa(versione,id_fantacalciatore,nome_fantasquadra) FK: FantacalciatoreNellaRosa(nome_fantasquadra) <= Fantasquadra(nome) FK: FantacalciatoreNellaRosa(id_fantacalciatore) <= Fantacalciatore(id) Allenatore(username,password, ,nome_fantasquadra) FK: Allenatore(username) <= Fantasquadra(nome) Chiave Secondaria: nome_fantasquadra Per motivi di efficienza di tempo e spazio abbiamo deciso di eliminare la tabella allena poiché non porta alcuna informazione aggiuntiva alla base di dati tranne per il fatto di stabilire la corrispondenza tra ogni Allenatore e la Fantasquadra da esso allenata. Abbiamo quindi aggiunto nella tabella Allenatore l'attributo nome_fantasquadra. Lega(nome,data_apertura_asta,numero_partecipanti,presidente) FK: Lega(presidente) <= Allenatore(username) Chiave Secondaria: presidente Per motivi di efficienza di tempo e spazio abbiamo deciso di eliminare la tabella presidente_della_lega poiché non porta alcuna informazione aggiuntiva alla base di dati tranne per il fatto di stabilire la corrispondenza tra ogni Lega e il suo Presidente. Abbiamo quindi aggiunto nella tabella Lega l'attributo presidente. LegaConAstaBustaChiusa(nome_lega,data_scadenza_asta) FK: LegaConAstaBustaChiusa(nome_lega) <= Lega(nome) LegaConAstaRialzo(nome_lega,durata) FK: LegaConAstaRialzo(nome_lega) <= Lega(nome) LegaConAstaBustaChiusa(nome_lega) AND LegaConAstaRialzo(nome_lega) = Lega(nome) = LegaConAstaBustaChiusa(nome_lega) OR LegaConAstaRialzo(nome_lega) 221

222 Classifica(giornata,nome_lega,nome_fantasquadra,posizione,punteggio,vinte,pareggiate,perse,gol_fatti, gol_subiti,fantapunteggio) FK: Classifica(nome_lega) <= Lega(nome) FK: Classifica(nome_fantasquadra) <= Fantasquadra(nome) Partita(giornata,nome_fantasquadra_casa,nome_fantasquadra_ospite,gol_squadra_casa,gol_squadra_ospite, fantapunti_casa,fantapunti_ospite,disputata) FK: Partita(nome_fantasquadra_casa) <= Fantasquadra(nome_fantasquadra_casa) FK: Partita(nome_fantasquadra_ospite) <= Fantasquadra(nome_fantasquadra_ospite) Per motivi di efficienza di tempo e spazio abbiamo deciso di eliminare le tabelle: PartitaDisputata e PartitaNonDisputata poiché non portano alcuna informazione aggiuntiva rispetto alla tabella Partita tranne il fatto di stabilire se una partita è stato o no disputata. Abbiamo quindi aggiunto un campo booleano nella tabella Partita che ci indica queste informazioni. 222

223 4.2.7 Definizione della politica adottata nelle cancellazioni di dati nel caso di vincoli di inclusione o foreign key Per tutte le foreign key è stata adottata la politica di aggiornamento e cancellazione a cascata dei dati. I vincoli di inclusione sono garantiti a livello applicazione Elenco delle utenze che devono essere definite sulla base di dati L'unico utente che può accedere alla base di dati del Fantacalcio è l'utente root Codice SQL per la creazione della base di dati Qui di seguito verrà mostrato il codice SQL per la creazione della base di dati. Per l'implementazione della stessa è stato necessario eliminare alcune foreign key poiché queste formavano un ciclo e quindi non permettevano l'inserimento dei dati in nessuna maniera; tuttavia questi vincoli di foreign key vengono garantiti a livello applicazione Creazione delle tabelle Begin; Drop Database Fantacalcio; Create Database Fantacalcio; Use Fantacalcio; Create Table Calciatore ( ID int, COGNOME varchar(5) not null, NOME varchar(1) not null, SQUADRA varchar(4) not null, RUOLO enum ('Portiere', 'Difensore', 'Centrocampista','Attaccante'), FOTO varchar(1), Primary Key (ID) ); 223

224 Create Table CalciatoreGiornataCampionatoReale ( GIORNATA int, ID_CALCIATORE int, GOL_SUBITI int, GOL_FATTI int, VOTO real, ASSIST int, RIGORI_PARATI int, RIGORI_SBAGLIATI int, FANTAVOTO real, PREZZO_CARTELLINO int, AMMONITO boolean, ESPULSO boolean, DISPUTATA boolean, Primary Key (GIORNATA,ID_CALCIATORE) ); Create Table Fantacalciatore ( ID int, ID_CALCIATORE int, Primary Key (ID) ); Create Table Portiere ( ID_FANTACALCIATORE int, Primary Key (ID_FANTACALCIATORE) ); Create Table Difensore ( ID_FANTACALCIATORE int, Primary Key (ID_FANTACALCIATORE) ); Create Table Centrocampista ( ID_FANTACALCIATORE int, Primary Key (ID_FANTACALCIATORE) ); Create Table Attaccante ( ID_FANTACALCIATORE int, Primary Key (ID_FANTACALCIATORE) ); 224

225 Create Table Fantasquadra ( NOME varchar(1), FANTASTADIO varchar(1) not null, FANTAMILIONI int, Primary Key (NOME) ); Create Table OffertaCalciatore ( VERSIONE int, NOME_FANTASQUADRA varchar(1), ID_CALCIATORE int, OFFERTA int, Primary Key (VERSIONE,NOME_FANTASQUADRA,ID_CALCIATORE) ); Create Table FantacalciatoreInFormazione ( GIORNATA int, ID_FANTACALCIATORE int, NOME_FANTASQUADRA varchar(1), TITOLARE boolean, MAGLIA int, INCISO boolean, Primary Key (GIORNATA,ID_FANTACALCIATORE,NOME_FANTASQUADRA) ); Create Table FantacalciatoreNellaRosa ( VERSIONE int, ID_FANTACALCIATORE int, NOME_FANTASQUADRA varchar(1), Primary Key (VERSIONE,ID_FANTACALCIATORE,NOME_FANTASQUADRA) ); Create Table Allenatore ( USERNAME varchar(3), PASSWORD varchar(12) not null, varchar(8) not null, NOME_FANTASQUADRA varchar (1), Primary Key (USERNAME), Unique (NOME_FANTASQUADRA) ); 225

226 Create Table Lega ( NOME varchar(1), DATA_APERTURA_ASTA varchar(1) not null, NUMERO_PARTECIPANTI int, PRESIDENTE varchar(3) not null, Primary Key (NOME) ); Create Table LegaConAstaBustaChiusa ( NOME_LEGA varchar(1), DATA_SCADENZA_ASTA varchar(1) not null, Primary Key (NOME_LEGA) ); Create Table LegaConAstaRialzo ( NOME_LEGA varchar(1), DURATA int, Primary Key (NOME_LEGA) ); Create Table Classifica ( GIORNATA int, NOME_LEGA varchar(1), NOME_FANTASQUADRA varchar(1), POSIZIONE int, PUNTEGGIO int, VINTE int, PAREGGIATE int, PERSE int, GOL_FATTI int, GOL_SUBITI int, FANTAPUNTEGGIO real, Primary Key (GIORNATA,NOME_LEGA,NOME_FANTASQUADRA) ); 226

227 Create Table Partita ( GIORNATA int, NOME_FANTASQUADRA_CASA varchar(1), NOME_FANTASQUADRA_OSPITE varchar(1), GOL_SQUADRA_CASA int, GOL_SQUADRA_OSPITE int, FANTAPUNTI_CASA real, FANTAPUNTI_OSPITE real, DISPUTATA boolean, Primary Key (GIORNATA,NOME_FANTASQUADRA_CASA, NOME_FANTASQUADRA_OSPITE) ); Create Table Amministratore ( USERNAME varchar(5), PASSWORD varchar(12), Primary Key (USERNAME) ); Create Table Scadenze ( GIORNATA int, DATA varchar(1), ORA varchar(5), Primary Key (GIORNATA) ); Commit; Nota Durante lo sviluppo dell'applicazione è stato necessario introdurre due nuove tabelle non previste nella progettazione concettuale della base di dati: Amministratore e Scadenze. Queste tabelle non hanno importanza rilevante nel dominio di interesse ma sono comunque necessarie per l'espletamento di alcune funzionalità previste. 227

228 Foreign Key Begin; Alter Table `Fantacalcio`.`CalciatoreGiornataCampionatoReale` add constraint `FKCalciatoreGiornataCampionatoReale-Calciatore` foreign key `FK-CalciatoreGiornataCampionatoRealeCalciatore` (`ID_CALCIATORE`) references `Calciatore` (`ID`) on delete cascade on update cascade; Alter Table `Fantacalcio`.`Fantacalciatore` add constraint `FK-Fantacalciatore-Calciatore` foreign key `FKFantacalciatore-Calciatore` (`ID_CALCIATORE`) references `Calciatore` (`ID`) on delete cascade on update cascade; Alter Table `Fantacalcio`.`Portiere` add constraint `FK-Portiere-Fantacalciatore` foreign key `FK-PortiereFantacalciatore` (`ID_FANTACALCIATORE`) references `Fantacalciatore` (`ID`) on delete cascade on update cascade; Alter Table `Fantacalcio`.`Difensore` add constraint `FK-Difensore-Fantacalciatore` foreign key `FKDifensore-Fantacalciatore` (`ID_FANTACALCIATORE`) references `Fantacalciatore` (`ID`) on delete cascade on update cascade; Alter Table `Fantacalcio`.`Centrocampista` add constraint `FK-Centrocampista-Fantacalciatore` foreign key `FK-Centrocampista-Fantacalciatore` (`ID_FANTACALCIATORE`) references `Fantacalciatore` (`ID`) on delete cascade on update cascade; Alter Table `Fantacalcio`.`Attaccante` add constraint `FK-Attaccante-Fantacalciatore` foreign key `FKAttaccante-Fantacalciatore` (`ID_FANTACALCIATORE`) references `Fantacalciatore` (`ID`) on delete cascade on update cascade; Alter Table `Fantacalcio`.`Allenatore` add constraint `FK-Allenatore-Fantasquadra` foreign key `FKAllenatore-Fantasquadra` (`NOME_FANTASQUADRA`) references `Fantasquadra` (`NOME`) on delete cascade on update cascade; Alter Table `Fantacalcio`.`OffertaCalciatore` add constraint `FK-OffertaCalciatore-Fantasquadra` foreign key `FK-OffertaCalciatore-Fantasquadra` (`NOME_FANTASQUADRA`) references `Fantasquadra` (`NOME`) on delete cascade on update cascade; Alter Table `Fantacalcio`.`OffertaCalciatore` add constraint `FK-OffertaCalciatore-Calciatore` foreign key `FK-OffertaCalciatore-Calciatore` (`ID_CALCIATORE`) references `Calciatore` (`ID`) on delete cascade on update cascade; Alter Table `Fantacalcio`.`FantacalciatoreInFormazione` add constraint `FK-FantacalciatoreInFormazioneFantasquadra` foreign key `FK-FantacalciatoreInFormazione-Fantasquadra` (`NOME_FANTASQUADRA`) references `Fantasquadra` (`NOME`) on delete cascade on update cascade; Alter Table `Fantacalcio`.`FantacalciatoreInFormazione` add constraint `FK-FantacalciatoreInFormazioneFantacalciatore` foreign key `FK-FantacalciatoreInFormazione-Fantacalciatore` (`ID_FANTACALCIATORE`) references `Fantacalciatore` (`ID`) on delete cascade on update cascade; Alter Table `Fantacalcio`.`FantacalciatoreNellaRosa` add constraint `FK-FantacalciatoreNellaRosaFantasquadra` foreign key `FK-FantacalciatoreNellaRosa-Fantasquadra` (`NOME_FANTASQUADRA`) references `Fantasquadra` (`NOME`) on delete cascade on update cascade; 228

229 Alter Table `Fantacalcio`.`FantacalciatoreNellaRosa` add constraint `FK-FantacalciatoreNellaRosaFantacalciatore` foreign key `FK-FantacalciatoreNellaRosa-Fantacalciatore` (`ID_FANTACALCIATORE`) references `Fantacalciatore` (`ID`) on delete cascade on update cascade; Alter Table `Fantacalcio`.`Lega` add constraint `FK-Lega-Allenatore` foreign key `FK-Lega-Allenatore` (`PRESIDENTE`) references `Allenatore` (`USERNAME`) on delete cascade on update cascade; Alter Table `Fantacalcio`.`LegaConAstaBustaChiusa` add constraint `FK-LegaConAstaBustaChiusa-Lega` foreign key `FK-LegaConAstaBustaChiusa-Lega` (`NOME_LEGA`) references `Lega` (`NOME`) on delete cascade on update cascade; Alter Table `Fantacalcio`.`LegaConAstaRialzo` add constraint `FK-LegaConAstaRialzo-Lega` foreign key `FK-LegaConAstaRialzo-Lega` (`NOME_LEGA`) references `Lega` (`NOME`) on delete cascade on update cascade; Alter Table `Fantacalcio`.`Classifica` add constraint `FK-Classifica-Lega` foreign key `FK-Classifica-Lega` (`NOME_LEGA`) references `Lega` (`NOME`) on delete cascade on update cascade; Alter Table `Fantacalcio`.`Classifica` add constraint `FK-Classifica-Fantasquadra` foreign key `FK-ClassificaFantasquadra` (`NOME_FANTASQUADRA`) references `Fantasquadra` (`NOME`) on delete cascade on update cascade; Alter Table `Fantacalcio`.`Partita` add constraint `FK-Partita-Fantasquadra_Casa` foreign key `FK-PartitaFantasquadra_Casa` (`NOME_FANTASQUADRA_CASA`) references `Fantasquadra` (`NOME`) on delete cascade on update cascade; Alter Table `Fantacalcio`.`Partita` add constraint `FK-Partita-Fantasquadra_Ospite` foreign key `FK-PartitaFantasquadra_Ospite` (`NOME_FANTASQUADRA_OSPITE`) references `Fantasquadra` (`NOME`) on delete cascade on update cascade; Commit; 229

230 Stored Procedure Begin; Delimiter $ Create Procedure sp_eccezione() Begin Select USERNAME From Allenatore Where =1; End$ Create Procedure sp_verificacalciatore(id int) Begin If (id < ) Then Call sp_eccezione(); End If; End$ Create Procedure sp_verificavincolicalciatoregiornatacampionatoreale(id_c int, g int, v real, g_s int, g_f int, a int, r_p int, r_s int, f real, p_c int, am boolean, e boolean) Begin If (id_c < ) Then Call sp_eccezione(); End If; If ((g < ) (g > 38)) Then Call sp_eccezione(); End If; If Not ((v = ) (v =.5) (v = 1) (v = 1.5) (v = 2) (v = 2.5) (v = 3) (v = 3.5) (v = 4) (v = 4.5) (v = 5) (v = 5.5) (v = 6) (v = 6.5) (v = 7) (v = 7.5) (v = 8) (v = 8.5) (v = 9) (v = 9.5) (v = 1)) Then Call sp_eccezione(); End If; If (g_s < ) Then Call sp_eccezione(); End If; If (g_f < ) Then Call sp_eccezione(); End If; If (a < ) Then Call sp_eccezione(); End If; If (r_p < ) Then Call sp_eccezione(); End If; If (r_s < ) Then Call sp_eccezione(); End If; If (f < ) Then Call sp_eccezione(); End If; If ((p_c < 1) (p_c > 226)) Then Call sp_eccezione(); End If; If ((am = true) && (e = true)) Then Call sp_eccezione(); End If; End$ 23

231 Create Procedure sp_verificafantacalciatore(id int, id_c int) Begin If (id < ) Then Call sp_eccezione(); End If; If (id_c < ) Then Call sp_eccezione(); End If; End$ Create Procedure sp_verificaportiere(id_f int) Begin Declare TEMP_1 int; Declare VIOLAZIONE bool default 1; Declare crs Cursor For (Select id_fantacalciatore From Difensore Where id_f = id_fantacalciatore) Union (Select id_fantacalciatore From Centrocampista Where id_f = id_fantacalciatore) Union (Select id_fantacalciatore From Attaccante Where id_f = id_fantacalciatore); Declare Continue Handler For SQLSTATE '2' Set VIOLAZIONE = ; Open crs; Fetch crs Into TEMP_1; If (VIOLAZIONE) Then Call sp_eccezione(); End If; If (id_f < ) Then Call sp_eccezione(); End If; End$ 231

232 Create Procedure sp_verificadifensore(id_f int) Begin Declare TEMP_1 int; Declare VIOLAZIONE bool default 1; Declare crs Cursor For (Select id_fantacalciatore From Portiere Where id_f = id_fantacalciatore) Union (Select id_fantacalciatore From Centrocampista Where id_f = id_fantacalciatore) Union (Select id_fantacalciatore From Attaccante Where id_f = id_fantacalciatore); Declare Continue Handler For SQLSTATE '2' Set VIOLAZIONE = ; Open crs; Fetch crs Into TEMP_1; If (VIOLAZIONE) Then Call sp_eccezione(); End If; If (id_f < ) Then Call sp_eccezione(); End If; End$ Create Procedure sp_verificacentrocampista(id_f int) Begin Declare TEMP_1 int; Declare VIOLAZIONE bool default 1; Declare crs Cursor For (Select id_fantacalciatore From Portiere Where id_f = id_fantacalciatore) Union (Select id_fantacalciatore From Difensore Where id_f = id_fantacalciatore) Union (Select id_fantacalciatore From Attaccante Where id_f = id_fantacalciatore); 232

233 Declare Continue Handler For SQLSTATE '2' Set VIOLAZIONE = ; Open crs; Fetch crs Into TEMP_1; If (VIOLAZIONE) Then Call sp_eccezione(); End If; If (id_f < ) Then Call sp_eccezione(); End If; End$ Create Procedure sp_verificaattaccante(id_f int) Begin Declare TEMP_1 int; Declare VIOLAZIONE bool default 1; Declare crs Cursor For (Select id_fantacalciatore From Portiere Where id_f = id_fantacalciatore) Union (Select id_fantacalciatore From Difensore Where id_f = id_fantacalciatore) Union (Select id_fantacalciatore From Centrocampista Where id_f = id_fantacalciatore); Declare Continue Handler For SQLSTATE '2' Set VIOLAZIONE = ; Open crs; Fetch crs Into TEMP_1; End$ If (VIOLAZIONE) Then Call sp_eccezione(); End If; If (id_f < ) Then Call sp_eccezione(); End If; Create Procedure sp_verificavincolifantasquadra(f int) Begin If ((f < ) (f > 25)) Then Call sp_eccezione(); End If; End$ 233

234 Create Procedure sp_verificaoffertacalciatore(v int, id_c int, o int) Begin If (v < ) Then Call sp_eccezione(); End If; If (id_c < ) Then Call sp_eccezione(); End If; If ((o < 1) (o > 226)) Then Call sp_eccezione(); End If; End$ Create Procedure sp_verificafantacalciatoreinformazione(g int, id_f int, n_f varchar(1)) Begin Declare TEMP_1 int; Declare TEMP_2 varchar(1); Declare VIOLAZIONE bool Default ; Declare crs Cursor For (Select id_fantacalciatore, nome_fantasquadra From FantacalciatoreNellaRosa Where id_f = id_fantacalciatore and n_f = nome_fantasquadra); Declare Continue Handler For SQLSTATE '2' Set VIOLAZIONE = 1; Open crs; Fetch crs Into TEMP_1, TEMP_2; If (VIOLAZIONE) Then Call sp_eccezione(); End If; If ((g < 1) (g > 36)) Then Call sp_eccezione(); End If; If (id_f < ) Then Call sp_eccezione(); End If; End$ Create Procedure sp_verificafantacalciatorenellarosa(v int, id_f int) Begin If (v < 1) Then Call sp_eccezione(); End If; If (id_f < ) Then Call sp_eccezione(); End If; End$ Create Procedure sp_verificavincolilega(n_p int) Begin If (Not ((n_p = 4) (n_p = 6) (n_p = 8) (n_p = 1))) Then Call sp_eccezione(); End If; End$ 234

235 Create Procedure sp_verificalegaconastabustachiusa(n_l varchar(1)) Begin Declare TEMP_1 varchar(1); Declare crs Cursor For (Select nome_lega From LegaConAstaRialzo Where n_l = nome_lega); Declare Exit Handler For SQLSTATE '2' Begin End; Open crs; Fetch crs Into TEMP_1; Call sp_eccezione(); End$ Create Procedure sp_verificalegaconastarialzo(n_l varchar(1), d int) Begin Declare TEMP_1 varchar(1); Declare crs Cursor For (Select nome_lega From LegaConAstaBustaChiusa Where n_l = nome_lega); Declare Exit Handler For SQLSTATE '2' Begin If ((d < 1) (d > 12)) Then Call sp_eccezione(); End If; End; Open crs; Fetch crs Into TEMP_1; End$ Call sp_eccezione(); 235

236 Create Procedure sp_verificavincoliclassifica(g int, pu int, v int, pa int, pe int, g_f int, g_s int, f real) Begin If ((g < ) (g > 36)) Then Call sp_eccezione(); End If; If (pu < ) Then Call sp_eccezione(); End If; If (v < ) Then Call sp_eccezione(); End If; If (pa < ) Then Call sp_eccezione(); End If; If (pe < ) Then Call sp_eccezione(); End If; If (g_f < ) Then Call sp_eccezione(); End If; If (g_s < ) Then Call sp_eccezione(); End If; If (f < ) Then Call sp_eccezione(); End If; End$ Create Procedure sp_verificavincolipartita(g int, g_s_c int, g_s_o int, f_c int, f_o int) Begin If ((g < 1) (g > 36)) Then Call sp_eccezione(); End If; If (g_s_c < ) Then Call sp_eccezione(); End If; If (g_s_o < ) Then Call sp_eccezione(); End If; If (f_c < ) Then Call sp_eccezione(); End If; If (f_o < ) Then Call sp_eccezione(); End If; End$ Delimiter ; Commit; 236

237 Trigger Begin; Delimiter $ Create Trigger tgr_verificacalciatore Before Insert On Calciatore For Each Row Call sp_verificacalciatore(new.id)$ Create Trigger tgr_verificavincolicalciatoregiornatacampionatoreale Before Insert On CalciatoreGiornataCampionatoReale For Each Row Call sp_verificavincolicalciatoregiornatacampionatoreale(new.id_calciatore, new.giornata, new.voto, new.gol_subiti, new.gol_fatti, new.assist, new.rigori_parati, new.rigori_sbagliati, new.fantavoto, new.prezzo_cartellino, new.ammonito, new.espulso)$ Create Trigger tgr_verificafantacalciatore Before Insert On Fantacalciatore For Each Row Call sp_verificafantacalciatore(new.id, new.id_calciatore)$ Create Trigger tgr_verificaportiere Before Insert On Portiere For Each Row Call sp_verificaportiere(new.id_fantacalciatore)$ Create Trigger tgr_verificadifensore Before Insert On Difensore For Each Row Call sp_verificadifensore(new.id_fantacalciatore)$ Create Trigger tgr_verificacentrocampista Before Insert On Centrocampista For Each Row Call sp_verificacentrocampista(new.id_fantacalciatore)$ Create Trigger tgr_verificaattaccante Before Insert On Attaccante For Each Row Call sp_verificaattaccante(new.id_fantacalciatore)$ Create Trigger tgr_verificavincolifantasquadra Before Insert On Fantasquadra For Each Row Call sp_verificavincolifantasquadra(new.fantamilioni)$ Create Trigger tgr_verificavincolifantasquadraaggiornamento Before Update On Fantasquadra For Each Row Call sp_verificavincolifantasquadra(new.fantamilioni)$ Create Trigger tgr_verificaoffertacalciatore Before Insert On OffertaCalciatore For Each Row Call sp_verificaoffertacalciatore(new.versione, new.id_calciatore, new.offerta)$ Create Trigger tgr_verificafantacalciatoreinformazione Before Insert On FantacalciatoreInFormazione For Each RowCall sp_verificafantacalciatoreinformazione(new.giornata,new.id_fantacalciatore,new.nome_fantasquadra)$ Create Trigger tgr_verificafantacalciatorenellarosa Before Insert On FantacalciatoreNellaRosa For Each Row Call sp_verificafantacalciatorenellarosa(new.versione, new.id_fantacalciatore)$ Create Trigger tgr_verificavincolilega Before Insert On Lega For Each Row Call sp_verificavincolilega(new.numero_partecipanti)$ Create Trigger tgr_verificalegaconastabustachiusa Before Insert On LegaConAstaBustaChiusa For Each Row Call sp_verificalegaconastabustachiusa(new.nome_lega)$ 237

238 Create Trigger tgr_verificalegaconastarialzo Before Insert On LegaConAstaRialzo For Each Row Call sp_verificalegaconastarialzo(new.nome_lega, new.durata)$ Create Trigger tgr_verificavincoliclassifica Before Insert On Classifica For Each Row Call sp_verificavincoliclassifica(new.giornata, new.punteggio, new.vinte, new.pareggiate, new.perse, new.gol_fatti, new.gol_subiti, new.fantapunteggio)$ Create Trigger tgr_verificavincolipartita Before Insert On Partita For Each Row Call sp_verificavincolipartita(new.giornata, new.gol_squadra_casa, new.gol_squadra_ospite, new.fantapunti_casa, new.fantapunti_ospite)$ Delimiter ; Commit; 238

239 4.2.1 Vincoli di stato Calciatore Vincolo Javascript Java Trigger SQL id [>= ] no no si no cognome [1-5] si si no si (not null) nome [1-1] si si no si (not null) squadra [1-4] si si no si (not null) ruolo: [P-D-C-A] no si no si CalciatoreGiornataCampionatoReale Vincolo Javascript Java Trigger SQL giornata [-38] no si si no id_calciatore [>= ] no no si no gol_fatti [>= ] no si si no gol_subiti [>= ] no si si no assist [>= ] no si si no rigori_parati [>= ] no si si no rigori_sbagliati [>= ] no si si no voto [,.5,1,1.5,2,2.5,3,3.5,4,4.5,5,5.5,6,6.5,7,7.5,8,8.5,9,9.5,1] no si si no fantavoto [>= ] no si si no prezzo_cartellino [1-226] no si si no ammonito o espulso no si si no Fantacalciatore Vincolo Javascript Java Trigger SQL id [>= ] no no si no id_calciatore [>= ] no no si no 239

240 Portiere Vincolo Javascrip t Java Trigger SQL id_fantacalciatore [>= ] no no si no Vincolo Javascrip t Java Trigger SQL id_fantacalciatore [>= ] no no si no Vincolo Javascrip t Java Trigger SQL id_fantacalciatore [>= ] no no si no Vincolo Javascrip t Java Trigger SQL id_fantacalciatore [>= ] no no si no Vincolo Javascrip t Java Trigger SQL nome [1-1] si si no no fantastadio [1-1] si si no si (not null) fantamilioni [-25] no si si no Difensore Centrocampista Attaccante Fantasquadra 24

241 OffertaCalciatore Vincolo Javascript Java Trigger SQL versione [>= ] no si si no nome_fantasquadra [1-1] si si no no id_calciatore [>= ] no no si no offerta [1-226] si si si no Vincolo Javascript Java Trigger SQL giornata [1-36] no si si no id_fantacalciatore [>= ] no no si no nome_fantasquadra [1-1] si si no no maglia [1,2,...,17,18] no si no no Vincolo Javascript Java Trigger SQL versione [>= 1] no si si no id_fantacalciatore [>= ] no no si no nome_fantasquadra [1-1] si si no no Vincolo Javascript Java Trigger SQL username [4-3] si si no no password [4-12] si si no si (not null) [6-8] si si no si (not null) nome_fantasquadra [1-1] si si no no FantacalciatoreInFormazione FantacalciatoreNellaRosa Allenatore 241

242 Lega Vincolo Javascript Java Trigger SQL nome [1-1] si si no no data_apertura_asta [1] si si no si (not null) numero_partecipanti[4,6,8,1 ] no si si no presidente [4-3] si si no si (not null) LegaConAstaBustaChiusa Vincolo Javascript Java Trigger SQL nome_lega [1-1] si si no no data_scadenza_asta [1] si si no si (not null) Vincolo Javascript Java Trigger SQL nome_lega [1-1] si si no no durata [1-12] no si si no LegaConAstaRialzo Classifica Vincolo Javascript Java Trigger SQL giornata [-36] no si si no nome_lega [1-1] si si no no nome_fantasquadra [1-1] si si no no posizione [1,numero_partecipanti] no si no no punteggio [>= ] no si si no vinte [>= ] no si si no pareggiate [>= ] no si si no perse [>= ] no si si no gol_fatti [>= ] no si si no gol_subiti [>= ] no si si no fantapunteggio [>= ] no si si no 242

243 Partita Vincolo Javascript Java Trigger SQL giornata [1-36] no si si no nome_fantasquadra_casa [1-1] si si no no nome_fantasquadra_ospite [1-1] si si no no gol_squadra_casa [>= ] no si si no gol_squadra_ospite [>= ] no si si no fantapunti_casa [>= ] no si si no fantapunti_ospite [>= ] no si si no Specifica dei trigger Tutti i trigger effettuano il controllo prima dell'inserimento delle nuova tupla nella relativa tabella chiamando la specifica stored procedure la quale effettuerà i controlli necessari. Inoltre la tabella Classifica ha un ulteriore trigger che effettua il controllo anche prima dell'aggiornamento della relativa tupla, chiamando sempre la specifica stored procedure. Le reazioni agli eventi scatenanti sono l'inserimento in caso positivo ed il non inserimento in caso negativo. 243

244 Altri vincoli di stato Il vincolo che l'intersezione tra Portiere, Difensore, Centrocampista e Attaccante è nulla sarà implementato sia a livello di trigger che di applicazione; Il vincolo che le tuple presenti in FantacalciatoreInFormazione siano un sottoinsieme delle tuple di FantacalciatoreNellaRosa sarà implementato sia a livello di trigger che di applicazione; Il vincolo che nella tabella FantacalciatoreInFormazione siano presenti 11 titolari e 7 riserve sarà implementato a livello applicazione; Il vincolo che nella tabella FantacalciatoreInFormazione siano presenti 11 fantacalciatori che hanno inciso nel calcolo dei fantapunti sarà implementato a livello applicazione; Il vincolo che l'intersezione tra LegaConAstaBustaChiusa e LegaConAstaRialzo è nulla sarà implementato a livello applicazione Vincoli di stato implementati tramite transazioni Il vincolo di molteplicità (18,18) tra FantacalciatoreInFormazione e Fantasquadra sarà implementato a livello applicazione attraverso una transazione; Il vincolo di molteplicità (25,25) tra FantacalciatoreNellaRosa e Fantasquadra sarà implementato a livello applicazione attraverso una transazione; Il vincolo di molteplicità (,25) tra OffertaCalciatore e Fantasquadra sarà implementato a livello applicazione attraverso una transazione che garantirà questo vincolo nel caso la Fantasquadra faccia offerte per i calciatori; Il vincolo che la somma delle tuple di Portiere, Difensore, Centrocampista e Attaccante è pari alle tuple di Fantacalciatore sarà implementato a livello applicazione attraverso una transazione; 244

245 Il vincolo che la somma delle tuple di LegaConAstaBustaChiusa e LegaConAstaRialzo è pari alle tuple di Lega sarà implementato a livello applicazione attraverso una transazione Ridondanze L'attributo numero partecipanti dell'entità Lega rappresenta proprio il numero di tuple presenti nell'entità Classifica ad ogni giornata. Questa ridondanza è stata necessaria per motivi di efficienza e implementazione dell'applicazione. 245

246 4.3 Architettura hardware Il nostro sistema è costituito da un architettura Client/Server nel web che comunica secondo il protocollo TCP/IP. Il server è costituito da un calcolatore dove risiedono il web server, l application server ed il DBMS. Il client può essere un qualsiasi dispositivo che disponga di un browser web cioè computer desktop, notebook, laptop, telefono cellulare ecc. Piattaforme di sviluppo Hp Pavillon 269 Cpu Intel Centrino Core Duo T Ghz Ram 2 Gb Sistema Operativo: Linux Ubuntu 8.4/8.1, Windows Vista Ultimate Edition Asus A8JR-4P5C Cpu Intel Centrino Core Duo T Ghz Ram 1 Gb Sistema Operativo: Windows XP Professional Edition SP 2 Sony Vaio VGN-N11H/W Cpu Intel Centrino Core Duo T Ghz Ram 1 Gb Sistema Operativo: Linux Ubuntu 8.1, Windows Media Center

247 4.4 Piattaforma software L'applicazione sarà sviluppata secondo il paradigma Client/Server con tecnlogia web. Il software sarà appunto un sito web con contenuti dinamici in tecnologia J2EE che farà uso di Servlet e JSP. L'applicazione farà uso di un DBMS (Data Base Management System) per memorizzare tutti i dati necessari. Tutta l'applicazione sarà sviluppata in Java, mentre a livello di presentazione come integrazione alle Servlet e JSP utilizzeremo anche javascript e ajax per l'espletamento di alcune funzionalità. Il DBMS da noi scelto è MySQL che è sicuramente uno dei migliori in circolazione e, cosa da non sottovalutare, è open-source. L'accesso alla base di dati da parte dell'applicazione sarà effettuato tramite JDBC (Java Database Connetivity). Infine come web server utilizzeremo Apache Tomcat Ricapitolando la piattaforma software sarà progettata in questo modo: Presentazione: attraverso Servlet e JSP con l'ausilio di javascript e ajax; Applicazione: attraverso Java; Database: attraverso MySQL. 247

248 4.5 Architettura software Introduzione In questa sezione andremo a descrivere l'architettura software della nostra applicazione con l'ausilio dei diagrammi UML. Dapprima daremo una visione d'insieme delle varie componenti attraverso l'implementation Model composto da 3 diagrammi : Deployment Diagram, Component Diagram e Package Diagram. Successivamente mostreremo il Design Model del sistema che illustrerà tutte le classi individuate per l'implementazione ed evidenzierà le dipendenze e associazioni tra di esse Scelte effettuate Per il progetto e lo sviluppo della nostra applicazione adotteremo il design pattern DAO/ MVC che garantisce una soluzione ottima per il disaccoppiamento tra i vari moduli software. Tutto ciò garantirà soprattutto la facilità di riuso e manutenzione di tali moduli. Essi sono divisi principalmente in 3 parti: Model, View, Controller: ovvero si separa lo strato di presentazione (View) da quello dei dati veri e propri (Model) ed inoltre la logica applicativa di controllo è definita esclusivamente nello strato Controller. L'ulteriore esigenza che viene garantita da questo pattern è il disaccoppiamento tra gli oggetti di dominio manipolati a livello applicazione dall'accesso dei dati memorizzati nella base di dati attraverso l'uso di speciali classi (DAO) che si occuperanno esclusivamente di accedere alla base di dati. Quindi gli oggetti di dominio dopo essere stati creati dal Controller interagiscono con la base di dati solo attraverso la classe DAO corrispondente. Per aumentare l'efficienza dell'applicazione in alcune situazioni risulterà più conveniente adottare un approccio meno vincolante basato sull'uso di classi DCS (Data Control Services) le quali vengono direttamente invocate dallo strato Controller. Questo approccio è particolarmente adatto nei casi in cui vi siano molte interrogazioni che coinvolgono più di un'entità forte (raggruppate in gruppi omogenei, ciascuno implementato tramite una specifica classe DCS). I DCS quindi esportano funzionalità non localizzabili in nessuna classe di dominio. 248

249 4.5.3 Implementation Model Qui di seguito mostreremo l'implementation Model composto da 3 diagrammi: Deployment Diagram, Component Diagram e Package Diagram. Questi illustrano il dispiegamento dei componenti dell'architettura e la suddivisione in package delle classi sviluppate corredando il tutto con le relative dipendenze Deployment Diagram 249

250 Component Diagram Package Diagram Il Package Diagram mostra i package che andremo a sviluppare per il nostro software. Si nota l'utilizzo del design pattern DAO/MVC descritto in precedenza; infatti ogni package ha l'onere di svolgere compiti ben precisi e disaccoppiati dagli altri. Tutto ciò porterà in futuro ad una facile manutenzione e riutilizzo delle varie componenti secondo i principi fondamentali dell'ingegneria del software. 25

251 Andremo ora a descrivere le funzionalità principali che ogni package andrà a esportare: Servlets: Le classi servlets insieme alle JSP (non incluse nei package di sviluppo) andranno a comporre lo strato di presentazione. L'utente finale, infatti, interagirà col sistema esclusivamente attraverso le pagine web, le quali, servendosi a volte delle servlet, prenderanno in input i dati dell'utente per poi mandarli al sistema. Questo successivamente manderà l'utente alla pagina web dove troverà le informazioni richieste in precedenza; Controller: Le classi controller andranno ad incapsulare tutta la logica applicativa di controllo del sistema. Esse hanno il compito di ricevere i dati in ingresso dalle Servlet o JSP e successivamente creare e manipolare gli oggetti di dominio necessari per l'esecuzione delle funzionalità richieste oppure, in caso di interrogazioni più complesse che non riguardano una sola entità forte, interagiranno direttamente col package DCS che descriveremo successivamente; 251

252 Domain Classes: Le classi di dominio rappresentano gli oggetti della nostra applicazione e a livello run time conterranno tutte le informazioni necessarie a svolgere le varie operazioni. Tali oggetti, dopo essere stati creati e manipolati dai controller, eseguiranno le funzionalità richieste; inoltre in caso siano entità forti, cioè oggetti che posseggono dei dati memorizzati in maniera permanente nella base di dati, andranno a interagire con le classi DAO corrispondenti presenti nel package persistence classes (ogni entità forte ha il suo DAO corrsipondente). Quest'interazione con i DAO è necessaria per separare l'accesso alla base di dati in modo tale da rendere immediato un eventuale cambiamento del DBMS; Persistence Classes: Tale package è lo strato demandato all'accesso alla base di dati; infatti solamente esso si connette alla base di dati per il reperimento dei dati e poi, una volta acquisiti, li incapsula negli oggetti di dominio o in altre strutture dati e li consegna agli strati superiori (domain classes o controller). Questo package è diviso in 3 sotto package: DAO, DCS e Connection Manager. Il primo contiene le classi di accesso alla base di dati relative all'entità forti descritte in precedenza; i DCS invece vengono direttamente invocati dallo strato controller. Questo approccio diverso dai DAO è particolarmente adatto nei casi in cui vi siano molte interrogazioni che coinvolgono più di un'entità forte. I DCS quindi esportano funzionalità non localizzabili in nessuna classe di dominio. Infine il Connection Manager contiene le funzioni fondamentali per la gestione delle connessioni alla base di dati; 252

253 Utility: Le classi utility saranno tutte quelle classi che non rientrano in nessuna delle categorie precedentemente descritte, ma contengono proprio funzionalità necessarie al corretto svolgimento dell'applicazione. Ad esempio conterrà le classi che definiranno nuove eccezioni che verranno lanciate dall'applicazione e catturate dallo strato controller. Un'altra scelta molto importante che abbiamo fatto è stata quella di inserire in utility una classe amministratore la quale non rientra nel dominio di interesse da manipolare, ma comunque è necessaria per incapsulare le informazioni sull'amministratore di sistema della nostra applicazione. Infine in utility saranno presenti altre classi di supporto per l'applicazione Design Model Il Design Model rappresenta il disegno di dettaglio dell'architettura software ed è composto da un diagramma delle classi completo di metodi che riporta tutte le classi individuate per l'implementazione del sistema. È presentato in seguito per semplicità e chiarezza di visualizzazione diviso per package. Successivamente, per evidenziare le dipendenze, le associazioni e la cooperazione per l'implementazione delle funzionalità, mostreremo i Design Model (senza metodi) suddivisi per caso d'uso e successivamente la collezione dei Sequence Diagram che illustreranno proprio come le classi collaborano durante l'evoluzione temporale dell'applicazione. Nota I diagrammi che mostreremo sono stati dapprima fatti partendo dal Class Diagram di analisi, creando quindi l'impostazione di massima dello sviluppo ed in seguito sono stati raffinati iterativamente introducendo i dettagli fuoriusciti durante l'implementazione. Quindi tali diagrammi sono la documentazione definitiva del codice finale sviluppato. 253

254 Servlets 254

255 Controller 255

256 Domain Classes 256

257 Persistence Classes Utility 257

258 4.5.5 Responsabilità delle associazioni Associazione Calciatore GiornataCampionatoReale disputa si no Associazione Calciatore Fantasquadra formazione si no rosa si no offerta si no Associazione Allenatore Fantasquadra allena si si Associazione Allenatore Lega presidente della lega no si Associazione Lega Fantasquadra asta a rialzo si no classifica si si Associazione Fantasquadra casa Fantasquadra ospite partita si si Design Model e Sequence Diagram suddivisi per Use Case Qui di seguito verranno mostrati i Design Model (senza metodi) e i relativi Sequence Diagram suddivisi per caso d'uso che evidenzieranno le dipendenze e le associazioni tra le varie classi che lo compongono, necessarie per la corretta implementazione del caso d'uso in questione. 258

259 Design Model e Sequence Diagram: registrazione al sistema (UC-1) 259

260 Design Model e Sequence Diagram: consultazione delle rose delle squadre iscritte (UC-2) 26

261 Design Model e Sequence Diagram: consultazione informazioni sulla lega (UC-3) 261

262 Design Model e Sequence Diagram: consultazione statistiche (UC-4) 262

263 Design Model e Sequence Diagram: consultazione risultati (UC-5) Da questo caso d'uso sono stati generati due Design Model e due relativi Sequence Diagram poiché l'use case consultazione risultati nel suo scenario principale di successo prevede due tipi di interazione differenti: consultazione calendario e consultazione classifica Design Model e Sequence Diagram: consultazione calendario 263

264 Design Model e Sequence Diagram: consultazione classifica 264

265 Design Model e Sequence Diagram: partecipazione al calciomercato durante la stagione (UC-6) 265

266 Design Model e Sequence Diagram: creazione rosa modalità asta a rialzo (UC-8) Per semplicità di disegno abbiamo supposto che il partecipante all'asta sia uno solo e che stia facendo l'asta per un portiere. Tuttavia abbiamo mostrato tutte le classi coinvolte nella funzionalità. 266

267 Design Model e Sequence Diagram: creazione rosa modalità asta a busta chiusa (UC-9) 267

268 Design Model e Sequence Diagram: login (UC-1) 268

269 Design Model e Sequence Diagram: scelta formazione senza l'ausilio del sistema (UC-12) 269

270 Design Model e Sequence Diagram: scelta formazione con l'ausilio del sistema (UC-13) 27

271 Design Model e Sequence Diagram: creazione della lega modalità asta a rialzo (UC-18) 271

272 Design Model e Sequence Diagram: gestione lega (UC-19) Da questo caso d'uso sono stati generati due Design Model e due relativi Sequence Diagram, poiché l'use case gestione lega nel suo scenario principale di successo prevede due tipi di interazione differenti: inserimento voti e calcolo dei risultati Design Model e Sequence Diagram: inserimento voti 272

273 Design Model e Sequence Diagram: calcolo dei risultati 273

274 Design Model e Sequence Diagram: modifica lista calciatori (UC-2) Da questo caso d'uso sono stati generati due Design Model e due relativi Sequence Diagram poiché l'use case modifica lista calciatori nel suo scenario principale di successo prevede due tipi di interazione differenti: modifica calciatori e inserimento calciatori Design Model e Sequence Diagram: modifica calciatori 274

275 275

276 Design Model e Sequence Diagram: inserimento calciatori 276

277 4.6 Conclusioni dell'unità La realizzazione del disegno di sistema è stata molto importante per progettare tutta l'architettura dell'applicazione prima di iniziare la fase di implementazione. Tutto ciò è stato corredato da molti diagrammi UML che descrivono appunto il disegno del sistema della nostra applicazione. La realizzazione di tali diagrammi e i conseguenti commenti ha richiesto molto tempo di lavoro al gruppo, anche se sicuramente ci ha permesso di apprendere nuove cose sul linguaggio UML non note prima. In quesa fase abbiamo anche imparato ed applicato il design pattern di sviluppo DAO/MVC da noi molto apprezzato per le qualità già descritte in precedenza che ci ha permesso quindi di progettare il dispiegamento dei vari moduli software in maniera organica e chiara. 277

278 5. Implementazione 5.1 Introduzione Scopo dell'unità Lo scopo di questa unità è quello di riportare i dettagli sulla fase di implementazione del sistema; conterrà quindi i riferimenti e gli esempi delle regole adottate per la stesura del codice da noi sviluppato. Inoltre verranno evidenziate le differenze introdotte rispetto a quanto documentato nelle fase di analisi e prototipazione. Per una dettagliata spiegazione e documentazione del codice è disponibile la documentazione javadoc da noi creata durante l'implementazione. 278

279 5.2 Regole adottate per la stesura del codice L'obbiettivo principale nella stesura del codice, oltre ovviamente al corretto sviluppo delle funzionalità previste, è stato quello di ottenere un codice pulito, leggibile ed elegante. Ciò è un obiettivo importante sia per noi durante e dopo la fase di sviluppo, sia per future manutenzioni. Le regole principali che abbiamo adottato durante l'implementazione sono state le seguenti: Le parentesi graffe del codice sono sempre aperte e chiuse con il metodo a linea nuova in modo tale da permettere immediatamente il riconoscimento dei vari blocchi di codice; Esempio: public void prova() { if (...) {... } else {... } } I parametri formali dei metodi sono chiamati con l'iniziale del nome che in genere hanno (es. nome è n) mentre per chiarezza i parametri attuali e le variabili con nome completo. 279

280 5.3 Differenze introdotte rispetto alla fase di analisi e di prototipazione Durante la fase di implementazione naturalmente sono stati riscontrati alcuni problemi o comunque sono state prese delle decisioni che hanno portato ad alcuni cambiamenti rispetto agli obiettivi dichiarati nella fase di analisi e prototipazione. In questa sezione quindi elencheremo le principali novità introdotte: Partecipazione al calciomercato durante la stagione (UC-6): durante la fase di scelta del calciatore da comprare non c'è la possibilità di ricerca avanzata di tale calciatore ma il sistema mostrerà direttamente la lista completa dei calciatori acquistabili dalla fantasqudra in questione rispettando ovviamente i vincoli di ruolo e di soldi; Scelta formazione con l'ausilio del sistema (UC-13): la scelta del parametro di selezione dei calciatori migliori si baserà su un numero minore di parametri ovvero: gol fatti, media voto e fantamedia. Inoltre nel passo finale prima di confermare la formazione consigliata dal sistema non si può modificare nuovamente la lista dei calciatori ma si può solo o confermare la formazione consigliata oppure annullare l'operazione; Gestione lega (UC-19): abbiamo inserito una nuova funzionalità per l'amministratore non prevista in fase di analisi ma necessaria al corretto svolgimento del gioco. Tale funzionalità consiste nell'inserimento della scadenze temporali per la creazione delle formazioni ogni giornata e il conseguente blocco del calciomercato in tale periodo. Inoltre nello stesso caso d'uso dopo aver inserito i voti per un determinato ruolo e giornata, il sistema non dà immediatamente il riepilogo dei dati poiché abbiamo notato che tale possibilità è già fornita in altre sezioni del sito come: consultazione classifica, consultazione calendario, ecc.; 28

281 Modifica lista calciatori (UC-2): per maggiore usabilità abbiamo spezzato le funzionalità modifica ed eliminazione dei calciatori dalla possibilità di inserirne di nuovi così da rendere più agevole il lavoro dell'amministratore. Inoltre anche per motivi di tempo, ovvero di avvicinamento alla scadenza della data prevista per il rilascio e alla data dell'esame abbiamo portato le seguenti limitazioni al sistema progettato: Durante l'implementazione e durante la successiva ispezione del codice abbiamo notato alcuni bug nella funzionalità documentata nel caso d'uso UC-8 modalità asta rialzo. Purtroppo data la mancanza di tempo a disposizione siamo passati alle fasi successive e al raffinamento della documentazione per arrivare all'esame con tutti i prodotti terminati. Sicuramente però nel prossimo futuro abbiamo intenzione di rivedere tale funzionalità e correggere i bug per renderla completamente funzionante; tuttavia in questo momento non sono stati riscontrati bug quando i partecipanti all'asta sono uno oppure due; Sempre per motivi di tempo non abbiamo finito di implementare la possibilità di inserire e visualizzare le foto dei calciatori nella base di dati, anche se la struttura di tale funzionalità è stata realizzata ovvero la base di dati è stata progettata per garantire questa possibilità come anche il codice Java sia a livello di presentazione (Servlet e JSP), sia a livello logico (Controller e Dominio). Anche in questo caso nel prossimo futuro abbiamo intenzione di completare anche questa funzionalità. 281

282 5.4 Conclusioni dell'unità L'implementazione, ovvero l'aspetto più pratico del nostro processo di sviluppo, è stata una fase molto bella e interessante per l'intero gruppo che ci ha permesso di conoscere ed utilizzare tecnologie mai studiate in precedenza come le Servlet e le JSP e di approfondire in una maniera esaustiva il linguaggio HTML; inoltre abbiamo imparato altre tecnologie associate ad esso come javascript e ajax. Per quanto riguarda la tempistica sono stati rispettati a pieno i vincoli temporali definiti in fase di pianificazione. Ovviamente abbiamo riscontrato diversi problemi durante l'implementazione soprattutto con le nuove tecnologia sopra menzionate, anche se tutto sommato abbiamo superato tali difficoltà abbastanza semplicemente. 282

283 6. Manuale d'installazione e d'uso 6.1 Installazione degli stumenti necessari al funzionamento Nel presente manuale verrà illustrata la procedura di installazione di tutti gli strumenti necessari al corretto utilizzo dell'applicazione Fantacalcio On-Line. Dato che si tratta di un'applicazione web la piattaforma che la ospiterà potrà essere una macchina Windows o Unix purchè sia dotata del web server Tomcat, della macchina virtuale Java e del DMBS MySQL. Si suppone che l'installatore del sistema sia un utente familiare con le applicazioni web e con le procedure di installazione guidate Installazione della Java Virtual Machine Per il corretto utilizzo dell'applicazione Fantacalcio On-Line è necessario aver installato la Java Virtual Machine; questa è reperibile dal sito web dove è possibile scaricarla gratuitamente. Per installarla sarà sufficiente seguire la semplice procedura d'installazione guidata Installazione del DBMS MySQL 5. Per il corretto utilizzo dell'applicazione Fantacalcio On-Line è necessario aver installato un DBMS relazionale accedibile tramite l'api JDBC. In questo manuale si farà riferimento al DBMS della Sun: MySQL versione 5. scaricabile gratuitamente dal sito web Per installarlo correttamente sarà necessario seguire l'installazione guidata e durante tale operazione inserire come password di root: oronzocana Configurazione MySQL Server E' inoltre necessario configurare MySQL Server in modo tale da renderlo accessibile anche da remoto. 283

284 6.1.3 Creazione e popolamento Per il corretto utilizzo dell'applicazione Fantacalcio On-Line (solo ai fini dell'esame) è necessario eseguire lo script di creazione e popolamento che è presente nella documentazione. In ambiente Windows per eseguire tale script basta aprire il MySQL command line client ed eseguire il seguente comando: source cdrom/script/creazione_della_base_di_dati.sql. Per quanto riguarda l'ambiente Unix la procedure è simile ed è facile reperire gratuitamente sul web guide che spiegano tutto ciò Installazione Tomcat Per il corretto utilizzo dell applicazione Fantacalcio On-Line è necessario aver installato il web server Tomcat E possibile scaricare l ultima versione di Tomcat dal sito Per installare Tomcat lanciare la procedura di installazione e seguire le seguenti istruzioni: Configurazione Tomcat 6..14; Copiare la directory Fantacalcio On-Line dentro la cartella <Tomcat root>/webapps dove con <Tomcat root> viene indicata la cartella in cui è stato installato Tomcat (normalmente in Windows è C:\Programmi\Apache Software Foundation\ TomCat 6.\); Riavviare Tomcat

285 6.2 Manuale d'uso Una volta giunti all'home page del sito si noteranno subito dall'interfaccia grafica le varie sezioni a cui è possibile accedere. In seguito si suddividerà il manuale d'uso per privilegi di accesso ovvero: semplice visitatore, allenatore e amministratore. In futuro non si elencheranno tutti i passi necessari per l'espletamento delle funzionalità poiché si ritiene che l'interfaccia grafica del sito sia molto user-friendly e intuitiva tale da permettere appunto una facile interazione Funzionalità del visitatore Il visitatore potrà accedere a tutte quelle funzioni che non richiedono una registrazione al sistema oppure registrarsi al sistema e quindi diventare allenatore ed accedere a tutte le funzionalità di tale ruolo. Le funzionalità che non richiedono una registrazione al sistema sono orientate alla consultazione di informazioni presenti nel sistema come ad esempio: statistiche sui calciatori, informazioni sulle leghe in corso, ecc. La funzionalità di registrazione al sistema prevede l'inserimento dei dati personali come: username, password, , nome della fantasquadra che si vuole allenare, nome del fantastadio e lega a cui si vuole partecipare. E' inoltre possibile diventare presidente di una nuova lega dove verrà richiesto di inserire oltre ai dati personali anche: il nome della nuova lega, il numero dei partecipanti, la tipologia dell'asta e le scadenze temporali relative alla tipologia d'asta scelta in precedenza. 285

286 6.2.2 Funzionalità dell'allenatore L'allenatore, oltre alle funzionalità che ha il visitatore, una volta loggato, può accedere alle funzionalità più importanti dell'applicazione Fantacalcio On-Line. Innanzitutto può creare la propria rosa partecipando all'asta iniziale. Poi durante la stagione attraverso la funzionalità del calciomercato ha la possibilità di modificare la propria rosa vendendo e comprando calciatori non in possesso da nessun'altra fantasquadra della stessa lega. Un'altra funzionalità importante dell'allenatore è quella di schierare ogni giornata la propria formazione Funzionalità dell'amministratore L'amministratore è la figura fondamentale del sistema; egli dovrà conoscere perfettamente le regole di funzionamento dell'applicazione poiché ha il compito di gestire le operazioni fondamentali come: aggiornamento dei risultati, modifica dei calciatori nella base di dati, inserimento di nuovi calciatori nella base di dati e impostazione delle scadenze temporali delle formazioni. Per accedere alle proprie funzioni dovrà necessariamente loggarsi inserendo come username: admin e password: admin. Successivamente potrà cambiare a suo piacimento la password di default. Qui di seguito verranno descritte le procedure per eseguire le funzionalità menzionate in precedenza: Aggiornamento dei risultati: Dapprima dovrà selezionare il ruolo e la giornata desiderati ed inserire tutti i dati relativi a tali valori. Al termine dell'operazione dovrà cliccare il pulsante salva per rendere permanenti le modifiche apportate. Successivamente, dopo aver salvato tutti i ruoli di una giornata, dovrà cliccare sul pulsante calcola per completare l'operazione che aggiornerà tutto il sistema. In caso siano stati commessi degli errori e la giornata è stata già calcolata basta apportare le dovute modifiche al ruolo e cliccare nuovamente sul pulsante salva. 286

287 Successivamente cliccare sul pulsante calcola in modo da aggiornare il sistema in base ai cambiamenti apportati; Modifica dei calciatori nella base di dati: Dapprima dovrà selezionare il ruolo dei calciatori per cui vuole apportare delle modifiche. Al termine dell'operazione cliccare sul pulsante salva per rendere permanenti le modifiche apportate; Inserimento di nuovi calciatori nella base di dati: Per inserire un nuovo calciatore nella base di dati basta compilare i campi nella pagina specifica e cliccare sul pulsante inserisci nuovo; Impostazione delle scadenze temporali delle formazioni: Per impostare le scadenze temporali delle formazioni in una specifica giornata basta compilare i campi nella pagina specifica e cliccare sul pulsante invia. 287

288 7. Piano dei test 7.1 Introduzione Scopo dell'unità Lo scopo di questa unità è quello di riportare il piano della fase di test e la conseguente verifica della correttezza di alcuni moduli del software sviluppato. In prima istanza verrà mostrato il piano di verifica comprendente le strategie adottate per verificare il corretto funzionamento dei vari moduli. In seguito verrà mostrato il rapporto dei test che documenterà la realizzazione ed esecuzione dei test. Nota I test da noi sviluppati necessitano dell'utilizzo di un apposito script di popolamento della base di dati che verrà fornito insieme alla documentazione dell'applicazione. 288

289 7.2 Strategia dei test Il software è stato sviluppato garantendo la modularità e il disaccoppiamento tra i vari moduli e quindi risulterà facilmente testabile. In prima istanza i test dai noi eseguiti sono stati quelli di ispezione del codice e walkthrought e come tali non possono essere riportati in questo documento poiché sono stati eseguiti durante l'implementazione di ogni modulo o comunque nel suo immediato completamento. Il nostro piano di verifica prevede l'esecuzione di test di unità su singoli moduli e successivamente test di accettazione che si baseranno principalmente sul rispetto delle specifiche dei casi d'uso elencati in fase di analisi dei requisiti. Una scelta importante che abbiamo fatto in questa fase è il fatto che colui che eseguirà il test di un modulo non sarà colui che l'ha sviluppato Test di unità In questa sezione elencheremo i metodi che sottoporremo ai test e conseguentemente specificheremo quale modalità (white box o black box) di testing effettueremo su tale modulo. Per i test white box abbiamo scelto metodi con complessità ciclomatica abbastanza elevata poiché sono senz'altro adatti al testing di questo genere, mentre per i test black box abbiamo scelto metodi non molto complessi dal punto di vista implementativo, ma con un input e output abbastanza variegati poichè sono particolarmente adatti al testing di questo genere White Box ServletLogin: metodo dopost ServletAcquisisciRose: metodo dopost DAOAllenatore: metodo verifica 289

290 Black Box AssociazioneDisputa: metodo calcolafantavoto ControllerCalciatore: metodo acquisiscicalciatoriperastarialzo DAOAllenatore: metodo verifica DAOPortiere: metodoinserimentoportiere Test di accettazione In questa sezione elencheremo i casi d'uso che sottoporremo ai test di accettazione. Per questo tipo di test abbiamo scelto i casi d'uso che riteniamo più idonei e soprattutto che utilizzano moduli non testati durante la fase di testing di unità in modo da coprire più codice sviluppato possibile. I casi d'uso che testeremo sono: regitrazione al sistema (UC-1) scelta formazione senza l'ausilio del sistema (UC-12) 29

291 7.3 Rapporto dei test Test di unità In questa sezione verranno mostrati i risultati dei test di unità divisi in white box e black box White Box Qui di seguito saranno riportati in dettaglio i risultati dei test sui vari metodi utilizzando la tecnica di testing white box ServletLogin: metodo dopost Autore Autore Data Paluci Marco 28/11/28 Codice public void dopost(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession session = request.getsession(true); String username = request.getparameter("username"); String password = request.getparameter("password"); String address; ControllerAllenatore.verificaScadenzaFormazioni("pippo",1); (A) if (username.equalsignorecase("admin")) { String ris = Amministratore.login(username,password); (B) if (ris.equals("ok")) { (C) if (session.getattribute("username") == null) { (D) session.setattribute("username",username); address = "logadmin.jsp"; } (E) else { request.setattribute("risposta","sei già loggato"); address = "index.jsp"; } } else { request.setattribute("risposta",ris); address = "index.jsp"; } (F) RequestDispatcher dispatcher = request.getrequestdispatcher(address); dispatcher.forward(request,response); } else { String ris = ControllerAllenatore.login(username,password); (G) if (ris.equals("login errato")) { (H) request.setattribute("risposta",ris); address = "index.jsp"; } (I) else if (ris.equals( Il server attualmente non funziona correttamente. Riprovare più tardi )) { (L) request.setattribute("risposta",ris); address = "index.jsp"; } 291

292 else { (M) if (session.getattribute("username") == null) { int i = ris.indexof("$",); String fantasquadra = ris.substring(,i); int j = ris.indexof("$",i+1); String fantastadio = ris.substring(i+1,j); i = ris.indexof("$",j+1); int fantamilioni = Integer.parseInt(ris.substring(j+1,i)); j = ris.indexof("$",i+1); String lega = ris.substring(i+1,j); String modalita = ris.substring(j+1,ris.length()); session.setattribute("username",username); session.setattribute("squadra",fantasquadra); session.setattribute("stadio",fantastadio); session.setattribute("fantamilioni",fantamilioni); session.setattribute("lega",lega); session.setattribute("modalita",modalita); address = "logallenatore.jsp"; } else { if (username.equalsignorecase((string) session.getattribute("username"))) { request.setattribute("risposta","sei già loggato"); address = "index.jsp"; } else { request.setattribute("risposta","non puoi loggarti contemporaneamente con più username diversi"); address = "index.jsp"; } } (N) (O) (P) } RequestDispatcher dispatcher = request.getrequestdispatcher(address); dispatcher.forward(request,response); (FINE) } } 292

293 Albero Scelta dei cammini C1: A-B-C-D-FINE C2: A-B-C-E-FINE C3: A-B-F-FINE C4: A-G-H-FINE C5: A-G-I-M-N-FINE C6: A-G-I-M-O-P-FINE C7: A-G-I-L-FINE C8: A-G-I-M-O-FINE 293

294 Matrice dei cammini scelti C C C C C C C C La matrice ha rango pari a 8 quindi è una base. Risultati del test TestID Input Output atteso Risultato T1 username= admin, Amministratore.login(...)= Ok, session.getattribute( Username )=null. logadmin.jsp Ok T2 username= admin, Amministratore.login(...)= Ok, session.getattribute( Username )!=null. Messaggio( Sei già loggato ) Ok T3 username= admin, Amministratore.login(...)!= Ok Messaggio( Il server attualmente non funziona correttamente. Riprovare più tardi ) oppure Messaggio( Login errato ) Ok T4 username!= admin, ris= Login errato. Messaggio( Login errato ) Ok T5 username!= admin, session.getattribute( Username )==null. logallenatore.jsp Ok T6 username!= admin, session.getattribute( Username )!=null Messaggio( Sei già loggato ); Ok T7 username!= admin, ris= Il server attualmente non funziona correttamente. Riprovare più tardi. Messaggio( Il server attualmente non funziona correttamente. Riprovare più tardi ) Ok T8 username!= admin, username!=session.getattribute( Username ). Messaggio( Non puoi loggarti contemporaneamente con più username diversi ) Ok 294

295 ServletAcquisisciRose: metodo dopost Autore Autore Data Malacario Mirko 28/11/28 Codice public void dopost(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession session = request.getsession(true); String squadra = request.getparameter("rose"); LinkedList<Calciatore> rosa = ControllerCalciatore.acquisisciCalciatoriInRosa(squadra); (A) if (rosa!= null) { request.setattribute("numero",rosa.size()); (B) for (int i = ; i < rosa.size(); i++) { (C) request.setattribute("calciatore" + i,rosa.get(i)); } } else request.setattribute("risposta","il server attualmente non funziona correttamente. Riprovare più tardi"); RequestDispatcher dispatcher; (D) if (session.getattribute("username") == null) { (E) dispatcher = request.getrequestdispatcher("rosa_squadre_visitatore.jsp"); } else dispatcher = request.getrequestdispatcher("rosa_squadre_allenatore.jsp"); (FINE) dispatcher.forward(request,response); } Albero 295

296 Scelta dei cammini C1: A-B-C-B-D-FINE C2: A-B-D-FINE C3: A-B-D-E-FINE C4: A-D-E-FINE Matrice dei cammini scelti C C C C La matrice ha rango pari a 4 quindi è una base. Risultati del test TestID Input Output atteso Risultato T9 rosa!=null, rosa.size()>, session.getattribute( Username )!=null session.getattribute( Lega_Scelta )!=null rosa_squadre_allenatore.jsp Ok T1 rosa!=null, rosa.size()==, session.getattribute( Username )!=null rosa_squadre_allenatore.jsp Ok T11 rosa!=null, rosa.size()==, session.getattribute( Username )==null rosa_squadre_visitatore.jsp Ok T12 rosa==null, session.getattribute( Username )==null Messaggio( Il server attualmente non funziona correttamente. Riprovare più tardi ) Ok Osservazione Per effettuare il test T12 è stato necessario modificare temporaneamente una qualsiasi query del metodo acquisiscicalciatoriinrosa della classe DCSCalciatore poiché questo è l'unico metodo per fare eseguire il percorso d'esecuzione da testare. 296

297 DAOAllenatore: metodo verifica Autore Autore Data Previtali Fabio 29/11/28 Codice public static void verifica(allenatore a) throws ApplicationException { try { (A) conn = ConnectionManager.getConnection(); (B) stmt = conn.createstatement(); (C) if (!a.getusername().contains("$")) { (D) rs = stmt.executequery("select * From Allenatore Where username = '" + a.getusername().replace("'","''") + "';"); (E) if (rs.next()) { (F) throw new ApplicationException("Username già presente"); } } else { (G) throw new ApplicationException("L'username non può contenere il carattere $"); } } catch (ClassNotFoundException ex) { (H) throw new ApplicationException("Il server attualmente non funziona correttamente. Riprovare più tardi"); } catch (SQLException ex) { (I) throw new ApplicationException("Il server attualmente non funziona correttamente. Riprovare più tardi"); } finally { (L) if (conn!= null) { try { (M) stmt.close(); (N) conn.close(); } catch (SQLException ex) { (O) throw new ApplicationException("Il server attualmente non funziona correttamente. Riprovare più tardi"); } } } (FINE) } 297

298 Albero Scelta dei cammini C1: A-B-C-D-E-F-L-M-N-FINE C2: A-B-C-D-E-F-L-M-O-FINE C3: A-B-C-D-E-F-L-M-N-O-FINE C4: A-H-L-FINE C5: A-B-C-G-L-M-N-FINE C6: A-B-I-L-M-N-FINE C7: A-B-C-D-I-L-M-N-FINE C8: A-B-C-D-E-L-M-N-FINE 298

299 Matrice dei cammini scelti C C C C C C C C La matrice ha rango pari a 8 quindi è una base. Però è inferiore alla complessità ciclomatica che è pari a 9, questo poiché non tutti i cammini sono effettivamente possibili. 299

300 Risultati del test TestID Input Output atteso Risultato T13 conn!=null stmt!=null a.getusername().contains("$")==false rs!=null rs.next()==true Messaggio( Username già presente ) Ok T14 conn!=null stmt!=null a.getusername().contains("$")==false rs!=null rs.next()==true stmt.close() dà errore Messaggio( Il server attualmente non funziona correttamente. Riprovare più tardi ) Non testabile T15 conn!=null stmt!=null a.getusername().contains("$")==false rs!=null rs.next()==true conn.close() dà errore Messaggio( Il server attualmente non funziona correttamente. Riprovare più tardi ) Non testabile T16 conn==null Messaggio( Il server attualmente non funziona correttamente. Riprovare più tardi ) Ok T17 conn!=null stmt!=null a.getusername().contains("$")==true Messaggio( L'username non può contenere il carattere $ ) Ok T18 conn!=null stmt==null Messaggio( Il server attualmente non funziona correttamente. Riprovare più tardi ) Ok T19 conn!=null stmt!=null rs==null Messaggio( Il server attualmente non funziona correttamente. Riprovare più tardi ) Ok T2 conn!=null stmt!=null a.getusername().contains("$")==false rs!=null rs.next()==false Ok Ok Osservazione Per effettuare il test T18 è stato necessario non avviare MySQL Server poiché questo è l'unico metodo per fare eseguire il percorso d'esecuzione da testare. Per effettuare il test T19 è stato necessario modificare temporaneamente una qualsiasi query del metodo verifica della classe DAOAllenatore poiché questo è l'unico metodo per fare eseguire il percorso d'esecuzione da testare. 3

301 Black Box Qui di seguito saranno riportati in dettaglio i risultati dei test sui vari metodi utilizzando la tecnica di testing black box. Nota Nei casi di test che abbiamo eseguito sono stati inclusi anche i controlli sui valori estremi quando ciò era necessario. Questo è verificabile dai valori di input utilizzati in quei casi di test AssociazioneDisputa: metodo calcolafantavoto Autore Autore Data Malacario Mirko 2/12/28 Segnatura public float calcolafantavoto(int g_f, int g_s, int as, boolean am, boolean e, float v, int r_p, int r_s) throws ApplicationException 31

302 Classi di equivalenza Classi Input Valida / Non valida C1 g_f>=, g_s>=, as>=, v>=, r_p>=, r_s>= Valida C2 g_f<, g_s>=, as>=, v>=, r_p>=, r_s>= Non valida C3 g_f>=, g_s<, as>=, v>=, r_p>=, r_s>= Non valida C4 g_f>=, g_s>=, as<, v>=, r_p>=, r_s>= Non valida C5 g_f>=, g_s>=, as>=, v<, r_p>=, r_s>= Non valida C6 g_f>=, g_s>=, as>=, v>1, r_p>=, r_s>= Non valida C7 g_f>=, g_s>=, as>=, (v!= e v!=.5 e v!=1 e v!=1.5 e v!=2 e v!=2.5 e v!=3 e v!=3.5 e v!=4 e v!=4.5 e v!=5 e v!=5.5 e v! =6 e v!=6.5 e v!=7 e v!=7.5 e v!=8 e v!=8.5 e v!=9 e v!=9.5 e v!=1), v>=, v<=1, r_p>=,r_s>= Non valida C8 g_f>=, g_s>=, as>=, v>=, r_p<, r_s>= Non valida C9 g_f>=, g_s>=, as>=, v>=, r_p>=, r_s< Non valida C1 g_f>=, g_s>=, as>=, am==true, v>=, r_p>=, r_s>= Valida C11 g_f>=, g_s>=, as>=, e==true, v>=, r_p>=, r_s>= Valida C12 g_f>=, g_s>=, as>=, am==true, e==true, v>=, r_p>=, r_s>= Valida Risultati del test TestId Input Output atteso Risultato T21 copre la classe C1 con input: g_f=2, g_s=, as=3, v=9, r_p=, r_s= 18 Ok T22 copre la classe C2 con input: g_f=-1, g_s=, as=3, v=9, r_p=, r_s= Messaggio( Valori in input non corretti ) Ok T23 copre la classe C3 con input: g_f=2, g_s=-1, as=3, v=9, r_p=, r_s= Messaggio( Valori in input non corretti ) Ok T24 copre la classe C4 con input: g_f=2, g_s=, as=-1, v=9, r_p=, r_s= Messaggio( Valori in input non corretti ) Ok T25 copre la classe C5 con input: g_f=2, g_s=, as=3, v=-.1, r_p=, r_s= Messaggio( Valori in input non corretti ) Ok T26 copre la classe C6 con input: g_f=2, g_s=, as=3, v=1.1, r_p=, r_s= Messaggio( Valori in input non corretti ) Ok T27 copre la classe C7 con input: g_f=2, g_s=, as=3, v=6.1, r_p=, r_s= Messaggio( Valori in input non corretti ) Ok T28 copre la classe C8 con input: g_f=2, g_s=, as=3, v=9, r_p=-1, r_s= Messaggio( Valori in input non corretti ) Ok T29 copre la classe C9 con input: g_f=2, g_s=, as=3, v=9, r_p=, r_s=-1 Messaggio( Valori in input non corretti ) Ok T3 copre la classe C1 con input: g_f=2, g_s=, as=3, am=true, v=9, r_p=, 17.5 Ok 32

303 r_s= T31 copre la classe C11 con input: g_f=2, g_s=, as=3, e=true, v=9, r_p=, r_s= 17 Ok T32 copre la classe C11 con input: g_f=2, g_s=, as=3, am=true, e=true, v=9, r_p=, r_s= 16,5 Ok ControllerCalciatore: metodo acquisiscicalciatoriperastarialzo Autore Autore Data Previtali Fabio 2/12/28 Segnatura public static LinkedList<Calciatore> acquisiscicalciatoriperastarialzo(string l,string r) Classi di equivalenza Classi Input Valida / Non valida C1 l è presente nella base di dati, r è Portiere o Difensore o Centrocampista o Attaccante Valida C2 l è presente nella base di dati, r non è un ruolo possibile Non valida C3 l non è presente nella base di dati, r è Portiere o Difensore o Centrocampista o Attaccante Non valida Risultati del test TestId Input Output atteso Risultato T33 copre la classe C1 con input: l= Lega1, r= Portiere La lista restituita non è null Ok T34 copre la classe C2 con input: l= Lega1, r= Libero La lista restituita è vuota Ok copre la classe C3 con input: l= Legan, r= Portiere La lista restituita contiene tutti i Portieri presenti nella base di dati Ok T35 33

304 DAOAllenatore: metodo verifica Autore Autore Data Paluci Marco 4/12/28 Segnatura public static void verifica(allenatore a) throws ApplicationException Classi di equivalenza Classi Input Valida / Non valida C1 a è null Non valida C2 a.getusername() è presente nella base di dati Non valida C3 a.getusername() non è presente nella base di dati Valida Risultati del test TestID Input Output atteso Risultato T36 copre la classe C1 con input: a=null NullPointerException Ok T37 copre la classe C2 con input: a.getusername()= Fabio Messaggio( Username già presente ) Ok T38 copre la classe C3 con input: a.getusername()= Pippo Ok Ok 34

305 DAOPortiere: metodo inserimentoportiere Autore Autore Data Previtali Fabio 4/12/28 Segnatura public static void inserisciportiere(portiere p) throws ApplicationException Classi di equivalenza Classi Input Valida / Non valida C1 p è null Non valida C2 p non è null Valida Risultati del test TestId Input Output atteso Risultato T39 copre la classe C1 con input: p=null NullPointerException Ok T4 copre la classe C2 con input: p!=null Ok Ok 35

306 7.3.2 Test di accettazione Qui di seguito saranno riportati in dettaglio i risultati dei test sui vari metodi utilizzando la tecnica di testing di accettazione registrazione al sistema (UC-1) Autore Autore Data Paluci Marco 9/12/28 Sequence Diagram 36

307 Descrizione di tutti i passi previsti dal Sequence Diagram Passo Azione Risultato atteso Esito 1 Cliccare sul link qui Visualizzazione della pagina registrazione.jsp Ok 2a Riempire i campi del form in modo corretto Visualizzazione della pagina conferma.jsp e conferma i dati Ok 2b Inserire un username già presente e conferma i dati Messaggio( Username già presente ) Ok 2c Inserire una squadra già presente e conferma i dati Messaggio( Nome squadra già presente ) Ok 2d Lunghezza minima username errata Messaggio di errore Javascript Ok 2e Lunghezza minima password errata Messaggio di errore Javascript Ok 2f Password e conferma password non coincidenti Messaggio di errore Javascript Ok 2g Formato non valido Messaggio di errore Javascript Ok 2h Lega non scelta Messaggio di errore Javascript Ok 2i Inserire una lega completa e conferma i dati Messaggio( Siamo spiacenti, la lega scelta è completa ) Ok 3a Conferma dei dati del riepilogo Visualizzazione della pagina reindirizza_registrazione.html Ok 3b Torno indietro per modificare i dati Visualizzazione della pagina registrazione.jsp con i dati inseriti in precedenza (tranne la password e la lega per motivi di sicurezza) Ok 3c Annullamento della registrazione Visualizzazione della pagina index.html Ok Casi di test Passo 1: Cliccare sul collegamento con il nome qui nella pagina index.jsp Passo 2a: Username = Paperino Password = paperino Conferma Password = paperino = paperino@tiscali.it Squadra = Fiorentina Team Stadio = Artemio Franchi Lega = Lega2 37

308 Passo 2b: Passo 2c: Username = Paperino Password = paperino Conferma Password = paperino = paperino@tiscali.it Squadra = Fiorentina Team Stadio = Artemio Franchi Lega = Lega2 Passo 2d: Username = Mirko Password = paperino Conferma Password = paperino = paperino@tiscali.it Squadra = Cagliari Team Stadio = Artemio Franchi Lega = Lega2 Username = Pa Password = paperino Conferma Password = paperino = paperino@tiscali.it Squadra = Fiorentina Team Stadio = Artemio Franchi Lega = Lega2 Passo 2e: Username = Paperino Password = pa Conferma Password = pa = paperino@tiscali.it Squadra = Fiorentina Team Stadio = Artemio Franchi Lega = Lega2 38

309 Passo 2f: Passo 2g: Username = Paperino Password = paperino Conferma Password = paperino = paperinotiscali.it Squadra = Fiorentina Team Stadio = Artemio Franchi Lega = Lega2 Passo 2h: Username = Paperino Password = paperino Conferma Password = paperin = paperino@tiscali.it Squadra = Fiorentina Team Stadio = Artemio Franchi Lega = Lega2 Username = Paperino Password = paperino Conferma Password = paperino = paperino@tiscali.it Squadra = Fiorentina Team Stadio = Artemio Franchi Lega = Scelta Lega Passo 2i: Username = Paperino Password = paperino Conferma Password = paperino = paperino@tiscali.it Squadra = Fiorentina Team Stadio = Artemio Franchi Lega = Lega1 39

310 Passo 3a: Conferma dei dati immessi Passo 3b: Cliccare sul pulsante indietro Passo 3c: Cliccare sul pulsante annulla scelta formazione senza l'ausilio del sistema (UC-12) Autore Autore Data Previtali Fabio 9/12/28 Sequence Diagram Descrizione di tutti i passi previsti dal Sequence Diagram Passo Azione Risultato atteso Esito 1a Riempire i campi del form in modo corretto e conferma i dati Visualizzazione della pagina riepilogo_formazione_manuale.jsp Ok 1b Nella formazione sono presenti almeno 2 calciatori uguali Messaggio di errore Javascript Ok 2a Conferma dei dati del riepilogo Visualizzazione della pagina reindirizza.html Ok 31

311 Passo 1a: Username = Marco Modulo = Portiere titolare = Bizzarri A. Difensore titolare = Alvarez P. Difensore titolare = Carboni E. Difensore titolare = Sabato R. Difensore titolare = Sardo G. Centrocampista titolare = Baiocco D. Centrocampista titolare = Biagianti M. Centrocampista titolare = Colucci G. Centrocampista titolare = Edusei M. Attaccante titolare = Dica N. Attaccante titolare = Delia M. Portiere riserva = Polito C. Difensore riserva = Stovini L. Difensore riserva = Silvestre M. Centrocampista riserva = Ledesma P. Centrocampista riserva = Izco M. Attaccante riserva = Martinez J. Attaccante riserva = Mascara G. Passo 1b: Username = Marco Modulo = Portiere titolare = Bizzarri A. Difensore titolare = Alvarez P. Difensore titolare = Alvarez P. Difensore titolare = Sabato R. Difensore titolare = Sardo G. Centrocampista titolare = Baiocco D. Centrocampista titolare = Biagianti M. Centrocampista titolare = Colucci G. Centrocampista titolare = Edusei M. Attaccante titolare = Dica N. Attaccante titolare = Delia M. Portiere riserva = Polito C. Difensore riserva = Stovini L. Difensore riserva = Silvestre M. Centrocampista riserva = Ledesma P. 311

312 Centrocampista riserva = Izco M. Attaccante riserva = Martinez J. Attaccante riserva = Mascara G. Passo 2a: Conferma dei dati immessi 312

313 7.4 Conclusioni dell'unità Questa fase dello sviluppo dell'applicazione è stata affrontata con molta curiosità ed entusiasmo da parte di tutto il gruppo poiché nelle applicazioni realizzate in precedenza nella nostra carriera universitaria non l'abbiamo mai praticata, utilizzando le tecniche principali dell'ingegneria del software. L'utilizzo dei case è stato molto semplice ed intuitivo grazie anche al supporto delle guide forniteci dai docenti del corso. 313

314 8. Conclusioni del progetto 8.1 Introduzione Scopo dell'unità In questa unità mostreremo le critiche con i relativi problemi riscontrati durante il processo adottato e l'assessment del lavoro svolto dal gruppo necessario a valutare lo sforzo effettivo e la produttività di ciascun membro e del gruppo. Inoltre presenteremo la valutazione della qualità delle stime ricavate, ovvero l'aderenza dei valori stimati ai valori effettivi. 314

315 8.2 Criticità e problemi riscontrati Il processo da noi adottato nello sviluppo dell'applicazione è stato apprezzato dal gruppo e di conseguenza non abbiamo criticità rilevanti da menzionare. Tuttavia abbiamo riscontrato dei problemi nel passaggio dalla fase di analisi alla fase di progettazione poichè la fase di analisi è durata più del previsto per diversi motivi. Innanzi tutto abbiamo avuto dei ritardi causati dalla inesperienza nel documentare gli Use Case Diagram secondo quanto richiesto ed inoltre tale fase coincideva con la sessione d'esami GiugnoLuglio nella quale tutto il gruppo è stato molto impegnato. Invece le fasi successive non hanno risentito di problemi di questo genere poichè avevamo terminato tutti gli esami e quindi potevamo dedicarci esclusivamente al progetto. 315

316 8.3 Assessment del lavoro svolto Qui di seguito mostreremo le tabelle compilate che rappresentano l'assessment del lavoro svolto ovvero i valori della produttività generale e personale ed il conseguente confronto con i valori stimati durante la fase di pianificazione; successivamente verrà fatta una critica sull'attendibilità della stima. Nota Il valore del numero di linee prodotte che verrà inserito nelle tabelle successive rappresenta il 55% delle linee di codice effettivamente realizzate, poichè viste le nostre regole di scrittura del codice stimiamo che circa il 45% di esse è suddiviso in documentazione javadoc e spazi vuoti utili a migliorare la leggibilità del codice stesso. Inoltre per il calcolo del valore delle LOC/GG e UFP/GG abbiamo considerato solo i giorni relativi alla fase di implementazione. Infine abbiamo deciso di non comprendere nella somma delle righe di codice totale quelle relative alla stesura del codice relativo ai test poichè non è parte integrante dell'applicazione. 316

317 8.3.1 Foglio di rilascio: generale 317

318 8.3.2 Foglio di rilascio: Malacario Mirko 318

319 8.3.3 Foglio di rilascio: Paluci Marco 319

ISSA EUROPE PTSOFTWARE 2.0

ISSA EUROPE PTSOFTWARE 2.0 MANUALE UTENTE ISSA EUROPE PTSOFTWARE 2.0 Versione 1.0-16062014 il presente documento è soggetto a modifiche Pag. 1/27 Versione 1.0-16062014 il presente documento è soggetto a modifiche Pag. 2/27 Informazioni

Dettagli

Regolamento. Sommario

Regolamento. Sommario Regolamento Sommario LE COMPETIZIONI... 2 TORNEO LIGA E PREMIER... 2 SERIE A (CAMPIONATO A 16 SQUADRE)... 2 CLASSIFICA A PUNTEGGIO... 2 CLASSIFICA FORMULA 1... 2 COPPA D ANDATA E COPPA DI RITORNO... 3

Dettagli

LA GESTIONE DELLE VISITE CLIENTI VIA WEB

LA GESTIONE DELLE VISITE CLIENTI VIA WEB LA GESTIONE DELLE VISITE CLIENTI VIA WEB L applicazione realizzata ha lo scopo di consentire agli agenti l inserimento via web dei dati relativi alle visite effettuate alla clientela. I requisiti informatici

Dettagli

Regolamento Ufficiale della Fantalega I Villaggi

Regolamento Ufficiale della Fantalega I Villaggi Regolamento Ufficiale della Fantalega I Villaggi PUNTI AZIONE 1. (Anno 2010) Il fattore campo è portato a 2 punti. 2. (Anno 2007) Calcio di rigore sbagliato vale 3 punti. 3. (Anno 2007) Calcio di rigore

Dettagli

Project Planning. Politecnico di Milano. Progetto di Ingegneria del Software 2. 15 novembre 2011. Elisabetta Di Nitto Raffaela Mirandola

Project Planning. Politecnico di Milano. Progetto di Ingegneria del Software 2. 15 novembre 2011. Elisabetta Di Nitto Raffaela Mirandola Politecnico di Milano Progetto di Ingegneria del Software 2 Project Planning Autori: Claudia Foglieni Giovanni Matteo Fumarola Massimo Maggi Professori: Elisabetta Di Nitto Raffaela Mirandola 15 novembre

Dettagli

Il Fantacalcio è una simulazione che permette ai "Presidenti" di costituire una squadra di calcio virtuale, di gestirla e di schierarla in campo in

Il Fantacalcio è una simulazione che permette ai Presidenti di costituire una squadra di calcio virtuale, di gestirla e di schierarla in campo in REGOLAMENTO 2015/16 Il Fantacalcio è una simulazione che permette ai "Presidenti" di costituire una squadra di calcio virtuale, di gestirla e di schierarla in campo in occasione di ogni giornata della

Dettagli

RIFERIMENTI ATTORI GLOSSARIO. ERRORI COMUNI REV. REQUISITI INGEGNERIA DEL SOFTWARE Università degli Studi di Padova

RIFERIMENTI ATTORI GLOSSARIO. ERRORI COMUNI REV. REQUISITI INGEGNERIA DEL SOFTWARE Università degli Studi di Padova RIFERIMENTI ERRORI COMUNI REV. REQUISITI INGEGNERIA DEL SOFTWARE Università degli Studi di Padova Dipartimento di Matematica Corso di Laurea in Informatica, A.A. 2014 2015 I riferimenti devono essere precisi

Dettagli

Manuale Utente. Programma di Sviluppo Rurale 2007 2013. Compilazione del Business Plan ridotto. Versione A

Manuale Utente. Programma di Sviluppo Rurale 2007 2013. Compilazione del Business Plan ridotto. Versione A Manuale Utente Programma di Sviluppo Rurale 2007 2013 Compilazione del Business Plan ridotto Versione A Indice Indice... 2 Indice delle figure... 3 1 Storia del documento... 4 2 Introduzione... 5 2.1 Scopo

Dettagli

DOCUMENTAZIONE POISSON

DOCUMENTAZIONE POISSON DOCUMENTAZIONE POISSON INDICE: 1. Primo approccio all'interfaccia 2. Distribuzione dei dati 3. Effettuare una elaborazione e una lettura dell'elaborazione 4. Sistema di aggiornamenti 5. Assistenza 6. Acquisto

Dettagli

Regolamento del FANTAMONDIALE 2010

Regolamento del FANTAMONDIALE 2010 Regolamento del FANTAMONDIALE 2010 OGGETTO DEL GIOCO Oggetto del gioco è una simulazione del calcio attraverso la formazione di fantasquadre formate da veri calciatori delle squadre del campionato Mondiale

Dettagli

GUIDA UTENTE... 2 Come si accede alla piattaforma del FORMAS?... 2 Quali sono i Browser da utilizzare?... 2 Quali sono le modalità di iscrizione?...

GUIDA UTENTE... 2 Come si accede alla piattaforma del FORMAS?... 2 Quali sono i Browser da utilizzare?... 2 Quali sono le modalità di iscrizione?... GUIDA UTENTE... 2 Come si accede alla piattaforma del FORMAS?... 2 Quali sono i Browser da utilizzare?... 2 Quali sono le modalità di iscrizione?... 2 Iscrizione da parte del FORMAS... 2 Quando devono

Dettagli

Università degli Studi di L Aquila. Facoltà di Ingegneria. Corso di Laurea in Ingegneria Elettronica Corso di Sistemi Informativi

Università degli Studi di L Aquila. Facoltà di Ingegneria. Corso di Laurea in Ingegneria Elettronica Corso di Sistemi Informativi Università degli Studi di L Aquila Facoltà di Ingegneria Corso di Laurea in Ingegneria Elettronica Corso di Sistemi Informativi Prof. Gaetanino Paolone Dott. Ottavio Pascale a.a.2003-2004 Progetto Campo

Dettagli

Regolamento Fantacalcio 2014-2015

Regolamento Fantacalcio 2014-2015 Regolamento Fantacalcio 2014-2015 Il fantacalcio è divertimento tra amici nato dalla passione per il calcio: prendiamoci in giro in maniera responsabile e non roviniamo tutto con astio e polemiche inutili.

Dettagli

ALICE AMMINISTRAZIONE UTENTI WEB

ALICE AMMINISTRAZIONE UTENTI WEB AMMINISTRAZIONE UTENTI WEB REL. 1.2 edizione luglio 2008 INDICE 1. AMMINISTRAZIONE DI UTENTI E PROFILI... 2 2. DEFINIZIONE UTENTI... 2 2.1. Definizione Utenti interna all applicativo... 2 2.1.1. Creazione

Dettagli

Università degli Studi di Messina

Università degli Studi di Messina Università degli Studi di Messina Guida alla Rendicontazione on-line delle Attività del Docente Versione della revisione: 2.02/2013-07 A cura di: Fabio Adelardi Università degli studi di Messina Centro

Dettagli

REGOLAMENTO (bozza) 1 FANTACALCIO Juventus Club Doc AG 2012-2013

REGOLAMENTO (bozza) 1 FANTACALCIO Juventus Club Doc AG 2012-2013 REGOLAMENTO (bozza) 1 FANTACALCIO Juventus Club Doc AG 2012-2013 1) COMPETIZIONI. Le principali competizioni del 1 FantacalcioJuventus Club Doc AG sono: LEGA JCD AG Campionato a PUNTI (somma totali giornata)

Dettagli

Sistemi Informativi I

Sistemi Informativi I Sistemi Informativi I Modalità di Esame L esame consta in una prova orale, durante la quale viene discusso un progetto approntato individualmente dallo studente. Il progetto consiste nella elaborazione

Dettagli

Guida per la registrazione alla piattaforma di Gestione dei Corsi per il Consulente Tecnico Telematico

Guida per la registrazione alla piattaforma di Gestione dei Corsi per il Consulente Tecnico Telematico Guida per la registrazione alla piattaforma di Gestione dei Corsi per il Consulente Tecnico Telematico Maribel Maini Indi ndice ce: Procedura di registrazione alla piattaforma e di creazione del proprio

Dettagli

MANUALE D USO DELLA PIATTAFORMA ITCMS

MANUALE D USO DELLA PIATTAFORMA ITCMS MANUALE D USO DELLA PIATTAFORMA ITCMS MANULE D USO INDICE 1. INTRODUZIONE... 2 2. ACCEDERE ALLA GESTIONE DEI CONTENUTI... 3 3. GESTIONE DEI CONTENUTI DI TIPO TESTUALE... 4 3.1 Editor... 4 3.2 Import di

Dettagli

Regione Piemonte Portale Rilevazioni Crediti EELL Manuale Utente

Regione Piemonte Portale Rilevazioni Crediti EELL Manuale Utente Pag. 1 di 15 VERS V01 REDAZIONE VERIFICHE E APPROVAZIONI CONTROLLO APPROVAZIONE AUTORIZZAZIONE EMISSIONE NOME DATA NOME DATA NOME DATA A. Marchisio C. Pernumian 29/12/2014 M. Molino 27/02/2015 M. Molino

Dettagli

Guida rapida all uso di Moodle per gli studenti

Guida rapida all uso di Moodle per gli studenti Guida rapida all uso di Moodle per gli studenti Introduzione La piattaforma utilizzata per le attività a distanza è Moodle, un software per la gestione di corsi on-line. Per chi accede come studente, essa

Dettagli

GUIDA AL FANTADIVANO

GUIDA AL FANTADIVANO GUIDA AL FANTADIVANO INDICE Introduzione I Ruoli Amministratore di lega Allenatore Gli Strumenti Il Campionato La tua squadra Il Calendario La Classifica Le Statistiche La Bacheca Le Regole del gioco L

Dettagli

REGOLAMENTO FANTAISCHITELLA 2014-2015

REGOLAMENTO FANTAISCHITELLA 2014-2015 REGOLAMENTO FANTAISCHITELLA 2014-2015 DURATA Il fantacampionato ha svolgimento a partire dal giorno 9 settembre 2014 (ore 19.00) - data di inizio delle iscrizioni e delle operazioni di mercato e terminerà

Dettagli

Istruzioni per l installazione del software per gli esami ICoNExam (Aggiornate al 15/01/2014)

Istruzioni per l installazione del software per gli esami ICoNExam (Aggiornate al 15/01/2014) Istruzioni per l installazione del software per gli esami ICoNExam (Aggiornate al 15/01/2014) Il software per gli esami ICON può essere eseguito su qualunque computer dotato di Java Virtual Machine aggiornata.

Dettagli

Regione Toscana. ARPA Fonte Dati. Manuale Amministratore. L. Folchi (TAI) Redatto da

Regione Toscana. ARPA Fonte Dati. Manuale Amministratore. L. Folchi (TAI) Redatto da ARPA Fonte Dati Regione Toscana Redatto da L. Folchi (TAI) Rivisto da Approvato da Versione 1.0 Data emissione 06/08/13 Stato DRAFT 1 Versione Data Descrizione 1,0 06/08/13 Versione Iniziale 2 Sommario

Dettagli

PrestaShop 1.5. Manuale per gli utenti. Ultimo aggiornamento: 25 gennaio 2014. A cura di: http://www.prestashoprisolto.com/

PrestaShop 1.5. Manuale per gli utenti. Ultimo aggiornamento: 25 gennaio 2014. A cura di: http://www.prestashoprisolto.com/ PrestaShop 1.5 Manuale per gli utenti Ultimo aggiornamento: 25 gennaio 2014 A cura di: http://www.prestashoprisolto.com/ 1 Sommario 1 PER L UTENTE... 3 1.1 GESTIONE DELL E-COMMERCE... 3 1.1.1 CONCETTI

Dettagli

PSNET UC RUPAR PIEMONTE MANUALE OPERATIVO

PSNET UC RUPAR PIEMONTE MANUALE OPERATIVO Pag. 1 di 17 VERIFICHE E APPROVAZIONI VERSIONE V01 REDAZIONE CONTROLLO APPROVAZIONE AUTORIZZAZIONE EMISSIONE NOME DATA NOME DATA NOME DATA PRATESI STATO DELLE VARIAZIONI VERSIONE PARAGRAFO O DESCRIZIONE

Dettagli

Controllo di Gestione - Guida Operativa

Controllo di Gestione - Guida Operativa Controllo di Gestione - Guida Operativa Il modulo software di Controllo di Gestione, meglio denominato Monitoraggio e Controllo del piano degli obiettivi permette di monitorare, durante l esercizio, gli

Dettagli

Guida al sistema. Dott. Enea Belloni

Guida al sistema. Dott. Enea Belloni Sistema Gestionale Voucher Guida al sistema Dott. Enea Belloni Sommario della presentazione Il sistema informatico per la gestione delle domande L utente presentatore: diritti e responsabilità La pagina

Dettagli

Regolamento Fanta Big Bang 2013-2014

Regolamento Fanta Big Bang 2013-2014 Regolamento Fanta Big Bang 2013-2014 Cenni generali L edizione del Fantacalcio 2013 a cui parteciperete avrà come unico giornale di riferimento la Gazzetta dello Sport versione cartacea (quella del martedì).

Dettagli

FANTACONO 2013 2014 REGOLAMENTO UFFICIALE

FANTACONO 2013 2014 REGOLAMENTO UFFICIALE FANTACONO 2013 2014 REGOLAMENTO UFFICIALE 1 LA SQUADRA La squadra viene costruita scegliendo 25 giocatori tra quelli delle squadre del campionato di calcio di serie A, elencati nella lista pubblicata dalla

Dettagli

ALF0021M MANUALE UTENTE MODULO "SETUP"

ALF0021M MANUALE UTENTE MODULO SETUP ALF0021M MANUALE UTENTE MODULO "SETUP" ALBOFORNITORI VER. 4.9.1 Revisioni Rev. Versione software Data Descrizione 0 15/11/2010 Prima emissione 1 05/09/2011 Nuovo template 2 4.8.0 22/05/2012 Visibilitá

Dettagli

Progetto di Applicazioni Software

Progetto di Applicazioni Software Progetto di Applicazioni Software Antonella Poggi Dipartimento di Informatica e Sistemistica Antonio Ruberti SAPIENZA Università di Roma Anno Accademico 2010/2011 I lucidi del corso sono stati prodotti

Dettagli

Database 1 biblioteca universitaria. Testo del quesito

Database 1 biblioteca universitaria. Testo del quesito Database 1 biblioteca universitaria Testo del quesito Una biblioteca universitaria acquista testi didattici su indicazione dei professori e cura il prestito dei testi agli studenti. La biblioteca vuole

Dettagli

Software Gestionale Politiche Giovanili

Software Gestionale Politiche Giovanili Software Gestionale Politiche Giovanili Guida all Uso Progettisti e Referenti tecnico-organizzativi Edizione 2012 1 INDICE DEI CONTENUTI: 1. NOZIONI GENERALI E ACCESSO AL SISTEMA 1.1 Requisiti di sistema...

Dettagli

cin>>c8 s.r.l. Consuntivo Pagina 1 di 11 Consuntivo

cin>>c8 s.r.l. Consuntivo Pagina 1 di 11 Consuntivo Consuntivo Pagina 1 di 11 Consuntivo Indice 1 - INTRODUZIONE... 3 1.1 - OBIETTIVO DEL DOCUMENTO...3 1.2 - STRUTTURA DEL DOCUMENTO...3 1.3 - RIFERIMENTI...3 1.4 - STORIA DEL DOCUMENTO...3 2 - CONFRONTO...

Dettagli

Access. P a r t e p r i m a

Access. P a r t e p r i m a Access P a r t e p r i m a 1 Esempio di gestione di database con MS Access 2 Cosa è Access? Access e un DBMS che permette di progettare e utilizzare DB relazionali Un DB Access e basato sui concetti di

Dettagli

Manuale servizio Webmail. Introduzione alle Webmail...2 Webmail classica (SquirrelMail)...3 Webmail nuova (RoundCube)...8

Manuale servizio Webmail. Introduzione alle Webmail...2 Webmail classica (SquirrelMail)...3 Webmail nuova (RoundCube)...8 Manuale servizio Webmail Introduzione alle Webmail...2 Webmail classica (SquirrelMail)...3 Webmail nuova (RoundCube)...8 Introduzione alle Webmail Una Webmail è un sistema molto comodo per consultare la

Dettagli

FANTACAMPIONATO www.nerazzurra.tk

FANTACAMPIONATO www.nerazzurra.tk FANTACAMPIONATO www.nerazzurra.tk PRIMA FASE L ISCRIZIONE REGOLAMENTO Prima di tutto tengo a precisare che l iscrizione al fantacalcio del sito nerazzurra.tk dell anno 2004-2005, è assolutamente gratuita.

Dettagli

GUIDA UTENTE PRIMA NOTA SEMPLICE

GUIDA UTENTE PRIMA NOTA SEMPLICE GUIDA UTENTE PRIMA NOTA SEMPLICE (Vers. 2.0.0) Installazione... 2 Prima esecuzione... 5 Login... 6 Funzionalità... 7 Prima Nota... 8 Registrazione nuovo movimento... 10 Associazione di file all operazione...

Dettagli

Descrizione del prodotto WebPEG: Piano Esecutivo Gestione

Descrizione del prodotto WebPEG: Piano Esecutivo Gestione Descrizione del prodotto WebPEG: Piano Esecutivo Gestione Il Piano Esecutivo di Gestione rappresenta, nell'ambito del procedimento di programmazione dell'ente locale, una delle novità più rilevanti introdotte

Dettagli

Regolamento ufficiale

Regolamento ufficiale Regolamento ufficiale FANTAMONDIALE 2014 Al Fantamondiale partecipano le 16 squadre della Lega. ASTA "Ogni fantallenatore versa 30,00 euro come quota di iscrizione. Non ci sarà la consueta asta, ma ognuno

Dettagli

Progettazione e realizzazione di un applicativo Web Annunci Immobiliari

Progettazione e realizzazione di un applicativo Web Annunci Immobiliari Corso di Gestione dell Informazione Studenti NON frequentanti A.A. 2009/2010 Progettazione e realizzazione di un applicativo Web Annunci Immobiliari 1 Scopo del progetto Si vuole realizzare un applicazione

Dettagli

Banca dati Professioniste in rete per le P.A. Guida all uso per le Professioniste

Banca dati Professioniste in rete per le P.A. Guida all uso per le Professioniste Banca dati Professioniste in rete per le P.A. Guida all uso per le Professioniste versione 2.1 24/09/2015 aggiornamenti: 23-set-2015; 24-set-2015 Autore: Francesco Brunetta (http://www.francescobrunetta.it/)

Dettagli

Il web server Apache Lezione n. 3. Introduzione

Il web server Apache Lezione n. 3. Introduzione Procurarsi ed installare il web server Apache Introduzione In questa lezione cominciamo a fare un po di pratica facendo una serie di operazioni preliminari, necessarie per iniziare a lavorare. In particolar

Dettagli

Mon Ami 3000 Conto Lavoro Gestione del C/Lavoro attivo e passivo

Mon Ami 3000 Conto Lavoro Gestione del C/Lavoro attivo e passivo Prerequisiti Mon Ami 3000 Conto Lavoro Gestione del C/Lavoro attivo e passivo L opzione Conto lavoro è disponibile per le versioni Azienda Light e Azienda Pro. Introduzione L opzione Conto lavoro permette

Dettagli

Politecnico di Bari Corso di Laurea Specialistica in Ingegneria Informatica A.A. 2008-09. Casi di Studio. Traccia n 1

Politecnico di Bari Corso di Laurea Specialistica in Ingegneria Informatica A.A. 2008-09. Casi di Studio. Traccia n 1 Politecnico di Bari Corso di Laurea Specialistica in Ingegneria Informatica A.A. 2008-09 Casi di Studio Traccia n 1 Si vuole realizzare un portale web per la gestione della rete di vendita di un'azienda

Dettagli

Sistema Gestionale FIPRO. Dott. Enea Belloni Ing. Andrea Montagnani

Sistema Gestionale FIPRO. Dott. Enea Belloni Ing. Andrea Montagnani Sistema Gestionale FIPRO Dott. Enea Belloni Ing. Andrea Montagnani Firenze, 29 Aprile 2010 Sommario della presentazione Il sistema informatico per la gestione progetti FIPRO L utente presentatore: diritti

Dettagli

Procedura Gestione Pratiche Sicurezza Cantiere

Procedura Gestione Pratiche Sicurezza Cantiere Procedura Gestione Pratiche Sicurezza Cantiere Importazione Imprese Cassa Edile Gestione Anagrafica Imprese Gestione Anagrafica Tecnici Gestione Pratiche Statistiche Tabelle Varie Gestione Agenda Appuntamenti

Dettagli

Progettazione di una base di dati Ufficio della Motorizzazione

Progettazione di una base di dati Ufficio della Motorizzazione Corso di Gestione dell Informazione Studenti NON frequentanti A.A. 2008/2009 1 Scopo del progetto Progettazione di una base di dati Ufficio della Motorizzazione Si vuole realizzare un applicazione base

Dettagli

Fantacavabù 2015/2016 III Edizione

Fantacavabù 2015/2016 III Edizione Fantacavabù 2015/2016 III Edizione Regolamento ufficiale della F.A.F. (Fantacalcio Amatoriale Fantacavabù) 1. Introduzione Il Fantacavabù è un torneo di fantacalcio realizzato tra amici e svolto per essere

Dettagli

Applicazione JobScheduler su DB SQL Milano, lì 14/09/2009

Applicazione JobScheduler su DB SQL Milano, lì 14/09/2009 Documentazione KING Applicazione JobScheduler su DB SQL Milano, lì 14/09/2009 Microsoft SQL Server dispone del servizio di Job Scheduler, o Schedulatore di attività: si tratta di un applicativo che consente

Dettagli

Creare diagrammi di Gantt con Visio 2003

Creare diagrammi di Gantt con Visio 2003 Creare diagrammi di Gantt con Visio 2003 La fase di pianificazione di un progetto è sicuramente molto delicata e alquanto complessa, in quanto bisogna riuscire a definire una scomposizione del progetto

Dettagli

Studio Legale. Guida operativa

Studio Legale. Guida operativa Studio Legale Guida operativa Cliens Studio Legale Web Cliens Studio Legale Web è un nuovo strumento che consente all avvocato di consultare i dati presenti negli archivi Cliens del proprio studio, attraverso

Dettagli

GSP+ Customer Relationship Manager V 7.0. Manuale utente

GSP+ Customer Relationship Manager V 7.0. Manuale utente GSP+ Customer Relationship Manager V 7.0 Manuale utente Installazione Per l installazione utilizzare esclusivamente il CD-ROM fornito o il file msi di installazione / upgrade. Inserire il CD-ROM nel lettore

Dettagli

Raggruppamenti Conti Movimenti

Raggruppamenti Conti Movimenti ESERCITAZIONE PIANO DEI CONTI Vogliamo creare un programma che ci permetta di gestire, in un DB, il Piano dei conti di un azienda. Nel corso della gestione d esercizio, si potranno registrare gli articoli

Dettagli

Excel. A cura di Luigi Labonia. e-mail: luigi.lab@libero.it

Excel. A cura di Luigi Labonia. e-mail: luigi.lab@libero.it Excel A cura di Luigi Labonia e-mail: luigi.lab@libero.it Introduzione Un foglio elettronico è un applicazione comunemente usata per bilanci, previsioni ed altri compiti tipici del campo amministrativo

Dettagli

ING SW. Progetto di Ingegneria del Software. e-travel. Requisiti Utente. Specifiche Funzionali del Sistema

ING SW. Progetto di Ingegneria del Software. e-travel. Requisiti Utente. Specifiche Funzionali del Sistema Pagina: 1 e-travel ING SW Progetto di Ingegneria del Software e-travel Requisiti Utente Specifiche Funzionali del Sistema e Pagina: 2 di 9 Indice dei contenuti 1 INTRODUZIONE... 3 1.1 SCOPO DEL DOCUMENTO...

Dettagli

ISTRUZIONI PER LA GESTIONE BUDGET

ISTRUZIONI PER LA GESTIONE BUDGET ISTRUZIONI PER LA GESTIONE BUDGET 1) OPERAZIONI PRELIMINARI PER LA GESTIONE BUDGET...1 2) INSERIMENTO E GESTIONE BUDGET PER LA PREVISIONE...4 3) STAMPA DIFFERENZE CAPITOLI/BUDGET.10 4) ANNULLAMENTO BUDGET

Dettagli

Introduzione alla teoria dei database relazionali. Come progettare un database

Introduzione alla teoria dei database relazionali. Come progettare un database Introduzione alla teoria dei database relazionali Come progettare un database La struttura delle relazioni Dopo la prima fase di individuazione concettuale delle entità e degli attributi è necessario passare

Dettagli

REGOLAMENTO DI GIOCO TUTTOSPORT LEAGUE LEGHE DI AMICI

REGOLAMENTO DI GIOCO TUTTOSPORT LEAGUE LEGHE DI AMICI REGOLAMENTO DI GIOCO TUTTOSPORT LEAGUE LEGHE DI AMICI IL GIOCO Lo scopo del gioco Tuttosport League - Leghe di Amici (di seguito chiamato Gioco ) è creare e gestire una "squadra virtuale" di calcio all'interno

Dettagli

REGOLAMENTO DI GIOCO MISTER CALCIO CUP LEGHE DI AMICI

REGOLAMENTO DI GIOCO MISTER CALCIO CUP LEGHE DI AMICI REGOLAMENTO DI GIOCO MISTER CALCIO CUP LEGHE DI AMICI IL GIOCO Lo scopo del gioco Mister Calcio Cup - Leghe di Amici (di seguito chiamato Gioco ) è creare e gestire una squadra virtuale di calcio all'interno

Dettagli

ARCHIVIAZIONE DOCUMENTALE NEiTdoc

ARCHIVIAZIONE DOCUMENTALE NEiTdoc ARCHIVIAZIONE DOCUMENTALE NEiTdoc PROCESS & DOCUMENT MANAGEMENT La documentazione può essere definita un complesso di scritture prodotte da entità pubbliche o private nell espletamento della loro attività,

Dettagli

REGOLAMENTO UFFICIALE FANTACALCIO

REGOLAMENTO UFFICIALE FANTACALCIO REGOLAMENTO UFFICIALE FANTACALCIO 1. La squadra Con il termine squadra si intende l insieme di rosa e staff tecnico. 1.1. La rosa Con il termine rosa si comprendono tutti i giocatori acquistati durante

Dettagli

Integrazione del progetto CART regione Toscana nel software di CCE K2

Integrazione del progetto CART regione Toscana nel software di CCE K2 Integrazione del progetto CART regione Toscana nel software di CCE K2 Data Creazione 04/12/2012 Versione 1.0 Autore Alberto Bruno Stato documento Revisioni 1 Sommario 1 - Introduzione... 3 2 - Attivazione

Dettagli

MANUALE D'USO DEL PROGRAMMA IMMOBIPHONE

MANUALE D'USO DEL PROGRAMMA IMMOBIPHONE 1/6 MANUALE D'USO DEL PROGRAMMA IMMOBIPHONE Per prima cosa si ringrazia per aver scelto ImmobiPhone e per aver dato fiducia al suo autore. Il presente documento istruisce l'utilizzatore sull'uso del programma

Dettagli

Regolamento Fantacelulopoli 2011/2012

Regolamento Fantacelulopoli 2011/2012 Regolamento Fantacelulopoli 2011/2012 COME CREARE UNA SQUADRA - ROSA Hai a disposizione il numero di crediti scelto dal moderatore della tua lega per acquistare 25 calciatori (la tua ROSA): 3 portieri,

Dettagli

RUOLO CALCIATORI ASSEGNATI CALCIATORI DA ORDINARE Portieri 3 3+1 Difensori 8 8+1 Centrocampisti 8 8+1 Attaccanti 6 6+1

RUOLO CALCIATORI ASSEGNATI CALCIATORI DA ORDINARE Portieri 3 3+1 Difensori 8 8+1 Centrocampisti 8 8+1 Attaccanti 6 6+1 Introduzione Il Regolamento di Fantacalcio Scontri Diretti è basato sulle Regole Ufficiali della Federazione Fantacalcio*, pubblicate nel libro-manuale Serie A-Fantacalcio, 16ª edizione (Edizioni Studio

Dettagli

Regolamento Lega FantaGranPremio Edizione 2014/2015

Regolamento Lega FantaGranPremio Edizione 2014/2015 Regolamento Lega FantaGranPremio Edizione 2014/2015 REGOLA 1: OGGETTO DEL GIOCO 1. Il fantacalcio è una simulazione del gioco del calcio, che permette di gestire una squadra virtuale (fantasquadra), formata

Dettagli

Sommario Introduzione... 1 1. Accesso alla Segreteria online... 1 2. Inserimento della domanda di immatricolazione... 3 2.1 Scelta tipo domanda di

Sommario Introduzione... 1 1. Accesso alla Segreteria online... 1 2. Inserimento della domanda di immatricolazione... 3 2.1 Scelta tipo domanda di Università della Valle d Aosta Université de la Vallée D Aoste Immatricolazione online: fase 3 - Procedura di immatricolazione In questo documento viene illustrata la procedura web di inserimento della

Dettagli

CONTENT MANAGEMENT SYSTEM

CONTENT MANAGEMENT SYSTEM CONTENT MANAGEMENT SYSTEM P-2 PARLARE IN MULTICANALE Creare un portale complesso e ricco di informazioni continuamente aggiornate, disponibile su più canali (web, mobile, iphone, ipad) richiede competenze

Dettagli

Sistemi Informativi I Caso di studio con applicazione di UML

Sistemi Informativi I Caso di studio con applicazione di UML 9 CASO DI STUDIO CON APPLICAZIONE DI UML...2 9.1 IL CASO DI STUDIO...2 9.1.1 Il sistema attuale...2 9.2 IL PROBLEM STATEMENT...3 9.2.1 Formulazione del Problem statement per il caso proposto...3 9.3 USE

Dettagli

Università degli Studi "Roma Tre" Dipartimento di Informatica ed automazione. Facoltà di Ingegneria

Università degli Studi Roma Tre Dipartimento di Informatica ed automazione. Facoltà di Ingegneria Università degli Studi "Roma Tre" Dipartimento di Informatica ed automazione Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica Tesi di Laurea AUTENTICAZIONE PER APPLICAZIONI WEB Relatore

Dettagli

EXPLOit Content Management Data Base per documenti SGML/XML

EXPLOit Content Management Data Base per documenti SGML/XML EXPLOit Content Management Data Base per documenti SGML/XML Introduzione L applicazione EXPLOit gestisce i contenuti dei documenti strutturati in SGML o XML, utilizzando il prodotto Adobe FrameMaker per

Dettagli

MANUALE MOODLE STUDENTI. Accesso al Materiale Didattico

MANUALE MOODLE STUDENTI. Accesso al Materiale Didattico MANUALE MOODLE STUDENTI Accesso al Materiale Didattico 1 INDICE 1. INTRODUZIONE ALLA PIATTAFORMA MOODLE... 3 1.1. Corso Moodle... 4 2. ACCESSO ALLA PIATTAFORMA... 7 2.1. Accesso diretto alla piattaforma...

Dettagli

LFLF - REGOLAMENTO. Sono aboliti i seguenti paragrafi: 4.b; 4.c; 4.d. E' abolito il punto 5.

LFLF - REGOLAMENTO. Sono aboliti i seguenti paragrafi: 4.b; 4.c; 4.d. E' abolito il punto 5. LFLF - REGOLAMENTO La LFLF assume come regolamento base quello riportato dal testo "Guida al Fantacalcio 2011/12" (non più modificato dalla FFC), fatte salve le modifiche adottate dalla LFLF. Il regolamento

Dettagli

Guida alla registrazione on-line di un DataLogger

Guida alla registrazione on-line di un DataLogger NovaProject s.r.l. Guida alla registrazione on-line di un DataLogger Revisione 3.0 3/08/2010 Partita IVA / Codice Fiscale: 03034090542 pag. 1 di 17 Contenuti Il presente documento è una guida all accesso

Dettagli

Direzione Centrale per le Politiche dell Immigrazione e dell Asilo

Direzione Centrale per le Politiche dell Immigrazione e dell Asilo Direzione Centrale per le Politiche dell Immigrazione e dell Asilo Sistema inoltro telematico domande di nulla osta, ricongiungimento e conversioni Manuale utente Versione 2 Data creazione 02/11/2007 12.14.00

Dettagli

Manuale del Software per la richiesta, il rilascio e l utilizzo dei Patentini

Manuale del Software per la richiesta, il rilascio e l utilizzo dei Patentini Manuale del Software per la richiesta, il rilascio e l utilizzo dei Patentini Redatto da Roberta Gualandi con la collaborazione di Matteo Gaetani. Premessa Attualmente il manuale è ancora in corso di stesura

Dettagli

Eleonline gestione dello spoglio elettorale

Eleonline gestione dello spoglio elettorale Eleonline gestione dello spoglio elettorale Manuale Operativo Il manuale segue l'organizzazione gerarchica dell'applicativo perché questo è anche l'ordine temporale di esecuzione delle operazioni. Visione

Dettagli

FANTACALCIO Bar La Posta Stagione 2010-2011

FANTACALCIO Bar La Posta Stagione 2010-2011 FANTACALCIO Bar La Posta Stagione 2010-2011 REGOLAMENTO UFFICIALE - Il Presidente di Lega I compiti del presidente di lega sono fondamentalmente i seguenti: 1. Gestione dell asta di calciomercato 2. Contabilità

Dettagli

PROCEDURA PER LA GESTIONE ESAMI DI STATO AREA ALUNNI AXIOS

PROCEDURA PER LA GESTIONE ESAMI DI STATO AREA ALUNNI AXIOS PROCEDURA PER LA GESTIONE ESAMI DI STATO AREA ALUNNI AXIOS Lo scopo di questa guida rapida è quello di fornire all utente, sia del prodotto SISSI in RETE che del prodotto Axios, un vademecum per la corretta

Dettagli

Database. Si ringrazia Marco Bertini per le slides

Database. Si ringrazia Marco Bertini per le slides Database Si ringrazia Marco Bertini per le slides Obiettivo Concetti base dati e informazioni cos è un database terminologia Modelli organizzativi flat file database relazionali Principi e linee guida

Dettagli

I MODULI Q.A.T. PANORAMICA. La soluzione modulare di gestione del Sistema Qualità Aziendale

I MODULI Q.A.T. PANORAMICA. La soluzione modulare di gestione del Sistema Qualità Aziendale La soluzione modulare di gestione del Sistema Qualità Aziendale I MODULI Q.A.T. - Gestione clienti / fornitori - Gestione strumenti di misura - Gestione verifiche ispettive - Gestione documentazione del

Dettagli

FANTACALCIO 2015/2016 - REGOLAMENTO

FANTACALCIO 2015/2016 - REGOLAMENTO ROSA E FORMAZIONE FANTACALCIO 2015/2016 - REGOLAMENTO La rosa di una fantasquadra è composta da 28 calciatori, così divisi: 6 Portieri (appartenenti al massimo a 2 squadre), 8 Difensori 8 Centrocampisti

Dettagli

MANUALE ESSE3 Gestione Registro delle lezioni

MANUALE ESSE3 Gestione Registro delle lezioni MANUALE ESSE3 Gestione Registro delle lezioni DOCENTI 1 INDICE 1. INTRODUZIONE E ACCESSO... 3 2. GESTIONE DEL REGISTRO... 4 2.1. Informazioni generali... 6 2.2. Stato del Registro... 7 2.2.1. Transizioni

Dettagli

Relazione illustrativa degli Obiettivi di accessibilità

Relazione illustrativa degli Obiettivi di accessibilità COMUNE DI PORTOSCUSO Provincia di Carbonia-Iglesias Comune di Portoscuso Relazione illustrativa degli Obiettivi di accessibilità Redatto ai sensi dell articolo 9, comma 7 del decreto legge 18 ottobre 2012,

Dettagli

flusso delle informazioni... 2 password... 3 password/2... 3 inserimento di una nuova richiesta... 4 le condizioni di vendita... 6

flusso delle informazioni... 2 password... 3 password/2... 3 inserimento di una nuova richiesta... 4 le condizioni di vendita... 6 istruzioni per l inserimento di una richiesta on line di prodotti speciali flusso delle informazioni... 2 password... 3 password/2... 3 inserimento di una nuova richiesta... 4 le condizioni di vendita...

Dettagli

PROCEDURA ON-LINE PER L INSERIMENTO E/O LA CONFERMA DEI PERCORSI FORMATIVI PER L APPRENDISTATO PROFESSIONALIZZANTE

PROCEDURA ON-LINE PER L INSERIMENTO E/O LA CONFERMA DEI PERCORSI FORMATIVI PER L APPRENDISTATO PROFESSIONALIZZANTE PROCEDURA ON-LINE PER L INSERIMENTO E/O LA CONFERMA DEI PERCORSI FORMATIVI PER L APPRENDISTATO PROFESSIONALIZZANTE Catalogo dell Offerta Formativa Regionale per l Apprendistato Professionalizzante GUIDA

Dettagli

1. Piattaforma esercizi... 3. 1.1. Dati anagrafici... 6. 1.2. Tipologia Attività... 6. 1.3. Dati input... 8. 1.4. Riepilogo... 10. 2. Giochi...

1. Piattaforma esercizi... 3. 1.1. Dati anagrafici... 6. 1.2. Tipologia Attività... 6. 1.3. Dati input... 8. 1.4. Riepilogo... 10. 2. Giochi... Attività Progetto Autori Manuale piattaforma esercizi Omniacare Michele Castriotta, Luca Palumbo Versione 2.0 Contenuti 1. Piattaforma esercizi... 3 1.1. Dati anagrafici... 6 1.2. Tipologia Attività...

Dettagli

FidelJob gestione Card di fidelizzazione

FidelJob gestione Card di fidelizzazione FidelJob gestione Card di fidelizzazione Software di gestione card con credito in Punti o in Euro ad incremento o a decremento, con funzioni di ricarica Card o scala credito da Card. Versione archivio

Dettagli

ali e non funzionali con priorità (high, medium, low) Use Case con un Activity Diagram o uno State Diagr ram

ali e non funzionali con priorità (high, medium, low) Use Case con un Activity Diagram o uno State Diagr ram Riassunto deriva able 4 novembre Lista dei requisiti iti funziona ali e non funzionali con priorità (high, medium, low) Diagramma degli Use Case dell intero progetto Descrizione di almeno uno Use Case

Dettagli

Gestione Anagrafiche e Donazioni RETE FIDAS MEZZOGIORNO

Gestione Anagrafiche e Donazioni RETE FIDAS MEZZOGIORNO Gestione Anagrafiche e Donazioni RETE FIDAS MEZZOGIORNO Manuale Utente SOMMARIO 1 PRESENTAZIONE DELL APPLICATIVO... 3 1.1 OBIETTIVI... 3 1.2 CARATTERISTICHE... 3 1.3 BREVE DESCRIZIONE DEL PRODOTTO...

Dettagli

Regolamento della StronzoLega

Regolamento della StronzoLega Regolamento della StronzoLega La prima regola della stronzolega prevede che gli sbagli e le dimenticanze non siano degli ottimi motivi per giustificare e annullare le azioni proprie o dell avversario.

Dettagli

La Guida Utente Luglio 2008

La Guida Utente Luglio 2008 La Guida Utente Luglio 2008 Indice 1. Il portale di e-learning e le modalità di accesso 3 2. Le principali funzioni 4 3. Il progetto formativo e i corsi 4 4. La comunicazione 7 2 1. Il portale di e-learning

Dettagli

REGOLAMENTO Stagione 2014/2015

REGOLAMENTO Stagione 2014/2015 REGOLAMENTO Stagione 2014/2015 Partecipanti Il numero di partecipanti alla presente edizione è 10. La quota di iscrizione è pari a 50 Euro e tutti i partecipanti avranno a disposizione un PIN per l accesso

Dettagli

NOTE OPERATIVE. Prodotto Inaz Download Manager. Release 1.3.0

NOTE OPERATIVE. Prodotto Inaz Download Manager. Release 1.3.0 Prodotto Inaz Download Manager Release 1.3.0 Tipo release COMPLETA RIEPILOGO ARGOMENTI 1. Introduzione... 2 2. Architettura... 3 3. Configurazione... 4 3.1 Parametri di connessione a Internet... 4 3.2

Dettagli

SISTEMA AFFILIAZIONE E TESSERAMENTO MANUALE UTENTE

SISTEMA AFFILIAZIONE E TESSERAMENTO MANUALE UTENTE SISTEMA AFFILIAZIONE E TESSERAMENTO MANUALE UTENTE REVISIONE 1.0 APRILE 2013 Sistema Affiliazione e Tesseramento 1 INTRODUZIONE Questo manuale intende fornire una guida pratica per l'utilizzo della nuova

Dettagli

REOL-Services Quick Reference Ver. 1.1 Tecno Press Srl. 1

REOL-Services Quick Reference Ver. 1.1 Tecno Press Srl. 1 In questa semplice guida sono riportate tutte le informazioni relative alla prima registrazione e quelle relative alla configurazione dell ambiente di lavoro per poter utilizzare al meglio la nostra suite

Dettagli

Registratori di Cassa

Registratori di Cassa modulo Registratori di Cassa Interfacciamento con Registratore di Cassa RCH Nucleo@light GDO BREVE GUIDA ( su logiche di funzionamento e modalità d uso ) www.impresa24.ilsole24ore.com 1 Sommario Introduzione...

Dettagli