Corso di Progettazione del Software

Documenti analoghi
Corso di Progettazione del Software

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

Progettazione del Software

Progettazione del Software

Progettazione del Software

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

Progetto E versione del 12 marzo 2007

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

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

Progettazione del Software Analisi

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

Progettazione del Software

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

Progettazione del Software

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

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

Corso di Progettazione del Software

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

1 Catena di officine, versione 2

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

Corso di Progettazione del Software

Progetto E versione del 12 marzo 2007

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

Corso di Progettazione del Software

La fase di progetto e realizzazione. PROGETTAZIONE DEL SOFTWARE (Ing. Gestionale) Diagramma delle classi realizzativo

Diagramma delle classi UML. Diagramma e specifica degli use case. Specifica delel classi del diagramma

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

Diagramma delle classi UML

Progettazione del Software

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

Università di Roma La Sapienza Facoltà di Ingegneria

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

Diagramma delle classi UML

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

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

//UML-class-diagram.txt. entrambe Molo e PostoBarca hanno responsabilità su contiene. solo PostoBarca ha responsabilità su assegnato, e

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

Esercitazione 3. Vincoli di integrità. Approccio Procedurale

Progettazione del Software

Progettazione del Software

Fase di Analisi Class Diagram. Esercizi

Corso di Progettazione del Software

Interfacce. Esempio: interfaccia I con una sola funzione g() public interface I {

Obiettivi dell esercitazione. Requisiti (cont.) Requisiti. Università di Roma La Sapienza A.A Facoltà di Ingegneria Sede di Latina

Fasi del ciclo di vita del software (riassunto) Progetto: generalità. Progetto e realizzazione (riassunto)

Corso di Informatica

Progettazione del Software Anno Accademico 2007/08

Sapienza - Università di Roma Facoltà di Ingegneria dell Informazione Corso di Laurea in Ingegneria Informatica

Fasi del ciclo di vita del software (riassunto)

Fasi del ciclo di vita del software (riassunto) Progetto: generalità. Progetto e realizzazione (riassunto)

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

Progettazione del Software, Laurea in Ingegneria Gestionale Progettazione del Software Laurea in Ing. Gestionale

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

Basi di Dati. Progettazione Logica

UML2. Attività di Progettazione. Andrea Polini. Laboratorio di Ingegneria del Software Corso di Laurea in Informatica L-31 Università di Camerino

JAVA GENERICS. Angelo Di Iorio Università di Bologna

Corso di Fondamenti di Informatica I

Ereditarietà e Polimorfismo

Prova di esame del 19 giugno 2017

Basi di Dati. La Progettazione Logica. Sommario. Il Processo di Progetto della BD. Algoritmo di Progettazione Logica

Alessandra Raffaetà. La costruzione di una base di dati

Basi di Dati. Modello Concettuale

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

Strutture dati. Il che cosa e il come. F. Damiani - Alg. & Lab. 04/05

Progettazione del Software A.A.2008/09

Corso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I)

Progettazione del Software

La fase di realizzazione

Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo

Politecnico di Milano Ingegneria del Software a.a. 2008/09

Fondamenti di Informatica T-1

SOMMARIO DIAGRAMMI DELLE CLASSI E DEGLI OGGETTI INGEGNERIA DEL SOFTWARE. Introduzione. Proprietà e Operazioni. Proprietà e Operazioni

Ereditarietà: concetti di base

Progettazione del Software

Esempi di programmi. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa E01. A. Miola Settembre 2007

Riuso di classi. Ereditarietà. Ereditarietà. Spesso si ha bisogno di classi simili

Fase di Analisi Class Diagram. Esercizi

Corso di Progettazione del Software

INSEGNAMENTO DI INGEGNERIA DEL SOFTWARE B (5 CFU) CORSO DI LAUREA SPECIALISTICA IN INGEGNERIA INFORMATICA a.a

Fondamenti di Informatica T-1

Progettazione del Software

Progetto PC versione del 11 luglio 2007

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

3.1. CorsodiElementidiBasididati Il modello Entita Relazione (72) vendita ordine studente. Impiegato. Dipartimento. città. Città.

S.I.T. PER LA VALUTAZIONE E GESTIONE DEL TERRITORIO Corso di Laurea Magistrale in Scienze Ambientali. Alessandra Raffaetà

Esercitazioni di Progettazione del Software. Esercitazione (Prova al calcolatore del 17 settembre 2010)

Preparazione allo scritto di Programmazione Comunicazione Digitale / Informatica - A.A. 2012/2013

Laboratorio di Basi di Dati IV esercitazione 17 aprile 2007

IL MODELLO RELAZIONALE

Progettazione del Software

Programmazione I - Preparazione A.A. 2010/2011

Vincoli. In ogni schema E/R sono presenti dei vincoli Alcuni sono impliciti, in quanto dipendono dalla semantica stessa dei costrutti del modello:

18 - Vettori. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Catia Trubiani. Laboratorio di Ingegneria del Software a.a

Altri Esercizi. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica. Dispensa E17. C. Limongelli Maggio 2012

SAPIENZA Università di Roma, Facoltà di Ingegneria

Altri Esercizi. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2. Dispensa E09. C. Limongelli Marzo 2008

CLASS DIAGRAM PARTE 1

Transcript:

T. Mancini & M. Scannapieco E.P.1 Segreteria Studenti (SOLUZIONE) February 25, 2008 p. 1/20 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 Dipartimento di Informatica e Sistemistica Università di Roma La Sapienza E.P.1 Segreteria Studenti (SOLUZIONE) versione del February 25, 2008

T. Mancini & M. Scannapieco E.P.1 Segreteria Studenti (SOLUZIONE) February 25, 2008 p. 2/20 Segreteria studenti: Requisiti L applicazione è relativa alla gestione di una segreteria studenti di un università. Quando gli studenti si iscrivono, vengono loro assegnati una matricola ed un numero di esami da fare. Successivamente decidono il proprio piano di studi, ovvero scelgono un corso (di cui interessa codice e nome) come loro i-mo esame (1 i numesami). La scelta del piano di studi può avvenire anche un solo esame alla volta. Gli studenti possono sostenere esami (solamente se sono nel loro piano di studi). Esistono tre categorie di studenti completamente disgiunte fra loro: regolari, stranieri e lavoratori. Degli stranieri interessa il paese di origine, mentre dei lavoratori interessa sapere da quanti anni lavorano. Infine, se uno studente ha sostenuto almeno una certa percentuale del numero di esami, relativamente al numero di quelli previsti in quel momento dal suo piano di studi, viene classificato come studente modello e può concorrere a prendere una borsa di studio. Suddetta percentuale dipende dalla tipologia dello studente: 100% per gli studenti regolari, 50% per quelli lavoratori, 70% per gli stranieri. La segreteria studenti, come cliente della nostra applicazione, deve poter effettuare delle operazioni sugli studenti. In particolare si faccia riferimento al seguente use-case: dato un insieme S di studenti, al fine di scegliere i destinatari delle borse di studio, si vuole ottenere l insieme di studenti in S tali che: (i) sono studenti modello e (ii) hanno la media più alta tra tutti gli altri studenti modello in S della loro categoria (regolare, straniero, lavoratore). Si noti che, per ogni categoria, vi possono essere diversi studenti con la media più alta (ovviamente la stessa).

T. Mancini & M. Scannapieco E.P.1 Segreteria Studenti (SOLUZIONE) February 25, 2008 p. 3/20 Fase di Analisi

Diagramma degli use case T. Mancini & M. Scannapieco E.P.1 Segreteria Studenti (SOLUZIONE) February 25, 2008 p. 4/20

Diagramma delle classi T. Mancini & M. Scannapieco E.P.1 Segreteria Studenti (SOLUZIONE) February 25, 2008 p. 5/20

T. Mancini & M. Scannapieco E.P.1 Segreteria Studenti (SOLUZIONE) February 25, 2008 p. 6/20 Specifica dello use case InizioSpecificaUseCase AssegnazioneBorse FineSpecifica (S : Insieme(Studente)): Insieme(Studente) pre: nessuna scegliborsisti post: L insieme result S conterrà tutti e soli gli studenti s S tali che: s.studentemodello() = true; Per ogni altro studente s S tale che s è della stessa classe più specifica di s e s.studentemodello() = true, si ha che s.media() s.media().

T. Mancini & M. Scannapieco E.P.1 Segreteria Studenti (SOLUZIONE) February 25, 2008 p. 7/20 Specifica delle classi InizioSpecificaClasse Studente FineSpecifica (): booleano pre: nessuna studentemodello post: result è pari a true se e solo se this.sostenuto / this.pianodistudi x (con this.sostenuto e this.pianodistudi l insieme dei link di tipo, rispettivamente, sostenuto e pianodistudi relativi allo studente this). Il valore x dipende dalla sottoclasse di Studente alla quale appartiene this. media (): reale >= 0 pre: this.sostenuto 1; post: result è pari a Σ l this.sostenuto (l.voto) / this.sostenuto.

T. Mancini & M. Scannapieco E.P.1 Segreteria Studenti (SOLUZIONE) February 25, 2008 p. 8/20 Specifica delle classi (cont.) InizioSpecificaClasse Regolare is-a Studente FineSpecifica (): booleano pre: nessuna studentemodello post: Quelle di Studente.studenteModello() con x = 1. InizioSpecificaClasse Straniero is-a Studente FineSpecifica (): boolean pre: nessuna studentemodello post: Quelle di Studente.studenteModello() con x = 0.7. InizioSpecificaClasse Lavoratore is-a Studente FineSpecifica (): boolean pre: nessuna studentemodello post: Quelle di Studente.studenteModello() con x = 0.5.

T. Mancini & M. Scannapieco E.P.1 Segreteria Studenti (SOLUZIONE) February 25, 2008 p. 9/20 Fase di Progetto

T. Mancini & M. Scannapieco E.P.1 Segreteria Studenti (SOLUZIONE) February 25, 2008 p. 10/20 Corrispondenza tra tipi UML e tipi Java Tipo UML Tipo Java Note Stringa String intero > 0 int Verifica ammissibilita sul lato server 18..31 int Verifica ammissibilita sul lato server booleano boolean reale >= 0 double (occorre solo come tipo di ritorno di operazioni) Insieme(... ) HashSet<... > Implementa l interf. Set Disponibile

T. Mancini & M. Scannapieco E.P.1 Segreteria Studenti (SOLUZIONE) February 25, 2008 p. 11/20 Ristrutturazione gerarchie is-a La gerarchia avente come classe base Studente è disjoint e complete. Quindi: La classe Studente sarà dichiarata abstract Le classi Regolare, Straniero e Lavoratore deriveranno dalla classe Studente.

T. Mancini & M. Scannapieco E.P.1 Segreteria Studenti (SOLUZIONE) February 25, 2008 p. 12/20 Specifiche realizzative delle classi SpecificaClasse Studente (abstract) +abstract studentemodello() : boolean (si noti il + : e pubblica) +media() : double pre: cf. spec. concettuale algoritmo: ovvio, cf. spec. concettuale FineSpecifica SpecificaClasse Regolare is-a Studente +studentemodello() : boolean pre: nessuna algoritmo: ovvio, cf. spec concettuale FineSpecifica (analogamente per Lavoratore e Straniero)

T. Mancini & M. Scannapieco E.P.1 Segreteria Studenti (SOLUZIONE) February 25, 2008 p. 13/20 Progetto migliore per studentemodello() Dalle specifiche concettuali, si può notare come, sebbene il comportamento dell operazione studentemodello() dipenda dalla sottoclasse a cui this appartiene, si possa, a meno del valore del parametro x, scrivere l algoritmo a livello della classe Studente (e quindi evitare duplicazioni di codice, favorendo il riuso, e aumentando la coesione). La specifica diventa la seguente: SpecificaClasse Studente (abstract) +abstract studentemodello(): boolean #studentemodello(double x) : boolean (funzione di supporto. Si noti pre: nessuna il # : e protetta!) algoritmo: result = ( this.sostenuto / this.pianodistudi >= x ) +media() : double... (come sopra) FineSpecifica SpecificaClasse Regolare is-a Studente +studentemodello() : boolean pre: nessuna algoritmo: result = super.studentemodello(1.0) (invoco la funzione di supporto definita nella classe Studente fisssando il parametro) FineSpecifica

T. Mancini & M. Scannapieco E.P.1 Segreteria Studenti (SOLUZIONE) February 25, 2008 p. 14/20 Specifica realizzativa dello use-case SpecificaRealizzativaUseCase AssegnazioneBorse +scegliborsisti(s: Set<Studente>) : Set<Studente> pre: nessuna algoritmo: result = insieme vuoto; per ogni s in S { se s.studentemodello()=true allora sia MM il valore della media piu alta fin ora incontrat per studenti della stessa classe piu specifica di s (alla prima iterazione, sia MM=-1). se s.media() = MM allora result = result U s; altrimenti, se s.media() > MM allora aggiorna il valore di MM portandolo ad s.media(); togli da result tutti gli elementi della stessa classe di s; result = result U s; (se s.media < MM, non fare nulla) } ritorna result; FineSpecifica

T. Mancini & M. Scannapieco E.P.1 Segreteria Studenti (SOLUZIONE) February 25, 2008 p. 15/20 Nota: scegliborsisti() Nel caso avessimo scelto di non usare le interfacce generics del Java Collections Framework, avremmo avuto la seguente specifica realizzativa dell operazione scegliborsisti(): +scegliborsisti(s: Set) : Set pre: gli elementi di S sono istanze della classe Studente (cf. spec. concettuale, dove pre: nessuna, ma il tipo di S e Insieme(Studente)!!) algoritmo:...

T. Mancini & M. Scannapieco E.P.1 Segreteria Studenti (SOLUZIONE) February 25, 2008 p. 16/20 Gestione proprietà loc. e glob. d. classi Classe Studente Classe Straniero matricola: immutabile, nota alla nascita numesamiinpiano: immutabile, non noto alla nascita paese: immutabile, noto alla nascita Classe Lavoratore Classe Corso annoiniziolavoro: immutabile, noto alla nascita nome: mutabile, noto alla nascita codice: immutabile, noto alla nascita Associazione PianoDiStudi numordine: mutabile, noto alla nascita Associazione Sostenuto voto: immutabile, noto alla nascita Nota: E sufficiente esplicitare queste decisioni nel diagramma realizzativo delle classi!

T. Mancini & M. Scannapieco E.P.1 Segreteria Studenti (SOLUZIONE) February 25, 2008 p. 17/20 Vincoli sull evoluz. d. propr. mutabili Il valore delle proprietà mutabili può variare arbitrariamente, tranne che per le seguenti: Associazione PianoDiStudio: un link s : Studente, c : Corso con s, c.numordine = i può essere creato solo se tutte le seguenti condizioni sono verificate: Non esiste già un link s, c, con c Corso per cui s, c.numordine = i; Se i > 1, esiste già un link s, c, con c Corso per cui s, c.numordine = i 1; i s.numesami; (cf. i commenti nel diagramma concettuale delle classi) Inoltre: Un link s : Studente, c : Corso di associazione PianoDiStudio può essere cancellato solo se non esiste alcun link s, c di associazione Sostenuto (vincolo di subset, cf. diagramma concettuale delle classi); In caso di cancellazione di un link s : Studente, c : Corso con s, c.numordine = i di associazione PianoDiStudio, per tutti i link s, c di associazione PianoDiStudio con c Corso e s, c.numordine = j > i, il valore j dell attributo numordine va sostituito con j 1. Associazione Sostenuto: un link s : Studente, c : Corso può essere creato solo se esiste già un link s, c di associazione PianoDiStudio (vincolo di subset ). Inoltre, i link di associazione Sostenuto non possono essere cancellati.

T. Mancini & M. Scannapieco E.P.1 Segreteria Studenti (SOLUZIONE) February 25, 2008 p. 18/20 Progetto dei diagrammi degli stati Non sono stati isolati diagrammi degli stati in fase di Analisi.

T. Mancini & M. Scannapieco E.P.1 Segreteria Studenti (SOLUZIONE) February 25, 2008 p. 19/20 Responsabilità sulle associazioni Dai requisiti, dalla specifica delle operazioni di classi e di use case, e delle molteplicità nel diagramma delle classi emerge che: Associazione Classe Ha resp? Motivo PianoDiStudi Studente SI Studente.studenteModello() Corso NO Sostenuto Studente SI Studente.studenteModello()/media() Corso NO

Diagramma delle classi realizzativo T. Mancini & M. Scannapieco E.P.1 Segreteria Studenti (SOLUZIONE) February 25, 2008 p. 20/20