Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli

Paniere INGEGNERIA DEL SOFTWARE prof. Vetrella Sergio, Panieri di Ingegneria del Software

Paniere 2022 corretto con risposte chiuse di INGEGNERIA DEL SOFTWARE prof. Vetrella Sergio

Tipologia: Panieri

2021/2022

In vendita dal 21/07/2022

k_campus
k_campus 🇮🇹

4.5

(5646)

347 documenti

1 / 57

Toggle sidebar

Spesso scaricati insieme


Documenti correlati


Anteprima parziale del testo

Scarica Paniere INGEGNERIA DEL SOFTWARE prof. Vetrella Sergio e più Panieri in PDF di Ingegneria del Software solo su Docsity! Set Domande INGEGNERIA DEL SOFTWARE INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04) Docente: Vetrella Sergio Generato il 21/02/2022 18:53:25 N° Domande Aperte 166 N° Domande Chiuse 190 Indice Indice Lezioni ............................................................................................................................... p. 2 Lezione 002 ............................................................................................................................. p. 4 Lezione 003 ............................................................................................................................. p. 5 Lezione 004 ............................................................................................................................. p. 6 Lezione 005 ............................................................................................................................. p. 9 Lezione 006 ............................................................................................................................. p. 11 Lezione 007 ............................................................................................................................. p. 12 Lezione 008 ............................................................................................................................. p. 14 Lezione 009 ............................................................................................................................. p. 16 Lezione 010 ............................................................................................................................. p. 17 Lezione 011 ............................................................................................................................. p. 19 Lezione 012 ............................................................................................................................. p. 21 Lezione 013 ............................................................................................................................. p. 22 Lezione 014 ............................................................................................................................. p. 23 Lezione 017 ............................................................................................................................. p. 24 Lezione 018 ............................................................................................................................. p. 25 Lezione 019 ............................................................................................................................. p. 26 Lezione 020 ............................................................................................................................. p. 28 Lezione 021 ............................................................................................................................. p. 29 Lezione 022 ............................................................................................................................. p. 31 Lezione 023 ............................................................................................................................. p. 34 Lezione 024 ............................................................................................................................. p. 35 Lezione 025 ............................................................................................................................. p. 36 Lezione 026 ............................................................................................................................. p. 38 Lezione 027 ............................................................................................................................. p. 40 Lezione 028 ............................................................................................................................. p. 41 Lezione 029 ............................................................................................................................. p. 42 Lezione 030 ............................................................................................................................. p. 44 Lezione 031 ............................................................................................................................. p. 45 Lezione 032 ............................................................................................................................. p. 46 Lezione 033 ............................................................................................................................. p. 47 Lezione 034 ............................................................................................................................. p. 49 Lezione 035 ............................................................................................................................. p. 51 Lezione 036 ............................................................................................................................. p. 52 Lezione 037 ............................................................................................................................. p. 53 Lezione 038 ............................................................................................................................. p. 56 Lezione 039 ............................................................................................................................. p. 57 Per consentire agli utenti di contribuire alla validazione del modello a oggetti del system design, questo viene rappresentato in una notazione a loro facilmente comprensibile. La fase di object design ha lo scopo di colmare la distanza tra il modello dell'analisi e la piattaforma hw/sw identificata nella fase di elicitazione dei requisiti. Le tipologie di attore sono tre: l'utente, il committente e lo sviluppatore. momento la definizione dell'interfaccia utente. I casi d'uso prodotti nella fase di elicitazione dei requisiti vengono tradotti in un modello relazionale che descrive la struttura delle classi del sistema, ma trascura per il Durante il testing gli utenti cercano differenze tra il sistema e i suoi modelli, eseguendo il sistema con campioni di dati di output. Lezione 003 01. In merito all'attività di progettazione del sistema, una delle affermazioni seguenti non è corretta. Quale? Durante il system design gli sviluppatori definiscono gli obiettivi del design e decompongono il sistema in sottosistemi più piccoli. Durante il system design vengono selezionati il database management system e il controllo di flusso globale. Durante il system design vengono selezionate la piattaforma hw/sw e le politiche di accesso. 02. In merito all'attività di progettazione degli oggetti, una delle affermazioni seguenti non è corretta. Quale? Durante l'object design gli sviluppatori definiscono gli oggetti del dominio delle soluzioni. L'attività di object design include la selezione di componenti riusabili. L'attività di object design include la descrizione precisa degli oggetti e delle interfacce dei sottosistemi. 03. In merito all'attività di elicitazione dei requisiti, una delle affermazioni seguenti non è corretta. Quale? Il risultato dell'attività di elicitazione dei requisiti è una descrizione del sistema in termini di attori e casi d'uso. I casi d'uso sono sequenze generali di eventi che descrivono tutte le possibili interazioni col sistema per una data funzionalità. Durante l'elicitazione dei requisiti il cliente e gli sviluppatori definiscono lo scopo del sistema. 04. In merito all'attività di analisi dei requisiti, una delle affermazioni seguenti non è corretta. Quale? Durante l'analisi gli sviluppatori producono un modello del sistema che sia corretto, completo, consistente e non ambiguo. Il risultato è un modello del sistema annotato con attributi, operazioni e associazioni, e descritto in termini sia strutturali che dinamici. Eventuali ambiguità e inconsistenze nei casi d'uso vengono risolte con la collaborazione dell'utente. 05. Il ruolo di manager di un progetto di sviluppo software richiede lo svolgimento di numerose attività. Quale, tra quelle elencate di seguito, è considerata la più critica, e richiede in genere il maggiore investimento di tempo? La gestione del rationale. Il monitoraggio dello stato di avanzamento del progetto. La gestione della configurazione software. 06. In merito all'attività di validazione (testing), una delle affermazioni seguenti non è corretta. Quale? Durante i test di integrazione i sottosistemi sono aggregati e confrontati con il modello del system design. Durante lo unit testing gli sviluppatori confrontano il modello dell'object design con ogni oggetto e sottosistema. Durante il system testing il sistema viene eseguito con casi tipici ed eccezioni e confrontato col modello dei requisiti. Il coordinamento delle comunicazioni tra i partecipanti del gruppo di lavoro. Modello dinamico Lezione 004 01. Nel seguito sono elencate alcune possibili caratteristiche della notazione adottata in un progetto. Solo tre di queste caratteristiche sono indicate, nella lezione 4, come indispensabili. Qual è l'intrusa? La notazione deve essere ben compresa dai partecipanti al progetto. La notazione deve essere adeguata a rappresentare aspetti specifici del sistema. La notazione deve avere una semantica ben definita. 02. Il diagramma che segue descrive, in termini introduttivi, la fase di analisi dei requisiti: Che etichetta deve essere specificata nel box con il punto interrogativo? Casi di test Modello delle classi Modello dinamico 03. Il diagramma seguente descrive in termini introduttivi la fase di system design: Che etichetta deve essere inserita nel box con il punto interrogativo? Elicitazione dei requisiti Casi di test Casi d'uso Casi d'uso La notazione deve essere direttamente traducibile nel linguaggio di programmazione adottato nel progetto. punto di vista dello sviluppatore. I casi d'uso sono utili nelle fasi di elicitazione dei requisiti e di analisi per rappresentare le funzionalità del sistema. Essi mettono a fuoco il comportamento del sistema dal I diagrammi degli stati sono rappresentati mediante grafi diretti aciclici (DAG). 04. Il diagramma che segue descrive in termini introduttivi la fase di object design: Che etichetta deve essere inserita nel box con il punto interrogativo? Casi di test Modello dinamico Casi d'uso 05. In merito al modello dinamico, una delle affermazioni che seguono non è corretta. Quale? I diagrammi di interazione descrivono il comportamento interno del sistema come una sequenza di messaggi scambiati tra un insieme di oggetti. I diagrammi di attività descrivono il comportamento in termini di flussi di controllo e di flussi dei dati. I diagrammi di stato descrivono il comportamento nei termini degli stati che oggetti individuali possono assumere, e delle transizioni tra tali stati. 06. In merito ai diagrammi UML dei casi d'uso, una delle affermazioni che seguono non è corretta. Quale? L'identificazione di attori e casi d'uso ha come effetto la delimitazione dei confini del sistema. Un attore descrive un'entità che interagisce col sistema: un utente, un altro sistema, l'ambiente fisico in cui il sistema si trova ecc. Un caso d'uso descrive una funzione che, offerta dal sistema, produce un risultato visibile per un attore. 07. In merito ai diagrammi UML delle classi, una delle affermazioni che seguono non è corretta. Quale? I diagrammi delle classi descrivono il sistema in termini di oggetti, classi, attributi, operazioni e associazioni. Un oggetto è dotato di uno stato, che include i valori dei suoi attributi e i collegamenti (link) con altri oggetti. I diagrammi delle classi sono usati per descrivere la struttura di un sistema. 08. In merito ai diagrammi UML delle interazioni, una delle affermazioni che seguono non è corretta. Quale? I diagrammi delle interazioni consentono di identificare ulteriori oggetti partecipanti nel caso d'uso. I diagrammi delle interazioni consentono di formalizzare il comportamento dinamico del sistema. I diagrammi delle interazioni consentono di visualizzare le comunicazioni tra gli oggetti. 09. In merito ai diagrammi UML degli stati, una delle affermazioni che seguono non è corretta. Quale? I diagrammi degli stati descrivono il comportamento dinamico di un singolo oggetto. Dato uno stato, una transizione identifica uno stato futuro in cui l'oggetto può portarsi. Uno stato rappresenta un particolare insieme di valori che gli attributi dell'oggetto possono assumere. I diagrammi delle interazioni consentono di modellare le caratteristiche grafiche degli oggetti boundary. Gli oggetti sono astrazioni che specificano la struttura e il comportamento in comune ad un insieme di classi. I diagrammi di sequenza descrivono l'ordine in cui i processi paralleli devono essere serializzati. Decomposizione in sottosistemi Un'entità che incapsula stato e comportamento con una singola istruzione del linguaggio di programmazione. La decomposizione termina al livello delle singole operazioni, quando le dimensioni del sottosistema sono diventate sufficientemente semplici da renderlo implementabile Un oggetto può essere istanza diretta di due o più classi distinte. Due viste su uno stesso modello non possono sovrapporsi, neppure parzialmente: devono essere sempre mutuamente esclusive. Un tipo di dato può definire o una struttura, oppure un insieme di operazioni, ma non entrambe le cose. 06. In merito al concetto di classe nella modellizzazione orientata agli oggetti e nei linguaggi di programmazione OO, una delle affermazioni che seguono non è corretta. Quale? Una classe è un'astrazione. Una classe incapsula sia la struttura che il comportamento. Una classe può essere istanziata da numerosi oggetti. 07. Che cosa è un oggetto? Una collezione di classi che condividono la stessa struttura Una collezione di classi che condividono lo stesso comportamento Un'astrazione che specifica gli attributi e i comportamenti di un insieme di classi 08. In merito al concetto di sistema, una delle affermazioni che seguono non è corretta. Quale? La decomposizione di un sistema in sottosistemi può essere ricorsivamente applicata ai sottosistemi. Alcune parti di un sistema possono a loro volta essere considerate sottosistemi. Un sistema è un insieme organizzato di parti tra loro comunicanti. 09. In merito al concetto di oggetto, una delle affermazioni che seguono non è corretta. Quale? In UML, un oggetto è rappresentato come un rettangolo col nome sottolineato. Un oggetto è dotato di identità. Un oggetto memorizza i valori dei propri attributi. 10. In merito al concetto di vista (view), una delle affermazioni che seguono non è corretta. Quale? Una vista è la rappresentazione di un sottoinsieme di un modello. Una vista evidenzia gli aspetti rilevanti di un modello secondo una determinata prospettiva. Una vista ha lo scopo di migliorare la comprensibilità di un modello complesso. 11. In merito al concetto di tipo di dato, una delle affermazioni che seguono non è corretta. Quale? Un tipo di dato è un'astrazione. Un tipo di dato ha un nome univoco. Un tipo di dato denota un insieme di valori. Una classe non può essere definita in modo incrementale rispetto ad un'altra classe preesistente. Uno scenario è un'istanza particolare di un caso d'uso Una relazione di estensione indica che un'istanza di un caso d'uso «estensore» può includere il comportamento specificato dal caso d'uso «esteso». Lezione 006 01. In merito alle differenze tra il concetto di scenario e quello di caso d'uso, solo una delle seguenti affermazioni è corretta. Quale? Un caso d'uso è un'istanza particolare di uno scenario Sia i casi d'uso che gli scenari sono istanze di un diagramma delle classi UML Sono la stessa cosa: i concetti di “scenario” e di “caso d'uso” sono sinonimi in Ingegneria del Software 02. Quale, tra le entità sotto elencate, in genere non fa parte della descrizione testuale di un caso d'uso? Gli attori partecipanti Le condizioni d'ingresso e di uscita Il flusso degli eventi 03. Quale, tra le entità sotto riportate, non è uno dei tipi di relazione che i casi d'uso possono includere? Comunicazione Inclusione Estensione 04. In merito alle relazioni che i casi d'uso possono includere, una delle affermazioni che seguono non è corretta. Quale? Le relazioni di comunicazione associano un attore ad un caso d'uso. Due casi d'uso sono in relazione di inclusione se uno dei due include l'altro nel suo flusso degli eventi. Mediante una relazione di ereditarietà un caso d'uso può specializzare un altro caso d'uso più generale, aggiungendo dettagli. 05. In merito al concetto di attore nei diagrammi dei casi d'uso UML, una delle affermazioni che seguono non è corretta. Quale? I diagrammi dei casi d'uso descrivono il comportamento del sistema dal punto di vista degli attori. Ogni attore è dotato di nome univoco e di descrizione. Un database può essere un attore. Esclusione Il diagramma degli stati Gli attori sono rappresentati nei diagrammi dei casi d'uso da questo simbolo: Un'associazione è in caso particolare di aggregazione. Durante l'analisi gli sviluppatori costruiscono diagrammi delle classi per catturare e formalizzare la conoscenza relativa al dominio delle soluzioni. In un linguaggio OO i metodi di una classe sono l'interfaccia delle operazioni che ne definiscono il comportamento. Le super-classi astratte si distinguono perché il loro nome è scritto in grassetto. E' un'etichetta posta ad un estremo di un'associazione. La molteplicità di un'associazione bidirezionale ha sempre valore maggiore o uguale a 1. Le associazioni possono essere sia asimmetriche che simmetriche; quelle asimmetriche sono navigabili solo in una direzione. Lezione 007 01. In merito al concetto di aggregazione nei diagrammi UML delle classi, una delle affermazioni che seguono non è corretta. Quale? Un'aggregazione denota un aspetto gerarchico della relazione. Un'aggregazione è denotata da una linea con un rombo all'estremità del contenitore. La molteplicità di un'aggregazione piò essere uno-a-molti oppure molti-a-molti. 02. In merito all'uso dei diagrammi UML delle classi in fase di analisi, una delle affermazioni che seguono non è corretta. Quale? Lo scopo dei modelli di analisi è descrivere la «zona di copertura» del sistema, ed esplicitarne i confini. Le classi rappresentano oggetti che partecipano ai diagrammi delle interazioni, descrivendne gli attributi e le operazioni. Le classi rappresentano oggetti che partecipano ai casi d'uso, descrivendone gli attributi e le operazioni. 03. In merito alla specifica del comportamento in un diagramma UML delle classi, una delle affermazioni che seguono non è corretta. Quale? Il comportamento degli oggetti è specificato dalle operazioni. Un oggetto richiede l'esecuzione di un'operazione da parte di un altro oggetto mandandogli un messaggio. La distinzione tra operazioni e metodi ci permette di distinguere tra la specifica del comportamento (cioè un'operazione) e la sua implementazione (cioè un insieme di metodi che possono anche essere definiti in classi diverse della gerarchia di ereditarietà) 04. In merito al concetto di ereditarietà nei diagrammi UML delle classi, una delle affermazioni che seguono non è corretta. Quale? Le super-classi astratte consentono di diminuire la complessità_x000B_del modello. L'ereditarietà è la relazione tra una classe generale e una o più classi specializzate. L'ereditarietà consente di concentrare in un unico luogo la descrizione di tutti gli attributi e le operazioni che sono in comune a un insieme di classi. 05. In un diagramma UML delle classi, che cos'è un ruolo? E' il nome, univoco, con cui si identifica l'utente che può accedere alla classe. E' il nome, univoco, con cui un'associazione viene identificata rispetto alle altre associazioni del diagramma. E' la cardinalità di un'associazione. 06. In merito al concetto di molteplicità di un'associazione, una delle affermazioni che seguono non è corretta. Quale? La molteplicità dell'estremo di un'associazione è il numero di link che possono originare da un'istaza della classe connessa all'associazione. La molteplicità "molti" si rappresenta con un asterisco "*". Un'associazione uno-a-molti denota tipicamente una composizione. 07. In merito alle associazioni in un diagramma delle classi UML, solo una delle seguenti affermazioni è corretta. Quale? Le associazioni possono essere sia asimmetriche che simmetriche; però solo quelle asimmetriche sono navigabili. Le associazioni sono sempre asimmetriche (unidirezionali, orientate). Le associazioni sono sempre simmetriche (bidirezionali). Un'iterazione è denotata da un frammento che contiene una partizione per ogni alternativa. I diagrammi di comunicazione sono più facili da seguire dei diagrammi di sequenza. Nei diagrammi di sequenza le esecuzioni dei metodi sono rappresentate da ellissi orizzontali. 05. Considera il diagramma UML di sequenza rappresentato qui sotto: Una delle affermazioni che seguono non è corretta. Quale? Il frammento etichettato alt denota l'uso di una struttura selettiva. Le alternative sono selezionate da guardie ([i>0], [else]). Il frammento etichettato loop denota l'uso di una struttura iterativa. 06. In merito ai diagrammi UML di comunicazione, una delle affermazioni che seguono non è corretta. Quale? I diagrammi di comunicazione presentano le stesse informazioni dei diagrammi di sequenza. I diagrammi di comunicazione rappresentano la sequenza dei messaggi numerando le interazioni. I diagrammi di comunicazione sono più compatti dei diagrammi di sequenza. 07. In merito ai diagrammi UML di sequenza, una delle affermazioni che seguono non è corretta. Quale? I diagrammi di sequenza sono una delle forme che possono assumere i diagrammi delle interazioni. I diagrammi di sequenza rappresentano verticalmente la dimensione temporale. I diagrammi di sequenza rappresentano orizzontalmente gli oggetti che partecipano all'interazione. I nodi di iterazione Un diagramma delle attività denota come una sequenza di attività viene realizzata in termini di una o più classi. il comportamento del sistema in termini di interazioni tra insiemi di oggetti Lezione 009 01. In merito ai nodi di controllo che coordinano il flusso del controllo, una delle categorie che seguono non è un tipo di nodo di controllo usabile nei diagrammi UML di attività. Quale? I nodi di biforcazione I nodi di decisione I nodi di riunione. 02. In merito ai diagrammi UML delle attività, una delle affermazioni che seguono non è corretta. Quale? Un diagramma delle attività mostra il flusso degli oggetti necessario al coordinamento delle attività. I diagrammi delle attività rappresentano l'articolazione in sequenza e il coordinamento di attività di basso livello. I diagrammi di attività sono gerarchici: un'attività è costituita o da un'azione, o da un grafo di sotto-attività con i relativi flussi di oggetti associati. 03. Che cosa rappresenta un diagramma di attività? I flussi dei dati o dei controlli in un sistema La struttura statica del sistema in termini di oggetti, attributi, operazioni e relazioni Le funzionalità del sistema dal punto di vista dell'utente 04. Nell'ambito delle notazioni adottate nei diagrammi UML, che cos'è una nota? Fornisci un esempio. 05. Nell'ambito delle notazioni adottate nei diagrammi UML, che cos'è un package? Fornisci un esempio. 06. Nell'ambito delle notazioni adottate nei diagrammi UML, che cos'è un vincolo (constraint)? Fornisci un esempio. 07. Nell'ambito delle notazioni adottate nei diagrammi UML, che cos'è uno stereotipo? Fornisci un esempio. Per ogni requisito funzionale è necessario identificare il corrispondente requisito non-funzionale Il committente e gli utenti possono richiedere la revisione degli scenari, ma in genere non intervengono sulla formulazione dei casi d'uso. I requisiti di qualità sono requisiti funzionali. La struttura interna del sistema Lezione 010 01. Una delle affermazioni sotto riportate non è corretta. Quale? I requisiti non-funzionali si applicano a numerosi aspetti del sistema, tra cui: usabilità, affidabilità, supportabilità, prestazioni I requisiti non-funzionali descrivono aspetti del sistema che non sono direttamente correlati con il comportamento funzionale del sistema stesso I requisiti funzionali descrivono l'interazione tra il sistema e il suo ambiente indipendentemente dall'implementazione 02. In merito all'elicitazione dei requisiti, una delle affermazioni che seguono non è corretta. Quale? Gli sviluppatori elicitano i requisiti intervistando gli utenti ed osservando le loro attuali modalità di lavoro. Gli sviluppatori prima rappresentano i processi di lavoro correnti degli utenti come scenari attuali, quindi sviluppano scenari potenziali che descrivono le funzionalità che il futuro sistema offrirà. A mano a mano che la descrizione del sistema evolve e si stabilizza, sviluppatori e committente si accordano su una specifica dei requisiti che comprende requisiti funzionali, non-funzionali, scenari e casi d'uso. 03. In merito all'elicitazione dei requisiti, una delle affermazioni che seguono non è corretta. Quale? Il modello dell'analisi contiene le stesse informazioni della specifica dei requisiti, rappresentate però in modo formale o semi-formale. La specifica dei requisiti viene strutturata e formalizzata durante la fase di analisi, per produrre il modello dell'analisi. L'elicitazione dei requisiti si concentra sulla descrizione degli scopi del sistema. 04. Una delle attività sotto elencate non è in genere effettuata nella fase di elicitazione dei requisiti. Quale? Identificazione degli scenari: concreti e dettagliati. Identificazione degli attori: tipi di utente diversi. Identificazione dei casi d'uso: indotti dagli scenari. 05. In merito all'elicitazione dei requisiti, una delle affermazioni che seguono non è corretta. Quale? I requisiti di qualità affrontano problematiche inerenti l'usabilità e l'affidabilità del sistema. I requisiti non-funzionali descrivono aspetti del sistema che non sono direttamente correlati con il comportamento funzionale del sistema stesso. I requisiti funzionali descrivono l'interazione tra il sistema e il suo ambiente indipendentemente dall'implementazione. L'ambiente include l'utente e ogni altro sistema esterno con cui il sistema considerato interagisce. 06. La descrizione di uno solo degli aspetti citati sotto non fa parte dei requisiti di un sistema. Quale? Le modalità di interazione tra utente e sistema Le funzionalità del sistema Gli errori che il sistema può rilevare e gestire 07. In merito all'elicitazione dei requisiti, una delle affermazioni che seguono non è corretta. Quale? L'elicitazione dei requisiti produce una descrizione del sistema comprensibile al committente. L'analisi dei requisiti produce un modello non ambiguo del sistema cui gli sviluppatori possono fare riferimento. L'ingegneria dei requisiti ha come obiettivo la definizione dei requisiti del sistema in via di progettazione. 08. In merito al tema dell'elicitazione dei requisiti, che cosa si intende con affidabilità di un sistema? Un requisito è una caratteristica desiderata che il sistema deve possedere per essere accettato dal project manager. Identificazioni delle principali classi: la struttura del sistema. L'elicitazione dei requisiti e l'analisi sono fasi strettamente sequenziali. Ogni sistema software esterno che usa il sistema è un oggetto dell'analisi. Impostare la decomposizione del sistema in sotto-sistemi 08. In merito al tema dell'elicitazione dei requisiti, una delle affermazioni che seguono non è corretta. Quale? Identificare gli attori contribuisce a definire i confini del sistema. Ogni sistema software esterno che usa il sistema è un attore. Il primo passo dell'elicitazione dei requisiti è l'identificazione degli attori. 09. Una delle seguenti attività non fa parte delle attività svolte durante l'elicitazione dei requisiti. Quale? Identificare i requisiti non-funzionali Raffinare i casi d'uso Identificare gli oggetti iniziali dell'analisi 10. Uno dei passi in cui si articola l'elicitazione dei requisiti è l'identificazione delle relazioni tra attori e casi d'uso. Relativamente a tale contesto, una delle affermazioni che seguono non è corretta. Quale? Le relazioni di comunicazione tra attori e casi d'uso descrivono il sistema in strati di funzionalità Le relazioni di estensione tra casi d'uso separano i flussi degli eventi eccezionali da quelli normali. Le relazioni di inclusione riducono la ridondanza tra casi d'uso. Le relazioni di mutua esclusione riducono la complessità del modello. Requirement Analysis Document Lezione 012 01. Relativamente all'attività di identificazione degli oggetti iniziali dell'analisi, una delle affermazioni che seguono non è corretta. Quale? Gli sviluppatori costruiscono un glossario (data dictionary) che assegna un nome e una descrizione ad ogni oggetto partecipante nei vari casi d'uso. L'identificazione degli oggetti partecipanti produce il modello iniziale degli oggetti dell'analisi. Uno dei primi ostacoli che sviluppatori e utenti incontrano all'inizio della loro collaborazione è la differente terminologia. 02. Che significato associamo, nel corso, all'acronimo RAD? Random Assigned Data Root Assigned Display Rapid Association Device 03. In merito al documento di analisi dei requisiti (RAD), una delle affermazioni che seguono non è corretta. Quale? Il RAD descrive completamente il sistema in termini di requisiti funzionali e non-funzionali. Il RAD contiene il glossario. Il RAD si rivolge ai committenti, agli utenti, al project manager, agli analisti e ai progettisti del sistema. 04. Descrivi la struttura del documento di analisi dei requisiti (RAD). Il RAD viene compilato in fase di elicitazione dei requisiti, e deve essere completato prima di iniziare la fase di analisi. Il committente e gli utenti mantengono aggiornato il glossario a mano a mano che le specifiche dei requisiti evolvono. Set Domande: INGEGNERIA DEL SOFTWARE INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04) Docente: Vetrella Sergio Lezione 013 Gli utenti e il committente non partecipano alla fase di analisi: il loro coinvolgimento si esaurisce nella fase di elicitazione dei requisiti. Il modello degli oggetti dell'analisi definisce l'interfaccia e l'implementazione dei principali metodi del sistema. Il modello dinamico evidenzia le relazioni di ereditarietà tra le classi. 01. Il modello dell'analisi, prodotto in fase di analisi dei requisiti, è composto da tre modelli individuali. Quale, tra i quattro elementi sotto elencati, non è una componente del modello dell'analisi? Il modello degli oggetti dell'analisi Il modello dinamico Il modello funzionale 02. In merito all'analisi dei requisiti, una delle affermazioni che seguono non è corretta. Quale? In fase di analisi, la specifica dei requisiti prodotta nella fase di elicitazione viene formalizzata; inoltre le condizioni al contorno e i casi eccezionali vengono esaminati in dettaglio. In fase di analisi vengono rimssi errori ed ambiguità ancora presenti nel RAD. L'analisi produce un modello del sistema corretto, completo, consistente, non ambiguo. 03. In merito al modello degli oggetti dell'analisi, una delle affermazioni che seguono non è corretta. Quale? Il modello degli oggetti dell'analisi è rappresentato tipicamente da diagrammi delle classi UML. Il modello degli oggetti dell'analisi cataloga i principali concetti visibili all'utente. Il modello degli oggetti dell'analisi si concentra sui concetti, le proprietà e le relazioni che il sistema manipola. 04. In merito al modello dinamico definito in fase di analisi dei requisiti, una delle affermazioni che seguono non è corretta. Quale? Il modello dinamico contiene diagrammi UML di sequenza. Il modello dinamico contiene diagrammi UML delle macchine a stati. Il modello dinamico si concentra sul comportamento del sistema. 05. Nel contesto dell'analisi dei requisiti, che cosa intendiamo per generalizzazione? Fornisci un esempio. 06. Nel contesto dell'analisi dei requisiti, che cosa sono gli oggetti control? Fornisci una definizione ed un esempio. 07. Nel contesto dell'analisi dei requisiti, che cosa sono gli oggetti boundary? Fornisci una definizione ed un esempio. 08. Nel contesto dell'analisi dei requisiti, che cosa sono gli oggetti entity? Fornisci una definizione ed un esempio. 09. Nel contesto dell'analisi dei requisiti, che cosa intendiamo per specializzazione? Fornisci un esempio. Il modello costi-benefici Set Domande: INGEGNERIA DEL SOFTWARE INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04) Docente: Vetrella Sergio Lezione 018 Una decomposizione in sotto-sistemi è il risultato di un'attività o di partizionamento o di stratificazione, ma non di entrambe. I due metodi non possono essere applicati insieme. Minimizzare il coupling tra i sotto-sistemi facilita il testing dell'intero sistema. La coesione è la misura quantitativa delle dipendenze tra due sotto-sistemi. Il coupling è la misura quantitativa delle dipendenze internamente a un sotto-sistema. Ogni layer ospita al più un sotto-sistema. 01. In merito ai concetti di partizionamento e stratificazione di un sistema, una delle affermazioni che seguono non è corretta. Quale? La decomposizione gerarchica di un sistema si arresta quando i sotto-sistemi sono abbastanza semplici da essere affidati ad un singolo sviluppatore, o a un piccolo gruppo di sviluppatori. Ogni sotto-sistema aggiunge un certo costo computazionale (overhead) a causa delle sue interfacce verso gli altri sotto-sistemi. Il partizionamento o la stratificazione eccessivi possono aumentare la complessità del sistema. 02. Relativamente ai concetti di coupling e coesione, una delle affermazioni che seguono non è corretta. Quale? Massimizzare la coesione di un sotto-sistema ne favorisce il riuso. Minimizzare il coupling in un sistema riduce le dipendenze interne ad ogni sotto-sistema. Massimizzare la coesione di un sotto-sistema lo rende più semplice. 03. Relativamente al concetto di coesione, una delle affermazioni che seguono non è corretta. Quale? Se un sotto-sistema contiene numerosi oggetti non reciprocamente correlati, il suo livello di coesione è basso. Una proprietà desiderabile della decomposizione in sotto-sistemi è che essa produca sotto-sistemi con alto livello di coesione. Se un sotto-sistema contiene molti oggetti che sono collegati l'uno all'altro ed eseguono compiti simili, il suo livello di coesione è alto. 04. Relativamente al concetto di coupling, una delle affermazioni che seguono non è corretta. Quale? Una proprietà desiderabile della decomposizione in sotto-sistemi è che questi risultino ragionevolmente disaccoppiati: in tal modo l'impatto di errori e future modifiche sarà localizzato in un solo sotto-sistema. Se due sotto-sistemi sono accoppiati in modo lasco (basso livello di coupling) essi sono relativamente indipendenti, e le modifiche apportate ad uno dei due sotto-sistemi avranno poco impatto sull'altro. Se due sotto-sistemi sono strettamente accoppiati (elevato livello di coupling), le modifiche apportate a uno di essi avranno probabilmente un impatto significativo anche sull'altro. 05. Relativamente al concetto di layering (stratificazione) di un sistema, una delle affermazioni che seguono non è corretta. Quale? In un'architettura chiusa ogni layer può accedere solo al layer immediatamente sottostante. L'insieme dei layers di un sistema è gerarchico. In un'architettura aperta un layer può accedere a tutti i layers sottostanti. 06. Descrivi le architetture a strati aperte. Fornisci un esempio. 07. Fornisci una definizione del concetto di coesione relativamente a un sotto-sistema software. 08. La riduzione del coupling in sede di progettazione dei sotto-sistemi è sempre un valore da perseguire in assoluto? In quali casi le controindicazioni prevalgono? 09. Descrivi le architetture a strati chiuse. Fornisci un esempio. 10. Che cosa si intende, in Ingegneria del software, con il termine coupling? 11. Quali sono i vantaggi di un'architettura a strati? 12. Fornisci una definizione di partizionamento di un sistema. 13. Quali sono gli svantaggi di un'architettura a strati? L'articolazione degli scenari in casi d'uso. SQL Injection Singleton Il controllo del flusso è effettuato esclusivamente dai sotto-sistemi, mediante l'attivazione di triggers e stored procedures. Un difetto dell'architettura Repository è che in essa risulta difficile controllare la concorrenza tra i sotto-sistemi e l'integrità dei dati. In un'architettura Repository la coesione di ogni sotto-sistema è bassa, quindi è difficile cambiare il repository senza dover cambiare anche tutti i sotto-sistemi. Lezione 019 01. Nell'architettura Model-View-Controller come interagiscono tra loro i sotto-sistemi Model e View? I due sotto-sistemi non comunicano direttamente. Model e View interagiscono prevalentemente attraverso la mediazione di Controller, che espone un'API per l'accesso ai servizi offerti. Model e View interagiscono attaverso il repository di sistema. 02. Tra gli aspetti elencati nel seguito, uno non entra a far parte del concetto di architettura software presentato nel corso. Quale? La gestione delle condizioni limite. La decomposizione del sistema in sotto-sistemi. Il controllo globale del flusso. 03. Quale, tra le seguenti, non identifica un'architettura software presentata nel corso? Client / Server Model-View-Controller Repository 04. Quale, tra le seguenti, non identifica un'architettura software presentata nel corso? Peer-to-peer Three-tier Pipe & Filter 05. Relativamente allo stile architetturale Repository, una delle affermazioni che seguono non è corretta. Quale? I sotto-sistemi accedono e modificano una singola struttura dati. Il repository non ha conoscenza degli altri sotto-sistemi. I sotto-sistemi sono relativamente indipendenti e interagiscono solo attraverso il repository. 06. Relativamente allo stile architetturale Repository, una delle affermazioni che seguono non è corretta. Quale? I compilatori e gli ambienti per lo sviluppo del software adottano spesso lo stile architetturale Repository. I sistemi articolati su un'architettura Repository che effettua il controllo globale del flusso in base allo stato delle proprie strutture dati centrali prendono talvolta il nome di sistemi blackboard. Lo stile architetturale repository è tipicamente usato con sistemi gestiti da database. 07. Relativamente allo stile architetturale Repository, una delle affermazioni che seguono non è corretta. Quale? Una volta che il repository centrale è ben definito, è facile aggiungere ulteriori servizi nella forma di altri sotto-sistemi. Il repository centrale può rapidamente diventare un «collo di bottiglia» (bottleneck), sia dal punto di vista delle prestazioni che da quello della modificabilità. Le architetture in stile Repository sono adeguate per applicazioni con compiti di elaborazione di dati complessi e soggetti a frequenti modifiche. I cambiamenti nello stato del sotto-sistema Model sono propagati al sotto-sistema View mediante un protocollo subscriber/notifier. La topologia tipica dell'architettura Peer-to-peer è ad albero. Ogni sotto-sistema viene eseguito in modo sequenziale: la sua esecuzione inizia solo quando il sotto-sistema che lo precede nella catena ha terminato. 08. Relativamente allo stile architetturale Model-View-Controller (MVC), una delle affermazioni che seguono non è corretta. Quale? Nell'architettura MVC il sotto-sistema View rappresenta la presentazione all'utente. Nell'architettura MVC il sotto-sistema Model rappresenta la conoscenza del dominio. Nell'architettura MVC il sotto-sistema Controller rappresenta la logica che governa l'interazione tra sistema e utente. 09. Relativamente allo stile architetturale Peer-to-peer, una delle affermazioni che seguono non è corretta. Quale? In un'architettura Peer-to-peer tutti i sotto-sistemi sono sia client che server. Il flusso di controllo all'interno di ogni sotto-sistema è indipendente dagli altri, eccetto che per la sincronizzazione delle richieste e delle risposte. I sistemi Peer-to-peer sono più difficili da progettare dei sistemi Client/Server, perché introducono la possibilità di deadlock. 10. Relativamente allo stile architetturale Client / Server, una delle affermazioni che seguono non è corretta. Quale? Il flusso di controllo nel client è indipendente da quello nel server, tranne che nei momenti di sincronizzazione in cui vengono inoltrate le richieste o ricevuti i risultati. Nello stile architetturale client/server un sotto-sistema, il server, offre servizi a istanze di altri sotto-sistemi detti client. Il server non ha nozione dei client. 11. Relativamente allo stile architetturale Pipe & Filter, una delle affermazioni che seguono non è corretta. Quale? Le associazioni tra ogni sotto-sistema e il successivo sono chiamate «pipes». Nello stile architetturale Pipe & Filter ogni sotto-sistema elabora i dati da uno o più input e manda i risultati in output ad altri sotto-sistemi. Ogni sotto-sistema conosce solo il contenuto e il formato dei dati ricevuti dalle pipes di input, non i sotto-sistemi che li hanno prodotti. 12. Qual è il principale vantaggio dello stile architetturale Pipe & Filter? Per quali tipologie di sistemi è indicato? 13. Descrivi lo stile architetturale Pipe & Filter. Indica un esempio in cui tale stile è ampiamente adottato. 14. Qual è il vantaggio insito nell'adozione di uno stile architetturale Three-tier? 15. Descrivi lo stile architetturale Four-tier. Fornisci un esempio. 16. Descrivi lo stile architetturale Three-tier. 17. Fornisci una definizione del concetto di deadlock di due processi. Quale stile architetturale, tra quelli presentati nel corso, è potenzialmente soggetto a deadlock? 18. Fornisci una definizione del concetto di operazione callback. Quale stile architetturale, tra quelli presentati nel corso, fa tipicamente uso di operazioni callback? Le interazioni con l'utente vengono in genere gestite direttamente dal server. L'accoppiamento tra il sotto-sistema Model e il sotto-sistema Controller è elevato. 16. In molte architetture, come ad es. quelle three-tier e four-tier, la memorizzazione di oggetti persistenti è affidata a un tier dedicato. Quali obiettivi del design hanno condotto a questa decisione? 17. Elenca gli obiettivi del design che sarebbe difficile soddisfare usando un'architettura chiusa con molti strati, come ad es. l'esempio OSI-ISO. I componenti software commerciali devono essere scritti nello stesso linguaggio di programmazione usato per sviluppare le altre parti del sistema. La gestione delle problematiche di persistenza definisce la struttura delle classi e le operazioni effettuabili sui dati del sistema. Sotto-sistemi diversi possono adottare politiche di controllo degli accessi diverse? Il sistema può essere controllato in remoto, ad es. via Internet? Le scelte operate in fase di definizione del flusso di controllo determinano il numero minimo e massimo dei file contemporaneamente aperti nel sistema. L'identificazione delle condizioni limite include la determinazione delle quantità minime di risorse (memoria centrale, spazio disco, versione del sistema operativo ecc.) necessarie al sistema. Come vengono gestiti gli eventi eccezionali? Lezione 022 01. In merito all'attività progettuale di mappatura hardware/software , una delle affermazioni seguenti non è corretta. Quale? In fase di definizione della mappatura hardware/software vengono selezionati componenti software riusabili. I componenti software commerciali di serie devono essere incapsulati per minimizzare le dipendenze e facilitare l'intercambiabilità. In fase di definizione della mappatura hardware/software possono essere definiti nuovi sotto-sistemi. 02. In merito all'attività progettuale che definisce la gestione dei dati persistenti, una delle affermazioni seguenti non è corretta. Quale? La gestione delle problematiche di persistenza identifica dove i dati persistenti devono essere memorizzati. La gestione delle problematiche di persistenza definisce le modalità di accesso ai dati persistenti. La gestione delle problematiche di persistenza seleziona quali dati devono essere persistenti. 03. L'attività progettuale di definizione del controllo degli accessi richiede ai progettisti di fornire risposte a numerose domande. Una delle domande seguenti non attiene a tale attività. Quale? Quali attori possono accedere a quali dati? È possibile modificare dinamicamente il controllo dell'accesso? Come viene realizzato il controllo dell'accesso? 04. L'attività progettuale di definizione del flusso di controllo richiede ai progettisti di fornire risposte a numerose domande. Una delle domande seguenti non attiene a tale attività. Quale? In che modo il sistema mette in sequenza le operazioni? Il sistema è guidato dagli eventi? Il sistema può gestire più di un'interazione utente in ogni dato istante? 05. In merito all'attività progettuale di definizione del flusso di controllo, una delle affermazioni seguenti non è corretta. Quale? Se si sceglie un flusso del controllo guidato dagli eventi, i sotto-sistemi devono rendere disponibili degli event handlers. La scelta del flusso del controllo ha effetti sulle interfacce dei sotto-sistemi. Se il flusso del controllo prevede un meccanismo di concorrenza basato sui threads, i sotto-sistemi devono garantire la mutua esclusione nelle sezioni critiche del codice. 06. In merito all'attività progettuale di identificazione delle condizioni limite, una delle affermazioni seguenti non è corretta. Quale? L'identificazione delle condizioni limite include la definizione delle modalità con cui vengono gestite le eccezioni. L'identificazione delle condizioni limite include la definizione delle modalità con cui viene inizializzato il sistema. L'identificazione delle condizioni limite include la definizione delle modalità con cui viene spento il sistema. 07. L'attività progettuale di mappatura hardware/software richiede ai progettisti di fornire risposte a numerose domande. Una delle domande seguenti non attiene a tale attività. Quale? Quali funzionalità sono attribuite ai vari nodi? Qual è la configurazione hardware del sistema? Come comunicano tra loro i nodi? 08. Descrivi la soluzione proposta dal design pattern Flyweight. 09. Quale problema di progettazione viene affrontato con l'uso del design pattern Flyweight? 10. Considera il diagramma UML di deployment riportato qui sotto: Fornisci una descrizione verbale delle informazioni desumibili dal diagramma. 11. Descrivi la funzione e la struttura dei diagrammi UML di deployment. Fornisci un esempio. 12. Considera il pattern MVC, generalizzazione del design pattern Observer: Indica in che misura la struttura di MVC facilita oppure ostacola il seguente obiettivo del design:Controllo degli accessi (la garanzia che solo gli utenti autorizzati possano accedere a parti specifiche del model) 13. Considera il pattern MVC, generalizzazione del design pattern Observer: Indica in che misura la struttura di MVC facilita oppure ostacola il seguente obiettivo del design:Modificabilità (l'aggiunta di nuovi attributi nel model) 14. Considera il pattern MVC, generalizzazione del design pattern Observer: Indica in che misura la struttura di MVC facilita oppure ostacola il seguente obiettivo del design:Ottimizzazione dei tempi di risposta (il tempo tra l'input dell'utente e l'aggiornamento di tutte le views) Set Domande: INGEGNERIA DEL SOFTWARE INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04) Docente: Vetrella Sergio Lezione 024 E' importante allocare i componenti software nei vari nodi senza introdurre nuovi oggetti ne' sotto-sistemi. Gli oggetti complessi non possono essere resi persistenti mediante un database relazionale, che può memorizzare solo tipi di dato semplici. 01. Relativamente alla mappatura tra sotto-sistemi, processori e componenti, una delle affermazioni che seguono non è corretta. Quale? Selezionare la configurazione hardware può include la decisione di fare uso di macchine virtuali. L'allocazione di oggetti e sotto-sistemi ai nodi può avvenire solo dopo che la configurazione hardware è stata definita. La mappatura dei sotto-sistemi sullo hardware viene effettuata prima di altre attività del system design, perché ha un impatto significativo sulle prestazioni e la complessità del sistema. 02. Relativamente alla mappatura tra sotto-sistemi, processori e componenti, una delle affermazioni che seguono non è corretta. Quale? Gli sviluppatori devono scegliere con cura i componenti che useranno per sviluppare il sistema. Allocare i sotto-sistemi ai nodi hardware ci permette di distribuire le funzionalità e le capacità di elaborazione dove sono maggiormente richieste. Gli sviluppatori devono mantenere la consapevolezza che l'integrazione dei componenti potrebbe richiedere molto lavoro. 03. Relativamente all'identificazione degli oggetti persistenti, una delle affermazioni che seguono non è corretta. Quale? Possiamo identificare gli oggetti persistenti esaminando tutte le classi che devono sopravvivere lo spegnimento e ripartenza del sistema. Nell'identificare gli oggetti persistenti dobbiamo tenere conto degli eventi eccezionali (errori, mancanza di risorse) che causano la terminazione forzata del programma. Nell'identificare gli oggetti persistenti dobbiamo tenere conto delle chiusure controllate. 04. Per garantire che la decomposizione in sotto-sistemi soddisfi tutti i requisiti non-funzionali e che, in fase di implementazione, tutti i vincoli vengano rispettati, in fase di decomposizione del sistema devono essere svolte alcune attività. Quale, tra le seguenti, non è una di tali attività? L'identificazione dei servizi . La progettazione del flusso di controllo globale . L'identificazione delle condizioni limite . 05. Per garantire che la decomposizione in sotto-sistemi soddisfi tutti i requisiti non-funzionali e che, in fase di implementazione, tutti i vincoli vengano rispettati, in fase di decomposizione del sistema devono essere svolte alcune attività. Quale, tra le seguenti, non è una di tali attività? La mappatura tra sotto-sistemi, processori e componenti . L'identificazione e la memorizzazione di dati persistenti . Il controllo degli accessi . 06. Relativamente all'identificazione dei dati persistenti, una delle affermazioni che seguono non è corretta. Quale? L'identificazione dei dati persistenti può avere implicazioni sulla gestione della concorrenza. L'identificazione dei dati persistenti può avere implicazioni sulla strategia generale di controllo del flusso. Sebbene memorizzare i dati su semplici file sia talvolta una soluzione semplice ed economica, usare un database permette di effettuare queries complesse sui dati. e può migliorare la flessibilità del sistema. 07. In merito alle strategie di scelta dei meccanismi di persistenza, discuti vantaggi e svantaggi dell'uso di un database ad oggetti. 08. In merito alle strategie di scelta dei meccanismi di persistenza, discuti vantaggi e svantaggi dell'uso di semplici file. 09. Nel contesto della progettazione di sistemi software, che cosa intendiamo col termine persistenza? 10. Che cos'è una macchina virtuale? Perché questo concetto è interessante nel contesto del system design? 11. In merito alle strategie di scelta dei meccanismi di persistenza, discuti vantaggi e svantaggi dell'uso di un database relazionale. L'identificazione dei dati persistenti non ha effetti significativi sulla decomposizione in sotto-sistemi. L'identificazione delle interfacce e delle operazioni di tutti gli oggetti. L'ispezione dei test di usabilità. La distribuzione delle funzionalità semplifica la memorizzazione, il trasferimento, la replica e la sincronizzazione dei dati tra i sotto-sistemi. Le righe rappresentano gli attori, le colonne rappresentano le classi a cui vogliamo controllare l'accesso Lezione 025 01. Relativamente all'identificazione dei servizi, una delle seguenti affermazioni non è corretta. Quale? Mettendo a fuoco le dipendenze tra i sotto-sistemi validiamo lo stato corrente dell'architettura del sistema. Mettendo a fuoco le dipendenze tra i sotto-sistemi specifichiamo in dettaglio le responsabilità di ogni sotto-sistema. Mettendo a fuoco le dipendenze tra i sotto-sistemi evidenziamo eventuali omissioni nella decomposizione iniziale. 02. Con riferimento all'identificazione dei servizi offerti da ogni sotto-sistema, una delle seguenti attività non fa parte delle attività svolte in fase di system design . Quale? Dotare ogni servizio di un nome. Riconsiderare le dipendenze tra i sotto-sistemi. Definire un'interfaccia per ogni servizio identificato. 03. Quale tipologia di oggetti viene tipicamente usata per realizzare il meccanismo di controllo del flusso? Le decisioni inerenti il controllo del flusso sono incapsulate in un design pattern Simple Factory che genera la corretta sequenza di operazioni. Un insieme di oggetti boundary integra nelle proprie variabili di stato le dipendenze che rappresentano la corretta sequenza delle operazioni. Un insieme di oggetti entity genera gli eventi che controllano la corretta sequenza di esecuzione delle operazioni. 04. Considera la problematica relativa al controllo degli accessi, e in particolare lo strumento che nel corso abbiamo definito matrice degli accessi. In questo contesto, una sola delle seguenti affermazioni è vera. Quale? Le righe rappresentano i sotto-sistemi in cui il sistema globale è decomposto, le colonne rappresentano le possibili modalità di accesso (lettura, scrittura ecc.) e nelle celle ci sono gli elenchi degli utenti che hanno accesso ad ogni sotto-sistema nelle varie modalità Le righe rappresentano le classi a cui vogliamo controllare l'accesso, le colonne rappresentano gli oggetti istanze di tali classi, e nelle celle ci sono gli elenchi degli utenti che hanno accesso a tali oggetti La matrice è triangolare: sia le righe che le colonne rappresentano gli attori, e nelle celle c'è l'informazione relativa ai permessi reciproci di accesso 05. Un possibile approccio per rappresentare la matrice degli accessi è la lista delle capabilities. Descrivine la struttura. 06. Che cos'è, nel contesto del system design, il flusso del controllo globale? Fornisci un esempio. 07. Quali problematiche vengono affrontate nell'attività progettuale che nel corso è stata indicata come "controllo degli accessi", nel contesto del system design? 08. Che cos'è una matrice degli accessi? Descrivine la struttura. 09. Un possibile approccio per rappresentare la matrice degli accessi è la tabella globale degli accessi. Descrivine la struttura. 10. Un possibile approccio per rappresentare la matrice degli accessi è la lista di controllo degli accessi. Descrivine la struttura. 11. I possibili approcci per rappresentare la matrice degli accessi sono: ● la tabella globale degli accessi ● la lista di controllo degli accessi ● la lista delle capabilities. Confrontali dal punto di vista delle prestazioni. 12. Descrivi il meccanismo basato su threads per il controllo del flusso delle azioni. 13. Descrivi il meccanismo procedurale di controllo del flusso delle azioni. 14. Descrivi il meccanismo guidato da eventi per il controllo del flusso delle azioni. Un insieme di oggetti control registrano gli eventi esterni, memorizzano i loro valori di stato temporanei, e chiamano in sequenza corretta i metodi di altri oggetti boundary ed entity. Specificare le operazioni, i parametri e i vincoli di ogni servizio. Mettendo a fuoco le dipendenze tra i sotto-sistemi aumentiamo la coesione di ogni sotto-sistema. 15. In quale situazione il meccanismo procedurale di controllo del flusso delle azioni si dimostra particolarmente utile? In quale situazione, invece, non andrebbe adottato? 16. Confronta il meccanismo di controllo del flusso basati su eventi e con quello basato su threads. Sotto quali aspetti il primo è preferibile al secondo? Set Domande: INGEGNERIA DEL SOFTWARE INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE (D.M. 270/04) Docente: Vetrella Sergio Lezione 027 In fase di object design è necessario identificare gli attori coinvolti nei casi d'uso eccezionali. La mappatura dei sottosistemi nelle componenti hardware della piattaforma . 01. In merito alla fase di object design, una delle affermazioni che seguono non è corretta. Quale? In fase di object design è possibile identificare nuovi oggetti del dominio delle soluzioni . In fase di object design vengono adattati e configurati componenti standard . In fase di object design è necessario specificare con precisione le interfacce di ogni sotto-sistema e classe. 02. Quale, tra le attività elencate nel seguito, non viene svolta nella fase di object design? La specifica dettagliata dei servizi, che descrive con precisione l'interfaccia esposta da ogni classe . Il riuso di componenti standard e di design patterns per sfruttare soluzioni esistenti La ristrutturazione e ottimizzazione del modello degli oggetti, che interviene sul modello dell'object design migliorandone la comprensibilità e l'estendibilità , e lo modifica ulteriormente per applicare criteri di miglioramento delle prestazioni. 03. Nel contesto dell'object design, descrivi l'attività di ottimizzazione del modello del sistema. 04. Nel contesto dell'object design, descrivi l'attività di riuso. 05. La fase di object design prevede quattro tipi di attività, presentate qui in ordine alfabetico: ● ottimizzazione del modello ● ristrutturazione del modello ● riuso di componenti e patterns ● specifica dettagliata delle interfacce In che ordine vengono eseguite? Perché? 06. Nel contesto dell'object design, descrivi l'attività di ristrutturazione del modello del sistema. 07. Nel contesto dell'object design, descrivi l'attività di specifica dettagliata delle interfacce. Per ottimizzare il riuso di operazioni private a livello di codice. Un sistema, un programma o un componente software correlato ad un ambiente operativo obsoleto ma ancora in uso in un'organizzazione. Durante il system design vengono raffinati e dettagliati oggetti dell'applicazione legati alla piattaforma hardware / software. Lezione 028 01. Con quali scopi delega ed ereditarietà possono essere usate insieme? Una delle risposte che seguono non è corretta. Quale? Per incapsulare codice legacy preesistente e solo parzialmente riusabile . Per disaccoppiare classi che specificano una politica da classi che realizzano il meccanismo. Per disaccoppiare interfacce astratte dalle relative implementazioni . 02. Che cosa si intende con il termine legacy code? Un database con molti dati obsoleti, e in quanto tale di scarsa utilità. Un sistema applicativo nel dominio delle attività legali e forensi. Un sistema, un programma o un componente software che fa pesante uso dell'ereditarietà. 03. In merito alla problematica del riuso, una tra le affermazioni che seguono non è corretta. Quale? Gli oggetti boundary sono tipicamente visibili all'utente. La maggior parte degli oggetti entity sono oggetti dell'applicazione indipendenti da uno specifico sistema. Gli oggetti control sono tipicamente oggetti della soluzione. 04. Qual è la ragione per cui usiamo l'ereditarietà in fase di object design? Fornisci un esempio. 05. Qual è la differenza tra gli oggetti dell'applicazione e gli oggetti della soluzione? Fornisci un esempio. 06. Quali sono le ragioni per cui usiamo l'ereditarietà e la generalizzazione a livello di specifica, nel modello dell'analisi? 07. Commenta il seguente diagramma, indicando le peculiarità dei diversi tipi di ereditarietà. 08. Quali sono gli svantaggi connessi con l'uso dell'ereditarietà? Fornisci un esempio. 09. Che cosa si intende per ereditarietà stretta? Fornisci un esempio. 10. Enuncia il principio di sostituzione di Liskov. 11. La delega sostituisce bene l'ereditarietà di un determinato tipo. Quale? Con quali vantaggi? 12. Fornisci una definizione del meccanismo di delega. Bridge Strategy Command Disaccoppiare un'interfaccia dalla sua implementazione così che l'implementazione possa essere sostituite, possibilmente a run-time. Disaccoppiare un'interfaccia dalla sua implementazione così che l'implementazione possa essere sostituite, possibilmente a run-time. Disaccoppiare una classe che determina la politica di un servizio da un insieme di meccanismi che la implementano, in modo che i meccanismi possano essere cambiati senza che il client debba essere modificato. Lezione 029 01. Tra le possibili cause di cambiamento abbiamo considerato la necessità di affidarsi a nuovi fornitori e nuove tecnologie: i componenti commerciali sono spesso sostituiti da equivalenti di altre marche. Quale, tra i design pattern sotto elencati, ci può aiutare a fronteggiare questa situazione? Composite Command Singleton 02. Tra le possibili cause di cambiamento abbiamo considerato la necessità di sviluppare nuove implementazioni: talvolta le prestazioni di un sistema si rivelano, in fase di test, insoddisfacenti, ed emerge la necessità di adottare strutture dati ed algoritmi più efficienti. Quale, tra i design pattern sotto elencati, ci può aiutare a fronteggiare questa situazione? Command Composite Singleton 03. Tra le possibili cause di cambiamento abbiamo considerato la necessità di sviluppare nuove funzionalità: il contesto applicativo evolve nel tempo, i committenti sviluppano nuova consapevolezza delle potenzialità della tecnologia, cambiano le normative, il sistema deve far fronte a nuovi requisiti. Quale, tra i design pattern sotto elencati, ci può aiutare a fronteggiare questa situazione? Adapter trategy Abstract Factory 04. Considera il design pattern Bridge. Quale, tra le finalità sotto riportate, meglio descrive il problema che tale pattern affronta? Disaccoppiare una classe che determina la politica di un servizio da un insieme di meccanismi che la implementano, in modo che i meccanismi possano essere cambiati senza che il client debba essere modificato. Isolare il client da diverse piattaforme che offrono differenti implementazioni degli stessi concetti . Convertire l'interfaccia di una classe esistente (legacy) in una diversa interfaccia richiesta dal client, così che il client e la classe legacy possano lavorare insieme senza subire modifiche. 05. Considera il design pattern Adapter. Quale, tra le finalità sotto riportate, meglio descrive il problema che tale pattern affronta? Disaccoppiare una classe che determina la politica di un servizio da un insieme di meccanismi che la implementano, in modo che i meccanismi possano essere cambiati senza che il client debba essere modificato. Convertire l'interfaccia di una classe esistente (legacy) in una diversa interfaccia richiesta dal client, così che il client e la classe legacy possano lavorare insieme senza subire modifiche. Isolare il client da diverse piattaforme che offrono differenti implementazioni degli stessi concetti . 06. Considera il design pattern Strategy. Quale, tra le finalità sotto riportate, meglio descrive il problema che tale pattern affronta? Isolare il client da diverse piattaforme che offrono differenti implementazioni degli stessi concetti . Disaccoppiare un'interfaccia dalla sua implementazione così che l'implementazione possa essere sostituite, possibilmente a run-time. Convertire l'interfaccia di una classe esistente (legacy) in una diversa interfaccia richiesta dal client, così che il client e la classe legacy possano lavorare insieme senza subire modifiche. Rappresentare una gerarchia di ampiezza e profondità variabili, in cui i nodi foglia (terminali) e i nodi intermedi possono essere trattati uniformemente attraverso un'interfaccia comune. Lezione 031 01. Considera il design pattern Composite. Quale, tra le finalità sotto riportate, meglio descrive il problema che tale pattern affronta? Isolare il client da diverse piattaforme che offrono differenti implementazioni degli stessi concetti . Disaccoppiare una classe che determina la politica di un servizio da un insieme di meccanismi che la implementano, in modo che i meccanismi possano essere cambiati senza che il client debba essere modificato. Convertire l'interfaccia di una classe esistente (legacy) in una diversa interfaccia richiesta dal client, così che il client e la classe legacy possano lavorare insieme senza subire modifiche. 02. Descrivi le caratteristiche di un blackbox framework. 03. Quali sono le principali differenze tra gli application frameworks e le librerie di classi, dal punto di vista dello sviluppatore di un'applicazione software? 04. Qual è la principale differenza tra gli application frameworks e i design patterns dal punto di vista del progettista di software? 05. Descrivi le caratteristiche di un whitebox framework. 06. Che cos'è un enterprise application framework? Quali sono le sue specificità rispetto a un generico application framework? 07. Che cos'è un middleware framework? Quali sono le sue specificità rispetto a un generico application framework? 08. Che cos'è un framework infrastrutturale? Quali sono le sue specificità rispetto a un generico application framework? 09. Che cos'è un application framework? Per che cosa serve? Lezione 032 01. Quali attività definiscono il ruolo del class user? 02. Quali responsabilità definiscono il ruolo del class implementor? 03. Nel contesto dell'object design, che cosa si intende per specifica delle postcondizioni? 04. Nel contesto dell'object design, che cosa si intende per specifica delle precondizioni? 05. Nel contesto dell'object design, che cosa si intende per specifica delle invarianti? 06. Che cosa intendiamo per visibilità di un'operazione? 07. Che cos'è la signature di un'operazione? Fornisci un esempio. 08. Quali attività definiscono il ruolo del class extender? 09. Che cosa specifica il tipo di un attributo? 10. Fornisci una descrizione di ognuno dei livelli di visibilità di un attributo disponibili in UML. Nel caso di classi astratte o di classi che dovranno essere estese mediante ereditarietà, è possibile definire private quegli attributi e quelle operazioni che saranno accessibili solo dalle sottoclassi. Il contratto di una classe specifica la deadline entro cui gli sviluppatori renderanno disponibile tale classe. Variante Gli invarianti specificano vincoli sui valori costanti memorizzati nella classe. Le precondizioni sono usate per specificare vincoli che un class implementor o un class extender deve rispettare prima di codificare l'operazione. Identificazione degli oggetti entity. Identificazione di un design pattern riusabile per l'implementazione della classe. Lezione 033 01. In merito alla specifica della visibilità di attributi e operazioni effettuata durante il raffinamento del modello dell'object design, una delle affermazioni che seguono non è corretta. Quale? La visibilità delle operazioni permette di distinguere tra operazioni che sono parte dell'interfaccia esposta dalla classe, e quelle che sono metodi di utilità cui solo la classe può accedere. La determinazione della visibilità di ogni attributo richiede di scegliere quali attributi saranno pubblici e direttamente modificabili da ogni altra classe. La determinazione della visibilità di ogni attributo richiede di scegliere quali attributi dovranno essere accessibili solo indirettamente mediante le operazioni offerte dalla classe. 02. In merito ai contratti, una delle affermazioni che seguono non è corretta. Quale? Ogni class implementor o extender garantisce che siano rispettati i vincoli specificati nel contratto della classe che rende disponibile. Ogni class user deve rispettare i vincoli specificati nel contratto per usare correttamente la classe . I contratti sono vincoli che consentono agli sviluppatori di condividere le stesse assunzioni sui servizi offerti dalla classe. 03. Uno dei termini elencati nel seguito non identifica un tipo di vincolo espresso nei contratti. Quale? Invariante Precondizione Postcondizione 04. In merito agli invarianti specificati nei contratti, una delle affermazioni che seguono non è corretta. Quale? Un invariante è un predicato che è sempre vero per tutte le istanze della classe. Gli invarianti sono vincoli associati con classi o interfacce. Gli invarianti sono usati per specificare vincoli di consistenza tra attributi della classe. 05. In merito alle precondizioni specificate in un contratto, una delle affermazioni che seguono non è corretta. Quale? Le precondizioni sono associate a operazioni specifiche. Le precondizioni sono usate per specificare vincoli che un class user deve rispettare prima di chiamare l'operazione. Una precondizione è un predicato che deve essere vero prima che un'operazione sia chiamata. 06. Tra le attività riportate nel seguito, una non è connessa con la specifica delle interfacce in fase di object design. Quale? Specifica della visibilità . Specifica di invarianti, precondizioni e postcondizioni . Specifica di tipi e signatures . 07. Una delle attività che seguono non appartiene alla specifica di tipi e signatures effettuata durante il raffinamento del modello dell'object design. Quale? Identificazione della corrispondenza delle classi e degli attributi del modello degli oggetti con i tipi built-in del linguaggio di programmazione adottato. Rappresentazione delle relazioni tra classi mediante componenti esistenti. Identificazione del rango (range) di ogni attributo dell'oggetto. 06. Il diagramma qui sotto mostra dominio e codominio di quattro tipi di trasformazione relativi al mapping: Descrivi lo scopo e le caratteristiche del reverse engineering. Le collezioni sono sempre ordinate. Ometti il codice di controllo per le precondizioni. L'istruzione throw. Anticipare le elaborazioni pesanti. Lezione 035 01. In merito alla mappatura delle associazioni UML con le collezioni disponibili nei linguaggi OO, una delle affermazioni che seguono non è corretta. Quale? I linguaggi OO rendono disponibili le references, in cui un oggetto memorizza un riferimento (handle) unidirezionale a un altro oggetto . Le associazioni sono concetti UML che denotano insiemi di collegamenti (link) bidirezionali tra due o più oggetti. I linguaggi OO rendono disponibili le collezioni, oggetti che contengono riferimenti ad altri oggetti. 02. Nel corso vengono presentate alcune euristiche per mappare contratti ed eccezioni. Una delle indicazioni che seguono non fa parte di tali euristiche. Quale? Riusa il codice di controllo dei vincoli, incapsulandolo in metodi riusabili. Concentrati sulle interfacce dei sotto-sistemi e ometti il codice di controllo dei metodi protetti e privati. Concentrati sui contratti dei componenti più duraturi, ad es. gli oggetti entity. 03. In merito alla mappatura dei contratti con le eccezioni , quale costrutto Java permette di segnalare la violazione di un contratto? Il metodo switch/case. L'interfaccia Runnable. La classe Catch. 04. Una delle attività elencate nel seguito non è inquadrabile nell'ottimizzazione dell'object design. Quale? Collassare alcuni oggetti in attributi. Aggiungere associazioni per ottimizzare i percorsi di accesso. Salvare nella memoria cache i risultati delle elaborazioni pesanti. 05. Nel contesto delle trasformazioni di mapping, descrivi il principio di unicità del criterio. 06. Nel contesto delle trasformazioni di mapping, descrivi il principio di validazione. 07. Nel contesto delle trasformazioni di mapping, descrivi il principio di località. 08. Nel contesto delle trasformazioni di mapping, descrivi il principio di isolamento. Lezione 036 01. Nel contesto della mappatura del modello degli oggetti in uno schema relazionale per la persistenza dei dati, come vengono mappate le relazioni di ereditarietà? 02. Nel contesto della mappatura del modello degli oggetti in uno schema relazionale per la persistenza dei dati, come vengono mappate le associazioni? 03. Nel contesto della mappatura del modello degli oggetti in uno schema relazionale per la persistenza dei dati, che cos'è una chiave esterna? 04. Nel contesto della mappatura del modello degli oggetti in uno schema relazionale per la persistenza dei dati, che cos'è una chiave primaria? 05. Descrivi le caratteristiche di uno schema relazionale per la persistenza dei dati. 06. Nel contesto della mappatura del modello degli oggetti in uno schema relazionale per la persistenza dei dati, come vengono mappate le classi? 21. Nel contesto delle tecniche tese ad aumentare l'affidabilità di un sistema, che cosa intendiamo con fault detection? 22. Nel contesto delle tecniche tese ad aumentare l'affidabilità di un sistema, che cosa intendiamo con fault avoidance? 23. Che cosa intendiamo con il termine test di regressione? Test di caso d'uso Ricercare i difetti nei meccanismi con cui componenti diversi interagiscono e si scambiano dati . I test di usabilità adottano un approccio sistematico confrontando il comportamento del sistema con i requisiti non-funzionali del progetto. Lezione 038 01. Uno dei termini sotto riportati non identifica un tipo di test di usabilità. Quale? Test di prodotto Test di prototipo Test di scenario 02. Uno degli obiettivi elencati nel seguito non rappresenta una motivazione dell'attività di unit testing. Quale? Facilitare l'identificazione e la correzione dei difetti, perché pochi componenti sono coinvolti nel test . Ridurre la complessità delle attività di test, grazie al fatto che lo unit test si concentra su componenti di dimensioni limitate Consentire il parallelismo nelle attività di test: ogni componente può essere testato indipendentemente dagli altri. 03. In merito ai test di usabilità, una delle affermazioni che seguono non è corretta. Quale? I test di usabilità indagano il livello di comprensione che l'utente ha del sistema. I test di usabilità indagano il look-and-feel dell'interfaccia utente, il layout geometrico delle videate, le sequenze di interazioni e, in determinati casi, l'ergonomia del sistema. I test di usabilità cercano di determinare le differenze tra il sistema e le aspettative degli utenti. 04. Fornisci una descrizione della tecnica di state-based testing. 05. Fornisci una descrizione della tecnica di equivalence testing. 06. Fornisci una descrizione della tecnica di path testing. 07. Fornisci una descrizione della tecnica di boundary testing. 08. Elenca i passi in cui si articola l'attività di ispezione dei componenti nel contesto del testing. Il sandwich testing mappa la decomposizione in sotto-sistemi su tre livelli: un obiettivo, un livello superiore e uno inferiore. In questo modo non è necessario definire drivers e stubs per i livelli superiore ed inferiore. Il top-down testing parte dal livello più alto, testando uno alla volta i suoi sotto-sistemi con l'ausilio di stubs che simulano i componenti dei livelli sottostanti. Quando tutti i componenti di un livello sono stati testati, si integrano (sempre uno alla volta) i componenti del livello successivo, e così via. Non sono necessari test drivers. L'ordine con cui i componenti sono testati non influenza l'impegno totale di lavoro necessario per il test d'integrazione. Il big bang testing assume che tutti i componenti siano già stati testati individualmente, e quindi possano essere testati insieme come un unico sistema, in un unico passo di integrazione. Il bottom-up testing parte testando individualmente ogni componente appartenente al layer più basso dell'architettura, poi procede salendo di un livello e integrando i sotto-sistemi costituiti dal secondo livello, poi sale al terzo ecc. Lezione 039 01. Il sandwich testing è una delle possibili strategie su cui si basano i test di integrazione orizzontali. Quale, tra le seguenti descrizioni, meglio si adatta al sandwich testing? Il sandwich testing assume che tutti i componenti siano già stati testati individualmente, e quindi possano essere testati insieme come un unico sistema, in un unico passo di integrazione. Il sandwich testing parte dal livello più alto, testando uno alla volta i suoi sotto-sistemi con l'ausilio di stubs che simulano i componenti dei livelli sottostanti. Quando tutti i componenti di un livello sono stati testati, si integrano (sempre uno alla volta) i componenti del livello successivo, e così via. Non sono necessari test drivers. Il sandwich testing parte testando individualmente ogni componente appartenente al layer più basso dell'architettura, poi procede salendo di un livello e integrando i sotto-sistemi costituiti dal secondo livello, poi sale al terzo ecc. 02. Il top-down testing è una delle possibili strategie su cui si basano i test di integrazione orizzontali. Quale, tra le seguenti descrizioni, meglio si adatta al top-down testing? Il top-down testing parte testando individualmente ogni componente appartenente al layer più basso dell'architettura, poi procede salendo di un livello e integrando i sotto-sistemi costituiti dal secondo livello, poi sale al terzo ecc. Il top-down testing mappa la decomposizione in sotto-sistemi su tre livelli: un obiettivo, un livello superiore e uno inferiore. In questo modo non è necessario definire drivers e stubs per i livelli superiore ed inferiore. Il top-down testing assume che tutti i componenti siano già stati testati individualmente, e quindi possano essere testati insieme come un unico sistema, in un unico passo di integrazione. 03. Nel contesto dei test di integrazione, una delle affermazioni che seguono non è corretta. Quale? Questa procedura permette di testare parti del sistema sempre più complesse circoscrivendo la localizzazione di possibili difetti. L'integration testing rivela i difetti che non sono stati evidenziati in fase di unit testing, prendendo in considerazione insiemi di componenti. Si inizia testando due componenti insieme; quando non appaiono difetti un terzo componente viene aggiunto al gruppo, e così via. 04. Il big bang testing è una delle possibili strategie su cui si basano i test di integrazione orizzontali. Quale, tra le seguenti descrizioni, meglio si adatta al big bang testing? Il big bang testing parte dal livello più alto, testando uno alla volta i suoi sotto-sistemi con l'ausilio di stubs che simulano i componenti dei livelli sottostanti. Quando tutti i componenti di un livello sono stati testati, si integrano (sempre uno alla volta) i componenti del livello successivo, e così via. Non sono necessari test drivers. Il big bang testing parte testando individualmente ogni componente appartenente al layer più basso dell'architettura, poi procede salendo di un livello e integrando i sotto-sistemi costituiti dal secondo livello, poi sale al terzo ecc. Il big bang testing mappa la decomposizione in sotto-sistemi su tre livelli: un obiettivo, un livello superiore e uno inferiore. In questo modo non è necessario definire drivers e stubs per i livelli superiore ed inferiore. 05. Il bottom-up testing è una delle possibili strategie su cui si basano i test di integrazione orizzontali. Quale, tra le seguenti descrizioni, meglio si adatta al bottom-up testing? Il bottom-up testing parte dal livello più alto, testando uno alla volta i suoi sotto-sistemi con l'ausilio di stubs che simulano i componenti dei livelli sottostanti. Quando tutti i componenti di un livello sono stati testati, si integrano (sempre uno alla volta) i componenti del livello successivo, e così via. Non sono necessari test drivers. Il bottom-up testing assume che tutti i componenti siano già stati testati individualmente, e quindi possano essere testati insieme come un unico sistema, in un unico passo di integrazione. Il bottom-up testing mappa la decomposizione in sotto-sistemi su tre livelli: un obiettivo, un livello superiore e uno inferiore. In questo modo non è necessario definire drivers e stubs per i livelli superiore ed inferiore. 06. Qual è il principale vantaggio dei test di integrazione verticali? Qual è lo svantaggio? 07. Elenca le principali attività connesse con il system testing.
Docsity logo


Copyright © 2024 Ladybird Srl - Via Leonardo da Vinci 16, 10126, Torino, Italy - VAT 10816460017 - All rights reserved