4. diseño funcional de la aplicación. 4.1....

27
Diseño funcional 4. Diseño funcional de la aplicación. 4.1. Introducción. En el capítulo anterior explicábamos el funcionamiento del interfaz desde el punto de vista del usuario. En este capítulo desarrollaremos una descripción del funcionamiento del programa desde el punto de vista de la programación, es decir, cómo funciona el programa internamente y la arquitectura que posee. Para poder plasmar de una manera gráfica el funcionamiento interno del programa hemos recurrido a los Diagramas de Actividades, a través de los cuales podemos reflejar el flujo de control entre las distintas actividades que tienen lugar. Hemos dividido la estructura del programa en cuatro niveles. NIVEL 0 Módulo Principal. NIVEL 1 Define Conjunto Unidimensional Simple. Define Conjunto Unidimensional a través de Operaciones sobre otros conjuntos. Define Conjunto Unidimensional con Condiciones. Define Parámetro. Define Variable. Define Restricciones. Define Función Objetivo. NIVEL 2 Validar Conjunto. Crear Expresiones. NIVEL 3 Declara Elemento. Crea Función Unaria. Crea Función Binaria o N-aria. Crea Función Iterativa. 84

Upload: duongtu

Post on 20-Sep-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

Diseño funcional

4. Diseño funcional de la aplicación.

4.1. Introducción.

En el capítulo anterior explicábamos el funcionamiento del interfaz desde el punto de vista del usuario.

En este capítulo desarrollaremos una descripción del funcionamiento del programa desde el punto de vista de la programación, es decir, cómo funciona el programa internamente y la arquitectura que posee.

Para poder plasmar de una manera gráfica el funcionamiento interno del programa hemos recurrido a los Diagramas de Actividades, a través de los cuales podemos reflejar el flujo de control entre las distintas actividades que tienen lugar.

Hemos dividido la estructura del programa en cuatro niveles.

NIVEL 0

• Módulo Principal.

NIVEL 1

• Define Conjunto Unidimensional Simple.• Define Conjunto Unidimensional a través de Operaciones sobre otros conjuntos.• Define Conjunto Unidimensional con Condiciones.• Define Parámetro.• Define Variable.• Define Restricciones.• Define Función Objetivo.

NIVEL 2

• Validar Conjunto.• Crear Expresiones.

NIVEL 3

• Declara Elemento.• Crea Función Unaria.• Crea Función Binaria o N-aria.• Crea Función Iterativa.

84

Diseño funcional

Cada uno de los módulos, procesos, subprocesos o funciones que componen los distintos niveles está representado en un diagrama de actividades. En cada diagrama se reflejará la secuencia de actividades que tienen lugar en cada uno de ellos.

• Nivel 0: es el módulo principal.• Nivel 1: está constituido por los procesos principales del problema.• Nivel 2: son subprocesos que forman parte de algunos los procesos anteriores• Nivel 3: son a su vez subprocesos del subproceso “Crear Expresiones” .

En la siguiente figura se describe el significado de los símbolos que usaremos en los diagramas de actividades.

Símbolo Significado

Proceso o actividad

Elemento de decisión: Bifurcación

Punto de inicio de módulo

Punto de fin de módulo

85

Diseño funcional

4.2. Módulos del programa.

Para todos los niveles iremos viendo y explicando los diagramas y las actividades que en ellos aparecen.

4.2.1. Nivel 0: Módulo principal.

El módulo principal está formado por los procesos que antes exponíamos. Si echamos un vistazo al programa, vemos que estos procesos son prácticamente la totalidad de las pantallas a las que nos daba acceso la página principal del interfaz, es decir, todos los elementos que definen un problema de investigación operativa.

Cada uno de ellos está formado a su vez por subprocesos o funciones, y así sucesivamente hasta llegar a los procesos elementales.

86

Diseño funcional

87

Define Función Objetivo

Define conjunto unid. simple

Define RestricciónDefine Parámetro

Define Variable

Define conjunto unid. Cond.

Define conjunto unid. Oper.

¿ Modelado terminado?

Convertir modelo a ORML

Enviar por correo electrónico

SI

NO

Diseño funcional

4.2.2. Nivel 1: Procesos Principales.

4.2.2.1. Define conjunto unidimensional simple.

El siguiente diagrama de actividades describe los pasos que sigue el programa en la creación de un conjunto unidimensional simple, en el cual el usuario introduce los elementos que forman dicho conjunto.

Vemos dos elementos de bifurcación, cuyo objetivo es permitir al usuario el poder definir más de un alias para el conjunto, o el de introducir todos los elementos del conjunto.

88

Diseño funcional

89

Introduce Nombre

¿Introduce nuevo alias?

Introduce Alias

Introduce elemento del conjunto

¿Introduce nuevo

elemento?

Validar conjunto

SI

NO

SI

NO

Diseño funcional

4.2.2.2. Define conjunto unid. con operaciones sobre conjuntos.

En el siguiente diagrama de veremos cómo definir un conjunto unidimensional creado a través de operaciones sobre otros conjuntos.

El proceso es idéntico en los primeros pasos al conjunto unidimensional simple, con la diferencia que aquí no se introducirán los elementos que lo forman, sino que se seleccionarán dos conjuntos previamente creados y una operación a realizar entre ellos ( Unión Intersección y Diferencia ). Los elementos que resulten de esta operación serán los que formen el nuevo conjunto.

90

Diseño funcional

91

Introduce Nombre

¿Introduce nuevo alias?

Introduce Alias

Introduce conjunto 1

Carga Dominio Índices

Introduce conjunto 2

Selecciona operación a realizar

Validar conjunto

SI

NO

Diseño funcional

4.2.2.3. Define conjunto unid. con condiciones.

En los conjuntos unidimensionales con condiciones el usuario debe introducir, al igual que para los otros dos tipos de conjuntos, el nombre y los alias ( siempre que el conjunto tuviera algún alias o nombre alternativo).

En cuanto a la manera de definir los elementos de este conjunto, en este caso se escogerá en primer lugar, el conjunto al cual se le aplicará la condición. Todos aquellos elementos del conjunto escogido que cumplan la condición expuesta, serán los que conformen el nuevo conjunto.

92

Diseño funcional

93

Introduce Nombre

¿Introduce nuevo alias?

Introduce Alias

Selecciona conjunto

Carga Dominio Índices

Crear Expresiones

Selecciona condición a aplicar a conjunto

Validar conjunto

Carga Dominio Parámetros

Carga Dominio Variables

Carga Dominio Expresiones

SI

NO

Diseño funcional

4.2.2.4. Define parámetro.

En cuanto a los parámetros, vimos antes que el interfaz permite definir tres tipos de parámetros.

• Parámetros Cerodimensionales.• Parámetros Unidimensionales.• Parámetros Bidimensionales.

En el diagrama de actividades vemos que existe un elemento de bifurcación que nos conduce por una de las tres alternativas. Para al final del diagrama, volverse a unir los tres caminos posibles y terminar con el subproceso Almacenar Parámetro.

94

Diseño funcional

95

¿Nº dimensiones del parámetro?

Carga Dominio Índices

Introduce valores parámetro

Introduce Nombre

Selecciona dominio parámetro

Despliega matriz de valores

Introduce Nombre

Introduce valor del parámetro

Introduce valores parámetro

Introduce Nombre

Selecciona dominio parámetro

Despliega vector de valores

Almacenar Parámetro

2

1

0

Diseño funcional

4.2.2.5. Define variable.

Las variables poseen una estructura en el diagrama muy similar a los parámetros. Aunque debido a la construcción del interfaz, podemos definir variables de los siguientes tipos.

• Variables Cerodimensionales.• Variables Multidimensionales.

Mientras que los parámetros no era posible definirlos sobre más de dos conjuntos, en las variables no existe esa limitación.

Veamos cómo quedaría el diagrama de actividades que refleja el proceso de definición de las variables.

96

Diseño funcional

97

Carga Dominio Índices

Selecciona tipo variable

¿Nº dimensiones de la variable?

Introduce Nombre

¿Introduce nuevo

dominio?

Introduce dominio de la variable

Introduce Nombre

Almacenar variable

SI

NO

0 1 ó más

Diseño funcional

4.2.2.6. Define restricción.

En este subproceso se dan las siguientes actividades.

En primer lugar, al cargar la página automáticamente se cargan en sus respectivos dominios, los conjuntos, parámetros, variables y expresiones los cuales previamente hayamos creado.

Una vez hayan tenido lugar estas actividades, el usuario tomará protagonismo en el proceso.

Para crear una restricción o un conjunto de restricciones, habrá que empezar definiendo el nombre y el signo de la igualdad.

Otra de los procesos que tienen lugar es la creación de las expresiones que nos harán falta, tanto para las condiciones del dominio, si las hubiere, como para las expresiones que forman los dos términos de la restricción.

El proceso Crear Expresiones está formado a su vez por cuatro subprocesos:

• Declara Elemento.• Crea Función Unaria.• Crea Función Binaria o N-aria.• Crea Función Iterativa.

Una vez hecho esto el usuario tendrá que decidir si quiere introducir un dominio de índices para la restricción o no, y en caso afirmativo de nuevo se encontrará ante elección, si el dominio escogido tendrá condiciones o no.

Esto lo conseguimos con los elementos de bifurcación, los cuales dan al usuario dos o más posibles alternativas.

Y por último terminaríamos seleccionando los términos izquierdo y derecho de la restricción, para concluir almacenando la restricción creada.

98

Diseño funcional

99

Introduce Nombre

Seleccione signo de la igualdad

Carga Dominio Índices

Carga Dominio Parámetros

Carga Dominio Variables

Carga Dominio Expresiones

Crear Expresiones

Diseño funcional

100

¿Introducir dominio índices para restricción?

Introduce dominio restricción

¿Introducir nuevo dominio a

restricción?

¿Introducir condición al

dominio?

Introduce condición

¿Introducir nueva

condición al

Selecciona término izq.

Selecciona término dch..

Almacena restricción

SI

NO

NOSI

SINO

SI

NO

Diseño funcional

4.2.2.7. Define función objetivo.

Para finalizar con el nivel 1 veremos el diagrama de actividades correspondiente a la definición de la función objetivo.

Al igual que en otros procesos, las primeras actividades serán el cargar en sus correspondientes dominios, tanto conjuntos, parámetros, variables y expresiones.

En este proceso también nos encontramos el subproceso Crear Expresiones , el cual veremos con más detalle en el nivel 2.

Para último como en todos los procesos, finalizamos almacenando la función objetivo.

101

Diseño funcional

102

Introduce Nombre

Seleccione tipo función objetivo

Carga Dominio Índices

Carga Dominio Parámetros

Carga Dominio Variables

Carga Dominio Expresiones

Crear Expresiones

Seleccione expresión a optimizar

Almacenar F.O.

Diseño funcional

4.2.3. Nivel 2: Subprocesos.

En este apartado se describen los subprocesos y funciones del nivel 1. Son los siguientes.

• Validar Conjunto.• Crear Expresiones.

4.2.3.1. Validar Conjunto.

Esta función la encontramos en el último paso en la definición de todos los tipos de conjuntos.

Como decíamos antes, el programa no permite la existencia de dos o más conjuntos que posean el mismo nombre o alguno de sus alias. Esta cualidad la conseguimos con esta función.

103

¿Existe el nombre

seleccionado?

¿Existe alguno de los alias ?

Modifica el Nombre

Modifica/elimina el alias

Almacena Conjunto

SI

NO

SI

NO

Diseño funcional

4.2.3.2. Crear Expresiones.

El subproceso Crear Expresiones está compuesto a su vez por otros cuatro subprocesos.

• Declara Elemento.• Crea Función Unaria.• Crea Función Binaria o N-aria.• Crea Función Iterativa.

Éstos los veremos con más detalle en el nivel 3.

104

Crea Función Iterativa.Declara Elemento Crea Función

Binaria o N-ariaCrea Función

Unaria

¿ expresión finalizada?

SI

NO

Diseño funcional

4.2.4. Nivel 3: Funciones básicas.

4.2.4.1. Declara elemento.

El primer paso para poder crear las expresiones es el de declarar los elementos, es decir, cargar estos elementos en el dominio de expresiones para poder trabajar luego con ellos.

A continuación vemos el proceso que se sigue.

105

Escoge tipo elemento

Despliega ventana de selección

Selecciona elemento

Carga elemento en Dominio Expresiones

Diseño funcional

4.2.4.2. Crea Función Unaria.

Como decíamos antes, para poder crear una función unaria previamente debíamos haber declarado el elemento o haber creado la expresión sobre la cual queremos aplicar la función.

Esto podemos verlo en el siguiente diagrama, donde el programa pide al usuario que seleccione la expresión sobre la que se quiere aplicar la función unaria.

El último paso es cargar la nueva expresión creada al Dominio Expresiones.

106

Escoge tipo función unaria

Despliega ventana selección

¿La función unaria escogida es root?

Selecciona expresión sobre la que realizar la raíz

Escribe grado raíz

Selecciona expresión

Cargar expresión en Dominio Expresiones

SI NO

Diseño funcional

4.2.4.3. Crea Función Binaria/N-aria.

En la siguiente función se ha incluido tanto la declaración de funciones binarias como n-arias. Las resumimos a continuación.

• Función Binaria: divide, power, quotient, rem.• Función N-aria: plus, minus, times, max, min.

El diagrama de actividades que representa su construcción es el siguiente.

107

Diseño funcional

108

Escoge tipo función Binaria/N-aria

Despliega ventana selección

¿Número de términos de la

función?

Introduce 1er términoIntroduce término

Cargar expresión en Dominio Expresiones

¿introduce otro término?

2 > 2

Introduce 2º término

SI

NO

Diseño funcional

4.2.4.4. Crea Función Iterativa.

Las funciones iterativas son dos: SUM y PRODUCT.

En el siguiente diagrama encontramos tres elementos de bifurcación que nos irán conduciendo en el desarrollo del proceso.

109

Diseño funcional

110

Escoge tipo función Iterativa

Despliega ventana selección

¿introduce otro dominio?

SI

NO

Introduce dominio de la restricción

¿dominio tiene condiciones?

Introduce condición del dominio

¿introduce nueva

condición?

NO

SI

Selecciona expresión sobre la que realizar la función

Carga expresiones En Dominio Expresiones

SI NO