Specifiche Algebriche Gianna Reggio [email protected] 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 * sem Specification 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 Item * rationale * * sem Specification 1 * m-over FormalModel * * holds * interpretation BasicSpecification prop: set(Formula) satisfies * * Formula 1 Signature 1 formulae f-over 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 logicoalgebrico, 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 – – – – 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 definire Slista aggiungendo a Slist la concatenazione di liste e l’operazione che ritorna l’insieme degli elementi di una lista • Esercizio 1: FINE Lezione 1 Lunedì 28 Ottobre 15-16