unive rsidad central “marta abreu” de las vill as
TRANSCRIPT
Títul
Unive
Facu
lo: Sistem
ersidad C
ultad de
ma de Inf
Al
Autor:
Tutor:
Sa
Central “M
Matemá
Trabajo
formació
limentac
Ivón Gu
Lic. Yeim
anta Clara,
Marta A
tica Físic
o de Dipl
n para la
ión de la
uillermo M
mer Torres
, 3 de Julio
Abreu” de
ca y Com
loma
a Gestión
UCLV.
arín Rodríg
s Nápoles
o de 2009
e Las Vill
mputación
n en la Di
guez
las.
n.
irección de
Hago constar que el presente trabajo fue realizado en la Universidad Central “Marta Abreu” de
Las Villas como parte de la culminación de los estudios de la especialidad de Ciencias de la
Computación, autorizando a que el mismo sea utilizado por la institución, para los fines que
estime conveniente, tanto de forma parcial como total y que además no podrá ser presentado
en eventos ni publicado sin la autorización de la Universidad.
_______________________
Firma de los autores
Los abajo firmantes, certificamos que el presente trabajo ha sido realizado según acuerdos de
la dirección de nuestro centro y el mismo cumple con los requisitos que debe tener un trabajo
de esta envergadura referido a la temática señalada.
________________________ ______________________
Firma de los tutores Firma del jefe del
Seminario
No busques ser alguien de éxito sino busca ser alguien valioso:
lo demás llegará naturalmente.
A mis padres, por la confianza que siempre depositaron en mí.
A mis abuelos, por soportar mis malacrianzas durante tanto tiempo.
A mi familia.
A mis amigos.
Agradezco a:
Mi tutor, por su paciencia, comprensión y apoyo incondicional.
Mis profesores, por sus excelentes clases y experiencia trasmitida.
Al chino, por su ayuda y amistad.
A todos los que de una manera u otra me han apoyado durante mi vida.
Resumen
El presente Trabajo de Diploma consiste en el desarrollo de un sistema computacional para
automatizar el proceso de planificación y control de los menús en la Dirección de
Alimentación de la Universidad Central “Marta Abreu” de Las Villas. El sistema se desarrolla
como una aplicación web de software libre utilizando Linux como sistema operativo, servidor
web Apache, base de datos PostGreSQL, PHP y Javascript como lenguajes de programación y
HTML y CSS como lenguajes de marcado y estilos. Mediante la implementación de los
módulos que integran la aplicación, se garantiza inmediatez y eficiencia en la obtención de los
conjuntos de resultados necesarios para realizar las tareas que allí se necesitan y que
antiguamente se realizaban de manera más compleja, e incluso en ocasiones no se encontraban
de forma digital. Algunas de las novedades que brinda este sistema son los cálculos de
cantidades necesarias para la elaboración de los platos en el comedor, teniendo en cuenta los
comensales y existencias en el almacén, informes de varios tipos donde se listan resúmenes de
cantidades de productos, comensales y platos utilizados durante la planificación de los menús.
Abstract
This diploma work is to develop a computer system to automate the process of planning and
control of the menus in the Food Directorate of the Central University "Marta Abreu" de Las
Villas. The system is developed as a web application using open source Linux operating
system, Apache Web server, PostgreSQL database, PHP and JavaScript as programming
languages such as CSS and HTML and markup languages and styles. Through the
implementation of the modules that make up the application, it ensures immediacy and
efficiency in achieving the result sets needed to perform the tasks that are needed and that
there were formerly a more complex, and sometimes were not in digital form. Some of the
innovations offered by this system are estimates of amounts necessary for preparing meals in
the dining room, taking into account diners and inventory in the warehouse, reports of various
kinds which lists summaries of quantities of products, people and dishes used during the
planning of menus.
Contenido
Contenido
Introducción .................................................................................................................................... 1
Planteamiento del problema. ....................................................................................................... 2
Objetivo general. ......................................................................................................................... 2
Objetivos específicos. .................................................................................................................. 2
Preguntas de investigación .......................................................................................................... 3
Justificación de la investigación. ................................................................................................. 3
Hipótesis de investigación: .......................................................................................................... 4
Resumen de los capítulos. ........................................................................................................... 4
Capitulo 1: Selección del escenario computacional del trabajo. ..................................................... 5
1.1 Situación actual de sistemas que gestionen la planificación y el control de los productos para la alimentación en los centros de Enseñanza Superior de nuestro país. .............................. 5
1.2 Documentación legal establecida para la planificación y el control de los productos en almacenes. ................................................................................................................................... 6
1.3 Caracterización de los procesos de planificación y control de los productos alimentarios en la UCLV ................................................................................................................................. 7
1.4 Descripción del sistema. ................................................................................................... 9
1.4.1 Beneficios que se esperan: ........................................................................................ 9
1.4.2 Bondades del sistema: ............................................................................................... 9
1.5 Software libre. ................................................................................................................ 10
1.6 Componentes fundamentales que conforman la plataforma WEB utilizada: ................ 11
1.6.1 Linux, sistema operativo: ........................................................................................ 11
1.6.2 Apache, servidor WEB: .......................................................................................... 12
1.6.3 PostgreSQL, gestor de bases de datos: ................................................................... 13
1.7 Programación orientada a eventos .................................................................................. 14
Contenido
1.8 Herramientas utilizadas para la construcción de un sitio web. ...................................... 15
1.8.1 PHP, lenguaje de programación principal: ............................................................. 15
1.8.2 JavaScript, lenguaje de programación de apoyo: .................................................... 17
1.8.3 HTML, lenguaje de marcado hipertexto: ................................................................ 18
1.8.4 CSS - Cascading Style Sheets (Hojas de estilo en cascada) ................................... 18
1.8.5 DOM - Document Object Model (Modelo en Objeto del Documento) .................. 19
1.9 Problemas de compatibilidad entre navegadores WEB. ................................................ 20
Capitulo 2. Diseño e implementación del sistema. ....................................................................... 22
2.1 Etapa de análisis y diseño del sistema: ........................................................................... 22
2.1.1 Diagrama de actividades ......................................................................................... 24
2.1.2 Modelo de casos de uso .......................................................................................... 24
2.1.3 Descripción de los casos de uso principales de cada actor ..................................... 27
2.1.4 Diagrama de navegación del sitio ........................................................................... 30
2.1.5 Diagrama de despliegue .......................................................................................... 30
2.2 Diseño de la base de datos. ............................................................................................. 31
2.3 Herramientas utilizadas para el desarrollo del sistema .................................................. 31
2.4 Diseño de la interfaz visual. ........................................................................................... 33
2.5 Etapa de implementación. .............................................................................................. 35
2.5.1 Procedimientos almacenados y funciones de la base de datos. .............................. 38
2.5.2 Uso de PHP en las clases del sistema. .................................................................... 39
2.5.3 Uso de JavaScript en las clases del sistema. ........................................................... 40
2.5.3.1 Yahoo! User Interface Library (YUI) .............................................................. 40
2.5.3.2 Clases JavaScript creadas para elaborar un menú. .......................................... 41
Capítulo 3: Manual de usuario. ..................................................................................................... 43
3.1 Presentación del sistema. ................................................................................................ 43
Contenido
3.2 Iniciar sesión. ................................................................................................................. 44
3.3 Barra de navegación. ...................................................................................................... 44
3.4 Opción “Almacén” de la barra de navegación. .............................................................. 45
3.4.1 Opción “Unidades de medida” de la sub-barra de navegación. .............................. 45
3.4.2 Opción “Categorías de productos” de la sub-barra de navegación. ........................ 46
3.4.3 Opción “Unidades de medidas” de la sub-barra de navegación. ............................ 47
3.5 Opción “Menú” de la barra de navegación. ................................................................... 50
3.5.1 Opción “Categorías de platos” de la sub-barra de navegación. .............................. 50
3.5.2 Opción “Platos” de la sub-barra de navegación. ..................................................... 51
3.5.3 Opción “Menús” de la sub-barra de navegación. .................................................... 53
3.6 Opción “Reportes” de la barra de navegación. .............................................................. 57
3.6.1 Opción “Almacén” de la sub-barra de navegación. ................................................ 57
3.6.2 Opción “Menú” de la sub-barra de navegación. ..................................................... 58
3.7 Opción “Usuarios” de la barra de navegación. .............................................................. 60
3.8 Opción “Mis datos” de la barra de navegación. ............................................................. 60
3.9 Opción “Salir” de la barra de navegación ...................................................................... 61
Conclusiones ................................................................................................................................. 62
Recomendaciones ......................................................................................................................... 63
Bibliografía ................................................................................................................................... 64
Anexos .......................................................................................................................................... 65
Lista de figuras
Figuras
Figura 2.1 Árbol de categorías y productos ............................................................................. 23
Figura 2.2 Casos de uso del actor Director .............................................................................. 25
Figura 2.3 Casos de uso del actor Almacenero ........................................................................ 25
Figura 2.4 Casos de uso del actor Planificador ........................................................................ 26
Figura 2.5 Casos de uso del actor Administrador .................................................................... 26
Figura 2.6 Diagrama de despliegue .......................................................................................... 31
Figura 2.7 Diseño del sistema. ................................................................................................. 33
Figura 2.8 Boceto del diseño .................................................................................................... 34
Figura 2.9 Clase Save. .............................................................................................................. 40
Figura 3.1 Partes del sistema. ................................................................................................... 43
Figura 3.2 Cuadro de inicio de sesión ...................................................................................... 44
Figura 3.3 Barra de navegación. ............................................................................................... 44
Figura 3.4 Opción Almacén – Unidades de medida. ................................................................ 45
Figura 3.5 Unidades de medida. ............................................................................................... 45
Figura 3.6 Crear o editar una unidad de medida. ..................................................................... 46
Figura 3.7 Opción Categorías – Categorías de productos ........................................................ 46
Figura 3.8 Categorías de productos. ......................................................................................... 47
Figura 3.9 Crear o editar una categoría de un producto. .......................................................... 47
Figura 3.10 Opción Almacén – Unidades de medidas. .......................................................... 47
Figura 3.11 Productos. ............................................................................................................ 48
Figura 3.12 Crear o editar un producto. .................................................................................. 49
Lista de figuras
Figura 3.13 Operaciones de Depósito o Extracción. .............................................................. 49
Figura 3.14 Opción Categorías – Categorías de platos. .......................................................... 50
Figura 3.15 Categorías de platos. ........................................................................................... 50
Figura 3.16 Crear o editar una categoría de un plato. ............................................................. 50
Figura 3.17 Opción Menú – Platos. ........................................................................................ 51
Figura 3.18 Platos. .................................................................................................................. 51
Figura 3.19 Crear o editar un plato. ........................................................................................ 52
Figura 3.20 Ejemplo de un plato elaborado. ........................................................................... 53
Figura 3.21 Opción Menú – Menús. ....................................................................................... 53
Figura 3.22 Menús .................................................................................................................. 53
Figura 3.23 Calendario. .......................................................................................................... 54
Figura 3.24 Icono de informe. ................................................................................................ 54
Figura 3.25 Nuevo menú – Comedor y tipos de comida. ....................................................... 54
Figura 3.26 Nuevo menú – Responsables y observaciones. ................................................... 55
Figura 3.27 Nuevo menú – Categorías y listas de platos. ....................................................... 55
Figura 3.28 Nuevo menú – Comensales e ingredientes del menú. ......................................... 56
Figura 3.29 Informes. ............................................................................................................. 57
Figura 3.30 Opción Reportes - Almacén. ............................................................................... 57
Figura 3.31 Selección de tipo de informe, fechas y productos para informes de almacén. .... 58
Figura 3.32 Movimientos por productos. ............................................................................... 58
Figura 3.33 IPB de almacén.................................................................................................... 58
Figura 3.34 Opción Reportes - Menú. .................................................................................... 58
Figura 3.35 Fichas de costos. .................................................................................................. 59
Figura 3.36 Frecuencias por platos. ........................................................................................ 59
Lista de figuras
Figura 3.37 Comportamiento del balance nutritivo. ............................................................... 59
Figura 3.38 Opción Usuarios. ................................................................................................. 60
Figura 3.39 Usuarios. .............................................................................................................. 60
Figura 3.40 Crear o editar un usuario. .................................................................................... 60
Figura 3.41 Opción Mis datos. ............................................................................................... 60
Figura 3.42 Mis datos ............................................................................................................. 61
Figura 3.43 Opción Salir. ........................................................................................................ 61
Lista de tablas
Tablas
Tabla 1.1 Norma de consumo del plato Potaje de Frijoles Negros ........................................... 6
Tabla 2.1 Tabla de eventos para el caso de uso “Actualizar inventario”. ............................... 27
Tabla 2.1 Tabla de eventos para el caso de uso “Planificar menú”. ....................................... 28
Introducción
1
Introducción
La Dirección de Alimentación de la UCLV decide implementar un sistema que logre integrar las
áreas de almacén y planificación del menú para llevar un control centralizado de los recursos que
maneja. Para esto se decidió utilizar tecnología de software libre cliente-servidor con tecnología
Web. Este sistema utilizará como gestor de bases de datos PostgreSQL y como lenguajes de
programación PHP y JavaScript.
Se decide realizar una aplicación Web porque ofrece las ventajas siguientes:
Se puede migrar de sistema operativo o cambiar el hardware libremente sin afectar el
funcionamiento de las aplicaciones de servidor.
No se requieren complicadas combinaciones de Hardware/Software para utilizar estas
aplicaciones.
Se facilita el trabajo a distancia. Se puede trabajar desde cualquier computadora que esté
conectada a la intranet universitaria.
Actualizar o hacer cambios en la aplicación es sencillo y sin riesgos de
incompatibilidades. Existe solo una versión en el servidor lo que implica que no hay que
distribuirla entre los demás computadores. El proceso es rápido y limpio.
Al funcionar en un navegador, se requiere un conocimiento básico de informática para
utilizar una aplicación Web.
Se podría pensar como gestor de base de datos en MySQL pero con respecto a PostgreSQL tiene
las siguientes desventajas, que en un sistema como el que se quiere desarrollar influiría en el
rendimiento y facilidades de construcción porque se tendría que acudir a soluciones alternativas.
Entre las ventajas se tienen:
Sistema de tipos de datos extensible para proveer tipos de datos definidos por el usuario,
y rápido desarrollo de nuevos tipos.
Integridad referencial.
Replicación que permiten la duplicación de bases de datos maestras en múltiples sitios de
réplica.
Secuencias.
Introducción
2
Procedimientos almacenados en múltiples lenguajes de programación, entre ellos
PL/pgSQL [1]
Utilizamos PHP porque tiene la ventaja de ser un lenguaje multiplataforma, con capacidad de
expandir su potencial mediante módulos (llamados ext's o extensiones), es libre, fácil de
aprender y funciona con recursos limitados, donde no hace falta tener un gran servidor que de
soporte a él, por lo cual resulta eficiente para el sistema que queremos implementar.
Planteamiento del problema.
La Dirección de Alimentación de la UCLV carece de un Sistema de Información y Gestión
Automatizado para el control y la supervisión de sus procesos fundamentales, lo que se traduce
en extensas jornadas de planificación, excesivos cálculos manuales y contantes revisiones de
documentación manuscrita para la interpretación de indicadores vitales como: compras, precios,
existencias, comportamiento de comensales, etc.
Objetivo general.
Desarrollar e implantar un Sistema de Información y Gestión para la Dirección de Alimentación
de la UCLV, utilizando la tecnología de Software Libre Cliente-Servidor.
Objetivos específicos.
1. Revisión del estado del arte y los procesos que tributan a la gestión de la información
alimentaria en las universidades.
2. Identificar las tecnologías y herramientas a utilizar en la construcción del sistema
computacional.
3. Implementar los subsistemas necesarios para la gestión de la planificación del menú.
4. Implementar los subsistemas necesarios para la gestión del los productos en almacén.
5. Implementar los subsistemas necesarios para la obtención de reportes estadísticos.
Introducción
3
Preguntas de investigación
1. ¿Qué productos de Software Libre pueden ser adaptados para su uso en el sistema?
2. ¿De qué forma el sistema realizará la planificación del menú de forma eficiente y con los
requisitos exigidos?
3. ¿Qué información puede procesar y mostrar oportunamente el sistema para enriquecer la
toma de decisiones de los directivos?
4. ¿Cómo garantizar que el sistema tenga el máximo de seguridad y fiabilidad?
Justificación de la investigación.
Las áreas que forman la Dirección de Alimentación de la UCLV ejercen un control de los
recursos que manejan; algunas lo hacen a través de registros manuscritos y otras se auxilian del
programa Microsoft Excel. En los casos en que se comparte información entre áreas distintas,
por ejemplo, entre el almacén y el grupo de planificación, los almaceneros deben entregarle un
resumen escrito con las cantidades de productos existentes al planificador para que este con
ayuda del Microsoft Excel realice la planificación y elabore las solicitudes manuscritas al
almacén. Como sucede en este ejemplo existen otros casos similares en los que el movimiento de
información se realiza de forma manual y con lentitud, por no contar con un sistema que integre
y viabilice el intercambio de información entre las diferentes áreas. Con la realización del
Sistema de Información para la Gestión que se desarrolla en el presente trabajo de diploma, se
pretende eliminar estos problemas, de modo que la información fluya de manera rápida y precisa,
haciéndola más oportuna para la correspondiente toma de decisiones. Además, este sistema se
podría implantar en otras universidades del país, que al igual que la nuestra carecen de este tipo
de herramienta para procesar y manejar toda la información de los alimentos que se consumen
sus estudiantes y profesores.
Introducción
4
Hipótesis de investigación:
¿El menú se puede planificar a partir de tablas que contienen las normas para la
elaboración de los platos y las existencias en el almacén de cada producto que necesite
dicho plato?
¿Se puede garantizar que las existencias en los almacenes sean las correctas mediante el
control de depósitos y extracciones de productos después de una de estas operaciones?
¿Es posible realizar la extracción automática de las cantidades correspondientes de cada
producto después de la elaboración de un menú?
¿Es posible garantizar la seguridad del sistema mediante el sistema operativo, el lenguaje
de desarrollo y el gestor de base de datos seleccionados, así como la implementación de
un módulo que lleve un control de los accesos al sistema mediante la autentificación de
usuarios?
Resumen de los capítulos.
En el primer capítulo de este trabajo se aborda el tema de la fundamentación teórica, a partir de
la necesidad de implantar este sistema para la gestión en la Dirección de Alimentación de la
UCLV. Se da a conocer de la importancia del uso de Software Libre en la solución del problema
planteado y las ventajas que este proporcionaría.
En el segundo capítulo se trata el estado de los procesos actuales para llevar a cabo la gestión en
la Dirección de Administración. Se aborda la implementación de los módulos que fueron
necesarios para el sistema, así como los actores y casos de uso del mismo.
En el tercer capítulo se muestra el manual de usuarios del sistema, el cual ofrece las opciones
necesarias para iniciar la capacitación de los usuarios que utilizan esta aplicación web.
Capitulo 1: Selección del escenario computacional del trabajo.
5
Capitulo 1: Selección del escenario computacional del trabajo.
1.1 Situación actual de sistemas que gestionen la planificación y el control de los productos
para la alimentación en los centros de Enseñanza Superior de nuestro país.
En todos los centros de enseñanza del Ministerio de Educación Superior existe el control
bilateral de los procesos fundamentales, o sea existe el control de los procesos a través de los
documentos manuscritos y el control de los mismos procesos a través de sistemas automatizados.
La verificación a través de auditorías, inspecciones y supervisiones de la coincidencia de ambas
contabilidades ha resultado ser un método de control muy eficiente y prometedor.
Las universidades enfocadas en su principal misión de formar y educar a los futuros
profesionales del mañana, han centrado su interés en desarrollar al máximo los procesos que
tributan al cumplimiento de su misión. Tal es así que todas las universidades cuentan con un
sistema automatizado que registra y controla toda su contabilidad (compras, ventas, gastos,
ingresos, inventarios de productos en almacenes, medios básicos, recursos humanos, etc.). Pero
los sistemas vigentes ninguno registra, ni tiene funcionalidades orientadas al control detallado de
la alimentación que se ofrece diariamente en todas las universidades.
Solo en la UCI (Universidad de las Ciencias Informáticas) se ha automatizado planificación de
los alimentos, para controlar el cumplimiento de las normas de consumo, justificar los gastos por
el concepto de alimentación y abreviar el tiempo de planificación, pero en el sistema no se
trabaja con la nutrición y no se explota el trabajo estadístico. Los demás centros del país se
auxilian de las facilidades de cálculo del Microsoft Excel para humanizar el trabajo.
La Dirección de Alimentación de la UCLV cuenta un sistema desarrollado en el Microsoft Excel
que se ha ido perfeccionado desde el 2005 y el cual ha sido elogiado por muchas de las
inspecciones de nuestro Ministerio que controlan el proceso de alimentación en los centros de la
enseñanza superior.
El sistema que se pretende desarrollar en este trabajo abarca desde el la facilidad y el control de
planificación hasta el cumplimiento del balance nutritivo y el procesamiento estadístico
necesario para hacer más eficiente esta actividad, utilizando un entorno comunicativo que sirva
Capitulo 1: Selección del escenario computacional del trabajo.
6
para informar de forma adecuada a la población universitaria de un tema tan susceptible como la
alimentación.
1.2 Documentación legal establecida para la planificación y el control de los productos en
almacenes.
Con el surgimiento de la Residencia Estudiantil (beca) como un complemento vital para hacer de
las universidades centros de estudios regionales, se hizo preciso concebir un sistema alimentario
completo que garantizara la alimentación de todos los estudiantes becados en las universidades
del país que incluyera: desayuno, almuerzo, comida y en algunos casos hasta meriendas. A raíz
de esto se formularon resoluciones y procedimientos para organizar esta actividad.
Para llevar a cabo el proceso de planificación de los alimentos que se asignan para el consumo de
los estudiantes y trabajadores de la UCLV, se consultan documentos legales que rigen la forma y
los índices de consumo de los alimentos y se cumplen determinadas resoluciones emitidas para el
control de esta actividad. El documento más significativo de este proceso es:
Registro de Normas de Consumo: Este registro, revisado por Planificación y Comercio
Municipal y aprobado por la Administración y las Organizaciones Políticas del Centro, contiene
las cantidades de productos requeridas para la elaboración de los platos que pueden ofertarse en
los comedores obreros estudiantiles. Dicho registro será un punto de partida en la
implementación de este trabajo y las normas de consumo tienen el formato siguiente:
Tabla 1.1 Norma de consumo del plato Potaje de Frijoles Negros
Nombre del Plato Ración a Servir (g ó lts)
Ingredientes Fundamentales
Bruto (g ó lts)
Neto (g ó lts)
Observaciones.
Potaje de Frijoles
Negros 240
Frijoles Negros 45 Se utilizarán 10 g más de
Frijoles cuando la existencia
lo permita. Se utilizará hasta
20 g de viandas según la
existencia lo permita.
Aceite 3
Sal 3
Capitulo 1: Selección del escenario computacional del trabajo.
7
Para llevar a cabo la manipulación y el almacenamiento de los productos también existe una
documentación establecida y legislada con el fin de controlar estas actividades en los almacenes,
documentos tales como: el IPB del almacén, donde se refleja el movimiento de cada producto
diariamente, los modelos de solicitudes, de recepciones y otro muy importante como:
La Tarjeta Estiba: Este modelo es específico para cada producto y recoge todos los
movimientos del mismo. A continuación se muestra su estructura porque será de vital
importancia para el control de las existencias almacenadas.
TARJETA DE ESTIBA PRODUCTO GENERICO CODIGO
PRODUCTO ESPECIFICO
PRODUCTO SURTIDO
CUENTA SUBCUENTA ANALISIS
SECCION ESTANTE CASILLA
U/M PRECIO UNITARIO RECARGO O DESCUENTO
DOCUMENTO ENTRADA SALIDA SALDO FIRMA
D M CLAVE No.
PRODUCTO GENERICO CODIGO
PRODUCTO ESPECIFICO
PRODUCTO SURTIDO
1.3 Caracterización de los procesos de planificación y control de los productos alimentarios
en la UCLV
La Dirección de Alimentación se rige por procesos fundamentales dentro de los que sobresalen el
proceso de planificación de los alimentos y el proceso de control de los productos en almacén,
ambos vitales en el funcionamiento de esta área.
Proceso de planificación de los alimentos: Se basa en la planificación diaria de los alimentos
que consume la población universitaria, teniendo en cuenta el balance nutritivo según los
productos que se tengan en existencia. Actualmente existe un sistema en Microsoft Excel en el
Capitulo 1: Selección del escenario computacional del trabajo.
8
cual se realiza el proceso de planificación alimentaria pero es muy dependiente de documentos,
debido a que:
Las normas de los productos, los valores nutritivos y los productos de cada plato tienen
que introducirse de forma manual.
Las solicitudes tienen que actualizarse para que no aparezcan productos cuya solicitud
sea cero.
Proceso de control de productos en almacén: Todo el control de los productos se realiza de
forma manual a través de los documentos establecidos, aunque existe un sistema en la Dirección
de Economía cuya función únicamente es llevar el control contable de los productos, de allí que
no reporte ningún beneficio al proceso alimentario en cuestión. En la actualidad el proceso de
control de los productos en almacén es totalmente manual y consume tiempo, debido a que:
Se realiza a través de la solicitud de las existencias de los productos, las cuales solo se
consiguen de forma manual a través de las tarjetas de estiba, algo que consume mucho
tiempo al almacenero quien tiene que listar los saldos de los productos, a partir de la
revisión de las tarjetas de estiba.
Proceso de análisis y toma de decisiones: En este proceso se utiliza la información
fundamentalmente proveniente de los dos procesos antes descritos y se toman las decisiones
pertinentes para desarrollar la alimentación de la población universitaria de la manera más
satisfactoria y económicamente posible. Pero dificulta y limita el tiempo que se debía dedicársele
al análisis, la manera en que se realiza el procesamiento y obtención de la información, debido a
que:
Todo el procesamiento de la información proveniente de la planificación del menú y el
estado de los productos almacenados se realiza de forma manual.
Capitulo 1: Selección del escenario computacional del trabajo.
9
1.4 Descripción del sistema.
El sistema a través de su interfaz web permite a los usuarios (trabajadores de la Dirección de
Alimentación de la UCLV):
Llevar el control de las existencias en los almacenes de alimentación.
Elaborar los menús teniendo en cuenta los requisitos y normas de alimentación social.
Generar las solicitudes de pedidos y entregas de productos acorde con el menú elaborado.
Generar reportes de los productos utilizados por platos en cada menú (para desayuno,
almuerzo y comida) y por cantidades de comensales.
Obtener reportes a partir de los datos almacenados para lograr una mejor toma de
decisiones.
1.4.1 Beneficios que se esperan:
Lograr mayor organización y centralización de los datos.
Ganar rapidez y exactitud en la elaboración del menú, eliminando el margen de error
humano que trae como consecuencia realizar estos cálculos en varias partes de un
documento Excel.
Ganar en rapidez a la hora de generar solicitudes y reportes de existencias de productos
en el almacén.
Ofrecer oportunamente la información que se necesite en la toma de decisiones.
1.4.2 Bondades del sistema:
Accesibilidad a través de la red donde se encuentre hospedado el sistema.
Autentificación de los usuarios.
Acceso a los datos por directivos, trabajadores y personas con previa autorización.
Acceso a datos estadísticos mediante consultas al sistema.
Capitulo 1: Selección del escenario computacional del trabajo.
10
1.5 Software libre.
Software libre (en inglés free software) es la denominación del software que brinda libertad a los
usuarios sobre su producto adquirido y por tanto, una vez obtenido, puede ser usado, copiado,
estudiado, modificado y redistribuido libremente. Según la Free Software Foundation, el
software libre se refiere a la libertad de los usuarios para ejecutar, copiar, distribuir, estudiar,
cambiar y mejorar el software; de modo más preciso, se refiere a cuatro libertades de los usuarios
del software: la libertad de usar el programa, con cualquier propósito; de estudiar el
funcionamiento del programa, y adaptarlo a las necesidades; de distribuir copias, con lo que
puede ayudar a otros; de mejorar el programa y hacer públicas las mejoras, de modo que toda la
comunidad se beneficie (para la segunda y última libertad mencionadas, el acceso al código
fuente es un requisito previo).[2]
El software libre suele estar disponible gratuitamente, o al precio de coste de la distribución a
través de otros medios; sin embargo, no es obligatorio que sea así, por ende no hay que asociar
software libre a "software gratuito" (denominado usualmente freeware), ya que, conservando su
carácter de libre, puede ser distribuido comercialmente ("software comercial"). Análogamente, el
"software gratis" o "gratuito" incluye en algunas ocasiones el código fuente; no obstante, este
tipo de software no es libre en el mismo sentido que el software libre, a menos que se garanticen
los derechos de modificación y redistribución de dichas versiones modificadas del programa.
Tampoco debe confundirse software libre con "software de dominio público". Este último es
aquél que no requiere de licencia, pues sus derechos de explotación son para toda la humanidad,
porque pertenece a todos por igual. Cualquiera puede hacer uso de él, siempre con fines legales y
consignando su autoría original. Este software sería aquél cuyo autor lo dona a la humanidad o
cuyos derechos de autor han expirado, tras un plazo contado desde la muerte de éste,
habitualmente 70 años. Si un autor condiciona su uso bajo una licencia, por muy débil que sea,
ya no es de dominio público.
Los conceptos antes expresados pueden apreciarse en el Anexo # 1.
Capitulo 1: Selección del escenario computacional del trabajo.
11
1.6 Componentes fundamentales que conforman la plataforma WEB utilizada:
1.6.1 Linux, sistema operativo:
Linux es un sistema operativo, compatible con Unix. Dos características muy peculiares lo
diferencian del resto de sistemas que podemos encontrar en el mercado. La primera, es que es
libre, esto significa que no tenemos que pagar ningún tipo de licencia a ninguna casa
desarrolladora de software por el uso del mismo, la segunda, es que el sistema viene acompañado
del código fuente. Otros beneficios que brinda este sistema son la independencia tecnológica, el
bajo costo, las libertades para adaptarlo a las necesidades de cada caso y, muchas veces, la
posibilidad de contribuir con mejoras al software y así ayudar a otras personas e instituciones.
Es usado ampliamente en servidores y súper-computadoras, la 9ª más potente del mundo y
primera más potente fuera de EE.UU. en junio de 2007, denominada MareNostrum, fue
desarrollada por IBM y está basada en un clúster Linux. A fines de 2007, de acuerdo con el
top500.org, encargado de monitorear las 500 principales supercomputadoras del mundo: 371
usaban una distribución basada en GNU/Linux, 78 Unix, 41 SLES (una variante de Unix), 19
únicos con Linux y 4 con Mac. Ninguna usaba Windows.
Desde finales de 2000 se ha incrementado el apoyo y respaldo de parte de fabricantes de
hardware como IBM, Sun Microsystems, Hewlett-Packard, y Novell. Algunos de ellos (como
Dell, Hewlett-Packard, Lenovo y Acer) lo incluyen pre-instalado en algunos modelos de
computadoras portátiles y de escritorio para el usuario final. El respaldo de las compañías de
software también está presente, ya que ― entre otras aplicaciones ― Nero, Java, Google Earth,
Google Desktop, Adobe Reader, Adobe Flash, RealPlayer y Yahoo! Messenger están disponibles
para Linux.
En cuanto a seguridad informática, se debe decir que los casos de vulnerabilidad (virus, spyware,
rootkits, troyanos, gusanos) son bastantes escasos. En Internet, los alojamientos de sitio Web,
correo POP3, IMAP, y SMTP, representan el 78 % bajo la plataforma de Linux. Es ampliamente
aceptado por poseer una variedad de motores para servidores de correos y páginas Web, los
cuales brindan una estabilidad y seguridad probadas.
Capitulo 1: Selección del escenario computacional del trabajo.
12
Linux es una alternativa como sistema operativo para servidores a otros sistemas de código libre
y no libre. Sus principales competidores son UNIX y Microsoft Windows, que posee las
combinaciones de diferentes versiones de IIS (Internet Information Services), SQL Server,
Exchange Server. Este conjunto de programas tiene un porcentaje mayor de vulnerabilidades
siendo los preferidos de los hackers cuando buscan un blanco de ataque. Debe tenerse en cuenta
que, además de ser más vulnerables, ellos deben ser pagados a Microsoft por cada copia del
software que se distribuya. [3]
1.6.2 Apache, servidor WEB:
El servidor HTTP Apache es un software libre. Es un servidor HTTP de código abierto para
plataformas Unix (BSD, GNU/Linux, etc.), Windows, Macintosh y otras, que implementa el
protocolo HTTP/1.1. Cuando comenzó su desarrollo en 1995 se basó inicialmente en código del
popular NCSA HTTPd 1.3, pero más tarde fue reescrito por completo.
Apache es el servidor web por excelencia, con algo más de un 60 % de los servidores de internet
confiando en él. Entre sus características más sobresalientes están:
Fiabilidad: Alrededor del 90 % de los servidores con más alta disponibilidad funcionan
con Apache.
Gratuidad: Apache es totalmente gratuito, y se distribuye bajo la licencia Apache
Software License, que permite la modificación del código.
Extensibilidad: se pueden añadir módulos para ampliar las ya de por sí extensas
capacidades de Apache. Hay una gran variedad de módulos, que permiten desde generar
contenido dinámico (con PHP, Java, Perl, Python,...), monitorizar el rendimiento del
servidor, atender peticiones encriptados por SSL, hasta crear servidores virtuales por IP
o por nombre (varias direcciones web son manejadas en un mismo servidor) y limitar el
ancho de banda para cada uno de ellos. Dichos módulos pueden incluso ser creados por
cualquier persona con conocimientos de programación. [4]
Algunos de los módulos más destacados de este servidor son:
mod_ssl: Es una interfaz para los protocolos de encriptado SSL/TLS de OpenSSL.
Capitulo 1: Selección del escenario computacional del trabajo.
13
mod_dav: Este módulo implementa la especificación del HTTP Distributed Authoring
and Versioning (DAV) para mantener contenidos web.
mod_deflate: Permite soportar navegadores que requieren que el contenido sea
comprimido antes de ser servido, ahorrando ancho de banda.
mod_auth_ldap: este módulo permite que se pueda usar una base de datos LDAP para
almacenar las credenciales en la autentificación básica HTTP.
mod_file_cache: incorpora capacidades de cacheado.
1.6.3 PostgreSQL, gestor de bases de datos:
Como muchos otros proyectos Open Source, el desarrollo de PostgreSQL no es manejado por
una sola compañía sino que es dirigido por una comunidad de desarrolladores y organizaciones
comerciales las cuales trabajan en su desarrollo. Dicha comunidad es denominada el PGDG
(PostgreSQL Global Development Group). PostgreSQL ha tenido una larga evolución, tomando
como punto de partida el proyecto Ingres en la Universidad de Berkeley. Este proyecto, liderado
por Michael Stonebraker, fue uno de los primeros intentos en implementar un motor de base de
datos relacional. Después de haber trabajado un largo tiempo en Ingres y de haber tenido una
experiencia comercial con el mismo, Michael decidió volver a la Universidad para trabajar en un
nuevo proyecto sobre la experiencia de Ingres, dicho proyecto fue llamado post-ingres o
simplemente Postgres.
El proyecto post-ingres pretendía resolver los problemas con el modelo de base de datos
relacional planteado a comienzos de los años 1980. El principal de estos problemas era la
incapacidad del modelo relacional de comprender "tipos", es decir, combinaciones de datos
simples que conforman una única unidad. Actualmente estos son llamados objetos. Se esforzaron
en introducir la menor cantidad posible de funcionalidades para completar el soporte de tipos.
Estas funcionalidades incluían la habilidad de definir tipos, pero también la habilidad de
describir relaciones, las cuales hasta ese momento eran ampliamente utilizadas pero mantenidas
completamente por el usuario. En Postgres la base de datos “comprendía” las relaciones y podía
obtener información de tablas relacionadas utilizando reglas.
Capitulo 1: Selección del escenario computacional del trabajo.
14
La principal ventaja de PostgreSQL es la alta concurrencia. Mediante un sistema denominado
MVCC (Acceso concurrente multiversión, por sus siglas en inglés) PostgreSQL permite que
mientras un proceso escribe en una tabla, otros accedan a la misma tabla sin necesidad de
bloqueos. Cada usuario obtiene una visión consistente de lo último a lo que se le ejecutó la
sentencia “commit”, que es la encargada de decir que se terminaron de enviar todos los datos al
servidor. Esta estrategia es superior al uso de bloqueos por tabla o por filas común en otras bases,
con lo que se elimina la necesidad del uso de bloqueos explícitos.[5]
Algunas de las características de Postgres son:
Claves ajenas también denominadas Llaves ajenas o Claves Foráneas (foreign keys).
Disparadores (triggers).
Vistas.
Integridad transaccional.
Tipos de datos y operaciones geométricas.
Tiene además como particularidad que las funciones que se ejecutan en el servidor pueden ser
escritos en varios lenguajes, con la potencia que cada uno de ellos da, desde las operaciones
básicas de programación, tales como bifurcaciones y bucles, hasta las complejidades de la
programación orientada a objetos o la programación funcional. Algunos de los lenguajes que se
pueden utilizar son, un lenguaje propio llamado PL/PgSQL (similar al PL/SQL de oracle), C,
C++, PL/Perl, PL/Python etc.
1.7 Programación orientada a eventos
La programación dirigida por eventos es un paradigma de programación en el que tanto la
estructura como la ejecución de los programas van determinados por los sucesos que ocurran en
el sistema o que ellos mismos provoquen. Mientras en la programación secuencial (o
estructurada) es el programador el que define cuál va a ser el flujo del programa, en la
programación dirigida por eventos será el propio usuario, u otros mecanismos que estén
accionando el programa los que dirijan su flujo de este. Aunque en la programación secuencial
puede haber intervención de un agente externo al programa, estas intervenciones ocurrirán
Capitulo 1: Selección del escenario computacional del trabajo.
15
cuando el programador lo haya determinado, y no en cualquier momento como puede ser en el
caso de la programación dirigida por eventos.
El creador de un programa dirigido por eventos debe definir los eventos que manejará su
programa y las acciones que se realizarán al producirse cada uno de ellos, lo que se conoce como
el administrador de evento. Los eventos soportados estarán determinados por el lenguaje de
programación utilizado, por el sistema operativo e incluso por eventos creados por el mismo
programador.
En la programación dirigida por eventos, al comenzar la ejecución del programa se llevarán a
cabo las inicializaciones y a continuación el programa quedará bloqueado hasta que se produzca
algún evento. Cuando alguno de los eventos esperados por el programa tenga lugar, el programa
pasará a ejecutar el código del correspondiente administrador de evento. Por ejemplo, si el
evento consiste en que el usuario ha hecho clic en el botón de “play” de un reproductor de
películas, se ejecutará el código del administrador de evento, que será el que haga que la película
se muestre por pantalla.[6]
Un ejemplo de programación dirigida por eventos lo tenemos en algunas interfaces web como las
que utilizan los correos de Yahoo o Google actuales. También están presentes en frameworks
para programación de alto nivel, como es el caso de Delphi, Visual Basic, Visual Studio, los
cuales nos brindan la posibilidad de utilizar botones, formularios y otros componentes que
capturan los eventos por nosotros y los dejan listos para que demos una respuesta a ellos. Este
tipo de programación es la base de lo que llamamos interfaz de usuario, aunque puede emplearse
para desarrollar interfaces entre componentes de Software y módulos del núcleo de los sistemas
operativos.
1.8 Herramientas utilizadas para la construcción de un sitio web.
1.8.1 PHP, lenguaje de programación principal:
PHP es un lenguaje de programación interpretado de propósito general, ampliamente usado y
diseñado originalmente para la creación de páginas web dinámicas. Puede ser embebido dentro
de código HTML. Se usa principalmente en interpretación del lado del servidor (server-side
Capitulo 1: Selección del escenario computacional del trabajo.
16
scripting), tomando el código en PHP como su entrada y creando páginas web como salida. Es
un producto de código abierto, por lo que se puede acceder a su código, utilizarlo, modificarlo y
redistribuirlo sin coste alguno.
Este lenguaje, que en la actualidad se encuentra instalado en más de 20 millones de sitios web y
en un millón de servidores, fue publicado en 1995 y es fruto del trabajo Rasmus Lerdorf. Ha sido
adoptado por otras personas de talento y ha experimentado tres transformaciones importantes
hasta convertirse en el producto actual. Las siglas PHP equivalían inicialmente a Personal Home
Page (Página de inicio personal) pero se modificó y ahora equivale a PHP Hipertext Preprocessor
(Preprocesador de hipertexto PHP). [7]
El gran parecido que posee PHP con los lenguajes más comunes de programación estructurada,
como C y Perl, permiten a la mayoría de los programadores crear aplicaciones complejas con una
curva de aprendizaje muy corta. También les permite involucrarse con aplicaciones de contenido
dinámico sin tener que aprender todo un nuevo grupo de funciones.
A grandes rasgos PHP funciona de la manera siguiente: el cliente hace una petición al servidor
para que le envíe una página web, el servidor ejecuta el intérprete de PHP. Éste procesa el script
solicitado que generará el contenido de manera dinámica (por ejemplo obteniendo información
de una base de datos). El resultado es enviado por el intérprete al servidor, quien a su vez se lo
envía al cliente. Mediante extensiones es también posible la generación de archivos PDF, Flash,
así como imágenes en diferentes formatos. Permite la conexión a diferentes tipos de servidores
de bases de datos tales como MySQL, Postgres, Oracle, ODBC, DB2, Microsoft SQL Server,
Firebird y SQLite.
Algunas de las principales ventajas con las que cuenta PHP son:
Es un lenguaje multiplataforma.
Interfaces para una gran cantidad de sistemas de bases de datos diferentes.
Capacidad de expandir su potencial utilizando una enorme cantidad de módulos
(llamados ext's o extensiones).
No requiere definición de tipos de variables.
Alto rendimiento.
Capitulo 1: Selección del escenario computacional del trabajo.
17
Bajo coste.
PHP es una alternativa a las tecnologías:
Microsoft ASP y ASP.NET (que utiliza C# VB.NET como lenguajes).
ColdFusion de la compañía Adobe (antes Macromedia)
JSP/Java de Sun Microsystems
CGI/Perl.
1.8.2 JavaScript, lenguaje de programación de apoyo:
JavaScript es un lenguaje de scripts, interpretado y multiplataforma. Los autores inicialmente lo
llamaron Mocha y más tarde LiveScript pero fue rebautizado como JavaScript en un anuncio
conjunto entre Sun Microsystems y Netscape, el 4 de diciembre de 1995. Es utilizado
principalmente en páginas web, con una sintaxis semejante a la del lenguaje Java y el lenguaje C.
Es un lenguaje basado en objetos, dispone de “herencia”, si bien esta se realiza siguiendo el
paradigma de programación basada en prototipos, ya que las nuevas clases se generan clonando
la clase base (prototipos) y extendiendo su funcionalidad. [8]
Todos los navegadores modernos interpretan el código JavaScript integrado dentro de las páginas
web. Tradicionalmente, se venía utilizando en páginas web HTML, para realizar tareas y
operaciones en el marco de la aplicación únicamente cliente, sin acceso a funciones del servidor.
JavaScript no es la única tecnología que puede dar vida al contenido web monótono, este se
auxilia de otras como HTML y CSS para lograr sus objetivos. Para interactuar con una página
web se provee al lenguaje JavaScript de una implementación del DOM. JavaScript interpreta en
el agente de usuario al mismo tiempo que las sentencias van descargando junto con el código
HTML.
En 1997 los autores propusieron JavaScript para que fuera adoptado como estándar de la
European Computer Manufacturers' Association ECMA, que a pesar de su nombre no es
europeo, sino internacional, con sede en Ginebra. En junio de 1997 fue adoptado como un
estándar ECMA, con el nombre de ECMAScript. Poco después también lo fue como un estándar
ISO.
Capitulo 1: Selección del escenario computacional del trabajo.
18
1.8.3 HTML, lenguaje de marcado hipertexto:
HTML, siglas de HyperText Markup Language (Lenguaje de Marcas de Hipertexto), es el
lenguaje de marcado predominante para la construcción de páginas web. La primera descripción
de HTML disponible públicamente fue un documento llamado HTML Tags (Etiquetas HTML),
publicado por primera vez en Internet por Tim Berners-Lee en 1991. HTML también es usado
para referirse al contenido del tipo de MIME text/html o todavía más ampliado como un término
genérico para el HTML, ya sea en forma descendida del XML (como XHTML 1.0 y posteriores)
o en forma descendida directamente de SGML (como HTML 4.01 y anteriores). [9, 10]
HTML es usado para describir la estructura y el contenido en forma de texto, así como para
complementar el texto con objetos tales como imágenes. HTML escribe sus elementos en forma
de "etiquetas", rodeadas por corchetes angulares (<,>). Con él es posible describir, hasta cierto
punto, la apariencia de un documento, además tiene la capacidad de contener scripts (por
ejemplo en lenguaje JavaScript), el cual puede afectar el comportamiento de navegadores web.
1.8.4 CSS - Cascading Style Sheets (Hojas de estilo en cascada)
Es un lenguaje formal usado para definir la presentación de un documento estructurado escrito en
HTML o XML (y por extensión en XHTML). El desarrollo de la CSS se basa en la idea de
separar la estructura de un documento de su presentación. Como ejemplo, para una mayor
comprensión, si se tiene el elemento de HTML <h1> indica que un bloque de texto es un
encabezamiento y que es más importante que un bloque etiquetado como <h2>. Si la etiqueta
<h1> se quería presentar con un diseño consistente para una página, en versiones más antiguas
de HTML era necesario incluir dentro de cada etiqueta <h1> atributos extras para darle formato,
color, tamaño de fuente, etc., además provocaba el envío de código repetido al navegador.
Cuando se utiliza CSS, la etiqueta <h1> no debe proporcionar información sobre cómo va a ser
visualizada, solamente marca la estructura del documento. La información de estilo separada en
una CSS especifica cómo se ha de mostrar el color, fuente, alineación del texto, tamaño, y otras.
Las ventajas de utilizar CSS son: [11]
Control centralizado de la presentación de un sitio web completo con lo que se agiliza de
forma considerable la actualización del mismo.
Capitulo 1: Selección del escenario computacional del trabajo.
19
Los Navegadores permiten a los usuarios especificar su propia hoja de estilo local que
será aplicada a un sitio web, con lo que aumenta considerablemente la accesibilidad. Por
ejemplo, personas con deficiencias visuales pueden configurar su propia hoja de estilo
para aumentar el tamaño del texto o remarcar más los enlaces.
Una página puede disponer de diferentes hojas de estilo según el dispositivo que la
muestre o incluso a elección del usuario. Por ejemplo, para ser impresa, mostrada en un
dispositivo móvil, o ser "leída" por un sintetizador de voz.
El documento HTML en sí mismo es más claro de entender y se consigue reducir
considerablemente su tamaño (siempre y cuando no se utilice estilo en línea).
Antes de que estuviera disponible CSS, la única forma de componer espacialmente una página
era el uso de tablas. Aunque es una técnica cómoda y versátil, se está usando un elemento con
una semántica particular, que es la de expresar información tabular, solamente por su efecto en la
presentación. La introducción de CSS ha permitido en muchos casos reemplazar el uso de tablas.
Sin embargo CSS todavía no permite la versatilidad que ofrecían las tablas, lograr un
diagramado de una página compleja suele ser una tarea difícil en CSS y las diferencias entre
navegadores dificultan aún más la tarea.
1.8.5 DOM - Document Object Model (Modelo en Objeto del Documento)
Es una interfaz de lenguaje neutral, también se puede definir como una API. Esencialmente,
comunica los documentos HTML y XML con los scripts o los lenguajes de programación, lo que
permite que ellos accedan y modifiquen dinámicamente contenidos, estructuras y estilos. Su
objetivo es ofrecer un modelo orientado a objetos para el tratamiento y manipulación tanto en
tiempo real o estático de páginas de Internet. A medida que fue evolucionando, se consideraron
las características de todos los elementos (existentes en los archivos HTML y XML) como
objetos computacionales con la capacidad de ser obtenidos y modificados. Además en las
especificaciones se incluyó la manipulación de eventos en el navegador, la capacidad de
interacción con CSS, y la manipulación de partes del texto en las páginas web.
El DOM define la manera en que objetos y elementos se relacionan entre sí en el navegador y en
el documento. Cualquier lenguaje de programación adecuado para el desarrollo de página web
Capitulo 1: Selección del escenario computacional del trabajo.
20
puede ser utilizado para acceder al DOM. Cuando se utiliza JavaScript, cada objeto tiene un
nombre, el cual es exclusivo y único. Cuando existe más de un objeto del mismo tipo en un
documento web, estos se organizan en un vector. Algunos nombres de objetos comunes son
window, document, body, div y p. [12, 13]
Un evento desde el punto de vista computacional ocurre cuando alguna situación cambia en la
computadora, como por ejemplo la posición del ratón, la opresión de alguna tecla, los contenidos
de alguna de las memorias, la condición de la pantalla, etc. En la creación de páginas web estos
eventos representan la interacción de la computadora con el usuario o acciones que se ejecutan
cada cierto tiempo. Cuando algunos de estos eventos ocurren, como por ejemplo la presión de
algún botón del ratón, se desea que la computadora responda de alguna manera. Esa es la razón
por la que existen "event handlers" (encargados de manipular eventos), los cuales son objetos
que responden a eventos.
1.9 Problemas de compatibilidad entre navegadores WEB.
El W3C, es el consorcio encargado de definir los estándares de la web. Para que todos los
fabricantes de navegadores pudieran adoptarlo, facilitando la compatibilidad plena entre ellos,
decidió crear un modelo de objetos único, el DOM. No obstante algunos fabricantes han creado o
modificado estos, entre los que se encuentra Microsoft que ha añadido su propia extensión al
DOM, creando problemas de interoperabilidad entre los navegadores web. Como el navegador
Internet Explorer 6 es del año 2002 y viene incluido en las principales instalaciones del sistema
operativo Windows, que es usado en un por ciento altísimo de las PCs de escritorio, lo hace el
navegador web estándar de facto, lo que trae un problema real a desarrolladores más
comprometidos con los estándares, como es el caso de Mozilla.
Uno de los principales problemas está dado con las CSS entre navegadores, e incluso en
ocasiones entre versiones diferentes del mismo navegador. Estas diferencias pueden apreciarse
desde el posicionamiento de elementos dentro del documento hasta la no existencia de reglas que
a veces hacen el trabajo bastante complicado. Una de las mejores soluciones a estas dificultades
es tener instalados algunos de los principales navegadores existentes e ir probando cómo se va
visualizando la página a medida que se construye. No hay una solución real a esto, salvo la
Capitulo 1: Selección del escenario computacional del trabajo.
21
experiencia que se gana a medida que se crean más páginas y, por suerte, en Internet podemos
encontrar muchas soluciones a problemas presentados que fueron resueltos por otros creadores.
La opinión general parece indicar que esto cambiará sólo si nuevos navegadores que respeten los
estándares ganan una cuota de mercado significativa en la web, de forma que el uso de
extensiones no estándares se convierta en un problema comercial para los autores de los sitios
web que las usen. Como ya está pasando con Mozilla Firefox, Opera, Safari y Chrome, los cuales
desde hace varios años viene incrementando su utilización en PCs; en vez de Internet Explorer
de Microsoft. [14]
Capitulo 2. Diseño e implementación del sistema
22
Capitulo 2. Diseño e implementación del sistema.
En el presente capítulo se abordan los aspectos relacionados con la arquitectura del sistema
haciendo hincapié en las tres etapas del desarrollo del software: análisis, diseño e
implementación. El primer epígrafe se realiza un análisis del entorno orientado a objetos con
UML (Lenguaje Unificado de Modelado) exponiendo los diferentes diagramas que permiten
modelar, construir y documentar los elementos esenciales que forman el sistema. En los restantes
epígrafes se explicarán las herramientas y métodos utilizados en la realización del sistema y la
lógica del negocio.
2.1 Etapa de análisis y diseño del sistema:
Una vez obtenida la documentación legal y la caracterización de los procesos de planificación y
control, establecidas por la Dirección de Alimentación, se pasa a adaptar estos para obtener un
mejor desempeño en su automatización. Como punto de partida el almacén se organiza en forma
de árbol, aquí se mezclan categorías y productos, se tiene en cuenta que una categoría pertenece
siempre a otra (hay una categoría base de todas) y un producto invariablemente pertenece a una
categoría. La estructura mencionada se muestra en la figura 2.1, como se puede ver una categoría
puede almacenar otras categorías y productos al mismo tiempo. El sistema realiza el inventario a
través de unidades de medidas organizadas por grupos, cada unidad de medida guarda un valor
que indica su equivalencia con la unidad de medida base a la que es asignada. Los productos y
categorías son asociados a un grupo de unidades de medidas, lo cual ofrece la posibilidad de
trabajar con cualesquiera de las unidades que son equivalentes. Por lo antes expuesto, el
responsable de almacén solo debe preocuparse por introducir las cantidades y seleccionar las
unidades de medidas que vienen en los recibos o pedidos de productos. De esta manera quedan
registrados todos los movimientos de productos que se efectúan en el almacén.
En la rea
“Registro
cuales se
categoría
elaborar
cada prod
obtenemo
hay en a
decidirá q
Los proc
hasta el a
que era
existen, y
posibilid
siempre
utilizadas
también
los indica
alización del
o de normas
e almacenan
a en aras de
un menú, es
ducto que ll
os el total g
almacén de c
qué tipos de
cesos descrit
almacén y a
necesario re
y en caso de
ad de elabo
como máxim
s de cada pr
se informa e
adores que v
Figur
l proceso de
” de cada pl
los platos,
e elaborar u
s necesario
leva un plato
general de pr
cada produc
productos v
tos anteriorm
adquirir las e
ealizar antig
ser insuficie
rar este plat
mo las que
roducto no p
en color rojo
van quedand
a 2.1 Árbol
planificació
lato, para lo
las categorí
un plato. U
entonces rea
o y la cantid
roductos par
cto y mostra
va a utilizar p
mente liberan
existencias,
guamente. S
entes se adv
to, además l
hay en exis
pueden ser m
o. Cuando se
do balancead
Capitulo
de categoría
ón de los alim
cual se elab
as de produ
Una vez real
alizar los cá
dad de come
ra cada plato
ar estos dato
para elabora
n al encarga
además se e
Solo es prec
vierte con un
las cantidad
stencia. Por
mayores que
e elabora un
dos, utilizam
o 2. Diseño e
as y producto
mentos es n
oró una estr
ctos y las ca
lizado este
álculos con l
ensales que v
o, debemos
os al encarga
ar el plato y q
ado de elabo
evitan los co
ciso fijarse a
color rojo, l
es que se ut
último, la s
las cantidad
n menú, para
mos el color v
e implement
os
ecesario ten
ructura de va
antidades re
proceso est
las cantidade
van a consum
consultar la
ado de elabo
qué cantidad
orar el menú
omplejos y t
ahora en las
lo cual infor
tilizan de ca
suma total d
des necesaria
a tener una i
verde, lo cua
ación del sis
ner almacena
arias tablas e
equeridas de
amos listos
es necesaria
mir éste. Cu
s existencia
orar el menú
d.
ú de tener q
tediosos cál
s cantidades
rma que no e
ada producto
de las cantid
as; este prob
idea más cla
al informa q
stema
23
ado el
en las
cada
para
as por
uando
s que
ú, así
que ir
culos
s que
existe
o son
dades
blema
ara de
que la
Capitulo 2. Diseño e implementación del sistema
24
cantidad utilizada de un producto es igual a la cantidad necesaria para elaborar el plato. Una vez
elaborado el menú, como cada producto tiene una serie de valores nutritivos, es posible realizar,
por cada plato del menú, los cálculos de los valores nutricionales, lo cual se logra mediante el
sistema que suma los productos que son ingredientes de los platos.
El análisis y diseño de sistemas es una guía que permite estructurar el proceso de desarrollo de
proyectos de software. Se trata básicamente de determinar los objetivos y límites del sistema
objeto de análisis, caracterizar su estructura y funcionamiento, marcar las directrices que
permitan alcanzar los objetivos propuestos y evaluar sus consecuencias. Se puede afirmar que
esta etapa es de vital importancia en el ciclo de vida del proyecto, pues este procedimiento
permite reducir al mínimo el riesgo de fracaso de nuevos proyectos, ya que la instalación de un
sistema sin la adecuada planificación puede conducir a grandes frustraciones y ocasionar que el
mismo sea subutilizado, o peor aún, deje de ser utilizado al no cumplir con las expectativas que
le dieron origen. [15]
Seguidamente se muestran los diferentes diagramas que componen el modelado del software
(diagrama de actividades, diagrama de casos de uso, diagrama de navegación para cada actor,
diagrama de despliegue, diagrama de base de datos), además se exponen los actores que
intervienen en el sistema y sus funcionalidades, así como las especificaciones de los casos de uso
más importantes mediante las Tablas de Eventos.
2.1.1 Diagrama de actividades
El diagrama de actividades representa los flujos de trabajo paso a paso del proceso y las
interacciones de los componentes en el Sistema, lo que es provechoso para entender el
comportamiento de alto nivel de la ejecución del sistema, sin profundizar en los detalles internos.
El diagrama correspondiente al sistema se puede ver en el Anexo # 2.
2.1.2 Modelo de casos de uso
Después de profundizar en los aspectos de trabajo donde se emplazará el sistema, mediante el
modelado del negocio y con la utilización de este como referencia se elaboró el modelo de casos
Capitulo 2. Diseño e implementación del sistema
25
de uso como parte del proceso de captura de requisitos, identificando un actor por cada actor del
negocio que se convertirá en usuario del sistema y luego definiendo sus casos de uso según los
roles en que participe.
Actores y casos de uso del sistema:
Figura 2.2 Casos de uso del actor Director
Figura 2.3 Casos de uso del actor Almacenero
Capitulo 2. Diseño e implementación del sistema
26
Figura 2.4 Casos de uso del actor Planificador
Figura 2.5 Casos de uso del actor Administrador
Capitulo 2. Diseño e implementación del sistema
27
2.1.3 Descripción de los casos de uso principales de cada actor
Para que sea posible realizar cualquiera de los casos de uso que a continuación se describen, los
actores implicados en ellos deben haber iniciado sesión en el sistema, para tener acceso a las
acciones correspondientes de cada caso de uso. En el Diagrama de estados del sistema podemos
ver el proceso que es necesario seguir para llegar a cada uno de ellos. Las especificaciones de los
casos de uso se hacen de forma tabular mediante una Tabla de Eventos que muestra la
interacción entre los actores y el sistema.
Descripción del caso de uso “Actualizar inventario”
El actor almacenero selecciona dentro de “Almacén” la opción “Productos”, seguidamente
podrá ver el listado de todas las categorías de los productos del sistema así como los productos
que pertenecen a estas categorías. Aquí tiene la posibilidad de realizar las operaciones de
“Extracción” ó “Depósito” de un producto en el almacén respectivamente.
Tabla 2.1 Tabla de eventos para el caso de uso “Actualizar inventario”.
Caso de Uso: Actualizar inventario.
Actores: Almacenero.
Propósito: Actualizar las existencias de productos que hay en el almacén.
Resumen: El almacenero actualiza las existencias de los productos mediante depósitos o extracciones introduciendo los datos necesarios.
Tipo: Primario y esencial.
CURSO NORMAL DE LOS EVENTOS
QUÉ HACE EL ACTOR QUÉ HACE EL SISTEMA
1. Seleccionar haciendo clic en el link
“Extracción” o “Depósito” del producto
correspondiente.
2. Muestra el formulario de extracción o
depósito del producto seleccionado.
Capitulo 2. Diseño e implementación del sistema
28
3. Introduce un texto que indica el origen
de la operación que se está realizando, un
número que representa la cantidad del
producto, y selecciona una unidad de medida
para la cantidad antes introducida.
4. Dar clic en el botón “Guardar” 5. Verifica, convierte a la unidad de medida
base e inserta los datos en la tabla
correspondiente de la base de datos.
Cursos alternos:
El almacenero introduce una cantidad que no es un número o es un valor negativo.
Indicar error mostrando al usuario que debe cambiar este valor.
Descripción del caso de uso “Planificar menú”:
El actor planificador selecciona dentro de “Menú” la opción “Elaborar menú”, a continuación
podrá ver el listado de todos los menús elaborados en el sistema; tiene además la posibilidad de
hacer una selección de los menús por días en el calendario. A continuación debe seleccionar la
opción “Agregar nuevo menú”.
Tabla 2.1 Tabla de eventos para el caso de uso “Planificar menú”.
Caso de Uso: Planificar menú.
Actores: Planificador.
Propósito: Planificar un menú con los platos seleccionados.
Resumen: Elaborar un menú con los platos seleccionados y actualizar las existencias de los productos utilizados en este proceso.
Tipo: Primario y esencial.
Capitulo 2. Diseño e implementación del sistema
29
CURSO NORMAL DE LOS EVENTOS
QUÉ HACE EL ACTOR QUÉ HACE EL SISTEMA
1. Selecciona una fecha en el calendario. 2. Actualiza el encabezado de la tabla platos
del sistema y muestra la fecha anteriormente
seleccionada.
3. Selecciona el comedor donde se está
elaborando este menú.
4. Actualiza el encabezado de la tabla platos
del sistema y se muestra el nombre del
comedor seleccionado.
5. Selecciona qué tipo de menú se está
elaborando.
6. Muestra los comensales correspondientes
con este tipo de menú y actualiza el
encabezado de la tabla platos del sistema
mostrando el nombre del tipo de menú que se
está elaborando.
7. Introduce la cantidad de comensales por
cada tipo de comensal.
8. Actualiza los comensales de cada plato
seleccionado.
9. Escoge una categoría de platos. 10. Muestra los platos asociados a esta
categoría.
11. Escoge un plato. 12. Agrega el plato a la lista de platos del
menú y actualiza las existencias de los
productos asociados a este plato.
13. Selecciona los comensales que van a
utilizar este plato.
14. Según la norma del plato y la cantidad de
comensales se actualiza la cantidad necesaria
de cada producto que tiene que existir en
almacén para elaborar este plato.
Capitulo 2. Diseño e implementación del sistema
30
15. Escoge las cantidades de cada producto
que van a ser utilizadas en este plato.
16. Actualiza las existencias generales del
menú, y realiza las sumas por categorías de
productos de las cantidades utilizadas en este
plato.
17. Da clic en el botón “Guardar menú” 18. Guarda el menú con los comensales y
productos asociados a cada plato.
Cursos alternos:
Si las celdas de cantidades utilizadas son mayores que las cantidades necesarias, en estas
celdas se muestran advertencias en color rojo las cuales indican que se está utilizando
más producto del necesario para elaborar este plato.
Si las celdas de cantidades necesarias son mayores que las de existencia, en las celdas de
existencias se muestran advertencias en color rojo las cuales indican que no existe
suficiente cantidad de este producto en el almacén para elaborar el plato.
Si las cantidades necesarias son iguales a las cantidades utilizadas se muestran las celdas
de cantidades utilizadas en verde, las cuales indican que estos productos están ajustados a
las normas requeridas por el sistema.
2.1.4 Diagrama de navegación del sitio
Para ofrecer una idea de cómo es la navegación en el sitio y cómo están dispuestas las diferentes
opciones se muestra el Anexo # 3.
2.1.5 Diagrama de despliegue
Los Diagramas de despliegue muestran la disposición física de los distintos nodos que componen
un sistema y el reparto de los componentes sobre los mismos. La vista de despliegue representa
la disposición de las instancias de componentes de ejecución en instancias de nodos conectados
por enlaces de comunicación, además permite determinar las consecuencias de la distribución y
la asignación de recursos.
Capitulo 2. Diseño e implementación del sistema
31
El Sistema de Control de Alimentación se ejecutará sobre un nodo servidor y un cierto número
de nodos cliente. En el nodo servidor se ejecuta la capa de servicios de datos (base de datos). La
capa de servicios de negocio (lógica de la aplicación), se ejecuta tanto en el servidor como en el
cliente. Los usuarios finales, o sea los actores que interactúan con el sistema acceden a él
mediante nodos cliente, donde se ejecuta la capa de servicios de usuario (interacciones de los
usuarios) autentificándolos. Estos nodos se comunican mediante el protocolo TCP/IP; véase la
figura que se presenta a continuación:
Figura 2.6 Diagrama de despliegue
2.2 Diseño de la base de datos.
Después de realizar un detallado análisis del proceso de gestión en la Dirección de Alimentación,
de la información que se tramita en el mismo a partir de las entrevistas efectuadas a los
especialistas y del estudio de los documentos, registros y modelos se identificaron las siguientes
entidades que se encuentran en el Anexo # 4.
2.3 Herramientas utilizadas para el desarrollo del sistema
Adobe Fireworks CS3:
Completa y popular herramienta capaz de crear y optimizar imágenes para la web, así como para
diseñar rápidamente prototipos de sitios web. Brinda una de las formas más simples de crear,
optimizar y exportar gráficos interactivos en un entorno único y centrado en la web. Automatiza
Capitulo 2. Diseño e implementación del sistema
32
el proceso de producción de gráficos web, crea múltiples gráficos a partir de una sola fuente de
datos y gana tiempo para lograr diseños integrales y racionalizados. [16]
Funciones principales:
» Posibilidad de edición de mapas de bits y vectores.
» Optimización de imágenes.
» Organización jerárquica de las capas.
» Efectos de luz y de sombras, estilos y modos de fusión.
» Utilización de una biblioteca común de símbolos gráficos, símbolos de texto y
animaciones que se usan con frecuencia en aplicaciones, formularios, interfaces y sitios
web.
» Integración optimizada de Dreamweaver y Flash.
Adobe Dreamweaver CS3:
Diseña, desarrolla y actualiza los sitios y aplicaciones web de forma rápida y sencilla.
Creado para diseñadores y desarrolladores, ofrece la posibilidad de trabajar con una interfaz
visual intuitiva o en un entorno de codificación agilizado. La integración inteligente con Adobe
Fireworks CS3 garantiza un flujo de trabajo eficaz con el uso de esta herramienta. Ofrece,
además, una compatibilidad total con CSS y una amplia compatibilidad con las principales
tecnologías de desarrollo web, incluidas HTML, XHTML, XML, JavaScript, Ajax, PHP, Adobe
ColdFusion, ASP, ASP.NET y JSP.[17]
Aptana Studio:
Aptana Studio es un IDE de desarrollo para aplicaciones de la web 2.0, gratuito, código libre,
con soporte Ajax, PHP, Ruby on Rails, Adobe Air, iPhone, etc. Con Aptana se facilita el
desarrollo y la integración entre los módulos programados en los lenguajes PHP y JavaScript,
proporciona también una rápida detección de errores en esos lenguajes y un fácil tránsito entre
los módulos ya elaborados, lo que permite ahorrar tiempo que muchas veces perdemos en estos
detalles.[18]
Aptana está basado en el conocido entorno de desarrollo Eclipse (IDE = Integrated Development
Environment), también Open Source. Pero mientras que Eclipse está focalizado en el desarrollo
para Jav
HTML, C
2.4 Diseñ
La realiz
visual qu
programa
para el u
En el di
imágenes
correspon
a, Aptana S
CSS y Javas
ño de la inte
zación de un
ue resulte fá
a Adobe Fire
suario, sin re
iseño final,
s dinámicas
ndencia con
Studio es un
cript, así com
erfaz visual.
n diseño web
ácil y agrada
eworks CS3
ealizar much
como se m
s (con fine
las peticion
na distribuci
mo opcional
.
b o plantilla
able para los
; se tuvo en
has variacion
muestra, se m
s decorativo
nes realizadas
Figura 2.7
Capitulo
ión focaliza
lmente a otra
es el primer
s usuarios. E
cuenta que
nes entre las
mantienen c
os) y la de
s.
Diseño del s
o 2. Diseño e
da en el de
as tecnología
r paso neces
Esta se logró
este diseño
s distintas pá
constantes t
e contenido
sistema.
e implement
esarrollo web
as.[19]
sario para lo
ó mediante
fuera lo más
áginas que co
odas sus pa
o dinámico
ación del sis
b, con sopo
ograr una int
la utilizació
s sencillo po
omponen el
artes except
que cambi
stema
33
orte a
terfaz
ón del
osible
sitio.
to las
ia en
Pie de
Cont
diná
Im
di
- Cab
- Me
tien
- Sub
sele
- Imá
imá
- Cal
cua
- Con
med
aso
- Pie
del
e página
Cabecera
tenido
ámico
mágenes
námicas
becera: se m
enú principa
ne acceso un
bmenú asoc
eccionada aq
ágenes diná
ágenes que c
lendario o C
adro de inicio
ntenido din
diante las b
ociado a su a
e de página:
sistema.
muestra el lo
al: es el men
n usuario des
ciado al men
quí se muest
ámicas: su
cambian cada
Cuadro de i
o de sesión e
námico: cu
barras de nav
cción.
muestra la i
Figura 2.8
ogotipo, nom
nú de navega
spués de inic
nú principa
ran las sub-o
fin en el
a cierto tiem
inicio de ses
en el sistema
uando el usu
vegación u
información
Capitulo
Boceto del
mbre y versió
ación del siti
ciar sesión.
al: cuando un
opciones aso
sistema es
mpo.
sión: muestra
a.
uario acced
opciones qu
n de derecho
o 2. Diseño e
diseño
ón del sistem
io. Muestra l
na de las op
ociadas a ést
decorativo
a un calenda
de a las dif
ue este nos
de autor y e
e implement
ma.
las diferente
pciones del m
te.
pues muest
ario para eleg
ferentes par
ofrece apar
el logotipo, n
ación del sis
es partes a la
menú princip
tra una seri
gir una fecha
rtes del sist
rece el conte
nombre y ve
M
C
Cu
stema
34
as que
pal es
ie de
a o el
tema,
enido
ersión
Menú principa
Submenú
asociado al
menú princip
Calendario o
uadro de inici
de sesión
l
l
pal
o
Capitulo 2. Diseño e implementación del sistema
35
2.5 Etapa de implementación.
Con el resultado obtenido de la etapa de análisis y diseño comenzamos la etapa de
implementación del sistema a partir de las distintas partes que lo componen, es decir, ficheros de
código en php, javascript, css y html. El objetivo de esta etapa es desarrollar la arquitectura del
sistema web como un todo. De forma más concreta los propósitos de la implementación son:
- Definir la estructura organizativa del código.
- Planificar las integraciones de sistema necesarias a medida que se completa cada
iteración.
- Implementar las funciones, clases y subsistemas o paquetes encontrados durante el
análisis y diseño.
Para alcanzar estos propósitos se elabora un diagrama de componentes del sistema (Anexo # 5)
que muestra cómo quedarán conformados los distintos tipos de paquetes y componentes que lo
integran y se realiza una breve descripción de sus partes a modo de guía para la programación de
los mismos.
El paquete de utilidades (“utils”) tiene como función principal servir de enlace entre las distintas
capas del sistema. A modo de resumen algunos de los principales ficheros que lo forman son:
- const.php: contiene declaraciones de variables globales del sistema, por ejemplo nombre
de la base de datos, servidor donde se encuentra este etc.
- communs.php: declara algunas funciones que pueden ser utilizadas por el sistema para
mostrar errores y chequear los usuarios del sistema.
- contents.php: facilita la comunicación entre el sistema y la base de datos. Sus funciones
se ocupan de cargar, mostrar y borrar los datos de los componentes del sistema, así como
de realizar consultas personalizadas a la base de datos y facilitar el despliegue de los
datos en el modelo visual del sistema.
- functions.php: contiene algunas funciones útiles para el sistema que pueden ser
utilizadas desde cualquier componente de este.
- utils.php: contiene funciones utilizadas por el núcleo del sistema que intervienen en la
resolución de llamadas a las páginas solicitadas (urls).
Capitulo 2. Diseño e implementación del sistema
36
- bootstrap.php: es el controlador principal del sistema, encargado de gestionar en cada
momento qué página web fue solicitada por el usuario. Para lograr su objetivo hace un
chequeo de la url extrayendo de esta los distintos parámetros pasados por GET; además
revisa los parámetros enviados por POST y con la unión de ellos toma las decisiones
adecuadas para traducir la solicitud en una llamada a una función dentro de uno de los
componentes del sistema.
El paquete de componentes (“components”) es el encargado de la interacción entre los usuarios
y el sistema. Cada componente tiene un grupo de funciones que son utilizadas por el controlador
principal del sistema (bootstrap.php) para mostrar en cada momento las páginas solicitadas por
los usuarios del sistema. Cada componente debe llevar un nombre que será único en el sistema,
las funciones que forman parte de un componente se deben nombrar según la siguiente sintaxis
[nombre del componente]_hook, donde el hook es una palabra conocida por el sistema que
ejecuta una determinada función después de realizar los chequeos correspondientes a la solicitud
realizada. Así tenemos que algunos de los principales hook con que cuenta el sistema son:
- [nombre del componente]_attributes: cuando el componente está asociado con una tabla
de la base de datos esta función devuelve un arreglo donde se asocian las llaves del
mismo y los campos de la tabla correspondiente de la base de datos.
- [nombre del componente]_form: es el encargado de mostrar al usuario el formulario de
edición de un componente. Aquí podemos mostrar cualesquiera de las tres clases de
elementos de formularios, los cuales pueden ser de introducción de datos a través de
texto, menús o botones; además de código en Javascript que facilite la interacción del
usuario con el sistema.
- [nombre del componente]_validate: hace un chequeo de los valores introducidos por el
usuario en el formulario, en caso de error en los datos facilita la devolución del
formulario para que sea arreglado.
- [nombre del componente]_perm: realiza un chequeo del usuario que está autentificado en
el sistema verificando si tiene permisos para trabajar con este componente.
- [nombre del componente]_save: cuando los datos introducidos en el formulario son
enviados aquí se pueden realizar modificaciones de estos justo antes de ser salvados en la
base de datos.
Capitulo 2. Diseño e implementación del sistema
37
- [nombre del componente]_delete: sirve para procesar los datos antes de ser eliminados
del sistema.
- [nombre del componente]_list: muestra todos los datos introducidos para este tipo de
componente, aquí el usuario puede ver, editar o borrar cualesquiera de estos.
Además de las funciones descritas anteriormente, cada módulo puede tener tantas funciones
como se desee, las cuales pueden interactuar entre ellas de la manera más conveniente para
resolver la situación o el problema que se presente.
El paquete de pieles (“skins”). El objetivo principal de este es mantener de forma uniforme
determinados aspectos visuales de sitio web, así por ejemplo tenemos los ficheros:
- header.php: muestra siempre la misma cabecera en cada página que es solicita al
sistema, se encarga de mostrar los menús con las opciones disponibles para el usuario que
está autentificado en el sistema.
- footer.php: muestra siempre el mismo pie de página en todas las solicitudes realizadas al
sistema; contiene información de derechos de autor, así como institución o empresa que
utiliza el sistema.
- skinks.php: se encarga de gestionar el mismo aspecto visual para la presentación de los
datos una vez que son introducidos por el usuario. Se utiliza principalmente en la
programación de las funciones [nombre del componente]_list de cada componente.
El paquete núcleo del menú (“kernel menu”). Está formado por 4 ficheros php, de los cuales
load.php y save.php son clases encargadas de cargar y salvar un menú respectivamente,
JSON.php es el encargado de codificar y decodificar JSON (JavaScript Object Notation) y
menu_request.php tiene como tarea procesar las peticiones realizadas por el componente de
elaboración de un menú del comedor. Por su importancia en la implementación del sistema, en
epígrafes posteriores se abordará con mayor profundidad el funcionamiento de este paquete.
El paquete javascripts de menú (“javascripts”) y el paquete Yahoo! User Interface Library
(YUI). Están formados por un conjunto de ficheros en lenguaje javascript que le brindan al
usuario una interacción más ágil con el sistema, modificando la información de la página web sin
Capitulo 2. Diseño e implementación del sistema
38
tener que recargarla completamente. Por su importancia en la implementación del sistema, en
epígrafes posteriores se abordará con mayor profundidad el funcionamiento de este paquete.
2.5.1 Procedimientos almacenados y funciones de la base de datos.
El modelo de base de datos además de almacenar las tablas del sistema, como se mostró
anteriormente, tiene un conjunto de funciones auxiliares que se encargan de optimizarla. Estas
funciones tienen como propósito evitar que se realicen consultas complejas mediante código
PHP y SQL. Están programadas por medio del lenguaje PL/pgSQL el cual añade un conjunto de
constructores de procedimientos al lenguaje básico SQL, facilitándonos de esta forma un
conjunto de instrucciones para realizar controles de flujo e iteraciones a través de los datos SQL,
sin la necesidad de salir del propio gestor, así nos entrega los datos procesados y listos según los
criterios de búsqueda introducidos en las funciones.
A modo de ejemplo tenemos las funciones siguientes:
Función 1
CREATE OR REPLACE FUNCTION "public"."function_existencias_menu" () RETURNS SETOF "temporal"."result_existencias" AS $body$ DECLARE inventario_menu_result temporal.result_existencias%ROWTYPE; inventario_menu temporal.result_existencias_productos%ROWTYPE; BEGIN FOR inventario_menu IN SELECT producto_id, sum(cantidad_utilizada) AS cantidad FROM menu__plato__producto GROUP BY producto_id ORDER BY producto_id LOOP inventario_menu_result.producto_id = inventario_menu.producto_id; inventario_menu_result.cantidad = -inventario_menu.cantidad; inventario_menu_result.operador = '-'; RETURN NEXT inventario_menu_result; END LOOP; END; $body$ LANGUAGE 'plpgsql' VOLATILE RETURNS NULL ON NULL INPUT SECURITY INVOKER;
Capitulo 2. Diseño e implementación del sistema
39
Función 2
La función 1 obtiene la suma de las cantidades utilizadas por productos en todos los menús
elaborados en el sistema. La función 2 haciendo uso de la función 1 obtiene la lista de productos
con las existencias que hay en el almacén. Estas funciones pueden ser tan complejas como sea
necesario, teniendo incluso la posibilidad de introducción de parámetros que pueden ser
empleados en cualquier parte del cuerpo de la función.
2.5.2 Uso de PHP en las clases del sistema.
Dentro del paquete núcleo del menú, el fichero menu_request.php maneja las peticiones
asincrónicas que se realizan mientras se elabora un menú. Para realizar este proceso se auxilia de
la clase Services_JSON (JSON.php) que se encarga de convertir desde y hacia el formato
JSON un arreglo en PHP. El manejo de la base de datos se logra con dos clases llamadas Load
(load.php) y Save (save.php), que tienen como objetivo procesar las peticiones hechas a
menu_request.php, estas peticiones pueden ser para obtener datos que cumplan con un criterio
de búsqueda específico o para salvar datos que vienen del menú que se está elaborando; en
CREATE OR REPLACE FUNCTION "public"."function_existencias" () RETURNS SETOF "temporal"."result_existencias_productos" AS $body$ DECLARE inventario temporal.result_existencias_productos%ROWTYPE; BEGIN FOR inventario IN SELECT producto_id, sum(cantidad) AS cantidad FROM ( SELECT producto_id, sum(cantidad) AS cantidad FROM function_almacen07_suma_x_operador() GROUP BY producto_id UNION SELECT producto_id, sum(cantidad) AS cantidad FROM function_existencias_menu() GROUP BY producto_id ) AS union_inventario GROUP BY producto_id LOOP RETURN NEXT inventario; END LOOP; END; $body$ LANGUAGE 'plpgsql' VOLATILE RETURNS NULL ON NULL INPUT SECURITY INVOKER;
ambos c
Services_
2.5.3 U
La mayo
procesad
varias cla
(YUI) ha
libertad a
tenga que
menú a la
escritorio
2.5.3.1 Y
Esta libr
excelente
DHTML
casos los r
_JSON que
Uso de JavaS
or parte de la
dos en págin
ases en Java
acen que el
al usuario p
e refrescarse
a vista del u
o.
Yahoo! User
rería es un
e para el des
L y AJAX. T
resultados d
los deja list
Script en las
as páginas w
nas anteriore
aScript que,
comportam
para poder t
e constantem
usuario, ofrec
r Interface L
conjunto d
sarrollo de a
También inc
de las cons
os para ser e
Figura
s clases del
web que con
es, para logr
en combina
miento del us
omar mejor
mente brinda
ciendo la sen
Library (YU
de utilidades
aplicaciones
cluye varios
Capitulo
sultas obten
enviados al c
a 2.9 Clase
sistema.
ocemos nos
rar un sitio
ación con la
suario no es
es decisione
la ventaja d
nsación de q
UI)
s y control
interactivas
recursos C
o 2. Diseño e
nidas son t
cliente.
Save.
limitan a ob
web más d
a librería Ya
sté predeterm
es. La posib
de tener todo
que está trab
es escritos
s web usand
SS como pa
e implement
transformado
btener datos
dinámico fue
ahoo! User I
minado, dán
bilidad de qu
o lo necesario
ajando con u
en lenguaje
do técnicas d
arte de su n
ación del sis
os por la
s que ya han
e necesario
Interface Li
ndole una m
ue la página
o para elabo
una aplicació
e JavaScrip
de scripts D
núcleo. Todo
stema
40
clase
n sido
crear
brary
mayor
a no
rar el
ón de
t. Es
DOM,
os los
Capitulo 2. Diseño e implementación del sistema
41
componentes se desarrollan sobre código abierto bajo la licencia BSD y son de uso gratuito para
los usuarios. Los principales componentes utilizados fueron Yahoo Global Object, Connection
Manager, DataSource, JSON, Calendar y DataTable.
2.5.3.2 Clases JavaScript creadas para elaborar un menú.
Para facilitar la programación del componente menú, se utilizan o extienden en varios casos
algunas clases de la biblioteca YUI. Se define el nombre de espacio YAHOO.Alimentacion, para
seguir la estructura de la YUI donde cada clase pertenece al nombre de espacio YAHOO. Como
las nuevas clases pertenecen a YAHOO.Alimentacion.[nombre de la clase], para mayor claridad
solo se va a utilizar [nombre de la clase] para referirnos a ellas.
La clase principal en JavaScript es MenuComedor. Tiene la misión de cargar y salvar los
menús, crear, con los datos obtenidos, la mayor parte de las clases. Actúa también como punto de
enlace del sistema mediante la captura de los eventos generados por este. A modo de resumen se
podría definir como un manipulador de eventos muy valioso.
La clase MenuComedor se encarga de crear instancias de otras clases como:
- Calendario: mantiene las fechas de los menús.
- Comedor: tiene la lista de los comedores.
- TipoComida: almacena los posibles tipos de menú que se elaboran.
- Comensales: mantiene una lista de comensales asociada a un tipo de menú.
- Extras: mantiene algunos valores como los responsables de elaborar el menú, etc.
- CategoriasPlatos: un listado de categorías en las que son agrupados los platos.
- Platos: almacena los platos asociados a la categoría seleccionada.
Menu también es construida por MenuComedor, y desempeña una labor importante porque es
la encargada de la manipulación de todos los datos de un plato una vez que este es agregado al
menú que se está elaborando. Solo por citar, algunas de sus labores son: conservar el listado de
existencia de almacén, auxiliándose de la clase Existence; mediante la asistencia de la clase
Nodo y Comensales, mantiene una lista de las categorías y productos así como los comensales
asociados a cada plato respectivamente.
Capitulo 2. Diseño e implementación del sistema
42
Existen también dos clases llamadas CustomDataSource y CustomTable, que se encargan de
almacenar y mostrar los datos en forma tabular. Estas clases fueron programadas como parte de
una extensión a las clases DataSource y DataTable de la YUI. Sus principales ventajas radican
en que ellas facilitan la labor de presentar los datos, ahorrándonos la configuración de muchos
parámetros que son comunes para el problema que se está resolviendo.
Un resumen de los epígrafes 2.5.2 y 2.5.3 es el Diagrama de secuencia de una conexión AJAX
(Anexo # 6), que nos explica los procesos descritos en esos epígrafes, dándonos una idea más
cercana a la programación que las palabras no pueden expresar.
C
d
Capítulo
El Sistem
las pregu
un manua
una tarea
3.1 Prese
La Figura
L
si
B
Cabecera
dinámica
o 3: Manual
ma de Inform
untas más fre
al de usuario
a.
entación del
a 3.1 muestr
Logotipo del
istema.
Barra de nave
l de usuario
mación y Ges
ecuentes y fa
o, el cual se
l sistema.
ra una vista g
sistema: es
egación: opc
o.
stión para la
amiliarizarse
conforma co
Figura 3.1
general del s
s una image
ciones de nav
Lo
Dirección d
e de forma rá
on los pasos
Partes del s
sistema. Las
en de adorno
vegación den
ogotipo del sis
Ca
de Alimentac
ápida y fácil
s básicos que
istema.
diferentes p
o que mues
ntro del siste
stema
apítulo 3: M
ción, para br
con sus usu
e deben segu
partes que la
stra el logo
ema.
Manual de usu
rindar respue
uarios, cuent
uirse para rea
componen s
y el nombr
Barra
navega
Cua
d
c
uario.
43
esta a
a con
alizar
son:
re del
Área de
trabajo
de
ación
Sub‐barra d
navegación
adro de inicio
de sesión o
calendario
de
n
o
S
n
C
ca
fe
C
so
Á
3.2 Inicia
Lo prime
usuario y
espacio d
3.3 Barr
La barra
diferente
debemos
de botón
ub-barra de
avegación se
Cuadro de in
alendario do
echa.
Cabecera din
olo está en e
Área de traba
ar sesión.
ero que deb
y la contrase
donde genera
ra de navega
a de navega
es opciones
dar clic en
con un colo
e navegació
eleccionada.
nicio de se
onde cuando
námica: mue
el sistema co
ajo: muestra
e hacer un u
eña en el cu
almente pod
Fig
ación.
ción, despu
con que cu
ella, la que
or negro más
F
in
t
ón: opciones
.
esión o cale
o se seleccio
estra diferent
n fines deco
el contenido
usuario es a
adro de inic
demos ver el
gura 3.2 Cua
és de que e
uenta el sist
se encuentr
s fuerte. La F
Figura 3.3 B
Cuando los
ntroducidos p
tecla “Enter”
botón “E
s que están
endario: mu
ona un día ap
tes imágene
orativos.
o acorde con
autenticarse.
cio de sesión
calendario.
adro de inici
el usuario h
tema. Para
re selecciona
Figura 3.3 m
Barra de nav
s datos son
presionamos
o pulsamos e
Entrar…”
Ca
n dentro de
uestra cuánd
parecen los m
es que camb
n las opcione
Para esto d
n (Figura 3.2
o de sesión
ha iniciado
seleccionar
ada en ese m
muestra la opc
vegación.
la
el
apítulo 3: M
la opción
do se inició
menús corres
ian cada cie
es selecciona
debe introdu
2), el cual se
sesión, nos
una de esta
momento ap
ción “Menú”
Manual de usu
de la barr
la sesión
spondientes
erto tiempo.
adas.
ucir el nomb
e encuentra
da acceso
as opciones
arecerá en f
” seleccionad
uario.
44
ra de
o un
a esa
Esto
re de
en el
a las
solo
forma
da.
3.4 Opci
En esta o
los produ
3.4.1 O
Las unid
las norm
contener
unidad qu
Como se
ión “Almacé
opción podre
uctos del sist
Opción “Uni
ades de med
mas para la e
a otras, est
ue pertenezc
muestra en
én” de la ba
emos trabaja
tema.
idades de m
Figura 3.4
dida garantiz
elaboración d
to posibilita
ca a un mism
la Figura 3.5
F
arra de nave
ar con las un
medida” de l
4 Opción Al
zan el contro
de los menú
a que los pr
mo nivel (co
5 estas pued
Figura 3.5 U
egación.
nidades de m
a sub-barra
macén – Un
ol de los pro
ús. Están org
roductos y l
omo es el ca
den ser cread
Unidades de
Ca
medida, las c
a de navega
nidades de m
ductos que e
ganizadas en
los platos p
so de gramo
das, editadas
medida.
apítulo 3: M
categorías de
ción.
medida.
existen en al
n una jerarqu
puedan medi
o, quintal, lib
o eliminada
Muestra la
de medi
Manual de usu
e los produc
lmacén, así c
uía, unas pu
irse en cual
bra y kilogra
as.
lista de unida
da. Figura 3.5
uario.
45
ctos y
como
ueden
lquier
amo).
ades
5
Crea
- E
d
- E
un
3.4.2 O
Los prod
categoría
Sal
ar una unida
Editar una u
e cambiar to
Eliminar un
nidad si pres
Opción “Cat
F
ductos debe
a para los pro
Muest
categor
var los camb
ad de medid
Figura 3
unidad de m
odos los dato
na unidad d
sionamos “S
tegorías de p
Figura 3.7 O
en organizar
oductos, edit
tra la lista de
rías. Figura 3.8
ios
da:
3.6 Crear o e
medida: Se m
os que aparec
de medida:
Sí” en el botó
productos”
Opción Categ
rse por cate
tarla o elimin
8
Có
editar una un
muestra la m
cen en ella.
Cuando se
ón de confirm
de la sub-b
gorías – Cate
egorías. Aqu
narla (Figur
mo va a ser m
Ca
nidad de med
misma Figura
leccionamos
mación.
barra de nav
egorías de p
uí tenemos
a 3.8).
Seleccio
caso de
la opció
Cuál es
unidad
mostrada cua
apítulo 3: M
dida.
a 3.6. Tenem
s esta opció
vegación.
roductos
la posibilid
onamos la un
e ser la nuev
ón “Ninguna”
s la equivalen
d base.
Nombre de
ndo se quiera
Manual de usu
mos la posibi
ón eliminam
dad de crear
nidad de med
a unidad bas
ncia entre est
e la unidad de
a cambiar ent
uario.
46
ilidad
mos la
r una
dida base, en
se escogemos
ta unidad y su
e medida
tre unidades
n
s
u
- C
- E
to
- E
co
3.4.3 O
Mue
producto
catego
Crear una ca
Editar una c
odos los dato
Eliminar un
onfirmación
Opción “Uni
estra la lista d
os asociados
orías. Figura 3
Fi
ategoría:
Figura 3.9 C
categoría: Se
os que apare
a categoría
n “Sí” que ap
idades de m
e
a sus
3.11
Crear
categ
igura 3.8 Ca
Crear o edita
e muestra la
cen en ella.
: Se puede
parece cuand
medidas” de
Fi
r una
goría
Presion
ategorías de p
ar una catego
a misma Figu
eliminar una
do presionam
la sub-barr
igura 3.10 O
Se
as
un
E
namos el botó
Ca
productos.
oría de un pr
ura 3.9. Ofre
a categoría s
mos este botó
ra de navega
Opción Alm
Ed
ca
Eliminar las
categorías
Selecciona
caso de n
eleccionamos
sociados a e
nidad de med
Escribimos un
ón para salva
apítulo 3: M
roducto.
ece la posibi
si se selecci
ón.
ación.
macén – Unid
ditar las
tegorías
amos una cat
no tener esco
s una unidad
esta categorí
dida.
n nombre.
r los datos.
Manual de usu
ilidad de cam
iona la opció
dades de med
tegoría padre
ogemos “Ning
de medida. L
ía se mostra
uario.
47
mbiar
ón de
didas.
e, en el
guna”.
Los productos
arán en esta
s
a
La Figura
Los prod
mediante
o “Extrac
elaborar
-
-
-
-
a 3.11 mues
ductos puede
e las operaci
cciones”, cua
un menú.
Crear un
Editar un
Eliminar
presionam
Extracció
operacion
tra los produ
en ser creado
ones de “De
ando es nece
n producto:
n producto:
r un product
mos “Sí” en e
ón o Depó
nes son los m
uctos (en col
os, editados
epósito”, en
esario sacar
Figura 3
Figura 3.12.
Figura 3.12
to: Cuando
el botón de c
ósito: Los d
mismos para
lor azul) org
o eliminado
el caso de q
una cantidad
3.11 Produc
.
2.
seleccionam
confirmación
datos que h
ambas. Figu
Ca
ganizados po
os. Cada pro
que lleguen p
d de product
ctos.
mos esta opci
n.
hay que int
ura 3.13.
apítulo 3: M
or categorías
ducto actual
productos nu
to del almacé
ión eliminam
troducir par
Manual de usu
(en color ne
liza su inven
uevos al alm
én que no es
mos el produ
ra realizar
uario.
48
egro).
ntario
macén,
s para
cto si
estas
“Depósit
“Extracc
to” o
ción”
Guard
Figu
Figura 3.1
dar los cambi
ura 3.12 Cre
3 Operacio
ios
Se
Se
El p
unid
Ejem
cues
Cuánto
nutricio
ear o editar u
ones de Depó
Nombre
eleccionamos
eleccionamos
Escribimos u
recio que cue
dad de medid
mplo: Si sele
sta adquirir 1
aporta este p
nales.
Ca
un producto.
ósito o Extra
del producto
Cuanto se va
este produc
s la categoría
s la unidad de
n nombre.
esta adquirir
a seleccionad
eccionamos “
Kilogramo de
producto en
apítulo 3: M
.
acción.
o D
d
En
es
a a sacar o po
to
a la que pert
e medida.
1 de este p
da.
“Kilogramo”
e este produc
cada uno de
Manual de usu
De dónde vien
donde va el p
n qué unidad
stá la cantidad
oner de
tenece.
roducto en la
sería cuánto
cto.
estos valore
uario.
49
ne ó para
roducto.
de medida
d
a
o
s
3.5 Opci
Esta opc
informes
3.5.1 O
Los plato
posible e
los platos
- C
(F
ión “Menú”
ión permite
relacionado
Opción “Cat
os que exist
esta opción p
s asociados a
Crear una c
Figura 3.16)
” de la barra
trabajar con
os con los me
tegorías de p
Figura 3.14
ten en el m
permite crear
a una catego
F
categoría: D
.
Figura 3.16
a de navega
n los platos
enús elabora
platos” de l
Opción Ca
menú deben e
r, editar, bor
oría (Figura 3
Figura 3.15
Debemos in
6 Crear o ed
ción.
y sus categ
ados.
a sub-barra
ategorías – C
estar organi
rrar, listar la
3.15).
Categorías d
ntroducir un
ditar una cat
Li
Ca
gorías, elabo
a de navega
Categorías de
zados por c
s categorías
de platos.
n nombre y
tegoría de un
Muestra
de cate
Figura
star los plato
a una cate
Edit
cat
apítulo 3: M
orar los men
ción.
e platos.
categorías, p
de los plato
presionar e
n plato.
a la lista
egorías
3.15
s asociados
egoría
tar una
tegoría
Eliminar una
categoría
Manual de usu
nús y genera
para que esto
os, así como
el botón gu
uario.
50
ar los
o sea
listar
uardar
- E
h
gu
- L
li
- L
un
- E
ac
ca
3.5.2 O
Los plato
un menú
- C
- E
- E
pr
M
qu
m
Editar una c
abía asignad
uardar para
Listar todas
istan todas la
Listar los pla
na categoría
Eliminar un
ctiva esta op
aso de que s
Opción “Plat
os están form
. Como mue
Crear un pla
Editar un pla
Eliminar un
resionamos
uestra los p
ue puede ser
enú. Figura 3
categoría: S
do cuando
salvar los ca
las categor
as categorías
atos asociad
a.
na categoría
pción debem
e quiera can
tos” de la su
Fi
mados por u
estra la Figur
ato: Figura 3
ato: Figura 3
n plato: C
“Sí” en el bo
platos con lo
elaborado u
.18
Se muestra l
se creó. Aq
ambios.
rías: Cuand
s que hay en
dos a una ca
a: Nos da la
mos confirm
ncelar la acci
ub-barra de
igura 3.17 O
n conjunto d
ra 3.18 un pl
Figura
3.19.
3.19.
Cuando sele
otón de conf
os
un
la misma Fi
quí podemo
do presionam
el sistema. (
ategoría: Mu
a posibilidad
mar la elimin
ión seleccion
e navegación
Opción Menú
de productos
lato puede se
a 3.18 Plato
eccionamos
firmación.
Ca
gura 3.16 p
os cambiar e
mos la opció
(Figura 3.14
uestra una lis
d de elimina
nación selec
namos el bot
n.
ú – Platos.
s y sus norm
er creado, ed
os.
esta opció
apítulo 3: M
ero con el n
este nombre
ón “Categor
4)
sta con los p
ar una categ
ccionando el
tón “No”.
mas, los cual
ditado o elim
ón eliminam
Manual de usu
nombre que
e y presion
ías de plato
platos asocia
goría. Cuand
l botón “Sí”
les son la ba
minado.
mos el plat
uario.
51
se le
namos
os” se
ados a
do se
”. En
ase de
to si
L
v
p
Prec
pagar
po
El ejemp
categoría
Pollo troc
ingredien
La cantidad q
va a ser servid
para un come
cio que debe
los trabajado
or este plato.
Incluir:
produc
de elab
produc
Grupo:
con cua
otro ing
Norma
U/M: U
Nombr
plo de la Fi
a Cárnicos, e
ceado ó cual
ntes son los
ue
da
ensal
n
ores
Si seleccion
ctos que perte
borar el me
ctos.
Todos los p
alquier comb
grediente má
: Cantidad qu
Unidad de me
re: Nombre d
Fi
gura 3.20 m
esto quiere
lquier combi
condimento
A qué cate
cuando va
namos esta
enecen a ella
nú puede co
roductos o c
binación de el
ás que sirve p
ue es necesar
edida de la no
e la categoría
gura 3.19 C
muestra un p
decir que el
inación que
s, aquí no se
egoría perten
n a ser selecc
opción en u
serán incluid
ompletar est
ategorías que
llos. Si están
ara elaborar
ria para elabo
orma.
a o el product
Crear o edita
plato elabora
l plato debe
se quiera de
e ha seleccio
nece el plato
cionados para
una categoría
dos como pos
te ingredient
e pertenecen
en grupos di
el plato.
orar un plato d
to.
Ca
ar un plato.
ado. Como
llevar 20 g
e cada uno co
onado una ca
o, se utiliza p
a formar parte
a (en color
sibles ingredie
te con cualq
n a un mismo
ferentes los p
de una catego
apítulo 3: M
se ve se ha
gramos de C
omo 8 y 12,
ategoría, se h
para organiza
e de un menú
negro o bla
entes del plat
quier combin
o grupo pued
productos o c
oría o un prod
Unidad
Manual de usu
a selecciona
Cerdo en ban
5 y 15 etc. O
han seleccio
ar mejor los
ú
nco), todos
to. El encarga
nación de es
den completa
categorías se
ducto.
d de medida
uario.
52
do la
nda o
Otros
onado
platos
los
ado
stos
arse
erán
de la ración
3 produc
de Ajo,
Frijoles n
3.5.3 O
M
elab
ctos y se han
1 gramo de
negros, del c
Opción “Men
Muestra los m
borados. Figu
n puesto en g
Cebolla y
cual lleva 15
Figura
nús” de la s
Fig
menús
ura 3.22.
grupos difere
0,56 gramo
0 gramos.
a 3.20 Ejem
sub-barra d
gura 3.21 O
Figura
entes, lo que
s de Sazona
mplo de un pl
de navegació
Opción Menú
a 3.22 Men
Ca
e indica que
ador. Por úl
lato elaborad
ón.
ú – Menús.
nús
Ver inform
apítulo 3: M
el plato deb
ltimo tenemo
do.
e en vista we
Ver info
Manual de usu
be llevar 1 g
os el ingred
eb
orme en vista
uario.
53
gramo
diente
de impresiónn
Cuando
seleccion
derecha,
3.24) que
- C
or
Paso 1: S
Paso 2: S
Paso 3: S
revisado.
anotada.
Figura 3.23
se seleccion
namos un d
aparecen so
e pueden gen
Crear un m
rdenada, no
Seleccionar
Seleccionar
F
Seleccionar
. Además, si
3 Calendari
na la opción
ía del calen
olo los menú
nerarse a par
menú: Cuand
obstante par
la fecha de c
el comedor,
Figura 3.25
los que ela
i existe algun
io.
n menús, apa
ndario (Figu
ús elaborado
rtir de ellos.
do creamos
ra facilitar el
creación en u
tipo de com
Nuevo men
aboraron el
na observac
arece un lis
ura 3.23), qu
s el día sele
un menú n
l trabajo se a
una figura si
mida y escrib
nú – Comedo
menú, quié
ión durante
Ca
Figura 3.
tado de tod
ue se encue
eccionado, as
no es oblig
aconseja seg
imilar a la Fi
ir la cantidad
or y tipos de
én es el jefe
la elaboració
Clic en cada
para escribir
apítulo 3: M
24 Icono d
os los menú
entra en la
sí como los
gatorio segui
guir los pasos
igura 3.23.
d en cada tip
e comida.
fe de turno
ón de este ta
tipo de come
r la cantidad
Manual de usu
e informe.
ús elaborado
esquina sup
informes (F
ir una secu
s siguientes:
po de comen
y por quién
ambién pued
ensal
uario.
54
os. Si
perior
Figura
uencia
nsal.
n fue
de ser
Paso 4: S
Paso 5: C
calculada
chequear
caso de
cuando a
van a ser
utilizar “
cambiar u
un result
forman e
Clic para ag
el plato al m
Fi
Seleccionar
F
Cuando el p
as de forma
r que estas c
ser insuficie
aparece en ve
r sacadas del
Pollo trocea
un producto
ado satisfact
el plato deben
regar
menú
igura 3.26 N
las categoría
Figura 3.27
plato es agre
automática
cantidades ex
entes aparec
erde, en la c
l almacén pa
ado” en lugar
o; también se
torio cuando
n estar en co
Nuevo menú
as y escoger
Nuevo men
egado al me
a para cada p
xistan en alm
cerán marca
categoría que
ara elaborar
r de “Cerdo
e puede form
o se va a ela
olor verde pa
ú – Responsa
los platos qu
nú – Categor
enú las cant
producto. E
macén media
adas en colo
e agrupa a lo
este plato. E
en banda” s
mar la combi
aborar este p
ara que el pla
Clic para sele
categoría.
Ca
ables y obser
ue van a form
rías y listas d
tidades de c
l responsabl
ante la casill
or rojo. La
os productos
En el caso d
solo es neces
inación de am
plato. Todos
ato pueda se
Clic
de c
eccionar una
apítulo 3: M
rvaciones.
mar parte de
de platos.
cada produc
le de elabor
la “Existenc
casilla “Can
s, indica que
de la Figura
sario editar e
mbos produ
los grupos d
er utilizado e
en cuadro de
ada responsa
Área para
observac
Cuando es s
en la lista
los que pert
Manual de usu
el menú.
cto que lleva
rar el menú
ia”, las cual
ntidad utiliz
e estas cantid
3.28, si se q
estas casillas
ctos para ob
de categoría
en el menú.
e chequeo
able
a escribir las
ciones
seleccionada
de platos ap
tenecen a ella
uario.
55
a son
debe
les en
zada”,
dades
quiere
s para
btener
s que
una categorí
parecen todo
a.
ía
os
Clic el
el plat
menú
Paso 6: R
Paso 7: D
- E
en
qu
- E
in
op
- G
p
g
se
ap
limina
to del
ú
Figur
Repetir desd
Dar clic en e
Editar un m
n el caso de
ue cuando e
Eliminar un
nventario de
pción selecc
Generar info
ara esto sol
enerados po
eleccionar la
parecen (Fig
ra 3.28 Nue
de el Paso 4 c
el botón “Gu
enú: Despu
que se nece
s creado.
n menú: Ca
e almacén ac
cionando “Sí
ormes: Exis
lo debemos
or un grupo
a fecha dentr
gura 3.29) es
Clic p
cantid
unidad
evo menú – C
con cada pla
uardar”.
és de un me
esite hacerlo
asi nunca se
ctualizado. E
í” en la conf
sten varios
s dar clic e
o de menús
ro del calend
scoger el des
para ver la
dad en otra
d de medida
Comensales
ato que se qu
enú ser cread
tenemos a n
e elimina un
En caso de
firmación de
informes qu
n el inform
que se elab
dario de la F
seado.
Ca
e ingredient
uiera agregar
do, casi nunc
nuestras disp
n menú, por
que se nece
eliminación
ue se genera
me correspon
boran en el
Figura 3.23 y
apítulo 3: M
tes del menú
r al menú.
ca es necesa
posición las
rque sus dat
esite hacerlo
n de éste.
an a partir d
ndiente. Ha
día, en est
y dentro de
Manual de usu
ú.
ario editarlo,
mismas opc
tos mantien
o utilizamos
del propio m
y otros que
te caso deb
los informe
Clic ag
los co
plato
uario.
56
, pero
iones
en el
s esta
menú,
e son
emos
s que
grega o quita
omensales de
l
3.6 Opci
Esta opc
cálculos
3.6.1 O
- M
D
to
ca
- IP
to
al
co
- IP
pr
al
M
r
ión “Report
ción permite
estadísticos
Opción “Alm
Movimientos
Depósitos o E
odos los pro
antidad de c
PB de alma
otales de De
lmacén. Mu
omo el saldo
PB de alm
roducto, tot
lmacén.
Muestra los re
relacionados c
almacén
tes” de la ba
e generar un
que se realiz
macén” de la
s por prod
Extracciones
oductos del
ada operació
acén: La Figu
epósitos y E
estra una tab
o entre las fe
acén (actua
al de depós
portes
con el
.
Figura
arra de nave
na serie de
zan en ellos.
a sub-barra
ductos: La F
s, que se efe
almacén. M
ón realizada.
ura 3.33 per
Extracciones,
bla resumen
echas escogid
al): Muestra
ito y extrac
3.29 Inform
egación.
reportes de
.
a de navegac
Figura 3
Figura 3.31
ectuaron ent
Muestra una
. Figura 3.32
rmite selecci
, teniendo e
con el prod
das.
a una tabla
ciones así c
Ca
mes.
almacén y
ción.
3.30 Opción
permite se
tre dos fecha
tabla resum
2.
ionar entre d
en cuenta un
ducto, total d
resumen c
como el sald
apítulo 3: M
del menú r
Reportes - A
eleccionar c
as, teniendo
men con la fe
dos fechas cu
no o todos l
de depósito y
on los valo
do actual de
Manual de usu
relacionados
Almacén.
uales fueron
en cuenta u
fecha, produ
uales han sid
los producto
y extraccione
ores actuales
el producto
uario.
57
s con
n los
uno o
cto y
do los
os del
es así
s por
en el
Figu
3.6.2 O
ura 3.31 Sel
Opción “Men
M
re
ección de tip
Figur
nú” de la su
Fig
uestra los rep
elacionados c
menú.
po de inform
ra 3.32 Mo
Figura 3.33
ub-barra de
gura 3.34 Op
portes
con el
me, fechas y p
vimientos po
3 IPB de alm
e navegación
pción Repor
Ca
productos pa
or productos
macén.
n.
rtes - Menú.
apítulo 3: M
ara informes
s.
Manual de usu
s de almacén
uario.
58
n.
Capítulo 3: Manual de usuario.
59
- Fichas de costos: Figura 3.35. Muestra una tabla con los 5 costos más altos que han
tenido los platos durante la elaboración de los menús.
- Frecuencias por platos: Figura 3.36. Muestra con qué frecuencia ha sido elaborado cada
plato entre dos fechas dadas.
- Comportamiento del balance nutritivo: Figura 3.37. Muestra como se comportaron los
indicadores energía, proteínas y grasas entre dos fecha por comensales y tipos de
comidas.
Figura 3.35 Fichas de costos.
Figura 3.36 Frecuencias por platos.
Figura 3.37 Comportamiento del balance nutritivo.
3.7 Opci
- C
- E
- E
pr
3.8 Opci
Se utiliza
Mue
que u
ión “Usuari
Crear un usu
Editar un us
Eliminar un
resionamos
ión “Mis da
a para cambi
estra los usua
utilizan el siste
Figura 3.39
os” de la ba
uario: Figur
suario: Figur
Fig
n usuario:
“Sí” en el bo
tos” de la b
iar la contras
rios
ema.
arra de nave
Figura 3.38
Figura
ra 3.40
ra 3.40
gura 3.40 Cr
Cuando sel
otón de conf
arra de nav
Figura 3.41
seña y el cor
egación.
8 Opción Us
3.39 Usuar
rear o editar
eccionamos
firmación.
vegación.
Opción Mi
rreo electrón
Ca
suarios.
rios.
un usuario.
esta opció
is datos.
nico del usua
Ver
apítulo 3: M
ón eliminam
ario. Figura 3
r datos del us
C
Tip
que
va
Manual de usu
mos el usuar
3.42.
suario
Eliminar el u
Correo electró
po de usuari
e permisos d
a tener en el
uario.
60
rio si
usuario
ónico
o, define
e accesos
sistema.
3.9 Opci
Cuando h
que la se
puede en
ión “Salir” d
hemos termi
esión creada
ntrar en el sis
de la barra
inado de tra
por el usua
stema.
Figura 3
de navegac
Figura 3.
abajar en el
ario se cierre
3.42 Mis da
ión
43 Opción
sistema es n
e, de este mo
Ca
atos
Salir.
necesario pre
odo nadie qu
apítulo 3: M
esionar el bo
ue no sea us
Manual de usu
otón “Salir”
suario autori
uario.
61
” para
izado
CONCLUSIONES
62
Conclusiones
Se implanta en la Dirección de Alimentación de la UCLV un Sistema de Información y
Gestión que tributa a mejorar el proceso de gestión, control y planificación estratégica del
área; contribuyendo con el proceso de informatización en las áreas y actividades
universitarias.
Se consolidan los conocimientos de la programación web y el trabajo con bases de datos
mediante la utilización de los lenguajes PHP, Javascript y el gestor de bases de datos
PostgreSQL.
Se contribuye con la implantación del software libre al implementar un sistema
confeccionado bajo estos principios.
RECOMENDACIONES
63
Recomendaciones
Como parte de posibles aplicaciones y extensiones del Sistema de Control de Alimentación se
recomienda:
Crear nuevos módulos y reportes en el Sistema que posibiliten a la Dirección de
Alimentación elevar la eficacia en la toma de decisiones en base a los resultados
obtenidos con la utilización del software.
Valorar la posibilidad de implantar el sistema en el resto de las universidades del país
como parte de un proceso de estandarización con vistas a facilitar el proceso de gestión,
control y planificación estratégica de los alimentos en centros de la enseñanza superior.
Crear un nuevo módulo que permita exportar los reportes a otros formatos para facilitar
así la impresión.
BIBLIOGRAFÍA
64
Bibliografía
1. PostgreSQL Documentation. Available from: http://www.postgresql.org/docs/.
2. Software libre y su mapa conceptual. Available from:
http://es.wikipedia.org/w/index.php?title=Software_libre.
3. El rincón de Linux - Documentación. Available from: http://www.linux-
es.org/documentacion.
4. Overview of new features in Apache 2.0. Available from:
http://httpd.apache.org/docs/2.0/new_features_2_0.html.
5. Detailed guides. Available from: http://wiki.postgresql.org/wiki/Espa%C3%B1ol.
6. Programación dirigida por eventos. Available from:
http://es.wikipedia.org/w/index.php?title=Programaci%C3%B3n_dirigida_por_eventos.
7. PHP: Hypertext Preprocessor. Available from: http://www.php.net/docs.php.
8. The Definitive JavaScript Resource. Available from: http://www.javascript.com/.
9. News and Opinions about HTML. Available from: http://www.w3.org/html/.
10. HTML, El Lenguaje para el Formato de Hipertextos. Available from:
https://developer.mozilla.org/.
11. Cascading Style Sheets - Home page. Available from: http://www.w3.org/Style/CSS/.
12. DOM - MDC. Available from: https://developer.mozilla.org/.
13. Document Object Model (DOM). Available from: http://www.w3.org/DOM/DOMTR.
14. Tutorial de AJAX con PHP y JSON. Available from:
http://thinkcoderepeat.blogspot.com/2006/08/arquitectura-cliente-servidor-con-ajax.html.
15. Pressman, R., Ingeniería de Software.Un enfoque Práctico.
16. Adobe Fireworks CS3. Available from: http://www.adobe.com/es/products/fireworks/.
17. Adobe Dreamweaver CS3. Available from:
http://www.adobe.com/es/products/dreamweaver /.
18. Aptana IDE - Developers' Choice.; Available from: http://www.aptana.com/studio.
19. Un IDE para el desarrollo de aplicaciones web, enfocado en Ajax y la Web 2.0. Available
from: http://www.desarrolloweb.com/.
Anexo # 1: M
Anexos
Mapa Concepttual del softwarre libre.
ANEXOS
65
ANEXOS
66
Recibir mercancía
Actualizar inventario
Entregar productos solicitados
Planificar menú
Elaborar solicitud de entrega
Recoger inventario
Aprobar planificación
Autorizar solicitud de entrega
Jefe de alimentaciónJefe de turnoPlanificadorAlmacenero
Anexo # 2: Diagrama de actividades correspondiente al sistema
ANEXOS
67
Página de inicio del sistema
Iniciar sesión
Error en el usuario y / o la contraseña
InicioInició sesión de forma correcta
Menú Almacén Reportes Usuarios Mis datos
Salirterminar de trabajar con su usuario
cambiar opción cambiar opción cambiar opción cambiar opción
terminar de trabajar el usuario
Salir del navegador o cambiar de página web
Cerrar sesión
Listado de existencias por productos agrupados en categorias
Generar existencias
Extracción de producto Depósito de
producto
Edición de producto
Nuevo producto
Realizar extracción en un producto
Realizar depósito de un productoEditar un producto
Agregar un producto
Unidades de medidas
Mostrar unidades de medidas
Edición de unidad de medida
Nueva unidad de medida
Editar unidad de medida
Agregar una unidad de medida
Lista de categorías de platos
Lista de categorías de productos
Edición de categoría de platos
Nueva categoría de platos
Nueva categoría de productos
Edición de categoría de producto
Lista de usuarios
Mostrar usuarios
Datos de usuario actual
Editar datos de usuario actual
Nuevo usuario
Edición de usuario
Agregar usuario
Editar usuario
Lista de menus
Lista de platos
Edicion de plato
Nuevo plato
Editar plato Agregar plato
Nuevo menu
Edición de menu
Paginas de reporte(s)
Editar categoría
Agregar categoría
Agregar menu
Editar menu
Generar reporte
Mostrar menus
Mostrar lista de platosMostrar categorías de platos
Agregar categoría Editar categoría
Mostrar categorías de productos
.Almacén
.Menú
Movimientos por productos
IPB de almacén
Fichas de costo
Frecuencias por platos
Comportamiento del balance nutritivo
Mostrar reportes de almacén
Mostrar reportes del menú
Anexo # 3: Diagrama de navegación del Sistema.
ANEXOS
68
Anexo # 4: Diagrama de las principales tablas de la base de datos.
ANEXOS
69
utils
index.php
const.php communs.php
contents.php functions.php
bootstrap.php
pages.php
utils.php
skinks
skins.php
header.php footer.php
components
usuario.php
kernel menuload.php save.php
javascriptscalendario.js calendario
menu.js
categorias platos.js
json.php
comedor.js
comensales.js
custom datasource.js
custom table.js
existence.jsextras.js
menu.js
menu comedor.js
nodo.jsplatos.js
tipo comida.js
unidad medida.js
utils.js
wait.js
Base de datos
menu_request.php
Yahoo! User Interface Library (YUI)
Menú
Almacén
Reportes
categorias_productos.php
almacen07.php producto.php
plato.php
categorias_platos.php
menu.php
informe.php
Anexo # 5: Diagrama de componentes del sistema.
Anexo # 6: Di
iagrama de seccuencia de una conexión AJAX
X. ANEXOS
70