Teorías unificadas de la programación

De testwiki
Ir a la navegación Ir a la búsqueda

Las Teorías Unificadas de Programación (UTP) en ciencias de la computación se ocupan de la semántica de los programas. Muestra cómo la semántica denotacional, la semántica operativa y la semántica algebraica se pueden combinar en un marco unificado para la especificación formal, diseño e implementación de programas y sistemas informáticos .

El libro de este título de C.A.R. Hoare y He Jifeng se publicó en la Serie Internacional de Ciencias de la Computación Prentice Hall en 1998 y ahora está disponible gratuitamente en la web.[1]

Teorías

La base semántica de la UTP es el cálculo de predicados de primer orden, aumentado con construcciones de punto fijo a partir de la lógica de segundo orden. Siguiendo la tradición de Eric Hehner, los programas son predicados en el UTP, y no hay distinción entre programas y especificaciones a nivel semántico. En palabras de Hoare :

Un programa de computadora se identifica con el predicado más fuerte que describe cada observación relevante que se puede hacer sobre el comportamiento de una computadora que ejecuta ese programa.

En el lenguaje UTP, una teoría es un modelo de un paradigma de programación particular. Una teoría UTP se compone de tres ingredientes:

  • un alfabeto, que es un conjunto de nombres de variables que denotan los atributos del paradigma que puede observar una entidad externa;
  • una firma, que es el conjunto de construcciones de lenguaje de programación intrínsecas al paradigma; y
  • una colección de condiciones de salubridad, que definen el espacio de programas que se ajustan al paradigma. Estas condiciones de salubridad generalmente se expresan como transformadores monotónicos de predicados idempotentes .

El refinamiento de un programa es un concepto importante en la UTP. Un programa P1 es refinado por P2 si y solo si cada observación que se pueda hacer de P2 es también una observación de P1. La definición de refinamiento es común en todas las teorías UTP:

P1P2si y solo si[P2P1]

dónde [X] denota el cierre universal de todas las variables en el alfabeto.

Relaciones

La teoría UTP más básica es el cálculo del predicado alfabetizado, que no tiene restricciones alfabéticas ni condiciones de salubridad. La teoría de las relaciones es un poco más especializada, ya que el alfabeto de una relación puede consistir solo en:

  • variables no decoradas (v), modelando una observación del programa al comienzo de su ejecución; y
  • variables preparadas (v), modelando una observación del programa en una etapa posterior de su ejecución.

Algunas construcciones de lenguaje comunes se pueden definir en la teoría de las relaciones de la siguiente manera:

  • La declaración de omisión, que no altera el estado del programa de ninguna manera, se modela como la identidad relacional:

𝐬𝐤𝐢𝐩v=v

  • La asignación de valor E a una variable a se modela como configuración a a E y mantener todas las demás variables (denotadas por u ) constante:

a:=Ea=Eu=u

P1;P2v0P1[v0/v]P2[v0/v]

  • La elección no determinista entre programas es su mayor límite inferior:

P1P2P1P2

P1CP2(CP1)(¬CP2)

μX𝐅(X){X𝐅(X)X}

Referencias

Plantilla:Listaref

Otras lecturas

  • Jim Woodcock y Ana Cavalcanti. Una introducción tutorial a los diseños con UTP. En Integrated Formal Methods, volumen 2999 de Lecture Notes in Computer Science, páginas 40–66. Springer Berlin / Heidelberg, 2004. Plantilla:ISBN. Plantilla:Doi   paper
  • Ana Cavalcanti y Jim Woodcock. Una introducción tutorial a CSP en UTP. En Refinement Techniques in Software Engineering, volumen 3167 de Lecture Notes in Computer Science, páginas 220–268. Springer Berlin / Heidelberg, 2006. Plantilla:Doi   paper

Enlaces externos

Plantilla:Control de autoridades