Este documento describe las notaciones relacionales, una herramienta formal para crear modelos de requisitos de sistemas de software. Explica conceptos como ecuaciones implícitas, relaciones recurrentes, axiomas algebraicos y expresiones regulares. También discute las ventajas de las notaciones formales y algunos problemas como la falta de solución garantizada en algunas especificaciones implícitas.
2. INTRODUCCION
La necesidad de contar con herramientas
estándar y fiables para el ejercicio de la
auditoría informática ha promovido la creación
y de desarrollo de mejores practicas como las
notaciones relacionales.
Las notaciones relacionales son una
herramienta, con sintaxis y semántica formal,
que podemos usar para crear un modelo
(abstracciones, organigramas,…) en base a
los requisitos de un sistema software.
3. SITUACION ACTUAL
Las herramientas de especificación son un instrumento para
representar el modelo de requerimientos del software. De esta forma y
según su grado de formalidad, se pueden clasificar en:
No Formales:
Lenguaje natural.
Lenguaje estructurado.
Semi-Formales: con sintaxis formal.
Diagramas casos de uso.
Diagramas de clases.
Formales: con sintaxis y semántica formal.
Notaciones relacionales.
Tablas de decisión.
Notaciones orientadas a estados.
4. VENTAJAS
Las notaciones formales en general tienen la ventaja
de ser concisas evitando así la ambigüedad, apoyan el
razonamiento formal de las especificaciones
funcionales y proporcionan de manera automática una
base para la verificación y validación de los resultados
de un producto de programación, haciéndolo
coherente con el modelo del sistema y completo y
correcto con las necesidades del usuario. Esto
proporciona una mayor facilidad para el auditor a la
hora de comprobar que el sistema cumple con los
requisitos necesarios.
5. Las notaciones relacionales en particular se utilizan
para especificar las características funcionales del
producto basándose en los conceptos de entidades y
atributos. A las entidades se les llama elementos en un
sistema. Los atributos se especifican al aplicar
funciones y relaciones a las entidades nombradas. Los
atributos especifican las operaciones permitidas con
las entidades, las relaciones entre ellas, y el flujo de
datos entre las entidades.
Las notaciones relacionales incluyen ecuaciones
implícitas, relaciones recurrentes, axiomas algebraicos
y expresiones regulares. Comenzamos a explicarlas
más detalladamente.
6. Ecuaciones Implícitas
Establecen las características y las propiedades de una solución
sin establecer el método concreto para resolverla.
Ejemplo.-
Uno puede especificar la inversión de matrices como el
producto de la matriz original M con su inversa M’ igual a la matriz
identidad I junto con un margen de error computacional E
permisible.
M x M’ = I ± E
Dada esta especificación funcional completa para la
inversión de matrices, el diseño implica la especificación de una
estructura de datos, de un algoritmo para calcular el inverso y de
una técnica de generación del modulo de inversión.
7. Ecuaciones Implícitas
Ejemplo.-
La especificación implícita de una función de raíz
cuadrada, SQRT se puede establecer como
(0 <= X <= Y) [ABS(SQRT(X)**2 - X) < E]
Esta ecuación establece que para todos los
valores de X en el rango cerrado de 0 y Y, calculando
la raíz cuadrada de X, elevándola al cuadrado y
restando X, se obtiene un valor de error permisible.
8. Relaciones Recurrentes
Una relación recurrente es una ecuación que
define una secuencia recursiva; cada término
de la secuencia es definido como una función
de términos anteriores.
Es una expresión que consta de una parte
inicial llamada base (o semilla) y una o más
partes recursivas. Las partes recursivas
describen el valor deseado de una función en
términos de otros valores de la función.
9. Relaciones Recurrentes
Un método usual de simplificación de un
problema complejo es la división de este
en subproblemas del mismo tipo. Esta
técnica de programación se conoce
como divide y vencerás y es el núcleo en
el diseño de numerosos algoritmos de
gran importancia, así como también es
parte fundamental de la programación
dinámica.
10. Relaciones Recurrentes
Ejemplo.-
Con la suma de una progresión geométrica, tenemos la relación
recurrente:
Sn+1 - Sn = xn+1
Ejemplo.-
La ecuación de recurrencia asociada con el problema de las Torres
de Hanoi es la siguiente:
Tn = 2Tn-1 + 1
Con las condiciones iniciales:
T1 = 1
11. Relaciones Recurrentes
Ejemplo.-
El ejemplo más conocido es la definición
recurrente de la función factorial n!:
12. Relaciones Recurrentes
Ejemplo.-
Una de las más antiguas relaciones de recurrencia
define la sucesión de Fibonacci.
Los números sucesivos de Fibonacci se forman
como la suma de los dos números de Fibonacci
previos, donde el primero es 0 y el segundo 1
FI(0) = 1
FI(1) = 1
FI(N) = FI(N - 1) + FI(N - 2) para todo
N>1
13. Axiomas Algebraicos
Es una "verdad evidente" que no requiere
demostración, pues se justifica a sí misma, y sobre la
cual se construye el resto de conocimientos por medio
de la deducción.
El axioma gira siempre sobre sí mismo, mientras los
postulados y conclusiones posteriores se deducen de
este.
Especifican las propiedades fundamentales de un
sistema y dan la base para derivar propiedades
adicionales que están implicadas por los axiomas.
14. Axiomas Algebraicos
Para establecer un sistema matemático valido, el
conjunto de axiomas debe ser completo y consistente,
debe ser posible probar los resultados deseados
usando los axiomas.
Se logra elegancia en la definición si los axiomas son
independientes (ningún axioma se puede derivar de
otros axiomas).
El punto de vista axiomático se puede usar para
especificar las propiedades de los sistemas de
programación.
15. Axiomas Algebraicos
Ejemplo.-
Especificación axiomática de la propiedad ultimo que entra,
primero que sale (LIFO: last-in, first-out) de los elementos de una
pila.
SINTAXIS:
OPERACIÓN DOMINIO RANGO
NUEVO ()−→ PILA
EMPUJA (PILA, ELEMENTO) − → PILA
EXTRAE (PILA) − → PILA
TOPE (PILA) − → ELEMENTO
VACIO (PILA) − → VALOR DE BOOLE
16. Axiomas Algebraicos
DEFINICIONES INTUITIVAS:
NUEVO crea una nueva pila.
EMPUJA añade un nuevo elemento en el tope de la pila; requiere
dos argumentos, una pila y un elemento.
TOPE regresa una copia del elemento ubicado en el tope;
requiere una pila.
EXTRAE remueve el elemento del tope; requiere una pila como
su argumento.
VACIO prueba si la pila esta vacía.
17. Axiomas Algebraicos
AXIOMAS:
(pil es de tipo PILA, ele es de tipo ELEMENTO)
1) VACIO (NUEVO) = verdadero
2) VACIO (EMPUJA (pil, ele)) = falso
3) EXTRAE (NUEVO) = error
4) TOPE (NUEVO) = error
5) EXTRAE (EMPUJA (pil, ele)) = pil
6) TOPE (EMPUJA (pil, ele)) = ele
18. Axiomas Algebraicos
Los axiomas se pueden establecer en español como sigue:
1) Una pila nueva esta vacía.
2) Una pila no esta vacía inmediatamente después de empujar un
elemento en ella.
3) Si se intenta extraer de una pila nueva se obtiene un error.
4) No existe elemento en una pila nueva.
5) Empujar un elemento en una pila y extraerlo de inmediato, deja a
la pila sin cambiar.
6) Empujar un elemento en la pila y en seguida solicitar el elemento
tope, regresa el elemento que se acaba de empujar en la pila.
19. Axiomas Algebraicos
Si las características funcionales deseadas de
un sistema de programación están integra y
consistentemente especificadas, y la
instrumentación satisface específicamente, no
hay necesidad para pruebas o verificaciones
del código fuente, excepto para verificar
rendimiento, y para verificar que el código no
produce efectos colaterales no deseados.
20. Expresiones Regulares
Se pueden emplear para especificar la estructura
sintáctica de cadenas de símbolos.
Debido a la forma como muchos productos de
programación comprenden al procesamiento de
cadenas de símbolos, las expresiones regulares
proporcionan una notación poderosa y empleada de
manera amplia en la ingeniería de programación.
Cada conjunto de cadenas de símbolos especificado
por una expresión regular define un lenguaje formal.
Las expresiones regulares se pueden ver entonces
como generadores de lenguajes.
21. Expresiones Regulares
Reglas para formar expresiones regulares:
1) Átomos: los símbolos básicos en el alfabeto de interés forman
expresiones regulares.
2) Diferencia: si R1 y R2 son expresiones regulares, entonces (R1/R2)
es una expresión regular y representa la elección de R1 ó R2.
3) Concatenación: si R1 y R2 son expresiones regulares, entonces (R1
R2) es una expresión regular y representa la concatenación de ambas,
es decir, R1R2.
4) Cierre o cláusula de R1: si R1 es una expresión regular, entonces
(R1)* es una expresión regular y representa el conjunto de cadenas
formadas por la concatenación de cero o más cadenas de R1 con cero
o más cadenas de R1.
22. Expresiones Regulares
5) Unión: si R1 y R2 son expresiones regulares, entonces (R1
U R2) es una expresión regular y representa la unión de
ambas.
6) Cierre o cláusula positiva de R1: si R1 es una expresión
regular, entonces (R1)+ es una expresión regular y representa
el conjunto de cadenas formadas por la concatenación de una
o más cadenas de R1 con una o más cadenas de R1.
7) ε: es una expresión regular que representa la cadena vacía.
8)Integridad: ninguna mas es una expresión regular.
26. Expresiones Regulares
A las expresiones regulares se les pueden dar muchas diferentes
interpretaciones, y son entonces útiles en distintas situaciones:
Un conjunto de datos, si a, b y c son símbolos de datos de
entrada.
Transmisión de mensajes, a, b y c se pueden interpretar como de
tipo de mensaje tales como la solicitud o liberación de un recurso,
solicitud de inicio de un trabajo o fin de archivo.
Secuencia de operaciones, si a, b y c representan
procedimientos.
Flujo de recursos. Los símbolos a, b y c pueden denotar
componentes de un sistema tales como un proceso o un usuario.
27. Expresiones Regulares
La notación de expresiones regulares se puede extender para
permitir el modelado de concurrencia. El efecto de la ejecución
concurrente de dos componentes de programación P1 y P2 es el
mismo.
El intercambio de las expresiones regulares para P1 y P2 se puede
especificar si se utiliza una operación conocida como el ‘‘operador de
barajeo’’. Las expresiones resultantes se llaman expresiones de
transferencia de mensajes, expresiones de flujo, y expresiones de
eventos.
Las expresiones de trayectoria son otra notación útil basada en
expresiones regulares. Se pueden usar para especificar la secuencia
de operaciones en sistemas concurrentes.
Otra importante aplicación de expresiones regulares es en la
definición de dialogos de interface con el usuario.
28. PROBLEMA
Existe poca formalidad en el desarrollo de
productos de programación.
Las notaciones formales no son apropiadas en
todas las situaciones ni para todo tipo de
sistemas.
En el caso de las ecuaciones implícitas, ocurre
que no todos los problemas especificados de
manera implícita tienen una solución
garantizada.
29. PROBLEMA
Ejemplo.-
Una variante del ultimo problema de Fermat se puede establecer como
(N > 2) [X**N + Y**N = Z**N]
Esta ecuación implica encontrar valores de X, Y y Z tales que la ecuación
se satisface para los valores arbitrarios de N.
No se han descubierto soluciones a este problema para valores de N
mayores que 3.
En el caso de las relaciones recurrentes, se transforman con facilidad en
programas recursivos; sin embargo, no es forzoso que toda
especificación recursiva se deba instrumentar como un programa
recursivo.
30. CONCLUSIONES
Las herramientas formales como las notaciones
relacionales son precisas y exactas a la hora de
realizar o comprobar un sistema software y resuelven
de forma automática su codificación. Sin embargo
resultan mas complicadas a la hora de conocer y
comprender su contenido y lo que representan, que si
realizásemos un diagrama u otra herramienta de tipo
grafica que resultan sencillas de ver y entender mas
rápidamente, de ahí que sean mas comúnmente
usadas las herramientas semi-formales para modelar
un sistema, que aun teniendo una sintaxis formal, su
semántica se especifica de manera visual.
31. REFERENCIAS
INGENIERIA DEL SOFTWARE, Ingeniería Técnica de Sistemas
(Segundo Curso - B).
Autores: Sergio D., Zoraida C., Nuria M.
INGENIERIA DEL SOFTWARE, (Mc Graw Hill).
Autores: Richard Fairley.
http://es.wikipedia.org/wiki/Ecuaci%C3%B3n_recurrente
http://mate.cucei.udg.mx/matdis/3rec/3rel2.htm
http://es.wikipedia.org/wiki/Recurrencia
http://es.wikipedia.org/wiki/Axioma
http://es.wikipedia.org/wiki/Expresi%C3%B3n_regular