Ingegneria del Software II – 01BIF Esonero 6 Aprile 2006 Non e’ possibile consultare libri o appunti. Scrivere le risposte solo sui fogli forniti. Sono gradite risposte brevi in scritte in modo leggibile. Cognome, nome, matricola _________________________________________________ 1-Un CD/mp3 e' composto di -file di descrizione disco in inglese -file di descrizione disco in italiano -6 file di canzoni Il CD viene venduto in versione lunga (6 canzoni) e corta (2 canzoni), in inglese e italiano. Dire quali quanti sono i configuration item e fare un esempio di baseline corrispondente a una versione in vendita. Numero di configuration item:____8 (2 file descrizione, 6 file musica)____ Esempio di baseline: baseline1: 6 file canzoni, file descrizione italiano baseline2: 2 file canzoni, file descrizione italiano 2-Elencare in sequenza le attivita’ del processo di inspection 1-planning 2-overview (opzionale) 3-preparation 4-meeting 5-rework 3-Definire failure, fault e la loro differenza Failure: evidenza di malfunzionamento rispetto a attese (implicite) o specifiche (esplicite) Fault: errore in elemento di software system che causa failure Failure puo essere causata da uno o piu fault, fault puo’ causare da zero a molte failure 4-Qual e' la differenza tra testing e debugging? Testing: ricerca failure Debugging: ricerca e correzione fault 5-Qual e’ la definizione di affidabilita’ del software (reliability)? Probabilità che un componente o sistema svolga correttamente ed ininterrottamente la sua funzione per un periodo di tempo assegnato, in condizioni operative ed ambientali ben definite 6-Definire test black box per la funzione seguente Una funzione converte una sequenza di caratteri in un numero intero. La sequenza puo’ cominciare con un – (numero negativo). L’intero rappresentato dalla sequenza deve essere compreso tra minint e maxint (minint = -32768 maxint = 32767). La funzione deve segnalare errore se la sequenza non e’ ammessa. int converti(string s) “1” “ 1” 1 “1234” 1234 “1234567” errore “99999” errore “12ff99” errore Classe Intero ben formato, entro minint maxint Classe valida Positivo Converti(“10”) -> 10 Converti(“ 10”) -> 10 Negativo Converti(“-10”) -> -10 Converti(“ -10”) -> -10 Non intero, numero Non intero Classe non valida Converti(“99999”) -> err Boundary Condition Converti(“32767”) -> 32767 Converti(“32768”) -> err Converti(“32766”) -> 32766 Converti(“0”) -> 0 Converti(“”) -> err Converti(“-“) -> err Converti(“-99999”) -> err Converti(“3.7”) -> err Converti(“3.0E1”) -> err Converti(“1 1”) -> err Converti(“a”) -> err Converti(“abcde”) -> err Converti(“a11”) -> err Converti(“-32768”) -> -32768 Converti(“-32769”) -> err Converti(“-32767”) -> -32767 7-Definire test white box per la funzione seguente (linguaggio C) 1 2 3 4 5 6 7 8 9 10 11 int f (int num1, int num2, int num3) { if ((num1 < num2) || (num1 < num3)) printf("no ok“); while (num2 > 0) { num1 = num1 - 1; num2 = num2 - 1; } if (num1 == num3) printf("ok“); else printf("no ok“); } Definire il grafo di controllo Definire test case per copertura nodi, archi, decisioni ((num1 < num2) || (num1 < num3)) true Cout nok num2 > 0 true num1 = num1 - 1; num2 = num2 - 1; num1 == num3 Cout nok Criterio Nodi Archi Decisioni true Cout ok Input T1 1,2,3 T2 1,2,-1 T3 3,2,1 T1 T1 - T T nodo1 T3 - F F nodo1 T2 - T F T4 2,1,3 – F T Output Nok, Nok , ok , ok Nok, nok