Progetto di Ingegneria del Software – Fantacalcio On-Line
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 Mirkocon cui ho trascorso tre anni bellissimi della mia vita.
Alla mia migliore amica Marzia.
1
Progetto di Ingegneria del Software – Fantacalcio On-Line
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
Progetto di Ingegneria del Software – Fantacalcio On-Line
Indice
Strumenti utilizzati.................................................................................................14
Note sugli strumenti utilizzati..............................................................................15
Note sulle revisioni dei documenti........................................................................18
1. Requisiti utente e specifiche funzionali del sistema.......................................19
1.1 Introduzione..............................................................................................................19
1.1.1 Scopo dell'unità...............................................................................................................19
1.2 Requisiti utente..........................................................................................................20
1.2.1 Dichiarazione di portata del progetto..............................................................................20
1.2.2 Sintesi degli attori e dei relativi scenari di successo........................................................22
1.2.3 Il dominio di interesse......................................................................................................23
1.2.4 Il dominio di interesse in sintesi......................................................................................24
1.3 Analisi dei dati: progettazione concettuale................................................................26
1.3.1 Introduzione al Class Diagram.......................................................................................26
1.3.2 Class Diagram.................................................................................................................27
1.3.3 Giustificazione delle scelte effettuate...............................................................................28
1.3.4 Textual Analysis: data dictionary...................................................................................28
1.3.4.1 Attori...................................................................................................................................29
1.3.4.2 Use Case..............................................................................................................................31
1.3.4.3 Classi...................................................................................................................................37
1.3.5 Glossario degli attributi...................................................................................................40
1.4 Requisiti funzionali del sistema: gli Use Case Diagram............................................46
1.4.1 Introduzione agli Use Case Diagram..............................................................................46
1.4.2 Schema completo dello Use Case Diagram......................................................................47
1.4.3 Sommario.........................................................................................................................48
1.4.4 Giustificazione delle scelte effettuate...............................................................................50
1.4.5 Use Case Diagram in dettaglio: Visitatore......................................................................51
1.4.5.1 Use Case Visitatore: registrazione al sistema......................................................................51
1.4.5.2 Sequence Diagram: registrazione al sistema........................................................................52
3
Progetto di Ingegneria del Software – Fantacalcio On-Line
1.4.5.3 Use Case Visitatore: consultazione delle rose delle squadre iscritte.....................................53
1.4.5.4 Sequence Diagram: consultazione delle rose delle squadre iscritte......................................53
1.4.5.5 Use Case Visitatore: consultazione informazioni sulla lega................................................54
1.4.5.6 Sequence Diagram: consultazione informazioni sulla lega..................................................54
1.4.5.7 Use Case Visitatore: consultazione statistiche....................................................................55
1.4.5.8 Sequence Diagram: consultazione statistiche......................................................................56
1.4.5.9 Use Case Visitatore: consultazione risultati........................................................................56
1.4.5.10 Sequence Diagram: consultazione risultati.......................................................................57
1.4.6 Use Case Diagram in dettaglio: Allenatore.....................................................................57
1.4.6.1 Use Case Allenatore: partecipazione al calciomercato durante la stagione..........................58
1.4.6.2 Sequence Diagram: partecipazione al calciomercato durante la stagione............................59
1.4.6.3 Use Case Allenatore: creazione rosa....................................................................................60
1.4.6.4 Use Case Allenatore: modalità asta a rialzo.........................................................................61
1.4.6.5 Sequence Diagram: modalità asta a rialzo...........................................................................62
1.4.6.6 Use Case Allenatore: modalità asta a busta chiusa..............................................................62
1.4.6.7 Sequence Diagram: modalità asta a busta chiusa................................................................63
1.4.6.8 Use Case Allenatore: login..................................................................................................64
1.4.6.9 Sequence Diagram: login.....................................................................................................65
1.4.6.10 Use Case Allenatore: scelta modalità formazione..............................................................65
1.4.6.11 Sequence Diagram: scelta modalità formazione.................................................................66
1.4.6.12 Use Case Allenatore: scelta formazione senza l'ausilio del sistema...................................67
1.4.6.13 Sequence Diagram: scelta formazione senza l'ausilio del sistema.....................................68
1.4.6.14 Use Case Allenatore: scelta formazione con l'ausilio del sistema......................................68
1.4.6.15 Sequence Diagram: scelta formazione con l'ausilio del sistema.........................................69
1.4.7 Gli Use Case diagram in dettaglio: Presidente................................................................70
1.4.7.1 Use Case Presidente: creazione della lega............................................................................70
1.4.7.2 Sequence Diagram: creazione della lega..............................................................................71
1.4.7.3 Use Case Presidente: inserimento numero partecipanti......................................................72
1.4.7.4 Sequence Diagram: inserimento numero partecipanti.........................................................73
1.4.7.5 Use Case Presidente: scelta modalità asta...........................................................................73
1.4.7.6 Sequence Diagram Presidente: scelta modalità asta............................................................74
1.4.7.7 Use Case Presidente: scelta modalità busta chiusa..............................................................75
1.4.7.8 Sequence Diagram: scelta modalità busta chiusa................................................................76
4
Progetto di Ingegneria del Software – Fantacalcio On-Line
1.4.7.9 Use Case Presidente: scelta modalità di offerta a rialzo.......................................................76
1.4.7.10 Sequence Diagram: scelta modalità di offerta a rialzo.......................................................77
1.4.8 Gli Use Case diagram in dettaglio: Amministratore.......................................................77
1.4.8.1 Use Case Amministratore: gestione lega.............................................................................78
1.4.8.2 Sequence Diagram: gestione lega........................................................................................79
1.4.8.3 Use Case Amministratore: modifica lista calciatori.............................................................79
1.4.8.4 Sequence Diagram: modifica lista calciatori........................................................................81
1.5 Conclusioni dell'unità...............................................................................................82
2. Pianificazione del progetto................................................................................83
2.1 Introduzione..............................................................................................................83
2.1.1 Scopo dell'unità...............................................................................................................83
2.2 Function Point...........................................................................................................84
2.2.1 Bozza dello schema logico................................................................................................84
2.2.2 Descrizione del metodo di stima dei Function Point.......................................................85
2.2.3 Function Point non pesati: funzioni di tipo dati.............................................................85
2.2.3.1 ILF (Internal Logic File)......................................................................................................86
2.2.3.2 Calcolo degli UFP (Unadjusted Function Point) per gli ILF..............................................92
2.2.4 Function Point non pesati: funzioni di tipo transazione.................................................93
2.2.4.1 Identificazione degli EI (External Input).............................................................................93
2.2.4.2 Calcolo degli UFP (Unadjusted Function Point) per gli EI (External Input).....................95
2.2.4.3 Identificazione degli EO (External Output)........................................................................95
2.2.4.4 Calcolo degli UFP (Unadjusted Function Point) per gli EO (External Output)................96
2.2.4.5 Identificazione degli EQ (External Query).........................................................................97
2.2.4.6 Calcolo degli Unadjusted Function Point (UFP) per gli EQ (External Query)..................99
2.2.4.7 Calcolo degli UFP (Unadjusted Function Point) totali.......................................................99
2.2.5 Calcolo degli Adjusted Function Point (AFP)..............................................................100
2.2.5.1 Fattori di aggiustamento...................................................................................................100
2.3 Stima dello sforzo complessivo.................................................................................102
2.3.1 Assegnazione degli scale factors....................................................................................103
2.3.1.1 Motivazione delle scelte.....................................................................................................103
2.3.2 Assegnazione degli effort multiplers.............................................................................104
2.3.2.1 Motivazione delle scelte.....................................................................................................104
5
Progetto di Ingegneria del Software – Fantacalcio On-Line
2.3.3 Distribuzione dello sforzo complessivo..........................................................................105
2.4 Pianificazione temporale..........................................................................................106
2.4.1 Work Breakdown Structure...........................................................................................107
2.5 Diagrammi di Pert e GANTT..................................................................................110
2.5.1 Diagramma di Pert: visione d'insieme..........................................................................110
2.5.1.1 Diagramma di Pert: analisi e pianificazione......................................................................110
2.5.1.2 Diagramma di Pert: progettazione....................................................................................111
2.5.1.3 Diagramma di Pert: implementazione...............................................................................111
2.5.1.4 Diagramma di Pert: test e rilascio.....................................................................................112
2.5.1.5 Diagramma di Pert: cammino critico................................................................................112
2.5.2 Diagramma GANTT.....................................................................................................112
2.5.2.1 Diagramma GANTT: cammino critico.............................................................................113
2.6 Ripartizione delle attività.........................................................................................114
2.6.1 Work Breakdown Structure con la durata di ciascuna attività.....................................114
2.6.2 Malacario Mirko............................................................................................................117
2.6.3 Paluci Marco.................................................................................................................119
2.6.4 Previtali Fabio................................................................................................................121
2.7 Conclusioni dell'unità.............................................................................................123
3. Prototipo dell'applicazione..............................................................................124
3.1 Introduzione............................................................................................................124
3.1.1 Scopo dell'unità.............................................................................................................124
3.2 Albero di navigazione..............................................................................................125
3.2.1 Visione d'insieme...........................................................................................................125
3.2.2 Diagrammi albero di navigazione..................................................................................125
3.2.2.1 Diagrammi albero di navigazione: Amministratore..........................................................125
3.2.2.2 Diagrammi albero di navigazione: Allenatore...................................................................126
3.2.2.2.1 Diagrammi albero di navigazione: Allenatore (Parte 1)............................................................126
3.2.2.2.2 Diagrammi albero di navigazione: Allenatore (Parte 2)............................................................126
3.2.2.2.3 Diagrammi albero di navigazione: Allenatore (Parte 3)............................................................127
3.2.2.2.4 Diagrammi albero di navigazione: Allenatore (Parte 4)............................................................127
3.2.2.2.5 Diagrammi albero di navigazione: Allenatore (Parte 5)............................................................128
3.2.2.3 Diagrammi albero di navigazione: Presidente della Lega..................................................128
6
Progetto di Ingegneria del Software – Fantacalcio On-Line
3.2.2.4 Diagrammi albero di navigazione: Visitatore....................................................................129
3.2.2.4.1 Diagrammi albero di navigazione: Visitatore (Parte 1).............................................................129
3.2.2.4.2 Diagrammi albero di navigazione: Visitatore (Parte 2).............................................................129
3.2.2.4.3 Diagrammi albero di navigazione: Visitatore (Parte 3).............................................................130
3.2.2.4.4 Diagrammi albero di navigazione: Visitatore (Parte 4).............................................................130
3.2.3 ADM (Araneus Data Model)........................................................................................131
3.2.3.1 ADM (Araneus Data Model): Amministratore................................................................131
3.2.3.1.1 ADM (Araneus Data Model): Amministratore (Parte 1).........................................................131
3.2.3.1.2 ADM (Araneus Data Model): Amministratore (Parte 2).........................................................132
3.2.3.2 ADM (Araneus Data Model): Allenatore.........................................................................133
3.2.3.2.1 ADM (Araneus Data Model): Allenatore (Parte 1)...................................................................133
3.2.3.2.2 ADM (Araneus Data Model): Allenatore (Parte 2)...................................................................134
3.2.3.2.3 ADM (Araneus Data Model): Allenatore (Parte 3)...................................................................135
3.2.3.2.4 ADM (Araneus Data Model): Allenatore (Parte 4)...................................................................136
3.2.3.2.5 ADM (Araneus Data Model): Allenatore (Parte 5)...................................................................137
3.2.3.2.6 ADM (Araneus Data Model): Allenatore (Parte 6)...................................................................138
3.2.3.3 ADM (Araneus Data Model): Presidente della Lega........................................................139
3.2.3.4 ADM (Araneus Data Model): Visitatore..........................................................................140
3.2.3.4.1 ADM (Araneus Data Model): Visitatore (Parte 1)...................................................................140
3.2.3.4.2 ADM (Araneus Data Model): Visitatore (Parte 2)...................................................................141
3.2.3.4.3 ADM (Araneus Data Model): Visitatore (Parte 3)...................................................................142
3.3 Sequence Diagram...................................................................................................143
3.3.1 Sequence Diagram: registrazione al sistema (UC-1)....................................................143
3.3.2 Sequence Diagram: consultazione delle rose delle squadre iscritte (UC-2)...............144
3.3.3 Sequence Diagram: consultazione informazioni sulla lega (UC-3)..............................145
3.3.4 Sequence Diagram: consultazione statistiche (UC-4)...................................................145
3.3.5 Sequence Diagram: consultazione risultati (UC-5)......................................................146
3.3.6 Sequence Diagram: partecipazione al calciomercato durante la stagione (UC-6).........147
3.3.7 Sequence Diagram: modalità asta a rialzo (UC-8)........................................................148
3.3.8 Sequence Diagram: modalità asta a busta chiusa (UC-9).............................................149
3.3.9 Sequence Diagram: login (UC-10)................................................................................150
3.3.10 Sequence Diagram: scelta modalità formazione (UC-11)............................................150
3.3.11 Sequence Diagram: scelta formazione senza l'ausilio del sistema (UC-12).............151
7
Progetto di Ingegneria del Software – Fantacalcio On-Line
3.3.12 Sequence Diagram: scelta formazione con l'ausilio del sistema (UC-13)...................151
3.3.13 Sequence Diagram: creazione della lega (UC-14).......................................................152
3.3.14 Sequence Diagram: inserimento numero partecipanti (UC-15).................................152
3.3.15 Sequence Diagram: scelta modalità asta (UC-16).......................................................153
3.3.16 Sequence Diagram: scelta modalità busta chiusa (UC-17).........................................153
3.3.17 Sequence Diagram: scelta modalità di offerta a rialzo (UC-18)..................................154
3.3.18 Sequence Diagram: gestione lega (UC-19)..................................................................154
3.3.19 Sequence Diagram: modifica lista calciatori (UC-20).................................................155
3.4 Il prototipo...............................................................................................................156
3.4.1 Scelte effettuate..............................................................................................................156
3.4.2 Struttura delle pagine....................................................................................................157
3.4.3 Screenshot......................................................................................................................158
3.4.3.1 Login (index.html, logadmin.html, logallenatore.html).....................................................159
3.4.3.2 Registrazione al sistema (registrazione.html)....................................................................161
3.4.3.3 Consultazione statistiche (statistiche_calciatore.html, lista_calciatori.html, calciatore.html)
......................................................................................................................................................162
3.4.3.4 Consultazione risultati (calendario.html, partita.html classifica.html).............................164
3.4.3.5 Consultazione rose delle squadre iscritte (rosa.html)........................................................166
3.4.3.6 Consultazione informazioni sulla lega (infolega.html)......................................................167
3.4.3.7 Scelta modalità senza l'ausilio del sistema (formazione_manuale.html)...........................168
3.4.3.8 Scelta modalità con l'ausilio del sistema (formazione_assistita.html,
formazione_assistita_passo2.html, riepilogo_formazione_assistita.html).....................................169
3.4.3.9 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)...............................................................................................172
3.4.3.10 Modalità asta a busta chiusa (crea_rosa_busta.html, crea_rosa_busta_riepilogo.html). .174
3.4.3.11 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)
......................................................................................................................................................176
3.4.3.12 Gestione Lega (inserimento_voti.html, modifica_calciatori.html,
riepilogo_dati_inseriti.html).........................................................................................................181
3.4.3.13 Modifica lista calciatori (modifica_calciatori.html).........................................................183
8
Progetto di Ingegneria del Software – Fantacalcio On-Line
3.4.3.14 Crea Lega (crea_lega.html)..............................................................................................184
3.4.3.15 Inserimento numero partecipanti (numero_partecipanti.html).......................................184
3.4.3.16 Scelta modalità asta (scelta_modalita_asta.html)............................................................185
3.4.3.17 Crea lega modalità busta chiusa (crea_lega_modalita_busta.html,
riepilogo_crea_lega_busta.html)...................................................................................................185
3.4.3.18 Crea lega modalità rialzo (crea_lega_modalita_rilancio.html,
riepilogo_crea_lega_rilancio.html)................................................................................................187
3.4.4 Dettaglio delle pagine (forma tabellare).........................................................................188
3.5 Conclusioni dell'unità.............................................................................................195
4. Disegno del sistema...........................................................................................196
4.1 Introduzione............................................................................................................196
4.1.1 Scopo dell'unità.............................................................................................................196
4.2 Basi di dati...............................................................................................................197
4.2.1 Schema ER.....................................................................................................................197
4.2.2 Glossario delle entità e delle relazioni............................................................................199
4.2.3 Elenco di tutti i vincoli non esprimibili mediante lo schema ER..................................214
4.2.4 Schema ER ristrutturato...............................................................................................215
4.2.5 Schema logico.................................................................................................................216
4.2.6 Schema logico ristrutturato...........................................................................................220
4.2.7 Definizione della politica adottata nelle cancellazioni di dati nel caso di vincoli di
inclusione o foreign key..........................................................................................................223
4.2.8 Elenco delle utenze che devono essere definite sulla base di dati...................................223
4.2.9 Codice SQL per la creazione della base di dati..............................................................223
4.2.9.1 Creazione delle tabelle.......................................................................................................223
4.2.9.2 Foreign Key.......................................................................................................................228
4.2.9.3 Stored Procedure...............................................................................................................230
4.2.9.4 Trigger..............................................................................................................................237
4.2.10 Vincoli di stato.............................................................................................................239
4.2.10.1 Specifica dei trigger.........................................................................................................243
4.2.10.2 Altri vincoli di stato........................................................................................................244
4.2.11 Vincoli di stato implementati tramite transazioni......................................................244
9
Progetto di Ingegneria del Software – Fantacalcio On-Line
4.2.12 Ridondanze..................................................................................................................245
4.3 Architettura hardware.............................................................................................246
4.4 Piattaforma software................................................................................................247
4.5 Architettura software...............................................................................................248
4.5.1 Introduzione..................................................................................................................248
4.5.2 Scelte effettuate..............................................................................................................248
4.5.3 Implementation Model...................................................................................................249
4.5.3.1 Deployment Diagram........................................................................................................249
4.5.3.2 Component Diagram.........................................................................................................250
4.5.3.3 Package Diagram..............................................................................................................250
4.5.4 Design Model.................................................................................................................253
4.5.4.1 Servlets..............................................................................................................................254
4.5.4.2 Controller..........................................................................................................................255
4.5.4.3 Domain Classes.................................................................................................................256
4.5.4.4 Persistence Classes............................................................................................................257
4.5.4.5 Utility...............................................................................................................................257
4.5.5 Responsabilità delle associazioni...................................................................................258
4.5.6 Design Model e Sequence Diagram suddivisi per Use Case.........................................258
4.5.6.1 Design Model e Sequence Diagram: registrazione al sistema (UC-1)...............................259
4.5.6.2 Design Model e Sequence Diagram: consultazione delle rose delle squadre iscritte (UC-2)
......................................................................................................................................................260
4.5.6.3 Design Model e Sequence Diagram: consultazione informazioni sulla lega (UC-3).........261
4.5.6.4 Design Model e Sequence Diagram: consultazione statistiche (UC-4)..............................262
4.5.6.5 Design Model e Sequence Diagram: consultazione risultati (UC-5).................................263
4.5.6.5.1 Design Model e Sequence Diagram: consultazione calendario..................................................263
4.5.6.5.2 Design Model e Sequence Diagram: consultazione classifica....................................................264
4.5.6.6 Design Model e Sequence Diagram: partecipazione al calciomercato durante la stagione
(UC-6)...........................................................................................................................................265
4.5.6.7 Design Model e Sequence Diagram: creazione rosa modalità asta a rialzo (UC-8)...........266
4.5.6.8 Design Model e Sequence Diagram: creazione rosa modalità asta a busta chiusa (UC-9).267
4.5.6.9 Design Model e Sequence Diagram: login (UC-10)..........................................................268
4.5.6.10 Design Model e Sequence Diagram: scelta formazione senza l'ausilio del sistema (UC-12)
10
Progetto di Ingegneria del Software – Fantacalcio On-Line
......................................................................................................................................................269
4.5.6.11 Design Model e Sequence Diagram: scelta formazione con l'ausilio del sistema (UC-13)
......................................................................................................................................................270
4.5.6.12 Design Model e Sequence Diagram: creazione della lega modalità asta a rialzo (UC-18)
......................................................................................................................................................271
4.5.6.13 Design Model e Sequence Diagram: gestione lega (UC-19)............................................272
4.5.6.13.1 Design Model e Sequence Diagram: inserimento voti.............................................................272
4.5.6.13.2 Design Model e Sequence Diagram: calcolo dei risultati.........................................................273
4.5.6.14 Design Model e Sequence Diagram: modifica lista calciatori (UC-20)............................274
4.5.6.14.1 Design Model e Sequence Diagram: modifica calciatori..........................................................274
4.5.6.14.2 Design Model e Sequence Diagram: inserimento calciatori.....................................................276
4.6 Conclusioni dell'unità.............................................................................................277
5. Implementazione................................................................................................278
5.1 Introduzione............................................................................................................278
5.1.1 Scopo dell'unità.............................................................................................................278
5.2 Regole adottate per la stesura del codice...................................................................279
5.3 Differenze introdotte rispetto alla fase di analisi e di prototipazione.......................280
5.4 Conclusioni dell'unità.............................................................................................282
6. Manuale d'installazione e d'uso......................................................................283
6.1 Installazione degli stumenti necessari al funzionamento.........................................283
6.1.1 Installazione della Java Virtual Machine......................................................................283
6.1.2 Installazione del DBMS MySQL 5.0............................................................................283
6.1.2.1 Configurazione MySQL Server.........................................................................................283
6.1.3 Creazione e popolamento...............................................................................................284
6.1.4 Installazione Tomcat 6.0.14...........................................................................................284
6.2 Manuale d'uso.........................................................................................................285
6.2.1 Funzionalità del visitatore.............................................................................................285
6.2.2 Funzionalità dell'allenatore...........................................................................................286
6.2.3 Funzionalità dell'amministratore..................................................................................286
7. Piano dei test......................................................................................................288
7.1 Introduzione............................................................................................................288
11
Progetto di Ingegneria del Software – Fantacalcio On-Line
7.1.1 Scopo dell'unità.............................................................................................................288
7.2 Strategia dei test......................................................................................................289
7.2.1 Test di unità...................................................................................................................289
7.2.1.1 White Box..........................................................................................................................289
7.2.1.2 Black Box...........................................................................................................................290
7.2.2 Test di accettazione........................................................................................................290
7.3 Rapporto dei test......................................................................................................291
7.3.1 Test di unità...................................................................................................................291
7.3.1.1 White Box..........................................................................................................................291
7.3.1.1.1 ServletLogin: metodo doPost......................................................................................................291
7.3.1.1.2 ServletAcquisisciRose: metodo doPost.......................................................................................295
7.3.1.1.3 DAOAllenatore: metodo verifica................................................................................................297
7.3.1.2 Black Box...........................................................................................................................301
7.3.1.2.1 AssociazioneDisputa: metodo calcolaFantavoto.........................................................................301
7.3.1.2.2 ControllerCalciatore: metodo acquisisciCalciatoriPerAstaRialzo..............................................303
7.3.1.2.3 DAOAllenatore: metodo verifica................................................................................................304
7.3.1.2.4 DAOPortiere: metodo inserimentoPortiere................................................................................305
7.3.2 Test di accettazione........................................................................................................306
7.3.2.1 registrazione al sistema (UC-1).........................................................................................306
7.3.2.2 scelta formazione senza l'ausilio del sistema (UC-12).......................................................310
7.4 Conclusioni dell'unità.............................................................................................313
8. Conclusioni del progetto...................................................................................314
8.1 Introduzione............................................................................................................314
8.1.1 Scopo dell'unità.............................................................................................................314
8.2 Criticità e problemi riscontrati.................................................................................315
8.3 Assessment del lavoro svolto....................................................................................316
8.3.1 Foglio di rilascio: generale.............................................................................................317
8.3.2 Foglio di rilascio: Malacario Mirko...............................................................................318
8.3.3 Foglio di rilascio: Paluci Marco.....................................................................................319
8.3.4 Foglio di rilascio: Previtali Fabio...................................................................................320
8.3.5 Attendibilità sulla stima................................................................................................321
9. Bibliografia.........................................................................................................322
12
Progetto di Ingegneria del Software – Fantacalcio On-Line
10. Sitografia...........................................................................................................323
13
Progetto di Ingegneria del Software – Fantacalcio On-Line
Strumenti utilizzati
Applicazioni utilizzate Scopo dell'utilizzoOpenOffice.org Writer 2.4 Stesura del presente documento.
Visual Paradigm for UML Standard Edition 6.2
Analisi testuale; realizzazione degli use case e del class diagram; stesura del report di analisi; stesura dei sequence diagram.
COCOMO II Calcolo dello sforzo.
PlanBee Realizzazione del diagramma di Pert e GANTT.
Microsoft Office Excel 2003 Realizzazione dei diagrammi di COCOMO.
Adobe Dreamweaver CS3 Stesura delle pagine HTML.
OpenOffice.org Impress 2.4 Stesura dell'albero di navigazione.
Microsoft Visio 2007 Stesura dell'Araneus Data Model (ADM).
Mozilla Firebug 1.2.1 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 6.0.14 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 2003 Disegno degli alberi per i test White Box.
14
Progetto di Ingegneria del Software – Fantacalcio On-Line
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 2003.
➢ 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 2003; 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
Progetto di Ingegneria del Software – Fantacalcio On-Line
➢ 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 2003: 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 2003), 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
Progetto di Ingegneria del Software – Fantacalcio On-Line
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 2007: 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
Progetto di Ingegneria del Software – Fantacalcio On-Line
➢ 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.0.14). Una pecca molto
grande è la non intuitività dell'importazione di un progetto già esistente come per
esempio è nell'ide Netbeans.
➢ Apache Tomcat 6.0.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 2003: 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
Progetto di Ingegneria del Software – Fantacalcio On-Line
1. Requisiti utente e specifiche funzionali del sistema
1.1 Introduzione
1.1.1 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
Progetto di Ingegneria del Software – Fantacalcio On-Line
1.2 Requisiti utente
1.2.1 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 10) 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
20
Progetto di Ingegneria del Software – Fantacalcio On-Line
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
Progetto di Ingegneria del Software – Fantacalcio On-Line
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
Progetto di Ingegneria del Software – Fantacalcio On-Line
1.2.3 Il dominio di interesse
Nell'applicazione sono di interesse gli allenatori caratterizzati da: username
(identificativo), password, email. 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 10 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. Esistono solo 4
23
Progetto di Ingegneria del Software – Fantacalcio On-Line
tipologie di calciatore: portiere, difensore, centrocampista, attaccante.
1.2.4 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
Progetto di Ingegneria del Software – Fantacalcio On-Line
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
Progetto di Ingegneria del Software – Fantacalcio On-Line
1.3 Analisi dei dati: progettazione concettuale
1.3.1 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
Progetto di Ingegneria del Software – Fantacalcio On-Line
1.3.2 Class Diagram
27
Progetto di Ingegneria del Software – Fantacalcio On-Line
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à 0..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.
1.3.4 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
Progetto di Ingegneria del Software – Fantacalcio On-Line
1.3.4.1 Attori
VisitatoreCandidate 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
AllenatoreCandidate 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
AmministratoreCandidate Item Type Actor
Candidate Item Description L'amministratore è colui che gestisce le leghe
Candidate Item Text amministratore
Create Model Amministratore
29
Progetto di Ingegneria del Software – Fantacalcio On-Line
Presidente della LegaCandidate 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
30
Progetto di Ingegneria del Software – Fantacalcio On-Line
1.3.4.2 Use Case
registrazione al sistemaCandidate Item Type Use Case
Candidate Item Description
Il visitatore inserisce: username, password, email, 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
loginCandidate Item Type Use Case
Candidate Item DescriptionL'allenatore e l'amministratore devono necessariamente loggarsi per accedere a tutte le funzionalità del sistema
Candidate Item Text login
Create Model login
creazione della legaCandidate 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
Progetto di Ingegneria del Software – Fantacalcio On-Line
scelta modalità astaCandidate 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 chiusaCandidate Item Type Use Case
Candidate Item DescriptionIl 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 partecipantiCandidate Item Type Use Case
Candidate Item DescriptionIl 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 sistemaCandidate 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
Progetto di Ingegneria del Software – Fantacalcio On-Line
scelta formazione senza l'ausilio del sistemaCandidate 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 statisticheCandidate Item Type Use Case
Candidate Item DescriptionIl visitatore può consultare le statistiche relative a qualsiasi calciatore presente nel sistema
Candidate Item Text consultare statistiche sui calciatori
Create Model consultazione risultati
consultazione risultatiCandidate Item Type Use Case
Candidate Item DescriptionIl 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 legaCandidate 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
Progetto di Ingegneria del Software – Fantacalcio On-Line
partecipazione al calciomercato durante la stagioneCandidate 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à formazioneCandidate Item Type Use Case
Candidate Item DescriptionL'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 rosaCandidate Item Type Use Case
Candidate Item DescriptionL'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 chiusaCandidate 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
Progetto di Ingegneria del Software – Fantacalcio On-Line
modalità asta a rialzoCandidate 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 rialzoCandidate 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 iscritteCandidate 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 legaCandidate 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
Progetto di Ingegneria del Software – Fantacalcio On-Line
modifica lista calciatoriCandidate Item Type Use Case
Candidate Item DescriptionL'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
Progetto di Ingegneria del Software – Fantacalcio On-Line
1.3.4.3 Classi
AllenatoreCandidate Item Type Class
Candidate Item Description La classe mantiene le informazioni fondamentali relative agli allenatori
Candidate Item Text allenatore
Create Model allenatore
LegaCandidate Item Type Class
Candidate Item Description La classe mantiene le informazioni fondamentali relative alle leghe
Candidate Item Text lega
Create Model Lega
LegaConAstaBustaChiusaCandidate Item Type Class
Candidate Item DescriptionLa classe mantiene in particolare le informazioni sulla lega con modalità d'asta a busta chiusa
Candidate Item Text lega con asta a busta chiusa
Create Model LegaConAstaBustaChiusa
LegaConAstaRialzoCandidate Item Type Class
Candidate Item DescriptionLa classe mantiene in particolare le informazioni sulla lega con modalità d'asta a rialzo
Candidate Item Text lega con asta a rialzo
Create Model LegaConAstaRialzo
37
Progetto di Ingegneria del Software – Fantacalcio On-Line
FantasquadraCandidate Item Type Class
Candidate Item Description La classe mantiene le informazioni fondamentali della fantasquadra
Candidate Item Text fantasquadra
Create Model Fantasquadra
CalciatoreCandidate 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
Create Model Calciatore
PortiereCandidate Item Type Class
Candidate Item Description La classe dedicata ai calciatori il cui ruolo è portiere
Candidate Item Text portiere
Create Model Portiere
DifensoreCandidate Item Type Class
Candidate Item Description La classe dedicata ai calciatori il cui ruolo è difensore
Candidate Item Text difensore
Create Model Difensore
38
Progetto di Ingegneria del Software – Fantacalcio On-Line
CentrocampistaCandidate Item Type Class
Candidate Item Description La classe dedicata ai calciatori il cui ruolo è centrocampista
Candidate Item Text centrocampista
Create Model Centrocampista
AttaccanteCandidate Item Type Class
Candidate Item Description La classe dedicata ai calciatori il cui ruolo è attaccante
Candidate Item Text attaccante
Create Model Attaccante
GiornataCampionatoRealeCandidate Item Type Class
Candidate Item Description Rappresenta la giornata del campionato reale di serie A
Candidate Item Text giornata del campionato di seria A
Create Model GiornataCampionatoReale
39
Progetto di Ingegneria del Software – Fantacalcio On-Line
1.3.5 Glossario degli attributi
Classe: GiornataCampionatoRealeAttributo Dominio Descrizione
giornata Intero[0,38] Numero corrispondente alla giornata di campionato reale
Classe: FantasquadraAttributo Dominio Descrizione
nome Stringa [1,100]Il nome assegnato
dall'allenatore alla propria fantasquadra
fantastadio Stringa [1,100]Il nome assegnato
dall'allenatore allo stadio della sua fantasquadra
fantamilioni Intero [0,250]Il numero di crediti
disponibili nella cassa dellla fantasquadra
Associazione: FormazioneAttributo Dominio Descrizione
giornata Intero [1,36]
Numero corrispondente alla giornata di campionato
fantacalcistica in cui viene schierato il calciatore nella formazione della squadra
titolare BooleanoValore che indica se il
calciatore parte titolare o no nella formazione
Inciso BooleanoIndica se il calciatore ha
inciso o meno nel calcolo dei fantapunti
40
Progetto di Ingegneria del Software – Fantacalcio On-Line
Classe: CalciatoreAttributo Dominio Descrizione
id Intero [>= 0]Numero corrispondente
univocamente ad un calciatore iscritto al campionato si serie A
cognome Stringa [1,50] Il cognome del calciatore
nome Stringa [1,100] Il nome del calciatore
squadra Stringa [1,40] Il nome della squadra di serie A a cui appartiene il calciatore
media_voto Reale [>= 0] La media dei voti ottenuti dal calciatore nel campionato di serie A
fantamedia Reale [>= 0] 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 [>= 0] Il numero di reti segnate dal calciatore
totale_gol_subiti Intero [>= 0] Il numero di reti subite dal calciatore
totale_ammonizioni Intero [>= 0] La somma delle ammonizioni ricevute
totale_espulsioni Intero [>= 0] La somma delle espulsioni
totale_rigori_parati Intero [>= 0] Il numero di rigori parati dal calciatore
totale_rigori_sbagliati Intero [>= 0] Il numero di rigori sbagliati dal calciatore
totale_assist Intero [>= 0] Il totale degli assist effettuati dal calciatore
presenze Intero [>= 0] Il numero di presenze totalizzate dal calciatore
41
Progetto di Ingegneria del Software – Fantacalcio On-Line
Associazione: DisputaAttributo Dominio Descrizione
gol_fatti Intero [>= 0]Numero dei gol realizzati dal calciatore nell'ambito della giornata di interesse
gol_subiti Intero [>= 0]Numero dei gol subiti dal calciatore nell'ambito della
giornata di interesse
assist Intero [>= 0]
Numero degli assist effettuati dal calciatore
nell'ambito della giornata di interesse
ammonito BooleanoIndividua se il calciatore nella giornata è stato di
ammonito o no
espulso BooleanoIndividua se il calciatore
nella giornata è stato espulso o meno
votoReale
[0,0.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,10]
Valore che indica il voto preso nella giornata di campionato reale dal
calciatore
rigori_parati Intero [>= 0]Numero di rigori parati dal calciatore nella giornata di
campionato reale
rigori_sbagliati Intero [>= 0]Numero di rigori falliti dal calciatore nella giornata di
campionato reale
fantavoto Reale [>= 0]Il voto del fantacalciatore
ricalcolato con le regole del fantacalcio
disputata Booleano Indica se il calciatore ha disputato o meno la giornata
42
Progetto di Ingegneria del Software – Fantacalcio On-Line
Associazione: PartitaAttributo Dominio Descrizione
giornata Intero [1,36]
Numero corrispondente alla giornata di campionato fantacalcistico in cui si
disputa la partita
gol_squadra_casa Intero [>= 0]Numero dei gol effettuati
dalla fantasquadra che gioca in casa nella partita
gol_fantasquadra_ospite Intero [>= 0]Numero dei gol effettuati
dalla fantasquadra che gioca in trsferta nella partita
fantapunti_casa Reale [>= 0]Punti realizzati dalla
squadra che gioca in casa nella partita
fantapunti_ospite Reale [>= 0]Punti realizzati dalla squadra che gioca in trasferta nella partita
disputata BooleanoIndica se la partita in
questione è stata disputata o meno
Classe: LegaAttributo Dominio Descrizione
nome Stringa [1,100] Nome della lega
data_apertura_asta Stringa [10] La data che indica l'inizio dell'asta
numero_partecipanti Intero [4,6,8,10] Il numero delle squadre che partecipano alla lega
Classe: LegaConAstaBustaChiusaAttributo Dominio Descrizione
data_scadenza_asta Stringa [10]La data che indica il termine di presentazione delle buste per la partecipaizone all'asta
43
Progetto di Ingegneria del Software – Fantacalcio On-Line
Classe: LegaconAstaRialzoAttributo Dominio Descrizione
durata Intero[1,12]
Numero corrispondente alla durata dell'asta interattiva a
rialzo. La durata indica le ore
Classe: AllenatoreAttributo Dominio Descrizione
username Stringa [4,30]
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
email Stringa [6,80] La mail dell'allenatore
44
Progetto di Ingegneria del Software – Fantacalcio On-Line
Associazione: ClassificaAttributo Dominio Descrizione
giornata Intero [0,36]Numero corrispondente alla
giornata di campionato fantacalcistico
posizione Intero [1,numero_partecipanti]
La posizione della fantasquadra nella classifica
della lega in una determinata giornata
punteggio Intero [>= 0]I punti totalizzati fino
all'ultima giornata disputata dalla fantasquadra nella lega
fantapunteggio Reale [>= 0]I fantapunti totalizzati fino
all'ultima giornata disputata dalla fantasquadra nella lega
vinte Intero [>= 0]
Il numero di vittorie totalizzatie fino alla giornata disputata dalla fantasquadra
nella lega
pareggiate Intero [>= 0]
Il numero di partite pareggiate fino alla giornata disputata dalla fantasquadra
nella lega
perse Intero [>= 0]Il numero di partite perse
fino alla giornata disputata dalla fantasquadra nella lega
gol_fatti Intero [>= 0]Il numero di reti segnate fino alla giornata disputata dalla
fantasquadra nella lega
gol_subiti Intero [>= 0]Il numero di reti subite fino alla giornata disputata dalla
fantasquadra nella lega
45
Progetto di Ingegneria del Software – Fantacalcio On-Line
1.4 Requisiti funzionali del sistema: gli Use Case Diagram
1.4.1 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
Progetto di Ingegneria del Software – Fantacalcio On-Line
1.4.2 Schema completo dello Use Case Diagram
47
Progetto di Ingegneria del Software – Fantacalcio On-Line
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, email, 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 statisticheIl visitatore può consultare le statistiche relative a qualsiasi calciatore presente nel sistema
consultazione risultatiIl 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
loginL'allenatore e l'amministratore devono necessariamente loggarsi per accedere a tutte le funzionalità del sistema
scelta modalità formazioneL'allenatore seleziona la modalità di scelta della formazione: con o senza l'ausilio del sistema
48
Progetto di Ingegneria del Software – Fantacalcio On-Line
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 rosaL'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 partecipantiIl 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 chiusaIl 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
Progetto di Ingegneria del Software – Fantacalcio On-Line
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 calciatoriL'amministratore ha la possibilità di inserire nuovi calciatori oppure può modificare o eliminare calciatori già presenti
1.4.4 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.
50
Progetto di Ingegneria del Software – Fantacalcio On-Line
1.4.5 Use Case Diagram in dettaglio: Visitatore
1.4.5.1 Use Case Visitatore: registrazione al sistema
MainUse Case ID UC-1Use Case Realtions Nessuna
Primary Actor Visitatore
Goal Registrarsi al sistema per ricoprire il ruolo di allenatore. SecondaryActor(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.
Pre-Conditions Nessuna
Post-Conditions Il visitatore è registrato al sistema nel ruolo di allenatore.
Main Succes Scenario
Actor Input System Response
1 Dati personali
51
Progetto di Ingegneria del Software – Fantacalcio On-Line
2 Riepilogo operazione e richiesta conferma
3 Conferma
4 Operazione effettuata con successo
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'email sia in un formato sintatticamente scorretto2b: Nel caso di utente oppure nome della fantasquadra già esistente il sistema manda un messaggio di errore3a: Se non c'è la conferma il sistema annulla l'operazione
Non-behavior requirements Il sito web visualizza i dati inseriti in forma tabellare
Author Marco Paluci
Date 28/04/2008
1.4.5.2 Sequence Diagram: registrazione al sistema
52
Progetto di Ingegneria del Software – Fantacalcio On-Line
1.4.5.3 Use Case Visitatore: consultazione delle rose delle squadre iscritte
MainUse Case ID UC-2Use Case Realtions Nessuna
Primary Actor Visitatore
Goal Ottenere informazioni sulle rose delle varie squadre iscritte SecondaryActor(s) and their goals
Nessuno
Brief Description
Il visitatore può ottenere le informazioni sulle rose delle varie squadre scegliendo la squadra desiderata
Pre-Conditions
Deve essere stata creata una lega e tutte le squadre partecipanti hanno creato una rosa
Post-Conditions Nessuna
Main Succes Scenario
Actor Input System Response
1 Squadra, Lega
2 Rosa della squadra
Extensions NessunaNon-behavior requirements Il sito web visualizza i dati ricercati in forma tabellare
Author Marco Paluci
Date 05/06/2008
1.4.5.4 Sequence Diagram: consultazione delle rose delle squadre iscritte
53
Progetto di Ingegneria del Software – Fantacalcio On-Line
1.4.5.5 Use Case Visitatore: consultazione informazioni sulla lega
MainUse Case ID UC-3Use Case Realtions Nessuna
Primary Actor Visitatore
Goal Ottenere informazioni sulla lega in corsoSecondaryActor(s) and their goals
Nessuno
Brief Description Il visitatore può ottenere le informazioni sulle leghe in corso
Pre-Conditions Deve essere stata creata la lega
Post-Conditions Nessuna
Main Succes Scenario
Actor Input System Response
1 Lega
2 Informazioni Lega
Extensions NessunaNon-behavior requirements Il sito web visualizza i dati ricercati in forma tabellare
Author Fabio Previtali
Date 05/06/2008
1.4.5.6 Sequence Diagram: consultazione informazioni sulla lega
54
Progetto di Ingegneria del Software – Fantacalcio On-Line
1.4.5.7 Use Case Visitatore: consultazione statistiche
MainUse Case ID UC-4Use Case Realtions Nessuna
Primary Actor Visitatore
Goal Ottenere le informazioni desiderate sul calciatore richiesto SecondaryActor(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
Pre-Conditions Nessuna
Post-Conditions Nessuna
Main Succes Scenario
Actor Input System Response
1 Ricerca del calciatore
2 Lista dei calciatori che soddisfano la richiesta
3 Selezione del calciatore
4 Informazioni complete sul calciatore selezionato
Extensions 2a: Nel caso nessun calciatore corrisponda alle specifiche richieste il sistema notifica l'assenza di calciatori con tali caratteristiche
Non-behavior requirements Il sito web visualizza i dati ricercati in forma tabellare
Author Mirko Malacario
Date 30/04/2008
55
Progetto di Ingegneria del Software – Fantacalcio On-Line
1.4.5.8 Sequence Diagram: consultazione statistiche
1.4.5.9 Use Case Visitatore: consultazione risultati
MainUse Case ID UC-5Use Case Realtions Nessuna
Primary Actor Visitatore
Goal Ottenere le informazioni desiderate sui risultati delle leghe in corsoSecondaryActor(s) and their goals
Nessuno
Brief Description
Il visitatore può ottenere le informazioni sulle leghe in corso scegliendo la pagina opportuna del sito web
Pre-Conditions
Deve essere stata creata una lega e tutte le squadre partecipanti si sono iscritte ad essa
Post-Conditions Nessuna
Main Succes Scenario
Actor Input System Response
1
Scelta delle informazioni da consultare sulla lega (calendario con risultati delle partite o classifica delle squadre)
2 Dati richiesti
56
Progetto di Ingegneria del Software – Fantacalcio On-Line
Extensions NessunaNon-behavior requirements Il sito web visualizza i dati ricercati in forma tabellare
Author Marco Paluci
Date 30/04/2008
1.4.5.10 Sequence Diagram: consultazione risultati
1.4.6 Use Case Diagram in dettaglio: Allenatore
57
Progetto di Ingegneria del Software – Fantacalcio On-Line
1.4.6.1 Use Case Allenatore: partecipazione al calciomercato durante la stagione
MainUse Case ID UC-6Use Case Realtions Include lo use case login
Primary Actor Allenatore
Goal Modificare la rosa secondo gli obiettivi di mercato prestabiliti SecondaryActor(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
Pre-Conditions Aver creato la propria rosa
Post-Conditions
La rosa è stata modificata in modo consistente in base alle operazioni effettuate nella fase di calciomercato
Main Succes Scenario
Actor Input System Response
1 Giocatore da vendere
2
Accetta la vendita del calciatore ed aumenta i crediti a disposizione dell'allenatore
3 Pagina di ricerca dei calciatori
4
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)
5 Lista dei calciatori che soddisfano la richiesta
6 Selezione del calciatore
7 Riepilogo operazione e richiesta conferma
58
Progetto di Ingegneria del Software – Fantacalcio On-Line
8 Conferma
9 Operazione effettuata con successo
Extensions5a: Nel caso nessun calciatore corrisponda alle specifiche richieste il sistema genera un messaggio di errore8a: Se non c'è la conferma il sistema annulla l'operazione
Non-behavior requirements
Il sito web visualizza le pagine che permette lo svolgimento di tale operazione
Author Fabio Previtali, Marco Paluci, Mirko Malacario
Date 30/04/2008
1.4.6.2 Sequence Diagram: partecipazione al calciomercato durante la stagione
59
Progetto di Ingegneria del Software – Fantacalcio On-Line
1.4.6.3 Use Case Allenatore: creazione rosa
MainUse Case ID UC-7
Use Case Realtions
E' generalizzato dagli use case: modalità asta a rialzo e modalità asta a busta chiusaInclude lo use case: login
Primary Actor Allenatore
Goal Creare la rosa della propria squadra SecondaryActor(s) and their goals
Nessuno
Brief Description
L'allenatore crea la propria rosa partecipando all'asta con gli altri allenatori
Pre-Conditions Nessuna
Post-Conditions
L'allenatore dispone della rosa composta esattamente da 25 calciatori per disputare la lega
Main Succes Scenario
Actor Input System Response
1
Extensions Nessuna
Non-behavior requirements
Il sito web mostra la pagina di riepilogo della propria rosa in forma tabellare
Author Marco Paluci
Date 07/05/2008
60
Progetto di Ingegneria del Software – Fantacalcio On-Line
1.4.6.4 Use Case Allenatore: modalità asta a rialzo
MainUse Case ID UC-8Use 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
SecondaryActor(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
Pre-Conditions Nessuna
Post-Conditions
L'allenatore dispone della rosa composta esattamente da 25 calciatori per disputare la lega
Main Succes Scenario
Actor Input System Response
1 Proposta calciatore
2 Offerta
3 Accetta offerta
4
5
6 Comunica esito del turno
7 Operazione effettuata con successo
Extensions
3a: Nel caso l'offerta fatta non sia in un formato valido oppure superi i crediti disponibili viene richiesto di formulare nuovamente l'offerta6a: Nel caso l'allenatore non fosse il migliore offerente può tornare al passo 2 oppure ritirarsi dall'asta per quel calciatore
Non-behavior requirements
Il sito web visualizza la pagina che permette lo svolgimento di tale operazione
61
Progetto di Ingegneria del Software – Fantacalcio On-Line
Author Fabio Previtali, Marco Paluci, Mirko Malacario
Date 07/05/2008
1.4.6.5 Sequence Diagram: modalità asta a rialzo
1.4.6.6 Use Case Allenatore: modalità asta a busta chiusa
MainUse Case ID UC-9Use 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
SecondaryActor(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
Pre-Conditions Nessuna
Post-Conditions
L'allenatore dispone della rosa composta esattamente da 25 calciatori per disputare la lega
Main Succes Scenario
Actor Input System Response
1 Lista calciatori
62
Progetto di Ingegneria del Software – Fantacalcio On-Line
2 Riepilogo operazione e richiesta conferma
3 Conferma
4 Operazione effettuata con successo
Extensions2a: Nel caso l'offerta fatta non sia in un formato valido oppure superi i crediti disponibili viene richiesto di formulare nuovamente l'offerta3a: Se non c'è la conferma il sistema annulla l'operazione
Non-behavior requirements Il sito web visualizza la lista in forma tabellare
Author Fabio Previtali, Marco Paluci, Mirko Malacario
Date 07/05/2008
1.4.6.7 Sequence Diagram: modalità asta a busta chiusa
63
Progetto di Ingegneria del Software – Fantacalcio On-Line
1.4.6.8 Use Case Allenatore: login
MainUse Case ID UC-10
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 sistemaSecondaryActor(s) and their goals
Amministratore
Brief Description
Accedere al sistema mediante l'inserimento dello username e della password
Pre-Conditions Essere registrato al sistema
Post-Conditions Accesso illimitato nel sistema durante la sessione corrente
Main Succes Scenario
Actor Input System Response
1 Username e password
2 Operazione effettuata con successo
Extensions 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 requirements Il sito web mostra una form per loggarsi
Author Fabio Previtali
Date 30/04/2008
64
Progetto di Ingegneria del Software – Fantacalcio On-Line
1.4.6.9 Sequence Diagram: login
1.4.6.10 Use Case Allenatore: scelta modalità formazione
MainUse 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 sistemaInclude lo use case: login
Primary Actor Allenatore
Goal Selezionare la modalità di scelta della formazione: con o senza l'ausilio del sistema
SecondaryActor(s) and their goals
Nessuno
Brief Description
L'allenatore seleziona la modalità di scelta della formazione tra le due disponibili
Pre-Conditions Aver creato la propria rosa
Post-Conditions Nessuna
Main Succes Scenario
Actor Input System Response
1 Scelta modalità
2 Pagina relativa alla scelta
Extensions NessunaNon-behavior requirements Il sito web mostra la pagina relativa alla modalità scelta in precedenza
Author Mirko Malacario
65
Progetto di Ingegneria del Software – Fantacalcio On-Line
Date 30/04/2008
1.4.6.11 Sequence Diagram: scelta modalità formazione
66
Progetto di Ingegneria del Software – Fantacalcio On-Line
1.4.6.12 Use Case Allenatore: scelta formazione senza l'ausilio del sistema
MainUse Case ID UC-12Use Case Realtions Generalizza lo use case: scelta modalità formazione
Primary Actor Allenatore
GoalSelezionare 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
SecondaryActor(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
Pre-Conditions Aver creato la propria rosa
Post-Conditions
La formazione selezionata in questa fase è stata memorizzata nella base di dati del sistema
Main Succes Scenario
Actor Input System Response
1 Modulo da utilizzare
2 Disposizione dei menu a tendina in base al modulo scelto
3 Scelta dei calciatori
4 Riepilogo operazione e richiesta conferma
5 Conferma
6 Operazione effettuata con successo
Extensions4a: Nel caso ci siano delle ripetizioni di uno o più calciatori verrà generato dal sistema un messaggio di errore5a: Se non c'è la conferma il sistema annulla l'operazione
Non-behavior requirements Il sito web mostra la pagina dedicata a fare tale operazione
Author Marco Paluci
Date 30/04/08
67
Progetto di Ingegneria del Software – Fantacalcio On-Line
1.4.6.13 Sequence Diagram: scelta formazione senza l'ausilio del sistema
1.4.6.14 Use Case Allenatore: scelta formazione con l'ausilio del sistema
MainUse Case ID UC-13Use 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
SecondaryActor(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)
Pre-Conditions Aver creato la propria rosa
Post-Conditions
La formazione selezionata in questa fase è stata memorizzata nella base di dati del sistema
Main Succes Actor Input System Response
68
Progetto di Ingegneria del Software – Fantacalcio On-Line
Scenario
1 Indisponibili
2 Rosa senza indisponibili
3 Scelta modulo
4 Selezione modulo e parametro
5 Riepilogo formazione
6 Modifica e conferma formazione
7 Riepilogo operazione e richiesta conferma
8 Conferma
9 Operazione effettuata con successo
Extensions 8a: Se non c'è la conferma il sistema annulla l'operazioneNon-behavior requirements Il sito web mostra le pagine dedicate a compiere tali operazioni
Author Mirko Malacario, Fabio Previtali, Marco Paluci
Date 06/05/2008
1.4.6.15 Sequence Diagram: scelta formazione con l'ausilio del sistema
69
Progetto di Ingegneria del Software – Fantacalcio On-Line
1.4.7 Gli Use Case diagram in dettaglio: Presidente
1.4.7.1 Use Case Presidente: creazione della lega
MainUse Case ID UC-14
Use Case Realtions
Include gli use case: inserimento numero partecipanti, scelta modalità asta
Primary Actor Presidente della Lega
GoalProcedere 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
SecondaryActor(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
Pre-Conditions Nessuna
Post-Conditions Il sistema ha memorizzato la lega creata
Main Succes Scenario
Actor Input System Response
1 Nome della lega
2 Riepilogo operazione e richiesta conferma
3 Conferma
4 Operazione effettuata con successo
70
Progetto di Ingegneria del Software – Fantacalcio On-Line
Extensions 3a: Se non c'è la conferma il sistema annulla l'operazione
Non-behavior requirements
Il sistema mostra la pagina dedicata ad effettuare tale operazione e riepiloga i dati in forma tabellare
Author Mirko Malacario
Date 05/05/2008
1.4.7.2 Sequence Diagram: creazione della lega
71
Progetto di Ingegneria del Software – Fantacalcio On-Line
1.4.7.3 Use Case Presidente: inserimento numero partecipanti
MainUse Case ID UC-15Use Case Realtions E' incluso dallo use case: creazione della lega
Primary Actor Presidente della Lega
Goal Inserire il numero di partecipanti alla legaSecondaryActor(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 10
Pre-Conditions Nessuna
Post-Conditions
Sono aperte le iscrizioni per la lega creata. I partecipanti sono necessariamente in egual numero a quelli impostati dal Presidente della Lega
Main Succes Scenario
Actor Input System Response
1 Numero Partecipanti
2 Riepilogo operazione e richiesta conferma
3 Conferma
4 Operazione effettuata con successo
Extensions 3a: Se non c'è la conferma il sistema annulla l'operazione
Non-behavior requirements
Il sistema mostra la pagina dedicata ad effettuare tale operazione e riepiloga i dati in forma tabellare
Author Fabio Previtali
Date 05/05/2008
72
Progetto di Ingegneria del Software – Fantacalcio On-Line
1.4.7.4 Sequence Diagram: inserimento numero partecipanti
1.4.7.5 Use Case Presidente: scelta modalità asta
MainUse Case ID UC-16
Use Case Realtions
E' incluso dallo use case: creazione della legaE' generalizzato dagli use case: scelta modalità busta chiusa e scelta modalità offerta a rilancio
Primary Actor Presidente della Lega
GoalIl 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
SecondaryActor(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
Pre-Conditions Nessuna
Post-Conditions
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 System Response
1 Modalità asta
73
Progetto di Ingegneria del Software – Fantacalcio On-Line
2 Riepilogo operazione e richiesta conferma
3 Conferma
4 Operazione effettuata con successo
Extensions 3a: Se non c'è la conferma il sistema annulla l'operazioneNon-behavior requirements Il sito web mostra la pagine dedicata a fare tale operazione
Author Marco Paluci
Date 05/05/2008
1.4.7.6 Sequence Diagram Presidente: scelta modalità asta
74
Progetto di Ingegneria del Software – Fantacalcio On-Line
1.4.7.7 Use Case Presidente: scelta modalità busta chiusa
MainUse Case ID UC-17Use 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
SecondaryActor(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
Pre-Conditions Aver scelto la tipologia di asta da utilizzare nella lega
Post-Conditions
Gli Allenatori possono preparare la propria lista di calciatori da mettere all'asta
Main Succes Scenario
Actor Input System Response
1 Data di apertura e data di scadenza
2 Riepilogo operazione e richiesta conferma
3 Conferma
4 Operazione effettuata con successo
Extensions2a: Se la data di apertura e di scadenza non sono valide il sistema genera un messaggio di errore3a: Se non c'è la conferma il sistema annulla l'operazione
Non-behavior requirements
Il sito web mostra una form dove inserire la data di inizio e la data di scadenza dell'asta
Author Fabio Previtali
Date 05/05/2008
75
Progetto di Ingegneria del Software – Fantacalcio On-Line
1.4.7.8 Sequence Diagram: scelta modalità busta chiusa
1.4.7.9 Use Case Presidente: scelta modalità di offerta a rialzo
MainUse Case ID UC-18Use 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
SecondaryActor(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
Pre-Conditions Nessuna
Post-Conditions
Gli Allenatori possono partecipare all'asta nella data prevista e nell'arco di tempo previsto
Main Succes Scenario
Actor Input System Response
1 Data di apertura e durata dell'asta
2 Riepilogo operazione e richiesta
76
Progetto di Ingegneria del Software – Fantacalcio On-Line
conferma
3 Conferma
4 Operazione effettuata con successo
Extensions2a: Nel caso la data inserita non sia valida il sistema manda un messaggio di errore3a: Se non c'è la conferma il sistema annulla l'operazione
Non-behavior requirements Il sito web mostra la pagina dedicata ad effettuare tale operazione
Author Mirko Malacario
Date 05/05/2008
1.4.7.10 Sequence Diagram: scelta modalità di offerta a rialzo
1.4.8 Gli Use Case diagram in dettaglio: Amministratore
77
Progetto di Ingegneria del Software – Fantacalcio On-Line
1.4.8.1 Use Case Amministratore: gestione lega
MainUse Case ID UC-19Use Case Realtions Include lo use case: login
Primary Actor Amministratore
Goal Gestire correttamente le leghe aggiornando i dati necessariSecondaryActor(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
Pre-Conditions Nessuna
Post-Conditions
I calcoli dei risultati e l'aggiornamento delle classifiche sono avvenuti con successo e i dati sono persistenti nel database del sistema
Main Succes Scenario
Actor Input System Response
1 Voti calciatori
2 Riepilogo dati inseriti
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 errori3a: Se non c'è la conferma il sistema annulla l'operazione
Non-behavior requirements Il sito web mostra la pagine dedicata a fare tale operazione
Author Marco Paluci
Date 05/05/2008
78
Progetto di Ingegneria del Software – Fantacalcio On-Line
1.4.8.2 Sequence Diagram: gestione lega
1.4.8.3 Use Case Amministratore: modifica lista calciatori
MainUse Case ID UC-20Use Case Realtions Include lo use case: login
Primary Actor Amministratore
Goal Inserire, modificare o eliminare calciatoriSecondaryActor(s) and their goals
Nessuno
Brief Description
L'Amministratore ha la possibilità di inserire nuovi calciatori oppure può modificare o eliminare calciatori già presenti
Pre-Conditions Nessuna
Post-Conditions Il database dei calciatori è aggiornato con le modifiche apportate
Main Succes Scenario
Actor Input System Response
1 Nuovo calciatore
2 Richiesta conferma
3 Conferma
4 Operazione effettuata con successo
79
Progetto di Ingegneria del Software – Fantacalcio On-Line
5 Ricerca dei calciatori
6 Lista dei calciatori che soddisfano la richiesta
7 Modifiche sui calciatori
8 Richiesta conferma
9 Conferma
10 Operazione effettuata con successo
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 errore3a: Se non c'è la conferma il sistema annulla l'operazione7a: 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 errore9a: Se non c'è la conferma il sistema annulla l'operazione
Non-behavior requirements Il sito web mostra la pagine dedicata a fare tale operazione
Author Fabio Previtali
Date 05/05/2008
80
Progetto di Ingegneria del Software – Fantacalcio On-Line
1.4.8.4 Sequence Diagram: modifica lista calciatori
Nota
I passi 1-4 e 5-10 non sono mutuamente escludentesi e possono essere eseguiti in maniera
separata ed indipendente.
81
Progetto di Ingegneria del Software – Fantacalcio On-Line
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
Progetto di Ingegneria del Software – Fantacalcio On-Line
2. Pianificazione del progetto
2.1 Introduzione
2.1.1 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
Progetto di Ingegneria del Software – Fantacalcio On-Line
2.2 Function Point
2.2.1 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,email)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
Progetto di Ingegneria del Software – Fantacalcio On-Line
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:
2.2.3 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
Progetto di Ingegneria del Software – Fantacalcio On-Line
2.2.3.1 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
Progetto di Ingegneria del Software – Fantacalcio On-Line
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
Progetto di Ingegneria del Software – Fantacalcio On-Line
➢ 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
Progetto di Ingegneria del Software – Fantacalcio On-Line
Allenatore
RET Allenatore
DET username
password
Riepilogando:
RET 1
DET 3
Fantasquadra
RET Fantasquadra
DET nome
fantastadio
fantamilioni
Riepilogando:
RET 1
DET 3
89
Progetto di Ingegneria del Software – Fantacalcio On-Line
Lega
RET Lega
LegaConAstaBustaChiusa
LegaConAstaRialzo
DET nome
data_apertura_asta
numero_partecipanti
data_scadenza_asta
durata
Riepilogando:
RET 3
DET 5
90
Progetto di Ingegneria del Software – Fantacalcio On-Line
Classifica
RET Classifica
Fantasquadra
Lega
DET nome_fantasquadra
nome_lega
giornata
posizione
punteggio
fantapunteggio
vinte
pareggiate
perse
gol_fatti
gol_subiti
Riepilogando:
RET 3
DET 11
91
Progetto di Ingegneria del Software – Fantacalcio On-Line
Partita
RET Partita
Fantasquadra
DET nome_fantasquadra_casa
nome_fantasquadra_ospite
giornata
gol_squadra_casa
gol_squadra_ospite
fantapunti_casa
fantapunti_ospite
disputata
Riepilogando:
RET 2
DET 8
2.2.3.2 Calcolo degli UFP (Unadjusted Function Point) per gli ILF
Nome RET DET Complessità UFPCalciatore 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 7Totale 50
92
Progetto di Ingegneria del Software – Fantacalcio On-Line
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.
2.2.4.1 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-20)
➢ inserimento nuovo calciatore (UC-20)
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,email,nome_fantasquadra,nome_fantastadio,lega)
93
Progetto di Ingegneria del Software – Fantacalcio On-Line
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
FTR 2 (Fantacalciatore,Fantasquadra)
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,email,nome_fantasquadra,nome_fantastadio)
aggiornamento dati della lega
FTR 1 (Calciatore)
DET16 (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
Progetto di Ingegneria del Software – Fantacalcio On-Line
inserimento nuovo calciatore
FTR 1 (Calciatore)
DET 7 (id,cognome,nome,foto,squadra,ruolo,prezzo_cartellino)
2.2.4.2 Calcolo degli UFP (Unadjusted Function Point) per gli EI (External Input)
Nome FTR DET Complessità UFPregistrazione 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 3Totale 44
2.2.4.3 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)
DET16 (id,ruolo,cognome,nome,squadra,gol_fatti,gol_subiti,assist,ammonito,
espulso,voto,rigori_parati,rigori_sbagliati,giornata,prezzo_cartellino,disputata)
95
Progetto di Ingegneria del Software – Fantacalcio On-Line
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)
DET12 (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)
2.2.4.4 Calcolo degli UFP (Unadjusted Function Point) per gli EO (External Output)
Nome FTR DET Complessità UFPcalcolo fantavoti della giornata 1 16 Bassa 4
aggiornamento classifica 4 11 Alta 7
aggiornamento partita 4 12 Alta 7
aggiornamento rosa 2 4 Bassa 4Totale 22
96
Progetto di Ingegneria del Software – Fantacalcio On-Line
2.2.4.5 Identificazione degli EQ (External Query)
➢ login (UC-10)
➢ 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
InputFTR 1 (Allenatore)
DET 2 (username,password)
OutputFTR 3 (Allenatore,Fantasquadra,Lega)
DET 5 (username,nome_squadra,nome_lega,fantastadio,fantamilioni)
consultazione statistiche sui calciatori
InputFTR 1 (Calciatore)
DET 1 (id o cognome o nome o squadra o ruolo o gol_fatti o gol_subiti o media_voto o fantamedia)
OutputFTR 1 (Calciatore)
DET17 (id,cognome,nome,ruolo,gol_fatti,gol_subiti,assist,ammonizioni,
espulsioni,presenze,rigori_parati,rigori_sbagliati,media_voto,fantamedia,squadra,foto,prezzo_cartellino)
97
Progetto di Ingegneria del Software – Fantacalcio On-Line
consultazione rosa delle squadre
InputFTR 2 (Lega,Fantasquadra)
DET 2 (nome_lega,nome_fantasquadra)
OutputFTR 4 (Calciatore,Lega,Allenatore,Fantasquadra)
DET 10 (nome_fantasquadra,nome_lega,id,cognome,nome,ruolo,prezzo_cartellino,nome_fantastadio,squadra,username)
consultazione informazioni sulla lega
InputFTR 1 (Lega)
DET 1 (nome)
OutputFTR 2 (Lega,Allenatore)
DET6 (nome_lega,username_presidente_della_lega,
email_presidente_della_lega,numero_partecipanti,data_apertura_asta,data_scadenza_asta o durata)
consultazione risultati partite
InputFTR 3 (Lega,Fantasquadra,Partita)
DET 4 (nome_lega,nome_fantasquadra_casa,nome_fantasquadra_ospite,giornata)
OutputFTR 4 (Lega,Fantasquadra,Calciatore,Partita)
DET
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
Progetto di Ingegneria del Software – Fantacalcio On-Line
consultazione classifica
InputFTR 2 (Lega,Classifica)
DET 2 (nome,giornata)
OutputFTR 3 (Fantasquadra,Lega,Classifica)
DET 11 (nome_lega,nome_fantasquadra,posizione,punteggio,fantapunteggio,vinte,pareggiate,perse,gol_fatti,gol_subiti,giornata)
2.2.4.6 Calcolo degli Unadjusted Function Point (UFP) per gli EQ (External Query)
Nome FTR DET Complessità UFPlogin 3 6 Media 4
consultazione statistiche sui calciatori 1 17 Bassa 3
consultazione rosa delle squadre 4 10 Alta 6
consultazione informazioni sulla lega 2 6 Media 4
consultazione risultati partite 4 21 Alta 6
consultazione classifica 3 11 Media 4Totale 27
2.2.4.7 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 143.
99
Progetto di Ingegneria del Software – Fantacalcio On-Line
2.2.5 Calcolo degli Adjusted Function Point (AFP)
2.2.5.1 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à
Comunicazione dati 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
Distribuzione della elaborazione 1
Poiché l'elaborazione dei dati sarà quasi esclusivamente lato server tranne che
per alcuni controlli javascript presenti a lato client
Prestazioni 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 0Poiché la nostra applicazione non
necessità di utilizzare le configurazioni con vincoli sulle risorse
Frequenza delle transazioni 4Poiché la maggior parte delle
funzionalità relative alla manipolazione dei dati sarà di tipo transazionale
Inserimento dati interattivo 3Poiché 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
Aggiornamento interattivo 4
Poiché è un gioco basato soprattutto sulla manipolazione continua dei dati è
necessaria un'alta protezione con procedure automatiche
100
Progetto di Ingegneria del Software – Fantacalcio On-Line
Complessità elaborativa 3Poiché 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 0 Poiché la nostra applicazione è basato su un unico sito web
Facilità di modifica 4
Poiché la nostra applicazione sarà progettata e sviluppata utilizzando un
modello che permetterà in futuro un'alta facilità di modifica
TDI 40
Calcolo del fattore di aggiustamento:
VAF = TDI * 0,01 + 0,65 -> VAF = 40 * 0,01 + 0,65 = 1,05
Calcolo degli AFP (Adjusted Function Point):
AFP = UFP * 1,05 -> AFP = 143 * 1,05 -> AFP = 150,15
101
Progetto di Ingegneria del Software – Fantacalcio On-Line
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.
102
Progetto di Ingegneria del Software – Fantacalcio On-Line
2.3.1 Assegnazione degli scale factors
Qui di seguito riportiamo la tabella degli scale factors da noi scelti:
2.3.1.1 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.
103
Progetto di Ingegneria del Software – Fantacalcio On-Line
2.3.2 Assegnazione degli effort multiplers
Qui di seguito riportiamo la tabella degli effort multiplers da noi scelti:
2.3.2.1 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.
104
Progetto di Ingegneria del Software – Fantacalcio On-Line
2.3.3 Distribuzione dello sforzo complessivo
Una volta impostati tutti i parametri di COCOMO procediamo al calcolo dello sforzo
complessivo:
105
Progetto di Ingegneria del Software – Fantacalcio On-Line
2.4 Pianificazione temporale
Qui di seguito vengono mostrati i grafici ricavati con COCOMO:
106
Progetto di Ingegneria del Software – Fantacalcio On-Line
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.
107
Progetto di Ingegneria del Software – Fantacalcio On-Line
Qui di seguito è presente la definizione della Work Breakdown Structure:
Fase Attività Prodotti
Analisi e Pianificazione del
progetto
Individuazione degli obiettivi del progetto
Documento “Requisiti Utente
e Specifiche Funzionali del
Sistema”
Definizione dei requisiti
Individuazione degli utenti del progetto
Definizione delle funzionalità del sistema esportate agli utenti
Descrizione delle funzionalità mediante diagramma degli Use Case
Analisi dei dati e conseguente stesura del Class Diagram
Stima dei Function Point dell'applicazione
Documento “Pianificazione
del Sistema”
Stima dello sforzo complessivo e dello sforzo per ogni fase del progetto
Definizione della WBS
Ripartizione attività tra i membri del gruppo di lavoro
Definizione dei diagrammi Pert e GANTT a partire dal WBS
Progettazione del sistema
Disegno architettura hardware
Documento “Disegno del
Sistema”
Progettazione della basi di dati
Disegno architettura software (Class Diagram, Sequence/Collaboration Diagram, State Diagram, Activity Diagram, Implementation Model)
Realizzazione del Hypertext Logical Design utilizzando il modello ADM e relativi Sequence Diagram
Realizzazione del prototipo freddo Prototipo freddoImplementazione Stesura pagine HTML del sito web Codice
dell'applicazione e documento
“Implementazione del Sistema”
Stesura codice JAVA per la creazione di Servlet, JSP,Controller, Domain Classes e DAO
Definizione del manuale di installazione e di utilizzo
Documento “Manuale di
108
Progetto di Ingegneria del Software – Fantacalcio On-Line
installazione e di utilizzo”
Definizione strategia di testDocumento
“Piano di Verifica”
Test e validazione
Effettuazione di ispezione e walkthroughDocumento
“Piano di Verifica”
Effettuazione test di unità
Effettuazione test di integrazione
Effettuazione test di validazione e debugging
RilascioAssestement del lavoro
ConclusioniRilascio e installazione sulla piattaforma
109
Progetto di Ingegneria del Software – Fantacalcio On-Line
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.
2.5.1 Diagramma di Pert: visione d'insieme
2.5.1.1 Diagramma di Pert: analisi e pianificazione
110
Progetto di Ingegneria del Software – Fantacalcio On-Line
2.5.1.2 Diagramma di Pert: progettazione
2.5.1.3 Diagramma di Pert: implementazione
111
Progetto di Ingegneria del Software – Fantacalcio On-Line
2.5.1.4 Diagramma di Pert: test e rilascio
2.5.1.5 Diagramma di Pert: cammino critico
2.5.2 Diagramma GANTT
112
Progetto di Ingegneria del Software – Fantacalcio On-Line
2.5.2.1 Diagramma GANTT: cammino critico
113
Progetto di Ingegneria del Software – Fantacalcio On-Line
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.
2.6.1 Work Breakdown Structure con la durata di ciascuna attività
Fase Attività Prodotti OreAnalisi e
Pianificazione del progetto
Individuazione degli obiettivi del progetto
Documento “Requisiti
utente e specifiche
funzionali del sistema”
2
Definizione dei requisiti 3
Individuazione degli utenti del progetto 3
Definizione delle funzionalità del sistema esportate agli utenti
6
Descrizione delle funzionalità mediante diagramma degli Use Case
14
Analisi dei dati e conseguente stesura del Class Diagram
6
Stima dei Function Point dell'applicazione
Documento “Pianificazione
del progetto”
21
Stima dello sforzo complessivo e dello sforzo per ogni fase del progetto
1
Definizione della WBS 2
Ripartizione attività tra i membri del gruppo di lavoro
3
Definizione dei diagrammi Pert e GANTT
11
114
Progetto di Ingegneria del Software – Fantacalcio On-Line
a partire dal WBSTotale 72
Progettazione del sistema
Disegno architettura hardware
Documento “Disegno del
sistema”
2
Progettazione della basi di dati 35
Disegno architettura software (Class Diagram, Sequence/Collaboration Diagram, State Diagram, Activity Diagram, Implementation Model)
23
Realizzazione del Hypertext Logical Design utilizzando il modello ADM e relativi Sequence Diagram
14
Realizzazione del prototipo freddo
Prototipo freddo 30
Totale 104
Implementazione
Stesura pagine HTML del sito web
Codice dell'applicazione e documento “Implementazi
one del sistema”
22
Stesura codice JAVA per la creazione di: Servlet, JSP,Controller, Domain Classes e DAO
259
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 320 Test e
validazioneEffettuazione di ispezione e walkthrough
Documento “Piano di verifica”
25
Effettuazione test di unità 55
Effettuazione test di accettazione
53
115
Progetto di Ingegneria del Software – Fantacalcio On-Line
Effettuazione test di validazione e debugging 35
Totale 168
RilascioAssestement del lavoro
Conclusioni8
Rilascio e installazione sulla piattaforma 8
Totale 16 Totale Generale 680
116
Progetto di Ingegneria del Software – Fantacalcio On-Line
2.6.2 Malacario Mirko
Fase Attività Prodotti Ore
Analisi e Pianificazione
del progetto
Individuazione degli obiettivi del progetto
Documento “Requisiti
utente e specifiche
funzionali del sistema”
2
Definizione dei requisiti 3
Individuazione degli utenti del progetto 3
Definizione delle funzionalità del sistema esportate agli utenti
6
Descrizione delle funzionalità mediante diagramma degli Use Case
10
Analisi dei dati e conseguente stesura del Class Diagram
6
Stima dei Function Point dell'applicazione
Documento “Pianificazione
del progetto”
3
Stima dello sforzo complessivo e dello sforzo per ogni fase del progetto
0
Definizione della WBS 2
Ripartizione attività tra i membri del gruppo di lavoro
3
Definizione dei diagrammi Pert e GANTT a partire dal WBS
2
Totale 40 Progettazione del
sistemaDisegno architettura hardware
Documento “Disegno del
sistema”
0
Progettazione della basi di dati 35
Disegno architettura software (Class Diagram, Sequence/Collaboration
15
117
Progetto di Ingegneria del Software – Fantacalcio On-Line
Diagram, State Diagram, Activity Diagram, Implementation Model)
Realizzazione del Hypertext Logical Design utilizzando il modello ADM e relativi Sequence Diagram
6
Realizzazione del prototipo freddo
Prototipo freddo 30
Totale 86
Implementazione
Stesura pagine HTML del sito web
Codice dell'applicazione e documento “Implementazi
one del sistema”
15
Stesura codice JAVA per la creazione di: Servlet, JSP,Controller, Domain Classes e DAO
90
Definizione del manuale di installazione e di utilizzo
Documento “Manuale di
installazione e di utilizzo”
22
Definizione strategia di test
Documento “Piano di verifica”
5
Totale 132
Test e validazione
Effettuazione di ispezione e walkthrough
Documento “Piano di verifica”
10
Effettuazione test di unità 30
Effettuazione test di accettazione 30
Effettuazione test di validazione e debugging 20
Totale 90
RilascioAssestement del lavoro
Conclusioni8
Rilascio e installazione sulla piattaforma 8
Totale 16 Totale Generale 364
118
Progetto di Ingegneria del Software – Fantacalcio On-Line
2.6.3 Paluci Marco
Fase Attività Prodotti Ore
Analisi e Pianificazione
del progetto
Individuazione degli obiettivi del progetto
Documento “Requisiti
utente e specifiche
funzionali del sistema”
2
Definizione dei requisiti 3
Individuazione degli utenti del progetto 3
Definizione delle funzionalità del sistema esportate agli utenti
6
Descrizione delle funzionalità mediante diagramma degli Use Case
10
Analisi dei dati e conseguente stesura del Class Diagram
6
Stima dei Function Point dell'applicazione
Documento “Pianificazione
del progetto”
20
Stima dello sforzo complessivo e dello sforzo per ogni fase del progetto
1
Definizione della WBS 2
Ripartizione attività tra i membri del gruppo di lavoro
3
Definizione dei diagrammi Pert e GANTT a partire dal WBS
5
Totale 61 Progettazione del
sistemaDisegno architettura hardware
Documento “Disegno del
sistema”
2
Progettazione della basi di dati 35
Disegno architettura software (Class Diagram, Sequence/Collaboration Diagram, State Diagram,
18
119
Progetto di Ingegneria del Software – Fantacalcio On-Line
Activity Diagram, Implementation Model)
Realizzazione del Hypertext Logical Design utilizzando il modello ADM e relativi Sequence Diagram
0
Realizzazione del prototipo freddo
Prototipo freddo 0
Totale 55
Implementazione
Stesura pagine HTML del sito web
Codice dell'applicazione e documento “Implementazi
one del sistema”
6
Stesura codice JAVA per la creazione di: Servlet, JSP,Controller, Domain Classes e DAO
90
Definizione del manuale di installazione e di utilizzo
Documento “Manuale di
installazione e di utilizzo”
22
Definizione strategia di test
Documento “Piano di verifica”
15
Totale 133
Test e validazione
Effettuazione di ispezione e walkthrough
Documento “Piano di verifica”
10
Effettuazione test di unità 30
Effettuazione test di accettazione 30
Effettuazione test di validazione e debugging 20
Totale 90
RilascioAssestement del lavoro
Conclusioni8
Rilascio e installazione sulla piattaforma 8
Totale 16 Totale Generale 355
120
Progetto di Ingegneria del Software – Fantacalcio On-Line
2.6.4 Previtali Fabio
Fase Attività Prodotti Ore
Analisi e Pianificazione
del progetto
Individuazione degli obiettivi del progetto
Documento “Requisiti
utente e specifiche
funzionali del sistema”
2
Definizione dei requisiti 3
Individuazione degli utenti del progetto 3
Definizione delle funzionalità del sistema esportate agli utenti
6
Descrizione delle funzionalità mediante diagramma degli Use Case
10
Analisi dei dati e conseguente stesura del Class Diagram
6
Stima dei Function Point dell'applicazione
Documento “Pianificazione
del progetto”
20
Stima dello sforzo complessivo e dello sforzo per ogni fase del progetto
1
Definizione della WBS 1
Ripartizione attività tra i membri del gruppo di lavoro
3
Definizione dei diagrammi Pert e GANTT a partire dal WBS
10
Totale 65 Progettazione del
sistemaDisegno architettura hardware
Documento “Disegno del
sistema”
0
Progettazione della basi di dati 35
Disegno architettura software (Class Diagram, Sequence/Collaboration
10
121
Progetto di Ingegneria del Software – Fantacalcio On-Line
Diagram, State Diagram, Activity Diagram, Implementation Model)
Realizzazione del Hypertext Logical Design utilizzando il modello ADM e relativi Sequence Diagram
8
Realizzazione del prototipo freddo
Prototipo freddo 0
Totale 53
Implementazione
Stesura pagine HTML del sito web
Codice dell'applicazione e documento “Implementazi
one del sistema”
15
Stesura codice JAVA per la creazione di: Servlet, JSP,Controller, Domain Classes e DAO
180
Definizione del manuale di installazione e di utilizzo
Documento “Manuale di
installazione e di utilizzo”
22
Definizione strategia di test
Documento “Piano di verifica”
5
Totale 222
Test e validazione
Effettuazione di ispezione e walkthrough
Documento “Piano di verifica”
20
Effettuazione test di unità 30
Effettuazione test di accettazione 30
Effettuazione test di validazione e debugging 20
Totale 100
RilascioAssestement del lavoro
Conclusioni8
Rilascio e installazione sulla piattaforma 8
Totale 16 Totale Generale 456
122
Progetto di Ingegneria del Software – Fantacalcio On-Line
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
Progetto di Ingegneria del Software – Fantacalcio On-Line
3. Prototipo dell'applicazione
3.1 Introduzione
3.1.1 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
Progetto di Ingegneria del Software – Fantacalcio On-Line
3.2 Albero di navigazione
3.2.1 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.
3.2.2 Diagrammi albero di navigazione
3.2.2.1 Diagrammi albero di navigazione: Amministratore
125
Progetto di Ingegneria del Software – Fantacalcio On-Line
3.2.2.2 Diagrammi albero di navigazione: Allenatore
3.2.2.2.1 Diagrammi albero di navigazione: Allenatore (Parte 1)
3.2.2.2.2 Diagrammi albero di navigazione: Allenatore (Parte 2)
126
Progetto di Ingegneria del Software – Fantacalcio On-Line
3.2.2.2.3 Diagrammi albero di navigazione: Allenatore (Parte 3)
3.2.2.2.4 Diagrammi albero di navigazione: Allenatore (Parte 4)
127
Progetto di Ingegneria del Software – Fantacalcio On-Line
3.2.2.2.5 Diagrammi albero di navigazione: Allenatore (Parte 5)
3.2.2.3 Diagrammi albero di navigazione: Presidente della Lega
128
Progetto di Ingegneria del Software – Fantacalcio On-Line
3.2.2.4 Diagrammi albero di navigazione: Visitatore
3.2.2.4.1 Diagrammi albero di navigazione: Visitatore (Parte 1)
3.2.2.4.2 Diagrammi albero di navigazione: Visitatore (Parte 2)
129
Progetto di Ingegneria del Software – Fantacalcio On-Line
3.2.2.4.3 Diagrammi albero di navigazione: Visitatore (Parte 3)
3.2.2.4.4 Diagrammi albero di navigazione: Visitatore (Parte 4)
130
Progetto di Ingegneria del Software – Fantacalcio On-Line
3.2.3 ADM (Araneus Data Model)
3.2.3.1 ADM (Araneus Data Model): Amministratore
3.2.3.1.1 ADM (Araneus Data Model): Amministratore (Parte 1)
131
Progetto di Ingegneria del Software – Fantacalcio On-Line
3.2.3.1.2 ADM (Araneus Data Model): Amministratore (Parte 2)
132
Progetto di Ingegneria del Software – Fantacalcio On-Line
3.2.3.2 ADM (Araneus Data Model): Allenatore
3.2.3.2.1 ADM (Araneus Data Model): Allenatore (Parte 1)
133
Progetto di Ingegneria del Software – Fantacalcio On-Line
3.2.3.2.2 ADM (Araneus Data Model): Allenatore (Parte 2)
134
Progetto di Ingegneria del Software – Fantacalcio On-Line
3.2.3.2.3 ADM (Araneus Data Model): Allenatore (Parte 3)
135
Progetto di Ingegneria del Software – Fantacalcio On-Line
3.2.3.2.4 ADM (Araneus Data Model): Allenatore (Parte 4)
136
Progetto di Ingegneria del Software – Fantacalcio On-Line
3.2.3.2.5 ADM (Araneus Data Model): Allenatore (Parte 5)
137
Progetto di Ingegneria del Software – Fantacalcio On-Line
3.2.3.2.6 ADM (Araneus Data Model): Allenatore (Parte 6)
138
Progetto di Ingegneria del Software – Fantacalcio On-Line
3.2.3.3 ADM (Araneus Data Model): Presidente della Lega
139
Progetto di Ingegneria del Software – Fantacalcio On-Line
3.2.3.4 ADM (Araneus Data Model): Visitatore
3.2.3.4.1 ADM (Araneus Data Model): Visitatore (Parte 1)
140
Progetto di Ingegneria del Software – Fantacalcio On-Line
3.2.3.4.2 ADM (Araneus Data Model): Visitatore (Parte 2)
141
Progetto di Ingegneria del Software – Fantacalcio On-Line
3.2.3.4.3 ADM (Araneus Data Model): Visitatore (Parte 3)
142
Progetto di Ingegneria del Software – Fantacalcio On-Line
3.3 Sequence Diagram
3.3.1 Sequence Diagram: registrazione al sistema (UC-1)
143
Progetto di Ingegneria del Software – Fantacalcio On-Line
3.3.2 Sequence Diagram: consultazione delle rose delle squadre iscritte (UC-2)
144
Progetto di Ingegneria del Software – Fantacalcio On-Line
3.3.3 Sequence Diagram: consultazione informazioni sulla lega (UC-3)
3.3.4 Sequence Diagram: consultazione statistiche (UC-4)
145
Progetto di Ingegneria del Software – Fantacalcio On-Line
3.3.5 Sequence Diagram: consultazione risultati (UC-5)
146
Progetto di Ingegneria del Software – Fantacalcio On-Line
3.3.6 Sequence Diagram: partecipazione al calciomercato durante la stagione (UC-6)
147
Progetto di Ingegneria del Software – Fantacalcio On-Line
3.3.7 Sequence Diagram: modalità asta a rialzo (UC-8)
148
Progetto di Ingegneria del Software – Fantacalcio On-Line
3.3.8 Sequence Diagram: modalità asta a busta chiusa (UC-9)
149
Progetto di Ingegneria del Software – Fantacalcio On-Line
3.3.9 Sequence Diagram: login (UC-10)
3.3.10 Sequence Diagram: scelta modalità formazione (UC-11)
150
Progetto di Ingegneria del Software – Fantacalcio On-Line
3.3.11 Sequence Diagram: scelta formazione senza l'ausilio del sistema (UC-12)
3.3.12 Sequence Diagram: scelta formazione con l'ausilio del sistema (UC-13)
151
Progetto di Ingegneria del Software – Fantacalcio On-Line
3.3.13 Sequence Diagram: creazione della lega (UC-14)
3.3.14 Sequence Diagram: inserimento numero partecipanti (UC-15)
152
Progetto di Ingegneria del Software – Fantacalcio On-Line
3.3.15 Sequence Diagram: scelta modalità asta (UC-16)
3.3.16 Sequence Diagram: scelta modalità busta chiusa (UC-17)
153
Progetto di Ingegneria del Software – Fantacalcio On-Line
3.3.17 Sequence Diagram: scelta modalità di offerta a rialzo (UC-18)
3.3.18 Sequence Diagram: gestione lega (UC-19)
154
Progetto di Ingegneria del Software – Fantacalcio On-Line
3.3.19 Sequence Diagram: modifica lista calciatori (UC-20)
155
Progetto di Ingegneria del Software – Fantacalcio On-Line
3.4 Il prototipo
3.4.1 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
Progetto di Ingegneria del Software – Fantacalcio On-Line
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
Progetto di Ingegneria del Software – Fantacalcio On-Line
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.
3.4.3 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
Progetto di Ingegneria del Software – Fantacalcio On-Line
3.4.3.1 Login (index.html, logadmin.html, logallenatore.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
3.4.3.2.
159
Figura 1: index.html
Progetto di Ingegneria del Software – Fantacalcio On-Line
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.
160
Figura 2: logadmin.html
Figura 3: logallenatore.html
Progetto di Ingegneria del Software – Fantacalcio On-Line
3.4.3.2 Registrazione al sistema (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 3.4.3.14 al paragrafo 3.4.3.18.
161
Figura 4: registrazione.html
Progetto di Ingegneria del Software – Fantacalcio On-Line
3.4.3.3 Consultazione statistiche (statistiche_calciatore.html, lista_calciatori.html, calciatore.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
Figura 5: statistiche_calciatore_visitatore.html, statistiche_calciatore_allenatore.html
Progetto di Ingegneria del Software – Fantacalcio On-Line
Cliccando sul testo “seleziona” si accede ai dati illustrati in figura 7 relativi al calciatore
selezionato.
163
Figura 7: totti_visistatore.html, totti_allenatore.html
Figura 6: lista_calciatori_visitatore.html, lista_calciatori_allenatore.html
Progetto di Ingegneria del Software – Fantacalcio On-Line
3.4.3.4 Consultazione risultati (calendario.html, partita.html classifica.html)
In figura 8 viene illustrato il risultato ottenuto cliccando sul pulsante calendario nella
home page dell'allenatore o del visitatore (illustrate nel paragrafo 3.4.3.1). 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
Figura 8: calendario_visistatore.html, calendario_allenatore.html
Progetto di Ingegneria del Software – Fantacalcio On-Line
Figura 9: partita_visitatore.html, partita_allenatore.html
E' possibile anche visualizzare (fig.10) le classifiche delle singole leghe, procedendo alla
selezione della lega da consultare.
Figura 10: classifica_visitatore.html, classifica_allenatore.html
165
Progetto di Ingegneria del Software – Fantacalcio On-Line
3.4.3.5 Consultazione rose delle squadre iscritte (rosa.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'email dell'allenatore e il fantastadio in cui disputa le
partite in casa la squadra.
166
Figura 11: rosa_visitatore.html, rosa_allenatore.html
Progetto di Ingegneria del Software – Fantacalcio On-Line
3.4.3.6 Consultazione informazioni sulla lega (infolega.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 12.
167
Figura 12: infolega_visitatore.html, infolega_allenatore.html
Progetto di Ingegneria del Software – Fantacalcio On-Line
3.4.3.7 Scelta modalità senza l'ausilio del sistema (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
Figura 13: formazione_manuale.html
Progetto di Ingegneria del Software – Fantacalcio On-Line
3.4.3.8 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.
169
Figura 14: formazione_assistita.html
Progetto di Ingegneria del Software – Fantacalcio On-Line
170
Figura 15: formazione_assistita_passo2.html
Progetto di Ingegneria del Software – Fantacalcio On-Line
171
Figura 16: riepilogo_formazione_assistita.html
Progetto di Ingegneria del Software – Fantacalcio On-Line
3.4.3.9 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)
In figura 17 l'Allenatore ha la possibilità di scegliere il calciatore che intende vendere,
selezionandolo dal menu al tendina presente nella pagina
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
Figura 17: mercato_in_stagione.html
Figura 18: mercato_in_stagione_passo2
Progetto di Ingegneria del Software – Fantacalcio On-Line
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.
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.
Prima dell'avvio della transazione, il sistema chiede una verifica dei dati inseriti. Una volta
cliccato su conferma, il sistema procede all'assegnazione.
173
Figura 19: mercato_in_stagione_passo3.html
Figura 20: mercato_in_stagione_passo4.html
Progetto di Ingegneria del Software – Fantacalcio On-Line
3.4.3.10 Modalità asta a busta chiusa (crea_rosa_busta.html, crea_rosa_busta_riepilogo.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 0, 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 250 crediti.
174
Figura 21: crea_rosa_busta_chiusa.html
Progetto di Ingegneria del Software – Fantacalcio On-Line
Un ultimo controllo javascript provvede ad assicurarsi che i 25 calciatori selezionati siano
tutti diversi.
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
Figura 22: riepilogo_crea_rosa_busta.html
Progetto di Ingegneria del Software – Fantacalcio On-Line
3.4.3.11 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)
176
Figura 23: crea_rosa_rilancio_passo1.html
Progetto di Ingegneria del Software – Fantacalcio On-Line
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
Progetto di Ingegneria del Software – Fantacalcio On-Line
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
Figura 24: crea_rosa_rilancio_passo2.html
Progetto di Ingegneria del Software – Fantacalcio On-Line
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
Figura 25: crea_rosa_rilancio_passo6.html
Progetto di Ingegneria del Software – Fantacalcio On-Line
L'ultimo screenshot del paragrafo 3.4.3.11 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.
180
Figura 26: crea_rosa_rilancio_passo7.html
Progetto di Ingegneria del Software – Fantacalcio On-Line
3.4.3.12 Gestione Lega (inserimento_voti.html, modifica_calciatori.html, riepilogo_dati_inseriti.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
Figura 27: inserimento_voti.html
Progetto di Ingegneria del Software – Fantacalcio On-Line
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.
L'amministratore mediante il menu a tendina (visualizzato in maniera completa in figura
28) sceglie quali dati consultare una volta effettuato il calcolo.
182
Figura 28: riepilogo_dati_inseriti.html
Progetto di Ingegneria del Software – Fantacalcio On-Line
3.4.3.13 Modifica lista calciatori (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
Figura 29: modifica_calciatori.html
Progetto di Ingegneria del Software – Fantacalcio On-Line
3.4.3.14 Crea Lega (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.
3.4.3.15 Inserimento numero partecipanti (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
Figura 30: crea_lega.html
Figura 31: numero_partecipanti.html
Progetto di Ingegneria del Software – Fantacalcio On-Line
3.4.3.16 Scelta modalità asta (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.
3.4.3.17 Crea lega modalità busta chiusa (crea_lega_modalita_busta.html, riepilogo_crea_lega_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
Figura 32: scelta_modalita_asta.html
Figura 33: crea_lega_modalita_busta.html
Progetto di Ingegneria del Software – Fantacalcio On-Line
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
Figura 34: riepilogo_crea_rosa_busta.html
Progetto di Ingegneria del Software – Fantacalcio On-Line
3.4.3.18 Crea lega modalità rialzo (crea_lega_modalita_rilancio.html, 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 3.4.3.17. Una differenza è
187
Figura 35: crea_lega_modalita_rilancio.html
Figura 36: riepilogo_crea_lega_rilancio.html
Progetto di Ingegneria del Software – Fantacalcio On-Line
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.
3.4.4 Dettaglio delle pagine (forma tabellare)
Nome pagina Implementa la funzionalità
Permette di accedere alla funzionalità
Descrizione Realizzata
index.html UC-10 login UC-1 registrazione sistema
Home Page del sito, permette ad un
visitatore di effettuare
l'autenticazione mediante
inserimento dati negli appositi campi
index.jsp
logadmin.html UC-10 loginUC-19 gestione lega
UC-20 modifica calciatori
Nel momento dell'autenticazione
dell'amministratore, questo può
visualizzare le funzionalità a sua
disposizione
logadmin.jsp
inserimento_voti.html UC-19 gestione lega nessuno
Da tale pagina l'amministratore può attribuire i
punteggi di ogni giornata conseguiti
dai calciatori presenti in database
inserimento_voti.jsp
riepilogo_dati_inseriti.html UC-19 gestione lega UC-19 gestione lega
L'amministratore può prendere
visione dei risultati dovuti all'apporto
delle sue modifiche
Non implementata
modifica_lista_calciatori.html
UC-20 modifica calciatori nessuno
Da tale pagina l'amministratore
può inserire nuovi calciatori,
modificare o eliminare altri già
presenti in database
modifica_lista_calciatori.jsp
einserisci_calciatori.js
p
riepilogo_dati_inseriti_classifica.html UC-19 gestione lega UC-19 gestione lega L'amministratore
prende visione delle Non implementata
188
Progetto di Ingegneria del Software – Fantacalcio On-Line
modifiche apportate alla classifica
riepilogo_dati_inseriti_formazione.html UC-19 gestione lega UC-19 gestione lega
L'amministratore prende visione delle modifiche apportate
alle formazioni coinvolte nella
giornata
Non implementata
riepilogo_dati_inseriti_calendario.html UC-19 gestione lega UC-19 gestione lega
L'amministratore prende visione delle modifiche apportate
al calendario
Non implementata
logallenatore.html
UC-10 loginUC-11 scelta
modalità formazione
UC-2 consultazione delle rose delle squadre iscritte
UC-3 consultazione informazioni sulla
legaUC-4 consultazione
statisticheUC-5
consultazione risultati
UC-6 partecipazione al
calciomercato durante la stagioneUC-7 creazione rosaUC-8 modalità asta
a rialzoUC-9 modalità asta
a busta chiusaUC-12 scelta
formazione senza l'ausilio del sistema
UC-13 scelta formazione con
l'ausilio del sistema
Nel momento dell'autenticazione
l'allenatore può accedere a tutte le
funzionalità messe a sua disposizione dal
sistema.
logallenatore.jsp
statistiche_calciatore_allenatore.html
UC-4 consultazione statistiche Nessuno
Da tale pagina l'allenatore loggato ha la possibilità di effettuare ricerche
per la consultazione delle statistiche
statistiche_calciatore_allenatore.jsp
lista__calciatori_allenatore.html
UC-4 consultazione statistiche Nessuno
Il sistema risponde all'allenatore che ha
richiesto determinati
parametri di ricerca per le statistiche
lista__calciatori_allenatore.jsp
189
Progetto di Ingegneria del Software – Fantacalcio On-Line
calciatore_allenatore.html
UC-4 consultazione statistiche Nessuno
L'allenatore può consultare in dettaglio le
statistiche relative al calciatore
calciatore_allenatore.jsp
calendario_allenatore.html
UC-5 consultazione risultati
UC-5 consultazione risultati
L'allenatore può consultare il
calendario con tutti i risultati delle varie
giornate e può accedere al dettaglio
dei risultati delle singole giornate
calendario_allenatore.jsp
partita_allenatore.html
UC-5 consultazione risultati Nessuno
L'allenatore accede nel dettaglio ai risultati di una specifica partita
partita_allenatore.jsp
classifica_allenatore.html
UC-5 consultazione risultati
UC-5 consultazione risultati
L'allenatore accede nel dettaglio ai
risultati della Lega scelta, consultando
la classifica aggiornata
all'ultima giornata di campionato
svolta
classifica_allenatore.jsp
rosa_squadre_allenatore.html
UC-2 consultazione rose squadre iscritte
UC-2 consultazione rose squadre iscritte
L'allenatore accede alla funzione in cui può consultare le
rose di tutte le squadre iscritte nelle varie leghe
rosa_squadre_allenatore.jsp
formazione_manuale.html
UC-12 scelta formazione senza
l'ausilio del sistema
UC-12 scelta formazione senza
l'ausilio del sistema
L'allenatore può compilare la
formazione da schierare nella
giornata odierna di campionato
formazione_manuale.jsp
riepilogo_formazione_manuale.html
UC-12 scelta formazione senza
l'ausilio del sistemanessuno
Da questa pagina l'allenatore può
prendere visione delle sue scelte e in
caso modificarle tornando indietro
riepilogo_formazione_manuale.jsp
reindirizza.html Nessuno Nessuno Permette il reindirizzamento automatico alla
Home Page personale
dell'allenatore
reindirizza.html
190
Progetto di Ingegneria del Software – Fantacalcio On-Line
formazione_assistita.html
UC-13 scelta formazione con
l'ausilio del sistema
UC-13 scelta formazione con
l'ausilio del sistema
Permette all'allenatore di
selezionare i giocatori
indisponibili per il turno di campionato
in corso
formazione_assistita.jsp
formazione_assistita_passo2.html
UC-13 scelta formazione con
l'ausilio del sistema
UC-13 scelta formazione con
l'ausilio del sistema
La pagina permette all'allenatore di
inserire vari parametri per la
generazione della formazione da parte
del sistema
formazione_assistita_passo2.jsp
riepilogo_formazione_assistita.html
UC-13 scelta formazione con
l'ausilio del sistemaNessuno
L'allenatore può prendere visione ed
eventualmente modificare le scelte
effettuate dal sistema nello
schieramento della formazione
Non implementata
riepilogo_formazione_assistita_passo2.h
tml
UC-13 scelta formazione con
l'ausilio del sistemaNessuno
L'allenatore prende visione delle scelte
definitive e conferma la
transazione al sistema
riepilogo_formazione_assistita.jsp
mercato_in_stagione.html
UC-6 partecipazione al
calciomercato durante la stagione
UC-6 partecipazione al
calciomercato durante la stagione
L'allenatore individua il
calciatore che non farà più parte della
sua rosa
mercato_in_stagione.jsp
mercato_in_stagione_passo2.html
UC-6 partecipazione al
calciomercato durante la stagione
UC-6 partecipazione al
calciomercato durante la stagione
Da questa pagina l'allenatore può effettuare una
ricerca del calciatore che vuole comprare attraverso il suo id o il suo cognome o il
suo nome
mercato_in_stagione_passo2.jsp
mercato_in_stagione_passo3.html
UC-6 partecipazione al
calciomercato durante la stagione
UC-6 partecipazione al
calciomercato durante la stagione
L'allenatore può selezionare il calciatore che
intende acquistare
mercato_in_stagione_passo3.jsp
mercato_in_stagione_passo4.html
UC-6 partecipazione al
calciomercato durante la stagione
Nessuno
In questa pagina è mostrato il riepilogo
dell'operazione di mercato appena
effettuata
mercato_in_stagione_passo4.jsp
191
Progetto di Ingegneria del Software – Fantacalcio On-Line
info_lega_rialzo_allenatore.html
UC-3 consultazione informazioni sulla
legaNessuno
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_allenatore.jsp
info_lega_bustachiusa_allenatore.html
UC-3 consultazione informazioni sulla
legaNessuno
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_bustachiusa_allenatore.jsp
crea_rosa_rilancio_passo1...7
UC-7 creazione rosaUC-9 modalità asta
a rialzo
UC-7 creazione rosaUC-9 modalità asta
a rialzo
In queste pagine è possibile
completare la rosa della propria
squadra mediante un'asta a rialzo
realizzata in maniera interattiva
attesa.jspofferta.jsp
attesa_turno.jspcrea_rosa_rialzo.jsp
crea_rosa_busta.html
UC-7 creazione rosaUC-9 modalità asta
a busta chiusa
UC-7 creazione rosaUC-9 modalità asta
a busta chiusa
L'allenatore può selezionare i 25
calciatori che intende acquistare
per la sua squadra e le relative offerte
crea_rosa_busta.jsp
crea_rosa_busta_riepilogo.html
UC-7 creazione rosaUC-9 modalità asta
a busta chiusaNessuno
La pagina mostra all'allenatore il riepilogo delle scelte effettuate
crea_rosa_busta_riepilogo.jpg
crea_lega.html UC-14 creazione della lega
UC-15 inserimento numero partecipanti
Il presidente della lega può scegliere il nome per la lega in
creazione
crea_lega.jsp
numero_partecipanti.html
UC-15 inserimento numero partecipanti
UC-16 scelta modalità asta
Il presidente della lega sceglie il numero dei
partecipanti alla competizione
numero_partecipanti.jsp
scelta_modalita_asta.html
UC-16 scelta modalità asta
UC-17 scelta modalità busta
chiusaUC-18 scelta
modalità di offerta a rilancio
Il presidente della lega può operare la
scelta tra due tipologie di asta
iniziale per la sua lega
scelta_modalita_asta.jsp
192
Progetto di Ingegneria del Software – Fantacalcio On-Line
crea_lega_modalita_busta.html
UC-17 scelta modalità busta
chiusaNessuno
Il presidente sceglie le date significanti
per la creazione delle rose
crea_lega_modalita.jsp
riepilogo_crea_lega_busta.html
UC-17 scelta modalità busta
chiusaNessuno
Il presidente prende visione delle scelte
effettuate
riepilogo_crea_lega.jsp
reindirizza_registrazione.html Nessuno Nessuno
Il visitatore che effettua la
registrazione al sito viene
automaticamente reindirizzato alla
home page del sito
reindirizza_registrazione.jsp
crea_lega_modalita_rilancio.html
UC-18 scelta modalità di offerta a
rilancioNessuno
Il presidente sceglie la data di apertura e
la durata dell'asta avente modalità
interattiva a rialzo
crea_lega_modalita.jsp
riepilogo_crea_lega_riancio
UC-18 scelta modalità di offerta a
rilancioNessuno
Il presidente prende visione delle scelte
effettuate
riepilogo_crea_lega.jsp
registrazione.html UC-1 registrazione sistema
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
conferma.html UC-1 registrazione sistema Nessuno
Il visitatore può prendere visione dei
dati immessi al momento della registrazione
conferma.jsp
logvisitatore.html Nessuno
UC-2 consultazione delle rose delle squadre iscritte
UC-3 consultazione informazioni sulla
legaUC-4 consultazione
statisticheUC-5
consultazione risultati
Il visitatore può visitare il sito senza
accedere alle funzionalità più
importanti dell'applicazione
logvisitatore.html
statistiche_calciatore_visitatore.html
UC-4 consultazione statistiche
Nessuno Da tale pagina il visitatore ha la possibilità di
statistiche_calciatore_visitatore.jsp
193
Progetto di Ingegneria del Software – Fantacalcio On-Line
effettuare ricerche per la consultazione
delle statistiche
calendario_visitatore.html
UC-5 consultazione risultati
UC-5 consultazione risultati
Il visitatore può consultare il
calendario con tutti i risultati delle varie
giornate e può accedere al dettaglio
dei risultati delle singole giornate
calendario_visitatore.jsp
classifica_visitatore.html
UC-5 consultazione risultati Nessuno
Il visitatore accede nel dettaglio ai
risultati della Lega scelta, consultando
la classifica aggiornata
all'ultima giornata di campionato
svolta
classifica_visitatore.jsp
rosa_squadre_visitatore.html
UC-2 consultazione rose squadre iscritte Nessuno
Il visitatore accede alla funzione in cui può consultare le
rose di tutte le squadre iscritte nelle varie leghe
rosa_squadre_visitatore.jsp
info_lega_rialzo_visitatore.html
UC-3 consultazione informazioni sulla
legaNessuno
Da questa pagina è possibile accedere alle informazioni delle leghe (con modalità di asta iniziale a rialzo)
info_lega_visitatore.jsp
info_lega_bustachiusa_visitatore.html
UC-3 consultazione informazioni sulla
legaNessuno
Da questa pagina è possibile accedere alle informazioni delle leghe (con modalità di asta iniziale a busta
chiusa)
info_lega_visitatore.jsp
194
Progetto di Ingegneria del Software – Fantacalcio On-Line
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.0; 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
Progetto di Ingegneria del Software – Fantacalcio On-Line
4. Disegno del sistema
4.1 Introduzione
4.1.1 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
Progetto di Ingegneria del Software – Fantacalcio On-Line
4.2 Basi di dati
4.2.1 Schema ER
197
Progetto di Ingegneria del Software – Fantacalcio On-Line
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
Progetto di Ingegneria del Software – Fantacalcio On-Line
4.2.2 Glossario delle entità e delle relazioni
CalciatoreGiornataCampionatoRealeTipologia Entità
Descrizione Mantiene le informazioni statistiche sulle giornate disputate dai calciatori
CalciatoreGiornataCampionatoRealeAttributo Dominio Descrizione
giornata Intero[0,38]
Numero corrispondente alla
giornata di campionato reale
gol_fatti Intero [>= 0]
Numero dei gol realizzati dal
calciatore nell'ambito della
giornata di interesse
gol_subiti Intero [>= 0]
Numero dei gol subiti dal calciatore
nell'ambito della giornata di interesse
votoReale
[0,0.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,10]
Valore che indica il voto preso nella
giornata di campionato reale
dal calciatore
assist Intero [>= 0]
Numero degli assist effettuati dal
calciatore nell'ambito della
giornata di interesse
rigori_parati Intero [>= 0]
Numero di rigori parati dal calciatore
nella giornata di campionato reale
rigori_sbagliati Intero [>= 0] Numero di rigori
199
Progetto di Ingegneria del Software – Fantacalcio On-Line
falliti dal calciatore nella giornata di campionato reale
fantavoto Reale [>= 0]
Il voto del fantacalciatore
ricalcolato con le regole del fantacalcio
CalciatoreTipologia Entità
Descrizione Mantiene le informazioni anagrafiche e personali del calciatore
CalciatoreAttributo Dominio Descrizione
id Intero [>= 0]
Numero corrispondente univocamente ad un calciatore iscritto al
campionato si serie A
cognome Stringa [1,50] Il cognome del calciatore
nome Stringa [1,100] Il nome del calciatore
squadra Stringa [1,40]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
FantacalciatoreTipologia Entità
Descrizione Mantiene le informazioni di mappatura con i calciatori non appena essi vengono comprati da una fantasquadra
200
Progetto di Ingegneria del Software – Fantacalcio On-Line
FantacalciatoreAttributo Dominio Descrizione
id Intero[>= 0]
Numero corrispondente univocamente ad un calciatore iscritto al
campionato si serie A
disputaTipologia Relazione
DescrizioneE' la relazione tra Calciatore e
CalciatoreGiornataCampionatoReale
Molteplicità verso CalciatoreGiornataCampionatoReale(1,1) poiché la tabella
Calciatore contiene tutti i calciatori della base di dati
Molteplicità verso Calciatore
(0,1) poiché se l'amministratore inserisce un nuovo Calciatore alla giornata g quest'ultimo
ovviamente non sarà presente nella tabella in questione nelle
giornata (0,g-1)
disputaAttributo Dominio Descrizione
prezzo_cartellino Intero [1,226]La valutazione nell'ambito
del fantacalcio del calciatore nella giornata specifica
FantasquadraTipologia Entità
Descrizione Mantiene le informazioni fondamentali della fantasquadra
201
Progetto di Ingegneria del Software – Fantacalcio On-Line
FantasquadraAttributo Dominio Descrizione
nome Stringa [1,100]Il nome assegnato
dall'allenatore alla propria fantasquadra
fantastadio Stringa [1,100]Il nome assegnato
dall'allenatore allo stadio della sua fantasquadra
CassaTipologia Entità
Descrizione Mantiene le informazioni relative allo stato economico della fantasquadra
CassaAttributo Dominio Descrizione
versione Intero [>= 0] Numero corrispondente alla versione della cassa
fantamilioni Intero [0,250]
Numero corrispondente ai fantamilioni disponibili dalla
fantasquadra in quella versione
FantacalciatoreNellaRosaTipologia Entità
Descrizione Mantiene le informazioni relative all'acquisto di un fantacalciatore da parte di una fantasquadra
FantacalciatoreNellaRosaAttributo Dominio Descrizione
versione Intero [>= 1] Numero corrispondente alla versione della rosa
202
Progetto di Ingegneria del Software – Fantacalcio On-Line
FantacalciatoreInFormazioneTipologia Entità
Descrizione Mantiene le informazioni relative ai calciatori schierati in formazione da un allenatore
FantacalciatoreInFormazioneAttributo Dominio Descrizione
giornata Intero [1,36]
Numero corrispondente alla giornata di campionato
fantacalcistica in cui viene schierato il calciatore nella formazione della squadra
maglia Intero[1,2,...,17,18]
Numero corrispondente al numero di maglia indossato
dal fantacalciatore in una determinata giornata
fantacalcistica
OffertaCalciatoreTipologia Entità
Descrizione Mantiene le informazioni relative alle offerte a busta chiusa effettuate da parte di una fantasquadra per un determinato calciatore
OffertaCalciatoreAttributo Dominio Descrizione
versione Intero [>= 0] Numero corrispondente alla versione dell'offerta
offerta Intero[1,226]Numero corrispondente al valore dell'offerta per un
calciatore
203
Progetto di Ingegneria del Software – Fantacalcio On-Line
PartitaTipologia Entità
Descrizione Mantiene le informazioni sul calendario con i relativi risultati del fantacampionato
PartitaAttributo Dominio Descrizione
giornata Intero [1,36]
Numero corrispondente alla giornata di campionato fantacalcistico in cui si
disputa la partita
gol_squadra_casa Intero [>= 0]Numero dei gol effettuati
dalla fantasquadra che gioca in casa nella partita
gol_fantasquadra_ospite Intero [>= 0]Numero dei gol effettuati
dalla fantasquadra che gioca in trasferta nella partita
fantapunti_casa Reale [>= 0]Punti realizzati dalla
squadra che gioca in casa nella partita
fantapunti_ospite Reale [>= 0]Punti realizzati dalla squadra che gioca in trasferta nella partita
LegaTipologia Entità
Descrizione La classe mantiene le informazioni fondamentali relative alle leghe
LegaAttributo Dominio Descrizione
nome Stringa [1,100] Nome della lega
data_apertura_asta Stringa [10] La data che indica l'inizio dell'asta
numero_partecipanti Intero [4,6,8,10] Il numero delle squadre che partecipano alla lega
204
Progetto di Ingegneria del Software – Fantacalcio On-Line
LegaConAstaBustaChiusaTipologia Entità
Descrizione La classe mantiene in particolare le informazioni sulla lega con modalità d'asta a busta chiusa
LegaConAstaBustaChiusaAttributo Dominio Descrizione
data_scadenza_asta Stringa [10]La data che indica il termine di presentazione delle buste per la partecipaizone all'asta
LegaConAstaRialzoTipologia Entità
Descrizione La classe mantiene in particolare le informazioni sulla lega con modalità d'asta a rialzo
LegaConAstaRialzoAttributo Dominio Descrizione
durata Intero [1,12]
Numero corrispondente alla durata dell'asta interattiva a
rialzo. La durata indica le ore
ClassificaTipologia Entità
Descrizione Mantiene le informazioni relative alle classifiche delle varie leghe
205
Progetto di Ingegneria del Software – Fantacalcio On-Line
ClassificaAttributo Dominio Descrizione
giornata Intero [0,36]Numero corrispondente alla
giornata di campionato fantacalcistico
posizione Intero [1,numero_partecipanti]
La posizione della fantasquadra nella classifica
della lega in una determinata giornata
punteggio Intero [>= 0]I punti totalizzati fino
all'ultima giornata disputata dalla fantasquadra nella lega
fantapunteggio Reale [>= 0]
I fantapunti totalizzati fino all'ultima giornata disputata dalla fantasquadra nella lega
vinte Intero [>= 0]
Il numero di vittorie totalizzatie fino alla giornata disputata dalla fantasquadra
nella lega
pareggiate Intero [>= 0]
Il numero di partite pareggiate fino alla giornata disputata dalla fantasquadra
nella lega
perse Intero [>= 0]Il numero di partite perse
fino alla giornata disputata dalla fantasquadra nella lega
gol_fatti Intero [>= 0]Il numero di reti segnate fino alla giornata disputata dalla
fantasquadra nella lega
gol_subiti Intero [>= 0]Il numero di reti subite fino alla giornata disputata dalla
fantasquadra nella lega
206
Progetto di Ingegneria del Software – Fantacalcio On-Line
AllenatoreTipologia Entità
Descrizione Mantiene le informazioni relative agli allenatori iscritti alle leghe
AllenatoreAttributo Dominio Descrizione
username Stringa [4,30]
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
email Stringa [6,80] La mail dell'allenatore
CalciatoreDisputaTipologia Entità
Descrizione Mantiene le informazioni relative ai calciatori che disputano le giornate del campionato reale di seria A
CalciatoreNonDisputaTipologia Entità
Descrizione Mantiene le informazioni relative ai calciatori che non disputano le giornate del campionato reale di seria A
CalciatoreAmmonitoTipologia Entità
Descrizione Mantiene le informazioni relative ai calciatori ammoniti nel campionato reale di serie A
207
Progetto di Ingegneria del Software – Fantacalcio On-Line
CalciatoreEspulsoTipologia Entità
Descrizione Mantiene le informazioni relative ai calciatori espulsi nel campionato reale di serie A
PortiereTipologia Entità
Descrizione Mantiene le informazioni relative ai portieri
DifensoreTipologia Entità
Descrizione Mantiene le informazioni relative ai difensori
CentrocampistaTipologia Entità
Descrizione Mantiene le informazioni relative ai centrocampisti
AttaccanteTipologia Entità
Descrizione Mantiene le informazioni relative agli attaccanti
PartitaDisputataTipologia Entità
Descrizione Mantiene le informazioni relative alle partite disputate
PartitaNonDisputataTipologia Entità
Descrizione Mantiene le informazioni relative alle partite non disputate
208
Progetto di Ingegneria del Software – Fantacalcio On-Line
FantacalciatoreTitolareTipologia Entità
Descrizione Mantiene le informazioni relative ai fantacalciatori che hanno giocato titolare
FantacalciatoreNonTitolareTipologia Entità
Descrizione Mantiene le informazioni relative ai fantacalciatori che non hanno giocato
FantacalciatoreTitolareIncisoTipologia Entità
Descrizione Mantene le informazioni relative ai fantacalciatori titolari che hanno inciso nel calcolo del fantapunteggio di una fantasquadra
FantacalciatoreTitolareNonIncisoTipologia Entità
Descrizione Mantene le informazioni relative ai fantacalciatori titolari che non hanno inciso nel calcolo del fantapunteggio di una fantasquadra
FantacalciatoreNonTitolareIncisoTipologia Entità
Descrizione Mantene le informazioni relative ai fantacalciatori riserve che hanno inciso nel calcolo del fantapunteggio di una fantasquadra
FantacalciatoreNonTitolareNonIncisoTipologia Entità
Descrizione Mantiene le informazioni relative ai fantacalciatori riserve che non hanno inciso nel calcolo del fantapunteggio di una fantasquadra
209
Progetto di Ingegneria del Software – Fantacalcio On-Line
mappato_inTipologia Entità
Descrizione E' la relazione tra Calciatore e Fantacalciatore
Molteplicità verso Calciatore(0,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
delTipologia 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 (0,1) poiché una Fantasquadra può o non può fare offerte per un Calciatore
faTipologia 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(0,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
210
Progetto di Ingegneria del Software – Fantacalcio On-Line
inTipologia Relazione
DescrizioneE' la relazione tra
FantacalciatoreInFormazione e Fantacalciatore
Molteplicità verso FantacalciatoreInFormazione
(1,1) poiché FantacalciatoreInFormazione era inizialmente una relazione che poi è
stata reificata
Molteplicità verso Fantacalciatore(0,n) poiché ogni Fantacalciatore può o
non può essere schierato dalla Fantasquadra che lo possiede
schieraTipologia Relazione
DescrizioneE' 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
dalTipologia 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
Progetto di Ingegneria del Software – Fantacalcio On-Line
haTipologia 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
allenaTipologia 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 legaTipologia Relazione
Descrizione E' la relazione tra Allenatore e Lega
Molteplicità verso Allenatore (0,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
dellaTipologia 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,10) poiché una Lega è composta da 4 o 6 o 8 o 10 fantasquadre
212
Progetto di Ingegneria del Software – Fantacalcio On-Line
inseritaTipologia 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
casaTipologia 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
ospiteTipologia 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 _diTipologia 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
Progetto di Ingegneria del Software – Fantacalcio On-Line
4.2.3 Elenco di tutti i vincoli non esprimibili mediante lo schema ER
➢ In una Lega possono partecipare 4, 6, 8 o 10 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 0 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 7.
214
Progetto di Ingegneria del Software – Fantacalcio On-Line
4.2.4 Schema ER ristrutturato
215
Progetto di Ingegneria del Software – Fantacalcio On-Line
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) = 0
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) = 0
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) ANDAttaccante(id_fantacalciatore) = 0
Fantacalciatore(id) = Portiere(id_fantacalciatore) OR Difensore(id_fantacalciatore) OR Centrocampista(id_fantacalciatore) OR Attaccante(id_fantacalciatore)
216
Progetto di Ingegneria del Software – Fantacalcio On-Line
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) ANDFantacalciatoreNonTitolare(giornata,id_fantacalciatore,nome_fantasquadra) = 0
FantacalciatoreInFormazione(giornata,id_fantacalciatore,nome_fantasquadra) = FantacalciatoreTitolare(giornata,id_fantacalciatore,nome_fantasquadra) ORFantacalciatoreNonTitolare(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) ANDFantacalciatoreTitolareNonInciso(giornata,id_fantacalciatore,nome_fantasquadra) = 0
FantacalciatoreTitolare(giornata,id_fantacalciatore,nome_fantasquadra) = FantacalciatoreTitolareInciso(giornata,id_fantacalciatore,nome_fantasquadra) ORFantacalciatoreTitolareNonInciso(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
Progetto di Ingegneria del Software – Fantacalcio On-Line
FantacalciatoreNonTitolareInciso(giornata,id_fantacalciatore,nome_fantasquadra) ANDFantacalciatoreNonTitolareNonInciso(giornata,id_fantacalciatore,nome_fantasquadra) = 0
FantacalciatoreNonTitolare(giornata,id_fantacalciatore,nome_fantasquadra) = FantacalciatoreNonTitolareInciso(giornata,id_fantacalciatore,nome_fantasquadra) ORFantacalciatoreNonTitolareNonInciso(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,email)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) = 0
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
Progetto di Ingegneria del Software – Fantacalcio On-Line
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) = 0
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
Progetto di Ingegneria del Software – Fantacalcio On-Line
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) = 0
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.
220
Progetto di Ingegneria del Software – Fantacalcio On-Line
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,email,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) = 0
Lega(nome) = LegaConAstaBustaChiusa(nome_lega) OR LegaConAstaRialzo(nome_lega)
221
Progetto di Ingegneria del Software – Fantacalcio On-Line
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
Progetto di Ingegneria del Software – Fantacalcio On-Line
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.
4.2.8 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.
4.2.9 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.
4.2.9.1 Creazione delle tabelle
Begin;
Drop Database Fantacalcio;
Create Database Fantacalcio;
Use Fantacalcio;
Create Table Calciatore(
ID int,COGNOME varchar(50) not null,NOME varchar(100) not null,SQUADRA varchar(40) not null,RUOLO enum ('Portiere', 'Difensore', 'Centrocampista','Attaccante'),FOTO varchar(1000),Primary Key (ID)
);
223
Progetto di Ingegneria del Software – Fantacalcio On-Line
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
Progetto di Ingegneria del Software – Fantacalcio On-Line
Create Table Fantasquadra(
NOME varchar(100),FANTASTADIO varchar(100) not null,FANTAMILIONI int,Primary Key (NOME)
);
Create Table OffertaCalciatore(
VERSIONE int,NOME_FANTASQUADRA varchar(100),ID_CALCIATORE int,OFFERTA int,Primary Key (VERSIONE,NOME_FANTASQUADRA,ID_CALCIATORE)
);
Create Table FantacalciatoreInFormazione(
GIORNATA int,ID_FANTACALCIATORE int,NOME_FANTASQUADRA varchar(100),TITOLARE boolean,MAGLIA int,INCISO boolean,Primary Key (GIORNATA,ID_FANTACALCIATORE,NOME_FANTASQUADRA)
);
Create Table FantacalciatoreNellaRosa(
VERSIONE int,ID_FANTACALCIATORE int,NOME_FANTASQUADRA varchar(100),Primary Key (VERSIONE,ID_FANTACALCIATORE,NOME_FANTASQUADRA)
);
Create Table Allenatore(
USERNAME varchar(30),PASSWORD varchar(12) not null,EMAIL varchar(80) not null,NOME_FANTASQUADRA varchar (100),Primary Key (USERNAME),Unique (NOME_FANTASQUADRA)
);
225
Progetto di Ingegneria del Software – Fantacalcio On-Line
Create Table Lega(
NOME varchar(100),DATA_APERTURA_ASTA varchar(10) not null,NUMERO_PARTECIPANTI int,PRESIDENTE varchar(30) not null,Primary Key (NOME)
);
Create Table LegaConAstaBustaChiusa(
NOME_LEGA varchar(100),DATA_SCADENZA_ASTA varchar(10) not null,Primary Key (NOME_LEGA)
);
Create Table LegaConAstaRialzo(
NOME_LEGA varchar(100),DURATA int,Primary Key (NOME_LEGA)
);
Create Table Classifica(
GIORNATA int,NOME_LEGA varchar(100),NOME_FANTASQUADRA varchar(100),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
Progetto di Ingegneria del Software – Fantacalcio On-Line
Create Table Partita(
GIORNATA int,NOME_FANTASQUADRA_CASA varchar(100),NOME_FANTASQUADRA_OSPITE varchar(100),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(10),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
Progetto di Ingegneria del Software – Fantacalcio On-Line
4.2.9.2 Foreign Key
Begin;
Alter Table `Fantacalcio`.`CalciatoreGiornataCampionatoReale` add constraint `FK-CalciatoreGiornataCampionatoReale-Calciatore` foreign key `FK-CalciatoreGiornataCampionatoReale-Calciatore` (`ID_CALCIATORE`) references `Calciatore` (`ID`) on delete cascade on update cascade;
Alter Table `Fantacalcio`.`Fantacalciatore` add constraint `FK-Fantacalciatore-Calciatore` foreign key `FK-Fantacalciatore-Calciatore` (`ID_CALCIATORE`) references `Calciatore` (`ID`) on delete cascade on update cascade;
Alter Table `Fantacalcio`.`Portiere` add constraint `FK-Portiere-Fantacalciatore` foreign key `FK-Portiere-Fantacalciatore` (`ID_FANTACALCIATORE`) references `Fantacalciatore` (`ID`) on delete cascade on update cascade;
Alter Table `Fantacalcio`.`Difensore` add constraint `FK-Difensore-Fantacalciatore` foreign key `FK-Difensore-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 `FK-Attaccante-Fantacalciatore` (`ID_FANTACALCIATORE`) references `Fantacalciatore` (`ID`) on delete cascade on update cascade;
Alter Table `Fantacalcio`.`Allenatore` add constraint `FK-Allenatore-Fantasquadra` foreign key `FK-Allenatore-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-FantacalciatoreInFormazione-Fantasquadra` foreign key `FK-FantacalciatoreInFormazione-Fantasquadra` (`NOME_FANTASQUADRA`) references `Fantasquadra` (`NOME`) on delete cascade on update cascade;
Alter Table `Fantacalcio`.`FantacalciatoreInFormazione` add constraint `FK-FantacalciatoreInFormazione-Fantacalciatore` foreign key `FK-FantacalciatoreInFormazione-Fantacalciatore` (`ID_FANTACALCIATORE`) references `Fantacalciatore` (`ID`) on delete cascade on update cascade;
Alter Table `Fantacalcio`.`FantacalciatoreNellaRosa` add constraint `FK-FantacalciatoreNellaRosa-Fantasquadra` foreign key `FK-FantacalciatoreNellaRosa-Fantasquadra` (`NOME_FANTASQUADRA`) references `Fantasquadra` (`NOME`) on delete cascade on update cascade;
228
Progetto di Ingegneria del Software – Fantacalcio On-Line
Alter Table `Fantacalcio`.`FantacalciatoreNellaRosa` add constraint `FK-FantacalciatoreNellaRosa-Fantacalciatore` 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-Classifica-Fantasquadra` (`NOME_FANTASQUADRA`) references `Fantasquadra` (`NOME`) on delete cascade on update cascade;
Alter Table `Fantacalcio`.`Partita` add constraint `FK-Partita-Fantasquadra_Casa` foreign key `FK-Partita-Fantasquadra_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-Partita-Fantasquadra_Ospite` (`NOME_FANTASQUADRA_OSPITE`) references `Fantasquadra` (`NOME`) on delete cascade on update cascade;
Commit;
229
Progetto di Ingegneria del Software – Fantacalcio On-Line
4.2.9.3 Stored Procedure
Begin;
Delimiter $
Create Procedure sp_eccezione()Begin
Select USERNAMEFrom AllenatoreWhere 0=1;
End$
Create Procedure sp_verificaCalciatore(id int)Begin
If (id < 0) 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)
BeginIf (id_c < 0) Then Call sp_eccezione();End If;If ((g < 0) || (g > 38)) Then Call sp_eccezione();End If;If Not ((v = 0) || (v = 0.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 = 10)) Then Call sp_eccezione();End If;If (g_s < 0) Then Call sp_eccezione();End If;If (g_f < 0) Then Call sp_eccezione();End If;If (a < 0) Then Call sp_eccezione();End If;If (r_p < 0) Then Call sp_eccezione();End If;If (r_s < 0) Then Call sp_eccezione();End If;If (f < 0) 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$
230
Progetto di Ingegneria del Software – Fantacalcio On-Line
Create Procedure sp_verificaFantacalciatore(id int, id_c int)Begin
If (id < 0) Then Call sp_eccezione();End If;If (id_c < 0) 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 '02000' Set VIOLAZIONE = 0;
Open crs;
Fetch crs Into TEMP_1;
If (VIOLAZIONE) Then Call sp_eccezione();End If;If (id_f < 0) Then Call sp_eccezione();End If;
End$
231
Progetto di Ingegneria del Software – Fantacalcio On-Line
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 '02000' Set VIOLAZIONE = 0;
Open crs;
Fetch crs Into TEMP_1;
If (VIOLAZIONE) Then Call sp_eccezione();End If;If (id_f < 0) 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
Progetto di Ingegneria del Software – Fantacalcio On-Line
Declare Continue Handler For SQLSTATE '02000' Set VIOLAZIONE = 0;
Open crs;
Fetch crs Into TEMP_1;
If (VIOLAZIONE) Then Call sp_eccezione();End If;If (id_f < 0) 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 '02000' Set VIOLAZIONE = 0;
Open crs;
Fetch crs Into TEMP_1;
If (VIOLAZIONE) Then Call sp_eccezione();End If;If (id_f < 0) Then Call sp_eccezione();End If;
End$
Create Procedure sp_verificaVincoliFantasquadra(f int)Begin
If ((f < 0) || (f > 250)) Then Call sp_eccezione();End If;
End$
233
Progetto di Ingegneria del Software – Fantacalcio On-Line
Create Procedure sp_verificaOffertaCalciatore(v int, id_c int, o int)Begin
If (v < 0) Then Call sp_eccezione();End If;If (id_c < 0) 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(100))Begin
Declare TEMP_1 int;Declare TEMP_2 varchar(100);Declare VIOLAZIONE bool Default 0;
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 '02000' 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 < 0) 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 < 0) 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 = 10))) Then Call sp_eccezione();End If;
End$
234
Progetto di Ingegneria del Software – Fantacalcio On-Line
Create Procedure sp_verificaLegaConAstaBustaChiusa(n_l varchar(100))Begin
Declare TEMP_1 varchar(100);
Declare crs Cursor For (Select nome_lega From LegaConAstaRialzo Where n_l = nome_lega);
Declare Exit Handler For SQLSTATE '02000' Begin End;
Open crs;
Fetch crs Into TEMP_1;
Call sp_eccezione();End$
Create Procedure sp_verificaLegaConAstaRialzo(n_l varchar(100), d int)Begin
Declare TEMP_1 varchar(100);
Declare crs Cursor For (Select nome_lega From LegaConAstaBustaChiusa Where n_l = nome_lega);
Declare Exit Handler For SQLSTATE '02000'Begin
If ((d < 1) || (d > 12)) Then Call sp_eccezione();End If;
End;
Open crs;
Fetch crs Into TEMP_1;
Call sp_eccezione();End$
235
Progetto di Ingegneria del Software – Fantacalcio On-Line
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 < 0) || (g > 36)) Then Call sp_eccezione();End If;If (pu < 0) Then Call sp_eccezione();End If;If (v < 0) Then Call sp_eccezione();End If;If (pa < 0) Then Call sp_eccezione();End If;If (pe < 0) Then Call sp_eccezione();End If;If (g_f < 0) Then Call sp_eccezione();End If;If (g_s < 0) Then Call sp_eccezione();End If;If (f < 0) 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 < 0) Then Call sp_eccezione();End If;If (g_s_o < 0) Then Call sp_eccezione();End If;If (f_c < 0) Then Call sp_eccezione();End If;If (f_o < 0) Then Call sp_eccezione();End If;
End$
Delimiter ;
Commit;
236
Progetto di Ingegneria del Software – Fantacalcio On-Line
4.2.9.4 Trigger
Begin;
Delimiter $
Create Trigger tgr_verificaCalciatore Before Insert On Calciatore For Each RowCall 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 RowCall sp_verificaFantacalciatore(new.id, new.id_calciatore)$
Create Trigger tgr_verificaPortiere Before Insert On Portiere For Each RowCall sp_verificaPortiere(new.id_fantacalciatore)$
Create Trigger tgr_verificaDifensore Before Insert On Difensore For Each RowCall sp_verificaDifensore(new.id_fantacalciatore)$
Create Trigger tgr_verificaCentrocampista Before Insert On Centrocampista For Each RowCall sp_verificaCentrocampista(new.id_fantacalciatore)$
Create Trigger tgr_verificaAttaccante Before Insert On Attaccante For Each RowCall sp_verificaAttaccante(new.id_fantacalciatore)$
Create Trigger tgr_verificaVincoliFantasquadra Before Insert On Fantasquadra For Each RowCall 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 RowCall 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 RowCall sp_verificaVincoliLega(new.numero_partecipanti)$
Create Trigger tgr_verificaLegaConAstaBustaChiusa Before Insert On LegaConAstaBustaChiusa For Each Row Call sp_verificaLegaConAstaBustaChiusa(new.nome_lega)$
237
Progetto di Ingegneria del Software – Fantacalcio On-Line
Create Trigger tgr_verificaLegaConAstaRialzo Before Insert On LegaConAstaRialzo For Each RowCall sp_verificaLegaConAstaRialzo(new.nome_lega, new.durata)$
Create Trigger tgr_verificaVincoliClassifica Before Insert On Classifica For Each RowCall 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 RowCall sp_verificaVincoliPartita(new.giornata, new.gol_squadra_casa, new.gol_squadra_ospite, new.fantapunti_casa, new.fantapunti_ospite)$
Delimiter ;
Commit;
238
Progetto di Ingegneria del Software – Fantacalcio On-Line
4.2.10 Vincoli di stato
CalciatoreVincolo Javascript Java Trigger SQLid [>= 0] no no si no
cognome [1-50] si si no si (not null)
nome [1-100] si si no si (not null)
squadra [1-40] si si no si (not null)
ruolo: [P-D-C-A] no si no si
CalciatoreGiornataCampionatoRealeVincolo Javascript Java Trigger SQL
giornata [0-38] no si si no
id_calciatore [>= 0] no no si no
gol_fatti [>= 0] no si si no
gol_subiti [>= 0] no si si no
assist [>= 0] no si si no
rigori_parati [>= 0] no si si no
rigori_sbagliati [>= 0] no si si novoto
[0,0.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,10] no si si no
fantavoto [>= 0] no si si no
prezzo_cartellino [1-226] no si si no
ammonito o espulso no si si no
FantacalciatoreVincolo Javascript Java Trigger SQL
id [>= 0] no no si no
id_calciatore [>= 0] no no si no
239
Progetto di Ingegneria del Software – Fantacalcio On-Line
Portiere
Vincolo Javascript Java Trigger SQL
id_fantacalciatore [>= 0] no no si no
Difensore
Vincolo Javascript Java Trigger SQL
id_fantacalciatore [>= 0] no no si no
Centrocampista
Vincolo Javascript Java Trigger SQL
id_fantacalciatore [>= 0] no no si no
Attaccante
Vincolo Javascript Java Trigger SQL
id_fantacalciatore [>= 0] no no si no
Fantasquadra
Vincolo Javascript Java Trigger SQL
nome [1-100] si si no no
fantastadio [1-100] si si no si (not null)
fantamilioni [0-250] no si si no
240
Progetto di Ingegneria del Software – Fantacalcio On-Line
OffertaCalciatoreVincolo Javascript Java Trigger SQL
versione [>= 0] no si si no
nome_fantasquadra [1-100] si si no no
id_calciatore [>= 0] no no si no
offerta [1-226] si si si no
FantacalciatoreInFormazioneVincolo Javascript Java Trigger SQL
giornata [1-36] no si si no
id_fantacalciatore [>= 0] no no si no
nome_fantasquadra [1-100] si si no no
maglia [1,2,...,17,18] no si no no
FantacalciatoreNellaRosaVincolo Javascript Java Trigger SQL
versione [>= 1] no si si no
id_fantacalciatore [>= 0] no no si no
nome_fantasquadra [1-100] si si no no
AllenatoreVincolo Javascript Java Trigger SQL
username [4-30] si si no no
password [4-12] si si no si (not null)
email [6-80] si si no si (not null)
nome_fantasquadra [1-100] si si no no
241
Progetto di Ingegneria del Software – Fantacalcio On-Line
LegaVincolo Javascript Java Trigger SQL
nome [1-100] si si no no
data_apertura_asta [10] si si no si (not null)numero_partecipanti[4,6,8,1
0] no si si no
presidente [4-30] si si no si (not null)
LegaConAstaBustaChiusaVincolo Javascript Java Trigger SQL
nome_lega [1-100] si si no no
data_scadenza_asta [10] si si no si (not null)
LegaConAstaRialzoVincolo Javascript Java Trigger SQL
nome_lega [1-100] si si no no
durata [1-12] no si si no
ClassificaVincolo Javascript Java Trigger SQL
giornata [0-36] no si si no
nome_lega [1-100] si si no no
nome_fantasquadra [1-100] si si no no
posizione [1,numero_partecipanti] no si no no
punteggio [>= 0] no si si no
vinte [>= 0] no si si no
pareggiate [>= 0] no si si no
perse [>= 0] no si si no
gol_fatti [>= 0] no si si no
gol_subiti [>= 0] no si si no
fantapunteggio [>= 0] no si si no
242
Progetto di Ingegneria del Software – Fantacalcio On-Line
PartitaVincolo Javascript Java Trigger SQL
giornata [1-36] no si si no
nome_fantasquadra_casa [1-100] si si no no
nome_fantasquadra_ospite [1-100] si si no no
gol_squadra_casa [>= 0] no si si no
gol_squadra_ospite [>= 0] no si si no
fantapunti_casa [>= 0] no si si no
fantapunti_ospite [>= 0] no si si no
4.2.10.1 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
Progetto di Ingegneria del Software – Fantacalcio On-Line
4.2.10.2 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.
4.2.11 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à (0,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
Progetto di Ingegneria del Software – Fantacalcio On-Line
➢ Il vincolo che la somma delle tuple di LegaConAstaBustaChiusa e
LegaConAstaRialzo è pari alle tuple di Lega sarà implementato a livello
applicazione attraverso una transazione.
4.2.12 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
Progetto di Ingegneria del Software – Fantacalcio On-Line
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 2690
Cpu Intel Centrino Core Duo T7700 2.4 Ghz
Ram 2 Gb
Sistema Operativo: Linux Ubuntu 8.04/8.10, Windows Vista Ultimate Edition
➢ Asus A8JR-4P005C
Cpu Intel Centrino Core Duo T5500 1.66 Ghz
Ram 1 Gb
Sistema Operativo: Windows XP Professional Edition SP 2
➢ Sony Vaio VGN-N11H/W
Cpu Intel Centrino Core Duo T2250 1.73 Ghz
Ram 1 Gb
Sistema Operativo: Linux Ubuntu 8.10, Windows Media Center 2003
246
Progetto di Ingegneria del Software – Fantacalcio On-Line
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 6.0.14.
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
Progetto di Ingegneria del Software – Fantacalcio On-Line
4.5 Architettura software
4.5.1 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.
4.5.2 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
Progetto di Ingegneria del Software – Fantacalcio On-Line
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.
4.5.3.1 Deployment Diagram
249
Progetto di Ingegneria del Software – Fantacalcio On-Line
4.5.3.2 Component Diagram
4.5.3.3 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.
250
Progetto di Ingegneria del Software – Fantacalcio On-Line
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
Progetto di Ingegneria del Software – Fantacalcio On-Line
➢ 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
Progetto di Ingegneria del Software – Fantacalcio On-Line
➢ 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.
4.5.4 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
Progetto di Ingegneria del Software – Fantacalcio On-Line
4.5.4.1 Servlets
254
Progetto di Ingegneria del Software – Fantacalcio On-Line
4.5.4.2 Controller
255
Progetto di Ingegneria del Software – Fantacalcio On-Line
4.5.4.3 Domain Classes
256
Progetto di Ingegneria del Software – Fantacalcio On-Line
4.5.4.4 Persistence Classes
4.5.4.5 Utility
257
Progetto di Ingegneria del Software – Fantacalcio On-Line
4.5.5 Responsabilità delle associazioni
Associazione Calciatore GiornataCampionatoRealedisputa si no
Associazione Calciatore Fantasquadraformazione si no
rosa si no
offerta si no
Associazione Allenatore Fantasquadraallena si si
Associazione Allenatore Legapresidente della lega no si
Associazione Lega Fantasquadraasta a rialzo si no
classifica si si
Associazione Fantasquadra casa Fantasquadra ospitepartita si si
4.5.6 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
Progetto di Ingegneria del Software – Fantacalcio On-Line
4.5.6.1 Design Model e Sequence Diagram: registrazione al sistema (UC-1)
259
Progetto di Ingegneria del Software – Fantacalcio On-Line
4.5.6.2 Design Model e Sequence Diagram: consultazione delle rose delle squadre iscritte (UC-2)
260
Progetto di Ingegneria del Software – Fantacalcio On-Line
4.5.6.3 Design Model e Sequence Diagram: consultazione informazioni sulla lega (UC-3)
261
Progetto di Ingegneria del Software – Fantacalcio On-Line
4.5.6.4 Design Model e Sequence Diagram: consultazione statistiche (UC-4)
262
Progetto di Ingegneria del Software – Fantacalcio On-Line
4.5.6.5 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.
4.5.6.5.1 Design Model e Sequence Diagram: consultazione calendario
263
Progetto di Ingegneria del Software – Fantacalcio On-Line
4.5.6.5.2 Design Model e Sequence Diagram: consultazione classifica
264
Progetto di Ingegneria del Software – Fantacalcio On-Line
4.5.6.6 Design Model e Sequence Diagram: partecipazione al calciomercato durante la stagione (UC-6)
265
Progetto di Ingegneria del Software – Fantacalcio On-Line
4.5.6.7 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
Progetto di Ingegneria del Software – Fantacalcio On-Line
4.5.6.8 Design Model e Sequence Diagram: creazione rosa modalità asta a busta chiusa (UC-9)
267
Progetto di Ingegneria del Software – Fantacalcio On-Line
4.5.6.9 Design Model e Sequence Diagram: login (UC-10)
268
Progetto di Ingegneria del Software – Fantacalcio On-Line
4.5.6.10 Design Model e Sequence Diagram: scelta formazione senza l'ausilio del sistema (UC-12)
269
Progetto di Ingegneria del Software – Fantacalcio On-Line
4.5.6.11 Design Model e Sequence Diagram: scelta formazione con l'ausilio del sistema (UC-13)
270
Progetto di Ingegneria del Software – Fantacalcio On-Line
4.5.6.12 Design Model e Sequence Diagram: creazione della lega modalità asta a rialzo (UC-18)
271
Progetto di Ingegneria del Software – Fantacalcio On-Line
4.5.6.13 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.
4.5.6.13.1 Design Model e Sequence Diagram: inserimento voti
272
Progetto di Ingegneria del Software – Fantacalcio On-Line
4.5.6.13.2 Design Model e Sequence Diagram: calcolo dei risultati
273
Progetto di Ingegneria del Software – Fantacalcio On-Line
4.5.6.14 Design Model e Sequence Diagram: modifica lista calciatori (UC-20)
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.
4.5.6.14.1 Design Model e Sequence Diagram: modifica calciatori
274
Progetto di Ingegneria del Software – Fantacalcio On-Line
275
Progetto di Ingegneria del Software – Fantacalcio On-Line
4.5.6.14.2 Design Model e Sequence Diagram: inserimento calciatori
276
Progetto di Ingegneria del Software – Fantacalcio On-Line
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
Progetto di Ingegneria del Software – Fantacalcio On-Line
5. Implementazione
5.1 Introduzione
5.1.1 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
Progetto di Ingegneria del Software – Fantacalcio On-Line
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
Progetto di Ingegneria del Software – Fantacalcio On-Line
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.;
280
Progetto di Ingegneria del Software – Fantacalcio On-Line
➢ Modifica lista calciatori (UC-20): 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
Progetto di Ingegneria del Software – Fantacalcio On-Line
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
Progetto di Ingegneria del Software – Fantacalcio On-Line
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.
6.1.1 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 www.java.com dove è possibile
scaricarla gratuitamente. Per installarla sarà sufficiente seguire la semplice procedura
d'installazione guidata.
6.1.2 Installazione del DBMS MySQL 5.0
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.0 scaricabile gratuitamente dal sito web
www.sun.com. Per installarlo correttamente sarà necessario seguire l'installazione guidata
e durante tale operazione inserire come password di root: oronzocana.
6.1.2.1 Configurazione MySQL Server
E' inoltre necessario configurare MySQL Server in modo tale da renderlo accessibile anche
da remoto.
283
Progetto di Ingegneria del Software – Fantacalcio On-Line
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ò.
6.1.4 Installazione Tomcat 6.0.14
Per il corretto utilizzo dell’applicazione Fantacalcio On-Line è necessario aver installato il
web server Tomcat 6.0.14. E’ possibile scaricare l’ultima versione di Tomcat 6.0.14 dal sito
http://tomcat.apache.org.
Per installare Tomcat 6.0.14 lanciare la procedura di installazione e seguire le seguenti
istruzioni:
➢ Configurazione Tomcat 6.0.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
6.0.14 (normalmente in Windows è C:\Programmi\Apache Software Foundation\
TomCat 6.0\);
➢ Riavviare Tomcat 6.0.14.
284
Progetto di Ingegneria del Software – Fantacalcio On-Line
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.
6.2.1 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, email, 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
Progetto di Ingegneria del Software – Fantacalcio On-Line
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.
6.2.3 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
Progetto di Ingegneria del Software – Fantacalcio On-Line
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
Progetto di Ingegneria del Software – Fantacalcio On-Line
7. Piano dei test
7.1 Introduzione
7.1.1 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
Progetto di Ingegneria del Software – Fantacalcio On-Line
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.
7.2.1 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.
7.2.1.1 White Box
➢ ServletLogin: metodo doPost
➢ ServletAcquisisciRose: metodo doPost
➢ DAOAllenatore: metodo verifica
289
Progetto di Ingegneria del Software – Fantacalcio On-Line
7.2.1.2 Black Box
➢ AssociazioneDisputa: metodo calcolaFantavoto
➢ ControllerCalciatore: metodo acquisisciCalciatoriPerAstaRialzo
➢ DAOAllenatore: metodo verifica
➢ DAOPortiere: metodoInserimentoPortiere
7.2.2 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)
290
Progetto di Ingegneria del Software – Fantacalcio On-Line
7.3 Rapporto dei test
7.3.1 Test di unità
In questa sezione verranno mostrati i risultati dei test di unità divisi in white box e black
box.
7.3.1.1 White Box
Qui di seguito saranno riportati in dettaglio i risultati dei test sui vari metodi utilizzando
la tecnica di testing white box.
7.3.1.1.1 ServletLogin: metodo doPost
Autore
Autore DataPaluci Marco 28/11/2008
Codicepublic 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
Progetto di Ingegneria del Software – Fantacalcio On-Line
else {
(M) if (session.getAttribute("Username") == null) {
(N) int i = ris.indexOf("$",0); String fantasquadra = ris.substring(0,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 {
(O) if (username.equalsIgnoreCase((String) session.getAttribute("Username"))) {
(P) request.setAttribute("risposta","Sei già loggato"); address = "index.jsp";
} else {
request.setAttribute("risposta","Non puoi loggarti contemporaneamente con più username diversi"); address = "index.jsp";
} }
} RequestDispatcher dispatcher = request.getRequestDispatcher(address); dispatcher.forward(request,response);
} (FINE)}
292
Progetto di Ingegneria del Software – Fantacalcio On-Line
Albero
Scelta dei cammini
C1: A-B-C-D-FINEC2: A-B-C-E-FINEC3: A-B-F-FINEC4: A-G-H-FINEC5: A-G-I-M-N-FINEC6: A-G-I-M-O-P-FINEC7: A-G-I-L-FINEC8: A-G-I-M-O-FINE
293
Progetto di Ingegneria del Software – Fantacalcio On-Line
Matrice dei cammini scelti
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
C1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0
C2 1 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0
C3 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
C4 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0
C5 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0
C6 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 1 1 0 1 0
C7 0 0 0 0 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0
C8 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 1 0 0 0 1
La matrice ha rango pari a 8 quindi è una base.
Risultati del test
TestID Input Output atteso Risultato
T01username=“admin”,
Amministratore.login(...)=“Ok”,session.getAttribute(“Username”)=null.
logadmin.jsp Ok
T02username=“admin”,
Amministratore.login(...)=“Ok”,session.getAttribute(“Username”)!=null.
Messaggio(“Sei già loggato”) Ok
T03 username=“admin”,Amministratore.login(...)!=“Ok”
Messaggio(“Il server attualmente non funziona correttamente. Riprovare
più tardi”) oppure Messaggio(“Login
errato”)
Ok
T04 username!=“admin”,ris=“Login errato”.
Messaggio(“Login errato”) Ok
T05 username!=“admin”,session.getAttribute(“Username”)==null. logallenatore.jsp Ok
T06 username!=“admin”,session.getAttribute(“Username”)!=null
Messaggio(“Sei già loggato”); Ok
T07username!=“admin”,
ris=“Il server attualmente non funziona correttamente. Riprovare più tardi”.
Messaggio(“Il server attualmente non funziona correttamente. Riprovare
più tardi”)
Ok
T08 username!=“admin”,username!=session.getAttribute(“Username”).
Messaggio(“Non puoi loggarti
contemporaneamente con più username diversi”)
Ok
294
Progetto di Ingegneria del Software – Fantacalcio On-Line
7.3.1.1.2 ServletAcquisisciRose: metodo doPost
Autore
Autore DataMalacario Mirko 28/11/2008
Codicepublic 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 = 0; 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
Progetto di Ingegneria del Software – Fantacalcio On-Line
Scelta dei cammini
C1: A-B-C-B-D-FINEC2: A-B-D-FINEC3: A-B-D-E-FINEC4: A-D-E-FINE
Matrice dei cammini scelti
1 2 3 4 5 6 7 8C1 1 0 1 1 1 1 0 0C2 1 0 1 0 0 1 0 0C3 1 0 1 0 0 0 1 1C4 0 1 0 0 0 0 1 1
La matrice ha rango pari a 4 quindi è una base.
Risultati del test
TestID Input Output atteso Risultato
T09
rosa!=null,rosa.size()>0,
session.getAttribute(“Username”)!=nullsession.getAttribute(“Lega_Scelta”)!=null
rosa_squadre_allenatore.jsp Ok
T10rosa!=null,
rosa.size()==0,session.getAttribute(“Username”)!=null
rosa_squadre_allenatore.jsp Ok
T11rosa!=null,
rosa.size()==0,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
Progetto di Ingegneria del Software – Fantacalcio On-Line
7.3.1.1.3 DAOAllenatore: metodo verifica
Autore
Autore DataPrevitali Fabio 29/11/2008
Codicepublic 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
Progetto di Ingegneria del Software – Fantacalcio On-Line
Albero
Scelta dei cammini
C1: A-B-C-D-E-F-L-M-N-FINEC2: A-B-C-D-E-F-L-M-O-FINEC3: A-B-C-D-E-F-L-M-N-O-FINEC4: A-H-L-FINEC5: A-B-C-G-L-M-N-FINEC6: A-B-I-L-M-N-FINEC7: A-B-C-D-I-L-M-N-FINEC8: A-B-C-D-E-L-M-N-FINE
298
Progetto di Ingegneria del Software – Fantacalcio On-Line
Matrice dei cammini scelti
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21C1 1 1 1 0 0 0 0 0 1 1 0 1 0 0 1 0 0 1 0 0 1C2 1 1 1 0 0 0 0 0 1 1 0 1 0 0 1 0 1 0 0 1 0C3 1 1 1 0 0 0 0 0 1 1 0 1 0 0 1 0 0 1 1 1 0C4 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0C5 1 1 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 1 0 0 1C6 1 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 1 0 0 1C7 1 1 1 1 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 1C8 1 1 1 0 0 0 0 0 1 0 1 0 0 0 1 0 0 1 0 0 1
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
Progetto di Ingegneria del Software – Fantacalcio On-Line
Risultati del test
TestID Input Output atteso Risultato
T13
conn!=nullstmt!=null
a.getUsername().contains("$")==falsers!=null
rs.next()==true
Messaggio(“Username già presente”) Ok
T14
conn!=nullstmt!=null
a.getUsername().contains("$")==falsers!=null
rs.next()==truestmt.close() dà errore
Messaggio(“Il server attualmente non funziona correttamente. Riprovare
più tardi”)
Non testabile
T15
conn!=nullstmt!=null
a.getUsername().contains("$")==falsers!=null
rs.next()==trueconn.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
T17conn!=nullstmt!=null
a.getUsername().contains("$")==true
Messaggio(“L'username non può contenere il carattere
$”)Ok
T18 conn!=nullstmt==null
Messaggio(“Il server attualmente non funziona correttamente. Riprovare
più tardi”)
Ok
T19conn!=nullstmt!=nullrs==null
Messaggio(“Il server attualmente non funziona correttamente. Riprovare
più tardi”)
Ok
T20
conn!=nullstmt!=null
a.getUsername().contains("$")==falsers!=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.
300
Progetto di Ingegneria del Software – Fantacalcio On-Line
7.3.1.2 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.
7.3.1.2.1 AssociazioneDisputa: metodo calcolaFantavoto
Autore
Autore DataMalacario Mirko 02/12/2008
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
301
Progetto di Ingegneria del Software – Fantacalcio On-Line
Classi di equivalenza
Classi Input Valida / Non validaC1 g_f>=0, g_s>=0, as>=0, v>=0, r_p>=0, r_s>=0 Valida
C2 g_f<0, g_s>=0, as>=0, v>=0, r_p>=0, r_s>=0 Non valida
C3 g_f>=0, g_s<0, as>=0, v>=0, r_p>=0, r_s>=0 Non valida
C4 g_f>=0, g_s>=0, as<0, v>=0, r_p>=0, r_s>=0 Non valida
C5 g_f>=0, g_s>=0, as>=0, v<0, r_p>=0, r_s>=0 Non valida
C6 g_f>=0, g_s>=0, as>=0, v>10, r_p>=0, r_s>=0 Non valida
C7
g_f>=0, g_s>=0, as>=0, (v!=0 e v!=0.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!=10), v>=0, v<=10, r_p>=0,r_s>=0
Non valida
C8 g_f>=0, g_s>=0, as>=0, v>=0, r_p<0, r_s>=0 Non valida
C9 g_f>=0, g_s>=0, as>=0, v>=0, r_p>=0, r_s<0 Non valida
C10 g_f>=0, g_s>=0, as>=0, am==true, v>=0, r_p>=0, r_s>=0 Valida
C11 g_f>=0, g_s>=0, as>=0, e==true, v>=0, r_p>=0, r_s>=0 Valida
C12 g_f>=0, g_s>=0, as>=0, am==true, e==true, v>=0, r_p>=0, r_s>=0 Valida
Risultati del test
TestId Input Output atteso Risultato
T21 copre la classe C1 con input: g_f=2, g_s=0, as=3, v=9, r_p=0, r_s=0 18 Ok
T22 copre la classe C2 con input: g_f=-1, g_s=0, as=3, v=9, r_p=0, r_s=0 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=0, r_s=0 Messaggio(“Valori in input non corretti”) Ok
T24 copre la classe C4 con input: g_f=2, g_s=0, as=-1, v=9, r_p=0, r_s=0 Messaggio(“Valori in input non corretti”) Ok
T25 copre la classe C5 con input: g_f=2, g_s=0, as=3, v=-0.1, r_p=0, r_s=0 Messaggio(“Valori in input non corretti”) Ok
T26 copre la classe C6 con input: g_f=2, g_s=0, as=3, v=10.1, r_p=0, r_s=0 Messaggio(“Valori in input non corretti”) Ok
T27 copre la classe C7 con input: g_f=2, g_s=0, as=3, v=6.1, r_p=0, r_s=0 Messaggio(“Valori in input non corretti”) Ok
T28 copre la classe C8 con input: g_f=2, g_s=0, as=3, v=9, r_p=-1, r_s=0 Messaggio(“Valori in input non corretti”) Ok
T29 copre la classe C9 con input: g_f=2, g_s=0, as=3, v=9, r_p=0, r_s=-1 Messaggio(“Valori in input non corretti”) Ok
T30 copre la classe C10 con input: g_f=2, g_s=0, as=3, am=true, v=9, r_p=0, 17.5 Ok
302
Progetto di Ingegneria del Software – Fantacalcio On-Line
r_s=0
T31 copre la classe C11 con input: g_f=2, g_s=0, as=3, e=true, v=9, r_p=0, r_s=0 17 Ok
T32 copre la classe C11 con input: g_f=2, g_s=0, as=3, am=true, e=true, v=9, r_p=0, r_s=0 16,5 Ok
7.3.1.2.2 ControllerCalciatore: metodo acquisisciCalciatoriPerAstaRialzo
Autore
Autore DataPrevitali Fabio 02/12/2008
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
T35 copre la classe C3 con input: l=”Legan”, r=”Portiere”
La lista restituita contiene tutti i
Portieri presenti nella base di dati
Ok
303
Progetto di Ingegneria del Software – Fantacalcio On-Line
7.3.1.2.3 DAOAllenatore: metodo verifica
Autore
Autore DataPaluci Marco 04/12/2008
Segnatura
public static void verifica(Allenatore a) throws ApplicationException
Classi di equivalenza
Classi Input Valida / Non validaC1 a è null Non validaC2 a.getUsername() è presente nella base di dati Non validaC3 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
304
Progetto di Ingegneria del Software – Fantacalcio On-Line
7.3.1.2.4 DAOPortiere: metodo inserimentoPortiere
Autore
Autore DataPrevitali Fabio 04/12/2008
Segnatura
public static void inserisciPortiere(Portiere p) throws ApplicationException
Classi di equivalenza
Classi Input Valida / Non validaC1 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
T40 copre la classe C2 con input: p!=null Ok Ok
305
Progetto di Ingegneria del Software – Fantacalcio On-Line
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.
7.3.2.1 registrazione al sistema (UC-1)
Autore
Autore DataPaluci Marco 09/12/2008
Sequence Diagram
306
Progetto di Ingegneria del Software – Fantacalcio On-Line
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 e conferma i dati Visualizzazione della pagina “conferma.jsp” 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 email 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” Email = “[email protected]” Squadra = “Fiorentina Team” Stadio = “Artemio Franchi” Lega = “Lega2”
307
Progetto di Ingegneria del Software – Fantacalcio On-Line
➢ Passo 2b:
Username = “Mirko” Password = “paperino” Conferma Password = “paperino” Email = “[email protected]” Squadra = “Cagliari Team” Stadio = “Artemio Franchi” Lega = “Lega2”
➢ Passo 2c:
Username = “Paperino” Password = “paperino” Conferma Password = “paperino” Email = “[email protected]” Squadra = “Fiorentina Team” Stadio = “Artemio Franchi” Lega = “Lega2”
➢ Passo 2d:
Username = “Pa” Password = “paperino” Conferma Password = “paperino” Email = “[email protected]” Squadra = “Fiorentina Team” Stadio = “Artemio Franchi” Lega = “Lega2”
➢ Passo 2e:
Username = “Paperino” Password = “pa” Conferma Password = “pa” Email = “[email protected]” Squadra = “Fiorentina Team” Stadio = “Artemio Franchi” Lega = “Lega2”
308
Progetto di Ingegneria del Software – Fantacalcio On-Line
➢ Passo 2f:
Username = “Paperino” Password = “paperino” Conferma Password = “paperin” Email = “[email protected]” Squadra = “Fiorentina Team” Stadio = “Artemio Franchi” Lega = “Lega2”
➢ Passo 2g:
Username = “Paperino” Password = “paperino” Conferma Password = “paperino” Email = “paperinotiscali.it” Squadra = “Fiorentina Team” Stadio = “Artemio Franchi” Lega = “Lega2”
➢ Passo 2h:
Username = “Paperino” Password = “paperino” Conferma Password = “paperino” Email = “[email protected]” Squadra = “Fiorentina Team” Stadio = “Artemio Franchi” Lega = “Scelta Lega”
➢ Passo 2i:
Username = “Paperino” Password = “paperino” Conferma Password = “paperino” Email = “[email protected]” Squadra = “Fiorentina Team” Stadio = “Artemio Franchi” Lega = “Lega1”
309
Progetto di Ingegneria del Software – Fantacalcio On-Line
➢ Passo 3a: Conferma dei dati immessi
➢ Passo 3b: Cliccare sul pulsante indietro
➢ Passo 3c: Cliccare sul pulsante annulla
7.3.2.2 scelta formazione senza l'ausilio del sistema (UC-12)
Autore
Autore DataPrevitali Fabio 09/12/2008
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
310
Progetto di Ingegneria del Software – Fantacalcio On-Line
➢ Passo 1a:
Username = “Marco” Modulo = “4-4-2” 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 = “4-4-2” 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
Progetto di Ingegneria del Software – Fantacalcio On-Line
Centrocampista riserva = “Izco M.” Attaccante riserva = “Martinez J.” Attaccante riserva = “Mascara G.”
➢ Passo 2a: Conferma dei dati immessi
312
Progetto di Ingegneria del Software – Fantacalcio On-Line
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
Progetto di Ingegneria del Software – Fantacalcio On-Line
8. Conclusioni del progetto
8.1 Introduzione
8.1.1 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
Progetto di Ingegneria del Software – Fantacalcio On-Line
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 Giugno-
Luglio 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
Progetto di Ingegneria del Software – Fantacalcio On-Line
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
Progetto di Ingegneria del Software – Fantacalcio On-Line
8.3.1 Foglio di rilascio: generale
317
Progetto di Ingegneria del Software – Fantacalcio On-Line
8.3.2 Foglio di rilascio: Malacario Mirko
318
Progetto di Ingegneria del Software – Fantacalcio On-Line
8.3.3 Foglio di rilascio: Paluci Marco
319
Progetto di Ingegneria del Software – Fantacalcio On-Line
8.3.4 Foglio di rilascio: Previtali Fabio
320
Progetto di Ingegneria del Software – Fantacalcio On-Line
8.3.5 Attendibilità sulla stima
Per quanto riguarda lo sforzo complessivo la stima è stata molto precisa: infatti rispetto
agli 85 giorni/uomo stimati ne abbiamo impiegati soltanto 10 giorni/uomo in più, quindi
un errore del 10,5% è più che comprensibile.
Mentre per quello che concerne il numero di righe di codice stimate l'errore di stima è
stato molto consistente cioè abbiamo prodotto circa il doppio delle righe di codice
previste, ma tutto ciò non è molto rilevante poichè pensiamo che tale errore sia dovuto al
nostro stile di programmazione.
321
Progetto di Ingegneria del Software – Fantacalcio On-Line
9. Bibliografia[1] Carlo Marchetti, Stefano Cimmino: “Dispense del corso di Progetto di Ingegneria del Software. A.A. 2007/2008”
[2] Giuseppe De Giacomo: “Dispense del corso di Progettazione del Software I. AA 2006-2007”
[3] Roger S. Pressman: “Principi di Ingegneria del software 4/ed”, McGraw-Hill
[4] Craig Larman: “Applyng UML and patterns 2/ed”, Prentice Hall
[5] Michele Arcadipane: “Javascript: Guida di riferimento”
[6] HTML.IT “Corso base javascript per esempi”
[7] Giuseppe Santucci, Valentina Presutti “Dispense del corso di Ingegneria del Software AA 2007-2008”
[8] Antonella Poggi “Dispense del corso di Progetto di Basi di Dati. AA 2007-2008”
[9] Maurizio Lenzerini: “Dispense del corso di Basi di Dati. AA 2007-2008”
[10] Raghu Ramakrishnan, Johannes Gehrke: “Sistemi di basi di dati 3/ed” McGraw-Hill
[11] Stefano Leonardi: “Dispense del corso di Reti di Calcolatori. AA 2007-2008”
[12] Phil Ballard: “Corso rapido di AJAX” McGrawHill
[13] Phil Anna: “La guida completa JSP” McGrawHill
[14] Marty Hall: “Core Servlets and JavaServerPage” Prentice Hall And Sun Microsystems
322
Progetto di Ingegneria del Software – Fantacalcio On-Line
10. Sitografia[1] http://www.html.it
[2] http://www.webmasterpoint.org/html/home.asp
[3] http://javascript.html.it
[4] http://www.sun.com
323