Università di Firenze, Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica - Prof.E.Vicario ingegneria del software PROVA SCRITTA - prima parte 4 febbraio 204 (0 punti - 20 minuti) Si descriva la struttura dei patterns Proxy, Decorator, e Composite, e si descriva la struttura dell'object diagram che essi sottendono. For correction, see: "Design Patterns " by the GOF + lecture slides. 2 (0 punti - 20 minuti) Si illustri e si esemplifichi attraverso frammenti di codice il modo con cui è possibile implementare la condizione di singleton attraverso l'uso congiunto di costruttore privato e campi statici. For correction, see: "Effective Java" by J.Bloch, item 2 (in the first edition) "Enforce the singleton property with a private constructor" + lecture slides on effective Java + page on "defensive copying" at javapractices.com. 3 (0 punti - 20 minuti) Si illustrino le caratteristiche salienti del modello di sviluppo a V. For correction, see: lecture slides on SW lifecycles.
Università di Firenze, Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica - Prof.E.Vicario ingegneria del software PROVA SCRITTA - seconda parte 4 febbraio 204 4 (30 punti - 60 minuti) Si consideri la (verosimile) descrizione dell'organizzazione di un Ateneo che è descritta di seguito. Se ne dia rappresentazione in un modello concettuale nella forma di class diagram che catturi le classi di maggiore rilevanza. Si proponga quindi una rappresentazione nella forma del pattern accountability, discutendo quali sono i tipi di Party e i tipi di Accountability che occorre rappresentare, e indicando quali oggetti vengono creati o modificati a seguito delle seguenti operazioni: un nuovo docente viene arruolato e afferisce a un Dipartimento un docente viene incaricato di un insegnamento in un corso di laurea un nuovo insegnamento viene acceso all'interno di un corso di laurea un dipartimento elegge la sua commissione di indirizzo e autovalutazione un dipartimento costituisce una nuova commissione incaricata della gestione dei locali
Un Ateneo è organizzato primariamente in Dipartimenti, con varie strutture secondarie che sono le Scuole, i Centri di ricerca, le Unità di Ricerca, e vari centri di servizio amministrativo e tecnico e con altre strutture di governo che sono il Rettore, i prorettori, il Senato Accademico, il Consiglio di Amministrazione. Ciascun docente appartiene a un Settore Scientifico Disciplinare e afferisce a un unico dipartimento (e.g. Enrico Vicario appartiene al settore IngInf05 e afferisce al DIpartimento di Ingegneria dell'informazione). I docenti di uno stesso settore scientifico disciplinare di norma afferiscono tutti allo stesso dipartimento (e.g. IngInf05 per intero è nel Dipartimento di Ingegneria dell'informazione) o a due Dipartimenti diversi (e.g. Inf0 è sia nel Dipartimento di Statistica e Informatica che nel dipartimento di Matematica e Informatica), di modo tale che per ciascun settore disciplinare sono identificati uno o due dipartimenti referenti. Il Dipartimento ha un direttore, una giunta, una Commissione di Indirizzo e Autovalutazione, e può avere altre commissioni tra cui tipicamente una Commissione Ricerca e una Commissione Didattica. Ciascuna di queste strutture è costituita da docenti che afferiscono al dipartimento. I Dipartimenti sono raggruppati in aree (e.g. i dipartimenti dell'ingegneria, con quelli dell'agraria e Architettura costituiscono l'area tecnologica). La Scuola coordina i corsi di laurea triennale o magistrale in un'area omogenea (e.g. la Scuola di Ingegneria comprende le lauree in Ingegneria Informatica, Ing.Elettronica e delle Telecomunicazioni, Ingegneria Meccanica, Ingegneria Civile, e varie altre lauree di livello magistrale). Ciascun corso di laurea è costituito da un insieme di insegnamenti, ciascuno associato a un settore scientifico disciplinare (e.g. Ingegneria del Software nella laurea in Ingegneria Informatica è associato al settore IngInf05) e assegnato a un docente, che di norma appartiene a quel settore. Questo definisce una relazione di contribuzione fra un dipartimento e una scuola nella misura in cui a docenti del dipartimento sono assegnati insegnamenti in corsi di laurea della scuola. In questo può avvenire che un dipartimento contribuisce a più scuole (e.g. il dipartimento di Matematica e Informatica contribuisce alla scuola in Ingegneria e anche alla Scuola in Scienze Matematiche Fisiche e Naturali). Il Corso di laurea ha un presidente, una giunta costituita da docenti incaricati di corsi nel corso di laurea, e un consiglio costituito da tutti i docenti incaricati di almeno un insegnament nel corso di laurea. La scuola ha un direttore e una giunta formata da docenti incaricati di insegnamenti nei corsi di laurea e membri della giunta di un dipartimento che contribuisce alla scuola. Uno studente è iscritto a un corso di laurea, e quindi è associato a una scuola. Le unità di personale tecnico o amministrativo possono essere assegnati a dipartimenti oppure a centri di servizio amministrativo e tecnico, spesso articolati in specifici uffici. Un Centro di ricerca collega docenti afferenti a più dipartimenti. Ha un Direttore, un consiglio scientifico, e un insieme di docenti afferenti. Un'unità di ricerca è costituita da docenti afferenti a una molteplicità di dipartimenti, che cooperano nel perseguimento di specifici obiettivi scientifici che richiedono integrazione mult-disciplinare. Il Rettore è un docente dell'ateneo, eletto. I prorettori sono docenti dell'ateneo nominati dal Rettore. Il Senato Accademico è composto da 0 Direttori di Dipartimento, due per area, eletti dai Direttori stessi, e da 0 ulteriori docenti eletti due per area da tutti i docenti. Il Consiglio di Amministrazione è composto da 5 docenti eletti nel corpo accademico, dal Rettore, e da 3 membri esterni nominati dal Senato Acacdemico. Il Direttore Generale è un soggetto esterno all'ateneo, nominato dal Rettore sentito il parere del Senato Accademico.
4. Traccia soluzione: identificazione delle classi Un Ateneo è organizzato primariamente in Dipartimenti, con varie strutture secondarie che sono le Scuole, i Centri di ricerca, le Unità di Ricerca, e vari centri di servizio amministrativo e tecnico e con altre strutture di governo che sono il Rettore, i prorettori, il Senato Accademico, il Consiglio di Amministrazione. Ciascun docente appartiene a un Settore Scientifico Disciplinare e afferisce a un unico dipartimento (e.g. Enrico Vicario appartiene al settore IngInf05 e afferisce al DIpartimento di Ingegneria dell'informazione). I docenti di uno stesso settore scientifico disciplinare di norma afferiscono tutti allo stesso dipartimento (e.g. IngInf05 per intero è nel Dipartimento di Ingegneria dell'informazione) o a due Dipartimenti diversi (e.g. Inf0 è sia nel Dipartimento di Statistica e Informatica che nel dipartimento di Matematica e Informatica), di modo tale che per ciascun settore disciplinare sono identificati uno o due dipartimenti referenti. Il Dipartimento ha un direttore, una giunta, una Commissione di Indirizzo e Autovalutazione, e può avere altre commissioni tra cui tipicamente una Commissione Ricerca e una Commissione Didattica. Ciascuna di queste strutture è costituita da docenti che afferiscono al dipartimento. I Dipartimenti sono raggruppati in aree (e.g. i dipartimenti dell'ingegneria, con quelli dell'agraria e Architettura costituiscono l'area tecnologica). La Scuola coordina i corsi di laurea triennale o magistrale in un'area omogenea (e.g. la Scuola di Ingegneria comprende le lauree in Ingegneria Informatica, Ing.Elettronica e delle Telecomunicazioni, Ingegneria Meccanica, Ingegneria Civile, e varie altre lauree di livello magistrale). Ciascun corso di laurea è costituito da un insieme di insegnamenti, ciascuno associato a un settore scientifico disciplinare (e.g. Ingegneria del Software nella laurea in Ingegneria Informatica è associato al settore IngInf05) e assegnato a un docente, che di norma appartiene a quel settore. Questo definisce una relazione di contribuzione fra un dipartimento e una scuola nella misura in cui a docenti del dipartimento sono assegnati insegnamenti in corsi di laurea della scuola. In questo può avvenire che un dipartimento contribuisce a più scuole (e.g. il dipartimento di Matematica e Informatica contribuisce alla scuola in Ingegneria e anche alla Scuola in Scienze Matematiche Fisiche e Naturali). Il Corso di laurea ha un presidente, una giunta costituita da docenti incaricati di corsi nel corso di laurea, e un consiglio costituito da tutti i docenti incaricati di almeno un insegnament nel corso di laurea. La scuola ha un direttore e una giunta formata da docenti incaricati di insegnamenti nei corsi di laurea e membri della giunta di un dipartimento che contribuisce alla scuola. Uno studente è iscritto a un corso di laurea, e quindi è associato a una scuola. Le unità di personale tecnico o amministrativo possono essere assegnati a dipartimenti oppure a centri di servizio amministrativo e tecnico, spesso articolati in specifici uffici. Un Centro di ricerca collega docenti afferenti a più dipartimenti. Ha un Direttore, un consiglio scientifico, e un insieme di docenti afferenti. Un'unità di ricerca è costituita da docenti afferenti a una molteplicità di dipartimenti, che cooperano nel perseguimento di specifici obiettivi scientifici che richiedono integrazione mult-disciplinare. Il Rettore è un docente dell'ateneo, eletto. I prorettori sono docenti dell'ateneo nominati dal Rettore. Il Senato Accademico è composto da 0 Direttori di Dipartimento, due per area, eletti dai Direttori stessi, e da 0 ulteriori docenti eletti due per area da tutti i docenti. Il Consiglio di Amministrazione è composto da 5 docenti eletti nel corpo accademico, dal Rettore, e da 3 membri esterni nominati dal Senato Accademico. Il Direttore Generale è un soggetto esterno all'ateneo, nominato dal Rettore sentito il parere del Senato Accademico.
4.2 Traccia soluzione: class diagram (giusto un draft, prodotto in 20 minuti) ConsiglioScuola GiuntaScuola PersonaleTA UnitàAmministrativa CollectionScuola DirettoreScuola Scuola CentroServizio Dipartimento afferisce Docente Insegnamento +Direttore SSD CorsoDiLaurea Giunta CIA CollectionDip Rettore Studente AltraCommissione ProRettore ConsiglioDiAmministrazione SenatoAccademico DirettoreGenerale Esterno TBD: qui ci starebbe bene un po' di testo di descrizione che guidasse la lettura a partire dalle classi che più caratterizzano il problema. TBD: potrebbe stare bene anche una discussione o almeno menzione dei limiti del modello che non sono stati risolti nel tempo disponibile. E.g.: la relazione tra Docente e Rettore (e analogamnte fra Docente e ProRettore e DirettoreScuola) è una relazione di estensione o potrebbe più convenientemente essere una composizione? Il Direttore del Dipartimento non richiede ulteriori informazioni oltre quelle associate a un Docente? Perché questo è invece fatto per il Direttore della Scuola?
4.3 Traccia soluzione: Accountability model (giusto una traccia) suggerimento di metodo: identifica PartyTypes e AccountabilityTypes PartyTypes: Dipartimento; Docente; Scuola; Studente; SSD; CorsoDiLaurea; Studente,... Rettore;... DirettoreScuola;... CommissioneIndirizzoAutovalutazione;... AccountabilityTypes: Studente iscritto a CorsoDiLaurea; Docente afferisce a Dipartiemnto; Docente fa parte di SenatoAccademico; DOcente fa parte di Commissione; Docente ricopre il ruolo di Rettore;... suggerimento di metodo: crea subtypes di Party dove necessario per i Party che richiedono una specifica struttura di informazione crea un subtype di Party (e.g. Studente potrebbe avere una descrizione diversa rispetto a Docente, e di sicuro ha una diversa struttura rispetto a Dipartimento). Nel fare questo si può evitare di avere un subtype per ogni Party e usare lo stesso per più Parties (e.g. la descrizione di diverse aggregazioni come SenatoAccademico, CommissioneIndirizzoAutovalutazione, Giunta,...) suggerimento di metodo: usa altre estensioni del pattern a seconda del caso il concetto di TimePeriod qui è perfetto per descrivere l'anno Accademico in cui un Docente riveste un ruolo! un modello (molto tirato via): AccountabilityType * +commissioners..* PartyType * +responsibles..* AnnoAccademico * * Accountability * +commissioner * +responsible * Party Dipartimento CentroRicerca SSD Scuola Ruolo Persona AggregazioneDocenti CorsoDiLaurea Rettore PersonaleTA SenatoAccademico ProRettore Docente GiuntaDipartimento DirettoreDipartimento Esterno CIA DirettoreScuola Studente TBD: qui andrebbe spiegato quali oggetti vengono creati e con quali valori e riferimenti per realizzare ciascuna delle operazioni menzionate. E.g. Un Dipartimento costituisce una nuova commissione si realizza con: una nuova istanza di PartyType che assume valore nuovacommissione, un numero di istanze dell'accountabilitytype che rappresenta l'appartenenza di un Docente a una Aggregazione... Un object diagram potrebbe illustrare bene il concetto per alcuni esempi.