La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Métodos Formales y Análisis de Herramientas para la Producción de Software Aristides Dasso, Ana Funes {arisdas, Universidad Nacional.

Presentaciones similares


Presentación del tema: "Métodos Formales y Análisis de Herramientas para la Producción de Software Aristides Dasso, Ana Funes {arisdas, Universidad Nacional."— Transcripción de la presentación:

1 Métodos Formales y Análisis de Herramientas para la Producción de Software Aristides Dasso, Ana Funes {arisdas, Universidad Nacional de San Luis 2006

2 A. Dasso, A. FunesMétodos Formales...2 Aspectos Sintácticos de RSL

3 A. Dasso, A. FunesMétodos Formales...3 Funciones

4 A. Dasso, A. FunesMétodos Formales...4 Funciones Una función es una transformación de valores de un tipo a valores de otro tipo. Pueden ser: –Totales –Parciales

5 A. Dasso, A. FunesMétodos Formales...5 Funciones Totales Una función f, que transforma valores de un tipo T1 en un tipo T2 es total si para todo valor en T1 devuelve un único valor en T2. La denotamos en RSL: f: T1 T2 y satisface la propiedad: x: T1 ! y: T2 f(x) y

6 A. Dasso, A. FunesMétodos Formales...6 Funciones Totales Ejemplos value check: Person Database Bool check(p, db) p db value distance: Position Position Real distance ((x1, y1), (x2, y2)) ((x2 - x1) (y2 - y1) 2.0) 0.5

7 A. Dasso, A. FunesMétodos Formales...7 Una función f, que transforma valores de un tipo T1 en un tipo T2 es parcial si existe un valor en T1 para el cual f no puede retornar un valor (es decir, es no terminante), o el resultado es no determinísitico. La denotamos en RSL f: T1 T2 Funciones Parciales (1)

8 A. Dasso, A. FunesMétodos Formales...8 Funciones Parciales (2) Las funciones parciales son usualmente definidas con precondiciones, p.e.: factorial: Int Int factorial(x) if x = 0 then 1 else x factorial(x – 1) end pre x 0 Esto dice que cuando la precondición es true, la aplicación de la función es equivalente a la expresión que la define. La precondición nos dice que usemos factorial sólo cuando x 0. No nos dice qué sucede en otro caso.

9 A. Dasso, A. FunesMétodos Formales...9 Funciones Parciales, ejemplos factorial: Int Int factorial(x) if x = 0 then 1 else x factorial(x – 1) end pre x 0 ________________es equivalente a:_______________ factorial: Int Int axiom x:Int x 0 (factorial(x) if x = 0 then 1 else x factorial(x – 1) end) __________________y también a:________________ factorial: Int Int axiom x:Int factorial(x) if x = 0 then 1 else x factorial(x – 1) end pre x 0

10 A. Dasso, A. FunesMétodos Formales...10 Expresiones de Aplicación de Funciones Ejemplos: factorial(10) sqrt(4) Forma típica: expr_función(expr 1,..., expr n ) Condiciones de contexto: expr 1,..., expr n debe ser del tipo argumento de expr_función

11 A. Dasso, A. FunesMétodos Formales...11 Definición de funciones Elegir el nombre Decidir signatura: –tipo argumento T a –tipo resultado T r –Total ( ) o Parcial ( ) total: si podemos definirla para todos los valores en T a parcial: si se necesita una precondición. Decidir el estilo

12 A. Dasso, A. FunesMétodos Formales...12 Estilo de definición de funciones: explícito Si es posible establecer una fórmula. f(x) expr[x] Ejemplo: value f: Int Int f(x) x + 1

13 A. Dasso, A. FunesMétodos Formales...13 Estilo de definición de funciones: implícito Si es posible establecer una relación entre los datos de entrada y los de salida: p[x, r] Ejemplo value f: Int Int f(x) as r post r > x

14 A. Dasso, A. FunesMétodos Formales...14 Estilo de definición de funciones: axiomático –Siempre es posible –Típicamente usado en conexión con los sorts. –Signatura + axioma(s) value f: Int Intf: Int Int axiomaxiom x: Int f(x) > x x: Int f(x) x + 1

15 A. Dasso, A. FunesMétodos Formales...15 Composición de Funciones º : (T 2 T 3 ) (T 1 T 2 ) (T 1 T 3 ) (f º g) (x) = f(g(x)) scheme PRB = class value f : Int Nat f(x) x 2, g : Int Int g(x) 2 * x, h : Int Nat h(x) (f º g)(x) end

16 A. Dasso, A. FunesMétodos Formales...16 Composición de Funciones scheme PRB = class value f : Int Nat f(x) x 2, g : Int Int g(x) 2 * x, h : ((Int Nat) (Int Int) Int) Nat) h(x, y, z) (x º y) (z), uso_h: Int Nat uso_h(x) h(f, g, x) end

17 A. Dasso, A. FunesMétodos Formales...17 Definiciones algebraicas de Funciones Ejemplo 1: Una lista de enteros Una lista es una secuencia ordenada de elementos. Se puede construir una nueva lista agregando un elemento a una lista dada. Se puede recuperar la cabeza de la lista (head) que corresponde al último elemento agregado, así como recuperar su cola (tail) que corresponde al resto de la lista, sin la cabeza.

18 A. Dasso, A. FunesMétodos Formales...18 scheme LIST = class type List value empty : List, add : Int List List, tail : List List, head : List Int axiom i : Int, l : List tail(add(i, l)) l, i : Int, l : List head(add(i, l)) i end

19 A. Dasso, A. FunesMétodos Formales...19 Ejemplo 2: Una Base de Datos Requerimientos (1) La base de datos asocia claves únicas con los datos. Es decir, una clave se encuentra asociada con a lo sumo un elemento de datos en la base de datos. Además, la base de datos deberá proveer las siguientes funciones:

20 A. Dasso, A. FunesMétodos Formales...20 Ejemplo: Una Base de Datos Requerimientos (2) insert asocia una clave con un dato en la base de datos. Si la clave ya se encuentra asociada a otro elemento de datos, la nueva asociación borra la anterior. remove remueve una asociación entre una clave y un dato. defined verifica si una clave está asociada a algún dato. lookup retorna el dato asociado con una clave particular.

21 A. Dasso, A. FunesMétodos Formales...21 scheme DATABASE = class type Database, Key, Data value empty : Database, insert : Key Data Database Database, remove : Key Database Database, defined : Key Database Bool, lookup : Key Database Data

22 A. Dasso, A. FunesMétodos Formales...22 Técnica para identificar axiomas 1.Identificar los constructores del tipo de interés. 2.Definir las restantes funciones en términos de los constructores.

23 A. Dasso, A. FunesMétodos Formales...23 Técnica para identificar axiomas, aplicado al ejemplo de la base de datos 1.Los constructores son la constante empty y la función insert. Cualquier base de datos puede ser representada por una expresión de la forma: insert(k1, d1, insert(k2, d2,... insert(kn, dn, empty)...)) 2.remove, defined y lookup definidos en términos de los constructores empty e insert.

24 A. Dasso, A. FunesMétodos Formales...24 axiom [remove_empty] k : Key remove(k, empty) empty, [remove_insert] k, k1 : Key, d1 : Data, db : Database remove(k, insert(k1, d1, db)) if k = k1 then remove(k, db) else insert(k1, d1, remove(k, db)) end,

25 A. Dasso, A. FunesMétodos Formales...25 [defined_empty] k : Key defined(k, empty) false, [defined_insert] k, k1 : Key, d1 : Data, db : Database defined(k, insert(k1, d1, db)) k = k1 defined(k, db), [lookup_insert] k, k1 : Key, d1 : Data, db : Database lookup(k, insert(k1, d1, db)) if k = k1 then d1 else lookup(k, db) end pre defined(k, db) end

26 A. Dasso, A. FunesMétodos Formales...26 Ejemplo 3: Los axiomas de Peano para los números Naturales Informalmente, los axiomas de Peano pueden ser establecidos como sigue: 0 es un número natural. Todos número natural a tiene un sucesor. Ningún número natural tiene a 0 como su sucesor. Distintos números naturales tienen distintos sucesores. Si una propiedad se mantiene para 0, y se mantiene para el sucesor de todo número natural para el cual también se mantiene, entonces la propiedad se mantiene para todos los números naturales.

27 A. Dasso, A. FunesMétodos Formales...27 scheme PEANO = class type N value zero : N, succ : N N axiom [cero_es_el_primero] n : N ~ (succ(n) zero), [orden_lineal] n1, n2 : N (succ(n1) succ(n2)) (n1 n2), [inducción] p : N Bool (p(zero) ( n : N p(n) => p(succ(n)))) => ( n : N p(n)) end

28 A. Dasso, A. FunesMétodos Formales...28 Ejemplo 3: Los axiomas de Peano para los números Naturales (cont.) Queremos ahora extender los axiomas de Peano con las operaciones de suma y multiplicación.

29 A. Dasso, A. FunesMétodos Formales...29 scheme NATURAL_NUMBERS = extend PEANO with class value plus : N N N, mult : N N N axiom [plus_zero] n : N plus(n, zero) n, [plus_succ] n1, n2 : N plus(n1, succ(n2)) succ(plus(n1, n2)), [mult_zero] n : N mult(n, zero) zero, [mult_insert] n1, n2 : N mult(n1, succ(n2)) plus(mult(n1, n2), n1) end

30 A. Dasso, A. FunesMétodos Formales...30 La conmutatividad y asociatividad pueden probarse a partir de los axiomas anteriores. Usando la técnica explicada, toda expresión que involucre un no-constructor puede demostrarse que es equivalente a una expresión que sólo use constructores. Pedimos además que los axiomas sobre los no- constructores hagan algún progreso para lo cual necesitamos una de dos condiciones: –El lado derecho no involucre un no-constructor. –El lado derecho aplica no-constructores sólo a términos con menor cantidad de constructores.

31 A. Dasso, A. FunesMétodos Formales...31 Funciones, ejercicios (1) 1. Suggest types for the operators (a) + (addition) (b) * (multiplication) (c) \ (remainder) (d) (exponentiation) Remember that they may have both integer and real versions.

32 A. Dasso, A. FunesMétodos Formales...32 Funciones, ejercicios (2) 2. Define a function, max, that returns the maximum of two integers in each of the following styles: (a) explicit function (b) implicit function (c) signature/axiom

33 A. Dasso, A. FunesMétodos Formales...33 Funciones, ejercicios (3) 3. Define a function, approx_sqrt, that for a given tolerance (positive real number) finds an approximation to the square root of non- negative real numbers. The approximation, approx_sqrt(x,eps), must be such that the mathematical square root, square_root(x), lies in the half open interval [approx_sqrt(x,eps),approx_sqrt(x,eps) + eps)

34 A. Dasso, A. FunesMétodos Formales...34 Conjuntos

35 A. Dasso, A. FunesMétodos Formales...35 Conjuntos Un conjunto es una colección, no ordenada, de valores distintos, del mismo tipo. Ejemplos: {1,4,8} {} {Juan, Pedro, María}

36 A. Dasso, A. FunesMétodos Formales...36 Expresión de tipo conjunto La expresión de tipo expr_de_tipo-set representa el tipo que contiene todos los conjuntos finitos de elementos de tipo expr_de_tipo

37 A. Dasso, A. FunesMétodos Formales...37 Conjuntos, ejemplos Bool-set representa todos los conjuntos finitos de Bool. Es decir: {}, {true}, {false}, {true, false} Nat-set representa todos los subconjuntos finitos del conjunto de los naturales. Es decir: {}, {0}, {1},...,{0,1},...,{1,2},...

38 A. Dasso, A. FunesMétodos Formales...38 Conjuntos infinitos La expresión de tipo expr_de_tipo-infset representa el tipo que contiene todos los conjuntos finitos así como los infinitos de elementos de tipo expr_de_tipo

39 A. Dasso, A. FunesMétodos Formales...39 Conjuntos infinitos, ejemplos Bool-infset representa los mismos conjuntos que Bool-set. Nat-infset contiene no sólo los conjuntos finitos sino también los infinitos: {}, {0}, {1},...,{0,1},...,{1,2},... {0,1,2,3...}, {1,2,3...}, {1,3,5,7,9,...},...

40 A. Dasso, A. FunesMétodos Formales...40 Conjuntos, propiedades No existe un orden de sus elementos, p.e.: {1,2,3} = {3,2,1} No contiene valores repetidos: {1,2,3,3} = {1,2,3} Para cualquier tipo T, T-set es un subtipo de T-infset.

41 A. Dasso, A. FunesMétodos Formales...41 Conjuntos definición explícita Un conjunto puede ser definido explícitamente: {expr 1,...,expr n } donde expr i tienen un tipo maximal común y n 0. Ejemplo : {1, 2, 3} {} {Juan, Pedro}

42 A. Dasso, A. FunesMétodos Formales...42 Conjuntos, definición implícita Un conjunto puede ser definido implícitamente: {expr 1 typing 1,..., typing n expr 2 } donde n 1 y expr 2 es booleana.

43 A. Dasso, A. FunesMétodos Formales...43 Conjuntos, definición implícita, ejemplo {2 n n: Nat n 3 } Se lee el conjunto de valores 2 n donde n es un número natural tal que n es menor o igual a tres. Es decir que es igual a {0, 2, 4, 6}

44 A. Dasso, A. FunesMétodos Formales...44 Conjuntos, ejemplos {n n: Nat es_primo(n)} donde es_primo: Nat Bool Es igual al conjunto {2, 3, 5, 7,...} {(x, y) x, y: Nat y = x+1} es igual al conjunto {(0, 1), (1, 2), (2, 3),...}

45 A. Dasso, A. FunesMétodos Formales...45 Expresiones de conjuntos con rangos {expr 1.. expr 2 } donde expr 1 y expr 2 son expresiones enteras Si expr 1 > expr 2 el conjunto resultante es vacío.

46 A. Dasso, A. FunesMétodos Formales...46 Expresiones de conjuntos con rangos, ejemplos {3.. 7} = {3, 4, 5, 6, 7} {3.. 3} = {3} {3.. 2} = {}

47 A. Dasso, A. FunesMétodos Formales...47 Operadores de conjuntos Pertenencia : T T-infset Bool e s es true sii e es un elemento de s. e s = (e s) Ejemplos: 1 {1, 2} = true 1 {1, 2} = false 2 {n | n: Nat true} = true

48 A. Dasso, A. FunesMétodos Formales...48 Operadores de conjuntos: Unión : T-infset T-infset T-infset Ejemplo: {1, 2, 3} {2, 3, 4} = {1, 2, 3, 4}

49 A. Dasso, A. FunesMétodos Formales...49 Operadores de conjuntos: Intersección : T-infset T-infset T-infset Ejemplo: {1, 2, 3} {2, 3, 4} = {2, 3}

50 A. Dasso, A. FunesMétodos Formales...50 Operadores de conjuntos: Unión e Intersección Unión e intersección pueden ser definidos en términos de pertenencia: s1 s2 {e e: T e s1 e s2}

51 A. Dasso, A. FunesMétodos Formales...51 Operadores de conjuntos: Diferencia de conjuntos s1 \ s2 : T-infset T-infset T-infset s1 \ s2 {e e: T e s1 e s2}

52 A. Dasso, A. FunesMétodos Formales...52 Operadores de conjuntos: Diferencia de conjuntos Ejemplos {1, 3, 4} \ {3, 4} = {1} {1, 3, 4} \ {2} = {1, 3, 4} {1, 3, 4} \ {n n: Nat es_primo(n)} = {1, 4}

53 A. Dasso, A. FunesMétodos Formales...53 Operadores de conjuntos: Subconjunto : T-infset T-infset Bool s1 s2 e: T e s1 e s2 Operador reverso: : T-infset T-infset Bool s1 s2 e: T e s2 e s1

54 A. Dasso, A. FunesMétodos Formales...54 Operadores de conjuntos: Subconjunto propio : T-infset T-infset Bool s1 s2 s1 s2 s1 s2 Operador reverso : T-infset T-infset Bool s1 s2 s1 s2 s1 s2

55 A. Dasso, A. FunesMétodos Formales...55 Operadores de conjuntos: Subconjunto, ejemplos {1, 2, 3} {1, 2, 3} = true {1, 2} {1, 2, 3} = true {1, 2, 3} {1, 2, 3} = false {1, 4} {1, 2, 3} = false

56 A. Dasso, A. FunesMétodos Formales...56 Operadores de conjuntos: Cardinalidad Retorna la cardinalidad de un conjunto finito. La aplicación a un conjunto infinito retorna chaos. card: T-infset Nat Ejemplos: card {} = 0 card {1, 15, 23} = 3 card {n | n: Nat} chaos

57 A. Dasso, A. FunesMétodos Formales...57 Conjuntos, ejercicios 1. Write value expressions representing the set of odd numbers between 0 and 10, as an enumerated set and as a comprehended set. 2. Do the following identities hold for sets A, B and C? (a) (A B) \ C = (A \ C) (B \ C) (b) (A C) \ B = (A B) \ C 3. Define a function, dunion, that takes a set, ss, of sets of elements as argument and returns the set of all those elements which are elements of some set in ss. Example: dunion( { { 1,2 }, { 7,1 }, { 5 } } ) = { 1,2,7,5 }

58 A. Dasso, A. FunesMétodos Formales...58 Ejemplo: Un administrador de recursos Un número de recursos deben ser compartidos entre un número de usuarios. Un administrador de recursos controla los recursos manteniendo un pool (conjunto) de recursos libres. Cuando un usuario quiere un recurso, el administrador obtiene uno cualquiera del pool. Cuando el usuario no lo necesita más, el administrador lo libera devolviéndolo al pool.

59 A. Dasso, A. FunesMétodos Formales...59 p

60 A. Dasso, A. FunesMétodos Formales...60 Ejemplo: Una Base de datos Consideremos los requerimientos para la base de datos del ejemplo anterior.

61 A. Dasso, A. FunesMétodos Formales...61 Ejemplo: Una Base de Datos (1) Requerimientos: La base de datos asocia claves únicas con los datos. Es decir, una clave se encuentra asociada con a lo sumo un elemento de datos en la base de datos. Además, la base de datos deberá proveer las siguientes funciones:

62 A. Dasso, A. FunesMétodos Formales...62 Ejemplo: Una Base de Datos (2) insert asocia una clave con un dato en la base de datos. Si la clave ya se encuentra asociada a otro elemento de datos, la nueva asociación borra la anterior. remove remueve una asociación entre una clave y un dato. defined verifica si una clave está asociada a algún dato. lookup retorna el dato asociado con una clave particular.

63 A. Dasso, A. FunesMétodos Formales...63 scheme DATABASE = class type Database, Key, Data value empty : Database, insert : Key Data Database Database, remove : Key Database Database, defined : Key Database Bool, lookup : Key Database Data

64 A. Dasso, A. FunesMétodos Formales...64 axiom [remove_empty] k : Key remove(k, empty) empty, [remove_insert] k, k1 : Key, d1 : Data, db : Database remove(k, insert(k1, d1, db)) if k = k1 then remove(k, db) else insert(k1, d1, remove(k, db)) end,

65 A. Dasso, A. FunesMétodos Formales...65 [defined_empty] k : Key defined(k, empty) false, [defined_insert] k, k1 : Key, d1 : Data, db : Database defined(k, insert(k1, d1, db)) k = k1 defined(k, db), [lookup_insert] k, k1 : Key, d1 : Data, db : Database lookup(k, insert(k1, d1, db)) if k = k1 then d1 else lookup(k, db) end pre defined(k, db) end

66 A. Dasso, A. FunesMétodos Formales...66

67 A. Dasso, A. FunesMétodos Formales...67

68 A. Dasso, A. FunesMétodos Formales...68

69 A. Dasso, A. FunesMétodos Formales...69 Un paso de desarrollo

70 A. Dasso, A. FunesMétodos Formales...70 Relación de Refinamiento, condiciones El nuevo modelo (A 1 ) debe incluir TODAS las entidades del viejo (A 0 ) types, values, objects, variables y channels con los mismos nombres y tipos maximales. A 1 puede tener más entidades que A 0. Implementación estática, garantiza monotonicidad. Puede ser chequeada estáticamente.

71 A. Dasso, A. FunesMétodos Formales...71 Relación de Refinamiento, condiciones Todas las propiedades de A 0 se mantienen en A 1. –axiomas, defs. de funciones, constantes, restricciones en subtipos. No puede ser chequeada estáticamente, necesita demostración.

72 A. Dasso, A. FunesMétodos Formales...72 SET_DATABASE implementa a DATABASE SET_DATABASE define todos los tipos que define DATABASE, el único cambio es que el sort Database ha sido reemplazado por una definición concreta. SET_DATABASE define, con las misma signaturas, todas las constantes y funciones que son definidas por DATABASE. Todos los axiomas de DATABASE son verdaderos en SET_DATABASE.

73 A. Dasso, A. FunesMétodos Formales...73 Condiciones de Refinamiento

74 A. Dasso, A. FunesMétodos Formales...74 Condiciones de Refinamiento (cont.)

75 A. Dasso, A. FunesMétodos Formales...75 Condiciones de Refinamiento (cont.)

76 A. Dasso, A. FunesMétodos Formales...76 Verificación de una cond. de refinamiento

77 A. Dasso, A. FunesMétodos Formales...77 Ejemplo: Relaciones de Equivalencia Un conjunto que consiste de conjuntos disjuntos de elementos define una relación de equivalencia. Llamamos a los conjuntos miembros clases de equivalencia. Todos los miembros de una clase son considerados equivalentes.

78 A. Dasso, A. FunesMétodos Formales...78 Una relación de equivalencia debe cumplir con 3 condiciones para ser bien formada: –No debe contener la clase vacía. –Cada elemento se encuentra representado en alguna clase. –La intersección de las clases de equivalencia es vacía. La función make_equivalent es requerida para hacer dos elementos equivalentes, juntando las clases de equivalencias de los elementos en una. La función are-equivalent controla si dos elementos son equivalentes, es decir, si pertenecen a la misma clase de equivalencia.

79 A. Dasso, A. FunesMétodos Formales...79 scheme EQUIVALENCE_RELATION = class type Relation = Class-infset, Class = Element-infset, Element value well_formed : Relation Bool, initial : Relation, make_equivalent : Element Element Relation Relation, are_equivalent : Element Element Relation Bool

80 A. Dasso, A. FunesMétodos Formales...80 axiom r : Relation well_formed(r) {} r ( e : Element c : Class e c c r) ( c1, c2 : Class c1 c2 c1 c2 = {}), initial {{e} | e : Element},

81 A. Dasso, A. FunesMétodos Formales...81 e1, e2 : Element, r : Relation make_equivalent(e1, e2, r) (r \ {c | c : Class c r (e1 c e2 c)}) {c1 union c2 | c1, c2 : Class c1 r c2 r e1 c1 e2 c2}, e1, e2 : Element, r : Relation are_equivalent(e1, e2, r) ( c : Class c r e1 c e2 c) end


Descargar ppt "Métodos Formales y Análisis de Herramientas para la Producción de Software Aristides Dasso, Ana Funes {arisdas, Universidad Nacional."

Presentaciones similares


Anuncios Google