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…sns
– 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