4. diseño funcional de la aplicación. 4.1....
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