final
Post on 10-Aug-2015
84 Views
Preview:
TRANSCRIPT
INSTITUTO TECNOLÓGICO DE CELAYA
Módulo de Programa de Trabajo anual y Programa operativo anual
MEMORIA DE RESIDENCIA PROFESIONAL
11/01/2010 - 19/05/2010
INSTITUTO TECNOLÓGICO DE CELAYA
ASESOR EXTERNO: JOSÉ GUILLERMO FIERRO MENDOZA
PRESENTA
José Antonio Ortiz Corona
05032003
ASESOR INTERNO: ING. JOSÉ GUILLERMO RODRÍGUEZ VILLAFAÑA
REVISOR: ING. ZULMA G. ALAMOS VILLANUEVA
REVISOR: ING. JOSÉ BENIGNO MOLINA CASTRO
CELAYA, GUANAJUATO AGOSTO 2010
Tabla de contenido
INTRODUCCIÓN.............................................................................................................4
1. CAPÍTULO MARCO DE REFERENCIA...................................................................6
1.1. SITUACIÓN HISTÓRICA, SOCIAL, POLÍTICA, ECONÓMICA Y CULTURAL.........................61.2. LEMA Y ESCUDO...................................................................................................71.3. FILOSOFÍA INSTITUCIONAL......................................................................................8
1.3.1. Principios......................................................................................................81.3.2. Creencias.....................................................................................................91.3.3. Código de Ética............................................................................................91.3.4. Objetivo......................................................................................................101.3.5. Misión:........................................................................................................101.3.6. Visión..........................................................................................................111.3.7. Políticas de Calidad....................................................................................111.3.8. Caracterización de la empresa...................................................................11
1.4. EL CENTRO DE CÓMPUTO DEL INSTITUTO TECNOLÓGICO DE CELAYA....................121.4.1. Área de desarrollo de software...................................................................131.4.2. En forma interna:........................................................................................141.4.3. En forma externa:.......................................................................................141.4.4. Coordinador del área de desarrollo............................................................151.4.5. Analistas y Programadores........................................................................15
2. JUSTIFICACIÓN DEL PROYECTO........................................................................17
2.1. PROGRAMA DE TRABAJO ANUAL(PTA) Y PROGRAMA OPERATIVO ANUAL(POA)... .172.2. OBJETIVOS GENERALES......................................................................................182.3. OBJETIVOS ESPECÍFICOS.....................................................................................182.4. PROBLEMAS A RESOLVER....................................................................................182.5. ALCANCES..........................................................................................................192.6. LIMITACIONES DEL SISTEMA.................................................................................19
3. CAPÍTULO MARCO TEÓRICO..............................................................................20
3.1. APLICACIÓN WEB.................................................................................................203.1.1. Antecedentes Web.....................................................................................203.1.2. El Servidor Web.........................................................................................20
3.2. SERVIDOR WEB APACHE.....................................................................................223.2.1. ¿Qué es el Servidor Apache......................................................................223.2.2. Características de Apache.........................................................................23
3.3. POSTGRESQL......................................................................................................233.3.1. ¿Qué es PostgreSQL?...............................................................................23
1
3.3.2. Características de PostgreSQL..................................................................243.4. APACHE TOMCAT.................................................................................................25
3.4.1. ¿Qué es Tomcat?.......................................................................................253.4.2. ¿Dónde puedo descargar Tomcat?............................................................253.4.3. ¿Cuáles son los servlets?,¿Cuáles son las páginas JSP?.........................25
3.5. IREPORT..........................................................................................................263.5.1. ¿Qué es iReport?.......................................................................................263.5.2. Características de iReport..........................................................................27
3.6. JAVASCRIPT (JQUERY Y JQUERY UI)...................................................................283.6.1. ¿Qué es Jquery?........................................................................................283.6.2. Ventajas en usar Jquery.............................................................................28
3.7. ¿QUÉ ES JQUERY UI?........................................................................................283.7.1. Ventajas en usar JQuery UI.......................................................................29
3.8. PHP...................................................................................................................293.8.1. ¿Qué es PHP?...........................................................................................293.8.2. ¿Qué se puede hacer con PHP?................................................................303.8.3. Ventajas de PHP........................................................................................313.8.4. Ventajas adicionales de PHP.....................................................................31
3.9. SYMFONY...........................................................................................................333.9.1. Symfony en pocas palabras.......................................................................333.9.2. Características de Symfony........................................................................343.9.3. Entorno de desarrollo y herramientas........................................................353.9.4. ¿Quién ha desarrollado Symfony y por qué motivo?..................................363.9.5. Conceptos básicos.....................................................................................383.9.6. Programación Orientada a Objetos (OOP).................................................383.9.7. Métodos mágicos.......................................................................................383.9.8. PEAR (PHP Extension and Application Repository)...................................393.9.9. Mapeo de Objetos a Bases de datos (ORM)..............................................403.9.10. Desarrollo rápido de aplicaciones (RAD)...................................................433.9.11. YAML..........................................................................................................453.9.12. Resumen Symfony.....................................................................................48
3.10. EL PATRÓN MVC................................................................................................483.10.1. Las capas de la arquitectura MVC.............................................................493.10.2. Programación simple..................................................................................493.10.3. Separando la presentación.........................................................................51
3.11. DOCTRINE..........................................................................................................543.11.1. ¿Qué es Doctrine?.....................................................................................543.11.2. ¿Qué es un ORM?.....................................................................................543.11.3. Información Básica....................................................................................553.12. Razones para utilizar Symfony......................................................................55
2
3.13. LINUX DEBIAN.....................................................................................................573.13.1. ¿Qué es Debian?.......................................................................................57
4. DESCRIPCIÓN DE LAS ACTIVIDADES REALIZADAS..........................................59
4.1. ANÁLISIS DEL SISTEMA........................................................................................594.1.1. El procedimiento del Programa de Trabajo Anual......................................604.1.2. Programa Operación Anual........................................................................634.1.2.1 El procedimiento del Programa Operativo Anual.........................................634.1.3. Diagrama de caso de uso PTA..................................................................654.1.4. Diagrama de caso de uso POA..................................................................66
4.2. PLANTEAMIENTO DEL PROBLEMA..........................................................................664.2.1. Análisis de las herramientas de desarrollo.................................................67
4.3. ANÁLISIS DE REQUERIMIENTOS............................................................................684.3.1. Capacitación para el uso de las herramientas de desarrollo......................69
4.4. ANÁLISIS DE DISEÑO Y DESARROLLO DE LA BASE DE DATOS..................................694.5. DESARROLLO DE LA INTERFAZ DEL USUARIO.........................................................72
4.5.1. Validación del sistema................................................................................744.5.2. Prueba del sistema.....................................................................................74
4.6. DETECCIÓN Y CORRECCIÓN DE ERRORES.............................................................75
5. CONCLUSIÓN.........................................................................................................76
6. REFERENCIAS DE INTERNET..............................................................................78
7. ANEXOS..................................................................................................................79
3
Introducción
Actualmente es necesario tener un sistema que permita organizar y estructurar la
información, teniendo efectos favorables para la empresa o institución que lo realice,
simplificar el trabajo diario de los usuarios permitiendo tener un mejor rendimiento y
diminución de fallas al realizarlo, haciendo este de vital importancia, es por este motivo
que es necesario que forme parte de una estructura integral de una institución
educativa de excelencia, como es el Instituto tecnológico de Celaya.
Para que una institución responda a las necesidades e intereses de su entornó, se
necesita que desarrolle un proceso de planeación constante, que permita ofrecer
programas educativos pertinentes al sector productivo y con altos estándares de
calidad. En el Instituto Tecnológico de Celaya se atiene de un proceso de planeación
constante, que permita ofrecer programas educativos pertinentes al sector productivo y
con altos estándares de calidad. En el Instituto Tecnológico de Celaya se atiende un
proceso de planeación estratégica operado cada 6 años y que tuvo como producto
principal el Programa Institucional de Innovación y Desarrollo (PIID) 2001-2006, y un
proceso de planeación operativo anual ejecutado, cuyo resultado final es el Programa
Operativo Anual (POA) y el Programa de Trabajo Anual (PTA).
El programa de Trabajo Anual (PTA) tiene como propósito contar con un documento
normativo de corto plazo donde se programan las metas de forma anualizada y las
actividades se realizan mensualmente. A dicha programación se le debe dar
seguimiento, el cual consiste en adaptar las metas del PIID a las necesidades del
tecnológico, para lograr la meta es necesario crear varias acciones y asignar los
departamentitos involucrados en estas. El Programa Operativo Anual (POA) es una
herramienta que nos permite convertir los lineamientos generales de la planeación de
las actividades, en objetivos y metas concretas a desarrollar en el corto plazo, así como
conocer el nivel de aprovechamiento de los recursos asignados, a fin de ejercer los
recursos captados a través de ingresos propios y los asignados al gasto de operación
de la Institución, para elevar la calidad en los Servicios Educativos.
4
El presente proyecto tiene como objetivo crear una aplicación web la cual permitirá la
facilidad de captura de los procesos de PTA y POA, a los jefes de departamento y al
personal administrativo de planeación, el cual contara con una interfaz intuitiva.
5
1. CAPÍTULO MARCO DE REFERENCIA
1.1. Situación histórica, social, política, económica y cultural
El Instituto Tecnológico de Celaya, nace el lunes 14 de abril de 1958, como un Centro
de Segunda Enseñanza, Capacitación Técnica para Trabajadores y Preparatoria
Técnica Especializada. A partir de entonces y hasta la fecha ha evolucionado tanto en
el perfil de servicios educativos como en la infraestructura.
En 1962 inician los programas de Educación Superior impartiendo la carrera de
Ingeniería Industrial en diversas especialidades. En 1970 se desincorporan los estudios
de secundaria y en 1984 los de bachillerato. La primera Maestría que fue la Ingeniería
Química, inicio en 1980, en 1986 la de Ingeniería Mecánica, 1993 la de Ingeniería
Administrativa y en 1994 la de Ingeniería Industrial. El primer programa de Doctorado
inicia en 1989 y es el único que hasta la fecha se ofrece en el área de Ingeniería
Química.
Imagen 1. 1: Instituto Tecnológico de Celaya
En materia de instalaciones físicas y equipamiento de laboratorios y talleres, ha sido
notable el paulatino avance hasta llegar a cubrir casi en su totalidad 13 hectáreas con
aulas, laboratorios instalaciones diversas en un ambiente de hermosas áreas verdes.
6
Ahora el Tecnológico goza de un reconocido prestigio a nivel nacional, por la calidad de
enseñanza que se imparte, la investigación y divulgación del quehacer científico y la
alta capacidad de su planta de profesores-investigadores.
Consciente de los cambios que la comunidad nacional e internacional han generado en
el Estado, y tomando como base el estudio Guanajuato Siglo XXI, se ha realizado un
nuevo diagnóstico del entorno a fin de redefinir las acciones que se deben emprender
para una vez más dar respuesta al compromiso que tiene el Instituto Tecnológico de
Celaya y a través de ello promover su desarrollo como centro de educación tecnológica
superior de excelencia.
1.2. Lema y Escudo
En 1958 las autoridades del Instituto Tecnológico de Celaya convocaron a la
comunidad tecnológica para definir lema y escudo del Tecnológico, resultando
triunfador del concurso el lema “La Técnica por un México mejor”, propuesto por el
alumno Fernando Mendoza Ochoa, alumno con la credencial No. 320 del primer año
grupo “D” de Subprofesional en la especialidad de “Equipo Agrícola”.
En el concurso para seleccionar el Escudo del Tecnológico, el diseñado por el Prof.
Luis “Sony” Filoteo Ruiz fue el ganador.
Imagen 1. 2: Escudo del ITC.
7
Está constituido por una Torre Hidráulica (“Bola del Agua de Celaya”), un engrane color
gris, un rayo eléctrico color rojo y las siglas de la Institución “ITC” en color verde. Para
su diseño se tomaron dos aspectos básicos:
1. El aspecto regional que está representado por la torre hidráulica, conocida en la
mayor parte del país como “La bola de Agua de Celaya”, tiene como
característica principal el haber sido ensamblada mediante la técnica Antigua del
remache.
2. El aspecto institucional esta simbolizado por el engrane y el rayo eléctrico, que
representa el carácter técnico del plantel educativo.
1.3. Filosofía Institucional
El Instituto Tecnológico de Celaya es una institución de educación superior pública
federal, pertenece al sistema Nacional de Institutos Tecnológicos, realiza docencia,
investigación y vinculación, como funciones sustantivas, que aseguran la formación
integral de profesionistas a nivel licenciatura y postgrado, con vocación de servicio y
capaces de transformar el entorno, tecnológica, y científica, económica y socialmente.
1.3.1. Principios
La filosofía educativa del instituto se basa en el artículo 3 constitucional y en la
ley General de Educación.
Entender por educación el proceso de la humanización individual y colectiva que
conduce a una mejor calidad de vida.
La humanización consiste en propiciar el desarrollo armónico de las
potencialidades físicas, intelectuales, emocionales y axiológicas.
Para el instituto cada persona es un fin en sí misma, es autómata pero al mismo
tiempo independiente, es inacabada pero en continuo proceso de desarrollo; es
inmanente pero al mismo tiempo busca trascender a lo largo de su vida.
8
El instituto desea constituirse en una sociedad más participativa, más justa, más
equitativa, tolerante e incluyente que propicie el proceso de humanización para
todos.
El instituto entiende que la tecnología es un pilar fundamental en el desarrollo de
una sociedad.
1.3.2. Creencias
El instituto cree en la vida, la convivencia y la justicia.
En la educación.
En nuestro país y en los mexicanos.
En el futuro que nosotros preparamos.
En la colaboración.
En la fortaleza de los vínculos familiares.
En nuestra comunidad educativa.
En el trabajo en equipo.
En nuestras tradiciones populares.
En nuestra historia y nuestra cultura como preludio de nuestro futuro; en la
conciencia moral, la responsabilidad y la libertad de las personas.
1.3.3. Código de Ética
Bien común: Por encima de los intereses personales.
Integridad: Acciones y palabras honestas y dignas de credibilidad.
Honradez: No usar en beneficio ilegitimo el cargo público.
Imparcialidad: No conceder las preferencias ni privilegios indebidos a persona
alguna.
Justicia: Congruencia con la procuración de respeto al estado de derecho.
Transparencia: Garantizar el acceso a la información respetando la privacidad
que corresponda
9
Rendición de Cuentas: Eficacia y calidad en la gestión de la administración.
Entorno cultural y ecológico: Respeto, defensa y preservación del entorno
cultural y ecológico.
Generosidad: Actual solidariamente frente a las personas desprotegidas y a
quienes padecen pobreza y marginación.
Generosidad: Actual solidariamente frente a las personas desprotegidas y a
quienes padecen pobreza y marginación.
Igualdad: Procurar paridad de oportunidades para todos.
Respeto: Trato amable y tolerancia para todos.
Liderazgo: Promoción y apoyos de todos estos compromisos, observando los
principios morales que dan sustento a una sociedad exitosa.
1.3.4. Objetivo
El objetivo del Instituto consiste en llevar a cabo programas de docencia, investigación
y extensión en el contexto de la educación superior a nivel licenciatura y posgrado,
tendientes a alcanzar la excelencia educativa y lograr que el ITC sea un centro de
educación integral confiable a la sociedad y que coadyuve al desarrollo de la
comunidad. El quehacer educativo se basa en tres funciones sustantivas: la
DOCENCIA como medio para la adquisición y práctica del conocimiento disciplinario, la
INVESTIGACIÓN como fuente para explorar nuevas explicaciones y formas del
dominio de los elementos de la naturaleza y de la generación de nuevos conocimientos
y la EXTENSIÓN como medio de vinculación con la realidad. La PLANEACIÓN como
área de apoyo a las anteriores funciones sustantivas, tiene como objetivo determinar
las demandas del medio ambiente de la Institución y evaluar los desarrollos internos
para dar respuesta adecuada a las necesidades percibidas. Finalmente, hay
actividades de APOYO A LA DOCENCIA de carácter administrativo cuyo objetivo es
proporcionar los requerimientos de operación que soporten las áreas sustantivas del
quehacer institucional manteniendo funcionalidad y eficiencia en la organización.
1.3.5. Misión:
10
Formar personas íntegras, con amplio sentido crítico y de servicio a la sociedad,
capaces de responder de manera efectiva y específica a las necesidades del entorno,
en la generación y aplicación del conocimiento.
1.3.6. Visión
Ser reconocidos en la red internacional de educación tecnológica superior por la
excelencia en programas académicos, amplia aceptación de egresados, sólida
formación de alumnos, altos índices de titulación y graduación; por generación y
transformación del conocimiento, servicios oportunos y sistemas eficientes de
administración y gestión, liderazgo académico, técnico, científico, cultural, deportivo,
cívico y ecológico, al servicio de México.
1.3.7. Políticas de Calidad
El Instituto Tecnológico de Celaya establece el compromiso de implementar todos sus
procesos, orientándolos hacia la satisfacción de sus clientes sustentada en la Calidad
del Proceso Educativo, para cumplir con sus requisitos, mediante la eficacia de un
Sistema de Gestión de la Calidad y de mejora continua, conforme a la norma ISO
9001:2008/NMX-CC-9001-IMNC-2008.
1.3.8. Caracterización de la empresa
Razón social: Instituto Tecnológico de Celaya (ITC).
Sector: Educativo.
Organigrama: Imagen 1.3.
11
Imagen 1. 3: Organigrama Institucional.
1.4. El centro de Cómputo del Instituto Tecnológico de Celaya
El Centro de Cómputo es un departamento de servicio y su misión es proporcionar
recursos y servicios en materia de informática al Instituto Tecnológico de Celaya.
12
Entre las funciones del Centro de Cómputo dentro del ITC se encuentran:
Planear, coordinar, controlar y evaluar las actividades de desarrollo de sistemas
y servicios de cómputo.
Aplicar la estructura orgánica autorizada para el Centro de Cómputo y los
procedimientos establecidos.
Organizar, coordinar y controlar los servicios de almacenamiento, captura y
procesamiento de información del instituto.
Establecer y mantener actualizados los sistemas de capacitación, validación y
explotación de información del instituto.
Coordinar el análisis, diseño y programación de sistemas de los procesos
aprobados.
Controlar la operación, el mantenimiento y el buen funcionamiento de los
equipos de cómputo.
Realizar estudios de factibilidad sobre los equipos que se tienen o se desean
adquirir con el objetivo de mantener actualizados en el instituto
Diseñar y mantener actualizados los sistemas de información del instituto
Establecer y mantener relaciones e intercambios con instituciones que manejan
equipos de cómputo afines
Coordinar las actividades del departamento con las demás áreas de la
Subdirección de Servicios Administrativos
Presentar reportes periódicos de las actividades desarrolladas en la
Subdirección de Servicios Administrativos
1.4.1. Área de desarrollo de software
El área de desarrollo del Centro de Computo del ITC, tiene definidas sus funciones
para la creación de sistemas de información, el mantenimiento de estos sistemas y la
explotación de los recursos computacionales con que cuenta el departamento, los que
son orientados a la satisfacción de necesidades de información tanto interna como
externa que lo soliciten.
13
1.4.2. En forma interna:
Contribuyendo con el procesamiento de información actualizada para la toma de
decisiones
Mejorando y simplificando la función administrativa de las instituciones para la
implementación de sistemas de información.
Proveer información ágil y oportuna para el logro de los objetivos fijados por la
planeación
Haciendo más eficiente el desempeño de los distintos departamentos que hagan
uso de los sistemas de información diseñados.
Promoviendo cursos tanto institucionales como externos, basados en los
recursos computacionales, técnicos y materiales existentes que provoque
ingresos al departamento y al instituto.
Proporcionando soporte técnico a las carreras impartidas en la institución que
hagan uso de los recursos computacionales existentes.
1.4.3. En forma externa:
Con servicios dirigidos a instituciones y organismos privados y particulares que lo
soliciten, orientándolos de acuerdo a las necesidades requeridas que pueden ser:
Desarrollo de sistemas de información
Capacitación en el manejo tanto de sistemas de información, como en sistemas
operativos.
Mantenimiento a los sistemas creados, en dominio de los organismos e
instituciones privadas y particulares.
Cursos para la explotación de paquetería especifica.
El personal integrante del área de desarrollo debe estar constituida por:
Coordinador de área de desarrollo.
Analista de Sistemas.
Programadores.
14
1.4.4. Coordinador del área de desarrollo
Una vez autorizada la generación del sistema de información y acordado el tiempo
aproximado de dicha realización, el coordinador del área de desarrollo atrae la
información suficiente sobre las necesidades a satisfacer (insumo básico para la
generación del sistema de información), expuesta por cada uno de los departamentos
solicitantes
Lleva a cabo el análisis de la información obtenida y se organiza con los fines de
modularizarla y hacer posible su automatización.
Tales módulos de procesamiento de información deben ser delimitados por la función
administrativa que controlan, para una mejor y más clara explotación, ya que cada
módulo, puede estar formado por una indeterminada cantidad de submodulos de
procesamiento de información, como aplicaciones tenga la función administrativa que
se procesa y que son parte integral del sistema.
De la misma forma, las siguientes divisiones a partir de este punto llegaran a la
profundidad del manejo de información por campos.
1.4.5. Analistas y Programadores
El análisis y la programación de los módulos descritos son verdaderamente extensos,
por lo que, la implantación de un sistema de información debe ser meticulosamente
tratado, y esto habla de la cantidad de tiempo y recursos tanto humanos, como
materiales que están implicados, pues una vez elaborada una parte de un submodulo
debe ser probada, esto implica la generación de archivos ficticios y consuma de más
tiempo.
Cuando los sistemas de información son orientados a la satisfacción institucional, se
debe utilizar la metodología institucional estandarizada, que involucra los límites
respecto a permisos de acceso a la información por cada departamento y por cada
usuario.
15
No así cuando tales sistemas estén orientados a satisfacer las necesidades de
organismos privados o particulares, que en cuyo caso serán estos los que propongan la
metodología adecuada en cada aplicación.
El mantenimiento de los sistemas de información generados en esta institución y
orientado a particulares, seguirá la misma secuencia descrita para su realización.
16
2. Justificación del Proyecto
Hoy en día las actividades que realizan las computadoras y las aplicaciones con que
cuentan son imprescindibles en cualquier organización y no solo porque simplifica el
trabajo de las personas, si no porque se ahorran recursos, son más rápidos y los
errores son casi nulos.
2.1. Programa de Trabajo Anual(PTA) y Programa Operativo
Anual(POA)
Para responder a los cambios que se presentan en el ambiente de la institución, tanto a
nivel de usuarios como de las necesidades en las aplicaciones, se ha solicitado realizar
una aplicación web para el proceso PTA y POA.
Actualmente existe una aplicación de escritorio la cual cuenta con la siguiente
problemática.
Insegura dado que para el acceso a la información se tiene que dejar un puerto
abierto.
Poco intuitiva en el modo de búsqueda de información así como de captura,
dificultad en las actualizaciones del sistemas.
Interfaz poco amigable para el usuario.
Para su funcionamiento es necesario cumplir con más de un requisito que es: tener la
maquina virtual de java, la cual si no se tiene sé debe de descargar de la página oficial
de java (www.java.com), el tiempo de descarga dependerá de la conexión de internet,
otro requisito es tener la aplicación en la computadora, si no es así se tiene que
descargar.
17
En caso de haber una actualización al sistema es necesaria volver a descargar la
aplicación y dependiendo de la tasa de transferencia de la red en horas pico se hace
muy lento la descarga de la misma.
No forma parte del Sistema Integral de Información con el que cuenta el Instituto
Tecnológico de Celaya, ya que ese software fue proporcionado por la Dirección
General de Educación Superior Tecnológica.
2.2. Objetivos Generales
Brindar al Instituto Tecnológico de Celaya una herramienta que permite planear,
programar, presupuestar, ejecutar, controlar y reportar las actividades y acciones
necesarias para el cumplimiento de los programas de desarrollo, con un enfoque
integral.
2.3. Objetivos Específicos
Emitir los documentos para el cumplimiento de las normas de calidad
establecidas, emitiendo los formatos oficiales, así como formatos diseñados
según las necesidades ITC.
Manejo de reglas que permitirán un mejor control de información.
Un sistema que involucre a la Institución en el proceso de Planeación de una
forma sencilla, ágil, flexible e integral.
Partir de las metas de los programas de desarrollo a mediano y largo plazo.
Permitir establecer estrategias, programas y presupuestales acciones generales
y particulares para el cumplimiento de las metas de los programas de desarrollo.
2.4. Problemas a resolver
Actualización de herramientas de desarrollo.
Se reducira el tiempo de respuesta a las solicitudes.
Se reducira el tiempo que se tardan en generar los reportes.
Se reducira el tiempo que se tarda en capturar la información.
Se integrado como módulo al Sistema Integral de Información.
18
La interfaz sera mas intuitiva para facilitar su uso.
Las búsquedas se realizaran en una forma adecuada y ordenada.
2.5. Alcances
Se integrará la aplicación al sistema integral de información.
Contara con una interfaz agradable e intuitiva.
La accesibilidad de la aplicación se hará por medio de un navegador web.
La información estará disponible en cualquier momento y desde cualquier lugar.
El sistema tendrá una buena aceptación por parte de los usuarios ya que estos
serán involucrados en el desarrollo de la aplicación como concejales en la
creación de la interfaz.
Tendrá un mejor control en la seguridad de la información, garantizando que la
información que captura cada usuario sea la correcta .
Facilitará el mantenimiento de la aplicación por su forma de desarrollo.
Facilitará la escalabilidad de la aplicación,por la facilidad de agregar módulos en
el proyecto.
Facilitar la obtención de la información por medio de búsquedas más inteligentes
y agiles.
2.6. Limitaciones del sistema
Para dar mantenimiento al sistema, es necesario personal que tenga
conocimiento en el software empleado como en este caso se utilizó el framework
Symfony 1.4.
Para visualizar los reportes es necesario contar con el programa Adobe Acrobat
Reader en la maquina cliente, así como un navegaron.
El servido deberá contar con una versión de php mayor o igual a 5.2.4.
Las versiones de Symfony pueden variar en diversas funciones, por lo que se
sugiere leer la documentación de la versión que se va utilizar en el proyecto.
Los nombres de las tablas y columnas de la base de datos debe de ser en
minúsculas.
19
3. Capítulo Marco teórico
3.1. Aplicación web
Con la aparición de una red tan compleja como lo es internet, ahora se tiene un
incontable número de posibilidades en el acceso a la información desde diferentes
lugares del mundo, inclusive fuera del mismo. Todo se convierte en un reto para los
creadores de aplicaciones para que permitan hacer esto, ya que los avances en la
tecnología cada vez aumentan de una manera impresionante, haciendo una necesidad
la creación de aplicaciones más rápidas, ligeras y robustas que permitan utilizar el
Web.
El campo para el Desarrollo de aplicaciones Web es:
Muy amplio
Evoluciona rápidamente
Gran cantidad de tecnologías y alternativas
A continuación se tratará de explicar a grandes rasgos la arquitectura de las
aplicaciones Web.
3.1.1.Antecedentes Web
Tim Berners-Lee crea el primer navegador de que funcionaría en modo texto y para
UNIX. Dando lugar al lenguaje HyperText Markup Language o Lenguaje de Marcas de
Hipertexto (HTML) y al protocolo HyperText Transfer Protocol o Protocolo de
Transferencia de Hipertexto (HTTP).
3.1.2. El Servidor Web
Un servidor Web es un programa que está sobre el servidor que escucha las peticiones
HTTP. Este protocolo pertenece a la capa de aplicación en el modelo OSI. Su función
20
CLIENTE
¿Procesa-miento?
Servidor de Páginas Servidor de Aplicación
SINO
Generar Página
Envía datos al usuarioEjecuta Programa o Script
Petición
es transferir el hipertexto, páginas web o simplemente páginas HTML, no importando el
tipo de petición que realice el cliente, siempre devolverá un resultado HTML. Este tipo
de servidores siempre será fundamental en el desarrollo de las aplicaciones del lado
del servidor (server side applications), ya que se ejecutarán sobre él.
En un servidor Web se deben identificar dos partes fundamentales, la parte de servidor
de páginas y la otra el servidor de aplicaciones. Diremos que para definir la parte de
servidor de páginas, nos referimos a cuando un cliente hace una petición de una
página estática que no requiere el uso de una aplicación. A diferencia de un servidor de
páginas, el de aplicaciones requiere hacer una ejecución del script relacionado con la
petición, para generar una página Web, que será transmitida al cliente por el servidor
de páginas.
21
Imagen 3. 1: Funcionamiento de un Servidor Web.
Las aplicaciones Web, también cuentan con dos partes, las tecnologías Lado del
Servidor (Server-Side) y Lado del Cliente (Client- Side). Las tecnologías del Lado del
Servidor son secciones de código dentro de una página Web, que al ejecutarse lo
hacen sobre el servidor, y solo pueden ser vistas desde el servidor. Está tecnología
proporciona soporte para el acceso a bases de datos, que es muy importante en
cualquier aplicación que implique un proceso. Las tecnologías del Lado del Cliente, son
ejecutadas sobre la máquina del cliente dentro de su navegador web que es el
encargado de interpretar este código ó script. Estas dos partes nos dan como resultado
una página dinámica o bien una aplicación Web.
3.2. Servidor Web Apache
3.2.1. ¿Qué es el Servidor Apache
El proyecto apache es un esfuerzo de desarrollo de software en colaboración destinado
a crear un servidor HTTP (servidor Web) robusto, potente, disponible en todas las
plataformas, gratuito y con disponibilidad de su código fuente. El proyecto es
administrado conjuntamente por un grupo de voluntarios en todo el mundo, con el uso
de Internet y la web para comunicarse, planear y desarrollar el servidor y su
documentación.
Estos voluntarios son conocidos como el Grupo Apache. Además, cientos de usuarios
han aportado ideas, código y documentación para el proyecto. Este texto describe de
manera resumida la historia del Grupo Apache, reconociendo su labor y mencionar que
cualquiera puede unirse a esta labor.
Una de las principales características que presenta Apache es que funciona en
plataformas virtuales muy utilizadas. Al principio, Apache se utilizaba para ser el primer
servidor Web basado en Unix, pero esto ya no es verdad. Apache no solo funciona en
la mayoría (prácticamente en todas) de las versiones de Unix sino que, además,
funciona en Windows 2000/NT/9x y en muchos otros sistemas operativos de escritorio
y de tipo servidor como son Amiga OS 3.x y OS/2.
22
3.2.2. Características de Apache
Apache es uno de los mejores servidores de Webs utilizados en la red internet
desde hace mucho tiempo, únicamente le hace competencia un servidor de Microsoft,
el IIS. Por lo que este servidor es uno de los mayores triunfos del software libre, que
tanto gusta a los usuarios de LINUX.
Apache es un servidor web flexible, rápido y eficiente, continuamente actualizado y
adaptado a los nuevos protocolos (HTTP 1.1). Entre sus características destacan :
Multiplataforma.
Es un servidor de web conforme al protocolo HTTP/1.1.
Modular: Puede ser adaptado a diferentes entornos y necesidades, con los
diferentes módulos de apoyo que proporciona, y con la API de programación de
módulos, para el desarrollo de módulos específicos.
Basado en hilos en la versión 2.0.
Incentiva la realimentación de los usuarios, obteniendo nuevas ideas, informes
de fallos y actualizaciones para la solución de los mismos.
Se desarrolla de forma abierta.
Extensible: gracias a ser modular se han desarrollado diversas extensiones
entre las que destaca PHP, un lenguaje de programación del lado del servidor.
3.3. Postgresql
3.3.1.¿Qué es PostgreSQL?
PostgreSQL es un sistema de base de datos de gestión de objeto-relacional
(ORDBMS) basado en Postgres, versión 4.2, desarrollado en la Universidad de
California en Berkeley del Departamento de Ciencias de la Computación. Postgres fue
pionera en muchos conceptos que sólo estuvo disponible en algunos sistemas de
bases de datos comerciales mucho más tarde.
23
En 1986 otro equipo dirigido por Michael Stonebraker de Berkeley continuó el
desarrollo del código de Ingres para crear un sistema de bases de datos objeto-
relacionales llamado Postgresql. En 1996, debido a un nuevo esfuerzo de código
abierto y a la incrementada funcionalidad del software, Postgresql fue renombrado a
PostgreSQL, tras un breve tiempo como Postgres95. El proyecto PostgreSQL sigue
actualmente un activo proceso de desarrollo a nivel mundial gracias a un equipo de
desarrolladores y contribuidores de código abierto.
PostgreSQL está ampliamente considerado como el sistema de bases de datos de
código abierto más avanzado del mundo. Posee muchas características que
tradicionalmente sólo se podían ver en productos comerciales de alto calibre.
3.3.2.Características de PostgreSQL
PostgreSQL proporciona un gran número de características que normalmente sólo se
encontraban en las bases de datos comerciales tales como DB2 u Oracle. La siguiente
es una breve lista de algunas de esas características, a partir de PostgreSQL 7.1.x.
DBMS Objeto-Relacional: PostgreSQL aproxima los datos a un modelo objeto-
relacional, y es capaz de manejar complejas rutinas y reglas. Ejemplos de su avanzada
funcionalidad son consultas SQL declarativas, control de concurrencia, multi-versión,
soporte multi-usuario, transacciones, optimización de consultas, herencia, y arrays
(arreglos).
Altamente Extensible: PostgreSQL soporta operadores, funciones métodos de acceso
y tipos de datos definidos por el usuario.
Soporte SQL Comprensivo: PostgreSQL soporta la especificación SQL99 e incluye
características avanzadas tales como los joins (uniones) SQL92.
Integridad Referencial: PostgreSQL soporta integridad referencial, la cual es utilizada
para garantizar la validez de los datos de la base de datos.
24
API Flexible: La flexibilidad del API de PostgreSQL ha permitido a los vendedores
proporcionar soporte al desarrollo fácilmente para el RDBMS PostgreSQL. Estas
interfaces incluyen Object Pascal, Python, Perl, PHP, ODBC, Java/JDBC, Ruby, TCL,
C/C++, y Pike.
Lenguajes Procedurales: PostgreSQL tiene soporte para lenguajes procedurales
internos, incluyendo un lenguaje nativo denominado PL/pgSQL. Este lenguaje es
comparable al lenguaje procedural de Oracle, PL/SQL. Otra ventaja de PostgreSQL es
su habilidad para usar Perl, Python, o TCL como lenguaje procedural embebido.
Cliente/Servidor: PostgreSQL usa una arquitectura proceso-por-usuario
cliente/servidor. Ésta es similar al método del Apache 1.3.x para manejar procesos.
Hay un proceso maestro que se ramifica para proporcionar conexiones adicionales
para cada cliente que intente conectar a PostgreSQL.
3.4. Apache tomcat
3.4.1.¿Qué es Tomcat?
Tomcat es la implementación de referencia oficial de la especificación Java Servlet 2.2
y JavaServer Pages 1.1 tecnologías. Desarrollado bajo la licencia Apache en un
entorno abierto y participativo, que pretende ser una colaboración del de su clase
mejores desarrolladores de todo el mundo.
3.4.2.¿Dónde puedo descargar Tomcat?
En la página de descarga de Yakarta !
3.4.3.¿Cuáles son los servlets?,¿Cuáles son las páginas JSP?
En pocas palabras, los servlets Java son programas residentes en memoria, se ejecuta
dentro de un contenedor de servlets (por ejemplo, Tomcat!). Debido a que son
residentes en la memoria, que puede responder rápidamente a las solicitudes, ya que
25
no incurren en los gastos generales de la creación de procesos y la limpieza posterior,
a diferencia basada en secuencias de comandos CGI, por ejemplo, perl, etc
Desde servlet sitio The Sun :
"El Java Servlet API TM proporciona a los desarrolladores web con una, en
consonancia simple mecanismo para extender la funcionalidad de un servidor web y
para acceder a los sistemas empresariales existentes. Un servlet casi se puede
considerar como un applet que se ejecuta en el lado del servidor - sin cara ".
"La tecnología JSP es una extensión de la tecnología servlet creado para apoyar
creación de páginas HTML y XML. Es más fácil combinar la plantilla fija o estática de
datos con contenido dinámico."
JSP es comparable a otras tecnologías como PHP y ASP, que combinan la
programación y secuencias de comandos con un lenguaje de marcado como HTML. La
diferencia clave es el lenguaje de programación de la opción.. Por ejemplo, PHP usa
una C / C + + / híbrida Java, ASP utiliza VBScript, y JSP utiliza toda la potencia del
lenguaje de programación Java. Ha habido muchas comparaciones de estas
tecnologías, y cada uno tiene su lugar en la astucia de desarrolladores de la caja de
herramientas.
3.5. IREPORT
3.5.1. ¿Qué es iReport?
La herramienta iReport es un constructor / diseñador de informes visual, poderoso,
intuitivo y fácil de usar para JasperReports escrito en Java. Este instrumento permite
que los usuarios corrijan visualmente informes complejos con cartas, imágenes,
subinformes, etc. iReport está además integrado con JFreeChart, una de la biblioteca
gráficas OpenSource más difundida para Java. Los datos para imprimir pueden ser
recuperados por varios caminos incluso múltiples uniones JDBC, TableModels,
JavaBeans, XML, etc. iReport le permite a ingenieros que apenas están aprendiendo
26
esta tecnología acceder a las funciones de JasperReports así como también ayuda a
usuarios capacitados a ahorrar mucho tiempo durante el desarrollo de reportes muy
elaborados.
3.5.2.Características de iReport
La siguiente lista describe algunas de las características más importantes de iReport:
Soporte al 100% de etiquetas XML de JasperReports.
Editor WYSIWYG para la creación de reportes. Contiene herramientas
completas para dibujar rectángulos, líneas elipses, campos de texto, etiquetas,
graficas, sub-reportes y código de barras.
Editor incorporado con acentuó de sintaxis para expresiones escritas.
Soporte par Unicode y lenguajes non-Latin ( Ruso, Chino, Japonés, Coreano,
etc.)
Navegador para la estructura del documento
Compilador, llenador, y exportador de reportes integrados.
Soporte para todas las bases de datos accesibles para JDBC.
Soporte virtual para todo tipo de fuente de datos.
Asistente para crear informes de forma automática
Soporte para subreportes.
Característica de respaldo para archivos fuente.
Soporte para plantillas de documentos.
Soporte para fuentes TrueType
Soporte para localización.
Extensibilidad a través de plug-ins.
Soporte integrado para scriptlets.
Soporte para gráficas.
Manejo de una librería de objetos estándares. (ej, número de páginas).
Funcionalidades de Arrastrar y soltar.
Deshacer/ repetir ilimitados.
Asistente para crear tablas de contingencia.
27
Librería de Estilos.
Sistema de acoplamiento.
3.6. JavaScript (Jquery y Jquery UI)
3.6.1.¿Qué es Jquery?
Jquery v1.4.2 es una rápida y concisa que simplifica la Biblioteca Javascript documento
HTML que atraviesa, el control de eventos, animación, y las interacciones Ajax para el
desarrollo web rápido. JQuery está diseñado para cambiar la forma en que escribes
JavaScript.
3.6.2. Ventajas en usar Jquery
Existen varias soluciones similares que también funcionan muy bien, que básicamente
nos sirven para hacer lo mismo. Como es normal, cada uno de los frameworks tiene
sus ventajas e inconvenientes, pero jQuery es un producto con una aceptación por
parte de los programadores muy buena y un grado de penetración en el mercado muy
amplio, lo que hace suponer que es una de las mejores opciones. Además, es un
producto serio, estable, bien documentado y con un gran equipo de desarrolladores a
cargo de la mejora y actualización del framework. Otra cosa muy interesante es la
dilatada comunidad de creadores de plugins o componentes, lo que hace fácil
encontrar soluciones ya creadas en jQuery para implementar asuntos como interfaces
de usuario, galerías, votaciones, efectos diversos, etc.
3.7. ¿Qué es JQuery UI?
jQuery UI proporciona abstracciones de bajo nivel de interacción y animación, efectos
avanzados y de alto nivel, los widgets temable, construido en la parte superior de la
jQuery JavaScript Library, que puede utilizar para construir aplicaciones web altamente
interactivas.
3.7.1. Ventajas en usar JQuery UI
28
Facilidad en la creación de interfaces de alto nivel de interacción y animación,
facilitando el uso de la aplicación.
Fácil implementación en el desarrollo
Gran ahorro de tiempo en el desarrollo
Cuenta con una licencia GPL y MIT
3.8. PHP
3.8.1.¿Qué es PHP?
PHP, acrónimo de "PHP: Hypertext Preprocessor", es un lenguaje "Open Source"
interpretado de alto nivel, especialmente pensado para desarrollos web y el cual puede
ser incrustado en páginas HTML. La mayoría de su sintaxis es similar a C, Java y Perl y
es fácil de aprender. La meta de este lenguaje es permitir escribir a los creadores de
páginas web, páginas dinámicas de una manera rápida y sencilla, aunque se puede
hacer mucho más con PHP.
En lugar de usar muchos comandos para mostrar HTML, páginas PHP contienen HTML
con código incluido en el mismo que hace "algo" (en este caso, mostrar "Hola ¡soy un
script PHP!). El código PHP está entre medio de etiquetas de comienzo y final
especiales<? php y ?> que nos permitirán entrar y salir del "modo PHP".
Lo que distingue a PHP de algo como Javascript del lado-cliente, es que el código es
ejecutado en el servidor, generando HTML y enviándolo al cliente. El cliente recibirá los
resultados de ejecutar el script, sin ninguna posibilidad de determinar qué código ha
producido el resultado recibido. El servidor web puede ser incluso configurado para que
procese todos los archivos HTML con PHP y entonces no hay manera que los usuarios
puedan saber que tienes debajo de la manga.
Lo mejor de usar PHP es que es extremadamente simple para el principiante, pero a su
vez, ofrece muchas características avanzadas para los programadores profesionales.
29
Aunque el desarrollo de PHP está centrado en programación de scripts en lado-
servidor, se puede utilizar para muchas otras cosas.
3.8.2.¿Qué se puede hacer con PHP?
PHP puede hacer cualquier cosa que se pueda hacer con un script CGI, como procesar
la información de formularios, generar páginas con contenidos dinámicos, o enviar y
recibir cookies. Y esto no es todo, se puede hacer mucho más.
Existen principalmente tres campos en los que se usan scripts en PHP.
Scripts del lado-servidor. Este es el campo más tradicional y el principal foco
de trabajo. Se necesitan tres cosas para que esto funcione. El intérprete PHP
(CGI módulo), un servidor web y un navegador. Es necesario hacer funcionar el
servidor, con PHP instalado. El resultado del programa PHP se puede obtener a
través del navegador, conectándose con el servidor web. Consultar la sección
Instrucciones de instalación para más información.
Scripts en la línea de comandos. Puede crear un script PHP y correrlo sin
necesidad de un servidor web o navegador. Solamente necesita el intérprete
PHP para usarlo de esta manera. Este tipo de uso es ideal para scripts
ejecutados regularmente desde cron (en *nix o Linux) o el Planificador de tareas
(en Windows). Estos scripts también pueden ser usados para tareas simples de
procesamiento de texto. Consultar la sección Usos de PHP en la línea de
comandos para más información.
Escribir aplicaciones de interfaz gráfica. Probablemente PHP no sea el
lenguaje más apropiado para escribir aplicaciones gráficas, pero si conoce bien
PHP, y quisiera utilizar algunas características avanzadas en programas
clientes, puede utilizar PHP-GTK para escribir dichos programas. También es
posible escribir aplicaciones independientes de una plataforma. PHP-GTK es
una extensión de PHP, no disponible en la distribución principal. Si está
interesado en PHP-GTK, puedes visitar las » páginas web del proyecto.
30
3.8.3. Ventajas de PHP
Las cuatro grandes características: Velocidad, estabilidad, seguridad y simplicidad.
Velocidad: No solo la velocidad de ejecución, la cual es importante, sino además no
crear demoras en la máquina. Por esta razón no debe requerir demasiados recursos de
sistema. PHP se integra muy bien junto a otro software, especialmente bajo ambientes
Unix, cuando se configura como módulo de Apache, está listo para ser utilizado.
Estabilidad: La velocidad no sirve de mucho si el sistema se cae cada cierta cantidad
de ejecuciones. Ninguna aplicación es 100% libre de bugs, pero teniendo de respaldo
una increíble comunidad de programadores y usuarios es mucho más difícil para lo
bugs sobrevivir. PHP utiliza su propio sistema de administración de recursos y dispone
de un sofisticado método de manejo de variables, conformando un sistema robusto y
estable.
Seguridad: El sistema debe poseer protecciones contra ataques. PHP provee
diferentes niveles de seguridad, estos pueden ser configurados desde el archivo .ini
Simplicidad: Se les debe permitir a los programadores generar código
productivamente en el menor tiempo posible. Usuarios con experiencia en C y C++
podrán utilizar PHP rápidamente.
Otra característica a tener en cuenta seria la conectividad. PHP dispone de una amplia
gama de librerías, y agregarle extensiones es muy fácil. Esto le permite al PHP ser
utilizado en muchas áreas diferentes, tales como encriptado, gráficos, XML y otras.
3.8.4.Ventajas adicionales de PHP
PHP corre en (casi) cualquier plataforma utilizando el mismo código fuente,
pudiendo ser compilado y ejecutado en algo así como 25 plataformas,
incluyendo diferentes versiones de Unix, Windows
(95,98,NT,ME,2000,XP,bla,bla,bla) y Macs. Como en todos los sistemas se
31
utiliza el mismo código base, los scripts pueden ser ejecutados de manera
independiente al OS.
La sintaxis de PHP es similar a la del C, por esto cualquiera con experiencia en
lenguajes del estilo C podrá entender rápidamente PHP. Entre los lenguajes del
tipo C incluimos al Java y Javascript, de hecho mucha de la funcionalidad del
PHP se la debe al C en funciones como fread() o srtlen(), así que muchos
programadores se sentirán como en casa.
PHP es completamente expandible. Está compuesto de un sistema principal
(escrito por Zend), un conjunto de módulos y una variedad de extensiones de
código.
Muchas interfaces distintas para cada tipo de servidor. PHP actualmente se
puede ejecutar bajo Apache, IIS, AOLServer, Roxen yTHTTPD. Otra alternativa
es configurarlo como modulo CGI.
Puede interactuar con muchos motores de bases de datos tales como MySQL,
MS SQL, Oracle, Informix, PostgreSQL, y otros muchos. Siempre podrás
disponer de ODBC para situaciones que lo requieran.
Una gran variedad de módulos cuando un programador PHP necesite una
interfaz para una librería en particular, fácilmente podrá crear una API para esta.
Algunas de las que ya vienen implementadas permiten manejo de gráficos,
archivos PDF, Flash, Cybercash, calendarios, XML, IMAP, POP, etc.
Rapidez. PHP generalmente es utilizado como modulo de Apache, lo que lo
hace extremadamente veloz. Esta completamente escrito en C, así que se
ejecuta rápidamente utilizando poca memoria.
PHP es Open Source, lo cual significa que el usuario no depende de una
compañía específica para arreglar cosas que no funcionan, además no estás
forzado a pagar actualizaciones anuales para tener una versión que funcione.
32
3.9. Symfony
3.9.1. Symfony en pocas palabras
Un framework simplifica el desarrollo de una aplicación mediante la automatización de
algunos de los patrones utilizados para resolver las tareas comunes. Además, un
framework proporciona estructura al código fuente, forzando al desarrollador a crear
código más legible y más fácil de mantener. Por último, un framework facilita la
programación de aplicaciones, ya que encapsula operaciones complejas en
instrucciones sencillas.
Symfony es un completo framework diseñado para optimizar, gracias a sus
características, el desarrollo de las aplicaciones web. Para empezar, separa la lógica
de negocio, la lógica de servidor y la presentación de la aplicación web. Proporciona
varias herramientas y clases encaminadas a reducir el tiempo de desarrollo de una
aplicación web compleja.
Además, automatiza las tareas más comunes, permitiendo al desarrollador dedicarse
por completo a los aspectos específicos de cada aplicación. El resultado de todas estas
ventajas es que no se debe reinventar la rueda cada vez que se crea una nueva
aplicación web.
Symfony está desarrollado completamente con PHP 5. Ha sido probado en numerosos
proyectos reales y se utiliza en sitios web de comercio electrónico de primer nivel.
Symfony es compatible con la mayoría de gestores de bases de datos, como MySQL,
PostgreSQL, Oracle y SQL Server de Microsoft. Se puede ejecutar tanto en
plataformas *nix (Unix, Linux, etc.) como en plataformas Windows. A continuación se
muestran algunas de sus características.
33
3.9.2. Características de Symfony
Symfony se diseñó para que se ajustara a los siguientes requisitos:
Fácil de instalar y configurar en la mayoría de plataformas (y con la garantía de
que funciona correctamente en los sistemas Windows y *nix estándares).
Independiente del sistema gestor de bases de datos.
Sencillo de usar en la mayoría de casos, pero lo suficientemente flexible como
para adaptarse a los casos más complejos.
Basado en la premisa de “convenir en vez de configurar”, en la que el
desarrollador solo debe configurar aquello que no es convencional.
Sigue la mayoría de mejores prácticas y patrones de diseño para la web.
Preparado para aplicaciones empresariales y adaptable a las políticas y
arquitecturas propias de cada empresa, además de ser lo suficientemente
estable como para desarrollar aplicaciones a largo plazo.
Código fácil de leer que incluye comentarios de phpDocumentor y que permite
un mantenimiento muy sencillo.
Fácil de extender, lo que permite su integración con librerías desarrolladas por
terceros.
Automatización de características de proyectos web
Symfony automatiza la mayoría de elementos comunes de los proyectos web, como
por ejemplo:
La capa de internacionalización que incluye Symfony permite la traducción de
los datos y de la interfaz, así como la adaptación local de los contenidos.
La capa de presentación utiliza plantillas y layouts que pueden ser creados por
diseñadores HTML sin ningún tipo de conocimiento del framework. Los helpers
incluidos permiten minimizar el código utilizado en la presentación, ya que
encapsulan grandes bloques de código en llamadas simples a funciones.
34
Los formularios incluyen validación automatizada y relleno automático de datos
(“repopulation”), lo que asegura la obtención de datos correctos y mejora la
experiencia de usuario.
Los datos incluyen mecanismos de escape que permiten una mejor protección
contra los ataques producidos por datos corruptos.
La gestión de la caché reduce el ancho de banda utilizado y la carga del
servidor.
La autenticación y la gestión de credenciales simplifican la creación de
secciones restringidas y la gestión de la seguridad de usuario.
El sistema de enrutamiento y las URL limpias permiten considerar a las
direcciones de las páginas como parte de la interfaz, además de estar
optimizadas para los buscadores.
El soporte de e-mail incluido y la gestión de APIs permiten a las aplicaciones
web interactuar más allá de los navegadores.
Los listados son más fáciles de utilizar debido a la paginación automatizada, el
filtrado y la ordenación de datos.
Los plugins, las factorías (patrón de diseño “Factory”) y los “mixin” permiten
realizar extensiones a medida de Symfony.
Las interacciones con Ajax son muy fáciles de implementar mediante los helpers
que permiten encapsular los efectos JavaScript compatibles con todos los
navegadores en una única línea de código.
3.9.3. Entorno de desarrollo y herramientas
Symfony puede ser completamente personalizado para cumplir con los requisitos de las
empresas que disponen de sus propias políticas y reglas para la gestión de proyectos y
la programación de aplicaciones. Por defecto incorpora varios entornos de desarrollo
diferentes e incluye varias herramientas que permiten automatizar las tareas más
comunes de la ingeniería del software:
35
Las herramientas que generan automáticamente código han sido diseñadas para
hacer prototipos de aplicaciones y para crear fácilmente la parte de gestión de
las aplicaciones.
El framework de desarrollo de pruebas unitarias y funcionales proporciona las
herramientas ideales para el desarrollo basado en pruebas (“test-driven
development”).
La barra de depuración web simplifica la depuración de las aplicaciones, ya que
muestra toda la información que los programadores necesitan sobre la página en
la que están trabajando.
La interfaz de línea de comandos automatiza la instalación de las aplicaciones
entre servidores.
Es posible realizar cambios “en caliente” de la configuración (sin necesidad de
reiniciar el servidor).
El completo sistema de log permite a los administradores acceder hasta el último
detalle de las actividades que realiza la aplicación.
3.9.4.¿Quién ha desarrollado Symfony y por qué motivo?
La primera versión de Symfony fue publicada en Octubre de 2005 por Fabien
Potencier, fundador del proyecto y coautor de este libro. Fabien es el presidente de
Sensio (http://www.sensio.com/), una empresa francesa de desarrollo de aplicaciones
web conocida por sus innovaciones en este campo.
En el año 2003, Fabien realizó una investigación sobre las herramientas de software
libre disponibles para el desarrollo de aplicaciones web con PHP. Fabien llegó a la
conclusión de que no existía ninguna herramienta con esas características. Después
del lanzamiento de la versión 5 de PHP, decidió que las herramientas disponibles
habían alcanzado un grado de madurez suficiente como para integrarlas en un
framework completo. Fabien empleó un año entero para desarrollar el núcleo de
Symfony, basando su trabajo en el framework Mojavi (que también era un framework
que seguía el funcionamiento MVC), en la herramienta Propel para el mapeo de objetos
36
a bases de datos (conocido como ORM, de “object-relational mapping”) y en los helpers
empleados por Ruby on Rails en sus plantillas.
Fabien desarrolló originalmente Symfony para utilizarlo en los proyectos de Sensio, ya
que disponer de un framework efectivo es la mejor ayuda para el desarrollo eficiente y
rápido de las aplicaciones. Además, el desarrollo web se hace más intuitivo y las
aplicaciones resultantes son más robustas y más fáciles de mantener. El framework se
utilizó por primera vez en el desarrollo de un sitio de comercio electrónico para un
vendedor de lencería y posteriormente se utilizó en otros proyectos.
Después de utilizar Symfony en algunos proyectos, Fabien decidió publicarlo bajo una
licencia de software libre. Sus razones para liberar el proyecto fueron para donar su
trabajo a la comunidad, aprovechar la respuesta de los usuarios, mostrar la experiencia
de Sensio y porque considera que es divertido hacerlo.
NOTA
¿Por qué lo llamaron “Symfony” y no “CualquierNombreFramework”? Porque Fabien
quería una nombre corto que tuviera una letra ‘s’ (de Sensio) y una letra ‘f’ (de
framework), que fuera fácil de recordar y que no estuviera asociado a otra herramienta
de desarrollo. Además, no le gustan las mayúsculas. “Symfony” era muy parecido a lo
que estaba buscando, aunque no es una palabra correcta en el idioma inglés (la
palabra correcta es “symphony”), y además estaba libre como nombre de proyecto. La
otra alternativa era “baguette”.
Para que Symfony fuera un proyecto de software libre exitoso, debía tener una
documentación amplia y en inglés, para aumentar la incorporación de usuarios al
proyecto. Fabien pidió a su compañero de trabajo François Zaninotto, el otro coautor de
este libro, que investigara el código fuente del programa y escribiera un libro sobre
Symfony. Aunque el proceso fue arduo, cuando el proyecto se lanzó públicamente, la
documentación era suficiente como para atraer a muchos desarrolladores. El resto es
historia.
37
3.9.5. Conceptos básicos
Antes de empezar con Symfony, deberías conocer algunos conceptos básicos. Puedes
saltarte esta sección si conoces el significado de OOP, ORM, RAD, DRY, KISS, TDD,
YAML y PEAR.
3.9.6. Programación Orientada a Objetos (OOP)
La programación orientada a objetos (OOP, por sus siglas en inglés Object-oriented
programming) no va a ser explicada en este capítulo, ya que se necesitaría un libro
entero para ello. Como Symfony hace un uso continuo de los mecanismos orientados a
objetos disponibles en PHP 5, es un requisito obligatorio el conocer la OOP antes de
aprender Symfony.
En la Wikipedia se explica la OOP de la siguiente manera: “ La idea de la programación
orientada a objetos es que una aplicación se puede considerar como una colección de
unidades individuales, llamadas objetos, que interactúan entre sí. Los programas
tradicionales pueden considerarse como una colección de funciones o como una lista
de instrucciones de programación.”
PHP 5 incluye los conceptos de clase, objeto, método, herencia y muchos otros propios
de la programación orientada a objetos. Aquellos que no estén familiarizados con estos
conceptos, deberían consultar la documentación oficial de PHP disponible en
http://www.php.net/manual/es/language.oop5.basic.php.
3.9.7. Métodos mágicos
Uno de los puntos fuertes de los objetos de PHP es la utilización de los “métodos
mágicos”.
Este tipo de métodos permiten redefinir el comportamiento de las clases sin modificar el
código externo. Con estos métodos es posible que la sintaxis de PHP sea más concisa
y más fácil de extender. Además, estos métodos son fáciles de reconocer ya que sus
nombres siempre empiezan con 2 guiones bajos seguidos (__).
38
Por ejemplo, al mostrar un objeto, PHP busca de forma implícita un método llamado
toString(), el cual permite comprobar si se ha creado una visualización personalizada.
Como se muestra en el siguiente ejemplo.
$miObjeto = new miClase();
echo $miObjeto;
// Se busca el método mágico
echo $miObjeto->__toString();
Symfony utiliza los métodos mágicos de PHP, por lo que deberías conocer su
funcionamiento.
La documentación oficial de PHP también explica los métodos mágicos
(http://www.php.net/manual/es/language.oop5.magic.php).
3.9.8. PEAR (PHP Extension and Application Repository)
PEAR es un “framework y sistema de distribución para componentes PHP
reutilizables”.
PEAR permite descargar, instalar, actualizar y desinstalar scripts de PHP. Si se utiliza
un paquete de PEAR, no es necesario decidir donde guardar los scripts, cómo hacer
que se puedan utilizar o cómo extender la línea de comandos (CLI).
PEAR es un proyecto creado por la comunidad de usuarios de PHP, está desarrollado
con PHP y se incluye en las distribuciones estándar de PHP.
SUGERENCIA
El sitio web de PEAR, http://pear.php.net/, incluye documentación y muchos paquetes
agrupados en categorías.
39
PEAR es el método más profesional para instalar librerías externas en PHP. Symfony
aconseja el uso de PEAR para disponer de una instalación única y centralizada que
pueda ser utilizada en varios proyectos. Los plugins de Symfony son paquetes de
PEAR con una configuración especial. El propio framework Symfony también está
disponible como paquete de PEAR.
Afortunadamente, no es necesario conocer la sintaxis de PEAR para utilizar Symfony.
Lo único necesario es entender su funcionamiento y tenerlo instalado. Para comprobar
si PEAR está instalado en el sistema, se puede escribir lo siguiente en una línea de
comandos:
> pear info pear
El comando anterior muestra la versión de PEAR instalada en el sistema.
El proyecto Symfony dispone de su propio repositorio PEAR, también llamado canal.
Los canales de PEAR solamente se pueden utilizar a partir de la versión 1.4.0, por lo
que es necesario actualizar PEAR si se dispone de una versión anterior. Para
actualizar PEAR, se debe ejecutar el siguiente comando:
> pear upgrade PEAR
3.9.9. Mapeo de Objetos a Bases de datos (ORM)
Las bases de datos siguen una estructura relacional. PHP 5 y Symfony por el contrario
son orientados a objetos. Por este motivo, para acceder a la base de datos como si
fuera orientada a objetos, es necesario una interfaz que traduzca la lógica de los
objetos a la lógica relacional. Esta interfaz se denomina “mapeo de objetos a bases de
datos” (ORM, de sus siglas en inglés “object-relational mapping”).
Un ORM consiste en una serie de objetos que permiten acceder a los datos y que
contienen en su interior cierta lógica de negocio.
40
Una de las ventajas de utilizar estas capas de abstracción de objetos/relacional es que
evita utilizar una sintaxis específica de un sistema de bases de datos concreto. Esta
capa transforma automáticamente las llamadas a los objetos en consultas SQL
optimizadas para el sistema gestor de bases de datos que se está utilizando en cada
momento.
De esta forma, es muy sencillo cambiar a otro sistema de bases de datos
completamente diferente en mitad del desarrollo de un proyecto. Estas técnicas son
útiles por ejemplo cuando se debe desarrollar un prototipo rápido de una aplicación y el
cliente aun no ha decidido el sistema de bases de datos que más le conviene. El
prototipo se puede realizar utilizando SQLite y después se puede cambiar fácilmente a
MySQL, PostgreSQL u Oracle cuando el cliente se haya decidido. El cambio se puede
realizar modificando solamente una línea en un archivo de configuración.
La capa de abstracción utilizada encapsula toda la lógica de los datos. El resto de la
aplicación no tiene que preocuparse por las consultas SQL y el código SQL que se
encarga del acceso a la base de datos es fácil de encontrar. Los desarrolladores
especializados en la programación con bases de datos pueden localizar fácilmente el
código.
Utilizar objetos en vez de registros y clases en vez de tablas tiene otra ventaja: se
pueden definir nuevos métodos de acceso a las tablas. Por ejemplo, si se dispone de
una tabla llamada Cliente con 2 campos, Nombre y Apellido, puede que sea necesario
acceder directamente al nombre completo (NombreCompleto). Con la programación
orientada a objetos, este problema se resuelve añadiendo un nuevo método de acceso
a la clase Cliente de la siguiente forma:
public function getNombreCompleto()
{
return $this->getNombre().' '.$this->getApellido();
}
41
Todas las funciones comunes de acceso a los datos y toda la lógica de negocio
relacionada con los datos se puede mantener dentro de ese tipo de objetos. Por
ejemplo, la siguiente clase CarritoCompra almacena los productos (que son objetos).
Para obtener el precio total de los productos del carrito y así realizar el pago, se puede
añadir un método llamado getTotal() de la siguiente forma:
public function getTotal()
{
$total = 0;
foreach ($this->getProductos() as $producto)
{
$total += $producto->getPrecio() * $item->getCantidad();
}
return $total;
}
Y eso es todo. Imagina cuanto te hubiera costado escribir una consulta SQL que hiciera
lo mismo.
Propel, que también es un proyecto de software libre, es una de las mejores capas de
abstracción de objetos/relacional disponibles en PHP 5. Propel está completamente
integrado en Symfony.La documentación de este ORM se encuentra en el sitio web de
Propel.(http://propel.phpdb.org/trac/).
Se pude usar otros como Doctrine que se verá más adelante.
42
3.9.10. Desarrollo rápido de aplicaciones (RAD)
Durante mucho tiempo, la programación de aplicaciones web fue un tarea tediosa y
muy lenta. Siguiendo los ciclos habituales de la ingeniería del software (como los
propuestos por el Proceso Racional Unificado o Rational Unified Process) el desarrollo
de una aplicación web no puede comenzar hasta que se han establecido por escrito
una serie de requisitos, se han creado los diagramas UML (Unified Modeling Language)
y se ha producido abundante documentación sobre el proyecto. Este modelo se veía
favorecido por la baja velocidad de desarrollo, la falta de versatilidad de los lenguajes
de programación (antes de ejecutar el programa se debe construir, compilar y reiniciar)
y sobre todo por el hecho de que los clientes no estaban dispuestos a adaptarse a
otras metodologías.
Hoy en día, las empresas reaccionan más rápidamente y los clientes cambian de
opinión constantemente durante el desarrollo de los proyectos. De este modo, los
equipos de desarrollo deben adaptarse a esas necesidades y tienen que poder cambiar
la estructura de una aplicación de forma rápida. Afortunadamente, el uso de lenguajes
de script como Perl y PHP permiten seguir otras estrategias de programación, como
RAD (desarrollo rápido de aplicaciones) y el desarrollo ágil de software.
Una de las ideas centrales de esta metodología es que el desarrollo empieza lo antes
posible para que el cliente pueda revisar un prototipo que funciona y pueda indicar el
camino a seguir. A partir de ahí, la aplicación se desarrolla de forma iterativa, en la que
cada nueva versión incorpora nuevas funcionalidades y se desarrolla en un breve
espacio de tiempo.
Las consecuencias de estas metodologías para el desarrollador son numerosas. El
programador no debe pensar acerca de las versiones futuras al incluir una nueva
funcionalidad.
Los métodos utilizados deben ser lo más sencillos y directos posibles. Estas ideas se
resumen en el principio denominado KISS: ¡Haz las cosas sencillas, idiota! (Keep It
Simple, Stupid)
43
Cuando se modifican los requisitos o cuando se añade una nueva funcionalidad,
normalmente se debe reescribir parte del código existente. Este proceso se llama
refactorización y sucede a menudo durante el desarrollo de una aplicación web. El
código suele moverse a otros lugares en función de su naturaleza. Los bloques de
código repetidos se refactorizan en un único lugar, aplicando el principio DRY: No te
repitas (Don’t Repeat Yourself).
Para asegurar que la aplicación sigue funcionando correctamente a pesar de los
cambios constantes, se necesita una serie de pruebas unitarias que puedan ser
automatizadas. Si están bien escritas, las pruebas unitarias permiten asegurar que
nada ha dejado de funcionar después de haber refactorizado parte del código de la
aplicación. Algunas metodologías de desarrollo de aplicaciones obligan a escribir las
pruebas antes que el propio código, lo que se conoce como TDD: desarrollo basado en
pruebas (test-driven development).
NOTA
Existen otros principios y hábitos relacionados con el desarrollo ágil de aplicaciones.
Una de las metodologías más efectivas se conoce como XP: programación extrema
(Extreme Programming).
La documentación relacionada con XP puede enseñarte mucho sobre el desarrollo
rápido y efectivo de las aplicaciones. Una buena forma de empezar con XP son los
libros escritos por Kent Beck en la editorial Addison-Wesley.
Symfony es la herramienta ideal para el RAD. De hecho, el framework ha sido
desarrollado por una empresa que aplica el RAD a sus propios proyectos. Por este
motivo, aprender a utilizar Symfony no es como aprender un nuevo lenguaje de
programación, sino que consite en aprender a tomar las decisiones correctas para
desarrollar las aplicaciones de forma más efectiva.
El sitio web del proyecto Symfony incluye un tutorial en el que se explica paso a paso el
desarrollo de una aplicación utilizando las técnicas de desarrollo ágil de aplicaciones.
44
La aplicación se llama Askeet (http://www.symfony-project.org/askeet) y su lectura es
muy recomendada para todos aquellos que quieran adentrarse en el desarrollo ágil de
aplicaciones.
3.9.11. YAML
Según el sitio web oficial de YAML (http://www.yaml.org/), YAML es “un formato para
serializar datos que es fácil de procesar por las máquinas, fácil de leer para las
personas y fácil de interactuar con los lenguajes de script”. Dicho de otra forma, YAML
es un lenguaje muy sencillo que permite describir los datos como en XML, pero con
una sintaxis mucho más sencilla. YAML es un formato especialmente útil para describir
datos que pueden ser transformados en arrays simples y asociativos, como por
ejemplo:
$casa = array(
'familia' => array(
'apellido' => 'García',
'padres' => array('Antonio', 'María'),
'hijos' => array('Jose', 'Manuel', 'Carmen')
),
'direccion' => array(
'numero' => 34,
'calle' => 'Gran Vía',
'ciudad' => 'Cualquiera',
'codigopostal' => '12345'
)
45
);
Este array de PHP se puede crear directamente procesando esta cadena de texto en
formato
YAML:
casa:
familia:
apellido: García
padres:
- Antonio
- María
hijos:
- Jose
- Manuel
- Carmen
direccion:
numero: 34
calle: Gran Vía
ciudad: Cualquiera
codigopostal: "12345"
46
YAML utiliza la tabulación para indicar su estructura, los elementos que forman una
secuencia utilizan un guión medio y los pares clave/valor de los array asociativos se
separan con dos puntos. YAML también dispone de una notación resumida para
describir la misma estructura con menos líneas: los arrays simples se definen con [] y
los arrays asociativos se definen con {}. Por tanto, los datos YAML anteriores se
pueden escribir de forma abreviada de la siguiente manera:
casa:
familia: { apellido: García, padres: [Antonio, María], hijos: [Jose, Manuel,
Carmen] }
direccion: { numero: 34, direccion: Gran Vía, ciudad: Cualquiera, codigopostal:
"12345" }
YAML es el acrónimo de “YAML Ain’t Markup Language” (”YAML No es un Lenguaje de
Marcado”) y se pronuncia “yamel”. El formato se lleva utilizando desde 2001 y existen
utilidades para procesar YAML en una gran variedad de lenguajes de programación.
SUGERENCIA
La especificación completa del formato YAML se puede encontrar en
http://www.yaml.org/.
Como se ha visto, YAML es mucho más rápido de escribir que XML (ya que no hacen
falta las etiquetas de cierre y el uso continuo de las comillas) y es mucho más poderoso
que los tradicionales archivos .ini (ya que estos últimos no soportan la herencia y las
estructuras complejas). Por este motivo, Symfony utiliza el formato YAML como el
lenguaje preferido para almacenar su configuración. Este libro contiene muchos
archivos YAML, pero como es tan sencillo, probablemente no necesites aprender más
detalles de este formato.
47
3.9.12. Resumen Symfony
Symfony es un framework para desarrollar aplicaciones web creadas con PHP 5.
Añade una nueva capa por encima de PHP y proporciona herramientas que simplifican
el desarrollo de las aplicaciones web complejas. Este libro contiene todos los detalles
del funcionamiento de Symfony y para entenderlo, solamente es necesario estar
familiarizado con los conceptos básicos de la programación moderna, sobre todo la
programación orientada a objetos (OOP), el mapeo de objetos a bases de datos (ORM)
y el desarrollo rápido de aplicaciones (RAD). El único requisito técnico obligatorio es el
conocimiento de PHP 5.
3.10. El patrón MVC
Symfony está basado en un patrón clásico del diseño web conocido como arquitectura
MVC, que está formado por tres niveles:
El modelo representa la información con la que trabaja la aplicación, es decir, su
lógica de negocio.
La vista transforma el modelo en una página web que permite al usuario
interactuar con ella.
El controlador se encarga de procesar las interacciones del usuario y realiza los
cambios apropiados en el modelo o en la vista.
La imagen 3.2 ilustra el funcionamiento del patrón MVC.
La arquitectura MVC separa la lógica de negocio (el modelo) y la presentación (la vista)
por lo que se consigue un mantenimiento más sencillo de las aplicaciones. Si por
ejemplo una misma aplicación debe ejecutarse tanto en un navegador estándar como
un navegador de un dispositivo móvil, solamente es necesario crear una vista nueva
para cada dispositivo; manteniendo el controlador y el modelo original. El controlador
se encarga de aislar al modelo y a la vista de los detalles del protocolo utilizado para
las peticiones (HTTP, consola de comandos, email, etc.). El modelo se encarga de la
48
abstracción de la lógica relacionada con los datos, haciendo que la vista y las acciones
sean independientes de, por ejemplo, el tipo de gestor de bases de datos utilizado por
la aplicación.
Imagen 3. 2: El patrón MVC.
3.10.1. Las capas de la arquitectura MVC
Para poder entender las ventajas de utilizar el patrón MVC, se va a transformar una
aplicación simple realizada con PHP en una aplicación que sigue la arquitectura MVC.
Un buen ejemplo para ilustrar esta explicación es el de mostrar una lista con las últimas
entradas o artículos de un blog.
3.10.2. Programación simple
Utilizando solamente PHP normal y corriente, el script necesario para mostrar los
artículos almacenados en una base de datos se muestra en el siguiente listado:
Listado 2-1 - Un script simple
<?php
// Conectar con la base de datos y seleccionarla
49
$conexion = mysql_connect('localhost', 'miusuario', 'micontrasena');
mysql_select_db('blog_db', $conexion);
// Ejecutar la consulta SQL
$resultado = mysql_query('SELECT fecha, titulo FROM articulo', $conexion);
?>
<html>
<head>
<title>Listado de Artículos</title>
</head>
<body>
<h1>Listado de Artículos</h1>
<table>
<tr><th>Fecha</th><th>Titulo</th></tr>
<?php
// Mostrar los resultados con HTML
while ($fila = mysql_fetch_array($resultado, MYSQL_ASSOC))
{
echo "\t<tr>\n";
printf("\t\t<td> %s </td>\n", $fila['fecha']);
printf("\t\t<td> %s </td>\n", $fila['titulo']);
50
echo "\t</tr>\n";
}
?>
</table>
</body>
</html>
<?php
// Cerrar la conexion
mysql_close($conexion);
?>
El script anterior es fácil de escribir y rápido de ejecutar, pero muy difícil de mantener y
actualizar. Los principales problemas del código anterior son:
No existe protección frente a errores (¿qué ocurre si falla la conexión con la
base de datos?).
El código HTML y el código PHP están mezclados en el mismo archivo e incluso
en algunas partes están entrelazados.
El código solo funciona si la base de datos es MySQL.
3.10.3. Separando la presentación
Las llamadas a echo y printf del listado 2-1 dificultan la lectura del código. De hecho,
modificar el código HTML del script anterior para mejorar la presentación es un follón
debido a cómo está programado. Así que el código va a ser dividido en dos partes. En
primer lugar, el código PHP puro con toda la lógica de negocio se incluye en el script
del controlador, como se muestra en el listado 2-2.
51
Listado 2-2 - La parte del controlador, en index.php
<?php
// Conectar con la base de datos y seleccionarla
$conexion = mysql_connect('localhost', 'miusuario', 'micontrasena');
mysql_select_db('blog_db', $conexion);
// Ejecutar la consulta SQL
$resultado = mysql_query('SELECT fecha, titulo FROM articulo', $conexion);
// Crear el array de elementos para la capa de la vista
$articulos = array();
while ($fila = mysql_fetch_array($resultado, MYSQL_ASSOC))
{
$articulos[] = $fila;
}
// Cerrar la conexión
mysql_close($conexion);
// Incluir la lógica de la vista
require('vista.php');
?>
El código HTML, que contiene cierto código PHP a modo de plantilla, se almacena en
el script de la vista, como se muestra en el listado 2-3.
52
Listado 2-3 - La parte de la vista, en vista.php
<html>
<head>
<title>Listado de Artículos</title>
</head>
<body>
<h1>Listado de Artículos</h1>
<table>
<tr><th>Fecha</th><th>Título</th></tr>
<?php foreach ($articulos as $articulo): ?>
<tr>
<td><?php echo $articulo['fecha'] ?></td>
<td><?php echo $articulo['titulo'] ?></td>
</tr>
<?php endforeach; ?>
</table>
</body>
</html>
Una buena regla general para determinar si la parte de la vista está suficientemente
limpia de código es que debería contener una cantidad mínima de código PHP, la
53
suficiente como para que un diseñador HTML sin conocimientos de PHP pueda
entenderla. Las instrucciones más comunes en la parte de la vista suelen ser echo,
if/else, foreach/endforeach y poco más. Además, no se deben incluir instrucciones PHP
que generen etiquetas HTML.
Toda la lógica se ha centralizado en el script del controlador, que solamente contiene
código PHP y ningún tipo de HTML. De hecho, y como puedes imaginar, el mismo
controlador se puede reutilizar para otros tipos de presentaciones completamente
diferentes, como por ejemplo un archivo PDF o una estructura de tipo XML.
3.11. Doctrine
3.11.1. ¿Qué es Doctrine?
La doctrina es un objeto mapeo relacional (ORM) para PHP 5.2.3 + sobre una capa de
abstracción de base de datos de gran alcance (DBAL). Uno de sus principales
características es la posibilidad de escribir consultas de base de datos en un objeto de
propiedad orientada dialecto SQL llamada Doctrine (Lenguaje de consulta DQL),
inspirado en hiberna HQL. Esto proporciona a los desarrolladores una poderosa
alternativa a SQL que mantiene la flexibilidad, sin necesidad de la duplicación de
código innecesario.
3.11.2. ¿Qué es un ORM?
Mapeo objeto relacional es una técnica utilizada en los lenguajes de programación
cuando se trata de bases de datos para la traducción de los tipos de datos
incompatibles en bases de datos relacionales. Básicamente, esto permite que
tengamos una base de datos "objeto virtual", que puede ser utilizado desde el lenguaje
de programación. Muchos de los paquetes libres y comerciales que autorizan a esto,
pero a veces los desarrolladores optaron por crear uno por su cuenta, ORM
54
Object-Relational Mapping API.El puente entre el modelo relacional y el modelo de objetos / modelo de dominio
Completa base de datos de la abstracción de la API
Básico entre la Base de datos DBAL
Doctrine ORM
Doctrine DBAL
PDO
3.11.3. Información Básica
La doctrina es una herramienta para el mapeo objeto-relacional en PHP. Se sienta en
la cima de PHP Data Objects (PDO) y se divide en dos capas principales, la DBAL y
el ORM. La imagen de abajo muestra cómo las capas de trabajo Doctrina juntos.
Imagen 3. 3: Funcionamiento de Doctrine.
El DBAL (Capa de abstracción de base de datos) se complete y se extiende la
abstracción de bases de datos de base y en la independencia que ya estén cubiertos
por la PDO. La biblioteca se puede utilizar DBAL independiente, si lo único que
queremos es una capa de abstracción de base de datos de gran alcance en la parte
superior de la DOP. La capa ORM depende de la DBAL y por lo tanto, cuando se carga
el paquete ORM la DBAL ya está incluido.
3.12. Razones para utilizar Symfony
Escalable Symfony es infinitamente escalable si se disponen de los recursos
necesarios. Yahoo! utiliza Symfony para programar aplicaciones con 200 millones de
usuarios.
Probado Symfony ha sido probado con éxito durante años en varias aplicaciones
gigantescas (Yahoo! Answers, Dailymotion, delicious) y en otros miles de sitios
pequeños y medianos.
55
Soporte Symfony sigue una política de tipo LTS (long term support), por la que las
versiones estables se mantienen durante 3 años sin cambios pero con una continua
corrección de errores.
Licencia Symfony se publica bajo licencia MIT, con la que puedes desarrollar
aplicaciones web comerciales, gratuitas y/o de software libre.
Seguro Symfony permite controlar hasta el último acceso a la información e incluye por
defecto protección contra ataques XSS y CSRF.
Código Desde su primera versión Symfony ha sido creado sólo para PHP 5, para
obtener el máximo rendimiento de PHP y aprovechar todas sus características.
Compromiso Los creadores de Symfony no viven del framework, sino de las
aplicaciones que desarrollan con él, por lo que les interesa como aspectos como el
rendimiento, la buena documentación y el soporte muy largo.
Documentado Symfony es el framework mejor documentado, ya que ha publicado
cinco libros gratuitos de calidad y siempre actualizados. Además, toda la
documentación está traducida al español.
Calidad Su código fuente incluye más de 9.000 pruebas unitarias y funcionales.
Internacionalización Symfony está traducido a más de 40 idiomas e incluye todas las
herramientas necesarias para que traduzcas fácilmente tus aplicaciones.
56
3.13. Linux Debian
3.13.1. ¿Qué es Debian?
El Proyecto Debian es una asociación de personas que han hecho causa común para
crear un sistema operativo (SO) libre. Este sistema operativo que hemos creado se
llama Debian GNU/Linux, o simplemente Debian para acortar.
Un sistema operativo es un conjunto de programas y utilidades básicas que hacen que
su computadora funcione. El centro de un sistema operativo es el núcleo (N. del T.:
kernel). El núcleo es el programa más importante en la computadora, realiza todo el
trabajo básico y le permite ejecutar otros programas.
Los sistemas Debian actualmente usan el núcleo de Linux. Linux es una pieza de
software creada en un principio por Linus Torvalds y soportada por miles de
programadores a lo largo del mundo.
Sin embargo, se está trabajando para ofrecer Debian con otros núcleos, en especial
con el Hurd. El Hurd es una colección de servidores que se ejecutan sobre un
micronúcleo (como Mach) para implementar las distintas funcionalidades. El Hurd es
software libre producido por el proyecto GNU.
Una gran parte de las herramientas básicas que completan el sistema operativo, vienen
del proyecto GNU; de ahí los nombres: GNU/Linux y GNU/Hurd. Estas herramientas
también son libres.
Desde luego, lo que la gente quiere es el software de aplicación: herramientas que los
ayuden a realizar lo que necesiten hacer, desde editar documentos, ejecutar
aplicaciones de negocios hasta divertirse con juegos y escribir más software. Debian
viene con más de 25000 paquetes (software precompilado y empaquetado en un
formato amigable para una instalación sencilla en su máquina) — todos ellos de forma
gratuita.
57
Es un poco como una torre. En la base está el núcleo. Encima se encuentran todas las
herramientas básicas. Después está todo el software que usted ejecuta en su
computadora. En la cima de la torre se encuentra Debian — organizando y encajando
todo cuidadosamente para que todo el sistema trabaje junto.
58
4. Descripción de las actividades realizadas
4.1. Análisis del Sistema
Se analizó el proceso minuciosamente para poder obtener los requerimientos del
sistema que en la actualidad se necesita con el fin de comenzar a desarrollar los
módulos, así como conocer cuáles eran las entradas y salidas, formulando una medida
viable, escalable y práctica para que estos procesos se lleven de la mejor manera.
En esta actividad se llevó a cabo el análisis de requerimientos del sistema, teniendo
constantes reuniones con el personal del Departamento de planeación del ITC entre
los que se encuentran la Jefa de este departamento, la Licenciada Juana Imelda
Gutiérrez Moreno, Salvador Perez responsable del PTA y Humberto Placencia
Aguado responsable del POA. En estas reuniones se llevaron varios requerimientos del
sistema los cuales son:
1.-El tiempos de desarrollo y terminación.
2.- Formatos que llevarían el sistema.
3.- Los contenidos que tendrá este.
Para la observación del sistema se recibieron diferente documentación la cual permitió
tener un conocimiento claro del proceso de planeación como se muestra a
continuación.
El proceso de planeación tiene diferentes etapas las cuales están en lazada, en este
proyecto solo se hizo el análisis de dos procesos los cuales son: el Programa de
trabajo Anual (PTA) y el Programa Operativo Anual (POA) a continuación se
mencionara en qué consiste cada uno de estos y cuál es su relación.
59
El Programa de Trabajo Anual tiene como propósito Contar con un documento
normativo de corto plazo donde se programan las metas de forma anualizada y las
actividades se realizan mensualmente, a dicha programación debe dársele seguimiento
y la evaluación correspondiente en el cumplimiento de las metas, con la finalidad de
elevar la calidad en el Servicio Educativo.
4.1.1.El procedimiento del Programa de Trabajo Anual
El procedimiento del Programa de Trabajo Anual es el siguiente :
1. EL Director del Instituto Tecnológico o Centro.-Recibe solicitud por parte de la
DGEST ,y da instrucciones al Subdirector de Planeación y Vinculación sobre las
estrategias para la formulación del Programa de Trabajo.
2. Subdirector de Planeación y Vinculación.- Convoca a reunión de trabajo a los
directivos y jefes de departamento, división o centro, para dar a conocer las
normas, lineamientos y el mecanismo de trabajo para la elaboración del PTA
3. Subdirectores y Jefes de Departamento.- Elabora el PTA del Departamento,
División o Centro a su cargo, acordando las metas con el Director de Área afín
de la DGEST. Después de su elaboración envía el PTA para su análisis y
aprobación correspondiente al Jefe del Departamento de Planeación,
Programación y Presupuestación para su revisión.
4. Departamento de Planeación, Programación y Presupuestación.- Recibe, revisa
e integra al PTA del plantel. Si procede lo validad e integra, sino procede lo
regresa con las observaciones pertinentes de acuerdo a los lineamientos
establecidos, para su corrección.
5. Subdirector de Planeación y Vinculación. Recibe y analiza el PTA del Instituto
Tecnológico o Centro y prepara su envío a la DGEST.
6. Director del Inst. Tecnológico o Centro.- Firma el PTA del Instituto Tecnológico o
Centro y lo envía para su revisión y autorización a la DGEST.
7. Director del Instituto Tecnológico o Centro.-Recibe autorización del PTA del
Instituto Tecnológico o Centro.Da instrucciones al Subdirector de Planeación y
60
Vinculación para comunicar el documento final y establecer estrategias de
cumplimiento, Evaluación y Seguimiento de las metas del PTA.
8. Departamento de Planeación, Programación y Presupuestación analiza el
seguimiento y evaluación. Si procede, realiza una reunión para establecer
estrategias para la mejora continua, si no procede, a realizar una reunión para
establecer estrategias para el cumplimiento y reforzamiento de las metas con el
Director, Subdirectores y Jefes de departamento.
61
Estrategias para la formulación del Programa de TrabajoDar a conocer las normas, lineamientos y el mecanismo de trabajo para la elaboración del PTA
Se Elabora el PTA del Departamento de acordando las metas.Departamento de Planeación, Programación y Presupuestación. Recibe, revisa e integra al PTA del plantel.
Analiza el PTA del Instituto Tecnológico y prepara su envío a la DGEST.Director del Inst. Tecnológico. Firma el PTA del Instituto Tecnológico y lo envía para su revisión y autorización a la DGEST
Director del Instituto Tecnológico o Centro.-Recibe autorización del PTA del Instituto Tecnológico o Centro.Da instrucciones al Subdirector de Planeación y Vinculación para comunicar el documento final y establecer estrategias de cumplimiento, Evaluación y Seguimiento de las metas del PTASi procede, realiza una reunión para establecer estrategias para la mejora continua, si no procede, a realizar una reunión para establecer estrategias para el cumplimiento y reforzamiento de las metas con el Director, Subdirectores y Jefes de departamento
1 2
4
5 6
7
3
8
El siguiente diagrama muestra el procedimiento anteriormente descrito.
62
Diagrama 4. 1: Diagrama del procedimiento del PTA.
4.1.2.Programa Operación Anual
El programa Operación Anual consiste establecer lineamientos para la elaboración con
el propósito de sistematizar y orientar las actividades que se desarrollan en el
Organización, a fin de ejercer los recursos captados a través de ingresos propios y los
asignados al gasto de operación de la Institución, para elevar la calidad en los Servicios
Educativos.
4.1.2.1 El procedimiento del Programa Operativo Anual
El procedimiento del Programa Operativo Anual es el siguiente:
1. El director recibe solicitud por parte de la DGEST y da instrucciones al
Subdirector de Planeación y Vinculación sobre las estrategias para la
formulación del POA en base a las metas del PTA y PIID de la Institución.
2. El Subdirector de Planeación y Vinculación da instrucciones al jefe del
Departamento de Planeación, Programación, y Presupuestación de las
estrategias para elaboración del POA y realiza reunión con directivos y jefes de
departamento para dar a conocer las normas, y lineamiento para la formulación
del POA en base a las metas del PTA y PIID de la institución.
3. Los Directivos y jefes de Departamento determinan las necesidades del área o
departamento de su responsabilidad y elabora el POA en los formatos
correspondientes. Someten a revisión con el jefe inmediato superior el POA de
sus área o departamento y recaba su visto bueno. Entregan al jefe del
Departamento de Planeación, Programación y Presupuestación el POA de su
área.
4. El Departamento de Planeación, Programación y presupuestación recibe los
POA de cada departamento responsable, los revisa y procesa la información
proporcionada. Si procede, integra el POA y lo presenta al Subdirector de
Planeación y Vinculación, si no procede, regresa al departamento responsable
las observaciones correspondientes.
63
El director recibe solicitud por parte de la DGEST y da instrucciones al Subdirector de Planeación y Vinculación sobre las estrategias para la formulación del POA en base a las metas del PTA y PIID de la Institución. El Subdirector de Planeación y Vinculación da instrucciones al jefe del Departamento de Planeación, Programación, y Presupuestación de las estrategias para elaboración del POA y realiza reunión con directivos y jefes de departamento para dar a conocer las normas, y lineamiento para la formulación del POA en base a las metas del PTA y PIID de la institución.
Los Directivos y jefes de Departamento determinan las necesidades del área o departamento de su responsabilidad y elabora el POA en los formatos correspondientes. Someten a revisión con el jefe inmediato superior el POA de su área o su departamento y recaba su visto bueno. Entregan al jefe del Departamento de Planeación ,Programación y Presupuestación el POA de su área.La Subdirección de Planeación y Vinculación con previo acuerdo del Director ,convoca a reunión a Directivos y Jefes de Departamento para presentar el POA para su análisis.
La Subdirección de Planeación y Vinculación con previo acuerdo del Director, convoca a reunión a Directivos y Jefes de Departamento para presentar el POA para su análisis.El Director firma y envía oficio del POA, solicitando su autorización ante la DGEST.
La Subdirección de Planeación y Vinculación con previo acuerdo del Director, convoca a reunión a Directivos y Jefes de Departamento para presentar el POA para su análisis.
1 2
3 4
5 6
7
Diagrama del Programa Operativo Anual
5. La Subdirección de Planeación y Vinculación con previo acuerdo del Director,
convoca a reunión a Directivos y Jefes de Departamento para presentar el POA
para su análisis.
6. El Director firma y envía oficio del POA,solicitando su autorización ante la
DGEST.
7. El Departamento de planeación, Programación y Presupuestación una vez
autorizado el POA, informa el monto autorizado a cada uno de los
departamentos.
64
Diagrama 4. 2: Diagrama del Proceso de POA.
El cargado del PTA
AAAAAAAAA
Actor
Captura de las metas Institucionales
Captura del programa trabajo anual
Acción
La relación que tiene el PTA y POA es que el PTA se elabora el plan de trabajo el cual
está constituido por las metas que se desean cumplir una vez realizado, en el POA se
asignaran acciones para poder llevar a cabo las metas.
4.1.3. Diagrama de caso de uso PTA
En el Diagrama 4.3 muestra las funciones del personal encargado del PTA.
65
Diagrama 4. 3: Diagrama de Casos de Uso para el PTA.
Acción
Capturar acciones y Asignar acciones al departamento
Capturar POA de su Departamento
Capturar insumos, unidades y partidas
Selecciona tiempo de capturaEn cargado del POA
Actor
Jefes de Departamento
Actor
4.1.4. Diagrama de caso de uso POA
En el Diagrama 4.4 muestra las diferentes acciones que el personal encargado del
POA y Jefes de Departamento realizan.
4.2. Planteamiento del problema
Se analizo los problemas diversos de la aplicación actual los cuales se muestran en la
justificación del proyecto los cuales son los siguientes:
Insegura dado que para el acceso a la información se tiene que dejar un puerto
abierto.
Poco intuitiva en el modo de búsqueda de información así como de captura,
dificultad en las actualizaciones del sistemas.
Interfaz poco amigable para el usuario.
66
Diagrama 4. 4: Diagrama de Casos de Uso para el POA.
Para su funcionamiento es necesario cumplir con más de un requisito que es: tener la
maquina virtual de java, la cual si no se tiene sé debe de descargar de la página oficial
de java (www.java.com), el tiempo de descarga dependerá de la conexión de internet,
otro requisito es tener la aplicación en la computadora, si no es así se tiene que
descargar.
En caso de haber una actualización también es necesaria volver a descargar la
aplicación
No forma parte del Sistema Integral de Información.
4.2.1. Análisis de las herramientas de desarrollo
Una vez que se contó con toda esta información, se procedió a hacer una justificación
de las herramientas para el desarrollo del sistema propuesto, pues éstas eran un
estándar en la construcción de cualquier módulo del SII.
Se utilizaría PHP, como lenguaje de programación orientado a web. Pues es un
lenguaje multiplataforma y sencillo de aprender, además como ya se menciono es un
estándar.
Para la parte de manejo de información, se justifica el hecho de utilizar un manejador
de bases de datos como lo es PostgreSQL. Puesto que proporciona un gran número de
características que normalmente sólo se encontraban en las bases de datos
comerciales y este manejador es de distribución libre, lo cual proporciona una ventaja
extra sobre los demás.
Dentro del sistema también se realizarían reportes, estos reportes se querían en un
formato PDF, para lo cual se contaba con IReport, que permite crear documentos con
esta extensión de manera rápida y sencilla, ofreciendo características muy similares a
cualquier software privativo que tenga este fin, como Ireport está desarrollado en java
por lo cual es necesario de un servidor de apache tomcat el cual permita interpretarlo y
como resultado obtener el pdf.
67
Puesto que la aplicación se propuso para trabajar en un entorno Web, debido a ello era
necesario contar con un servidor, se optó por utilizar Apache puesto que es robusto,
potente, disponible en todas las plataformas, gratuito y con disponibilidad de su código
fuente, ofreciendo por mucho mejores ventajas que sus rivales como IIS u otros,
además de que también es un estándar de desarrollo para el SII.
Para Sistema Operativo, solo se contaba con dos opciones puesto que las máquinas
que utilizaríamos solo soportaban Microsoft Windows y GNU/Linux. Se optó por
seleccionar el uso de GNU/Linux por contar con más seguridad, menor concurrencia en
la aparición de virus, rapidez que proporciona a PHP, etc.
Se utilizó Symfony es un framework para la creación de aplicaciones PHP y la forma
más sencilla de aumentar la productividad y calidad esta. Symfony ha sido probado con
éxito en algunos de los sitios web más grandes del mundo.
Las ventajas que se puede observar a primera vista es que este framework permite
separar la lógica de negocio, la lógica de servidor y la presentación de la aplicación
web. Proporciona varias herramientas y clases encaminadas a reducir el tiempo de
desarrollo de una aplicación web compleja. Además, automatiza las tareas más
comunes, permitiendo al desarrollador dedicarse por completo a los aspectos
específicos de cada aplicación. El resultado de todas estas ventajas es que no se debe
reinventar la rueda cada vez que se crea una nueva aplicación web.
Para mejorar la interacción de la interfaz se opto por utilizar Jquery UI, el cual permitirá
tener una interfaz amigable para los usuarios finales.
4.3. Análisis de requerimientos
Los requerimientos encontrados para el módulo a desarrollar, son que el servidor
contara con Apache, apache tomcat , Php, Linux, postgresql , symfony.
Los requerimientos para el usuario, no son muy complejos ya que una computadora
normalmente cuenta con un navegador de internet el cual permitirá acceder a la
aplicación.
68
4.3.1.Capacitación para el uso de las herramientas de desarrollo
Una de las actividades más laboriosas, cuando se está descubriendo nuevas
herramientas como en este caso son: IReport y Symfony lo cual Ireport fue uno de los
más fáciles en entender y dominar gracias a su herramienta para crear los pdf la hace
ser muy fácil de adaptarse y desarrollar utilizando síntesis de sql para realizar las
consultas y obtener los datos necesarios en los reportes, por otra parte Symfony se
tuvo que adquirir nuevo conocimiento aparte del conocimiento del lenguaje de php,
como fueron los archivos yam y los ORM (mapeo objeto relacional) así como el estilo
de arquitectura de software MVC que separa los datos de una aplicación, la interfaz de
usuario, y la lógica de control en tres componentes distintos explicados en el Marco
Teórico.
4.4. Análisis de diseño y desarrollo de la base de datos
Al ser esté un módulo que se incorporará al Sistema Integral de Información (SII), ya
se cuenta con parte de la estructura de la base de datos para la elaboración del PTA y
POA, sin embargo aún había que agregarle algunos campos requeridos para completar
la estructura.
A continuación se presentará el conjunto de tablas previamente existentes, más
adelante se mostrará a detalle la estructura de cada una de ellas y cómo se
relacionaron con las nuevas tablas así como también se hará mención de los campos y
tablas nuevos.
69
Diagrama 4. 5: Diagrama Entidad-Relacion.
Para ver el diccionario de la base de datos ir al Anexo A
Tablas que se Modificaron.
Tabla Insumo_accion_departamento ver Tabla 4.1
Tabla 4. 1: Insumo_accion_departamento.
Columnas agregadas a la tabla Insumo_accion_departamento
70
Nombre de la columna Tipo
Año_Captura Integer
Tabla Accion_departamento ver Tabla 4.2
Tabla 4. 2: Accion_departamento.
Columnas agregadas a la tabla Accion_departamento
Nombre de la columna Tipo
tope_presupuestal Numeric(9,2)
Tabla insumo ver Tabla 4.3
Tabla 4. 3: insumo
71
Columnas agregadas a la tabla insumo
Nombre de la columna Tipo
Sede Varchar(200)
PeriodoInicial Date
PeriodoFinal Date
Año integer
Creación de la tabla
APOA_insumo_accion_departamento ver Tabla 4.4
Tabla 4. 4: APOA_insumo_accion_departamento
4.5. Desarrollo de la interfaz del usuario
Antes de iniciar la programación o diseño de interfaces, se definió cómo se realizaría el
acceso, tomando en cuenta que existe el sistema integral de información, permitiendo
un acceso a las personas que elaboran en el ITC. La interfaz de acceso que se
muestra a continuación es solo una validación de usuario y contraseña los cuales se
asignan al ingresar al ITC.
72
Imagen 4. 1: Pagina de acceso al SII.
Una vez que se ha entrado al SII se pueden observar una serie de opciones,
dependiendo del usuario que entre. En la figura siguiente se muestra un ejemplo del
menú para un usuario, esto solo con el fin de dar una idea clara de donde se
encontrará ubicada la liga para entrar al sistema de PTA_POA.
Imagen 4. 2: Menu del SII.
Para el desarrollo de la interfaz se tomaron en cuenta las necesidades de la PTA y
POA, los cuales tienen como objetivo de ser intuitiva y a la visión de los usuarios
agradable.
La interfaz consta de un menú el cual tendrá diferentes opciones, dependiendo del tipo
de usuario que quiera acceder.
73
Imagen 4. 3: Interfaz de Usuario del Sistema PTA-POA.
Los colores de la interfaz fueron seleccionados con el objetivo que fueran un medio de
trabajo agradable al usuario.
4.5.1.Validación del sistema
Se validaron los formularios por medio del lenguaje del lado del servidor PHP y del lado
del cliente javascript, lo cual permite una integridad de información la cual evita tener
errores en la captura.
4.5.2.Prueba del sistema
Para la prueba del sistema se analizaron varios puntos que se determinaron
importantes que son los siguientes:
Integridad y consistencia en los datos
Verificar que la información que se mostrara fuera la correcta así como la captura de
esta.
Seguridad
o Symfony ya tiene contemplado los siguientes ataques:
Inyección de sql
74
Cross-site scripting (XSS) es un tipo de inseguridad informática o
agujero de seguridad basado en la explotación de vulnerabilidades
del sistema de validación de HTML incrustado
CSRF (del inglés Cross-site request forgery o falsificación de
petición en sitios cruzados) es un tipo de exploit malicioso de un
sitio web en el que comandos no autorizados son transmitidos por
un usuario en el cual el sitio web confía. Esta vulnerabilidad es
conocida también por otros nombres como XSRF, enlace hostil,
ataque de un click, cabalgamiento de sesión, y ataque automático.
Después se realizaron iteraciones con el sistema, tratando de emular el uso que se le
daría. Las iteraciones se realizaron cinco veces por cada módulo existente.
En base a los resultados arrojados por estos dos puntos anteriores, se observaron los
valores de prueba y se decidió modificar el código y nuevamente validar y probar los
puntos más débiles. Este proceso resultó recursivo por un tiempo pues se realizaron
muchas pruebas y correcciones, puesto que el tiempo con el que se contaba, reducía
considerablemente los tiempos contemplados para otras actividades.
Nota: las validaciones se hicieron localmente, cuando se integro en el sistema del
Instituto Tecnologico de Celaya se realizaron las mismas pruebas para ver el
funcionamiento adecuado en línea.
4.6. Detección y corrección de errores
Este punto estuvo basado en las pruebas del sistema ya que en base a ellas se
encontraron errores que pasaron desapercibidos a primera instancia. Como errores
ortográficos, o que el tipo de cuadro de texto no era el correcto, etc.
75
5. Conclusión
Durante mi estancia en las residencias profesionales, puse en práctica gran parte de
mis conocimientos que adquirí en el Tecnológico de Celaya así como las habilidades
de autodidacta para el manejo de un framework Symfony.
El desarrollo de la aplicación en Web fue un proceso de dedicación y esfuerzo para su
elaboración, permitiendo tener un panorama más amplio de las herramientas que
actualmente se usan en un habiente laboral, haciendo este un constante actualización
en conocimiento.
También pude observar mediante la práctica, que el desarrollo de sistemas no es solo
programar, sino que es toda una metodología que se debe seguir para tener resultados
favorables, esto es desde el análisis pertinente, así como el diseño e documentación, y
pruebas del mismo.
Como nota. Después de terminar este proyecto, me siento más seguro de mí, ya que
esto me va a ayudar en mi vida profesional que apenas comienza.
6. Inconvenientes o problemas
En el sistema del PTA y POA, está funcionando de acuerdo a las expectativas que se
optaron que el sistema tuviera, aunque estos están en constante cambio debido a las
nuevas solicitudes que envía la DGEST para la captura del PTA y POA, o a formas
más sencillas que se encuentren para facilitar el llenado de los mismos. Otro
inconveniente es que es un sistema que puede cambiar cada seis años con la llegada
de un nuevo presidente de la república, ya que éste asigna metas que deben cumplir
en su periodo, o cambiar el método de asignación de las mismas.
76
7. Elaboración del manual de instalación y de operación
Se realizó un documento el cual contiene los pasos necesarios para la instalación del
sistema ver anexo B, así como el manual de usuario el cual permite tener una visión
clara de las operaciones que puede realizar el sistema ver el anexo A.
77
6. Referencias de Internet
Manual y Referencia de PHP.
http://www.php.net (junio 2009)
Manual y Referencia de Apache.
http://www.apache.org/ (junio 2009)
Manual y Referencia de PostgreSQL.
http://www.postgresql.org/ (junio 2009)
Manual y Referencia de Symfony
http://www.symfony-project.org/doc/1_4/ (junio 2009)
Manual y Referencia de Doctrine
http://www.doctrine-project.org/projects/orm(junio 2009)
Manual y referencia de apache Tomcat
http://tomcat.apache.org/ (junio 2009)
Manual y referencia de IReport
http://jasperforge.org/plugins/mwiki/index.php/Ireport (junio 2009)
Manual y referencia de Debian
http://www.debian.org/index.es.html( junio 2009)
78
79
7. Anexos
Anexo A.
Diccionario de la Base de datos
Tabla: public.accion
Columnas
Nombre Tipo Not
Null
Uniqu
e
P/
K
Def Val
id_accion Integer Not
Null
Ye
s
id_meta_institucional Integer Not
Null
Ye
s
id_institucion Integer Not
Null
Ye
s
anio numeric(4,0) Not
Null
Ye
s
accion Varchar
cantidad_periodo1 Integer
cantidad_periodo2 Integer
Descripción
Conceptos más específicos dentro de una actividad que facilitan el establecimiento
de metas y sus unidades de medida.
Tabla: public.accion_departamento
Columnas
Nombre Tipo Not
Null
Uniqu
e
P/
K
Def Val
id_departamento Integer Not Ye
80
Null s
id_accion Integer Not
Null
Ye
s
id_meta_institucional Integer Not
Null
Ye
s
id_institucion Integer Not
Null
Ye
s
anio numeric(4,0) Not
Null
Ye
s
Descripción
Son las acciones que se le asigna a cada departamento la cual permitirá cumplir las
metas
Tabla: public.apoa_insumo_accion_departamento
Columnas
Nombre Tipo Not
Null
Uniqu
e
P/
K
Def Val
id_departamento Integer Not
Null
Ye
s
id_accion Integer Not
Null
Ye
s
id_meta_institucional Integer Not
Null
Ye
s
id_institucion Integer Not
Null
Ye
s
anio numeric(4,0) Not
Null
Ye
s
id_insumo Integer Not
Null
Ye
s
id_fuente_ingreso_capitul Integer Not Ye
81
o Null s
cantidad_periodo1 Integer
precio_unitario numeric(9,2)
cantidad_periodo2 Integer
justificacion Varchar
Descripción
Ante proyecto planeación anual operativo anual
Tabla: public.calendario_ejecucion
Columnas
Nombre Tipo Not
Null
Uniqu
e
P/
K
Def Val
id_mes Integer Not Null
Yes
id_meta_institucional Integer Not Null
Yes
id_institucion Integer Not Null
Yes
anio numeric(4,0) Not Null
Yes
id_meta_nivel_jerarquico Integer Not Null
Yes
Descripción
Tiempo que duro en realizar una meta
Tabla: public.capitulo
Columnas
Nombre Tipo Not Null
Unique
P/K
Def Val
id_capitulo integer Not Null
Yes Yes
capitulo char(4) dsc_capitulo varchar(100)
82
Descripción
Capitulo que tiene como asignado los conceptos
Tabla: public.concepto
Columnas
Nombre Tipo Not Null
Unique
P/K
Def Val
id_concepto integer Not Null
Yes Yes
id_capitulo integer concepto char(4) dsc_concepto varchar(200)
Descripción
Tabla: public.departamento
Columnas
Nombre Tipo Not Null
Unique
P/K
Def Val
id_departamento
integer Not Null
Yes Yes
departamento varchar(100)
Descripción
Nombre del departamento
Tabla: public.departamento_institucion
Columnas
Nombre Tipo Not Null
Unique
P/K
Def Val
id_institucion integer Not Null
Yes
83
id_departamento integer Not Null
Yes
Descripción
Enlace de las tablas de departamento con la institución
Tabla: public.departamento_proceso_clave
Columnas
Nombre Tipo Not Null
Unique
P/K
Def Val
id_proceso_clave integer id_departamento integer
Descripción
En lace de las tablas de proceso y departamento
Tabla: public.estado
Columnas
Nombre Tipo Not Null
Unique
P/K
Def Val
id_estado integer Not Null
Yes Yes
estado char(70)
Descripción
Estados del país
Tabla: public.estados_revisiones
Columnas
Nombre Tipo Not Null
Unique
P/K
Def Val
id_estado_revision
integer Not Null
Yes Yes
estado_revision varchar(100)
84
Descripción
Indica el estado de la revisión
Tabla: public.estructura_programatica
Columnas Nombre Tipo Not
Null
Unique
P/K
Def Val
id_estructura_programatica
integer
Not Null
Yes Yes
grupo_funcional char(5)
funcion char(5)
subfuncion char(5)
actividad_institucional char(5)
programa_prioritario char(5)
Descripción
Estructura del programa a seguir
Tabla: public.fuente_ingreso
Columnas
Nombre Tipo Not Null
Unique
P/K
Def Val
id_fuente_ingreso
integer Not Null
Yes Yes
fuente_ingreso varchar(50)
Descripción
Tipo de ingreso que recibe el tecnológico
Tabla: public.fuente_ingreso_capitulo
85
Columnas
Nombre Tipo Not Null
Unique
P/K
Def Val
id_capitulo integer
Not Null
id_fuente_ingreso integer
Not Null
id_fuente_ingreso_capitulo
integer
Not Null
Yes Yes
Descripción
En lace de la tabla de ingreso y capitulo
Tabla: public.indicador
Columnas Nombre Tipo Not
Null
Unique
P/K
Def Val
id_indicador integer Not Null
Yes Yes
indicador varchar Descripción
Tabla: public.institucion
Columnas
Nombre Tipo Not Null
Unique
P/K
Def Val
id_institucion integer Not Null
Yes Yes
id_tipo_institucion
integer
institucion varchar(100)
clave_institucion char(5)
86
direccion varchar telefono char(12) codigo_postal char(5) id_estado integer Not
Null
Descripción
Datos del instituto
Tabla: public.insumo
Columnas
Nombre Tipo Not Null
Unique
P/K
Def Val
id_insumo integer Not Null
Yes
id_unidad integer id_partida integer insumo varchar(200) precio_actual numeric(15,2
)
id_institucion integer Not Null
Yes
Descripción
Nombre de los componentes, artículos, etc.
Tabla: public.insumo_accion_departamento
Columnas
Nombre Tipo Not Null
Unique
P/K
Def Val
id_departamento integer Not Null
Yes
id_accion integer Not Null
Yes
id_meta_institucional integer Not Null
Yes
id_institucion integer Not Null
Yes
anio numeric(4,0) Not Ye
87
Null s id_insumo integer Not
Null Ye
s
id_fuente_ingreso_capitulo integer Not Null
Yes
cantidad_periodo1 integer precio_unitario numeric(9,2) cantidad_periodo2 integer justificacion varchar Descripción:
apoa_insumo
Descripción
Tabla donde liga el insumo la acción y el departamento
Tabla: public.mes
Columnas
Nombre Tipo Not Null
Unique
P/K
Def Val
id_mes integer Not Null
Yes Yes
mes varchar(50)
Descripción
Id Meses y nombre de meses
Tabla: public.meta_institucional
Columnas
Nombre Tipo Not Null
Unique
P/K
Def Val
id_meta_institucional
integer Not Null
Yes Yes
id_meta_piid integer id_indicador integer id_unidad_medida integer
88
meta_institucional varchar formula varchar(1024
)
anio_vigencia numeric(4,0)
Descripción
Meta de la institución a cumplir
Tabla: public.meta_nivel_jerarquico
Columnas
Nombre Tipo Not Null
Unique
P/K
Def Val
id_meta_institucional integer Not Null
Yes
id_institucion integer Not Null
Yes
anio numeric(4,0) Not Null
Yes
meta_nivel_jerarquico varchar id_meta_nivel_jerarquico integer Not
Null Ye
s
Descripción
Meta del nivel jerárquico
Tabla: public.meta_piid
Columnas
Nombre Tipo Not Null
Unique
P/K
Def Val
id_meta_piid integer Not Null
Yes Yes
meta_piid varchar
clave_meta_piid char(5)
Descripción
Me de PIID(Programa Institucional de Innovación y Desarrollo)
Tabla: public.meta_proceso_clave
89
Columnas
Nombre Tipo Not Null
Unique
P/K
Def Val
id_meta_institucional integer Not Null
Yes
id_proceso_clave integer Not Null
Yes
Descripción
Tabla que liga la meta con proceso
Tabla: public.monto
Columnas
Nombre Tipo Not Null
Unique
P/K
Def Val
monto numeric
Descripción
(none)
Tabla: public.partida
Columnas
Nombre Tipo Not Null
Unique
P/K
Def Val
id_partida integer Not Null
Yes Yes
id_concepto integer partida char(4) dsc_partida varchar nombre varchar(200)
Descripción
(none)
90
Tabla: public.partida_departamento
Columnas
Nombre Tipo Not Null
Unique
P/K
Def Val
id_departamento integer Not Null
Yes
id_partida integer Not Null
Yes
Descripción
(none)
Tabla: public.periodo_captura
Columnas
Nombre Tipo Not Null
Unique
P/K
Def Val
id_periodo_captura integer
Not Null
Yes Yes
Descripción: Serial para la llave primaria anio intege
r Not Null
Descripción: Año de captura fecha_inicio date Descripción: Fecha de inicio de captuta tanto PTA como POA. fecha_fin date Descripción: Fecha fin de captuta tanto PTA como POA. estatus intege
r Not Null
Descripción: Estatus del periodo, 1 es el periodo que se está capturando actualmente.
Descripción
Se define el periodo de captura tanto del pta como del poa.
Tabla: public.periodo_seguimiento
Columnas
Nombre Tipo Not Uniqu P/ Def Val
91
Null e K id_periodo_seguimiento
integer Not Null
Yes Yes
periodo_seguimiento varchar(50) anio numeric(4,0
)
Descripción
(none)
Tabla: public.personal
Columnas
Nombre Tipo Not Null
Unique
P/K
Def Val
rfc varchar(13) Not Null
Yes
id_puesto integer id_institucion integer id_departamento
integer
nombre varchar(70) apellidos varchar(70) id_personal integer Not
Null Yes Ye
s
password varchar(254) blocked integer super_user smallint 0 email varchar(100)
Descripción
(none)
Tabla: public.proceso_clave
Columnas
Nombre Tipo Not Null
Unique
P/K
Def Val
92
id_proceso_clave integer Not Null
Yes Yes
id_proceso_estrategico integer proceso_clave varchar(100
)
clave_proceso_clave char(5) id_estructura_programatica
integer
Descripción
Tabla: public.proceso_estrategico
Columnas
Nombre Tipo Not Null
Unique
P/K
Def Val
id_proceso_estrategico integer Not Null
Yes Yes
proceso_estrategico varchar(50)
clave_proceso_estrategico
char(5)
Descripción
(none)
Tabla: public.programa_trabajo_anual
Columnas
Nombre Tipo Not Null
Unique
P/K
Def Val
id_meta_institucional integer Not Null
Yes
id_institucion integer Not Null
Yes
anio numeric(4,0) Not Null
Yes
id_periodo_seguimiento integer id_meta_institucional_previa
integer
93
id_institucion_previa integer anio_previa numeric(4,0) porcentaje_programado integer cantidad integer meta_institucional_adaptada
varchar
Descripción
Programa anual de trabajo
Tabla: public.puesto
Columnas
Nombre Tipo Not Null
Unique
P/K
Def Val
id_puesto integer Not Null
Yes Yes
id_puesto_jefe_inmediato integer puesto varchar id_tipo_puesto integer Descripción: Identificador del tipo de puesto. puesto_abreviado varchar Descripción: Descripción abreviada del puesto. puesto_firma varchar Descripción: Descripción del puesto como aparecerá en la firma, esto en los
formatos del pta y poa.
Tabla: public.puesto_meta_nivel_jerarquico
Columnas
Nombre Tipo Not Null
Unique
P/K
Def Val
id_puesto integer Not Null
Yes
id_meta_institucional integer Not Null
Yes
id_institucion integer Not Null
Yes
anio numeric(4,0) Not Ye
94
Null s id_meta_nivel_jerarquico integer Not
Null Ye
s
Descripción
Puesto metas del nivel jerárquico
Tabla: public.revisiones_metas
Columnas
Nombre Tipo Not Null
Unique
P/K
Def Val
id_revisiones integer Not Null
Yes Yes
ano numeric(4,0)
id_revision_congruencia integer id_revision_dir_area integer id_meta_institucional integer id_institucion integer anio numeric(4,0
)
fecha_revision_director_area date fecha_autorizacion_congruencia
date
observaciones varchar(500)
Descripción
Revisiones meta
Tabla: public.seguimiento_pta
Columnas
Nombre Tipo Not Null
Unique
P/K
Def Val
porcentaje_alcanzado numeric(3,2)
Descripción
Seguimiento del PTA
95
Tabla: public.seguimiento_revision
Columnas
Nombre Tipo Not Null
Unique
P/K
Def Val
id_revision integer Not Null
Yes Yes
ano numeric(4,0) id_revision_congruencia integer id_estado_revision integer id_institucion integer id_revision_dir_area integer fecha_revision_congruencia
date
fecha_revision_dir_area date observaciones_congruencia
varchar
entregado boolean fecha_entrega date observacion_dir_area varchar(1024
)
Descripción
Seguimiento de revisión
Tabla: public.tipo_institucion
Columnas
Nombre Tipo Not Null
Unique
P/K
Def Val
id_tipo_institucion
integer Not Null
Yes Yes
tipo_institucion varchar(100)
Descripción
Tipo de institución
96
Tabla: public.tipo_puesto
Columnas
Nombre Tipo Not Null
Unique
P/K
Def Val
id_tipo_puesto integer Not Null
Yes Yes
Descripción:
Identificador del tipo de puesto.
tipo_puesto varchar Not Null
Descripción:
Descripción del tipo de puesto.
Descripción
Tipos de puestos dentro de las instituciones.
Tabla: public.unidad
Columnas
Nombre Tipo Not Null
Unique
P/K
Def Val
id_unidad integer Not Null
Yes Yes
unidad varchar(50)
Descripción
Unidades
Tabla: public.unidad_medida
Columnas
Nombre Tipo Not Null
Unique
P/K
Def Val
id_unidad_medida
integer
Not Null
Yes Yes
unidad_medida varchar
Descripción
97
Unidad de medida
98
Anexo B
Manual de Instalación
Tener instalado los siguientes servicios
Apache2(apt-get install apache2)
Php5.2.4 o superior
Php cliente y pear
(Apt-get install php5 php5-cli php-pear)
Manejador de base de Datos Postgresql (apt-get install postgresql8)
Puede descargar e instalar Librerías y extensiones pero no van hacer requeridas en
este proyecto(PHP-XML PHP-XMLRPC)
Instalar Symfony y Crear el proyecto, copear las carpetas necesarias para que el
proyecto que se encuentra en la maquina local o maquina donde se desarrolló el
proyecto a continuación se muestra como instalar y crear el proyecto.
Instalar Symfony
Descargar Symfony des de la página oficial http://www.symfony-project.org/installation
99
Imagen 1: Página de Descargas de Symfony.
En el proyecto se trabajó con la versión Symfony 1.4, por lo tal descargáremos la
versión 1.4
En la columna donde se encuentra la tabla podrá ver que dice Download
Imagen 2: Opciones de descarga de Symfony.
Existen dos archivos que nos permite descargar (Source, Sandbox) y dos formas de
compresión, para el proyecto utilizaremos Source y como nos encontramos en Linux
podemos descargar el archivo que está en .tgz
Una vez descargado lo descomprimimos en la carpeta que queramos que esté
instalado Symfony y le damos los permisos necesarios para que se ejecute de modo
usuario “no de modo administrador root” y listo termino la instalación de Symfony.
100
Crear un proyecto
Una vez que ya instalo Symfony, nos ubicamos en la carpeta donde crearemos el
proyecto y crear una carpeta esta carpeta contendrá todos los archivos del proyecto así
que hay que dar los permisos 744, una vez creado hay que introducirnos en la carpeta
y poner el siguiente comando.
$ php /ruta donde se encuentra el symfony que descomprimimos/data/bin/symfony
generate:project nombre del proyecto
Las letras rojas son carpetas que ya contiene el paquete que descargamos
La letra azul es el nombre del archivo el cual nos va permitir ejecutar diferentes
acciones como es generate:Project que nos permite generar el proyecto para mostrar
todas las acciones que podemos realizar solo es de poner el siguiente código.
$ php /ruta donde se encuentra el symfony que descomprimimos/data/bin/symfony
Una vez que ya creamos el proyecto hay que crear las aplicaciones y seleccionar la
seguridad que nos proporciona Symfony.
$ php symfony generate:app –escaping-strategy=on –csrf-secret=UniqueSecret nombre
de la aplicación
Si se fija una vez que se creó el proyecto ya no es necesario poner toda la ruta donde
se encontraba symfony porque cuando se creó el proyecto symfony crea un
archivo .bat con el mismo nombre symfony el cual nos permitirá trabajar de una manera
más sencilla.
Ya tenemos el proyecto la aplicación ahora hay que crear los módulos en este caso
como tenemos elaborado el proyecto en la maquina local o donde se desarrolló el
proyecto solo es de copear y pegar dentro del módulo.
Recuerde configurar la conexión a la base de datos y copear las clases del proyecto
que se encuentran en lib y el esquema así como generar el modelo con el comando.
101
$ php symfony doctrine:build-model
Recuerde configurar un virtual host que apunte el directorio web si no, puede controlar
el acceso por medio de .htaccess que lo direccione a la carpeta web y que prohíba el
acceso a las demás carpetas.
102
Anexo C
Manual de Manual de operación
La aplicación cuenta con un menú el cual le permitirá realizar diferentes acciones tan
sólo dándole clic(ver Imagen 3)
Imagen 3: Menú de la Aplicación
Una vez seleccionada la acción le mostrara una tabla la cual contiene varios dibujos
que muestran la acción que puede realizar como modificar y eliminar también en la
parte superior con tiene varias imágenes las cuales tienen diferentes acciones como
crear nuevo registro y poder filtrar y/o ordenar (ver Imagen 4).
Imagen 4.- Acciones
103
Formulario el cual permite insertar un registro. (ver Imagen 5).
Imagen 5.- Insertar Registro
Formulario que permite modificar un registro. (ver Imagen 6).
Imagen 6.- Modificar un registro
104
top related