Esempi di domande di teoria
INTRODUZIONE:
Si tracci una breve storia dell'Ingegneria del Software
Si descrivano le relazioni dell'Ingegneria del Software con i Linguaggi di programmazione, i Sistemi operativi, le Basi di dati, l'Intelligenza artificiale e i Metodi formali.
SOFTWARE:
Quali sono le caratteristiche che distinguono l'Ingegneria del Software da altri prodotti ingegneristici?
Si descrivano le qualità esterne del prodotto software.
Si descrivano le qualità interne del prodotto software.
Si descrivano le qualità del processo software.
Quali sono le qualità significative nei Sistemi informativi, Sistemi real-time, Sistemi distribuiti, Sistemi embedded?
PRINCIPI:
Quali sono le relazioni tra Principi, Metodi e tecniche, Metodologie e Strumenti?
Si descriva il principio di Rigore e formalità.
Si descriva il principio di Separazione degli interessi.
Si descriva il principio di Modularità.
Si descriva il principio di Astrazione.
Si descriva il principio di Anticipazione del cambiamento.
Si descriva il principio di Generalità.
Si descriva il principio di Incrementalità.
PROGETTAZIONE:
Si definiscano e si illustrino i concetti di progettazione per il cambiamento e per famiglie di prodotti.
Si descriva il concetto di Modularità dei progettazione, e si definiscano le possibili relazioni tra moduli.
Si definiscano i principi di implementazione ed interfaccia di un modulo, descrivendone le relative prassi di buona progettazione.
Si definiscano i principali aspetti delle notazioni TDN e GDN, avvalendosi anche di un semplice esempio.
Si definiscano e si descrivano categorie di moduli, citando anche tipi di dati astratti e generici
Si descriva la progettazione tramite raffinamento per passi successivi.
Si descriva l'importanza della gestione delle anomalie durante la fase di progettazione.
Si descrivano peculiarità e caratteristiche dell'UML e dell'Object-Oriented Design.
Si definisca il concetto di Design Pattern, descrivendo brevemente il pattern "Iterator".
Si definisca e si descriva un pattern a scelta tra i seguenti: Strategy, Template, Decorator, Observer
SPECIFICA:
Quali sono i diversi usi del termine specifica?
Si descrivano le qualità delle specifiche.
Si descrivano i diversi stili di specifica.
Come si verificano le specifiche?
Si descrivano i diagrammi di flusso dei dati.
Si descrivano i diagrammi UML per la specifica.
Si descrivano le macchine a stati finiti e i loro impieghi e limiti.
Si descrivano le reti di Petri di base.
Si descrivano le principali estensioni alle reti di Petri di base.
Si descrivano i diagrammi entità relazione.
Si descrivano le specifiche logiche.
Si fornisca un esempio di specifica logica di frammenti di programma.
Si descriva la specifica logica di classi.
Come si verificano le specifiche logiche?
Si descrivano le specifiche algebriche e se ne fornisca un esempio.
Quali sono i possibili problemi delle specifiche algebriche?
Come si applicano le tecniche di specifica nei casi reali?
Si descrivano gli UML Activity Diagram.
Si descrivano gli UML Statecharts.
Che cosa è Larch?
VERIFICA:
Si definiscano le basi della teoria del testing: test case, test set, criteri e relative caratteristiche.
Si definisca il principio di completa copertura nell'ambito del testing.
Si definiscano e descrivano brevemente i diversi criteri di copertura per il testing "white box".
Si definiscano e descrivano brevemente le diverse tecniche per il testing "black box".
Si definiscano e descrivano brevemente i diversi approcci per il testing in grande, a partire dalle pratiche di test di modulo.
Si descrivano le tecniche di analisi informale, con particolare rifermento al "Code walk-through" e alla "Code inspection".
Si descrivano i principi delle prove formali di correttezza.
Si descrivano brevemente i modelli di affidabilità e le varabili in essi coinvolte.
Si definiscano e descrivano brevemente le tecniche verifica di proprietà soggettive (McCabe, Halstead, GQM).
Si descriva il funzionamento di JUnit, portando un semplice esempio di classe di test.
Si descrivano brevemente le principali funzionalità di un IDE avanzato (Netbeans o Eclipse), tra cui refactoring, debugger e profiler.
Si descriva il sistema di versionamento del codice tramite subversion.
Si descriva il funzionamento di JUnit, portando un semplice esempio di classe di test.
PROCESSO:
Cosa sono i modelli di processo software?
Si descriva una breve storia dei modelli di processo software.
Quali sono le fasi del ciclo di vita di un software?
Che scopo ha lo studio di fattibilità?
Si descriva il processo di ingegneria dei requisiti.
Si descriva il processo di deduzione dei requisiti.
Quali sono le tecniche di convalida dei requisiti?
Si descriva il modello di processo a cascata.
Si descrivano i modelli evolutivi e i problemi che risolvono.
Si descrivano il modello trasformazionale e i relativi vantaggi e svantaggi.
Si descriva il modello a spirale.
Si descrivano l'evoluzione del software.
Si indichino i vari tipi di manutenzione a cui il software può essere sottoposto.
Come si realizzano modifiche ad un software?
Che cosa è la reingegnerizzazione di un software?
Cosa è il software legacy e quali sono le strategie della sua evoluzione?
In che cosa consiste la metodologia Structured Analysis / Structured Design?
In che cosa consiste la metodologia Jackson System Development?
Si descriva lo Unified software development process.
Si descrivano i metodi agili.
Si descriva l'Extreme programming.
Si descrivano le metodologie di sviluppo Microsoft e open source.
Si descriva come realizzare la gestione delle configurazioni.
Quali sono gli strumenti per la gestione delle configurazioni?
Come si possono classificare gli strumenti per l'ingegneria del software?
Si descrivano almeno tre tipi di strumenti per l'ingegneria del software.
GESTIONE:
Si definiscano e descrivano alcune misure di dimensione del software.
Si descrivano i passi principali della procedura di conteggio dei Function Point.
Si descrivano i diversi tipi di funzioni di tipo dati e di tipo transazione utilizzate nel conteggio dei Funtion Point.
Si definiscano e si descrivano alcuni modelli di stima dei costi della produzione software.
Si descrivano i modelli COCOMO e COCOMO II.
Si definiscano modelli e diagrammi per la gestione e pianificazione delle attività.
Si descriva il processo di gestione dei rischi nell'attività di produzione del software.
