final

138
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

Upload: isai-martinez-rosas

Post on 10-Aug-2015

83 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Final

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

Page 2: Final

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

Page 3: Final

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

Page 4: Final

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

Page 5: Final

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

Page 6: Final

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

Page 7: Final

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

Page 8: Final

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

Page 9: Final

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

Page 10: Final

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

Page 11: Final

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

Page 12: Final

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

Page 13: Final

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

Page 14: Final

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

Page 15: Final

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

Page 16: Final

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

Page 17: Final

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

Page 18: Final

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

Page 19: Final

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

Page 20: Final

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

Page 21: Final

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

Page 22: Final

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.

Page 23: Final

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

Page 24: Final

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

Page 25: Final

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

Page 26: Final

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

Page 27: Final

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

Page 28: Final

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

Page 29: Final

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

Page 30: Final

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

Page 31: Final

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

Page 32: Final

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

Page 33: Final

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

Page 34: Final

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

Page 35: Final

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

Page 36: Final

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

Page 37: Final

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

Page 38: Final

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

Page 39: Final

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

Page 40: Final

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

Page 41: Final

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

Page 42: Final

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

Page 43: Final

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

Page 44: Final

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

Page 45: Final

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

Page 46: Final

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

Page 47: Final

);

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

Page 48: Final

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

Page 49: Final

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

Page 50: Final

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

Page 51: Final

$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

Page 52: Final

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

Page 53: Final

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

Page 54: Final

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

Page 55: Final

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

Page 56: Final

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

Page 57: Final

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

Page 58: Final

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

Page 59: Final

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

Page 60: Final

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

Page 61: Final

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

Page 62: Final

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

Page 63: Final

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.

Page 64: Final

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

Page 65: Final

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.

Page 66: Final

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.

Page 67: Final

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.

Page 68: Final

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

Page 69: Final

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

Page 70: Final

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

Page 71: Final

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

Page 72: Final

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

Page 73: Final

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

Page 74: Final

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

Page 75: Final

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

Page 76: Final

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

Page 77: Final

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

Page 78: Final

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

Page 79: Final

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

Page 80: Final

79

Page 81: Final

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

Page 82: Final

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

Page 83: Final

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

Page 84: Final

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

Page 85: Final

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

Page 86: Final

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

Page 87: Final

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

Page 88: Final

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

Page 89: Final

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

Page 90: Final

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

Page 91: Final

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

Page 92: Final

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

Page 93: Final

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

Page 94: Final

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

Page 95: Final

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

Page 96: Final

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

Page 97: Final

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

Page 98: Final

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

Page 99: Final

Unidad de medida

98

Page 100: Final

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

Page 101: Final

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

Page 102: Final

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

Page 103: Final

$ 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

Page 104: Final

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

Page 105: Final

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