Prove d'esame di Ingegneria Novembre PDF
Document Details
Uploaded by Deleted User
Tags
Summary
Queste domande sono domande di esame di ingegneria del software e riguardano i design pattern.
Full Transcript
ADAPTER 1. Il design pattern adapter permette a certe classi di interagire perché: (a) Rende note le istanze di classi presenti (B) Elimina l'incompatibilità tra le interfacce. (c) Passa le chiamate tra classi implementate in linguaggi diversi (d) Tiene traccia de...
ADAPTER 1. Il design pattern adapter permette a certe classi di interagire perché: (a) Rende note le istanze di classi presenti (B) Elimina l'incompatibilità tra le interfacce. (c) Passa le chiamate tra classi implementate in linguaggi diversi (d) Tiene traccia dei nomi delle classi disponibili 2. La soluzione per il design pattern Object Adapter avrà (A) Una istanza per ciascun ruolo Adapter. Adaptee, Target (B) Una istanza per ciascun ruolo Adapter e Adaptee (c) Nessuna istanza (d) Solo una istanza per il ruolo Adapter 3. Il design pattern Adapter può essere usato per (a) La gestione di un object pool (B) Controllare il verificarsi di condizioni prima di chiamare metodi (c) La riduzione dell'accoppiamento tra classi (d) Decidere quale oggetto istanziare 4. Il design pattern Adapter serve a (A) Convertire una interfaccia di una classe in un'altra (b) Convertire il tipo di una variabile (c) Cambiare l'interfaccia di una classe a runtime (d) Usare due nomi per una stessa classe 5. Per il design pattern Adapter, il ruolo Adapter (a) È una superclasse di altre classi del design pattern (b) È una classe (c) È una classe di libreria (D) È un'interfaccia 6. Il design pattern Adapter a due vie (a) Non si può implementare in Java (b) Fornisce l'interfaccia di libreria (c) Fornisce una indirettezza in più rispetto all' Adapter (versione Object) (d) È un altro modo di intendere l'Adapter (versione Object) 7. Il design pattern Adapter traduce (a) Invocazioni, variando nome metodi, tipi parametri etc. (b) Il tipo di un oggetto in un altro (c) Il riferimento di un oggetto (d) Il nome di una classe in un altro nome 8. Quale fra questi è un vantaggio che ottengo utilizzando il pattern Adapter a) Nascondere la complessità di un sotto-sistema B) Poter cambiare delle interfacce senza dover modificare il client c) Poter far interagire due server web diversi d) Aggiungere funzionalità ad una classe più semplice 9. Nella soluzione suggerita del design pattern Class Adapter: a) Adatta una classe modificandone i metodi > B) Elimina l'uso di una istanza all'interno di Adapter c) Non si può implementare in Java d) Istanzia un Adaptee all'interno dell'Adapter 10. Nella soluzione suggerita del design pattern Class Adapter: a) L'adapter contiene un riferimento all'oggetto Adaptee b) Il client contiene un riferimento all'oggetto Adaptee > C) L'Adapter eredita l'Adaptee d) L'Adaptee contiene un riferimento all'oggetto Adapter 11. La soluzione suggerita dal design pattern Class Adapter a) Non si può implementare in Java b) Non ha un'istanza all'interno del ruolo Adapter c) Istanzia una classe all'interno del ruolo Adapter d) Cambia una classe incompatibile modificandone i metodi BRIDGE 1. Il design pattern Bridge permette a) Di togliere funzionalità ad una certa istanza a Runtime b) Alle classi client di conoscere quanti metodi verranno eseguiti sulla piattaforma c) Di togliere una parte di implementazione ad una certa classe D) Alle classi client di distinguere fra varie astrazioni 2. Per una certa implementazione, il design pattern Bridge a) Richiede tipicamente tante classi client B) Richiede di implementare metodi con lo stesso nome su classi diverse c) Può fornire una lista delle istanze di classi del pattern d) Lascia che i nomi dei metodi pubblici siano scelti indipendentemente fra le classi 3. Il design pattern Bridge permette alla classe client di a) Tenere alcuni riferimenti a oggetti sottotipi di Implementor b) Non tenere riferimenti c) Non dover chiamare i metodi di Implementor D) Tenere riferimenti a oggetti che sono sottotipi di Implementor 4. Per il design pattern Bridge, Implementor A) È un'interfaccia b) Può essere un'interfaccia c) È una classe astratta d) Tiene un riferimento 5. Per il design pattern Bridge, la classe Abstraction a) Tiene il riferimento di tante istanze b) Chiama solo i metodi di una o più classi di libreria C) Tiene il riferimento di una istanza d) Dipende da una o più classi di libreria 6. In un codice che utilizza il pattern Bridge vengono creati 3 ConcreteImplementor e 4 Refined Abstraction. Se non utilizzassi il pattern, e volessi mantenere tutte le possibili combinazioni, quante classi dovrei creare? a) 7 B) 12 c) 9 d) 16 7. Un negozio vende una collezione di blocchi. Questi possono essere di metallo o di legno, dipinti, graffiati o patinati. Talvolta possono addirittura essere radioattivi o magnetizzati. Quale design pattern permetterebbe di introdurre nuove tipologie di blocchi senza modificare codice già esistente? a) Observer b) State C) Bridge d) Decorator CHAIN OF RESPONSIBILITY 1. Per il design pattern Chain of Responsibility a) Tutti i riceventi hanno la stessa priorità b) Si ha garanzia di avere una risposta c) Si può scegliere la priorità del ricevente D) Si hanno lunghe catene di possibili riceventi 2. Per il design pattern Chain of Responsibility si ha che a) Una classe conosce tutte le altre classi b) Ciascuna classe collabora con le altre per dare una risposta c) Una classe conosce più di una classe D) Ciascuna classe conosce solo la classe successiva 3. Per design Pattern Chain of Responsibility: A) I possibili riceventi sono più di uno //La classe ricevente potrebbe avere un singolo metodo pubblico b) Le classi richiedenti devono essere più di una c) Si richiede di implementare tanti metodi per ciascuna classe richiedente d) Si ha che il numero di richiedenti è pari al numero di riceventi 4. Il design pattern Chain of Responsibility A) Può costituire una soluzione per limitare l'accoppiamento fra classi b) Può far aumentare il numero di metodi di una classe c) Può alcune volte aumentare l'accoppiamento fra classi d) Può far diminuire il numero di metodi di una classe 5. Per il design pattern Chain of Responsability, il destinatario di una richiesta a) conosce il tipo a runtime successivo nella catena b) ha informazioni sul numero di elementi della catena C) Non conosce il tipo a runtime successivo nella catena d) Ha il riferimento dell’elemento che lo precede nella catena 6. Il vantaggio offerto dal design pattern Chain of Responsability è a) Predisporre classi che possono rispondere a chiamate b) Far conoscere fra loro le classi della catena C) Poter propagare le richieste a varie classi d) Ridurre l’accoppiamento fra richiedente e ricevente di una richiesta COMMAND 1. Quale delle seguenti è uno svantaggio dell'uso del pattern Command? (a) Gli stessi comandi potrebbero essere generati da elementi diversi dell'interfaccia (b) Si deve usare il pattern Singleton per imporre un gestore unico dei comandi (c) Si potrebbero penalizzare le prestazioni a causa dell'indirezione introdotta (d) I comandi ancora non eseguiti potrebbero essere anche annullati 2. Quale delle seguenti affermazioni sul pattern Command è inesatta? (a) Può conservare i comandi per un eventuale undo (b) ….. l’esecuzione dei comandi in modalità parallela (c) Custodisce tutte le istanze del comandi (d) Il set dei comandi custoditi …. A Runtime 3. In che categoria, in termini di ambito e tipologia, ricade il pattern Command? (a) Object Behavioral (b ) Class Behavioral (c) Object Structural (d) Class Structural 4. Viene utilizzato un oggetto per incapsulare tutte le informazioni necessarie a richiamare un metodo successivamente a)Bridge b) Prototype c) Strategy d) Command 5. Quale di queste è inesatta A) Schedula le esecuzioni 6. Una conseguenza dell'uso del pattern Command è a) Consentire il cambiamento dei comandi usati garantendo consistenza b) Nascondere a runtime i riferimenti presenti al suo interno c) Evitare I'uso di sottoclassi D) Disaccoppiare l'oggetto che invoca un'operazione da quello che sa eseguirla COMPOSITE 1. Per il design pattern Composite, una classe con il ruolo Composite a) Tiene una istanza per ciascun ruolo Leaf e Composite B) Può tenere riferimenti a istanze diverse della sua stessa classe c) Tiene solo riferimenti a istanze di Composite di classi diverse d) Tiene solo riferimenti a istanze di Leaf 2. Per il design pattern Composite, la superclasse //che è il composite A) Definisce i metodi che i client possono chiamare sulle sottoclassi b) Contiene metodi che sono chiamati dalle sottoclassi c) Chiama alcuni metodi su istanze delle sottoclassi d) Definisce solo metodi indipendenti dalle funzionalità dell'applicazione 3. Il design pattern composite ha come obiettivo: - Far apparire in modo uniforme i client e sono oggetti semplici e composti. 4. Per il design pattern Composite, si ha trasparenza quando il client a) Distingue oggetti semplici e composti b) Può usare oggetti semplici o composti C) Non deve distinguere fra oggetti semplici e composti d) Non può usare oggetti semplici o composti 5. Per il design pattern Composite, si ha sicurezza quando il client a) Può invocare metodi solo su oggetti composti b) Non può usare oggetti semplici o composti c) Può modificare il suo stato in base allo stato di oggetti composti D) Può chiamare la funzionalità di aggiunta istanze solo su oggetti composti 6. Per il design pattern Composite, il ruolo Composite A) Chiama metodi su istanze di sottotipi di Component b) Deve conoscere il tipo dell'oggetto semplice c) Deve conoscere il tipo della classe client d) Non deve conoscere più di un riferimento 7. Per il design pattern Composite a) I riferimenti sono tenuti nella superclasse b) La superclasse ha un metodo statico c) I riferimenti sono tenuti in una sottoclasse D) I riferimenti sono tenuti nelle sottoclassi 8. Per il design pattern Composite, una classe client per interagire A) Deve avere il riferimento ad una istanza di un sottotipo di Component b) Deve avere una variabile dichiarata del sottotipo della classe Composite c) Deve avere al più un riferimento d) Deve avere una variabile dichiarata di tipo della classe Composite 9. Quale pattern è particolarmente indicato per rappresentare delle strutture ricorsive ed operare su esse? a) Chain of Responsibility b) Decorator C) Composite d) Bridge 10. Il design pattern Composite La versione che produce trasparenza non può fornire sicurezza 11. La soluzione per il design pattern Composite avrà tipicamente a) Una istanza per il ruolo Leaf e varie istanze per Composite b) Una istanza per ciascun ruolo Composite C) Una istanza per il ruolo Composite e varie istanze per Leaf d) Una istanza per ciascun ruolo Leaf e Composite DECORATOR 1. Tramite il design pattern Decorator si possono ottenere a) Classi con un piccolo numero di linee di codice B) Gerarchie profonde di classi c) Classi con un grande numero di metodi d) Classi che chiamano tanti metodi di un'altra classe 2. Il design pattern Decorator può portare la classe client a a) Dover distinguere fra oggetti che sono sottotipi di Decorator b) Dover tenere vari riferimenti a istanze c) Non poter confrontare i riferimenti degli oggetti usati D) Dover chiamare vari metodi su vari oggetti 3. Il design pattern Decorator permette A) Di aggiungere o togliere un piccolo compito ad una classe b) Solo di aggiungere un piccolo compito ad una classe c) Di togliere un metodo ad una classe d) Di ridefinire un metodo di una classe 4. Per il design pattern Decorator, il ruolo Decorator A) Tiene un riferimento b) È un'interfaccia c) È una classe astratta d) Può essere un'interfaccia 5. Decorator, il ruolo decorator A) Viene Implementato da un component 6. Fissata un'interfaccia il design pattern decorator: a) Lascia non fissati alcuni nomi dei metodi pubblici delle classi b) Fornisce una lista di istanze di classi che la implementano C) Richiede di implementare metodi con lo stesso nome ma in classi diverse d) Richiede classi client diverse fra loro 7. Per il design pattern Decorator, generalmente il riferimento al ConcreateComponent A) Lo tiene il ruolo Decorator, e in alcuni casi la classe client b) Lo tiene lo stesso ConcreteComponent c) Lo tiene un ConereteDecorator d) Lo tiene la classe client, e in nessun caso il ruolo Decorator 8. Aggiunge delle funzionalità ad un oggetto in maniera dinamica A) Decorator b) Adapter c) Facade d) Composite 9. Il design Pattern Decorator permette A) Di togliere funzionalità ad una certa istanza runtime b) Alle classi client di distinguere fra varie implementazioni c) Di togliere una parte di implementazione ad una certa classe d) Alle classi client di conoscere i metodi eseguiti a partire da una classe chiamata 10. Il design pattern decorator può portare a: - Implementare classi grandi. FACADE 1. Per il design pattern facade (a) Il sottosistema ha tante classi (b) Il sottosistema è….. dal client (c) Il Facade può implementare il metodo main (NO) (d) Il sottosistema ha poche classi 2. Il design pattern Facade (A) Semplifica le classi che chiamano operazioni sul Facade (b) Si usa quando si hanno funzionalità simili fra varie classi (c) Fa sì che alcune classi diventino strettamente accoppiate (d) Fa aumentare le linee di codice delle classi che chiamano operazioni sul Facade 3. Si usa il facade quando: è consigliabile usare il facade quando: a) Si vogliono far dipendere i client solo da interfacce b) Si vuole nascondere la complessità di un sottosistema c) Si hanno classi molto accoppiate d) Si hanno classi con funzionalità simili 4. La classe che ha il ruolo Facade ha (a) Una sola classe nel sottosistema (b) Nessuna classe client, difatti il Facade potrebbe avere il metodo Main (c) Una sola classe client //se indica abbiamo visto a lezione (D) Un certo numero di classi client 5. Un vantaggio offerto dal design pattern Facade è: A) Ridurre le dipendenze di compilazione dei sistemi (b) Ridurre il numero di classi (c) Poter avere tante funzionalità diverse (d) Lasciar interagire oggetti direttamente 6. Il design pattern Facade permette di a) Individuare le funzionalità da implementare sulle classi b) Far conoscere lo stato interno alle classi client c) Organizzare gli algoritmi su una o più classi D) Ridurre le dipendenze fra varie parti di un'applicazione 7. Durante l’esecuzione, la classe che ha il ruolo Facade a) Fornisce lo stesso risultato se la chiamata a un suo metodo non ha parametri b) Non può tenere uno stato interno c) Tiene uno o più riferimenti ad oggetti d) Non chiama metodi di altri oggetti 8. Un vantaggio offerto dal design pattern Facade è (a) Offrire ai client operazioni rinominate (b) Aumentare il livello di astrazione di certe operazioni (c) Ridurre le dipendenze fra Facade e sottosistema //o le classi (d) Aumentare il numero di classi 9. Il design pattern Facade a) Ridurre il numero di classi di un sottosistema b) Richiede che le classi client conoscano varie classi C) Permette a classi client di non dipendere da alcune classi d) Aumenta il numero di classi di un sottosistema FACTORY METHOD 1. Per il Factory Method a) La classe ConcreteProduct ha un metodo che ritorna Creator b) La classe Creator ha un metodo che ritorna ConcreteProduct C) La classe ConcreteProduct ha un metodo che ritorna Product d) La classe ConcreteCreator ha an metodo che ritorna ConcreteProduct 2. Tramite l'uso del Factory Method il client ha il vantaggio di: A) Poter creare gli oggetti a runtime b) Poter scegliere quale creator utilizzare c) Controllare quando usare e creare un'istanza d) Indicare solo quando ha bisogno di un'istanza, ma non quando questa deve essere creata 3. Il Factory Method: La classe con ConcreteCreator a un metodo che ritorna ConcreteProduct 4. La soluzione del Factory Method suggerisce di avere a) Tanti Product b) un solo sottotipo di Product C) Almeno due sottotipi di Product d) un solo Product ed un solo sottotipo di questo MEDIATOR 1. Un vantaggio del Mediator è a) Aumentare la specializzazione delle classi B) Ridurre in specializzazione delle classi c) Fornire un'unica semplice interfaccia d) Rendere un sistema fortemente connesso 2. Usando il Mediator, la complessità delle classi è ridotta poiché a) Ciascuna classe gestisce solo le interazioni a cui è interessata b) Ciascuna classe non fornisce servizi da sé, ma attraverso il Mediator c) Ciascuna classe è più specializzata D) Ciascuna classe non dovrà gestire interazioni con altre classi 3. Nella soluzione proposta dal Mediator / Nel design pattern Mediator a) Colleague conosce la sua sottoclasse b) Mediator conosce la sua sottoclasse c) Colleague conosce la sottoclasse di Mediator D) Colleague conosce Mediator 4. Quale legge è soddisfatta quando si usa il Mediator? a) La legge di Murphy b) La prima legge di Lehman C) La legge di Demeter //ridurre la complessità d) La legge sui grandi numeri 5. L'obiettivo del Mediator è di avere a) Varie classi che non conoscono il Mediator b) Interazioni distribuite su più classi C) Interazioni per lo più isolate su una classe d) Classi che si chiamano fra loro 6. In un sistema che usa il Mediator, le classi A) Non interagiscono tra loro, ma con il Mediator b) Interagiscono tra loro e con il Mediator c) Non interagiscono con nessuno d) Conoscono al massimo altre due classi 7. Nella soluzione proposta dal design pattern mediator / Nella soluzione proposta dal Mediator A) Una sottoclasse di Mediator chiama i metodi di alcune sottoclassi b) Mediator chiama i metodi di alcune superclassi c) Una sottoclasse di Mediator chiama i metodi di alcune superclassi d) Mediator chiama i metodi di alcune sottoclassi 8. Il Mediator fornisce a) Implementa operazioni poco complesse b) Un oggetto che incapsula relazioni tra oggetti c) Ai client i riferimenti alle istanze gestite da esso D) Una interfaccia unificata ad un set di classi 9. I design pattern Mediator fa si che le classi siano a) Più coese b) Più numerose c) Più semplici da comprendere D) Meno accoppiate OBSERVER 1. Per il design pattern Observer, chi tiene la lista dei riferimenti? (A) Il Subject (b) L'Observer (c) La sottoclasse di Observer (d) La sottoclasse di Subject 2. Per il design pattern Observer, il ruolo Observer (a) Implementa un metodo il cui nome è stabilito dall'applicazione (b) Implementa un metodo che si chiama update. (c) Definisce un metodo il cui nome è stabilito dall'applicazione (d) Definisce un metodo che si chiama update //perché è un’interfaccia 3. Per il design pattern Observer, le sottoclassi di Observer (a) Devono essere più di 5 (b) Non possono essere istanziate (c) Devono essere meno di 10 (D) Possono essere un qualsiasi numero 4. Per il design pattern Observer le sottoclassi di Observer: (a) dovrebbero essere al massimo 20 (b) dovrebbero avere almeno 2 istanze ciascuna (c) dovrebbero essere almeno due. (D) Potrebbero avere una sola istanza ciascuna 5. Il design pattern Observer è consigliabile quando (a) Si vuol separare bene il codice di due classi (b) Si vuol chiamare un metodo di un'altra classe (c) Si vuol tenere coerente lo stato di una classe con quello di un'altra classe (d) Si vuol tenere separato lo stato di due oggetti 6. Il design pattern Observer, il Subject (A) Chiama un metodo e non passa parametri a tale metodo chiama una funz. es. notify() (b) Implementa un metodo update (c) Invia il riferimento a sé stesso // meglio l’altra (d) è una classe astratta o un'interfaccia 7. Il design pattern Observer, il Subject a) È una classe astratta b) È un sottotipo di un tipo definito dal design pattern c) È un’interfaccia D) È una classe 8. Il design pattern Observer consiste di a) Almeno una istanza di Observer B) Un Subject ed un certo numero di Observer c) Due Subject e due Observer d) Subject con la sua sottoclasse, e Observer con almeno una sottoclasse 9. Per realizzare il design pattern Observer, cosa è interessante osservare: - Lo stato del concreteSubject. 10. Nel Design pattern Observer si desidera ottenere: A) L'indipendenza tra un oggetto ed il numero e il tipo di osservatori b) Oggetti che non interagiscono c) Due oggetti strettamente accoppiati d) Due oggetti lascamente accoppiati 11. Per il design pattern Observer, quale codice è riusabile a) L'Observer e la sua sottoclasse b) Il Subject ma non l'Observer C) Il Subject e la sua sottoclasse d) Il Subject e l'Observer 12. Per il design pattern Observer, cosa è interessante osservare? a) il comportamento del Subject b) il comportamento del ConcreteObserver c) Lo stato del ConcreteObserver D) Lo stato del ConcreteSubject 13. Uno dei vantaggi del design pattern Observer è a) Isolare alcune classi B) Isolare il codice che chiama metodi di varie classi c) Ridurre il numero totale di chiamate di metodo d) Ridurre il numero di implementazioni PROTOTYPE 1. Quale di queste è una conseguenza tipica dell'uso del pattern Prototype // Una conseguenza dell’uso del pattern Prototype è a) Il clone cambia il suo stato in modo da riflettere i cambiamenti nel prototipo originale b) Quando un prototipo ha molti cloni li gestisco attraverso un prototype manager C) Prototipi con struttura complessa richiedono che il metodo clone() operi una deep copy d) I prototipi clonati non sono condivisibili 2. Come va catalogato in termini di ambito e tipologia il design pattern Prototype? (Pattern Creazionale) A) Class Creational object behavior 3. Quale delle seguenti non è una caratteristica del pattern Prototype? A) Ha una potenziale perdita di efficienza per l'aumento del numero delle classi b) Il prototipo è istanziato esternamente e poi passato come parametro c) Se clono un prototipo in modalità shallow le copie potrebbero interferire l'una con l'altra d) Quando la creazione di nuove istanze è costosa, clonando miglioro la performance SINGLETON 1. Il Singleton ha lo scopo di assicurare (a) Un unico codice per una certa classe (b) Ad un unico oggetto di chiamare metodi di una certa classe (c) Un unico punto di accesso globale ad una istanza (il get Istance ha un accesso globale) (d) Che ogni istanza abbia un identificatore unico 2. Nel Singleton, il metodo statico serve (a) Ad avere una sola istanza (b) A dare ai client la possibilità di invocare un metodo su una classe (c) A violare ai client l'uso del new sul Singleton (d) Ad affidare ad un unico oggetto la responsabilità di creare istanze 3. Grazie al singleton: Fornire per ogni istanza un'identificazione unica. 4. In genere quali dei seguenti prende decisioni su istanziazioni di classe: a) Una abstract class b) Mediator c) Singleton d) Observer 5. Limita l'istanziazione di una classe ad un solo oggetto A) Facade B) Observer C) Singleton D) NullObject 6. Sia la classe agent un singleton: agent a=agent.getistancet(): a) Verrà creata una volta sola l'istanza di Agent, a prescindere dal numero di esecuzioni b) Viene restituito un errore a compile time c) Viene restituito un errore a run time appena si incontra per la seconda volta tale linea di codice d) Verrà creata una istanza di Agent ogni volta che viene incontrata la suddetta linea di codice 7. L'implementazione di un Singleton suggerisce A) Un metodo statico per ottenere l'istanza b) Una interfaccia ed una classe che la implementa per gestire le istanze c) Una classe per la creazione di istanze ed un'altra classe per le funzionalità d) Un metodo privato per ottenere l'istanza STATE 1. Nella soluzione del design pattern State, ogni ConcreteState a) Definisce l'interfaccia che il client usa b) Definisce l'interfaccia associata ad uno stato c) Mantiene l’istanza di state //lo mantiene il context D) Implementa un comportamento. 2. Nel Design pattern State i client conoscono: a) ConcreteStateA e Context b) ConcreteStateA, ConcreteStateB, etc. c) State e Context D) Context L'utilizzo dello state è interno al Context. È solo con questo che il client interagisce. 3. Nel design pattern State, i client conoscono A) Nessuna sottoclasse di State b) State c) Sottoclassi di State d) State e sottoclasse di State 4. Il design pattern State permette in vari casi di: a) Spostare istruzioni condizionali, ma non ridurle o eliminarle b) Tenere lo stato di un oggetto c) Eliminare o ridurre inesattezze D) Eliminare istruzioni condizionali 5. Il design pattern State permette di a) Cambiare la classe su cui si esegue un'operazione quando lo stato varia b) Cambiare per un oggetto il suo stato c) Salvare lo stato di un oggetto D) Avere più classi con ciascuna avente uno stato 6. Il design pattern State fa sì che A) Un oggetto sembra cambiare la classe quando il suo stato varia b) Lo stato di un oggetto deve essere conservato c) Un oggetto possa cambiare il suo stato a piacimento d) Diverse classi rappresentano un unico stato 7. Un vantaggio del design pattern State è a) Ridurre il numero di classi che implementano un certo comportamento b) Eliminare invocazioni indirette tra il client e gli oggetti usati c) Avere una classe che nasconde un sottosistema D) Avere in un unico posto la logica che cambia lo stato //quell’unico posto è il client (cioè, quando si cambia stato) 8. Il ruolo State, per il design pattern State: A) permette ad un’istanza di cambiare comportamento //lo fa il context b) metodo che usano variabili di stato C) Permette di avere una variabile che tiene un’istanza di classi diverse. d) ha lo scopo di creare istanze 9. Per il design pattern State, una sottoclasse di State A) Implementa il comportamento di vari stati b) Tiene vari riferimenti agli stati c) Ha un attributo che tiene lo stato che rappresenta d) Può conoscere altre sottoclassi di state 10. Nel design pattern State, la classe che contiene il riferimento ad altri oggetti del design pattern a) Definisce l'interfaccia associata ad uno stato b) È la superclasse di State C) Definisce l'interfaccia che le classi client conoscono //anche se in realtà il context è una classe d) Implementa un comportamento per uno stato 11. Nel Design Pattern State il ruolo State: A) Definisce l’interfaccia associata in diversi ambiti b) Mantiene l’istanza di una sua sottoclasse c) Implementa un comportamento d) Definisce l’interfaccia che usano le classi client 12. Il design pattern State permette di: a) Avvisare le classi client quando avviene un cambiamento di stato b) Ridurre il numero di attributi che tengono lo stato di un oggetto c) Passare agli interessati lo stato di un oggetto D) Separare bene il codice che implementa il comportamento in un certo stato 13. In un gioco il personaggio protagonista acquisisce sempre più potenziamenti man mano che prosegue. Questi sbloccano nuove abilità, permettendogli di compiere azioni che gli erano precluse. Che pattern si può utilizzare per gestire il comportamento del personaggio? A) State b) Composite c) Bridge d) Observer 14. Il Design Pattern State Nello State la classe client conosce solo il Context Conosce varie classi implementate (NO) 15. Per eliminare le istruzioni condizionali A) Si potrebbe usare il design pattern State b) Si potrebbe usare il design pattern Singleton c) Si possono inserire le precondizioni d) Si potrebbe usare il design pattern Facade 14. Per evitare uno stretto accoppiamento delle classi, si può usare (a) State (b) Singleton (c) Il costrutto new (D) Factory Method Strategy 1. Il comportamento dell'algoritmo può essere selezionato a runtime a) Factory Method B) Strategy c) State d) Decorator DESIGN PATTERN IN GENERALE 1. I design pattern sono strutture a) Create appositamente quando si risolve un nuovo problema b) Per un piccolo numero di classi c) Utili alla fase di raccolta ed analisi dei requisiti D) Per un grande numero di classi 2. I design pattern / Un design pattern a) Un problema ricorrente b) Una soluzione collaudata ma generica c) Una soluzione non collaudata d) Un utile supporto per il riutilizzo del codice 3. I design pattern strutturali permettono di: a) Creare oggetti b) Comporre oggetti ma non classi c) Comporre classi ma non oggetti D) Comporre classi e oggetti 4. I design pattern: a) Forniscono una collezione di oggetti B) Descrivono una soluzione riusabile ad un problema noto. c) Forniscono un modo per riusare il codice (d) Forniscono una gerarchia di classi 5. Quando si usano i design pattern si ottiene sicuramente (a) Riuso del codice (b) Riduzione dei tempi di sviluppo (c) Una soluzione collaudata per un certo numero di problemi (d) Un sistema complessivo modulare 6. Quali parti fondamentali descrivono un design pattern? a) forze, soluzione, esempi, codice b) classi, relazioni, gerarchie, oggetti C) nome, intento, problema, soluzione, conseguenze d) nome, problema, soluzione, codice DIAGRAMMI – UML La sintassi di un diagramma delle attività è la seguente: Rettangoli arrotondati à per le attività Frecce à per i flussi e relazione Freccia vuota estremità: Ereditarietà Linea tratteggiata: implementazione Rombi à per le ramificazioni Rombi vuotià per aggregazione Rombi pienià per composizione Cerchio pieno à per lo stato iniziale 1. In UML, un diagramma delle attività mostra rettangoli a) Per attività, prodotti come ellissi e flussi con frecce b) Per attività, flussi con frecce c) Arrotondati per stati, flussi con frecce D) Arrotondati per attività, flussi con frecce 2. Nei diagrammi UML di sequenza A) Gli oggetti sono rettangoli allineati nella prima riga in alto b) Si mostra la sequenza di task utili per portare a termine un prodotto c) Gli oggetti sono nodi di un grafo d) Gli attori sono disegni di persone e le attività sono rettangoli 3. Nei diagrammi UML degli stati, i nomi degli stati sono indicati a) All'interno di rettangoli senza angoli arrotondati b) Alle estremità delle frecce delle transizioni c) Sopra i rettangoli con angoli arrotondati D) All'interno di rettangoli con angoli arrotondati 4. Nei diagrammi di interazione o collaborazione in uml: a) L'oggetto e un nodo di un grafo e le interazioni sono frecce b) Gli oggetti sono allineati nella prima riga in alto C) L'interazione tra oggetti è una linea con sopra una freccia numerata d) Le classi sono nodi di un grafo e le relazioni tra classi sono frecce 5. In un diagramma UML di interazione, le interazioni sono rappresentate da: a) Frecce b) Lince con sopra frecce c) Lince con triangoli ad una estremità D) Frecce piene 6. Quale diagramma uml si può inserire in un documento dei requisiti: - Diagramma delle classi. 7. Un diagramma di interazione o collaborazione è: A) Un grafo che mostra le chiamate tra i metodi delle istanze b) Un grafo che mostra la navigabilità tra le classi c) Un albero che mostra l'ereditarietà tra le classi d) Un grafo che mostra l'ereditarietà e istanziazioni fra classi e oggetti 8. I requisiti utente sono più spesso descritti tramite: A) Linguaggio naturale, tabelle, diagrammi b) Casi d'uso soltanto c) Linguaggio formale d) Diagrammi soltanto 9. La relazione di ereditarietà è rappresentata in uml da: a) Linee con un triangolo pieno ad una estremità B) Linee con un triangolo vuoto ad una estremità. c) Linee con un rombo ad una estremità d) Rettangoli annidati 10. In uml, un diagramma delle attività mostra rettangoli: - Arrotondati per stati, i flussi con le frecce. 11. In UML, un oggetto può essere rappresentato da A) Un rettangolo contenente il nome dell'oggetto, ":" ed il nome della classe a cui appartiene b) Un rettangolo con bordi arrotondati contenente il nome dell'oggetto c) Un rettangolo contenente "object" ed il nome della classe d) Un rettangolo contenente il nome della classe 12. In uml, l'implementazione di un'interfaccia è rappresentata da: a) Linee tratteggiate con un rombo all'estremità b) Linee continue con un triangolo vuoto all'estremità C) Linee tratteggiate con un triangolo vuoto all'estremità d) Linee senza frecce 13. In un piano per le attività di un progetto si trovano: a) Solo i costi del personale b) Solo diagrammi che indicano il lusso dei dati c) Diagrammi dei casi d'uso, delle classi degli stati D) Tabelle diagrammi a barre e rete di attività. 14. Le relazioni di aggregazione sono rappresentate in UML tramite / Le relazioni di aggregazione in UML sono rappresentate da (a) Rettangoli annidati (b) Linee con triangoli alle estremità (c) Linee (d) Linee con un rombo all'estremità 15. La navigabilità nelle relazioni dei diagrammi delle classi UML indica: - Per una classe quali altre classi conosce o usa. 16. La navigabilità nelle relazioni dei diagrammi delle classi UML indica: (a) Per un oggetto, le istanze di cui invoca i metodi (b) Per una classe, quali altre classi conosce/usa (c) Per una classe, quali oggetti usa (d) Per una classe, le classi di cui è composta 17. Le relazioni dei diagrammi UML delle classi indicano a) Gli oggetti usati un certo oggetto b) Gli oggetti usati una certa classe C) Le classi usate da una certa classe d) I metodi chiamati da una certa classe 18. In UML, la figura geometrica che rappresenta una interfaccia è a) Un rettangolo con Bordi Arrotondati b) Un rettangolo con uno stereotipo o un cerchio c) Un cerchio che contiene un rettangolo d) Un rettangolo REQUISITI Disegnare e spiegare i passi (o attività) della gestione dei requisiti in un processo tipo quello a cascata Studio di fattibilità Analisi dei requisiti Specifica dei requisiti Convalida requisiti 1. Quale documento è generalmente usato come contratto tra cliente e fornitore: (a) Guida per l'utente del prodotto (b) Specifiche del software (SRS) (c) Requisiti utente (D) Requisiti di sistema. 2. In genere, la pianificazione viene svolta (a) Subito prima della progettazione del sistema (b) Durante la fase di raccolta requisiti (c) In vari momenti, dall'inizio alla consegna del prodotto (d) Prima di iniziare a raccogliere qualsiasi requisito 3. Cosa sono i requisiti funzionali e quelli non funzionali? (a) Guidano a determinare le funzioni ed i dati del prodotto, rispettivamente (B) Indicano cosa il sistema deve fare ed alcune qualità rispettivamente (c) I requisiti funzionali sono più importanti, i non funzionali indicano ciò che il sistema non dovrebbe fare (d) Indicano entrambi cosa il sistema deve fare 4. Il documento della specifica dei requisiti (SRS) è (a) Una lista sommaria di cose che il software deve fare (B) Una lista precisa di cose che il software deve fare (c) Una stima delle risorse (tempo, costo, personale, etc.) richieste per costruire il software (d) Una descrizione precisa della struttura del sistema software 5. Un documento dei requisiti per iscritto mira a fornire: / Un documento dei requisiti ben scritto mirerà a fornire (a) Valutazioni sul codice che deriverà dagli stessi requisiti (B) Informazioni da cui derivare la progettazione del sistema. (c) Dettagli sulla progettazione del sistema (d) Dati sul guadagno che si trarrà dopo la produzione 6. Le convenzioni di codifica consistono di (a) Degli standard per la scrittura del documento SRS (b) Delle leggi sul copyright (c) Regole per la scrittura del singolo requisito (d) Norme per scegliere i nomi di metodi e classi 7. Nei documenti dei requisiti le dipendenze mirano ad indicare: - L’origine dei requisiti, le relazioni e funzionalità 8. Generalmente quale documento non è scritto per essere usato dai progettisti: (a) Requisiti di sistema (B) I requisiti utente. (c) Specifiche del software (SRS) (d) Nessuno dei documenti delle altre risposte 9. La frase “il sistema dovrà fornire prestazioni adeguate” è: (a) Un requisito molto importante (B) Un requisito non funzionale (c) Un requisito funzionale (d) Un requisito interpretabile in tanti modi 10. Quale documento è usato come contratto tra cliente e fornitore: - Requisiti di sistema. 11. Cosa sono i requisiti funzionali e non funzionali: - Indicano cosa il sistema deve fare ed alcuna qualità. 12. Durante la pianificazione di un sistema si dovrebbero: (a) progettare alcune parti del sistema (b) usare diagrammi e lo standard UML (c) stimare le durate delle attività che costituiscono lo sviluppo (D) Raccogliere i requisiti del sistema. 13. Nell'ingegneria dei requisiti è necessario: 1. Tutte le risposte :risolvere i conflitti, revisionare i requisiti, priorità. 2. Risolvere i conflitti fra i requisiti 3. Revisionare i requisiti raccolti 4. Stabilire le priorità 14. Cosa significa che i requisiti devono essere completi e consistenti: a) Ogni requisito ha un modello di descrizione b) Ogni requisito deve avere testo e diagrammi c) Tutto ciò che è descritto è testabile, ma non tutto è descritto d) Bisogna descrivere tutto senza contraddizioni 15. IL documento della specifica dei requisiti SRS: a) Una lista sommaria di cose che il software deve fare B) Una lista precisa che il software deve fare. c) Una stima delle risorse (tempo, costo, personale, etc.) richieste per costruire il software d) Una descrizione precisa della struttura del sistema software 16. La corrispondenza tra casi d'uso e requisiti: - Spesso si hanno le corrispondenze uno a molti e molti a uno. XP 1. Nel processo XP, i test sono eseguiti a) Almeno una volta alla settimana B) Almeno una volta al giorno c) Almeno una volta per la release d) Almeno una volta ogni 2 settimane 2. Per il processo XP, i test funzionali sono progetti (a) Dal cliente, su carta (b) Dopo il rilascio della prima release del software (c) Dagli sviluppatori (d) Dal cliente tramite un ambiente di sviluppo 3. Per il processo XP (a) La pianificazione iniziale delle attività è molto precisa (b) La documentazione è molta (c) Il codice prodotto ha bassa qualità (d) La documentazione ed il codice sono aggiornati continuamente (ed alta qualità) 4. Tipicamente per il processo XP, le release del software avvengono (a) Una release alla settimana (B) Una release ogni 2 settimane (c) Una release ogni 3 settimane (d) Una release ogni 4 settimane 5. Tipicamente, per il processo XP le story card sono (a) Gestite tramite database e fogli elettronici (b) Affisse in un posto visibile al team di sviluppo (c) Posizionate sulla scrivania del capo progetto (d) Date al cliente che lavora nella sede degli sviluppatori 6. Per il processo XP (a) Il codice prodotto ha bassa qualità (b) La documentazione ed il codice sono aggiornati continuamente (c) La pianificazione iniziale delle attività è molto precisa (d) La documentazione è molta 7. Per i test XP i test funzionali sono progettati o scritti: - Dagli sviluppatori 8. Processo XP ha / Il processo XP produce 1. Poca documentazione, aderente allo standard UML 2. Poca documentazione 3. La documentazione che serve, a discrezione degli sviluppatori 4. Molta documentazione 9. Quando si dovrà lavorare costantemente a contatto con i clienti è consigliabile il processo: (a) Cascata (b) Cascata, RUP (c) RUP (d) Spirale, XP 10. La documentazione della progettazione per il processo XP è costituita da (a) Diagrammi UML delle classi (b) Story card (c) Card che descrivono ciascuna la singola classe (d) Una card che descrive un insieme di classi 11. Il processo XP è adatto se (a) Cambiare continuamente i requisiti è probabile (b) Bisogna gestire un grande numero di sviluppatori (c) È importante produrre documenti precisi che descrivano requisiti e progettazione (d) Si vuol produrre rapidamente un prototipo del software 12. XP Tutto quello che vuoi // Il codice implementato Non è la risposta con solo LEGGI – LEGGE 1. La legge di Demeter dice (a) Non chiamare, aspetta di essere chiamato (b) Non sviluppare classi enormi (c) Parla solo con gli amici (d) Non parlare solo con gli amici 2. La legge di Demeter dice: Una classe non dovrebbe conoscere i dettagli implementativi di un’altra classe. 3. Le leggi di Lehman si adattano a: (A) Prodotti software grandi (b) Prodotti software piccoli (c) Prodotti software con COTS (d) Piccole aziende di software 4. Legge di Lehman dall'aumento della complessità dice: - La complessità tende a crescere con i cambiamenti. 5. La legge di Lehman sul cambiamento continuo dice: a) Poiché i sistemi sono aggiornabili, i cambiamenti sono continui b) I sistemi dovrebbero essere continuamente cambiati per rimanere utili c) Poiché i sistemi mutano continuamente degradano le loro prestazioni d) I sistemi prima o poi dovranno essere sostituiti da altri 6. Le leggi di Lehman valgono: (a) Per qualunque sistema software (B) Solo per i sistemi di grandi dimensioni sviluppati da grandi aziende. (c) Per sistemi di grandi dimensioni sviluppati seconda il processo a spirale (d) Per sistemi di grandi dimensioni sviluppati da qualsiasi azienda 7. Quale legge è soddisfatta quando si usa il Mediator? (a) La legge di Murphy (b) La prima legge di Lehman (c) La legge di Demeter (d) La legge sui grandi numeri 8. La legge di Lehman è pensata per: a) software di grandi dimensioni b) software di piccole dimensioni c) prodotti COIST d) piccole aziende di software TEST 1. Per il processo XP, i test funzionali sono progetti (a) Dal cliente, su carta (b) Dopo il rilascio della prima release del software (c) Dagli sviluppatori (d) Dal cliente tramite un ambiente di sviluppo 2. Nel processo XP, i test sono eseguiti (a) Almeno una volta alla settimana (b) Almeno una volta al giorno (c) Almeno una volta per la release (d) Almeno una volta ogni 2 settimane 3. I test su un singolo componente software sono detti: (a) Gamma test (b) Beta test se con i dati del cliente (C) Unit test (d) Alpha test 4. I test un singolo componente software sono detti (a) Gamma test (b) Beta test, se con i dati del cliente (c) Unit Test (d) Alpha test 5. I test funzionali del sistema devono essere condotti (a) Sulle macchine del cliente (si fa sui beta test) (b) Sul singolo componente (c) Nella sede del cliente (d) Su ogni componente e sui loro raggruppamenti 6. Per un sistema che è Spaghetti code (a) È stata seguita la progettazione ad oggetti (b) Non è possibile far test (c) Il codice è stato creato insieme al cliente (d) Si hanno classi con tanti metodi ALTRO 1. Con gestione di progetti si intende: (a) La pianificazione e lo scheduling di attività (B) Tutte le altre risposte (c) La gestione dei costi di produzione (d) La scrittura di documentazione del software 2. L'uso della riflessione computazionale: - Permette ad un programma di usare più classi rispetto a quelle del codice. 3. La libreria che consente l'uso della riflessione in Java fornisce: - I metodi getdeclared methods() e getname. 4. La coesione di una classe è: a) Alta se la classe ha pochi metodi e attributi b) Alta se tutti i metodi contribuiscono ad implementare un singolo compito c) Alta se il codice della classe è facile da comprendere d) Tanto più alta quanto più alta è la coesione di ogni metodo 5. In un sistema ad oggetto è buona norma sviluppare (A) Classi piccole, ciascuna responsabile per un piccolo compito. (b) classi piccole, ciascuna contenente poco codice e molti dati (c) poche classi, ognuna responsabile di più compiti (d) classi grandi in modo da minimizzare l’accoppiamento 6. L'ingegneria del software è meglio descritta come la pratica: (a) Sviluppare sistemi di alte prestazioni per applicazioni di ingegneria (b) Sviluppare prodotti software tutti diversi tua loro (C) Sviluppare e mantenere software affidabili con un costo adeguato. (d) Sviluppare sistemi grandi assemblando prodotti poco efficienti/affidabili 7. I settori di un ciclo a processo spirale sono: (a) Analisi, design, implementazione, integrazione e test (b) Analisi, design, implementazione, test e revisione (C) Identificazione obiettivi, analisi rischi, sviluppo, revisione e pianificazione. (d) Revisione, decisione pianificazione, marketing 8. Un processo software descrive: (a) Ciò che è in esecuzione per un certo programma b) Una certa modalità di funzionamento di un software (C) Le attività necessarie per lo sviluppo di un software. (d) Le attività che un software compie per trasformare dati in ingresso 9. Lo sviluppo dei sistemi orientati agli oggetti incoraggia l'uso di dipendenze / Nello sviluppo di sistemi OO è incoraggiato l'uso di dipendenze (a) Da interfacce e non da classi (b) Da librerie esterne (c) Da classi e non da interfacce (d) Da classi e oggetti 10. Quali caratteristiche fondamentali a un sistema riflessivo / Quali caratteristiche ha un sistema riflessivo (a) Introspezione e intercettazione (b) Elementi come classi, istanze e metodi (c) Capacità di conoscere lo stato di un oggetto (d) Concetti di ereditarietà e polimorfismo 11. Le caratteristiche che rendono il software differente da altri sono: - Complessità, modificabilità, invisibilità. 12. Date le attività Tl di durata 15 giorni, T2 di durata tre giorni, T3 durata sette giorni e sia: T3 dipendente da T2, Tl e T2 eseguono in parallelo: // Date le attività T1 da 15 giorni, T2 da 3 e T3 da 7, e sia T3 dipendente da T2; T1 e T2 possono essere eseguite in parallelo 1. T2 può durare 22 giorni senza cambiare la durata complessiva 2. Qualsiasi ritardo su T1, T2 o T3 si ripercuote sulla durata complessiva 3. T1 può durare 5 giorni in più senza cambiare la durata complessiva 4. T3 può durare 5 giorni in più senza cambiare la durata complessiva 13. L'attività T1 dura 15 giorni, T2 dura cinque giorni e T3, T4 durano insieme 10 giorni. T3 dipende da T2 e T1, inoltre, T4 dipende da T3; - Il percorso critico è di 35 giorni. 14. Date le attività T1 di durata 15 giorni, T2 e T3 cinque giorni e sia T3 dipendente da T2e T1; T1 e T2 eseguono in parallelo il percorso critico è di: // // Date le attività T1: 15g, T2: 5g e T3: 5g. T3 dipende da T2 e T1. T1 e T2 eseguono in parallelo. Il percorso critico è di: a) 15 giorni b) 30 giorni c) 25 giorni d) 20 giorni 15. Date le attività T1 di durata 15 giorni, T2 di durata 5 giorni, T3 di durata 10 giorni, T3 dipendente da T2; T1 e T2 eseguono in parallelo (a) Qualsiasi ritardo su T1, T2 T3 si ripercuote sulla durata complessiva (b) T2 può durare 5 glomi in più senza cambiare la durata complessiva (c) T3 può durare 5 giorni in più senza cambiare la durata complessiva (d) T1 pub durare 5 giorni in più senza cambiare la durata complessiva 16. Milestone e Derivable possono essere: - Dei documenti di specifica di descrizione dell'architettura 17. I processo evolutivo: Lo sviluppo evolutivo - è efficacemente applicabile a sistemi di piccole dimensioni 18. Nello sviluppo evolutivo a) Si cambiano i requisiti raccolti fino a che diventano stabili, dopo si fa il progetto che evolve fino a quando diventa completo, dopo si codifica b) Si tiene in vita un sistema già consegnato al cliente c) Si può gestire la complessità di un sistema di grandi dimensioni d) Da pochi requisiti raccolti si produce un prototipo che questo viene aggiornato mano a mano con nuove caratteristiche 19. Un'interfaccia X, ovvero public interface X: a) Serve a runtime ad allocare memoria per una variabile b) Può contenere metodi implementati c) Ha lo scopo di definire un tipo d) Ha lo scopo di definire un sottotipo 20. Un'interfaccia X ovvero public interface X: a) Contiene l'implementazione di algoritmi b) Può essere istanziata c) Permette alle classi che la usano di non legarsi ad una implementazione d) Contiene implementazioni di algoritmi non completi 21. Lo studio di fattibilità tiene in corrispondenza principalmente: - Obiettivi dell'organizzazione, costo del prodotto e tecnologie usate. 22. Si abbina il frammento di codice: public Libro getLibro() { return b.getLib(); } : a) è compilabile solo se getLib() restituisce un'istanza di Libro b) è compilabile solo se b è inizializzato c) sta svolgendo il ruolo di Factory method d) è inutile 23. Uno dei vantaggi della riflessione computazionale consiste nella: a) istanziare classi conosciute a compile time b) invocare metodi conosciuti a compile time c) invocare metodi conosciuti non conosciuti a design time d) invocare metodi conosciuti non conosciuti a runtime 24. Il metodo newIstance() è fornito dalla classe: a) Implementata dal programmatore dell'applicazione b) Method c) Object d) Class 25. Come si riducono i tempi di sviluppo: - Riusa codice ben documentato e corretto. 26. Con correttezza del software si intende: a) Facilità nell'apportare cambiamenti per soddisfare nuove esigenze b) Soddisfare il 90% degli utenti c) Aderenza allo scopo, conformità alle specifiche d) Evitare sprechi di memoria e del processore 27. La società moderna è: - Più indipendente da software rispetto a 15 anni fa. 28. Le fasi di rup sono: - Avvio, elaborazione, costruzione, transizione, produzione. 29. Le fasi generali del processo RUP sono (a) Revisione requisiti, unione e uso componenti, produzione e pianificazione (b) Analisi, progettazione, implementazione, test e revisione (c) Avvio, elaborazione, costruzione, transizione, produzione (d) Revisione, decisione, pianificazione, marketing 30. Il processo a cascata non è adatto a: (a) Cambiare i requisiti in nessuna delle sue fasi (b) Sviluppare sistemi realtime (c) Cambiare requisiti durante le fasi della progettazione e codifica (d) Produrre prototipi nella prima fase di sviluppo 31. Processo a cascata 10 classi Avrà una sola corrispondenza Al massimo 10 classi da adattare con un solo adapter 32.Durante lo sviluppo è possibile organizzare/Durante lo sviluppo software è possibile organizzare (A) Task secondo percorsi paralleli se ci sono indipendente. (b) task di breve durata se si hanno tanti sviluppatori (c) task di lunga durata se si hanno pochi sviluppatori (d) task dipendenti tra loro se si hanno tanti sviluppatori 33. Un caso d'uso rappresenta: (a) La struttura del sistema (B) Il comportamento del sistema dal punto di vista delle interazioni con l'utente. (c)L’insieme delle interazioni tra parti interne al sistema (d)Un insieme di obiettivi del sistema 34. Il metodo Join permette: - Far ripartire il thread su cui si invoca. 35. In genere la pianificazione viene svolta: - Subito dopo la progettazione del sistema 36. Il coupling tra classi è: coopling - Alto se il codice della classe e facile da comprendere. 37. Un ingegnere del software che si occupa in modo responsabile può: - Leggere i dati confidenziali. 38. Le dipendenze tra un'applicazione e le piattaforme hardware e software: - Sono riducibili studiando certe soluzioni. 39. Il metodo getfields(): - Si può invocare su una istanza di classe. 40. Cosa fa il current thread() (A) Restituisce un identificativo del thread (b) sospende il thread corrente (c) indica se il thread su cui viene invocato è running (d) indica se il thread su cui viene invocato è stato avviato 41. Una variabile di un certo tipo (a) Può contenere solo istanze di T (b) Può contenere istanze di T e di supertipi di T (c) Può contenere qualunque istanza (d) Può contenere istanze di T e di sottotipi di T 42. NON C’è LA DOMNDA (a) Stati sequenziali (B) Gerarchie tra stati (e) Stati composti (d) Stati concorrenti 43. Un …. Di un caso d’uso serve a rappresentare: (C) Una specializzazione di un caso d’uso di base 44. Un metodo di una classe che chiama un metodo astratto (provoca un errore) (esegue un momento esecuzione) 45. Una classe con tante linee di codice e tante responsabilità (a) È molto complessa (b) Serve ad avviare operazioni su altre classi (c) Contribuisce a diminuire la complessità di altre classi (d) Serve a creare istanze di oggetti 46. Con evoluzione del software si intende (a) L'esecuzione di test su un prodotto non ancora consegnato (Un processo di sviluppo che apporta continue modifiche al prodotto prima del rilascio) (b) La modifica di un prototipo non ancora consegnato (c) Il cambiamento del sistema software dopo la sua consegna 47. Si abbia il frammento di codice: public Box getBox() { return new MiniBox(); } (a) Il frammento sta svolgendo il ruolo di un Singleton (b) il codice è compilabile solo se MiniBox è sottoclasse di Box (c) II frammento sta svolgendo il ruolo di un Product (d) Il codice dovrebbe essere all'interno di una superclasse 48. Un metodo di una classe che chiama un metodo astratto (a) Esegue codice che è determinato al momento dell'esecuzione (b) Provoca un errore, rilevato al momento della compilazione (c) I metodi astratti non esistono (d) Provoca un errore, rilevato al momento dell'esecuzione 49. Le pratiche dell'ingegnere del software sono utili per produrre (a) Una singola versione di un sistema software (b) Tante versioni di un sistema software, in un arco di tempo lungo (c) Tanti sistemi software che derivano da sistema software preesistenti (d) Un preciso numero di versioni di un sistema software 50. Processo basato su COTS include (a) Modifica (evoluzione) di un sistema software (b) Acquisizione di componenti, modifiche su questi ed integrazione (c) Molte interazioni tra le persone (clienti, utenti, sviluppatori) (d) Sviluppo di componenti da riusare in successivi prodotti 51. La fase di progettazione produce e documenta (A) La struttura del software che realizza le specifiche (b) Le specifiche del software (c) Le modalità di utilizzo del software (d) Le funzionalità del software 52. Si abbia il frammento di codice: public Libro getLibro(){ return new Book (); } (a) Il frammento sta svolgendo il ruolo di un Factory Method (b) Il frammento sta svolgendo il ruolo di un Singleton (c) Il codice non è compilabile (d) Il codice dovrebbe essere all'interno di una superclasse 53. Nei sistemi ad oggetti è buona norma nascondere (a) Le classi ed il loro nome (b) I riferimenti agli oggetti (c) I dettagli degli algoritmi (c’è l’incapsulamento, nasconde i dettagli dell’algoritmo) (d) I commenti nel codice 54. È preferibile sviluppare (a) Classi grandi in modo da minimizzare l'accoppiamento fra classi (b) Poche classi, ognuna responsabile di più compiti (c) Classi piccole, ciascuna contenente pochi attributi e poco codice (d) Classi piccole, ciascuna responsabile di un piccolo compito 55. Quali delle seguenti attività non è prevista da nessun processo software / sviluppo? (a) Fornire al cliente gli sviluppatori di software (b) Rilasciare al cliente incrementi di software a scadenze regolari (c) Permettere ad un cliente di lavorare nella sede degli sviluppatori (D) Valutare se la produzione del software è strategica 56. Una variabile di un certo tipo T (a) Può contenere solo istanze di T (b) Può contenere istanze di T e di supertipi di T (c) Può contenere qualunque istanza (d) Può contenere istanze di T e di sottotipi di T 57. In un sistema ad oggetti è buona norma sviluppare (a) Classi piccole, ciascuna responsabile per un piccolo compito (b) Classi piccole, ciascuna contenente poco codice e molti dati (c) Poche classi, ognuna responsabile di più compiti (d) Classi grandi in modo da minimizzare l'accoppiamento 58. Il metodo join() permette di (a) bloccare il thread su cui si invoca (b) far ripartire il thread su cui si invoca (c) bloccare il thread invocante fino alla fine dell’esecuzione dei thread su cui si invoca (d) avviare il thread su cui si invoca 59. Un’ingegneria del software che si comporta in modo comprensibile può (D)Leggere i dati confidenziali dei suoi clienti a loro insaputa 60. Un’esecuzione di un caso d’uso serve a rappresentare (c) Una specializzazione di un caso d’uso di base 61. La fase di progettazione produce e documenta A) La struttura del software che realizza le specifiche b) Le funzionalità del software c) Le modalità di utilizzo del software d) Le specifiche del software 62. Il termine Spaghetti code indica (a) Una classe cha ha tanti metodi NO (b) Codice creato per il cliente (c) La progettazione ad oggetti (d) Un metodo che fa tante cose 63. Un codice spaghetti code: (a) Riusabile (B) Non riusabile (c) Con commenti in italiano (d) usa bene i concetti della programmazione ad oggetti 64. La presenza di una classe che invoca metodi di molte altre classi indica che (a) La classe è importante e le sue prestazioni dovrebbero essere ottimizzate (b) La classe dovrà essere cambiata quando cambiano altre classi (c) La classe è facile da comprendere (d) La progettazione è stata fatta bene 65. Un metodo lungo è il risultato: (a) Di una progettazione che vuole ottenere modularità. (b) Del buon uso del modello di programmazione ad oggetti. (c) Dell’uso di un modello di programmazione procedurale. (d) Di cambiamenti successivi apportati al codice. 66. Il processo Build and Fix è consigliabile (a) Per software di grandi dimensioni (b) Per software che si prevede avranno una vita lunga (c) Per la costruzione di prototipi del software (d) Per sviluppare qualsiasi software 67. Quali conseguenze ha una classe contenente una responsabilità? (a) è più facile da comprendere e probabilmente essa risulta riusabile (b) L'insieme dei suoi metodi consiste di una lista ridotta di compiti (c) La sua documentazione è semplice e quindi veloce da produrre (d) La sua implementazione è veloce poiché fa poche cose 68. Al fine di produrre un sistema pronto a riuso e evoluzione, si dovrebbe (a) Aumentare il numero di classi prodotte (b) Usare codice già disponibile e riadattarlo (c) Diminuire la dipendenza da operazioni specifiche (d) Scrivere poco codice, così da produrre poche classi 69. Le responsabilità di una classe sono (a) Tante se la classe ha tanti metodi (b) Poche se tutti i metodi contribuiscono ad implementare un singolo compito (c) Poche se la classe ha E pochi metodi e pochi attributi (d) Tante se il codice della classe è facile da comprendere 70. Cosa viene incrementato ad ogni ciclo del processo a spirale (a) Tempo per il completamento del prodotto (b) Rischio (c) Profitto (d) Nessuna delle altre risposte 71. Un metodo che ha un piccolo numero di linee di codice a) Implementa operazioni poco complesse b) Implementa operazioni poco utili C) È facilmente testabile d) Implementa operazioni poco astratte 72. La tecnica di refactoring Estrai Metodo si applica (a) Alle classi grandi (b) Solo ai metodi lunghi (c) Principalmente ai metodi che hanno tante responsabilità (d) A classi che hanno tanti attributi e tanti metodi 73. Quando si progetta un nuovo sistema ad oggetti (a) Si producono classi riusabili se si fa una progettazione attenta (b) Si producono facilmente classi riusabili (c) Si possono inventare nuovi design pattern (d) Le dipendenze fra classi non sono un problema 74. In un sistema composto da tante classi, il Facade è ben realizzato se (a) Ciascuna delle classi può chiamare metodi su qualsiasi altra classe (b) Tutte le classi conoscono il Facade (c) Il Facade chiama metodi su tutte le altre classi (d) Il Facade conosce poche classi, non tutte le classi 75. Sia Disk un Singleton. Si abbia il codice: d1=-Disk.get Instance (); d2=Disk.get Instance(); (m1==m2) return "0"; curn "1"; Quale è il valore restituito? 0 76. Un metodo di tipo Synchronized: a) Consente di iniziare l'esecuzione più velocemente b) Una volta iniziato, procede fino alla fine c) Aumenta il parallelismo del sistema d) Permette l'esecuzione di un solo thread all'interno dell'oggetto 77. L'ereditarietà consente di (a) Cambiare la classe a cui un'istanza appartiene (b) Cambiare a runtime la superclasse di una classe (c) Eliminare alcuni metodi della superclasse (d) Modificare uno o più metodi della superclasse 78. Il progetto basato su COTS dà maggior peso a) Alla comunicazione col cliente b) Alla produzione di documentazione c) Alla riduzione del tempo necessario per produrre software d) Al riuso delle componenti esistenti 79. Rispetto a programmare singolarmente, l’effetto del pair programming è: a) Produrre più codice b) rallentare lo sviluppo del sistema c) Produrre adeguata documentazione d) Produrre meno codice 80. Tramite l'uso della riflessione computazionale un programma: (A) Rappresenta parte del programma stesso e agisce su sé stesso. (b) legge il codice eseguibile dal programma stesso (c) legge il codice sorgente dal programma stesso (d) usa comunque solo le classi riferite nel codice sorgente 81. Una CRC card rappresenta (a) La documentazione di un requisito. (B) La documentazione relativa ad una classe. (c) Uno standard per la scrittura del documento dei requisiti. (d) La documentazione di alcune funzionalità non ancora corrispondenti ad un componente. 82. Il frammento di codice... public Libro getLibro() { return b.getLib(); } A) è compilabile solo se getLib() restituisce un'istanza di Libro b) è compilabile solo se b è inizializzato c) sta svolgendo il ruolo di Factory method d) è inutile 83. Il metodo newInstance() è fornito dalla classe a) Implementata dal programmatore dell'applicazione b) Method c) Object d) Class 84. In generale, per convalidare dei requisiti non è possibile a) Eseguirli tramite test b) Servirsi di prototipi c) Usare modelli di analisi di consistenza d) Sviluppare dei test 85. Quali delle seguenti attività non è prevista in nessun processo di sviluppo a) Fornire al cliente gli sviluppatori di software b) Rilasciare al cliente incrementi di software a cadenza regolare c) Permettere al cliente di lavorare nella sede degli sviluppatori d) Valutare se la produzione del software è strategica 86. I processi software sono: I processi software sono una serie di attività interconnesse e coordinate che coinvolgono la pianificazione, lo sviluppo, il test e la manutenzione del software. 87. La classe C contiene i metodi m1() e m2(), quando m1() chiama m2() a) Si esegue il metodo che il compilatore ha individuato b) Si esegue sicuramente il metodo di C c) Si esegue il metodo di C o quello di una sua superclasse D) Si esegue il metodo di C o quello di una sua sottoclasse 87. Quali sono dei nomi appropriati per metodo1, metodo2 e metodo3? Che modificatori sono mod1 e mod2: public class Buffer { private int box; private boolean full = false; public mod1 int get() throws InterruptedException { while (!full) metodo1(); full = false; notifyAll(); return box; } public mod2 void put(int value) throws InterruptedException { while (full) metodo2(); box = value; full = true; metodo3(); } } Risposta Aperta metodo1, metodo2 -> wait metodo3 -> notifyAll mod1, mod2 -> synchronized