cerca
Tema d'Esame di Progettazione di Software Sicuro - 30/06/2017
modifica cronologia stampa login logout

Wiki

UniCrema


Materie per semestre

Materie per anno

Materie per laurea


Help

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)