Académique Documents
Professionnel Documents
Culture Documents
INFORMTICA
TRUJILLO PERU
2014
1. Introduccin
En ciencias de la computacin, las especificaciones formales son
matemticamente tcnicas basadas cuyo propsito es ayudar con la
implementacin de sistemas y software. Se utilizan para describir un
sistema, para analizar su comportamiento, y para ayudar en su diseo
mediante la verificacin de las propiedades clave de inters rigurosa y
eficaz de razonamiento. Estas especificaciones son formales en el sentido
de que tienen una sintaxis, su semntica caen dentro de un dominio, y que
son capaces de ser utilizados para inferir informacin til.
En cada uno de los sistemas informticos pasan dcada se han vuelto cada
vez ms potentes y, como resultado, se han vuelto ms impactante para la
sociedad. Debido a esto, se necesitan mejores tcnicas para asistir en el
diseo e implementacin de software fiable. Disciplinas de ingeniera
establecidos utilizan el anlisis matemtico como fundamento de la
creacin y validacin de diseo de producto. Las especificaciones formales
son una de las maneras de lograr esto en la ingeniera del software. Aunque
tiles, los mtodos formales en realidad no tienen el control como el
estndar para la fiabilidad del software como una vez predijo. Otros
mtodos, como las pruebas son ms comnmente usados para mejorar la
calidad del cdigo.
Prueba encuentra errores en la aplicacin. Lo mejor es encontrar estos lo
antes posible, ya que cuanto ms largo en un proyecto de un error se
encuentra, ms costoso que es para arreglar. La idea con las
especificaciones formales es reducir al mnimo la creacin de dichos
errores. Esto se hace mediante la reduccin de la ambigedad de los
requisitos del sistema informales. Al crear una especificacin formal de los
diseadores se ven obligados a hacer un anlisis detallado del sistema al
principio del proyecto. Dicho anlisis generalmente revelar errores o
inconsistencias que existen en los requisitos del sistema informales. Como
resultado se reduce la posibilidad de errores sutiles que se introducen y no
sea detectada en los sistemas de software complejos. Encontrar y corregir
este tipo de errores al principio de la etapa de diseo le ayudar a evitar
costosas reparaciones que puedan surgir en el futuro.
Pruebas de control de calidad y contribuyen a ms de 50% del coste total de
desarrollo de algunos proyectos; mediante el uso de las especificaciones
formales de prueba determinados procesos pueden ser automatizados que
conduce a pruebas de costo-efectiva una mejor y ms.
Definicin
VDM significa "Mtodo de Desarrollo de Viena", es una coleccin de
tcnicas para la especificacin formal y el desarrollo de sistemas
informticos. Consiste en un lenguaje de especificacin llamada VDMSL; normas para los datos y las operaciones de refinacin para
establecer vnculos entre las especificaciones que requieren abstraccin
y especificaciones de diseo detalladas a nivel de cdigo; y un mtodo
terico de la prueba donde los argumentos rigurosos se pueden inferir
acerca de las propiedades de los sistemas especficos y la exactitud de
las decisiones de diseo. El trmino "VDM" a menudo se utiliza
incorrectamente para referirse slo a la especificacin del lenguaje.
El Lenguaje VDM
El VDM es un mtodo formal basado en un marco basado en modelos
para la semntica denotativa para apoyar el perfeccionamiento gradual
de los modelos abstractos a las implementaciones concretas. El mtodo
VDM tiene un lenguaje de especificacin formal, VDM-SL, que admite
dos formas de abstraccin: la abstraccin representacional y la
abstraccin operacional.
La abstraccin representacional est dada por las facilidades del
modelado de datos. Estas caractersticas se basan en los seis
mecanismos para la estructuracin de los datos matemticos:
conjuntos, secuencias, correspondencias, objetos compuestos, los
productos cartesianos y las uniones. En un lenguaje de bajo nivel
proporciona diversos tipos numricos, booleanos, entre otras cosas,
pueden ser compuestos formados por dominios, llamados dominios, a
travs de la utilizacin de mecanismos de estructura de datos. Los
dominios forman las clases de objetos que tienen una estructura
matemtica especfica. Los subtipos son soportados por las definiciones
del dominio utilizando los invariantes de dominio.
La abstraccin operacional es soportada por la abstraccin funcional y
por la abstraccin relacional. La primera se refiere al de especificacin
de las funciones y la segunda con la realacion a la especificacin de las
operaciones. Ambos pueden ser especificados implcitamente usando
pre y post-condiciones, o explcitamente utilizando construcciones
aplicativas para especificar las funciones y construcciones imperativas
para especificar operaciones. La diferencia bsica es que las operaciones
tienen acceso directo a una coleccin de objetos globales, es decir, el
estado de la especificacin.
El estado es un objeto compuesto construido de componentes
etiquetados. Una especificacin VDM consiste en una descripcin del
estado, utilizando predicados de la inicializacin y predicados de
invariantes, un conjunto de configuraciones de dominio que tambin
utilizan invariantes, constantes, operaciones y funciones.
mientras que en el
Abstraccin Representacional
En la abstraccin representacional un modelo de software puede ser
construido a partir de dos tipo bsicos de lenguaje de especificacin y
de tipos construidos a travs de otras composiciones, previamente
definidos. Existen cinco definiciones matemticas: conjunto, secuencia,
Tipos Simples
En VDM los tipos simples pueden ser subdivididos en dos categoras:
tipos primitivos definidos en el lenguaje y "constantes" definido por el
usuario. Los tipos primitivos son los elementos bsicos que pertenecen
al propio lenguaje VDM, que se relaciona con las definiciones
matemticas y no su representacin en un lenguaje de programacin,
como por ejemplo: el tipo de nmero entero no est limitado por el
nmero de bits soportados por el lenguaje de implementacin. La Tabla
1 presenta las tipos primitivos en VDM, entre ellos el tipo "token" que
representa una coleccin de contabilidad de valores asociados a otros
tipos.
Tipos Compuestos
Son tipos que se construyen a partir de otros tipos previamente
definidos usando para estos constructores de tipos. Estos constructores
pueden ser: uniones, conjuntos, secuencias, mapeos, registros,
productos cartesianos y tipos de funciones.
Uniones combinan dos o ms tipos en un nico tipo a travs del
operador "|", por ejemplo: Usuario = Profesor | Estudiante, es decir,
una variable de tipo de usuario puede ser un instante dado "profesor" o
"estudiante" o tambin "Mensaje = xito | ERROR-de entrada" mensaje
en un momento dado puede tener como valor xito o ERROR-de
entrada, pero nunca los dos valores a la vez.
Los conjuntos en VDM deben ser finitos, o conjuntos contablemente
infinitos pueden ser especificados. Estos son tratados como conjuntos
finitos suficientemente "grandes", por lo que de esta manera se puede
simplificar las eventuales pruebas matemticas. La sintaxis se define de
la siguiente manera: "Ind: P-set", donde "Ind" es el identificador
asociado a una variable, "P" es el tipo (debe ser definido previamente) y
la palabra "-set" indica que este variable tendr un conjunto de valores.
Tambin es posible definir nuevos tipos de manera anloga, por
ejemplo: Las personas = Empleados-conjunto, es decir, el tipo
"Empleado" es un conjunto de personas. Otra forma de especificar
conjuntos es utilizando la notacin matemtica, por ejemplo: Pares
{
|
y Digitos
{
. Un
conjunto vaco esta descrito por { . Son permitidas las operaciones
sobre conjuntos con los smbolos tradicionalmente utilizados en
matemtica para expresar: unin, interseccin, diferencia, esta
contenido, pertenece, igualdad, entre otros. Adems de una operacin
denotada por la palabra "card", donde "card S" devuelve la cardinalidad
del conjunto S.
Poseen secuencias similares a la sintaxis de los conjuntos, excepto para
el intercambio de "{" con "[". Sin embargo, difieren en su semntica por
el hecho de que las secuencias en el orden de los elementos deben ser
considerados.
recibe , y retorna
recibe , y retorna
- recibe , y retorna
Un patrn es una estructura que se compone de colecciones de
identificadores, smbolos y valores.
Una entrada est asociado a un patrn, si se tiene un conjunto de
valores por defecto asociados al patrn, de acuerdo a los ejemplos de la
Tabla 5.
Estados
En VDM un "estado", consiste es una especificacin de un determinado
problema, incluyendo la representacin de objetos de dominio y las
operaciones que se pueden realizar con el mismo. La sintaxis es simple:
al principio del estado se coloca la siguiente secuencia el "state
<nombre del estado> of", y al final del bloque la palabra "end". En la
Figura 1, se da un ejemplo simplificado, ya que no incluye operaciones.
En este ejemplo se declaran tres objetos de dominio relacionados a un
estado llamado "departamento", siendo estos: (1) los cursos que el
departamento tiene (tipo: conjunto de cursos), (2) los estudiantes que
estn relacionadas con este departamento (tipo: conjunto estudiantes)
y (3) profesores asociados al departamento (tipo: conjunto de
profesores).
Invariantes
Son las propiedades que cada entidad (objeto) debe preservar, anlogas
a las "restricciones" en la base de datos. Se expresan a travs de
notaciones matemticas que describen las restricciones sobre los
valores para los diferentes objetos del dominio, estas restricciones
deben ser obedecidas al final de cada operacin. Ellos pueden hacer
referencia a un determinado objeto, en este caso se llaman "invariantes
de tipo" a los varios objetos contenidos en el mismo estado,
clasificndolos como "invariante de estados". Un ejemplo de invariante
de tipo.
inv mk-Student (nombre, id, cursoconcluido, cursomatriculado)
cursoconcluido cursomatriculado = {}
donde inv una palabra clave que debe preceder a cualquier declaracin
invariante, mk- es una funcin que se utiliza para crear instancias de un
registro, "" es el smbolo utilizado para creacin de instancias
separadas del registro de la expresin que describe la invariable y
"cursomatriculado cursoconcluido = {} "expresin que significa la
siguiente restriccin: la interseccin de los cursos realizados por un
estudiante con los cursos se matricul debe estar vaco. Es decir, al final
de cada operacin se debe mantener este invariante, asegurando que
un estudiante hace el mismo curso dos veces. Los invariantes de estado
puede ser construidos de manera similar.
Abstraccin operacional
La abstraccin representacional describe los objetos en el dominio del
software modelado, el comportamiento de este modelo es capturada a
travs de la abstraccin operacional. Este comportamiento se describe
El comando Let
Adems de las funciones y operaciones se pueden usar las expresiones
"complejas" para describir el comportamiento del sistema. Cuando estas
expresiones son utilizadas en varias ocasiones durante la especificacin,
se torna interesante asociar un identificador. De cierta forma es posible
hacer una analoga entre las expresiones y macros disponibles en los
lenguajes de programacin, como por ejemplo C. Para asociar los
identificadores de las expresiones que utilizamos el comando letque de
acuerdo la siguiente sintaxis: let <definicion> in <expresin>.
Vemos un ejemplo:
let estudiante : Estudiante = mk-Estudiante (Rodrigo, 1234,,-.
IngInfor) in valida-estudiante (estudiante).
Definicin de funciones
Funciones en VDM pueden ser de cuatro tipos: (1) funciones implcitas,
(2) las funciones explcitas, (3) de alto nivel y (4) funciones polimrficas.
Las funciones implcitas se caracterizan por propiedades declarativas, y
se diferencian de las funciones explicitas principalmente por la sintaxis.
La sintaxis de las funciones implcitas es:
Definicin de Operacin
Las operaciones tambin pueden ser de dos tipos: (1) operaciones
implcitas y (2) las operaciones explcitas. Las operaciones implcitas
tienen funciones similares a las funciones implcitas, pero poseen dos
clusulas adicionales: clusula externa "ext", la cual contiene una lista
Definicin de declaraciones
En VDM es posible utilizar las declaraciones existentes en lenguajes de
programacin como C o Pascal. La Tabla 6 presenta algunas
declaraciones vlidas seguidas de su definicin sintctica.
Estas declaraciones tienen semntica similar a los comandos utilizados
en los lenguajes de programacin. Generalmente, estas declaraciones
son utilizadas para detallar mejor la especificacin, cuando est se
encuentra en un nivel de abstraccin muy cerca del nivel de
programacin.
3. El mtodo B
Definicin
Es una coleccin de tcnicas matemticas para la especificacin, diseo
e implementacin de componentes de software. Existen sistemas que
estn modelados como una coleccin de Mquinas Abstractas
Independientes, cuyo enfoque basado en objetos es usado en todas las
fases del desarrollo.
B es uno de los pocos mtodos de desarrollo de software que cubre
completamente el ciclo de vida del software, desde los requerimientos
(especificacin), a travs del diseo (refinamiento) hasta la
implementacin, generacin de cdigo y mantenimiento.
Maquinas Abstractas
Un Abstract Machine Notation (AMN) es usado por B. Son mquinas
que encapsulan estado y operaciones. El estado tiene un conjunto de
variables condicionadas por invariantes y las operaciones pueden
cambiar de estado, mientras mantienen la invariante y pueden devolver
una secuencia de resultados.
Notacin
Herramientas
La B-Herramienta es un lenguaje interpretado que tambin es un
entorno run-time para soportar el mtodo-B.
La B-Toolkit es un conjunto de herramientas integradas que juntas
soportan el mtodo-B para el desarrollo de software formal.
4. Notacin Z
Historia
Notacin concebida en el ao 1970, se desarroll a travs de la dcada
de 1980 en los proyectos de colaboracin entre la Universidad de
Oxford y socios industriales, incluyendo IBM e Inmos(productor de
semiconductores).
Es un conjunto de convenciones para la representacin de texto
matemtico, elegido para que sea cmodo de usar las matemticas
simples para describir los sistemas de computacin (Z notacin se ha
utilizado para modelar el hardware as como software).
Convecciones Sintcticas
Word(palabra): un Word es simplemente un tipo de nombre en la
especificacin Z: es una secuencia no vaca de letras(maysculas y
minsculas), dgitos y subrayados empezando con una letra o un
smbolo especial. Los Words son usados como los nombre de esquemas.
Smbolo de Operadores
La notacin matemtica de Z contiene solo unas formas bsicas de
expresin, pero son suficientes para expresar cualquier propiedad
matemtica que nos interese.
Por ejemplo:
El predicado que nos indica el hecho que la suma de a y b es menor o
igual que a:
Aqu el predicado con la asociatividad de la suma:
, dent+
ME, D
E +.
Descripcin Axiomtica
Una descripcin axiomtica introduce una o mas variables globales, y
opcionalmente especifica una restriccin en sus valores.
sgtes formas:
Declaraciones
Usando la notacin Z
Nombre
Sintaxis
Default
En una mu-expresin, si una parte de la expresin es omitida, las
caractersticas de la expresin aparecern en la parte del esquema de
texto (Schema-Text).
Reglas
de
mbito
En
las
expresiones
el esquema de texto introduce variables locales, su alcance incluyen la
expresin E.
Tipo de Reglas
En la
expresin, se tiene t de tipo E, y t ser de
tipo de declaracin que aparece en S.
El
tipo
de
conjunto
de
la
expresin
es
En
la expresin si el tipo de sub-expresin E es
t, entonces el tipo de expresin es t tambin. Si la expresin E es
omitida, el tipo de expresin es de tipo de declaracin que aparece en
S.
Descripcin
La expresin denota una funcin la cual toma
argumentos de una determinada forma de S, y el rendimiento es un
resultado de valor E. Es un equivalente del conjunto por compresin
donde T es la caracterstica de S.
Lambda y mu-expresiones deben al menos siempre ser puestas en
parntesis para no permitir ambigedad, el no tenerlos podra causar
ambigedad con otros signos.