1
Ingegneria del Software, A.A. 2010 – 2011
Università degli Studi dell’Aquila – D.I.S.I.M.
Docente : Chia.mo Prof. Serafino Cicerone
Alessio D’Alessio, Filippo Mortari, Davide Russo
2
Video rental mngmt system - funzionalità
• sistema software di gestione di una azienda di noleggio
film
•
•
•
•
•
servizi di noleggio e reso
prenotazione e servizi aggiuntivi di assistenza
offrire al cliente un sistema di noleggio totalmente automatizzato
Gestione back-end (magazzino, statistiche, CRM..)
Flessibilità
•
•
•
Nell’implementazione di politiche di prezzi, sconti, prenotazioni
l’introduzione futura di servizi web di noleggio e prenotazione
servizi di “video on demand” per concorrere con il mercato del webstreaming
3
VRMS – funzionalità in dettaglio
•
•
•
•
•
•
•
•
•
Gestire il catalogo dei film;
gestire la registrazione dei clienti;
gestire le 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 i resi di prodotti difettosi;
gestire il magazzino della filiale;
gestire la comunicazione con i clienti mediante sms ed essere
flessibile ad eventuali nuovi canali di comunicazione;
• gestire il reporting dell’attività della filiale;
4
FastVid – la struttura aziendale
La macrostruttura:
5
FastVid – la struttura aziendale
L’organigramma aziendale della singola divisione:
6
FastVid – prospettiva dell’utente
Si mostrano i possibili punti di accesso fisici all’applicativo
7
FastVid – Business rules salienti
Il costo dei noleggi:
• il tipo di supporto/formato desiderato
•
•
Supporto videocassetta: 0.5€ al giorno
Supporto disco:
•
•
•
•
Formato Cd / DVD : 1€ al giorno
Formato BluRay: 1.5€ al giorno
la durata del noleggio, moltiplicando il prezzo per i giorni di
noleggio;
film novità: +10% sul prezzo originale.
8
FastVid – 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;
9
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
10
Il versionamento: Xp-Dev e GoogleCode
11
Il processo di riferimento: UP
12
Il processo di riferimento: UP
Ogni iterazione
produce
un’executable release
13
UNIFIED PROCESS:
IDEAZIONE
14
UP: ideazione
• Casi d’uso analizzati:
• tutti
• Casi d’uso dettagliati:
• UCRicercaFilm
• UcNoleggia
15
UP: ideazione - UCDiagram
16
UP: Ideazione – UCRicercaFilm - info
Stereotypes :
<<UseCase>>
Documentation :
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.
17
UP: Id – UCRicercaFilm – flow of events
18
UP: Id – UCNoleggiaFilm - dettagli
Rank :
High
Stereotypes :
<<UseCase>>
Documentatio Il Cliente, una volta recatosi presso una delle
n:
filiali di 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.
19
UP: Id – UCNoleggiaFilm – flow of events
20
UP: Id – UCNoleggiaFilm – flow of events
21
UNIFIED PROCESS:
ELABORAZIONE ITERAZIONE 1
PROBLEMATICHE DI DESIGN –
COME E’ EVOLUTO IL SOFTWARE
22
UP: Iterazione1 - introduzione
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.
Nota: chiameremo informalmente da qui in poi IT2
la prima iterazione dell’elaborazione
23
UP: It2 - introduzione
Cosa è stato realizzato nel corso dell’Iterazione 2:
• Modello di dominio
• Analysis & Design, Implementazione di UCRicerca,
UCNoleggia
• Paper-sketches & progettazione interfaccia
• Introduzione delle tecnologie
•
•
ORM mediante Hibernate
Distribuzione mediante Java RMI
24
UP It2 – Il modello di dominio
25
UP: It2 – SSD UCRicercaFilm
26
UP: It2 – UCRicercaFilm - I contratti
27
UP: It2 – UCRicercaFilm – cercaFilm SD
28
UP: It2 – UCRicercaFilm – VisualizzaDisponibilità SD
29
UP: It2 – UCRicercaFilm – ScegliSupporto SD
30
UP: It2 – SSD UCNoleggiaFilm
31
UP: It2 – UCNoleggiaFilm - I contratti
32
UP: It2 – UCNoleggiaFilm – NotificaIdentita SD
33
UP: It2 – UCNoleggiaFilm – SetDurata SD
34
UP: It2 – UCNoleggiaFilm – ConcludiNoleggio SD
35
UP: It2 – Il diagramma dei package
•
La scelta architetturale:
•
•
•
MVA (model-view-adapter)
“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]
36
UP: It2 – Il diagramma dei package
•
“The model and view are kept intentionally oblivious of each other”
37
UP: It2 – Il diagramma
delle classi
Design Client
38
UP: It2 – Il diagramma delle classi
39
UP: It2 – Il diagramma delle classi
40
UP: It2 – Il diagramma ER
41
UP: It2 – Interfaccia – paper scketches
42
UP: It2 – Interfaccia – MockUp
43
UP: It2 – Interfaccia – Swing
44
UP: It2 – Interfaccia – scelte su Swing
45
UNIFIED PROCESS:
ELABORAZIONE ITERAZIONE 2 (IT3)
PROBLEMATICHE DI DESIGN –
COME E’ EVOLUTO IL SOFTWARE
46
UP: It3 - introduzione
L’incontro con il committente a valle della seconda Iterazione 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..)
47
UP: It3 - introduzione
Cosa è stato realizzato nel corso dell’Iterazione 2:
• Ristrutturazione UCRicerca guidata dai suggerimenti del
committente
• Analysis & Design, Implementazione di UCPrenota,
UCRestituisci
• Introduzione dei Design Patterns GoF e ristrutturazione
del codice
48
UP: It3 – La ristrutturazione di UCRicerca
49
UP: It3 – La ristrutturazione di UCRicerca
Paginazione gestita
sul client, con
limitazioni lato server
sul numero max di
risultati
50
UP: It3 – SSD UCRicercaFilm
•
L’SSD è rimasto invariato,
vediamo invece come sono
modificati i singoli SD in
base alla ristrutturazione.
51
UP: It3 – SSD UCRicercaFilm – I contratti
52
UP: It3 – UCRicerca - SD CercaFilm
53
UP: It3 – UCRicerca - SD VisualizzaFIlm
54
UP: It3 – UCRicerca - SD ScegliSupporto
55
UP: It3 – La ristrutturazione del codice di UCNoleggia
Stesso SSD di It2…
56
UP: It3 – UCNoleggia
SDNotificaIdentita
57
UP: It3 – UCNoleggia – SD SetDurata
58
UP: It3 – UCNoleggia
SDConcludiNoleggio
59
UP: It3 – I nuovi casi d’uso: UCPrenota
Stereotypes :
<<UseCase>>
Documentatio Il Cliente può effettuare una prenotazione. Quest'ultima
n:
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.
60
UP: It3 – UCPrenota – Flow of Events
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
61
UP: It3 – UCPrenota – Flow of Events
Extension:
3.a. Il Cliente non possiede la tessera servizi
3.a.1. Il Cliente notifica al Sistema di non possedere una tessera servizi
3.a.2. Il Sistema invita il Cliente a rivolgersi all'Operatore di cassa a cui richiedere la tessera
3.a.3. jump to 1. Il Cliente effettua ...
3.b. Il Cliente è titolare di una tessera servizi ma non ne è momentaneamente in possesso
3.b.1. Il Cliente notifica al Sistema di non possedere una tessera servizi
3.b.2. Il Sistema invita il Cliente a rivolgersi all'Operatore di cassa per farsi autenticare
3.b.3. jump to 1. Il Cliente effettua ...
4.c. Il Sistema non riconosce la tessera servizi
4.c.1. Il Sistema notifica al Cliente la mancata autenticazione e lo invita a rivolgersi all'Operatore di cassa
per assistenza
4.c.2. jump to 1. Il Cliente effettua ...
7.d. il film non è disponibile in tale giorno
7.d.1. Il sistema notifica la non disponibilità del film e supporto in tale giorno
7.d.2. jump to 6. Il Cliente indica la...
9.e. il film non è disponibile per tale durata
9.e.1. Il sistema notifica la non disponibilità del film e supporto per tale durata
9.e.2. jump to 8. Il Cliente indica la...
11.f. Il credito disponibile non è sufficiente a coprire l'importo del noleggio
11.f.1. Il Sistema notifica al Cliente il credito disponibile, avvisandolo che non è sufficiente per portare a
termine l'operazione
11.f.2. Il Sistema propone al Cliente di passare alla modalità Gestisci tessera servizi per caricare credito
11.f.3. if il Cliente rifiuta il caricamento di ulteriore credito
11.f.3.1. Il Sistema propone di diminuire la durata della prenotazione
11.f.3.2. jump to 8. Il Cliente indica la...
11.f.3. end if
62
UP: It3 – SSD UCPrenota e contratti
63
UP: It3 – UCPrenota – SD SetDataInizio
64
UP: It3 – UCPrenota – SD SetDurata
65
UP: It3 – UCPrenota – SD CheckPrenotazione
66
UP: It3 – UCPrenota – SD ConcludiPrenotazione
67
UP: It3 – I nuovi casi d’uso: UCRestituisci
Rank :
Low
Stereotypes :
<<UseCase>>
Documentatio Il Cliente può recarsi presso una filiale di FastVid
n:
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.
68
UP: It3 – I nuovi casi d’uso: 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
69
UP: It3 – I nuovi casi d’uso: UCRestituisci
Extension:
5.a. Il sistema non è in grado di leggere l'ID del prodotto o l'ID letto non è valido
5.a.1. Il Sistema informa il Cliente della problematica tecnica
5.a.2. Il Sistema rende al Cliente il prodotto appena depositato
5.a.3. Il Sistema invita il Cliente a rivolgersi all' Operatore di cassa per assistenza appena possibile, senza
costi aggiuntivi per il prolungamento del termine di riconsegna
5.a.4. Il Sistema stampa una ricevuta attestante il tentativo fallito di restituzione
5.a.5. jump to 11. Il Cliente si allont...
7.b. La restituzione è avvenuta oltre il tempo massimo previsto dalle condizioni del noleggio
7.b.1. Il Sistema informa il Cliente che la restituzione è fuori tempo massimo
7.b.2. Il Sistema informa il Cliente dei giorni di ritardo e dell'importo che verrà addebitato di conseguenza.
7.b.3. Il Sistema addebita l'importo calcolato sul credito del Cliente, con l'eventualità che il credito divenga
negativo
7.b.4. Il Sistema notifica la transazione al Sistema contabilità
7.b.5. Il Sistema informa il Cliente dell'importo aggiornato del suo credito, invitandolo a ricaricare se
negativo
8.c. Il sistema rileva l'esaurimento o l'inceppamento della carta della stampante
8.c.1. Il Sistema notifica al Cliente il problema e lo informa che otterrà la ricevuta tramite e-mail
70
UP: It3 – I nuovi casi d’uso: UCRestituisci
71
UP: It3 – UCRestituisci
SD Restituisci
72
UP: It3 – Il diagramma dei package
Da It2 a It3
73
UP: It3 – Il
diagramma delle
classi (Client)
74
UP: It3 – Il
diagramma delle
classi
(Server.control)
75
UP: It3 – Il
diagramma delle
classi
(Server.model)
76
UP: It3 – Il diagramma di deployment
DA aggiungere.
77
UNIFIED PROCESS:
ELABORAZIONE ITERAZIONE 2 (IT3)
I DESIGN PATTERNS
78
I Design Patterns GoF
79
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
80
Design Patterns: Singleton
• TODO --• Come faccio vedere i singleton?
81
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.
82
Design Patterns:
Mediator sul
Client
83
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.
84
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.
85
Design Patterns: State+Adapter sul Client
86
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.
87
Design Patterns:
Terminale come
ControllerFacade
visibile al Client
88
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)!
89
Design Patterns: Strategy (sulla ricercaFilm) - Server
90
Design Patterns: Strategy sulle prenotazioni - Server
91
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.
92
Design Patterns: Strategy+Composite per i prezziServer
93
LE TECNOLOGIE:
HIBERNATE & JAVA RMI
PANORAMICA SULLE TECNOLOGIE E SU COME
ESSE SIANO STATE UTILIZZATE NEL CORSO DELLE
ITERAZIONI
94
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
95
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
96
Hibernate: Object-Relational Mapping
configurazione
del DBMS
utility per la gestione
delle sessioni File hbm.xml
ORMpersistable java class
97
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
98
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)
99
Hibernate: Object-Relational Mapping
• Nel corso della It3 si è fatto utilizzo dei “Criteria”
Hibernate offre una API
di interrogazione per
criteri intuitiva ed
estensibile.
100
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
101
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
102
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
103
Java RMI: il progetto FastVidRentals
Il progetto common
è puntato sia dal
progetto client che
dal progetto server
104
Java RMI: il progetto FastVidRentals
105
Java RMI: il progetto FastVidRentals
106
Java RMI: il progetto FastVidRentals
Riprendendo il discorso dei DTO…
107
PROGETTO FASTVID –
CONCLUSIONI
I PUNTI DI FORZA DEL PROGETTO, GLI SVILUPPI
FUTURI
108
I punti di forza: flessibilità
Scarica

Presentazione di PowerPoint