Ingegneria del software Modulo 1 -Introduzione al processo software Unità didattica 3 -Modelli di fase d’analisi Ernesto Damiani Università degli Studi di Milano Lezione 16 – Complementi sul linguaggio Z (2)
Operatori (Congiunzione): le parti predicato comuni ai due schemi sono considerate congiuntamente, mettendo insieme le variabili comuni V (Disgiunzione): la creazione di uno schema la cui parte predicato è il risultato dell’unione delle parti predicato dei loro due argomenti con il connettivo logico V ).
Operatore logico di congiunzione L’operatore di congiunzione del calcolo di schema consente di unire una descrizione alla descrizione precedente di AddBirthday – AddBirthday Success Ciò descrive un’operazione che, se riceve un input corretto, agisce come descritto da AddBirthday e produce il risultato ok.
Operatore logico di disgiunzione Questa dichiarazione specifica che se si verifica un errore, lo stato del sistema non dovrebbe cambiare La versione “robusta” di AddBirthday può quindi essere – RAddBirthday (AddBirthday Success) V Alreadyknown
Uso di operatori
Dalla specificazione al design Raffinamento dei dati: descrive le strutture di dati concrete che il programma userà per rappresentare i dati astratti nella specificazione Raffinamento diretto: metodo per passare direttamente dalla specificazione astratta al programma in un solo passo
Raffinamento dei dati Strutture dei dati Due array : names [1…] of NAME dates [1…] of DATES names’ = names{i v} ; names[i] := v La parte destra di questa equazione è una funzione che assume lo stesso valore dei nomi ovunque tranne all’argomento i, dove prende il valore ‘v’
Raffinamento diretto e dei dati Esempio
Vantaggi È possibile ottenere una specificazione che può portare direttamente al codice Facile da capire Una classe estesa di modelli strutturali può essere descritta in Z e analizzata efficientemente Condizioni indipendenti possono essere aggiunte in un secondo momento FINE