1
VIDEO RENTAL MANAGEMENT SYSTEM
Ingegneria del Software, A.A. 2010 – 2011
Università degli Studi dell’Aquila – D.I.S.I.M.
Docente : Serafino Cicerone
Alessio D’Alessio, Filippo Mortari, Davide Russo
2
Indice:
FastVid Rentals:
•
•
Panoramica
Sviluppo Software
Unified process:
•
•
•
Ideazione
Elaborazione – 1a iterazione
Elaborazione – 2a iterazione
•
•
Problematiche di Design, come è evoluto il software
I Design Patterns
Tecnologie usate:
•
Hibernate & JavaRMI
Conclusioni
3
FASTVIDRENTALS- PANORAMICA
Richiesta del committente
Sviluppo di un sistema software di gestione di una azienda
di video-noleggi:
Video Rental Management System
FASTVIDRENTALS- PANORAMICA
4
Funzionalità:
•
•
•
•
•
•
•
•
•
•
Gestire il catalogo dei film;
gestire clienti e tessere servizi;
gestire il noleggio ed il reso di film;
gestire la prenotazione di film in maniera flessibile;
gestire politiche di sconto e promozione in maniera flessibile;
gestire il magazzino della filiale;
gestire la comunicazione con i clienti mediante sms
flessibilità ad eventuali nuovi canali di comunicazione;
flessibilità in ottica di una fruizione futura di servizi su piattaforma
web e Video-On-Demand
gestire il reporting dell’attività della filiale.
5
Strumenti per lo sviluppo sw
• IDE: Eclipse Juno Service Release 1
• RMI Plug-in for Eclipse version 2.0 (applicazione distribuita)
• Window Builder Editor (per la gestione grafica delle Swing)
• Subversive SVN Team Provider (versionamento)
• Case: Visual Paradigm UML EE 8.0
• Librerie: Java JRE 1.7, Hibernate ORM Libraries,
• Server di versionamento:
• XP-Dev con supporto a SVN (per il progetto .vpp)
• Google Code (per il codice Java)
• DBMS: MySQL tramite XAMPP
6
Il versionamento: Xp-Dev e GoogleCode
7
SVILUPPO SOFTWARE
Il processo di riferimento: UP
SVILUPPO SOFTWARE
8
Il processo di riferimento: UP
Ogni iterazione
produce
un’executable release
9
L’iterazione time-boxed
Abbiamo cercato di rispettare le scadenze e assegnare le
responsabilità con una sorta di diagramma di Gantt
TITOLO SEZIONE
10
Disciplina di UP,
contenuto in esame
nella slide corrente,
sezione relativa a un
particolare concetto..
Legenda
Iterazione cui si
riferisce il contenuto
analizzato nella slide
Inception
Elaborazione – Iterazione 1
Elaborazione – Iterazione 2
Elaborazione – Iterazione 3
11
FASTVID RENTALS:
BUSINESS MODELING
12
Business Modeling
“One of the major problems with most business
engineering efforts, is that the software engineering and the
business engineering community do not communicate
properly with each other.
This leads to the output from business engineering is not
being used properly as input to the software development
effort, and vice-versa.
The Unified Process addresses this by providing a
common language and process for both communities, as
well as showing how to create and maintain direct
traceability between business and software models.”
FASTVIDRENTALS- PANORAMICA
13
La struttura aziendale
La macrostruttura:
14
FASTVIDRENTALS- PANORAMICA
La struttura aziendale
L’organigramma aziendale della singola divisione:
15
FASTVIDRENTALS- PANORAMICA
Prospettiva dell’utente
Si mostrano i possibili punti di accesso fisici all’applicativo
FASTVIDRENTALS- PANORAMICA
16
Business rules salienti
Il costo dei noleggi dipende da:
• il tipo di supporto desiderato
•
•
•
VHS: 0.5€ al giorno
CD / DVD : 1€ al giorno
BlueRay: 1.5€ al giorno
• la durata del noleggio
• film novità: +10% sul prezzo originale
17
FASTVIDRENTALS- PANORAMICA
Business rules salienti
Le politiche di sconto:
• 10% ai clienti che hanno già noleggiato almeno un film
entro le 24h precedenti;
• ogni 20 noleggi effettuati si ha diritto a 1 noleggio
gratuito;
• 5% di sconto per noleggi Lun-Ven dalle h20.00 alle
h8.00 del giorno successivo;
• 5% di sconto per clienti con età < 21 anni;
18
UNIFIEDPROCESS– ELABORAZIONE 1
Il modello di dominio (Business Object Model)
19
UNIFIEDPROCESS– ELABORAZIONE 1
Il modello di dominio (Business Object Model)
20
REQUIREMENTS –
I CASI D’USO
21
Requirements
“The goal of the Requirements workflow is to describe what
the system should do and allows the developers and the
customer to agree on that description.
Actors are identified, representing the users, and any other
system that may interact with the system being developed.
Use cases are identified, representing the behavior of the
system.”
UNIFIEDPROCESS- IDEAZIONE
22
Use Case Diagram
Casi d’uso analizzati:
•
Tutti
Casi d’uso dettagliati:
•
•
•
•
UCRicercaFilm
UCNoleggia
UCPrenota
UCRestituisci
23
Use Case Diagram
Casi d’uso analizzati:
•
Tutti
Casi d’uso dettagliati:
•
•
•
•
UCRicercaFilm
UCNoleggia
UCPrenota
UCRestituisci
24
UNIFIEDPROCESS- IDEAZIONE
UCRicercaFilm – Dettagli
Il Cliente, una volta recatosi presso una delle filiali FastVid
Rentals può cercare un film di suo interesse. La ricerca può
essere effettuata sia presso lo sportello esterno, sia presso
lo sportello interno. Per effettuare una ricerca non è
necessario utilizzare la tessera servizi. Il Cliente può
inserire o il nome preciso di un film o cercare tramite tag
come il genere, l'anno di produzione etc..
Se la ricerca viene effettuata presso lo sportello interno il
sistema permette di stampare uno scontrino promemoria
da poter presentare all'operatore di cassa per procedere
con un noleggio.
25
UNIFIEDPROCESS- IDEAZIONE
UCRicercaFilm - Flow of events
1. Il Cliente arriva al terminale FastVid
2. Il Cliente seleziona la ricerca film
3. Il Sistema mostra l'interfaccia di ricerca
4. Il Cliente inserisce delle parole chiave per il film da ricercare
5. Il Cliente avvia la ricerca
6. Il Sistema presenta un elenco di film
7. if Il Cliente è soddisfatto della ricerca
7.1. Il Cliente sceglie un film dalla lista
7.2. Il Sistema mostra i dettagli del film
7.3. if Il Cliente è soddisfatto del film selezionato
7.3.1. Il Cliente seleziona il supporto desiderato
7.3.2. Il sistema visualizza la disponibilità del supporto selezionato
7.3.3. if Il Cliente è soddisfatto
7.3.3.1. Il sistema mostra le azioni disponibili
7.3.3.2. Il Cliente sceglie l'opzione desiderata
26
UNIFIEDPROCESS- IDEAZIONE
UCNoleggiaFilm – Dettagli
Il Cliente, una volta recatosi presso una delle filiali FastVid
Rentals, può effettuare un noleggio. La prima operazione
che deve fare per poter noleggiare un film è la ricerca. Una
volta trovato il film, il Cliente deve scegliere le opzioni di
noleggio, il tipo di supporto/formato desiderati, e, se il
supporto è disponibile, il sistema propone un quadro
riassuntivo del noleggio. Se il cliente vuole procedere, deve
scorrere la propria tessera servizi dalla quale verrà scalato
l'importo pari al prezzo di noleggio. Il cliente può ritirare il
prodotto.
27
UNIFIEDPROCESS- IDEAZIONE
UCNoleggiaFilm - Flow of events
1. Il Cliente effettua una Ricerca film
2. Il Sistema richiede al Cliente l'autenticazione tramite lettura della tessera servizi
3. Il Cliente legge la sua tessera servizi presso il lettore
4. Il Sistema autentica il Cliente attraverso la tessera servizi e applica le politiche di prezzo
5. Il Sistema mostra al Cliente la relativa politica di prezzo
6. Il Cliente imposta la durata desiderata per il noleggio
7. Il Sistema mostra il riepilogo di prezzo e le condizioni di noleggio, richiedendo conferma
8. Il Cliente conferma la sua scelta
9. Il Sistema addebita l'importo del noleggio, registra il noleggio per il prodotto selezionato al Cliente
corrente e aggiorna la disponibilità del prodotto
10. Il Sistema notifica la transazione al Sistema contabilità
11. Il Sistema stampa la ricevuta e la consegna al Cliente unitamente al supporto noleggiato
12. Il Cliente ritira ricevuta e prodotto
28
UNIFIEDPROCESS– ELABORAZIONE 1
Il riscontro del committente
L’incontro con il committente a valle dell’ideazione ha
confermato il corretto rilevamento dei casi d’uso, nonché
della realtà aziendale cui si fa riferimento (documento di
visione e regole di business)
Il committente ha tuttavia preferito che l’autenticazione del
cliente fosse la prima operazione necessaria ad avviare il
caso d’uso di Noleggio.
29
UCPrenota - Dettagli
Il Cliente può effettuare una prenotazione. Quest'ultima può essere
dovuta sia al fatto che non è disponibile al momento nessuna copia
fisica del supporto/formato richiesto per il film di interesse, sia al fatto
che il cliente vuole bloccare un film per una determinata data. L'SMS
service è un servizio esterno che permette di avvisare al Cliente la
disponibilità di un supporto/formato e consente al cliente di poter
avviare una pratica di prenotazione anche mediante SMS.
Allo stato attuale le politiche di prenotazione non sono completamente
definite: diverse filiali potrebbero adottare politiche locali guidate
dall'andamento del mercato locale. Le politiche di prenotazione
possono cambiare arbitrariamente secondo scelte avanzate dalla Sede
centrale. La gestione delle politiche di prenotazione pertanto deve
essere molto flessibile.
30
UNIFIEDPROCESS– ELABORAZIONE 2
UCPrenota – Flow of Events
1. Il Cliente effettua una Ricerca film
2. Il sistema richiede al Cliente l'autenticazione tramite lettura della tessera servizi
3. Il Cliente legge la sua tessera servizi presso il lettore
4. Il Sistema autentica il Cliente attraverso la tessera servizi
5. Il Sistema aggiorna il prezzo relativamente alle politiche sulla tessera servizi corrente
6. Il Cliente indica la data di prenotazione voluta
7. Il sistema notifica la avvenuta disponibilità per tale giorno
8. Il Cliente indica la durata del noleggio prenotato
9. Il sistema mostra il riepilogo e le condizioni di prenotazione, richiedendo conferma
10. Il Cliente conferma la sua scelta
11. Il Sistema addebita l'importo della prenotazione, registra la prenotazione per il prodotto
selezionato e aggiorna la disponibilità del prodotto
12. Il Sistema notifica la transazione al Sistema contabilità
13. Il Sistema stampa la ricevuta e la consegna al Cliente
14. Il Cliente ritira ricevuta
31
UNIFIEDPROCESS– ELABORAZIONE 2
UCRestituisci - Dettagli
Il Cliente può recarsi presso una filiale di FastVid Rentals e
restituire un prodotto sia allo sportello esterno, sia
all'interno del punto vendita. All'interno del punto vendita
può decidere se restituire il prodotto tramite sportello o
fisicamente all'operatore di cassa.
32
UNIFIEDPROCESS– ELABORAZIONE 2
UCRestituisci – Flow of events
1. Il Cliente si reca presso una filiale con un prodotto da restituire
2. Il Cliente informa il Sistema di voler restituire un prodotto precedentemente
noleggiato
3. Il Sistema richiede al Cliente di depositare il prodotto nell'apposita feritoia
4. Il Cliente deposita il prodotto secondo le indicazioni ricevute
5. Il Sistema legge l'ID del prodotto depositato
6. Il Sistema recupera le informazioni sul Cliente tramite l'assocazione dello stesso
ad un noleggio e quindi all'ID del supporto noleggiato e appena restituito
7. Il Sistema mostra al Cliente la conferma con riserva di controllo supporto per
l'avvenuta restituzione
8. Il Sistema stampa la ricevuta cartacea attestante la restituzione
9. Il Sistema propone al Cliente di effettuare una nuova Ricerca film
10. Il Cliente rifiuta la proposta di cercare un nuovo film
11. Il Cliente si allontana con la ricevuta
33
ANALYSIS & DESIGN
34
Analysis & Design
“The goal of the Analysis & Design workflow is to show how
the system will be realized in the implementation phase.”
“The analysis model is a platform independent model
(PIM), which means that it does not contain technologybased decisions.”
“The design model consists of design classes structured
into design packages and design subsystems with welldefined interfaces, representing what will become
components in the implementation. It is a PSM”
35
Use Case Driven!!!
In UP, i casi d'uso sono utilizzati per catturare i requisiti
funzionali e di definire i contenuti delle iterazioni.
Ogni iterazione prende in considerazione un set di casi
d’uso o scenari dai requisiti sino all’implementazione, test e
deploy.
36
UNIFIEDPROCESS– ELABORAZIONE 1
UCRicercaFilm - SSD
37
UNIFIEDPROCESS– ELABORAZIONE 1
UCRicercaFilm - SSD
38
UNIFIEDPROCESS– ELABORAZIONE 1
UCRicercaFilm - SSD
UNIFIEDPROCESS– ELABORAZIONE 1
39
UCRicercaFilm - I contratti
CercaFilm
Operazione: CercaFilm(chiaveRicerca).
Riferimenti casi d'uso: RicercaFilm,
Prenota, Noleggia.
Pre-condizioni: esiste un'istanza della
classe terminale connessa al client, esiste un
catalogoFilm con almeno un film.
Post-condizioni: è stata creata una istanza
di Lista di film popolata con i film che
corrispondono alla ricerca.
UNIFIEDPROCESS– ELABORAZIONE 1
40
UCRicercaFilm - I contratti
VisualizzaFilm
Operazione: visualizzaFilm(IDFilm)
Riferimenti casi d'uso: RicercaFilm,
Noleggia, Prenota
Pre-condizioni: si conosce l'ID del film da
visualizzare, l'istanza del film con tale ID è
presente sul client, il magazzino è avviato.
Post-condizioni: il magazzino ha creato una
Map < supporto; booleano disponibile; prezzo>.
UNIFIEDPROCESS– ELABORAZIONE 1
41
UCRicercaFilm - I contratti
ScegliSupporto
Operazione: scegliSupporto(supporto)
Riferimenti casi d’uso: Noleggia
Pre-condizioni: Il cliente ha già scelto il film
da una ricerca
Post-condizioni: Un supporto per il film di
interesse è stato selezionato.
42
UNIFIEDPROCESS– ELABORAZIONE 1
UCNoleggiaFilm - SSD
UNIFIEDPROCESS– ELABORAZIONE 1
43
UCNoleggiaFilm - I contratti
NotificaIdentità
Operazione: notificaIdentita(IdTesseraCliente)
Riferimenti casi d’uso: Noleggia, GestisciTessera , Prenota
Pre-condizioni: è stata effettuata una ricerca film con successo,
si ha a disposizione un Film ed un tipo di supporto selezionato,
disponibile in Magazzino
Post-condizioni: la tessera cliente è stata riconosciuta, è stata
memorizzata nell'istanza del terminale la tessera cliente, è stata
creata una istanza di noleggio
UNIFIEDPROCESS– ELABORAZIONE 1
44
UCNoleggiaFilm - I contratti
SetDurata
Operazione: setDurata(giorni)
Riferimenti casi d’uso: Noleggia, Prenota
Pre-condizioni: un'istanza di terminale è avviata, il cliente è
autenticato, è stata creata un istanza di noleggio
Post-condizioni: l'istanza di noleggio contiene informazioni sulla
durata del noleggio.
45
UNIFIEDPROCESS– ELABORAZIONE 1
UCNoleggiaFilm - I contratti
ConcludiNoleggio
Operazione: concludiNoleggio()
Riferimenti casi d’uso: Noleggia
Pre-condizioni: un'istanza di terminale è avviata, il cliente è
autenticato, è stata creata un istanza di noleggio con tutti gli
attributi.
Post-condizioni: l'istanza di noleggio è stata finalizzata, gli
attributi temporanei dell'istanza terminale sono stati resettati, il
prodotto nel magazzino è settato su "noleggiato".
46
UNIFIEDPROCESS– ELABORAZIONE 2
UCPrenota – SSD
UNIFIEDPROCESS– ELABORAZIONE 2
47
UCPrenota – i contratti
SetDataInizio
Operazione: setDataInizio(data)
Riferimenti: useCase: Prenota
Pre-condizioni: un'istanza di terminale è avviata, il cliente
è autenticato, è stata creata un istanza di Prenotazione.
Post-condizioni: l'istanza di Prenotazione contiene
informazioni sulla data di inizio effettivo del noleggio.
48
UNIFIEDPROCESS– ELABORAZIONE 2
UCPrenota – i contratti
CheckPrenotazione
Operazione: checkPrenotazione()
Riferimenti: useCase: Prenota
Pre-condizioni: un'istanza di terminale è avviata, il cliente
è autenticato, è stata memorizzata in sessione la data
inizioe la durata prevista della prenotazione.
Post-condizioni: un prodotto è stato trovato
corrispondente alle richieste di prenotazione dell'utente ed
è stato memorizzato in sessione.
49
UNIFIEDPROCESS– ELABORAZIONE 2
UCPrenota – i contratti
ConfermaPrenotazione
Operazione: confermaPrenotazione()
Riferimenti: useCase: Prenota
Pre-condizioni: un'istanza di terminale è avviata, il cliente
è autenticato, è stato trovato un prodotto corrispondente
alle richieste del cliente, memorizzato in sessione con tutti
gli attributi necessari alla prenotazione.
Post-condizioni: l'istanza di Prenotazione è stata creata,
gli attributi temporanei, il prodotto nel magazzino è stato
prenotato.
50
UNIFIEDPROCESS– ELABORAZIONE 2
UCRestituisci – SSD
UNIFIEDPROCESS– ELABORAZIONE 2
51
UCRestituisci – i contratti
Restituisci
Operazione: restituisci(IdProdotto)
Riferimenti: useCase: Restituisci
Pre-condizioni: un'istanza di terminale è avviata, il cliente
dispone di un Prodotto fisico da restituire alla filiale di
interesse.
Post-condizioni: Lo stato dell’istanza dell’oggetto
“Prodotto” il cui ID corrisponde a IdProdotto cambia da
“Noleggiato” a “Magazzino”
UNIFIEDPROCESS– ELABORAZIONE 1
52
Architettura software
La scelta architetturale:
MVA (Model – View – Adapter/Control)
•
•
“The view is completely decoupled from the model such that view
and the model can interact only via the mediating controller or
adapter in between the view and the model”.
“Only the adapter or mediating controller has knowledge of both
the model and the view, because it is the responsibility of solely
the adapter or mediating controller to adapt or mediate between
the model and the view” [Wikipedia]
53
UNIFIEDPROCESS– ELABORAZIONE 1
Architettura software
“The model and view are kept intentionally oblivious of each other”
54
UNIFIEDPROCESS– ELABORAZIONE 2
Il diagramma dei package
55
UNIFIEDPROCESS– ELABORAZIONE 1
Il diagramma dei package
56
UNIFIEDPROCESS– ELABORAZIONE 1
Il diagramma dei package
57
UNIFIEDPROCESS– ELABORAZIONE 1
Il diagramma delle classi
- Il Client
58
UNIFIEDPROCESS– ELABORAZIONE 1
Il diagramma delle classi – Il Client
59
UNIFIEDPROCESS– ELABORAZIONE 1
Il diagramma delle classi – Il Server
60
UNIFIEDPROCESS– ELABORAZIONE 1
Il diagramma delle classi – Il Server
61
UNIFIEDPROCESS– ELABORAZIONE 1
Il diagramma delle classi – Il Server
62
UNIFIEDPROCESS– ELABORAZIONE 1
Il diagramma delle classi – Il Server
63
UNIFIEDPROCESS– ELABORAZIONE 1
Il diagramma ER
64
UNIFIEDPROCESS– ELABORAZIONE 1
Il diagramma ER
65
UNIFIEDPROCESS– ELABORAZIONE 1
Il diagramma ER
66
UNIFIEDPROCESS– ELABORAZIONE 1
Interfaccia grafica – Paper sketches
67
UNIFIEDPROCESS– ELABORAZIONE 1
Interfaccia grafica – MockUp
68
UNIFIEDPROCESS– ELABORAZIONE 1
Interfaccia grafica – Swing
69
UNIFIEDPROCESS– ELABORAZIONE 1
Interfaccia grafica – scelte su Swing
70
UNIFIEDPROCESS– ELABORAZIONE 2
Il riscontro del committente
L’incontro con il committente a valle della prima Iterazione della
fase di Elaborazione ha sostanzialmente confermato il corretto
avanzamento del lavoro.
Il committente ha tuttavia segnalato:
• la poca intuitività dell’interfaccia relativa alla ricerca di un film
(o meglio, si aspettava che l’interfaccia fosse corredata di
parametri per la ricerca avanzata).
• sempre per quanto riguarda l’interfaccia, ha suggerito di
migliorare la schermata di risultati della ricerca, in parte
povera di contenuti (oltre al titolo film, dettagli come genere,
regia, etc..)
71
UNIFIEDPROCESS– ELABORAZIONE 2
La ristrutturazione di UCRicerca
72
UNIFIEDPROCESS– ELABORAZIONE 2
La ristrutturazione di UCRicerca
Paginazione gestita
sul client, con
limitazioni lato server
sul numero max di
risultati
73
SD diagram
74
Communication Diagram
UNIFIEDPROCESS– ELABORAZIONE 2
75
Il diagramma di deployment
DA aggiungere.
76
UNIFIEDPROCESS– ELABORAZIONE 2
Diagramma degli stati: Noleggio
77
UNIFIEDPROCESS– ELABORAZIONE 2
Diagramma degli stati: Prodotto
78
ANALYSIS & DESIGN
I DESIGN PATTERNS GoF
79
UNIFIEDPROCESS– DESIGN PATTERNS
I Design Patterns GoF
80
UNIFIEDPROCESS– DESIGN PATTERNS
Design Patterns: Singleton
• Il Singleton è un design pattern
creazionale che ha lo scopo di
garantire che di una determinata
classe venga creata una e una
sola istanza, e di fornire un
punto di accesso globale a tale
istanza.
DA NON
CONFONDERE!!!
• Costruttore privato
• metodo "getter"
statico che
restituisce una
istanza della classe
81
UNIFIEDPROCESS– DESIGN PATTERNS
Design Patterns: Singleton
• TODO --• Come faccio vedere i singleton?
82
UNIFIEDPROCESS– DESIGN PATTERNS
Design Patterns: Mediator
• pattern comportamentale
basato su oggetti, ossia
operante nel contesto delle
interazioni tra oggetti, che ha
l'intento di disaccoppiare
entità del sistema che
devono comunicare fra loro.
• Il pattern fa in modo che
queste entità non si
riferiscano reciprocamente,
agendo da "mediatore" fra le
parti.
83
UNIFIEDPROCESS– DESIGN PATTERNS
Design Patterns:
Mediator sul
Client
84
UNIFIEDPROCESS– DESIGN PATTERNS
Design Patterns: State
• pattern comportamentale basato
su oggetti che viene utilizzato
quando il comportamento di un
oggetto deve cambiare in base al
suo stato.
• Questo pattern trova applicazione
quando abbiamo a che fare con una
“Macchina a Stati Finiti” ossia siamo
in presenza di un sistema dinamico
in cui i valori di ingresso, uscita e
stato sono un insieme finito.
85
UNIFIEDPROCESS– DESIGN PATTERNS
Design Patterns: Adapter
• pattern strutturale basato
su classi o su oggetti in
quanto è possibile ottenere
entrambe le
rappresentazioni.
• Viene utilizzato quando si
intende utilizzare un
componente software ma
occorre adattare la sua
interfaccia per motivi di
integrazione con
l’applicazione esistente.
86
UNIFIEDPROCESS– DESIGN PATTERNS
Design Patterns: State+Adapter sul Client
87
UNIFIEDPROCESS– DESIGN PATTERNS
Design Patterns: Facade
• pattern strutturale basato
su oggetti che viene
utilizzato per nascondere la
complessità del sistema e
ridurre la comunicazione e la
dipendenza del Client.
• L’utilizzo di questo pattern
prevede di esporre una
interfaccia per l’invocazione
di un Sistema tale da
semplificare l’invocazione ad
opera del Client.
88
UNIFIEDPROCESS– DESIGN PATTERNS
Design Patterns:
Terminale come
ControllerFacade
visibile al Client
89
UNIFIEDPROCESS– DESIGN PATTERNS
Design Patterns: Strategy
• pattern comportamentale basato
su oggetti utilizzato per definire
una famiglia di algoritmi, incapsularli
e renderli intercambiabili.
• Il client definisce l’algoritmo da
utilizzare, incapsulandolo in un
contesto, il quale verrà utilizzato
nella fase di elaborazione.
• Il contesto detiene i puntamenti alle
informazioni necessarie al fine della
elaborazione, cioè dati e funzione:
solita equazione y=f(x)!
90
UNIFIEDPROCESS– DESIGN PATTERNS
Design Patterns: Strategy (sulla ricercaFilm) - Server
91
UNIFIEDPROCESS– DESIGN PATTERNS
Design Patterns: Strategy sulle prenotazioni - Server
92
UNIFIEDPROCESS– DESIGN PATTERNS
Design Patterns: Composite
• pattern strutturale basato su
oggetti che viene utilizzato quando
si ha la necessità di realizzare una
gerarchia di oggetti in cui l’oggetto
contenitore può detenere oggetti
elementari e/o oggetti contenitori.
• L’obiettivo è di permettere al Client
che deve navigare la gerarchia, di
comportarsi sempre nello stesso
modo sia verso gli oggetti
elementari e sia verso gli oggetti
contenitori.
93
UNIFIEDPROCESS– DESIGN PATTERNS
Design Patterns: Strategy+Composite per i prezziServer
94
IMPLEMENTAZIONE
TECNOLOGIE:HIBERNATE & JAVA RMI
TECNOLOGIE – HIBERNATE & JAVA RMI
95
Hibernate: Object-Relational Mapping
• piattaforma middleware open source per lo sviluppo di
applicazioni Java che fornisce un servizio di Objectrelational mapping (ORM)
•
•
Come si intuisce dal nome consiste nella tecnica di mappare gli
oggetti Java su di un database relazionale
In questo modo è possibile, tramite dei semplici metodi invocabili
dai nostri oggetti, eseguire le query più diffuse
TECNOLOGIE – HIBERNATE & JAVA RMI
96
Hibernate: Object-Relational Mapping
• Per il funzionamento necessita di:
• Un R-DBMS installato con almeno un database creato
• Importare nel progetto le librerie di Hibernate
• Un file .cfg.xml che contiene le impostazioni e la configurazione
del DBMS
• Dei file .hbm.xml per ogni entità del diagramma E-R
•
•
Una ORMpersistable Java class per ogni entity dell’E-R
•
•
Permettono di associare le tabelle alle classi
Dunque per ogni file hbm.xml
Una classe di utility per la gestione delle sessioni
97
TECNOLOGIE – HIBERNATE & JAVA RMI
Hibernate: Object-Relational Mapping
configurazione
del DBMS
utility per la gestione
delle sessioni File hbm.xml
ORMpersistable java class
TECNOLOGIE – HIBERNATE & JAVA RMI
98
Hibernate: Object-Relational Mapping
• Nel corso della It2 si è fatto uso del Wizard di Visual
Paradigm per generare il codice necessario al
funzionamento di Hibernate
•
•
Nello specifico si è ricorso alla Persistent API «Static Method»
Tuttavia la generazione automatica comportava diverse limitazioni
•
•
•
Sporcava le classi con una serie di metodi statici di classe
Legava le classi alla problematica della distribuzione (queste ultime
dovevano estendere “Remote”)
Ha creato problemi nei Vincoli di Integrità Referenziale in tutti i casi in
cui veniva implementato il costrutto o-o della composizione
TECNOLOGIE – HIBERNATE & JAVA RMI
99
Hibernate: Object-Relational Mapping
• Pertanto si è adottata una strategia differente nella It3
• Configurazione manuale dei file xml
• Implementazione manuale sulla falsariga della Persistent API
«Data Access Object» di Visual Paradigm
•
Ogni ORMPersistable entity class è affiancata dal suo «DTO»(Data
Transfer Object) che incapsula in esso la entity stessa
•
•
Tutto questo anche per motivi legati alla distribuzione, come vedremo
A differenza del pattern DAO generato da VP, abbiamo deciso di
ospitare i metodi «Save()», «Delete()», etc… in opportune classi
controller (grasp High cohesion)
TECNOLOGIE – HIBERNATE & JAVA RMI
100
Hibernate: Object-Relational Mapping
• Nel corso della It3 si è fatto utilizzo dei “Criteria”
Hibernate offre una API
di interrogazione per
criteri intuitiva ed
estensibile.
101
TECNOLOGIE – HIBERNATE & JAVA RMI
Java Remote Method Invocation (RMI)
• Si può avere un vero e proprio riferimento all’oggetto
remoto, anche se esso si trova su una Java Virtual
Machine diversa dalla nostra
• Si può utilizzare la sintassi Java e tutte le potenzialità
offerte dalla progettazione o-o anche quando si invocano
i metodi appartenenti agli oggetti remoti
• In questo modo è possibile progettare in maniera
distribuita un'applicazione decomponendo la logica della
nostra applicazione in diversi componenti
TECNOLOGIE – HIBERNATE & JAVA RMI
102
Java Remote Method Invocation (RMI)
1.
2.
3.
4.
Viene creata sul server un’istanza
dell'oggetto remoto e passata in
forma di stub al rmi registry. Tale stub
viene inserito all'interno del registry
stesso.
Il client richiede al registry una copia
dell'oggetto remoto da utilizzare.
Il registry restituisce una copia
serializzata dello stub al client
Il client invoca uno dei metodi
dell'oggetto remoto utilizzando la
classe "clone“ fornita dallo stub
TECNOLOGIE – HIBERNATE & JAVA RMI
103
Java Remote Method Invocation (RMI)
5.
6.
7.
8.
9.
Lo stub richiama lo skeleton che si
trova sul server chiedendogli di
invocare sull'oggetto remoto lo stesso
metodo che il client ha invocato sullo
stub
Lo skeleton invoca il metodo richiesto
sull'oggetto remoto
L'invocazione del metodo sull'oggetto
remoto restituisce il risultato allo
skeleton
Lo skeleton comunica il risultato allo
stub sul client
Lo stub fornisce il risultato
all'applicazione client iniziale
TECNOLOGIE – HIBERNATE & JAVA RMI
104
Java RMI: il progetto FastVidRentals
Il progetto common
è puntato sia dal
progetto client che
dal progetto server
105
TECNOLOGIE – HIBERNATE & JAVA RMI
Java RMI: il progetto FastVidRentals
106
TECNOLOGIE – HIBERNATE & JAVA RMI
Java RMI: il progetto FastVidRentals
107
TECNOLOGIE – HIBERNATE & JAVA RMI
Java RMI: il progetto FastVidRentals
Riprendendo il discorso dei DTO…
108
IMPLEMENTAZIONE
IL CODICE
109
TECNOLOGIE – HIBERNATE & JAVA RMI
110
FASTVID RENTALS:
CONCLUSIONI
I PUNTI DI FORZA DEL PROGETTO, GLI SVILUPPI
FUTURI
CONCLUSIONI
111
I punti di forza
• Multi-threading
• Flessibilità software:
• Gerarchia Terminali
• Client Multi-Piattaforma
• Sessione
• Politiche prezzo
• Politiche Prenotazioni
• Tipologia ricerca
• Transizioni di stato sul client
112
I punti ancora da migliorare
• Stato nei Noleggi
• Ottimizzare gestione temporale dei prodotto e noleggi
• ProxyImages sul client
• Gestione del ripristino dello stato delle View
CONCLUSIONI
113
Statistiche sul codice del progetto:
Progetto
N° Classi
Linee di
codice
Linee di codice
(eseguibile)
Peso file
(KByte)
Client
50
6312
3876
170
Common
15
409
235
36,5
Server
77
5139
2496
153
TOTALE:
142
11860
6607
360
Report software: http://www.locmetrics.com/index.html
VI RINGRAZIAMO PER L’ATTENZIONE
Alessio D’Alessio, Filippo Mortari, Davide Russo
Scarica

Unified process – design patterns