Progetto di Ingegneria del Software – Fantacalcio On-Line 1

323
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 Mirko con cui ho trascorso tre anni bellissimi della mia vita. Alla mia migliore amica Marzia. 1

Transcript of Progetto di Ingegneria del Software – Fantacalcio On-Line 1

Page 1: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 2: Progetto di Ingegneria del Software – Fantacalcio On-Line 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

Page 3: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 4: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 5: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 6: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 7: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 8: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 9: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 10: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 11: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 12: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 13: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

Progetto di Ingegneria del Software – Fantacalcio On-Line

10. Sitografia...........................................................................................................323

13

Page 14: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 15: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 16: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 17: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 18: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 19: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 20: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 21: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 22: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 23: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 24: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

E-mail

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

Page 25: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 26: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 27: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

Progetto di Ingegneria del Software – Fantacalcio On-Line

1.3.2 Class Diagram

27

Page 28: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 29: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 30: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 31: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 32: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 33: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 34: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 35: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 36: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 37: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 38: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 39: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 40: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 41: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 42: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 43: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 44: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 45: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 46: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 47: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

Progetto di Ingegneria del Software – Fantacalcio On-Line

1.4.2 Schema completo dello Use Case Diagram

47

Page 48: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 49: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 50: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 51: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 52: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 53: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 54: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 55: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 56: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 57: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 58: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 59: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 60: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 61: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 62: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 63: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 64: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 65: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 66: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

Progetto di Ingegneria del Software – Fantacalcio On-Line

Date 30/04/2008

1.4.6.11 Sequence Diagram: scelta modalità formazione

66

Page 67: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 68: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 69: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 70: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 71: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 72: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 73: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 74: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 75: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 76: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 77: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 78: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 79: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 80: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 81: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 82: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 83: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 84: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 85: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 86: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 87: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 88: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 89: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

Progetto di Ingegneria del Software – Fantacalcio On-Line

Allenatore

RET Allenatore

DET username

password

email

Riepilogando:

RET 1

DET 3

Fantasquadra

RET Fantasquadra

DET nome

fantastadio

fantamilioni

Riepilogando:

RET 1

DET 3

89

Page 90: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 91: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 92: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 93: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 94: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 95: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 96: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 97: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 98: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 99: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 100: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 101: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 102: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 103: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 104: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 105: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 106: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

Progetto di Ingegneria del Software – Fantacalcio On-Line

2.4 Pianificazione temporale

Qui di seguito vengono mostrati i grafici ricavati con COCOMO:

106

Page 107: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 108: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 109: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 110: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 111: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 112: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 113: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

Progetto di Ingegneria del Software – Fantacalcio On-Line

2.5.2.1 Diagramma GANTT: cammino critico

113

Page 114: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 115: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 116: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 117: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 118: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 119: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 120: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 121: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 122: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 123: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 124: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 125: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 126: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 127: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 128: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 129: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 130: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 131: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 132: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

Progetto di Ingegneria del Software – Fantacalcio On-Line

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

132

Page 133: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 134: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

Progetto di Ingegneria del Software – Fantacalcio On-Line

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

134

Page 135: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

Progetto di Ingegneria del Software – Fantacalcio On-Line

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

135

Page 136: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

Progetto di Ingegneria del Software – Fantacalcio On-Line

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

136

Page 137: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

Progetto di Ingegneria del Software – Fantacalcio On-Line

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

137

Page 138: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

Progetto di Ingegneria del Software – Fantacalcio On-Line

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

138

Page 139: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

Progetto di Ingegneria del Software – Fantacalcio On-Line

3.2.3.3 ADM (Araneus Data Model): Presidente della Lega

139

Page 140: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 141: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

Progetto di Ingegneria del Software – Fantacalcio On-Line

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

141

Page 142: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

Progetto di Ingegneria del Software – Fantacalcio On-Line

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

142

Page 143: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

Progetto di Ingegneria del Software – Fantacalcio On-Line

3.3 Sequence Diagram

3.3.1 Sequence Diagram: registrazione al sistema (UC-1)

143

Page 144: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

Progetto di Ingegneria del Software – Fantacalcio On-Line

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

144

Page 145: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 146: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

Progetto di Ingegneria del Software – Fantacalcio On-Line

3.3.5 Sequence Diagram: consultazione risultati (UC-5)

146

Page 147: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

Progetto di Ingegneria del Software – Fantacalcio On-Line

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

147

Page 148: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

Progetto di Ingegneria del Software – Fantacalcio On-Line

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

148

Page 149: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

Progetto di Ingegneria del Software – Fantacalcio On-Line

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

149

Page 150: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 151: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 152: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 153: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 154: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 155: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

Progetto di Ingegneria del Software – Fantacalcio On-Line

3.3.19 Sequence Diagram: modifica lista calciatori (UC-20)

155

Page 156: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 157: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 158: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 159: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 160: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 161: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 162: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 163: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 164: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 165: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 166: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 167: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 168: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 169: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 170: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

Progetto di Ingegneria del Software – Fantacalcio On-Line

170

Figura 15: formazione_assistita_passo2.html

Page 171: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

Progetto di Ingegneria del Software – Fantacalcio On-Line

171

Figura 16: riepilogo_formazione_assistita.html

Page 172: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 173: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 174: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 175: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 176: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 177: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 178: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 179: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 180: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 181: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 182: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 183: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 184: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 185: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 186: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 187: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 188: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 189: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 190: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 191: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 192: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 193: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 194: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 195: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 196: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 197: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

Progetto di Ingegneria del Software – Fantacalcio On-Line

4.2 Basi di dati

4.2.1 Schema ER

197

Page 198: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 199: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 200: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 201: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 202: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 203: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 204: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 205: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 206: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 207: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 208: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 209: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 210: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 211: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 212: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 213: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 214: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 215: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

Progetto di Ingegneria del Software – Fantacalcio On-Line

4.2.4 Schema ER ristrutturato

215

Page 216: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 217: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 218: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 219: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 220: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 221: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 222: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 223: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 224: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 225: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 226: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 227: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 228: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 229: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 230: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 231: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 232: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 233: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 234: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 235: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 236: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 237: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 238: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 239: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 240: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 241: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 242: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 243: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 244: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 245: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 246: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 247: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 248: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 249: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 250: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 251: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 252: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 253: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 254: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

Progetto di Ingegneria del Software – Fantacalcio On-Line

4.5.4.1 Servlets

254

Page 255: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

Progetto di Ingegneria del Software – Fantacalcio On-Line

4.5.4.2 Controller

255

Page 256: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

Progetto di Ingegneria del Software – Fantacalcio On-Line

4.5.4.3 Domain Classes

256

Page 257: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

Progetto di Ingegneria del Software – Fantacalcio On-Line

4.5.4.4 Persistence Classes

4.5.4.5 Utility

257

Page 258: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 259: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

Progetto di Ingegneria del Software – Fantacalcio On-Line

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

259

Page 260: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 261: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

Progetto di Ingegneria del Software – Fantacalcio On-Line

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

261

Page 262: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

Progetto di Ingegneria del Software – Fantacalcio On-Line

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

262

Page 263: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 264: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

Progetto di Ingegneria del Software – Fantacalcio On-Line

4.5.6.5.2 Design Model e Sequence Diagram: consultazione classifica

264

Page 265: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 266: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 267: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 268: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

Progetto di Ingegneria del Software – Fantacalcio On-Line

4.5.6.9 Design Model e Sequence Diagram: login (UC-10)

268

Page 269: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 270: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 271: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 272: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 273: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

Progetto di Ingegneria del Software – Fantacalcio On-Line

4.5.6.13.2 Design Model e Sequence Diagram: calcolo dei risultati

273

Page 274: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 275: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

Progetto di Ingegneria del Software – Fantacalcio On-Line

275

Page 276: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

Progetto di Ingegneria del Software – Fantacalcio On-Line

4.5.6.14.2 Design Model e Sequence Diagram: inserimento calciatori

276

Page 277: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 278: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 279: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 280: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 281: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 282: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 283: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 284: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 285: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 286: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 287: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 288: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 289: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 290: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 291: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 292: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 293: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 294: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 295: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 296: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 297: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 298: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 299: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 300: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 301: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 302: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 303: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 304: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 305: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 306: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 307: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 308: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 309: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 310: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 311: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 312: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 313: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 314: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 315: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 316: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 317: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

Progetto di Ingegneria del Software – Fantacalcio On-Line

8.3.1 Foglio di rilascio: generale

317

Page 318: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

Progetto di Ingegneria del Software – Fantacalcio On-Line

8.3.2 Foglio di rilascio: Malacario Mirko

318

Page 319: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

Progetto di Ingegneria del Software – Fantacalcio On-Line

8.3.3 Foglio di rilascio: Paluci Marco

319

Page 320: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

Progetto di Ingegneria del Software – Fantacalcio On-Line

8.3.4 Foglio di rilascio: Previtali Fabio

320

Page 321: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 322: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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

Page 323: Progetto di Ingegneria del Software – Fantacalcio On-Line 1

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