WorksheetsIngegneria del Software — Domande estratte dal worksheet
Total questions: 100
Worksheet time: 50mins
Qual è la principale differenza tra un "programma" e un "prodotto software" secondo la letteratura classica (es. Sommerville)?
Il programma è scritto in linguaggi di basso livello, il prodotto in linguaggi OO.
Il prodotto software richiede un approccio formale e ha costi circa 10 volte superiori.
Non vi è alcuna differenza sostanziale se non il nome commerciale.
Il prodotto software è destinato a un singolo utente, il programma alla massa.
Cosa caratterizza la fase di "Industrializzazione" nell'evoluzione del software?
L'abbandono totale della documentazione a favore della velocità di codifica.
La nascita di piccoli gruppi artigianali che lavorano per singoli clienti.
La crescita di complessità e la necessità di migliorare produttività e qualità.
L'uso esclusivo di hardware dedicato prodotto nelle industrie pesanti.
Quale di questi è un "Mito del Management" riguardante il software?
Il software non si consuma fisicamente come l'hardware.
Se siamo in ritardo, aggiungere programmatori ci farà recuperare tempo.
La qualità del software dipende dal processo utilizzato.
Il costo principale del software risiede nel personale.
Secondo lo standard IEEE 610.12-1990, cosa comprende un prodotto software?
Solo il codice sorgente e i file binari compilati.
Codice, procedure, documentazione e dati associati.
Esclusivamente i manuali d'uso per l'utente finale.
L'hardware su cui il sistema deve necessariamente girare.
Nella Failure Curve del software, cosa rappresentano i "picchi" di guasti dopo un calo iniziale?
Il logoramento fisico dei circuiti di memoria.
Errori di sintassi non rilevati dal compilatore.
Effetti collaterali dovuti a modifiche o manutenzione.
L'aumento naturale degli utenti che stressano il server.
Cos'è un tool di "Upper-CASE"?
Uno strumento che supporta l'analisi dei requisiti e la progettazione.
Un compilatore ottimizzato per linguaggi ad alto livello.
Un programma per la gestione automatica dei backup.
Uno strumento utilizzato solo nella fase di testing finale.
Qual è il costo dominante nella produzione industriale di software?
Manpower (risorse umane).
L'acquisto di licenze per i database.
Il consumo energetico dei data center.
L'aggiornamento costante dell'hardware di sviluppo.
Cosa si intende per "Software Malleability"?
La capacità del software di adattarsi a qualsiasi sistema operativo.
La facilità percepita di apportare modifiche, che spesso porta a scarsa qualità.
La flessibilità dei supporti ottici su cui viene distribuito.
La possibilità di scrivere codice senza seguire regole sintattiche.
Nella classificazione di Boehm, un progetto "Large" quante linee di codice (LOC) prevede circa?
8.000 LOC.
32.000 LOC.
2.000 LOC.
128.000 LOC.
L'Ingegneria del Software è definita come l'applicazione di un approccio:
Casuale e creativo volto alla massimizzazione dei profitti.
Sistematico, disciplinato e quantificabile allo sviluppo.
Esclusivamente matematico per la dimostrazione di teoremi.
Basato puramente sulla velocità di digitazione del codice.
Il "Software Life Cycle" termina quando:
Il prodotto viene consegnato al cliente.
Il prodotto non è più disponibile per l'uso (ritiro).
Viene completata la fase di testing di sistema.
Il team di sviluppo viene sciolto.
Qual è la sequenza corretta delle fasi nel modello a Cascata (Waterfall)?
Requisiti, Progetto, Codifica, Test, Manutenzione.
Analisi, Test, Codifica, Requisiti, Design.
Prototipazione, Consegna, Analisi, Testing.
Studio di fattibilità, Codifica, Manutenzione, Requisiti.
Nel Waterfall, cosa si intende per "congelamento" (freezing)?
Il blocco dei server per manutenzione programmata.
L'impossibilità di modificare i risultati di una fase una volta approvati.
L'interruzione dei pagamenti da parte del cliente.
La sospensione dello sviluppo durante il periodo estivo.
Qual è il rischio principale del modello a Cascata?
La mancanza di documentazione tra le fasi.
L'eccessiva velocità nel produrre il codice finale.
Difficoltà nel gestire cambiamenti di requisiti in corso d'opera.
L'assenza di una fase dedicata alla progettazione.
Il modello a Spirale di Boehm è basato principalmente su:
La minimizzazione dei costi di licenza hardware.
L'analisi e la gestione iterativa dei rischi.
La scrittura del codice prima dell'analisi.
Una sequenza lineare che proibisce di tornare indietro.
In quale quadrante della Spirale avviene la Pianificazione della fase successiva?
Secondo quadrante (in alto a destra).
Primo quadrante (in alto a sinistra).
Quarto quadrante (in basso a sinistra).
Terzo quadrante (in basso a destra).
Cos'è la V-Model?
Un modello che evidenzia la relazione tra fasi di sviluppo e fasi di test.
Un ciclo di vita che prevede solo 5 fasi in totale.
Un approccio che ignora la validazione dei requisiti.
Una variante della spirale utilizzata solo per le interfacce grafiche.
Nel modello Incremental Delivery, il sistema viene:
Consegnato solo quando tutte le funzionalità sono perfette.
Sviluppato e consegnato in parti (incrementi) funzionali.
Rilasciato ogni giorno in versioni beta instabili.
Costruito partendo dai requisiti a priorità più bassa.
Cosa si intende per Software Prototyping?
La creazione di un'architettura definitiva non modificabile.
Lo sviluppo di una versione parziale per chiarire i requisiti.
Il test finale eseguito solo dai programmatori.
La traduzione del codice da un linguaggio all'altro.
La manutenzione correttiva serve a:
Aggiungere nuove funzioni richieste dal mercato.
Riparare errori scoperti dopo la consegna.
Adattare il software a un nuovo sistema operativo.
Migliorare le prestazioni senza cambiare le funzioni.
Quale modello è più adatto se i requisiti sono molto incerti all'inizio?
Modello a Cascata.
Sviluppo Evolutivo / Prototipazione.
Modello Trasformazionale.
Codifica immediata (Code & Fix).
Cosa rappresenta una Milestone?
Un punto di controllo che segna la fine di un'attività con un deliverable.
La prima riga di codice scritta nel progetto.
Il costo massimo raggiungibile dal budget.
Un errore bloccante che impedisce il rilascio.
Il modello Trasformazionale si basa su:
Trasformazioni manuali del codice sorgente in documentazione.
Trasformazioni formali e automatiche da specifiche a codice.
Il cambiamento continuo del team di sviluppo.
La conversione di software legacy in versioni web.
Cosa caratterizza lo sviluppo Exploratory (Esplorativo)?
L'assenza di contatti con il cliente dopo il contratto.
L'evoluzione del sistema basata su feedback utente ad ogni passo.
L'uso di droni per monitorare il progresso dei programmatori.
Lo studio esclusivo dei prodotti dei concorrenti.
Perché il modello a Cascata è considerato rigido?
Perché richiede l'uso di computer molto potenti.
Perché è difficile tornare indietro per correggere fasi precedenti.
Perché i programmatori non possono comunicare tra loro.
Perché il codice prodotto è troppo lento nell'esecuzione.
Nello studio di fattibilità, cosa si valuta?
Se il progetto è realizzabile tecnicamente ed economicamente.
Quante righe di codice verranno scritte ogni ora.
Il colore dell'interfaccia utente più gradito.
La velocità di connessione internet del cliente.
Cosa si intende per Validation (Validazione)?
Stiamo costruendo il prodotto nel modo corretto?
Stiamo costruendo il prodotto giusto per l'utente?
Il compilatore ha generato errori di sintassi?
Il budget è stato speso interamente?
Qual è un vantaggio della Prototipazione Rapida?
Riduce il rischio di incomprensione dei requisiti.
Elimina la necessità di testare il prodotto finale.
Garantisce che il codice sia sempre ottimizzato al massimo.
Riduce a zero i costi di manutenzione futura.
Nel modello a Spirale, chi decide se proseguire con un altro giro?
Solo il programmatore più esperto.
Il management in base all'analisi dei rischi e obiettivi.
Un algoritmo automatico di intelligenza artificiale.
Il reparto contabilità dell'azienda cliente.
Cos'è la Software Evolution?
Il processo di modifica del software per rispondere a nuovi bisogni.
Il passaggio automatico da Java 8 a Java 17.
La sostituzione del software con un operatore umano.
Il miglioramento delle prestazioni della CPU nel tempo.
Il costo della manutenzione è generalmente:
Uguale al costo dello sviluppo iniziale.
Molto superiore al costo dello sviluppo (fino al 70-80%).
Trascurabile se si usa il modello a cascata.
Pagato interamente dallo stato.
Cosa sono gli Acceptance Tests?
Test eseguiti dal cliente per decidere se accettare il prodotto.
Test di velocità per verificare la RAM occupata.
Controlli di sicurezza per entrare nell'edificio.
Revisioni del codice effettuate tra colleghi.
Cosa definisce il Software Development Cycle?
Dalla concezione al ritiro definitivo dal mercato.
Dalla decisione di sviluppare fino alla consegna al cliente.
Solo il tempo speso a scrivere codice sorgente.
Il periodo di garanzia legale del prodotto.
Quale fase segue immediatamente il Design (Progettazione)?
Requisiti.
Testing di accettazione.
Implementazione / Codifica.
Studio di fattibilità.
Cosa si intende per Risk (Rischio) nel CVS?
Un evento incerto che può avere impatto negativo sul progetto.
La probabilità che il computer si rompa durante la notte.
La certezza matematica che il progetto fallirà.
La scelta di un linguaggio di programmazione difficile.
Nel modello a Cascata, i Deliverables di ogni fase devono essere:
Solo verbali.
Documentati e approvati.
Scritti esclusivamente in codice binario.
Prodotti solo alla fine dell'anno solare.
Il modello a Spirale termina quando:
Sono finiti i soldi del budget iniziale.
Il rischio è pari a zero.
Viene rilasciato il prodotto e si passa alla manutenzione.
Tutti i programmatori imparano a usare UML.
Cosa si intende per Verification (Verifica)?
Stiamo costruendo il prodotto nel modo corretto (rispetto alla specifica)?
Il cliente è felice di usare l'applicazione?
Quante vendite ha fatto il prodotto nel primo mese?
Il software gira su telefoni Android?
Qual è lo svantaggio principale dello sviluppo Incrementale?
Il cliente non vede nulla fino alla fine del progetto.
L'architettura del sistema può degradarsi se non ben gestita.
Costa molto meno della cascata e quindi rende meno profitti.
Non permette di utilizzare database moderni.
La fase di Operation and Maintenance fa parte del:
Solo del Software Development Cycle.
Sia del Life Cycle che del Development Cycle.
Esclusivamente del Software Life Cycle.
Solo della fase di analisi dei requisiti.
UML è un linguaggio:
Di programmazione visuale per generare file .exe.
Grafico per specificare, visualizzare e documentare sistemi.
Matematico per la verifica formale della sicurezza.
Utile solo per disegnare interfacce grafiche (GUI).
Cosa si intende per Modello in Ingegneria del Software?
Una copia esatta del codice sorgente in formato PDF.
Un'astrazione della realtà che ne cattura gli aspetti rilevanti.
Il dipendente più esperto del team di sviluppo.
Lo schema dei database relazionali.
In UML, cos'è un Attore (Actor)?
Un programmatore che scrive il codice.
Un'entità esterna che interagisce con il sistema.
Una variabile globale all'interno di una classe.
Un componente hardware come la scheda video.
Quale diagramma descrive la struttura statica del sistema?
Sequence Diagram.
Use Case Diagram.
Class Diagram.
Activity Diagram.
Cosa rappresenta un Use Case?
Una sequenza di azioni che produce un risultato per un attore.
Un errore comune che il sistema deve gestire.
La gerarchia di ereditarietà tra le classi.
Il tempo di risposta di un server web.
In un diagramma delle classi, la Molteplicità 1.. indica:
Da uno a molti.
Esattamente uno.
Da zero a molti.
Esattamente dieci.
Quale diagramma mostra lo scambio di messaggi in ordine temporale?
Class Diagram.
Statechart Diagram.
Sequence Diagram.
Package Diagram.
Cosa si intende per Encapsulation (Incapsulamento)?
Nascondere i dettagli interni di un oggetto esponendo solo l'interfaccia.
Inserire il software dentro una scatola per la vendita.
Compattare il codice per ridurre le dimensioni del file.
Eseguire il backup automatico dei dati ogni notte.
La relazione di "Generalizzazione" in UML corrisponde a:
Composizione.
Ereditarietà.
Associazione semplice.
Dipendenza tra pacchetti.
Un diagramma delle Attività (Activity Diagram) è simile a:
Un database schema.
Un flowchart (diagramma di flusso).
Una lista della spesa.
Un manuale d'istruzioni cartaceo.
Cosa sono le "Swimlanes" negli Activity Diagrams?
Linee che indicano la velocità di esecuzione.
Partizioni che indicano chi esegue quali attività.
Collegamenti tra diversi diagrammi delle classi.
Commenti lasciati dal cliente sul modello.
Cosa significa "Reverse Engineering" riferito a UML?
Creare il codice partendo dai diagrammi.
Generare i diagrammi partendo dal codice esistente.
Cancellare il progetto per ricominciare da capo.
Tradurre UML in un linguaggio naturale.
In UML, un "Oggetto" è:
La definizione astratta di un concetto.
Un'istanza specifica di una classe a runtime.
Un file salvato su disco rigido.
Il sinonimo esatto di "Attributo".
Cosa descrive il "Functional Model" in UML?
Come il sistema è implementato internamente.
Le funzionalità del sistema dal punto di vista dell'utente.
La velocità delle funzioni matematiche.
La struttura del database fisico.
Il diagramma degli Stati (Statechart) è più utile per:
Descrivere il ciclo di vita di un singolo oggetto complesso.
Elencare tutti i dipendenti dell'azienda.
Mostrare la gerarchia dei pacchetti software.
Visualizzare la rete dei computer aziendali.
Cosa indica un rombo pieno (♦) in una relazione tra classi?
Aggregazione semplice.
Composizione (legame forte).
Generalizzazione.
Interfaccia.
In un Sequence Diagram, la linea tratteggiata verticale rappresenta:
Il tempo di vita dell'oggetto (Lifeline).
La quantità di memoria usata.
Il confine tra due diversi sistemi.
Un messaggio di errore.
Cosa si intende per "Application Domain"?
L'ambiente in cui il sistema opera (es. aviazione, banche).
L'indirizzo internet del sito web aziendale.
Il linguaggio di programmazione scelto.
L'insieme dei test eseguiti sul software.
Chi sono i principali autori dello standard UML (i "Tre Amigos")?
Booch, Rumbaugh, Jacobson.
Gates, Jobs, Allen.
Thompson, Ritchie, Kernighan.
Knuth, Dijkstra, Lamport.
Cosa si intende per "Forward Engineering"?
Scrivere i requisiti dopo aver finito il codice.
Produrre codice partendo da modelli UML.
Migliorare il codice senza cambiare i modelli.
Prevedere i bug prima che si verifichino.
In un diagramma dei Casi d'Uso, cosa indica "include"?
Che un caso d'uso è opzionale rispetto a un altro.
Che un caso d'uso contiene obbligatoriamente il comportamento di un altro.
Che il caso d'uso deve essere scritto in linguaggio C.
Che l'attore deve essere un amministratore.
Cosa rappresenta una "Nota" in UML?
Un vincolo matematico obbligatorio.
Un commento testuale collegato a un elemento del diagramma.
Una riga di codice Java inserita nel modello.
Il nome dell'autore del diagramma.
La modellazione aiuta a gestire la:
Velocità di digitazione.
Complessità del sistema.
Quantità di caffè bevuta dal team.
Temperatura dei processori.
Cosa indica "extend" in un diagramma dei Casi d'Uso?
Un comportamento aggiuntivo che avviene solo in certe condizioni.
L'ereditarietà tra attori.
La necessità di aggiungere nuovo hardware.
Che il caso d'uso dura più tempo del previsto.
Un attributo "privato" in una classe UML si indica con il simbolo:
+
#
-
*
Cosa descrive il "Dynamic Model"?
La disposizione dei mobili in ufficio.
Il comportamento del sistema nel tempo e le interazioni.
Le classi che cambiano nome ogni giorno.
La variazione del prezzo del software.
In un Activity Diagram, cos'è un "Join"?
Un punto in cui più flussi paralleli si riuniscono in uno solo.
La connessione a un database remoto.
La partecipazione di un nuovo programmatore al team.
Un errore di sincronizzazione dei dati.
Cos'è un "Package" in UML?
Una scatola di cartone per la spedizione.
Un meccanismo di raggruppamento di elementi correlati.
Un file eseguibile pronto per l'installazione.
Una variabile che contiene molti dati.
Quale di questi NON è un diagramma UML ufficiale?
Diagramma dei Flussi di Cassa.
Diagramma delle Classi.
Diagramma di Macchina a Stati.
Diagramma di Distribuzione (Deployment).
Cosa indica il "Fork" in un Activity Diagram?
La fine del programma.
La separazione di un flusso in più flussi paralleli.
Una scelta condizionale (if-else).
L'aggiornamento del software.
Qual è il problema dei canali di comunicazione in un'organizzazione Peer-to-Peer? Il numero di canali cresce come n(n−1)/2 .
I programmatori non possono parlarsi tra loro.
Il numero di canali cresce come n(n−1)/2 .
Nessuno usa l'email.
La comunicazione è troppo lenta.
In un team, cos'è un "Liaison"?
Un traduttore automatico di documenti.
Una persona responsabile della comunicazione tra team diversi.
Il capo supremo dell'azienda.
Un errore nel codice di rete.
Cosa si intende per "Asynchronous Communication"?
Comunicazione in tempo reale come una telefonata.
Comunicazione dove i partecipanti non sono presenti nello stesso momento (es. email).
Messaggi inviati tramite segnali di fumo.
Un ritardo nei pagamenti degli stipendi.
Qual è il compito principale del "Minute Taker" in una riunione?
Controllare che la riunione duri esattamente 60 minuti.
Registrare le decisioni e le azioni da intraprendere (Action Items).
Portare da mangiare a tutti i partecipanti.
Decidere chi può parlare e chi no.
Cos'è un "Deliverable"?
Un prodotto di lavoro consegnato ufficialmente al cliente.
Una pizza ordinata durante gli straordinari.
Una riga di codice che non è stata ancora testata.
Un file temporaneo rimosso dal sistema.
Il "Project Schedule" definisce:
L'elenco dei nomi di tutti i dipendenti.
La sequenza temporale dei task e le loro scadenze.
Il linguaggio di programmazione da usare.
Il costo di ogni singolo computer.
In una struttura gerarchica, le informazioni di "Stato" fluiscono:
Dall'alto verso il basso.
Solo in senso orizzontale.
Dal basso verso l'alto.
Direttamente verso i concorrenti.
Cosa sono gli "Action Items"?
Oggetti grafici cliccabili dall'utente.
Compiti specifici assegnati a persone con una scadenza.
Videogiochi usati durante le pause.
Le funzioni più importanti del codice sorgente.
Una comunicazione "Event-driven" è innescata da:
Una riunione programmata ogni lunedì mattina.
Un accadimento imprevisto (es. un bug critico o un cambio requisiti).
La fine naturale del mese solare.
La volontà del manager di fare due chiacchiere.
Qual è il ruolo del "Configuration Manager"?
Scegliere l'arredamento dell'ufficio.
Gestire le versioni dei file e i cambiamenti.
Convincere il cliente a comprare nuovi prodotti.
Scrivere il codice delle interfacce grafiche.
Perché si dice che in un grande progetto si comunica più di quanto si programmi?
Perché programmare è diventato inutile.
Perché coordinare centinaia di persone richiede un enorme scambio di informazioni.
Perché i programmatori moderni sono pigri.
Perché i documenti pesano più dei file sorgente.
Cosa si discute tipicamente in un "Kick-off Meeting"?
I motivi per cui il progetto è fallito.
Gli obiettivi, l'organizzazione e l'inizio ufficiale del progetto.
Il menu della cena di Natale.
La scelta dei colori del logo aziendale.
Cos'è un "Role" (Ruolo) in un progetto?
Il titolo scritto sul biglietto da visita.
Un insieme di responsabilità assegnate a una persona o gruppo.
Il nome del server principale.
Un tipo di dato usato in Java.
Nelle riunioni, cos'è l'"Agenda"?
Un libro dove si segnano i compleanni dei colleghi.
La lista degli argomenti da trattare durante la seduta.
Il software usato per gestire le email.
L'elenco dei partecipanti che sono arrivati in ritardo.
Un team "Peer-to-Peer" è caratterizzato da:
Una rigida gerarchia militare.
Decisioni prese collettivamente e comunicazione aperta.
Un unico capo che decide tutto senza consultare nessuno.
L'assenza totale di comunicazione tra i membri.
Qual è l'obiettivo primario della SCM?
Rendere il software più veloce nell'esecuzione.
Gestire l'evoluzione dei sistemi e controllare i costi dei cambiamenti.
Vendere più licenze possibili al cliente.
Impedire ai programmatori di cambiare il codice.
Cosa si intende per "Configuration Item" (CI)?
Un elemento del software (documento, codice) sotto controllo di configurazione.
Una singola icona sul desktop dell'utente.
Il tasto di accensione del computer.
Un errore trovato nel database.
Cos'è una "Baseline"?
Il punto di partenza minimo per lo stipendio.
Una versione stabile e approvata del sistema usata come base.
L'ultima riga di un file di testo.
Un test che fallisce sempre.
La differenza tra "Version" e "Revision" è che:
La versione è per l'hardware, la revisione per il software.
La revisione corregge bug, la versione aggiunge nuove funzioni.
Sono esattamente la stessa cosa.
La versione è scritta in inglese, la revisione in italiano.
Cosa fa il "Configuration Control Board" (CCB)?
Controlla che i programmatori arrivino puntuali.
Valuta e approva le richieste di cambiamento (Change Requests).
Ripara i server quando si rompono.
Decide il budget per la pubblicità.
Cosa si intende per "Release"?
Una versione del software distribuita agli utenti finali.
La cancellazione di un file dal repository.
Lo sblocco della memoria RAM.
Il licenziamento di un membro del team.
Un "Repository" in SCM è:
Un magazzino fisico per i CD-ROM.
Un archivio centrale che conserva i file e la loro storia.
Il cestino dei file eliminati.
Una variabile locale di una funzione.
Cos'è una "Variant" (Variante)?
Un bug che appare solo ogni tanto.
Una versione del sistema destinata a un ambiente diverso (es. Windows vs Mac).
Un errore di battitura nel manuale.
Un programmatore che usa un linguaggio diverso dagli altri.
Il comando "Check-out" serve a:
Uscire dall'ufficio timbrando il cartellino.
Prelevare un file dal repository per modificarlo.
Eliminare definitivamente un progetto.
Spegnere il server di configurazione.
Cosa si intende per "Promotion"?
Il passaggio di un CI da uno stato di sviluppo a uno stato più stabile (baseline).
Un aumento di stipendio per meriti tecnici.
La vendita del software a metà prezzo.
L'uso di un nuovo strumento CASE.
Quale di questi è un tool famoso per la SCM?
Microsoft Word.
Git.
Adobe Photoshop.
Google Chrome.
Cosa sono i "Change Requests" (CR)?
Richieste di cambiare la sedia dell'ufficio.
Documenti formali per richiedere modifiche al sistema.
Telefonate di protesta dei clienti.
Comandi per riavviare il computer.
In SCM, cosa si intende per "Branching"?
La creazione di una linea di sviluppo parallela.
La potatura degli alberi davanti alla sede aziendale.
L'uso di istruzioni "if" nel codice.
La divisione dell'azienda in due società diverse.
Lo standard IEEE 828-2005 riguarda:
Il formato dei cavi di rete.
I piani di gestione della configurazione (SCMP).
La crittografia delle password.
Il design dei diagrammi UML.
Cos'è il "Configuration Audit"?
Un controllo per verificare che la configurazione sia completa e corretta.
Una multa inflitta per errori nel codice.
Un test di velocità del database.
L'ascolto delle telefonate dei programmatori.
