Desarrollo formal de programas ... -...

28
Desarrollo formal de programas Estructuraci ´ on de M ´ aquinas Carlos Olarte Universidad Javeriana-Cali Desarrollo formal de programasEstructuraci ´ on de M ´ aquinas-- p. 1/2

Transcript of Desarrollo formal de programas ... -...

Page 1: Desarrollo formal de programas ... - atlas.puj.edu.coatlas.puj.edu.co/~caolarte/puj/cursos/cc050/clases/Maquinas.pdfDesarrollo formal de programas Estructuraci´on de M ´aquinas Carlos

Desarrollo formal deprogramas

Estructuraci on de MaquinasCarlos Olarte

Universidad Javeriana-Cali

Desarrollo formal de programasEstructuraci on de Maquinas-- p. 1/28

Page 2: Desarrollo formal de programas ... - atlas.puj.edu.coatlas.puj.edu.co/~caolarte/puj/cursos/cc050/clases/Maquinas.pdfDesarrollo formal de programas Estructuraci´on de M ´aquinas Carlos

Obligaciones de Prueba (INCLUDE)

∃p2.C2

C1 ∧ C2 → ∃st1, ..k1.B1 ∧ B2

C1 ∧ C2 ∧B1 ∧ B2 → ∃v1...vn.I1 ∧ I2

C1 ∧ C2 ∧B1 ∧ B2 → [T1;T2]I2

C1 ∧ C2 ∧B1 ∧ B2 ∧ I1 ∧ I2 → [S]I2

Desarrollo formal de programasEstructuraci on de Maquinas-- p. 2/28

Page 3: Desarrollo formal de programas ... - atlas.puj.edu.coatlas.puj.edu.co/~caolarte/puj/cursos/cc050/clases/Maquinas.pdfDesarrollo formal de programas Estructuraci´on de M ´aquinas Carlos

Estructuración con SEES

Provee acceso de lectura sobre M1 a M2

El estado, constantes y conjuntos de M1 son visiblespor M2 en Operaciones e inicialización

M1 NO está bajo el control de M2

Operaciones Query de M1 pueden ser utilizadas enoperaciones de M2

Si M4 está incluida en M2 y M1 sees M2, M1 puede verel estado de M4 porque hace parte de la definición deM2

Desarrollo formal de programasEstructuraci on de Maquinas-- p. 3/28

Page 4: Desarrollo formal de programas ... - atlas.puj.edu.coatlas.puj.edu.co/~caolarte/puj/cursos/cc050/clases/Maquinas.pdfDesarrollo formal de programas Estructuraci´on de M ´aquinas Carlos

Continuación

Desarrollo formal de programasEstructuraci on de Maquinas-- p. 4/28

Page 5: Desarrollo formal de programas ... - atlas.puj.edu.coatlas.puj.edu.co/~caolarte/puj/cursos/cc050/clases/Maquinas.pdfDesarrollo formal de programas Estructuraci´on de M ´aquinas Carlos

Uso deSEES

Definición de conjuntos (tipos) comunes a variasmáquinas

MACHINE ProductosSETS PRODUCTOSEND

Desarrollo formal de programasEstructuraci on de Maquinas-- p. 5/28

Page 6: Desarrollo formal de programas ... - atlas.puj.edu.coatlas.puj.edu.co/~caolarte/puj/cursos/cc050/clases/Maquinas.pdfDesarrollo formal de programas Estructuraci´on de M ´aquinas Carlos

RelacionesUSES

Son como relaciones SEES pero el invariante de M2

puede hacer referencia al estado de M1

Que pasa si las operaciones de M1 no garantizan elinvariante de M2?. Una máquina M3 debe incluir a M1 yM2 imponiendo las condiciones de ejecución de las dos

Desarrollo formal de programasEstructuraci on de Maquinas-- p. 6/28

Page 7: Desarrollo formal de programas ... - atlas.puj.edu.coatlas.puj.edu.co/~caolarte/puj/cursos/cc050/clases/Maquinas.pdfDesarrollo formal de programas Estructuraci´on de M ´aquinas Carlos

Obligaciones de Prueba

∃p2.C2

C1 ∧ C2 ∧B1 → ∃st1, ..k1.B2

C1 ∧ C2 ∧B1 ∧ B2 → ∃v1...vn.I2

C1 ∧ C2 ∧B1 ∧ B2 → [T1;T2]I2

C1 ∧ C2 ∧B1 ∧ B2 ∧ I1 ∧ I2 → [S]I2

Desarrollo formal de programasEstructuraci on de Maquinas-- p. 7/28

Page 8: Desarrollo formal de programas ... - atlas.puj.edu.coatlas.puj.edu.co/~caolarte/puj/cursos/cc050/clases/Maquinas.pdfDesarrollo formal de programas Estructuraci´on de M ´aquinas Carlos

Un Ejemplo

MACHINE LifeSETS PERSON;SEX={boy, girl}

VARIABLES male, femaleINVARIANTmale ⊆ PERSON ∧ female ⊆ PERSON ∧male ∩ female = {}

INITIALISATION male := {}||female := {}

OPERATIONS born(pp,ss) =

PREpp ∈ PERSON ∧ ss ∈ SEX ∧ pp /∈ (male ∪ female) THENIF ss= boy THEN male := male ∪ {pp} ELSE female := female ∪ {pp}

ENDEND;die(pp) =

PREpp ∈ PERSON ∧ pp ∈ (female ∪male) THENIF pp ∈ male THEN male := male− {pp} ELSE female := female− {pp}

ENDEND;

Desarrollo formal de programasEstructuraci on de Maquinas-- p. 8/28

Page 9: Desarrollo formal de programas ... - atlas.puj.edu.coatlas.puj.edu.co/~caolarte/puj/cursos/cc050/clases/Maquinas.pdfDesarrollo formal de programas Estructuraci´on de M ´aquinas Carlos

Continuación

MACHINE MarriageUSES LifeVARIABLES marriageINVARIANT marriage ∈ male p female

INITIALISE marriage:={}OPERATIONS wed(mm,ff)=PREmm ∈ male ∧ ff ∈ female ∧mm /∈ dom(marriage) ∧ ff /∈

range(marraige) THEN marriage := marriage = {〈mm, ff〉} END END;part(mm,ff)=PREmm ∈ male ∧ ff ∈ female ∧ 〈mm, ff〉 ∈ marriage THENmarriage := marriage− 〈mm, ff〉 END END;pp← partner(xx)=PRE xx ∈ (dom(marriage) ∪ ran(marriage)) THENIF xx ∈ dom(marriage) THEN pp := marriage(xx) ELSEpp := marraige−1(xx) END END;

Desarrollo formal de programasEstructuraci on de Maquinas-- p. 9/28

Page 10: Desarrollo formal de programas ... - atlas.puj.edu.coatlas.puj.edu.co/~caolarte/puj/cursos/cc050/clases/Maquinas.pdfDesarrollo formal de programas Estructuraci´on de M ´aquinas Carlos

Continuación

MACHINE RegisterEXTENDS MarriageINCLUDE LifePROMOTES bornOPERATIONS die(pp) =

PREpp ∈ PERSON ∧ pp ∈ (female ∪male) THENdie(pp)|| IF pp ∈ dom(marriage) THEN part(pp, marriage(pp)) ELSEIFpp ∈ ran(marriage) THEN part(marriage−1(pp), pp) END END;

Desarrollo formal de programasEstructuraci on de Maquinas-- p. 10/28

Page 11: Desarrollo formal de programas ... - atlas.puj.edu.coatlas.puj.edu.co/~caolarte/puj/cursos/cc050/clases/Maquinas.pdfDesarrollo formal de programas Estructuraci´on de M ´aquinas Carlos

Continuación

Desarrollo formal de programasEstructuraci on de Maquinas-- p. 11/28

Page 12: Desarrollo formal de programas ... - atlas.puj.edu.coatlas.puj.edu.co/~caolarte/puj/cursos/cc050/clases/Maquinas.pdfDesarrollo formal de programas Estructuraci´on de M ´aquinas Carlos

Refinamiento

En una máquina abstracta M que especifica un sistema

1. Al usuario le concierne el qué (interfaz), no el cómo

2. No le interesa cómo se representa la información.

3. La especificación de M le da ideas generales sobre sufuncionamiento

4. Mientras los parámetros estén bien, le interesa sólo el resultado delas operaciones.

La representación de una máquina es otra máquina M1: Refinamiento.

M1 debe tener exactamente las mismas operaciones que M

Debe proveer un invariante de encadenamiento

Desarrollo formal de programasEstructuraci on de Maquinas-- p. 12/28

Page 13: Desarrollo formal de programas ... - atlas.puj.edu.coatlas.puj.edu.co/~caolarte/puj/cursos/cc050/clases/Maquinas.pdfDesarrollo formal de programas Estructuraci´on de M ´aquinas Carlos

Ejemplo de refinamiento

Un equipo de fútbol, con jugadores que se reemplazan a veces.

Operación sustituir. Cambia un jugador por otro

Operación consulta. Dice si un jugador está en el equipo.

El usuario no ve el estado interno de esta máquina. Sólo susoperaciones.

Desarrollo formal de programasEstructuraci on de Maquinas-- p. 13/28

Page 14: Desarrollo formal de programas ... - atlas.puj.edu.coatlas.puj.edu.co/~caolarte/puj/cursos/cc050/clases/Maquinas.pdfDesarrollo formal de programas Estructuraci´on de M ´aquinas Carlos

Especificación

MACHINE EquipoSETS RESP = {dentro, fuera}

VARIABLES equipo

INVARIANT equipo ⊆ 1.,22 ∧ card(equipo) = 11

INICIALIZATION equipo := 1.,11

OPERATIONSsustituir(jj, rr) = PRE jj ∈ equipo ∧ rr ∈ 1.,22 ∧ rr 6∈ equipoTHEN

equipo := equipo ∪ {rr} − {jj}END

aa← consulta(jj) = PRE jj ∈ 1.,22THEN

if jj ∈ equipo then aa := dentroelse aa := fuera

END

Desarrollo formal de programasEstructuraci on de Maquinas-- p. 14/28

Page 15: Desarrollo formal de programas ... - atlas.puj.edu.coatlas.puj.edu.co/~caolarte/puj/cursos/cc050/clases/Maquinas.pdfDesarrollo formal de programas Estructuraci´on de M ´aquinas Carlos

Refinamiento

equipo: arreglo de 11 elementos: los miembros del equipoREFINEMENT EquipoRREFINES Equipo

VARIABLES equipoR

INVARIANT equipoR ∈ 1.,11 1.,22 ∧ ran(equipoR) = equipo

INICIALIZATION equipoR := id(1.,11)

OPERATIONSsustituir(jj, rr) =

equipoR(equipoR−1(jj)) := rr;

aa← consulta(jj) =

if jj ∈ ran(equipoR) then aa := dentro else aa := fuera

END

Desarrollo formal de programasEstructuraci on de Maquinas-- p. 15/28

Page 16: Desarrollo formal de programas ... - atlas.puj.edu.coatlas.puj.edu.co/~caolarte/puj/cursos/cc050/clases/Maquinas.pdfDesarrollo formal de programas Estructuraci´on de M ´aquinas Carlos

Otro Refinamiento

equipo: arreglo de 22 elementos: valores en {dentro, fuera}

REFINEMENT EquipoAREFINES Equipo

VARIABLES equipoa

INVARIANT equipoa ∈ 1.,22→ RESP ∧ equipo = equipoa−1[{dentro}]

INICIALIZATION equipoa := (1.,11)× {dentro} ∪ (12.,22)× {fuera}

OPERATIONSsustituir(jj, rr) =

equipoa(jj), equipoa(rr) := fuera, dentro;

aa← consulta(jj) =

aa := equipoa(jj)

END

Desarrollo formal de programasEstructuraci on de Maquinas-- p. 16/28

Page 17: Desarrollo formal de programas ... - atlas.puj.edu.coatlas.puj.edu.co/~caolarte/puj/cursos/cc050/clases/Maquinas.pdfDesarrollo formal de programas Estructuraci´on de M ´aquinas Carlos

Pérdida de información

Otra manera de refinar: Eliminar información redundante.

1. El refinamiento puede especificar solamente la información querequieren las operaciones.

2. Es posible que algún estado de la especificación no se requiera en elrefinamiento.

Ejemplo: Una máquina que registra las notas de un curso y puedecalcular estadísticas sobre ellas.

Operación registrar : entra la nota de un estudiante

Operación promedio: calcula el promedio del curso

Operación tamaño: devuelve el tamaño del curso

Desarrollo formal de programasEstructuraci on de Maquinas-- p. 17/28

Page 18: Desarrollo formal de programas ... - atlas.puj.edu.coatlas.puj.edu.co/~caolarte/puj/cursos/cc050/clases/Maquinas.pdfDesarrollo formal de programas Estructuraci´on de M ´aquinas Carlos

Especificación

MACHINE ExamenSETS CANDIDATO

VARIABLES notas

INVARIANTnotas ∈ CANDIDATO 6→ 0.,100

INICIALIZATION notas := ∅

OPERATIONSregistrar(cc, nn) = PRE cc ∈ CANDIDATO ∧ cc 6∈ dom(notas) ∧ nn ∈

0.,100THEN

notas(cc) := nnEND;

aa← promedio =

aa :=∑

z∈dom(notas) .notas(zz)

card(dom(notas))

END

tt← tamano = tt := card(dom(notas))

ENDDesarrollo formal de programasEstructuraci on de Maquinas-- p. 18/28

Page 19: Desarrollo formal de programas ... - atlas.puj.edu.coatlas.puj.edu.co/~caolarte/puj/cursos/cc050/clases/Maquinas.pdfDesarrollo formal de programas Estructuraci´on de M ´aquinas Carlos

Refinamiento

REFINEMENT ExamenRREFINES Examen

VARIABLES total, num

INVARIANT num = card(dom(notas)) ∧ total =∑

z∈dom(notas) .(notas(z))

INICIALIZATION total, num := 0, 0

OPERATIONSregistrar(cc, nn) =

BEGINtotal, num := total + nn, num + 1END;

aa← promedio =

aa := total/num;

tt← tamano = tt := num

END

Agregar operación m← maxima_nota?

Desarrollo formal de programasEstructuraci on de Maquinas-- p. 19/28

Page 20: Desarrollo formal de programas ... - atlas.puj.edu.coatlas.puj.edu.co/~caolarte/puj/cursos/cc050/clases/Maquinas.pdfDesarrollo formal de programas Estructuraci´on de M ´aquinas Carlos

Herencia

El refinamiento R hereda información de la especificación M

R puede referirse a parámetros, conjuntos y constantes de M

También a conjuntos y constantes de máquinas incluídas por M

NO tiene acceso a información en máquinas vistas (SEES) o usadas(USES) por M

R tiene acceso al estado de M sólo “en compilación”, no en“ejecución” (el refinamiento no puede conocer el estado de lasvariables en tiempo de ejecución).

El refinamiento R es independiente de la máquina abstracta (secomporta “correctamente” sin necesidad de la máquina abstracta)

Desarrollo formal de programasEstructuraci on de Maquinas-- p. 20/28

Page 21: Desarrollo formal de programas ... - atlas.puj.edu.coatlas.puj.edu.co/~caolarte/puj/cursos/cc050/clases/Maquinas.pdfDesarrollo formal de programas Estructuraci´on de M ´aquinas Carlos

Ejemplo: Estante

Un estante en que se pueden apilar objetos (items)MACHINE Estante(limite)CONSTRAINTS limite ∈ N1

SEES Bool_TY PE

SETS ITEM

VARIABLES pila

INVARIANT pila ∈ seq( ITEM ) ∧ size(pila) ≤ limite

INICIALIZATION pila := ∅

OPERATIONSput(ii) = PRE ii ∈ ITEM ∧ size(pila) < limiteTHEN

pila := pila← iiEND;

ii← pop = PRE pila 6= ∅THEN

pila := front(pila) || ii := last(pila)

END;

bb← esta(ii) = PRE ii ∈ ITEM THEN

bb := bool(ii ∈ ran(pila))ENDDesarrollo formal de programasEstructuraci on de Maquinas-- p. 21/28

Page 22: Desarrollo formal de programas ... - atlas.puj.edu.coatlas.puj.edu.co/~caolarte/puj/cursos/cc050/clases/Maquinas.pdfDesarrollo formal de programas Estructuraci´on de M ´aquinas Carlos

Refinamiento

Arreglo representa la secuenciaREFINEMENT EstanteRREFINES EstanteSEES Bool_TY PE

VARIABLES arpila, contador

INVARIANT arpila ∈ 1..limite→ ITEM∧

contador ∈ 0..limite ∧ (1..contador) ⊳ arpila = pila

INICIALIZATION arpila, contador := ∅, 0

OPERATIONSput(ii) = BEGIN contador := contador + 1; arpila(contador) := iiEND;

ii← pop = BEGIN

ii := arpila(contador) ; contador := contador − 1

END;

bb← esta(ii) =

if ii ∈ arpila[1..contador] then bb := true else bb := falseEND

Desarrollo formal de programasEstructuraci on de Maquinas-- p. 22/28

Page 23: Desarrollo formal de programas ... - atlas.puj.edu.coatlas.puj.edu.co/~caolarte/puj/cursos/cc050/clases/Maquinas.pdfDesarrollo formal de programas Estructuraci´on de M ´aquinas Carlos

Refinamiento e inclusión

En refinamientos:

1. Pueden incluírse o extenderse máquinas abstractas

2. Pueden promoverse operaciones

3. PERO: la cláusula USES no puede aparecer en un refinamiento: escláusula para la especificación

4. El invariante de encadenamiento liga todo su estado (incluyendo elde máquinas extendidas o incluídas) con el de la abstracción

5. El estado de máquinas incluídas, extendidas o vistas es accesible

6. Pero sólo modificable usando las operaciones pertinentes

Desarrollo formal de programasEstructuraci on de Maquinas-- p. 23/28

Page 24: Desarrollo formal de programas ... - atlas.puj.edu.coatlas.puj.edu.co/~caolarte/puj/cursos/cc050/clases/Maquinas.pdfDesarrollo formal de programas Estructuraci´on de M ´aquinas Carlos

ejemplo

Un software para seguimiento de barcos en un muelle

1. Los barcos que llegan entran a cola de espera.

2. Hay muelles que acogen los barcos. Cada muelle puede acoger unsólo barco.

3. Los barcos, llegan, van al muelle indicado, descargan y se van.

4. Operaciones para llegar, atracar, salir

Desarrollo formal de programasEstructuraci on de Maquinas-- p. 24/28

Page 25: Desarrollo formal de programas ... - atlas.puj.edu.coatlas.puj.edu.co/~caolarte/puj/cursos/cc050/clases/Maquinas.pdfDesarrollo formal de programas Estructuraci´on de M ´aquinas Carlos

Especificación

MACHINE PuertoSETS BARCO, MUELLE

VARIABLES espera, enMuelle

INVARIANT espera ∈ seq(BARCO)∧

enMuelle ∈MUELLE 6 BARCO ∧ ran(espera) ∩ ran(enMuelle) = ∅

INICIALIZATION espera, enMuelle := [ ], ∅

OPERATIONSllegar(bb) = PRE bb ∈ BARCO ∧ bb 6∈ ran(espera) ∧ bb 6∈ ran(enMuelle)

THEN espera := espera← bbEND;

atracar(mm) =

PREmm ∈MUELLE ∧mm 6∈ dom(enMuelle) ∧ espera 6= [ ]

THEN espera, enMuelle(mm) := tail(espera), first(espera)END;

mm← salir(bb) = PRE bb ∈ BARCO ∧ bb ∈ ran(enMuelle)THEN

enMuelle := enMuelle ⊲ {bb} ||mm := enMuelle−1(bb)END

nn← cuantos = nn := size(enEspera)

ENDDesarrollo formal de programasEstructuraci on de Maquinas-- p. 25/28

Page 26: Desarrollo formal de programas ... - atlas.puj.edu.coatlas.puj.edu.co/~caolarte/puj/cursos/cc050/clases/Maquinas.pdfDesarrollo formal de programas Estructuraci´on de M ´aquinas Carlos

Refinamiento

Una cola FIFO para representar los barcos en espera. Proviene de unamáquina que encapsula esa nociónMACHINE FIFO(ELEMENTO)VARIABLES lista

INVARIANT lista ∈ seq( ELEMENTO )

INICIALIZATION lista := [ ]

OPERATIONSagregue(ii) = PRE ii ∈ ELEMENTO THEN

lista := lista← iiEND;

ii← elimine = PRE lista 6= [ ]THEN

lista := tail(lista) || ii := first(lista)

END;

Desarrollo formal de programasEstructuraci on de Maquinas-- p. 26/28

Page 27: Desarrollo formal de programas ... - atlas.puj.edu.coatlas.puj.edu.co/~caolarte/puj/cursos/cc050/clases/Maquinas.pdfDesarrollo formal de programas Estructuraci´on de M ´aquinas Carlos

Refinamiento(2)

Una función para representar enMuelle. Proviene de una máquina queencapsula esa nociónMACHINE FUNCION(INDICE, ITEM)VARIABLES fun

INVARIANT fun ∈ INDICE 6→ ITEM

INICIALIZATION fun := ∅

OPERATIONSinserte(i1, i2) = PRE i1 ∈ INDICE ∧ i2 ∈ ITEM THEN

fun(i1) := i2 END;

remover(i1) = PRE i1 ∈ INDICE THEN

fun := {i1} ⊳ fun

END;

i2 ← consulta(i1) = PRE i1 ∈ dom(fun)THEN i2 := fun(i1) END

END

Desarrollo formal de programasEstructuraci on de Maquinas-- p. 27/28

Page 28: Desarrollo formal de programas ... - atlas.puj.edu.coatlas.puj.edu.co/~caolarte/puj/cursos/cc050/clases/Maquinas.pdfDesarrollo formal de programas Estructuraci´on de M ´aquinas Carlos

Refinamiento(3)

REFINEMENT PuertoRREFINES Puerto

INCLUDES Fifo(BARCO), Funcion(BARCO, MUELLE)

VARIABLES num

INVARIANT espera = lista ∧ enMuelle−1 = fun ∧ num = size(espera)

INICIALIZATION num := 0

OPERATIONSllegar(bb) = BEGIN agregue(bb); num := num + 1END;

atracar(mm) =

BEGINVAR barco IN barco← elimine; inserte(barco, mm)END;

num := num− 1

END;

mm← salir(bb) = BEGINmm← consulta(bb); remover(bb)END;

nn← cuantos = nn := num

END

Desarrollo formal de programasEstructuraci on de Maquinas-- p. 28/28