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, afunes}@unsl.edu.ar Universidad Nacional de San Luis 2006

2 Listas

3 A. Dasso, A. FunesMétodos Formales...3 Listas Una lista es una colección ordenada de valores del mismo tipo. Ejemplos:

4 A. Dasso, A. FunesMétodos Formales...4 Expresiones de tipo lista La expresión de tipo expr_de_tipo * representa el tipo que contiene todas las listas finitas de tipo expr_de_tipo.

5 A. Dasso, A. FunesMétodos Formales...5 Expresiones de tipo lista Ejemplo: Bool * Este tipo representa infinitas secuencias finitas de Booleanos: <>--lista vacía...

6 A. Dasso, A. FunesMétodos Formales...6 Expresiones de tipo lista La expresión de tipo expr_de_tipo  representa el tipo que contiene las listas infinitas así como las listas finitas de tipo expr_de_tipo.

7 A. Dasso, A. FunesMétodos Formales...7 Expresiones de tipo lista Ejemplo: Bool  Este tipo contiene las infinitas secuencias finitas de Booleanos además de las infinitas: <>......

8 A. Dasso, A. FunesMétodos Formales...8 Propiedades de las listas Pueden existir valores repetidos. Por lo tanto,  Cuando decimos que una lista es ordenada significa que podemos hablar de un primer elemento, un segundo elemento, etc. Es decir que el orden es relevante, p.e.: . Para cualquier tipo T, T * es un subtipo de T .

9 A. Dasso, A. FunesMétodos Formales...9 Listas Una lista puede ser definida explícitamente enumerando sus elementos: donde expr i tienen un tipo maximal común y n  0. Ejemplos :

10 A. Dasso, A. FunesMétodos Formales...10 Listas Una lista puede ser definida usando una expresión de listas con rango: donde expr 1 y expr 2 son expresiones enteras. Representa la lista de enteros ordenados en forma creciente, incluyendo ambos límites. Si expr 1 > expr 2 la lista resultante es la lista vacía.

11 A. Dasso, A. FunesMétodos Formales...11 Listas Ejemplos: = = =

12 A. Dasso, A. FunesMétodos Formales...12 Listas Una lista puede ser definida implícitamente: El binding debe hacer matching con los elementos de la lista representada por expr_de_lista.

13 A. Dasso, A. FunesMétodos Formales...13 Listas Ejemplo 1: > se lee “la lista de valores 2  n donde n varía sobre la lista ”. es igual a la lista. notar que el ordenamiento en la lista se preserva en la nueva lista.

14 A. Dasso, A. FunesMétodos Formales...14 Listas Ejemplo 2: es_primo(n) > se lee “la lista de valores n donde n varía sobre la lista considerando solamente los números primos”. es igual a la lista.

15 A. Dasso, A. FunesMétodos Formales...15 Listas Ejemplo 3: type Database = Record *, Record = Key  Data, Key, Data Supongamos que queremos un reporte de aquellos registros interesantes, definidos por alguna función booleana sobre las claves. El report contendrá entradas consistiendo de la clave y una transformación sobre el dato asociado.

16 A. Dasso, A. FunesMétodos Formales...16 Listas Ejemplo 3 (cont.): value es_interesante: Key  Bool, transformacion: Data  Report_Data, report: Database  (Key  Report_Data) * report (db)  type Report_Data

17 A. Dasso, A. FunesMétodos Formales...17 Indexando Listas Se puede extraer un elemento particular de una lista usando un índice. Un índice debe ser un número entero mayor o igual a 1 y menor o igual a la longitud de la lista (finita). Forma general: expr_lista(expr_entera)

18 A. Dasso, A. FunesMétodos Formales...18 Indexando Listas Ejemplo: value l: Nat * = l(2) = 20 (3) = 2, >(1) =, >(1) (2) = ‘b’

19 A. Dasso, A. FunesMétodos Formales...19 Definición de listas infinitas Una lista infinita puede ser definida: 1) a través de una definición de un value, y un axioma que especifica que es infinita. Ejemplo: value todos_los_naturales: Nat  axiom todos_los_naturales(1) = 0,  i: Nat i  2  todos_los_naturales(i) = todos_los_naturales(i-1) +1

20 A. Dasso, A. FunesMétodos Formales...20 Definición de listas infinitas 2) a partir de otra lista infinita. Ejemplo: A partir de la lista infinita de números naturales define la lista de todos los números primos.

21 A. Dasso, A. FunesMétodos Formales...21 Operadores de listas Concatenación ^ : T *  T   T  Produce una lista que consiste de todos los elementos del primer argumento seguidos por todos los elementos del segundo: ^ = Ejemplos: ^ =

22 A. Dasso, A. FunesMétodos Formales...22 Operadores de listas Concatenación Notar que el primer argumento de la concatenación debe ser una lista finita (no se puede agregar nada al final de una lista infinita ya que no tiene fin). El segundo argumento, sin embargo, puede ser una lista infinita, p.e: ^ todos_los_naturales =

23 A. Dasso, A. FunesMétodos Formales...23 Operadores de listas Obtener cabeza de una lista hd: T  T Devuelve el primer elemento de la lista: hd = e 1 Ejemplos: hd = 1 hd todos_los_naturales = 0

24 A. Dasso, A. FunesMétodos Formales...24 Operadores de Listas Obtener cola de una lista tl: T  T  Devuelve la lista original sin la cabeza: tl = Ejemplos: tl = tl todos_los_naturales =

25 A. Dasso, A. FunesMétodos Formales...25 Operadores de Listas Obtener longitud de una lista len: T  Nat Devuelve la longitud de una lista finita. len = n Ejemplos: len = 3 len = 0 La aplicación a una lista infinita devuelve chaos. len todos_los_naturales  chaos

26 A. Dasso, A. FunesMétodos Formales...26 Operadores de Listas Obtener índices de una lista inds: T   Nat-infset Devuelve los índices de una lista. Sea lf una lista finita inds lf = {1.. len lf} Sea li una lista infinita inds li = {i  i: Nat i  1}

27 A. Dasso, A. FunesMétodos Formales...27 Operadores de Listas Obtener índices de una lista Ejemplos inds = {1,2,3} inds = {} inds todos_los_naturales = {ind  ind: Nat ind  1}

28 A. Dasso, A. FunesMétodos Formales...28 Operadores de Listas Obtener elementos de una lista elems: T   T-infset Devuelve los elementos de una lista. elems l = {l(i)  i: Nat i  inds 1} Ejemplos: elems = {2,4} elems = {} elems todos_los_naturales = {n  n: Nat }

29 A. Dasso, A. FunesMétodos Formales...29 Listas de Caracteres (Text) Text es una abreviatura para Char * Todas las operaciones para listas pueden ser aplicadas a Text.

30 A. Dasso, A. FunesMétodos Formales...30 Listas de Caracteres (Text) “abc” = “” = hd “abd” = ‘a’ tl “a” = “” “abc” ^ “de” ^ “f” = “abcdef” inds “abc” = {1,2,3} elems “abba” = {‘a’, ‘b’} len “abba” = 4

31 A. Dasso, A. FunesMétodos Formales...31 Ejemplo Cola o Fila Los elementos pueden ser puestos y pueden dejar la cola uno a uno, siempre siguiendo la política FIFO (First In-Fist Out).

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

33 A. Dasso, A. FunesMétodos Formales...33 Ejemplo Sorting Consideremos la especificación de una función que dada una lista de enteros devuelve la lista ordenada de menor a mayor.

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

35 A. Dasso, A. FunesMétodos Formales...35 Ejemplo Base de Datos Un paso de desarrollo

36 A. Dasso, A. FunesMétodos Formales...36 Representaciones para la BD type Database empty insert(k2, d2, insert(k1, d1, empty)) type Database = (Key  Data)-set {} {(k1,d1), (k2, d2)} type Database = (Key  Data) *

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

38 A. Dasso, A. FunesMétodos Formales...38 ),

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

40 A. Dasso, A. FunesMétodos Formales...40 Ejemplo Base de datos (II) Supongamos además que se requiere que la base de datos se encuentre ordenada por las claves.

41 A. Dasso, A. FunesMétodos Formales...41 scheme KEY = class type Key value less_than : Key  Key  Bool axiom [anti_reflexiva]  k : Key ~less_than(k, k), [transitiva]  k1, k2, k3 : Key less_than(k1, k2)  less_than(k2, k3)  less_than(k1, k3), [orden_total]  k1, k2 : Key less_than(k1, k2)  less_than(k2, k1)  k1 = k2 end

42 A. Dasso, A. FunesMétodos Formales...42 Notar que: El tipo Key y la función less_than se encuentran definidos en un módulo separado. La función less_than define un orden total sobre las claves. Si las claves fueran enteros, el orden podría ser <.

43 A. Dasso, A. FunesMétodos Formales...43 scheme LIST_DATABASE_II = extend KEY with extend DATA with class type Record = Key  Data, Database = {| db : Record* is_wf_Database(db) |} value is_wf_Database : Record*  Bool is_wf_Database(rl)  (  (k1, d1), (k2, d2) : Record, left, right : Record* rl = left ^ ^ right  less_than(k1, k2)),

44 A. Dasso, A. FunesMétodos Formales...44 Notar que: El tipo Database está definido como un subtipo de listas de registros bien formados. Un registro es bien formado si para cualquier par de registros sucesivos, la clave del registro de la “izquierda” es menor que el registro de la “derecha”. Esta condición previene las claves duplicadas ya que es consecuencia del axioma anti-reflexiva del módulo KEY.

45 A. Dasso, A. FunesMétodos Formales...45 empty : Database =, insert : Key  Data  Database  Database insert(k, d, db)  if db = then else let (k1, d1) = hd db in if k = k1 then ^ tl db elsif less_than(k, k1) then ^ db else ^ insert(k, d, tl db) end end,

46 A. Dasso, A. FunesMétodos Formales...46 remove : Key  Database  Database remove(k, db) , defined : Key  Database  Bool defined(k, db)  if db = then false else let (k1, d1) = hd db in if less_than(k, k1) then false elsif k1 = k then true else defined(k, tl db) end end,

47 A. Dasso, A. FunesMétodos Formales...47 lookup : Key  Database  Data lookup(k, db)  if db = then not_found else let (k1, d1) = hd db in if less_than(k, k1) then not_found elsif k1 = k then d1 else lookup(k, tl db) end

48 A. Dasso, A. FunesMétodos Formales...48 Notar que: Las funciones insert, defined and lookup han sido definidas orientadas a la implementación, aprovechando el hecho que la base de datos se encuentra ordenada. La función lookup se hizo total (para bases de datos bien formadas), retornando un valor de error en el caso de no encontrarse la clave. Por lo tanto definimos un valor de error not_found de tipo Data, el cual quedó sub- especificado. Tanto Data como not_found se encuentran definidos en un módulo separado

49 A. Dasso, A. FunesMétodos Formales...49 scheme DATA = class type Data value not_found : Data end

50 A. Dasso, A. FunesMétodos Formales...50 Ejercicios

51 A. Dasso, A. FunesMétodos Formales...51 Ejercicios

52 A. Dasso, A. FunesMétodos Formales...52 Ejercicios

53 A. Dasso, A. FunesMétodos Formales...53 Mapas

54 A. Dasso, A. FunesMétodos Formales...54 Mapas Un mapa es una colección desordenada de pares de valores. Tienen una estructura tipo tabla, similar a una función, que transforma valores de un tipo en valores de otro tipo.

55 A. Dasso, A. FunesMétodos Formales...55 Mapas Ejemplos: [3 |  true, 5 |  false] mapa de enteros en booleanos. [“Carlos” |  7, “Juan” |  2, “Maria” |  7] mapa de textos en enteros.

56 A. Dasso, A. FunesMétodos Formales...56 Dominio de un Mapa El conjunto de valores para los cuales un mapa está definido es referido como el dominio del mapa. Ejemplo: [“Carlos” |  7, “Juan” |  2, “Maria” |  7] el dominio es {“Carlos”, “Juan”, “María”}

57 A. Dasso, A. FunesMétodos Formales...57 Rango de un Mapa El conjunto de valores a los cuales un mapa transforma es referido como el rango del mapa. Ejemplo: [“Carlos” |  7, “Juan” |  2, “Maria” |  7] el rango es {2, 7}

58 A. Dasso, A. FunesMétodos Formales...58 Expresiones de tipo Mapa Una expresión de tipo de la forma expr_de_tipo 1 expr_de_tipo 2 representa los mapas finitos determinísticos que transforman valores de tipo expr_de_tipo 1 en valores de tipo expr_de_tipo 2.  m

59 A. Dasso, A. FunesMétodos Formales...59 Expresiones de tipo Mapa Ejemplo:

60 A. Dasso, A. FunesMétodos Formales...60 Expresiones de tipo Mapa Una expresión de tipo de la forma expr_de_tipo 1 expr_de_tipo 2 representa los mapas parciales que transforman valores de tipo expr_de_tipo 1 en valores de tipo expr_de_tipo 2. Pueden ser infinitos y no deterministicos.  m ~

61 A. Dasso, A. FunesMétodos Formales...61 Expresiones de tipo Mapa Ejemplo:

62 A. Dasso, A. FunesMétodos Formales...62 Definiciones explícitas de Mapas Un mapa puede ser definido explícitamente enumerando sus asociaciones: con n  0 Ejemplos :

63 A. Dasso, A. FunesMétodos Formales...63 Definiciones implícitas de Mapas Un mapa puede ser definido implícitamente dando un predicado para definir sus asociaciones: donde n  1.

64 A. Dasso, A. FunesMétodos Formales...64 Definiciones implícitas de Mapas Ejemplo: Se lee “el mapa de n en 2 * n donde n es un número natural tal que n es menor o igual a 2”. Es igual a:

65 A. Dasso, A. FunesMétodos Formales...65 Mapas Infinitos Es posible por medio de una expresión por comprensión crear un mapa infinito. Ejemplo: es igual al mapa infinito:

66 A. Dasso, A. FunesMétodos Formales...66 La aplicación Un mapa puede ser aplicado a un valor si ese valor pertenece al dominio del mapa. La forma básica de la aplicación es: y la forma derivada es:

67 A. Dasso, A. FunesMétodos Formales...67 Aplicación Ejemplos:

68 A. Dasso, A. FunesMétodos Formales...68 Operadores de Mapas Obtener dominio Retorna el conjunto de valores para los cuales el mapa está definido. Ejemplos: dom [n |  2  n | n: Nat] = {n | n: Nat} dom [ ] = { }

69 A. Dasso, A. FunesMétodos Formales...69 Operadores de Mapas Obtener rango Retorna el rango del mapa. Ejemplos: rng [n |  2  n | n: Nat] = {2  n | n: Nat} rng [ ] = { }

70 A. Dasso, A. FunesMétodos Formales...70 Operadores de Mapas Sobre-escritura Sobre-escribe un mapa con otro. Ejemplos: [3 |  true, 5 |  false] † [5 |  true] = [3 |  true, 5 |  true] [3 |  true] † [5 |  true] = [3 |  true, 5 |  true] [3 |  true] † [ ] = [3 |  true]

71 A. Dasso, A. FunesMétodos Formales...71 Operadores de Mapas Unión Ejemplos:

72 A. Dasso, A. FunesMétodos Formales...72 Operadores de Mapas Restricción por La operación “restricción por” remueve un conjunto de valores del dominio de un mapa.

73 A. Dasso, A. FunesMétodos Formales...73 Operadores de Mapas Restricción por Ejemplos: [3 |  true, 5 |  false] \ {3} = [5 |  false] [3 |  true, 5 |  false] \ {5,7} = [3 |  true] [3 |  true] \ {} = [3 |  true]

74 A. Dasso, A. FunesMétodos Formales...74 Operadores de Mapas Restricción a La “restricción a” restringe el dominio de un mapa a un conjunto de valores de dominio. Ejemplos:

75 A. Dasso, A. FunesMétodos Formales...75 Operadores de Mapas Restricción a Ejemplos: [3 |  true, 5 |  false] / {3} = [3 |  true] [3 |  true, 5 |  false] / {5,7} = [5 |  false] [3 |  true] / {} = [ ]

76 A. Dasso, A. FunesMétodos Formales...76 Operadores de Mapas Composición la composición de dos mapas m1 y m2 se define:

77 A. Dasso, A. FunesMétodos Formales...77 Operadores de Mapas Composición Ejemplo: [3 |  true, 5 |  false] º [“Klaus” |  3, “John” |  7] = [“Klaus” |  true] [3 |  true] º [“John” |  7] = [ ] [3 |  true, 3 |  false] º [“Klaus” |  3] = [“Klaus” |  true, “Klaus” |  false ]

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

79 A. Dasso, A. FunesMétodos Formales...79 Representaciones para la BD

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

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

82 A. Dasso, A. FunesMétodos Formales...82 class type Relation = Element Partition_Id, Element, Partition_Id  m Ejemplo: Relaciones de Equivalencia

83 A. Dasso, A. FunesMétodos Formales...83 value well_formed : Relation  Bool, initial : Relation, make_equivalent : Element  Element  Relation  Relation, are_equivalent : Element  Element  Relation  Bool

84 A. Dasso, A. FunesMétodos Formales...84 axiom  r : Relation well_formed(r)  (all e : Element e  dom r), well_formed(initial),  e1, e2 : Element e1  e2 => initial(e1)  initial(e2),  e1, e2 : Element, r : Relation :- make_equivalent(e1, e2, r)  r † [e |  r(e2) | e : Element r(e) = r(e1)] pre {e1, e2}  dom r,  e1, e2 : Element, r : Relation are_equivalent(e1, e2, r)  r(e1) = r(e2) pre {e1, e2}  dom r end

85 A. Dasso, A. FunesMétodos Formales...85 Ejercicios


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