Diseño orientado a las estructuras de datos

Anuncio
Roger S. Presuman
Ingeniería de Software un Enfoque practico
DISEÑO ORIENTADO A LAS ESTR UCTURAS DE DATOS
La íntima relación entre software y datos puede ser rastreada hasta los orígenes de la
computación. El concepto original, que estaba detrás del de computadora de programa
almacenado, es el de que los programas podrían ser vistos como datos y los datos
interpretados como programas. La estructura de la información, llamada estructura de
datos, se ha demostrado que tiene un importante impacto en la complejidad y eficiencia de
los algoritmos diseñados para procesar la información.
Conforme evolucionaron los métodos de diseño del software en la pasada década, una
escuela de pensamiento estableció que:
La identificación de las estructuras de datos inherentes (para un sistema basado en
computadora) es vital y la estructura de los datos (entrada y salida) puede usarse
para derivar la estructura (y algunos detalles) de un programa [PET77].
En muchas áreas de aplicación existe una estructura de la información diferenciada y
jerárquica. Los datos de entrada, internamente información almacenada (es decir, una base
de datos), y los datos de salida, pueden tener cada uno una estructura única. El diseño
orientado a la estructura de datos hace uso de estas estructuras como base para el desarrollo
de software.
DISEÑO Y ESTRUCTURA DE LOS DATOS
La estructura de los datos afecta al diseño, tanto en el aspecto estructural, como
procedimental del software. Los datos repetitivos se procesan siempre con software que
tiene facilidades de control para la repetición; los datos alternativos (es decir, información
que puede o no puede estar presente) requieren software con elementos condicionales de
procesamiento; una organización jerárquica de los datos frecuentemente tiene una
extraordinaria semejanza con la estructura del programa que utiliza los datos. De hecho, la
estructura de la información predice muy bien la estructura del programa.
El diseño orientado a la estructura de datos transforma una representación de la estructura
de datos en una representación del software. Como las técnicas orientadas al flujo de datos,
los creadores del diseño orientado a la estructura de datos han de definir un conjunto de
procedimientos de “transformación” que utilizan la estructura de la información (datos)
como guía.
Contribuciones
Los orígenes del diseño orientado a la estructura de datos pueden encontrarse en las
discusiones técnicas sobre los “fundamentos de las estructuras de datos” (p. el., [TRE76I),
algoritmos de computadora [H0R78], la estructura de control y datos [WUL81] y el
concepto de abstracciones de datos [GUT77]. Tratamientos más pragmáticos del diseño del
software y sus relaciones con las estructuras de datos han sido propuestos por Jackson
([JAC75], [JAC83]), Warnier (IWAR74I, [WAR81I] y Orr (IORR81], IHAN83]).
Roger S. Presuman
Ingeniería de Software un Enfoque practico
La metodología de Desarrollo de Sistemas de Jackson parte de que la “paralelización de la
estructura de los datos de entrada y salida (informe) asegurará un diseño de calidad”
[JAC75]. Extensiones más recientes de la metodología se enfocan sobre la identificación de
entidades de información y de acciones que se les aplican y, que son similares en algunos
aspectos, al método de diseño orientado al objeto descrito en el Capítulo 9. Jackson
potencia el aspecto práctico, desarrollando técnicas pragmáticas para transformar los datos
en estructura de programa.
La Construcción Lógica de Programas (CLP), desarrollada por J. D. Warnier [WAR74], da
un método riguroso para el diseño de software. Sobre el esquema de la relación entre
estructura de datos y estructura procedimental, Warnier desarrolla un conjunto de técnicas
que realizan una transformación de la estructura de datos de entrada/salida en una
representación procedimental detallada del software.
El Desarrollo de Sistemas Estructurados de Datos (DSED), también llamado Metodología
de Warnier-Orr ([ORR8 1], {HAN83]), es una extensión de CLP y potencia el análisis, así
como las capacidades de diseño. El método DSED proporciona una flotación y
procedimientos para derivar la estructura de datos, estructura del programa y diseño
procedimental detallado de los componentes del programa (módulos). Además, DSED da
una notación que facilita al diseñador examinar el flujo de datos entre las fuentes y
sumideros de información, y de los procesos que transforman la información.
Una técnica llamada Construcción Lógica de Software [CHA8O9] es una síntesis
representativa de los métodos de diseño orientados al flujo de datos y a la estructura de
datos. Los creadores del método sostienen que “el diseño lógico puede describirse
explícitamente si se ve el software como un sistema de conjuntos de datos y
transformaciones de datos” [C11A80].
Áreas de aplicación
El diseño orientado a la estructura de datos puede aplicarse con éxito a aplicaciones que
tengan una estructura jerárquica, bien definida, de la información. Ejemplos típicos
incluyen:
• Aplicaciones en sistemas de ir4 formación comerciales. La entrada y salida tienen
distinta estructura (p. ej., archivos de entrada, informes de salida); el uso de una
base de datos jerárquica es frecuente.
• Aplicaciones de sistema. La estructura de datos para los sistemas operativos
comprende muchas tablas, archivos y listas que tienen una estructura bien definida.
• Aplicaciones CAD/CAM/CAE. Los sistemas de diseño/fabricación/ingeniería
asistidos por computadoras requieren estructuras de datos sofisticadas para el
almacenamiento, traducción y procesamiento de la información.
Además, el diseño orientado a la estructura de datos puede ser adecuado para aplicaciones
del dominio de la ingeniería y de la ciencia, enseñanza asistida por computadora, resolución
de problemas combinatorios y muchas otras áreas.
Roger S. Presuman
Ingeniería de Software un Enfoque practico
En general, el diseño orientado a la estructura de datos es más difícil de aprender y más
complicado de aplicar que las técnicas orientadas al flujo de datos (Capítulo 7). Sin
embargo, la escuela de diseño orientada a la estructura de datos ofrece un enfoque más rico
y, potencialmente, más poderoso para el diseño de software.
Técnicas de estructura de datos frente a las de flujo de datos
Antes de considerar las diferencias entre diseño orientado al flujo de datos y orientado a la
estructura de datos, es importante observar que ambos comienzan en los pasos de análisis
que conducen a los fundamentos de los siguientes pasos de diseño. Ambos están
conducidos por la información; ambos intentan transformar la información en una
representación del software; ambos se basan en conceptos derivados separadamente del
“buen diseño”.
El diseño orientado a la estructura de datos no hace un uso explícito de un diagrama de
flujo de datos. Por tanto, las clasificaciones de flujo de transformación y de transacción
tienen poca relevancia en el método de diseño orientado a la estructura de datos. Lo más
importante es que el objetivo último de los métodos orientados a la estructura de datos es
producir una descripción procedimcntal del software. El concepto de estructura modular de
programa no se considera explícitamente. Los módulos se consideran un subproducto del
procedimiento y a la idea de independencia de módulos se le da poca importancia.
El diseño orientado a la estructura de datos hace uso de un diagrama jerárquico para
representar la estructura de la información. Por tanto, durante el análisis de requerimientos
del software, el énfasis debe colocarse en estos modos de representación.
Debe observarse que una tercera escuela de pensamiento, la de los métodos de diseño
orientados al objeto (DOO), ha merecido una amplia atención durante los últimos años.
DOO representa una tercera alternativa para el diseño de software, cogiendo ciertas ideas
de los métodos predecesores orientados a estructura y a flujo de datos, aunque añadiendo
muchos conceptos nuevos e importantes.
CONSIDERACIONES SOBRE EL PROCESO DE DISEÑO
El análisis de requerimientos del software permanece como la base del diseño orientado a la
estructura de datos. La descripción del dominio de la información (estructura, contenido y
flujo de datos) contenida en la Especificación de Requerimientos del Software prefigura la
arquitectura del software que ha de desarrollarse durante el diseño. Cada método de diseño
da un Conjunto de “reglas” que facilitan al diseñador la transformación de la estructura de
datos en una representación del software.
Cada método orientado a la estructura de datos tiene su propio conjunto de reglas. Sin
embargo, deben realizarse siempre las siguientes tareas de diseño: 1) evaluar las
características de la estructura de datos; 2) representar los datos en términos de formas
elementales, tales como secuencia, selección y repetición; 3) transformar la representación
de la estructura de datos en una jerarquía de control para el software; 4) refinar la jerarquía
Roger S. Presuman
Ingeniería de Software un Enfoque practico
del software usando los criterios definidos como parte de un método, y 5) desarrollar
finalmente una descripción procedimental del software.
En los métodos orientados a la estructura de datos no está clara la división entre los pasos
de diseño arquitectural y procedimental (se han descrito como parte del proceso del diseño
de software). Jackson, Warnier y Orr van rápidamente hacia la representación
procedimental.
DESARROLLO DEL SISTEMA DE JACKSON
Como la mayoría de las metodologías de diseño de software, el Desarrollo de Sistema de
Jackson (DSJ) es realmente una continuación de los pasos técnicos que soportan el análisis
y diseño de software. Para realizar el DSJ el analista y diseñador han de dar los siguientes
pasos:
• Paso de las acciones y entidades. Usando un método muy similar a la técnica de análisis
orientada al objeto, se identifican las entidades (agentes, objetos u organizaciones que un
sistema necesita para producir o usar la información) y acciones (los sucesos que ocurren
en el mundo real que afectan a las entidades).
• Paso de estructuración de las entidades. Las acciones que afectan a cada entidad se
ordenan en el tiempo y se representan mediante los diagramas de .Jackson.
• Paso de modelación inicial. Las entidades y acciones se representan como un modelo del
proceso; se definen las conexiones entre el modelo y el mundo real.
• Paso funcional. Se especifican las funciones que corresponden a las acciones definidas.
• Paso de temporización del sistema. Se establecen y especifican las características de
planificación del proceso.
• Pacto de implementación. Se especifica el hardware y software como un diseño.
Los primeros tres pasos del DSJ. En resumen, el paso de las acciones y entidades comienza
con una breve declaración en lenguaje natural del problema, del que se eligen las entidades
(nombres) y acciones (verbos). Sólo las entidades y acciones que tengan una relación
directa con la solución software se eligen para una posterior evaluación.
El paso de estructuración de entidades crea un diagrama de Jackson, que describe una
especificación ordenada en el tiempo, de las acciones ejecutadas sobre o por una entidad. El
diagrama de Jackson, descrito en la Figura 5.1 (para el ejemplo de Servicio de Trenes de
Universidad), se crea para cada entidad (las entidades tren y botón en el caso de la Figura
5.1) y se acompaña frecuentemente de un texto explicativo.
Roger S. Presuman
Ingeniería de Software un Enfoque practico
FIGURA 5.1 Diagramas de estructura de Jackson.
El paso de modelación inicial comienza con la construcción de una especificación del
sistema como un modelo del mundo real. La especificación se crea con un diagrama de
especificación del sistema (DES) usando la simbología mostrada en la Figura 5.2. Una
conexión mediante datos se presenta cuando un proceso transmite cierta información (p. ej.,
registros de escrituras) y otro proceso recibe dicha información (p. ej., lee registros). Las
flechas representan la dirección del flujo de información y los círculos representan los
datos, los cuales se supone que han de colocarse en un buffer FIFO de capacidad ilimitada.
Una conexión para vector de estado ocurre cuando un proceso inspecciona directamente el
vector de estado de otro proceso. Las flechas representan la dirección del flujo de
información y los rombos indican el vector de estado. Esta conexión es frecuente en
aplicaciones de control de proceso en las que es necesario comprobar el estado de algún
dispositivo electromecánico. Por convenio, el sufijo 0 representa un proceso del mundo real
y el sufijo 1 representa un proceso del modelo del sistema.
Pasos del Diseño DSJ
Para discutir los pasos del diseño del Desarrollo de Sistema de Jackson, continuamos con el
ejemplo del Servicio de Trenes de la Universidad (STU). Reproduciendo la declaración del
problema:
Una gran universidad está dividida en dos campus, los cuales están separados una
milla. Para ayudar a los estudiantes que deben pasar de un campus a otro, a llegar a
tiempo a las clases, la universidad planea instalar un servicio de trenes.
El servicio de trenes hace uso de un único tren de alta velocidad, el cual recorre la distancia
entre la estación de cada campus. Cada estación tiene un botón de llamada que los
estudiantes pueden usar para solicitar el pasar a la otra estación. Cuando los estudiantes
Roger S. Presuman
Ingeniería de Software un Enfoque practico
llegan a una estación, pulsan el botón de llamada. Si el tren está allí, suben a él y parten
hacia la otra estación. Si el tren está andando, deben esperar a que se pare en la otra
estación, suban los estudiantes (si los hay) y vuelva. Si el tren está en la otra estación, el
tren la deja y viene a recoger a los estudiantes que han pulsado el botón. El tren esperará en
una estación hasta que se solicite un servicio (se pulse un botón).
FIGURA 5.2 Natación DES.
Las entidades se seleccionan examinando todos los nombres de la descripción. Después de
la revisión, se eligen las siguientes entidades candidatas: Universidad, campus, estudiantes,
clases, tren, estación, botón. No estamos directamente interesados en campus, clases,
estudiantes o estación —todas ellas caen fuera de los límites del modelo y se rechazan
como posibles entidades. Universidad es realmente un término colectivo de los dos campus,
por lo que lo rechazamos corno posible entidad. Seleccionamos tren y botón. Usando un
análisis similar, seleccionamos llegar, pulsar y partir como las acciones que afectan a tren y
botón.
El diagrama de estructura de Jackson para tren y botón se muestra en la Figura 5.1. El
diagrama de especificación del sistema para STU se ilustra en la Figura 5.3. Finalmente, el
paso de modelación inicial para UTP se realiza como se describe en la siguiente discusión.
Siempre que sea posible, preferimos conectar los procesos del modelo con entidades del
mundo real mediante datos, de forma que se asegure la correspondencia directa entre el
comportamiento del modelo y el mundo real. En nuestro ejemplo, el botón de llamada
emite un pulso cuando se pulsa. Esto puede transmitirse al proceso botón-1 como una
conexión de datos. Sin embargo, supondremos que los sensores que detectan la llegada o
partida del tren no emiten un pulso sino que cierran un conmutador eléctrico. El estado del
conmutador (encendido/apagado) puede ser accedido. Por tanto, se requiere una conexión
de vector de estado.
Los detalles internos de los procesos del modelo se especifican usando lo que Jackson
llama texto estructurado. El texto estructurado representa la misma información que los
Roger S. Presuman
Ingeniería de Software un Enfoque practico
diagramas de la estructura (Figura 5.4) —secuencia, selección, repetición— pero en un
formato textual. El texto estructurado para botón-1 es:
FIGURA 5.3 Un DES para el STU.
FIGURA 5.4 Notación de los diagramas de estructuras.
Roger S. Presuman
Ingeniería de Software un Enfoque practico
La estructura de BOTON- 1 se corresponde exactamente con la estructura de BOTON-O,
con la adición de las operaciones de lectura que conectan el mundo real al sistema.
Como se observó anteriormente, el proceso TREN-l no puede conectarse a su contrapartida
del mundo real mediante una conexión por datos. En vez de ello, debemos interrogar a los
conmutadores que se ponen a encendido/apagado por la llegada/salida del tren de la
estación. El proceso del sistema debe inspeccionar la entidad del mundo real, lo bastante
frecuentemente, como para asegurar que ninguna acción pueda ocurrir sin ser detectada.
Esto se realiza ejecutando una operación de obtención del vector de estado (getsv), que
obtiene el sector de estado de la entidad del mundo real. Frecuentemente, el proceso del
sistema obtendrá cada valor del vector de estado varias veces antes de que se cambie y el
proceso de modelación puede elaborarse, para que muestre estos valores “de tránsito” de
los vectores de estado. Una descripción del texto de la estructura para TREN- 1 es la
siguiente:
TREN-1 seq
getsv 5V;
CUERPO-ESPERA while ESPERA1
getsv VE;
CUERPO-ESPERA end
PARTIR (1);
CUERPO-TRANSITO1 itr while TRANSITO1
getsv VE
CUERPO-TRANSITO1 end
CUERPO-TREN1 itr
ESTACION seq
LLEGAR (i);
CUERPO-ESPERA itr while ESPERAi
getsv VE;
CUERPO-ESPERA end
PARTIR (i);
CUERPO-TRANSITO ifr while TRANSITOi
getsv VE;
CUERPO-TRANSITO end
ESTACION end
CUERPO-TREN end
Roger S. Presuman
Ingeniería de Software un Enfoque practico
LLEGAR (1);
TREN-1 end
Los valores de estado ESPERA y TRANSITO representan los valores apropiados del
conmutador de llegada y salida. El proceso del mundo real TREN-O produce un cambio del
estado del conmutador ye! proceso del sistema TREN-1 ejecuta operaciones de obtención
del vector de estado para conocer este cambio. La Figura 8.5a ilustra el texto estructurado
de TREN-1 como un diagrama de estructura.
Paso funcional
El propósito del paso funcional del DSJ es expandir el diagrama de especificación del
sistema, mediante la conexión de procesos de funciones, definidas recientemente con los
procesos de modelación por datos o vectores. DSJ reconoce tres tipos de funciones:
• Funciones empotradas. Esta función se adquiere asignando (escribir) operaciones a un
texto estructurado del proceso de modelación.
• Funciones impuestas. Esta función inspecciona el vector de estado del proceso de
modelación y produce los resultados de salida.
• Funciones interactivas. Esta función inspecciona el vector de estado del proceso de
modelación, escribe unos datos que afectan a las acciones del proceso del modelo e incluye
operaciones para escribir resultados.
Las salidas de los procesos funcionales son salidas del sistema y pueden ser informes,
órdenes a dispositivos hardware o cualquier otra información de salida.
Para ilustrar el paso funcional, consideremos el ejemplo de STU y examinemos el modelo
del tren. En el tren hay un panel de luces, que se usan para indicar la llegada a la estación,
iluminando un mensaje de visualización. Las lámparas se encienden y apagan mediante las
órdenes LON(i) y LOFF(i).
Roger S. Presuman
Ingeniería de Software un Enfoque practico
FIGURA 5.5 a) Diagrama de estructura correspondiente al texto estructurado. b) DES
actualizado.
Debe ponerse una función en el modelo del proceso del tren para describir una orden a
LAMP(i) cuando el tren llega a la estación(i); debe generarse otra orden para apagar
lámpara(i) cuando el tren deja la estación(i). Por tanto, mientras el tren está entre las
estaciones, envía unos datos que constan de las órdenes a las lámparas. El DES que
representa esta situación se muestra en la Figura 5.5 b.
Roger S. Presuman
Ingeniería de Software un Enfoque practico
Para implementar las órdenes a las lámparas, se modifica el texto estructurado de TREN- 1
como sigue:
TREN-1 seq LON(1);
getsv ve
CUERPO-ESPERA itr while ESPERA1
getsv VE;
CUERPO-ESPERA end
LOFF(1);
PARTIR (1);
CUERPO-TRANSITO 1 itr while TRANSITO1
getsv VE;
CUERPO-TRANSITO1 end
CUERPO-TREN ¡tr
ESTACION seq
LLEGAR (i);
LON(i)
CUERPO-ESPERA itr while ESPERAi
getsv VE;
CUERPO-ESPERA end
LO FF0);
PARTIR (i);
CUERPO-TRANSITO itr while TRANSITOi
getsv ve;
CUERPO-TRANSITO end
ESTACION end
CUERPO-TREN end
LLEGAR (1);
TREN-1 end
Refiriéndonos al anterior texto estructurado, se envía una orden (LON) para encender la
presentación del mensaje que anuncia a la estación 1 en el panel. Esto ocurre al comienzo
de la vida del tren, antes de que deje la estación 1 por primera vez. Cada vez que los
sensores indican la llegada a una estación, encendemos la lámpara apropiada y cuando el
tren la deja, la lámpara se apaga (LOFF).
Una segunda función es para producir las órdenes del motor, ARRANCAR y PARAR, que
controlarán el movimiento del tren. Estas órdenes se enviarán bajo las siguientes
condiciones:
PARAR cuando los sensores indican la llegada a una estación.
ARRANCAR cuando se pulsa un botón (la primera vez) para pedir el tren y el tren
está esperando en una de las estaciones.
Roger S. Presuman
Ingeniería de Software un Enfoque practico
La necesidad de enviar la orden PARAR esta únicamente determinada por la llegada del
tren a una estación. Sin embargo, la orden ARRANCAR depende de los botones y del tren.
Por tanto, introducimos un proceso de función llamado mcontrol que actúa sobre los datos
recibidos de los procesos TREN- 1 y BOTON y que envía las órdenes ARRANCAR y
PARAR.
La conexión entre el proceso tren- 1 y mcontrol será mediante los datos Si D. Esto significa
que el proceso tren- 1 puede no detectar la llegada del tren, como podría ocurrir si el vector
de estado se inspeccionara periódicamente.
El texto estructurado para el proceso tren-l se reproduce una vez más, esta vez corregido
por el control de la lámpara y el motor:
TREN-1 seq
LON(1)
getsv EV;
CUERPO-ESPERA itr while ESPERA1
getsv VE;
CUERPO-ESPERA end
LOFF(1);
PARTIR (1);
CUERPO-TRANSITO1 itr while TRANSITO1
getsv VE;
CUERPO-TRANSITO1 end
CUERPO-TREN1 itr
STACION seq
LLEGAR ();
write llegar a Si D;
LON(i);
CUERPO-ESPERA ¡tr while ESPERAi
getsv ve;
CUERPO-ESPERA end
LOFF (i);
PARTIR (i);
CUERPO-TRANSITO ¡tr while TRANSITO
getsv VE;
CUERPO-TRANSITO end
ESTACION end
CUERPO-TREN end LLEGAR(1);
write llegar a Si D;
TREN-1 end
Es necesario asegurar que el proceso tren- 1 ejecute las operaciones de obtención del vector
de estado geivs VE, y que mcontrol lea sus registros con la frecuencia suficiente para pasar
a tiempo el tren. Las ligaduras de tiempo, planificación e implementación se consideran en
los pasos de DSJ que siguen.
Roger S. Presuman
Ingeniería de Software un Enfoque practico
Para completar el ejemplo STU, volvamos al modelo de la entidad botón. El modelo
original, botón-l, es una declaración precisa de las acciones de botón, pero es ahora
necesario distinguir entre la primera petición de un viaje y las siguientes veces que se pulsa,
antes de que el viaje realmente comience. Para acomodar estos requerimientos se describe
un nuevo proceso de nivel-2, bot6n 2 y se expresa mediante un diagrama de estructura de
Jackson en la Figura 5.6.
FIGURA 5.6 Servicio de trenes de b universidad —paso funcional
Una función inspecciona el vector de estado de botón-2 para determinar hay una petición
excepcional de un viaje. La función mcontrol informa a cuando se ha servido una petición,
es decir, cuando el tren ha llegado a estación en donde se ha hecho la petición. Hace esto
pasando los registros de llegada recibidos de tren- 1. Así se define una función interactiva
para el proceso botón-2.
El texto estructurado para botón-2 es el siguiente:
BOTON-2 seq
peticion := no;
read MBD and BID;
CUERPO-BOTON itr
GRUPO-PULSAR seq
CUERPO-LLEG-EXTRA itr while (LLEGADA)
read MBD and BiD;
CUERPO-LLEG-EXTRA end
PULSAR-PET seq
petición := sí;
read MBD and BiD;
Roger S. Presuman
Ingeniería de Software un Enfoque practico
PULSAR-PET end
PULSAR-PET-EXTRA itr while
read MBD and BiD;
PULSAR-PET-EXTRA end
LLEGADA seq
petición := no;
read MBD and BiD;
LLEGADA end
GRUPO-PULSAR end
CUERPO-BOTON end
BOTON-2 end
La entrada a botón-2 consta de dos pantallas de datos, mezcladas de forma que se denomina
una mezcla desigual. Una mezcla desigual ocurre cuando el proceso de lectura simplemente
acepta el siguiente registro que se presenta en la pantalla de datos. Por tanto, el orden en el
que se procesen los registros es dependiente de dos procesos de escritura potencialmente
asíncronos. Para este ejemplo, la mezcla desigual es suficiente. Sin embargo, DSJ da otros
tipos de mezclas que podrían introducir menos indeterminación en el sistema [JAC83].
La Figura 5.7 muestra un diagrama de especificación del sistema que refleja todos los
cambios impuestos como pile del paso funcional. Una función empotrada dentro de tren- 1
genera las órdenes de las lámparas y un nuevo proceso de función, mcontrol, impone una
función interactiva en botón-2 y produce las órdenes del motor para el tren. Las dobles
líneas sobre la salida MBD implica una conexión “uno a muchos”. La estructura del
proceso mcontrol se deriva examinando las estructuras de datos de entrada y salida.
Paso de temporización del sistema
En este paso del DSJ, el diseñador especifica las ligaduras de tiempo impuestas en el
sistema. Los primeros pasos de diseño producen un sistema compuesto de procesos
secuenciales que se comunican mediante flujos de datos e inspecciones directas al vector de
estado. La relativa planificación del procesamiento está indeterminada.
Un mecanismo que puede usarse para sincronizar los procesos es el marcador de
granularidad del tiempo (MGT). El MGT es un registro de datos que indica la ocurrencia de
un intervalo particular de tiempo y que puede utilizarse para activar el paso del tiempo, que
afecta a las acciones de un proceso.
Roger S. Presuman
Ingeniería de Software un Enfoque practico
FIGURA 5.7 DES extendido para las funciones 1 y 2.
Las líneas de tiempo para el ejemplo del Servicio de Trenes de la universidad puede incluir:
1. FI tiempo en el que debe enviarse la orden PARAR basándose en la velocidad del
tren y la potencia de frenada.
2. El tiempo de respuesta para la conmutación de las lámparas del panel.
Para el ejemplo STU, no hay necesidad de introducir un mecanismo especial de
sincronización. En algún sentido, el intercambio de datos ha impuesto ya algún grado de
sincronización.
Paso de implementación
El paso de implementación del DSJ tendía, en los primeros trabajos [JAC75], a la
derivación del resto del programa o estructura del proceso, a partir de la estructura de datos
del problema. En esta sección y en la siguiente, se presenta una visión general del enfoque
de diseño de programas de Jackson. Las transformaciones asociadas con este método son la
razón de que esta metodología se haya categorizado como de orientada a la estructura de
datos.
La esencia del paso de implementación puede establecerse parafraseando a Jackson: “Los
problemas deben descomponerse en estructuras jerárquicas de partes que puedan ser
representadas por tres formas estructurales”. Las “formas estructurales” a que Jackson
alude son la secuencia, condición y repetición —en realidad, construcciones
procedimentales (en la terminología de este libro) que son la base de la filosofía de la
programación estructurada.
La notación de la estructura de datos es una variación del diagrama de estructuras de
Jackson y se muestra en la Figura 5.8. Refiriéndonos a esta figura, una colección de datos,
Roger S. Presuman
Ingeniería de Software un Enfoque practico
FIGURA 5.8 Notación de las estructuras de datos.
A, esta compuesta de múltiples ocurrencias (denotadas por un *) de la subestructura de
datos B. B incluye múltiples ocurrencias de C y otra subestructura D que contiene el
elemento de datos E o F (los datos alternativos se denotan por una O). La representación
del diagrama de bloques de Jackson de jerarquía de información, puede aplicarse a
estructuras de base de datos, de entrada o de salida con igual facilidad.
Como un ejemplo más concreto de esta notación, consideremos el software que ha de
desarrollarse para el sistema de contabilidad de tarjetas de crédito (muy simplificado) que
se muestra en la Figura 5.9. Ha de componerse un archivo de pagos, que contiene números
de cliente (NOC), fecha del pago (FECIJA), y cantidad a pagar (CANT) con un archivo
maestro de cliente que contiene NOC y balances excepcionales. El archivo de pagos ha de
estar preordenado en varios grupos de clientes (GRUPO-NOC), de forma que todos los
pagos a un individuo estén contenidos dentro de un registro. La estructura de datos para
ambos archivos, descrita en notación de Jackson, se muestra en la figura.
Roger S. Presuman
Ingeniería de Software un Enfoque practico
FIGURA 5.9 Sistema de facturación de tarjetas de crédito.
Descargar