Progetto PC versione del 2 aprile 2008

Documenti analoghi
Progetto PC versione del 11 gennaio 2008

Progetto PC versione del 20 settembre 2007

Progetto PC versione del 22 aprile 2008

Progetto PI , passo A.1 versione del 10 aprile 2007

Progetto PI , passo A.3 versione del 28 marzo 2007

Progetto PI , passo A.2 versione del 10 aprile 2007

Progetto PI , passo A.1 versione del 16 marzo 2007

Progetto E versione del 12 marzo 2007

Corso di Progettazione del Software

Corso di Progettazione del Software

Proff. Toni Mancini & Monica Scannapieco Dipartimento di Informatica e Sistemistica Università di Roma La Sapienza

Progetto PC versione del 12 marzo 2007

Corso di Progettazione del Software

Progetto PI , passo A.1 versione del 6 febbraio 2007

1 Catena di officine, versione 2

SAPIENZA Università di Roma Facoltà di Ingegneria dell Informazione, Informatica e Statistica

Requisiti. Requisiti (cont.) Sapienza - Università di Roma Facoltà di Ingegneria

Progettazione del Software

Progetto PI , passo A.3 versione del 6 febbraio 2007

SOLUZIONE. Requisiti. Requisiti (cont.) Requisiti (cont.)

Progetto E versione del 12 marzo 2007

Progettazione del Software Analisi

Progettazione del Software

G Suite Overview Istituto Nazionale Astrofisica Catania, 11/09/2018

SOLUZIONE. Requisiti. Requisiti (cont.) Requisiti (cont.) Sapienza - Università di Roma Facoltà di Ingegneria

Progettazione del Software

Progetto PI , passo A.2 versione del 6 febbraio 2007

Obiettivi dell esercitazione. Requisiti (cont.) Requisiti. Sapienza Università di Roma A.A

Progettazione del Software

Area Sistemi di Elaborazione Microinformatica

CURRICOLO DIPARTIMENTO INFORMATICA PRIMO BIENNIO

Progettazione del Software

SOLUZIONE. Requisiti. Requisiti (cont.) Fase di analisi. Università di Roma La Sapienza Facoltà di Ingegneria

Progetto PI , passo P.1 versione del 11 marzo 2007

Creazione di utenti WordPress

Array. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 11. A. Miola Dicembre 2007

UML2. Progettazione della realizzazione dei casi d uso. Andrea Polini

Guida rapida all uso dei siti Sharepoint per la condivisione del Materiale Didattico

Corso di Progettazione del Software

Il diagramma delle classi è raffigurato in Figura 1, insieme alla descrizione della responsabilità sulle associazioni.

Creazione di un blog con Altervista

Progetto B. Utenti. Di conseguenza si potranno avere solo utenti di questi tipi

Progetto PC versione del 11 luglio 2007

Guida all uso di Futura Trento Obiettivi PRG Indice

Condividi in linea 3.1. Edizione 1

INTRODUZIONE AI DBMS. Inoltre i fogli elettronici. Mentre sono poco adatti per operazioni di. Prof. Alberto Postiglione

INTRODUZIONE AI DBMS

Guida in linea di Websense Secure Messaging

SAPIENZA Università di Roma Facoltà di Ingegneria dell Informazione, Informatica e Statistica

PROCESSO CIVILE TELEMATICO

Proff. Toni Mancini & Monica Scannapieco Dipartimento di Informatica e Sistemistica Università di Roma La Sapienza

Manuale Operativo. Release 1.1

MANUALE D USO. Per ulteriori info su GeckoWay visita il sito Pag. 1 a 40

GUIDA ALL UTILIZZO DEL. Portale Privato per la gestione e distribuzione di contenitori, chiavi, trasponder

Animatore Digitale. aa.ss. 2018/2019. Educazione nell era digitale. Pilastro fondamentale de La Buona Scuola (legge 107/2015)

GUIDA ALL UTILIZZO DEL FASCICOLO INPS

FASI DA ESEGUIRE ON-LINE

Microsoft Access. Nozioni di base. Contatti: Dott.ssa Silvia Bonfanti

Google Documenti / Drive

PROGETTAZIONE DIDATTICA

Nota: l icona in questa maschera fa chiudere l intero sistema, nelle altre maschere effettua la chiusura della maschera aperta in quel momento.

Ultimo Aggiornamento: Versione d del 25 Gennaio 2019 Pagina 1.2

Guida in linea di Forcepoint Secure Messaging

Istruzioni per l inserimento dei materiali didattici

Disciplina: INFORMATICA

Sommario. Introduzione 1. 1 Scrivere in HTML con efficacia 7. 2 Formattazione standard del testo Aggiungere i colori 43. iii

Fatturazione Elettronica con OFFIS

BIBL.ÌO (I servizi personalizzati ed il Mio spazio) BREVE GUIDA ALLA REGISTRAZIONE E ALL USO

CREA SITI WEB DIVENTANDO ESPERTO DI WORDPRESS:

PROGETTAZIONE DIDATTICA ANNUALE SCUOLA PRIMARIA INFORMATICA E TECNOLOGIA

Corso Formazione Generale

LINEE GUIDA PER OPERATORI ECONOMICI. Iscrizione / Rinnovo Albo Fornitori

Quaderno 4: Progetto di una base di dati e realizzazione di un applicazione web

Manuale di Utilizzo SMAT (Sistema Monitoraggio Apprendistato e Tirocini) per il Soggetto Formatore.

COME REGISTRARSI AL PORTALE

13/01/2013. Progetto. Piattaforma web risultati. Roberto Romano Software Olimpyawin

Università di Bergamo Dip. di Ingegneria gestionale, dell'informazione e della produzione INGEGNERIA DEL SOFTWARE. Paolo Salvaneschi A6_2 V3.

Principi di Progettazione del Software a.a " Introduzione al corso! Prof. Luca Mainetti! Università del Salento!

CREAZIONE PERCORSI TEMATICI E INSERIMENTO COMMENTI

Programma di INFORMATICA

ITALIANO Digital story telling e scritture collaborative Percorso per classi quarta e quinta, con una attenzione alla prima classe della scuola media

Quali sensori possiedono i sistemi commerciali da polso? Sono affidabili? È possibile accedere ai dati grezzi (raw data)? Come?

Costruire pagine per il WEB

SEGNALAZIONI STUDI DI SETTORE UNICO 2012 GUIDA OPERATIVA VERSIONE 1.0

Servizi di e-business Eni

TAVOLA DI PROGRAMMAZIONE

Lab ISW 2012/2013: Progetto

Manuale d istruzioned

Programma di contabilità per società sportive

Utilizzo delle Maschere in Microsoft Access

Nokia Nseries PC Suite 2.1. Edizione 1

MANUALE di MOVIE MAKER

L hardware da solo non è sufficiente per il funzionamento dell elaboratore È necessario introdurre il software:

Guida ai servizi SUAP on-line in Regione Toscana

Accademia dei Georgofili/Società Editrice Fiorentina

PREFERITO. Il servizio di catalogazione dei siti web

Blog Blogging Blogger. Blogsfera

Principi di Progettazione del Software a.a Introduzione al corso Prof. Luca Mainetti Università del Salento

ACCESS. Database: archivio elettronico, dotato di un programma di interfaccia che facilita la registrazione e la ricerca dei dati.

Musica a scuola. Repository multimediale di buone pratiche nella didattica della musica nel primo e nel secondo ciclo di istruzione INTRODUZIONE

Transcript:

Università degli Studi di Roma La Sapienza Facoltà di Ingegneria Corso di Laurea in Ingegneria Gestionale Corso di Progettazione del Software Proff. Toni Mancini e Monica Scannapieco Progetto PC.20080401 versione del 2 aprile 2008 Si vuole progettare e realizzare TuTubi, un sistema informatico da usarsi su un portale Web per la pubblicazione e condivisione di file video da parte degli utenti registrati. Il sistema deve permettere la memorizzazione dei video e la loro visualizzazione da parte degli utenti. Questi devono poter anche esprimere valutazioni e commenti. Si richiede di effettuare le fasi di Analisi, Progetto, e Realizzazione del sistema in Java, utilizzando la metodologia illustrata nel corso. Requisiti TuTubi deve consentire la registrazione degli utenti, di cui interessa il nome e la data di iscrizione. Gli utenti registrati possono pubblicare video, visualizzare quelli disponibili, oltre che esprimere su di essi valutazioni e commenti testuali. In particolare, di un video pubblicato da un utente interessa conoscere il titolo, la durata e la descrizione (oltre che il nome del file dove questo viene memorizzato da parte del sistema). Inoltre, di ogni video interessa conoscere la categoria (unica) a cui appartiene, oltre che un insieme di parole chiave dette tag (almeno una) che ne descrivano il contenuto in modo più strutturato. Delle categorie e dei tag interessa il nome. TuTubi deve anche permettere ad un utente di pubblicare un nuovo video segnalando che si tratta di una risposta ad un video già esistente (utile per temi come la politica dove vi possono essere posizioni diverse che stimolano un dibattito). 1 TuTubi deve mantenere tale informazione in modo consistente, garantendo che nessun utente possa pubblicare un video in risposta ad un video pubblicato da sé stesso. TuTubi deve poi fornire un servizio di cronologia, ricordando la sequenza di tutti i video visionati da ogni singolo utente, con relativa data e ora. Inoltre, per ogni video interessa conoscere il numero complessivo di volte che è stato visionato. 1 Si assuma per semplicità che esista un operazione di un qualche use case caricavideo(nomefilesucomputerutente:stringa): Stringa che consente di trasferire un file video dal computer dell utente a TuTubi, ritornando il nome della copia del file trasferito (locale al sistema TuTubi dunque). Non si dia la specifica di tale operazione, ma la si utilizzi in modo opportuno. 1

Gli utenti di TuTubi devono inoltre avere la facoltà di esprimere una valutazione (un valore da 0 pessimo a 5 ottimo) per ogni video che visionano. Tali valutazioni serviranno poi al sistema per promuovere i video più belli (cf. seguito) e scovare i più brutti. Tuttavia, per evitare degenerazioni nel meccanismo delle votazioni, l utente che ha pubblicato un video non può votarlo, mentre ogni altro utente può votarlo al più una volta, indipendentemente dal numero di volte che l ha visionato. In ogni caso però deve essere impossibile per un utente votare un video che non ha mai visionato. Inoltre, per favorire uno spirito di comunità tra gli utenti del servizio, si prevede che questi possano esprimere commenti testuali ai video che visionano (dei quali interessa anche data e ora). A differenza delle valutazioni, un utente può esprimere più commenti per lo stesso video. Anche qui, non deve essere permesso ad un utente di scrivere commenti per video che non ha mai visionato. Ogni utente può creare delle playlist personali, ovvero delle collezioni ordinate di video che gradisce vedere, oppure vuole condividere con altri utenti. Le playlist infatti (di cui interessa il nome e la data di creazione) possono essere pubbliche o private: solo le playlist pubbliche possono essere visualizzate dagli altri utenti. A tal fine, il sistema deve permettere ad ogni utente di ottenere le playlist pubbliche di un altro utente a sua scelta. TuTubi deve permettere ad un utente di iscriversi, pubblicare nuovi video, creare e modificare le sue playlist, ed esprimere valutazioni e commenti sui video che visiona. Inoltre, TuTubi deve consentire la ricerca di video: in particolare, data una categoria, un insieme di tag, ed un intero v tra 0 e 5, si vogliono ritornare tutti i video disponibili di quella categoria che posseggono almeno uno tra i tag indicati, e che abbiano una valutazione media di almeno v (se un video non ha ancora alcuna valutazione, deve essere ritornato comunque). TuTubi deve poi permettere di cercare, data una categoria, i video di quella categoria che hanno il numero maggiore di video in risposta, al fine di isolare le discussioni più animate tra gli utenti. La redazione di TuTubi ha infine la facoltà di censurare dei video, ad esempio perché di contenuto coperto da copyright, osceno, ecc. Un video censurato non può essere né visionato, né votato, né commentato, né aggiunto ad alcuna playlist, né ritornato come risultato di una ricerca. Un video, una volta censurato, non può tornare più visibile. Il motivo di una censura deve essere mantenuto nel sistema per usi interni. PC.20080401 (versione del 2 aprile 2008) pag. 2

1 Fase di Analisi 1.1 Diagramma degli Use Case PC.20080401 (versione del 2 aprile 2008) pag. 3

1.2 Diagramma delle classi Uml PC.20080401 (versione del 2 aprile 2008) pag. 4

1.3 Specifica dei tipi di dato Nessun tipo di dato definito 1.4 Specifica degli use case SpecificaUseCase Iscrizione iscrizione(nome:stringa): Utente post: result e un nuovo oggetto di classe Utente con - u.nome = nome e - u.dataiscr = oggi (istanza del tipo Data che denota la data corrente). SpecificaUseCase PubblicazioneVideo caricavideo(nomefilesucomputerutente:stringa): Stringa // spec. non richiesta pre: il file nomefilesucomputerutente esiste ed e un file video post: il file viene trasferito nel sistema. result e pari al nome della copia del file trasferito. calcoladurata(file):intero>0 // spec. non richiesta pre: file e il nome di un file video nell archivio del sistema post: result e pari alla durata del file file in secondi pubblicavideo(u:utente, titolo:stringa, desc:stringa, fileutente:stringa, c:categoria, instag: Insieme(Tag) ): Video pre: - le precondizioni di caricavideo(filelocale) sono soddisfatte (ovvero il trasferimento puo avvenire correttamente); - instag > 0. post: Detto nomefile = caricavideo(fileutente), result e un nuovo oggetto di classe Video tale che: - result.titolo = titolo; - result.durata = calcoladurata(nomefile); - result.desc = desc; - result.file = nomefile. Vengono inoltre creati i seguenti link: PC.20080401 (versione del 2 aprile 2008) pag. 5

- <u, result>:pubblicazione, con <u, result>.dataora = adesso (istanza del tipo DataOra che denota l istante corrente); - <result, c>:dicategora; - <result, t>:videotag, per ogni t in instag. pubblicavideoinrispostaa(u:utente, titolo:stringa, desc:stringa, fileutente:stringa, c:categoria, instag: Insieme(Tag), orig: Video) : Video pre: - le precondizioni di pubblicavideo(u, titolo, desc, fileutente, c, instag) sono soddisfatte; - orig e nello stato disponibile post: Detto v = pubblicavideo(u, titolo, desc, fileutente, c, instag), result e pari a v. Viene inoltre creato il link <orig:originale, v:risposta>:inrispostaa. SpecificaUseCase FruizioneVideo visiona(u:utente, v:video) pre: v e nello stato disponibile post: result e un nuovo oggetto di classe Visualizzazione con result.dataora = adesso. Vengono inoltre creati i link <u, result>:cronologia e <result,v>:videovis. commenta(u:utente, v:video, c:stringa): Commento pre: - esiste un oggetto vis:visualizzazione tale che <u,vis>:cronologia e <vis, v>:videovis (ovvero l utente u ha gia visionato il video v) - v e nello stato disponibile post: result e un nuovo oggetto di classe Commento tale che: - result.testo = c; - result.dataora = adesso; Vengono inoltre creati i link <u, result>:utentecommento e <result, v>:videocommento. vota(u:utente, v:video, voto:0..5) pre: - esiste un oggetto vis:visualizzazione tale che <u,vis>:cronologia e <vis, v>:videovis (ovvero l utente u ha gia visionato il video v), PC.20080401 (versione del 2 aprile 2008) pag. 6

- non esiste alcun link <u, v>: valuta (u non ha mai valutato v) - u!= v.pubblicazione.utente - v e nello stato disponibile post: Viene creato un nuovo link <u,v>:votazione con <u,v>.voto = voto. creaplaylist(u:utente, nome:stringa, pub:booleano): Playlist post: result e un nuovo oggetto di classe Playlist con: - result.nome = nome; - result.pubblica = pub; - result.data = oggi. Viene inoltre creato il link <u,result>: utenteplaylist aggiungivideoinplaylist(u:utente, p:playlist, v:video) pre: p.utenteplaylist = u, non esiste il link <p,v>:videoinplaylist, e v e nello stato disponibile post: Viene creato un nuovo link <p,v>:videoinplaylist con <p,v>.numord = pre(p.videoinplaylist) +1. eliminavideodaplaylist(u:utente, p:playlist, v:video) pre: p.utenteplaylist = u ed esiste il link <p,v>:videoinplaylist. post: Sia n = <p,v>.numord. - Viene eliminato il link <p,v>:videoinplaylist; - Per ogni link <p, v >:videoinplaylist con pre(<p,v >.numord) > n, si deve avere che <p,v >.numord = pre(<p,v >.numord)-1. cercavideo(cat:categoria, instag: Insieme(Tag), v:0..5): Insieme(Video) post: result = { v:video - <v,cat>:dicategoria, - v e nello stato disponibile, - se instag!= vuoto allora esiste t:instag tale che <v,t>:videotag, - le prec. di v.mediavoti() non sono soddisfatte oppure v.mediavoti() >= v } cercavideoconpiurisposte(cat:categoria):insieme(video) post: Detto V = {v:video <v, cat>:dicategoria e nello stato disponibile }, result = { v:video v in V ed inoltre per ogni v in V si ha che v.numrisposte() >= v.numrisposte() }. PC.20080401 (versione del 2 aprile 2008) pag. 7

SpecificaUseCase Censura censura(v: Video) post: viene generato l evento censura su v 1.5 Specifica delle classi e diagrammi degli stati e transizioni La classe Video SpecificaClasse Video numvisualizz(): intero >= 0 post: result = this.videovis. mediavoti(): reale [0..5] pre: this.votazione > 0 post: result = (Σ l:this.votazione l.voto) / this.votazione numrisposte(): intero >= 0 post: result = this.risposta. Gli oggetti della classe Video evolvono secondo il seguente diagramma degli stati e transizioni: PC.20080401 (versione del 2 aprile 2008) pag. 8

La classe Utente SpecificaClasse Utente playlistpubbliche(): Insieme(Playlist) post: result = { p:playlist <this,p>:utenteplaylist e p.pubblica=true }. PC.20080401 (versione del 2 aprile 2008) pag. 9