Uni.TemiEsamePSS04 History
Hide minor edits - Show changes to output
Changed lines 18-38 from:
# MCDC della seguente istruzione: if (x > 1 && y > x && z > y)
to:
# MCDC della seguente istruzione: if (x > 1 && y > x && z > y)
!!Laboratorio
Purtroppo non sono riuscito a farmi lasciare dalla Prof. Ciriani il foglio dell'esame, ma si trattava della gestione dei posti su un vagone di un treno. Il vagone è diviso verticalmente in due lati, destro e sinistro, ognuno dei quali ha 30 file. Ogni fila è formata da tre posti: finestrino, centrale e corridoio. Il vagone è modellato, quindi, con due matrici di dimensione 30x3 e lo schema grafico è il seguente:
http://imgur.com/L1pGhxg
Le trenta file corrispondono alle righe della matrice e i posti (finestrino = f, centrale = c, corridoio = o) corrispondono alle colonne. Siccome abbiamo due lati del vagone, destro e sinistro, gli indici del finestrino e del corridoio saranno rispettivamente 0 e 2 per il lato sinistro e 2 e 0 per il lato destro.
La professoressa dava a disposizione un metodo già fatto ('''occupaPostiLatoSinistro''') che, una volta passata la fila e la lettera corrispondente al posto desiderato, restituiva true e occupava il posto. Notare che era specificato il fatto che il metodo non aveva (e non doveva avere) un controllo di posti già assegnati (cioè se prenotavo il posto 3 finestrino e poi riprenotavo lo stesso, il metodo non si accorgeva dell'errore).
I compiti erano:
# Creare un costruttore che inizializzasse correttamente le matrici # Creare un metodo '''occupaPostiLatoDestro''' che occupasse i posti del lato destro ma che includesse anche un controllo per i posti già assegnati # JML: invarianti, precondizioni e postcondizioni. Ad esempio contare che tutti i posti fossero effettivamente 180 oppure che ci fosse almeno un posto finestrino occupato # Unit test: verificare che fosse possibile prenotare posti uguali sul lato sinistro; verificare che non fosse possibile prenotare posti uguali sul lato destro; verificare la prenotazione di posti specificando una lettera inesistente # Copertura: JUnit copertura dell'if del metodo di '''occupaPosti'''. Era un if del tipo: if (posto == 'f' || posto == 'c' || posto == 'o') ...
Added lines 1-18:
(:title Tema d'Esame di Progettazione di Software Sicuro - 30/06/2017:) [[Torna alla pagina di Progettazione di Software Sicuro -> LinguaggiProgrammazioneSicurezza]] ----
%titolo%''':: Tema d'Esame di Progettazione di Software Sicuro ::''' %titolo%''':: (30/06/2017) ::'''
!!Prova Scritta
# Descrivere il processo di valutazione di un software sicuro # Descrivere tre tipi di attacchi di progettazione # Elencare e descrivere quattro principi di architetture sicure # Scrivere un contratto JML per il metodo int f(a []) che restituisce la somma degli elementi dell'array. '''a''' è un array di interi strettamente maggiori di zero # Classico esercizio UML azione/evento in cui c'era da descrivere un sistema di gestione del telepass/sbarra # Descrizione di criteri affidabili, validi e ideali # Data la funzione f (x, y, z) = x * (y * 10) + z con x, y, z > 1, 0 trovare un criterio ideale # MCDC della seguente istruzione: if (x > 1 && y > x && z > y)
|