Specifiche Algebriche Gianna Reggio reggio@disi.unige.it
Indice Introduzione Logica del prim’ordine, many-sorted, parziale con uguaglianza Segnatura many-sorted del prim’ordine Algebra many-sorted parziali del prim’ordine Formule Interpretazione e validità
Specifiche 1 Il processo di sviluppo di un sistema software (o di una sua parte) consiste essenzialmente nel produrre una serie di elaborati (artifacts) che descrivono tale sistema a diversi livelli di astrazione requisiti dal punto di vista dell’utilizzatore del sistema progetto (design) di massima progetto (design) dettagliato pseudo codice ... descrivono particolari aspetti di tale sistema prestazioni (Quality Of Service) tolleranza ai guasti dominio su cui opera il sistema
Specifiche 2 occorre produrre descrizioni di (particolari aspetti) (parti di) sistemi software, dette specifiche oppure modelli quale linguaggio/notazione utilizzare per tali descrizioni più comune: linguaggio naturale, magari con diagrammi/disegnini, completamente libero [informale] abbastanza espressivo non necessita di addestramento, ambiguo non adatto a manipolazioni per mezzo di strumenti informatici
Specifiche 3 diagrammi/testo aventi una forma molto precisa, ma il cui significato è presentato informalmente uusando il linguaggio naturale, es. UML, [semi-formale] espressivo necessita di istruzione, ma non di particolari consocenze teoriche possibilmente ambiguo adatto a manipolazioni a livello sintattico per mezzo di strumenti informatici notazione basate su una precisa teoria matematiche (es. logica del prim’ordine) [formale] poco espressivo necessita di istruzione, e della consocenza della teoria sottostante non ambiguo (corredato di semantica formale) adatto a manipolazioni a livello del contenuto per mezzo di strumenti informatici
Metodo di specifica (formale) Item rationale * Specification * sem FormalModel Item gli elementi specificati (descritti) [programmi funzionali] FormalModel strutture matematiche che corispondono agli item specificati [funzioni I/O] rationale come i formal model corrispondono agli item [….] sem semantica delle specifiche (ogni specifica individua un insieme di formal models)
Esercizi Esercizio 0: elencate delle notazioni/tecniche di specifiche che avete utilizzato prima di ora, classificandole rispetto alla loro formalità ed agli item che considerano.
Specifiche logico-algebriche 1 sig 1 * FormalModel Item rationale * Specification sem interpretation 1 * m-over Signature BasicSpecification prop: set(Formula) * holds satisfies f-over 1 formulae * Formula
Specifiche logico-algebriche 2 Signature i formal models sono classificati rispetto alla loro “struttura statica” [funzioni classificate dal loro tipo] m-over collega un formal model con la signature che descrive la sua struttura interpretation collega una signature con tutti i formal model aventi tale struttura Formula descrizione di proprietà di interesse riguardanti i formal models f-over ogni formula è costruita su una signature holds\satisfies quando una formula vale su un formal model\ un formal model soddisfa una formula
Specifiche logico-algebriche 3 BasicSpecification la forma più semplice di specifica logico-algebrico, esistono anche, per esempio, specifiche strutturate consiste essenzialmente di una segnatura e di un insieme di formule, chiaramente su tale segnatura sem in questo caso la semantica è definita come l’insieme dei modelli formali sulla segnatura della specifica che soddisfano tutte le formule della specifica stessa
In questo corso specifiche basate su una logica Item many-sorted del prim’ordine parziale con uguaglianza Item strutture dati moduli funzionali aspetti funzionali di programmi imperativi moduli imperativi (componenti) dominio applicativo frequentemente inclusa come sottoparte in molte notazioni (anche semi-formali, es., UML)
Formal models Algebre many-sorted parziali con predicati estensione di quelle viste ad Algebra classificate da segnature many-sorted del prim’ordine (viste a logica??)
Segnatura many-sorted del prim’ordine Una segnatura S = (S,F,P) consiste di un insieme S di nomi dei tipi, o sort una famiglia F di simboli di funzioni, indiciata su S*S se f Fs1…sn,s indicheremo f: s1…sns una famiglia P di simboli di predicati, indiciata su S* se p Ps1…sn indicheremo p: s1…sn
Esempio: Slist segnatura per le liste di interi S = { int, list } F consiste di 0: int [zerario, costante] S: int int empty: list push: int list list pop: list list top: list int P consiste di isempty: list isIn: int list Esercizio 1: definire Slista aggiungendo a Slist la concatenazione di liste e l’operazione che ritorna l’insieme degli elementi di una lista
FINE Lezione 1 Lunedì 28 Ottobre 15-16