You are on page 1of 104

INSTITUTO TECNOLÓGICO DE CELAYA

Módulo de Programa de Trabajo anual y Programa operativo anual
MEMORIA DE RESIDENCIA PROFESIONAL 11/01/2010 - 19/05/2010 INSTITUTO TECNOLÓGICO DE CELAYA

ASESOR EXTERNO: JOSÉ GUILLERMO FIERRO MENDOZA

PRESENTA José Antonio Ortiz Corona 05032003

ASESOR INTERNO: ING. JOSÉ GUILLERMO RODRÍGUEZ VILLAFAÑA REVISOR: ING. ZULMA G. ALAMOS VILLANUEVA REVISOR: ING. JOSÉ BENIGNO MOLINA CASTRO

CELAYA, GUANAJUATO

AGOSTO 2010

Tabla de contenido INTRODUCCIÓN ............................................................................................................ 4 1. CAPÍTULO MARCO DE REFERENCIA .................................................................. 6 1.1. SITUACIÓN HISTÓRICA, SOCIAL, POLÍTICA, ECONÓMICA Y CULTURAL .......................... 6 1.2. LEMA Y ESCUDO ................................................................................................... 7 1.3. FILOSOFÍA INSTITUCIONAL ..................................................................................... 8 1.3.1. Principios ..................................................................................................... 8 1.3.2. Creencias .................................................................................................... 9 1.3.3. Código de Ética ........................................................................................... 9 1.3.4. Objetivo ..................................................................................................... 10 1.3.5. Misión: ....................................................................................................... 10 1.3.6. Visión ......................................................................................................... 11 1.3.7. Políticas de Calidad ................................................................................... 11 1.3.8. Caracterización de la empresa .................................................................. 11 1.4. EL CENTRO DE CÓMPUTO DEL INSTITUTO TECNOLÓGICO DE CELAYA ...................... 12 1.4.1. Área de desarrollo de software .................................................................. 13 1.4.2. En forma interna: ....................................................................................... 14 1.4.3. En forma externa: ...................................................................................... 14 1.4.4. Coordinador del área de desarrollo ........................................................... 15 1.4.5. Analistas y Programadores........................................................................ 15 2. JUSTIFICACIÓN DEL PROYECTO........................................................................ 17 2.1. 2.2. 2.3. 2.4. 2.5. 2.6. PROGRAMA DE TRABAJO ANUAL(PTA) Y PROGRAMA OPERATIVO ANUAL(POA) ...... 17 OBJETIVOS GENERALES ...................................................................................... 18 OBJETIVOS ESPECÍFICOS .................................................................................... 18 PROBLEMAS A RESOLVER .................................................................................... 18 ALCANCES ......................................................................................................... 19 LIMITACIONES DEL SISTEMA ................................................................................. 19

3. CAPÍTULO MARCO TEÓRICO ............................................................................. 20 3.1. APLICACIÓN WEB ................................................................................................ 20 3.1.1. Antecedentes Web .................................................................................... 20 3.1.2. El Servidor Web ......................................................................................... 20 3.2. SERVIDOR W EB APACHE ..................................................................................... 22 3.2.1. ¿Qué es el Servidor Apache...................................................................... 22 3.2.2. Características de Apache......................................................................... 23 3.3. POSTGRESQL ..................................................................................................... 23 3.3.1. ¿Qué es PostgreSQL? .............................................................................. 23 3.3.2. Características de PostgreSQL ................................................................. 24
1

3.4. APACHE TOMCAT ................................................................................................ 25 3.4.1. ¿Qué es Tomcat? ...................................................................................... 25 3.4.2. ¿Dónde puedo descargar Tomcat? ........................................................... 25 3.4.3. ¿Cuáles son los servlets?,¿Cuáles son las páginas JSP? ........................ 25 3.5. IREPORT ......................................................................................................... 26 3.5.1. ¿Qué es iReport? ...................................................................................... 26 3.5.2. Características de iReport ......................................................................... 27 3.6. JAVASCRIPT (JQUERY Y JQUERY UI) ................................................................... 28 3.6.1. ¿Qué es Jquery? ....................................................................................... 28 3.6.2. Ventajas en usar Jquery ............................................................................ 28 3.7. ¿QUÉ ES JQUERY UI? ........................................................................................ 28 3.7.1. Ventajas en usar JQuery UI ....................................................................... 29 3.8. PHP .................................................................................................................. 29 3.8.1. ¿Qué es PHP? .......................................................................................... 29 3.8.2. ¿Qué se puede hacer con PHP? ............................................................... 30 3.8.3. Ventajas de PHP ....................................................................................... 31 3.8.4. Ventajas adicionales de PHP .................................................................... 31 3.9. SYMFONY........................................................................................................... 33 3.9.1. Symfony en pocas palabras ...................................................................... 33 3.9.2. Características de Symfony ....................................................................... 34 3.9.3. Entorno de desarrollo y herramientas ........................................................ 35 3.9.4. ¿Quién ha desarrollado Symfony y por qué motivo? ................................. 36 3.9.5. Conceptos básicos .................................................................................... 38 3.9.6. Programación Orientada a Objetos (OOP) ................................................ 38 3.9.7. Métodos mágicos ...................................................................................... 38 3.9.8. PEAR (PHP Extension and Application Repository) .................................. 39 3.9.9. Mapeo de Objetos a Bases de datos (ORM) ............................................. 40 3.9.10. Desarrollo rápido de aplicaciones (RAD) ................................................... 43 3.9.11. YAML ......................................................................................................... 45 3.9.12. Resumen Symfony .................................................................................... 48 3.10. EL PATRÓN MVC ................................................................................................ 48 3.10.1. Las capas de la arquitectura MVC ............................................................. 49 3.10.2. Programación simple ................................................................................. 49 3.10.3. Separando la presentación ........................................................................ 51 3.11. DOCTRINE .......................................................................................................... 54 3.11.1. ¿Qué es Doctrine? .................................................................................... 54 3.11.2. ¿Qué es un ORM? .................................................................................... 54 3.11.3. Información Básica ................................................................................... 55 3.12. Razones para utilizar Symfony ..................................................................... 55 3.13. LINUX DEBIAN .................................................................................................... 57

2

........... ANÁLISIS DE REQUERIMIENTOS ........................4................ DETECCIÓN Y CORRECCIÓN DE ERRORES.... 68 4...........1............ 69 4.. DESCRIPCIÓN DE LAS ACTIVIDADES REALIZADAS ..... El procedimiento del Programa de Trabajo Anual ........ 67 4................................................................................. 72 4.........1...5..............1 El procedimiento del Programa Operativo Anual ........... REFERENCIAS DE INTERNET ........... 63 4............1.... 57 4.......5. 59 4.................................3..................................1........................................................... 75 5............................. 66 4....... DESARROLLO DE LA INTERFAZ DEL USUARIO .... 66 4................................6........................ Diagrama de caso de uso POA ............................................... Análisis de las herramientas de desarrollo ............3....... Validación del sistema ...........................1...................................1................... 79 3 ........................................................ 74 4.......... Capacitación para el uso de las herramientas de desarrollo ....2.........................................................1....... 60 4........................... ANEXOS ......... 74 4.....................3............................................. 63 4........................... ANÁLISIS DEL SISTEMA .1....................................3.................1.. 76 6.........2......................................................... PLANTEAMIENTO DEL PROBLEMA ...................................2....... Prueba del sistema ................................ 78 7.......................................................... Programa Operación Anual .......2. CONCLUSIÓN .......... 59 4............... Diagrama de caso de uso PTA .................. 65 4..............................................4........2... 69 4.................................5...................... ¿Qué es Debian? ...........13............ ANÁLISIS DE DISEÑO Y DESARROLLO DE LA BASE DE DATOS .......1...............1................................

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. haciendo este de vital importancia. en objetivos y metas concretas a desarrollar en el corto plazo. simplificar el trabajo diario de los usuarios permitiendo tener un mejor rendimiento y diminución de fallas al realizarlo. teniendo efectos favorables para la empresa o institución que lo realice. En el Instituto Tecnológico de Celaya se atiene de un proceso de planeación constante. y un proceso de planeación operativo anual ejecutado. 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 que una institución responda a las necesidades e intereses de su entornó. que permita ofrecer programas educativos pertinentes al sector productivo y con altos estándares de calidad. se necesita que desarrolle un proceso de planeación constante. cuyo resultado final es el Programa Operativo Anual (POA) y el Programa de Trabajo Anual (PTA). que permita ofrecer programas educativos pertinentes al sector productivo y con altos estándares de calidad. como es el Instituto tecnológico de Celaya. 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. para lograr la meta es necesario crear varias acciones y asignar los departamentitos involucrados en estas. así como conocer el nivel de aprovechamiento de los recursos asignados. el cual consiste en adaptar las metas del PIID a las necesidades del tecnológico. El Programa Operativo Anual (POA) es una herramienta que nos permite convertir los lineamientos generales de la planeación de las actividades. A dicha programación se le debe dar seguimiento. es por este motivo que es necesario que forme parte de una estructura integral de una institución educativa de excelencia.Introducción Actualmente es necesario tener un sistema que permita organizar y estructurar la información. para elevar la calidad en los Servicios Educativos. 4 .

El presente proyecto tiene como objetivo crear una aplicación web la cual permitirá la facilidad de captura de los procesos de PTA y POA. 5 . a los jefes de departamento y al personal administrativo de planeación. el cual contara con una interfaz intuitiva.

A partir de entonces y hasta la fecha ha evolucionado tanto en el perfil de servicios educativos como en la infraestructura. en 1986 la de Ingeniería Mecánica. laboratorios instalaciones diversas en un ambiente de hermosas áreas verdes. La primera Maestría que fue la Ingeniería Química. 1: Instituto Tecnológico de Celaya En materia de instalaciones físicas y equipamiento de laboratorios y talleres. 1993 la de Ingeniería Administrativa y en 1994 la de Ingeniería Industrial. nace el lunes 14 de abril de 1958. En 1970 se desincorporan los estudios de secundaria y en 1984 los de bachillerato.1. Situación histórica. social. 6 . En 1962 inician los programas de Educación Superior impartiendo la carrera de Ingeniería Industrial en diversas especialidades. ha sido notable el paulatino avance hasta llegar a cubrir casi en su totalidad 13 hectáreas con aulas. política. Capacitación Técnica para Trabajadores y Preparatoria Técnica Especializada. Imagen 1. económica y cultural El Instituto Tecnológico de Celaya. 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. inicio en 1980.1. como un Centro de Segunda Enseñanza. CAPÍTULO MARCO DE REFERENCIA 1.

Consciente de los cambios que la comunidad nacional e internacional han generado en el Estado. En el concurso para seleccionar el Escudo del Tecnológico. 7 . por la calidad de enseñanza que se imparte. 2: Escudo del ITC. alumno con la credencial No. Luis ―Sony‖ Filoteo Ruiz fue el ganador. 1.Ahora el Tecnológico goza de un reconocido prestigio a nivel nacional. la investigación y divulgación del quehacer científico y la alta capacidad de su planta de profesores-investigadores. Imagen 1. resultando triunfador del concurso el lema ―La Técnica por un México mejor‖. 320 del primer año grupo ―D‖ de Subprofesional en la especialidad de ―Equipo Agrícola‖. propuesto por el alumno Fernando Mendoza Ochoa. 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. el diseñado por el Prof. y tomando como base el estudio Guanajuato Siglo XXI.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.

pertenece al sistema Nacional de Institutos Tecnológicos. emocionales y axiológicas. un rayo eléctrico color rojo y las siglas de la Institución ―ITC‖ en color verde. 2. es inacabada pero en continuo proceso de desarrollo. Filosofía Institucional El Instituto Tecnológico de Celaya es una institución de educación superior pública federal. investigación y vinculación. La humanización consiste en propiciar el desarrollo armónico de las potencialidades físicas. 1. económica y socialmente.3. es inmanente pero al mismo tiempo busca trascender a lo largo de su vida. un engrane color gris.3. realiza docencia.1. Entender por educación el proceso de la humanización individual y colectiva que conduce a una mejor calidad de vida. intelectuales. conocida en la mayor parte del país como ―La bola de Agua de Celaya‖. 8 . tecnológica. 1. es autómata pero al mismo tiempo independiente. y científica. que aseguran la formación integral de profesionistas a nivel licenciatura y postgrado. como funciones sustantivas. con vocación de servicio y capaces de transformar el entorno. que representa el carácter técnico del plantel educativo. tiene como característica principal el haber sido ensamblada mediante la técnica Antigua del remache. Para su diseño se tomaron dos aspectos básicos: 1. El aspecto institucional esta simbolizado por el engrane y el rayo eléctrico. Para el instituto cada persona es un fin en sí misma. El aspecto regional que está representado por la torre hidráulica.Está constituido por una Torre Hidráulica (―Bola del Agua de Celaya‖). Principios     La filosofía educativa del instituto se basa en el artículo 3 constitucional y en la ley General de Educación.

3. En nuestras tradiciones populares. Integridad: Acciones y palabras honestas y dignas de credibilidad. En nuestro país y en los mexicanos. En la fortaleza de los vínculos familiares. El instituto desea constituirse en una sociedad más participativa. Código de Ética       Bien común: Por encima de los intereses personales. la convivencia y la justicia. la responsabilidad y la libertad de las personas. En la colaboración. En nuestra historia y nuestra cultura como preludio de nuestro futuro. En nuestra comunidad educativa.3. en la conciencia moral. Transparencia: Garantizar el acceso a la información respetando la privacidad que corresponda 9 . Justicia: Congruencia con la procuración de respeto al estado de derecho. En el futuro que nosotros preparamos.  El instituto entiende que la tecnología es un pilar fundamental en el desarrollo de una sociedad. más equitativa. 1. En el trabajo en equipo. tolerante e incluyente que propicie el proceso de humanización para todos. Creencias           El instituto cree en la vida. más justa. Imparcialidad: No conceder las preferencias ni privilegios indebidos a persona alguna. Honradez: No usar en beneficio ilegitimo el cargo público.2. En la educación.3. 1.

Finalmente. 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. Objetivo El objetivo del Instituto consiste en llevar a cabo programas de docencia. Igualdad: Procurar paridad de oportunidades para todos. Generosidad: Actual solidariamente frente a las personas desprotegidas y a quienes padecen pobreza y marginación. defensa y preservación del entorno cultural y ecológico. 1. investigación y extensión en el contexto de la educación superior a nivel licenciatura y posgrado.4. Generosidad: Actual solidariamente frente a las personas desprotegidas y a quienes padecen pobreza y marginación. La PLANEACIÓN como área de apoyo a las anteriores funciones sustantivas. 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.3. Misión: 10 . 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. 1.5. Entorno cultural y ecológico: Respeto.3. Liderazgo: Promoción y apoyos de todos estos compromisos. 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.       Rendición de Cuentas: Eficacia y calidad en la gestión de la administración. Respeto: Trato amable y tolerancia para todos. El quehacer educativo se basa en tres funciones sustantivas: la DOCENCIA como medio para la adquisición y práctica del conocimiento disciplinario. observando los principios morales que dan sustento a una sociedad exitosa.

técnico. cultural. 11 . en la generación y aplicación del conocimiento. mediante la eficacia de un Sistema de Gestión de la Calidad y de mejora continua.3. Caracterización de la empresa Razón social: Instituto Tecnológico de Celaya (ITC).7. amplia aceptación de egresados. orientándolos hacia la satisfacción de sus clientes sustentada en la Calidad del Proceso Educativo. conforme a la norma ISO 9001:2008/NMX-CC-9001-IMNC-2008. Visión Ser reconocidos en la red internacional de educación tecnológica superior por la excelencia en programas académicos.6. Organigrama: Imagen 1. científico. 1.3. con amplio sentido crítico y de servicio a la sociedad.8. capaces de responder de manera efectiva y específica a las necesidades del entorno.3. Sector: Educativo. 1. deportivo.Formar personas íntegras.3. por generación y transformación del conocimiento. sólida formación de alumnos. 1. al servicio de México. Políticas de Calidad El Instituto Tecnológico de Celaya establece el compromiso de implementar todos sus procesos. para cumplir con sus requisitos. liderazgo académico. cívico y ecológico. altos índices de titulación y graduación. servicios oportunos y sistemas eficientes de administración y gestión.

4. 12 . 3: Organigrama Institucional.Imagen 1. 1. 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.

Aplicar la estructura orgánica autorizada para el Centro de Cómputo y los procedimientos establecidos. 13 . los que son orientados a la satisfacción de necesidades de información tanto interna como externa que lo soliciten.Entre las funciones del Centro de Cómputo dentro del ITC se encuentran:            Planear. diseño y programación de sistemas de los procesos aprobados. el mantenimiento y el buen funcionamiento de los equipos de cómputo. validación y explotación de información del instituto. Área de desarrollo de software El área de desarrollo del Centro de Computo del ITC. el mantenimiento de estos sistemas y la explotación de los recursos computacionales con que cuenta el departamento.1. Establecer y mantener actualizados los sistemas de capacitación. controlar y evaluar las actividades de desarrollo de sistemas y servicios de cómputo. captura y procesamiento de información del instituto. Organizar. Coordinar el análisis.4. Controlar la operación. coordinar y controlar los servicios de almacenamiento. 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. tiene definidas sus funciones para la creación de sistemas de información. coordinar.

Analista de Sistemas. Cursos para la explotación de paquetería especifica. Promoviendo cursos tanto institucionales como externos.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. en dominio de los organismos e instituciones privadas y particulares.4.2. como en sistemas operativos. Mantenimiento a los sistemas creados. 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. El personal integrante del área de desarrollo debe estar constituida por:    Coordinador de área de desarrollo. Programadores.  Proporcionando soporte técnico a las carreras impartidas en la institución que hagan uso de los recursos computacionales existentes.4. 14 . 1. basados en los recursos computacionales. 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.1. técnicos y materiales existentes que provoque ingresos al departamento y al instituto.

4. 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. por lo que.4. 15 . que involucra los límites respecto a permisos de acceso a la información por cada departamento y por cada usuario. como aplicaciones tenga la función administrativa que se procesa y que son parte integral del sistema. Tales módulos de procesamiento de información deben ser delimitados por la función administrativa que controlan. ya que cada módulo.4. 1. esto implica la generación de archivos ficticios y consuma de más tiempo. las siguientes divisiones a partir de este punto llegaran a la profundidad del manejo de información por campos. puede estar formado por una indeterminada cantidad de submodulos de procesamiento de información. la implantación de un sistema de información debe ser meticulosamente tratado. para una mejor y más clara explotación. Analistas y Programadores El análisis y la programación de los módulos descritos son verdaderamente extensos. 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.1. 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). Cuando los sistemas de información son orientados a la satisfacción institucional. se debe utilizar la metodología institucional estandarizada. De la misma forma. y esto habla de la cantidad de tiempo y recursos tanto humanos.5. pues una vez elaborada una parte de un submodulo debe ser probada. como materiales que están implicados.

No así cuando tales sistemas estén orientados a satisfacer las necesidades de organismos privados o particulares. 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 . que en cuyo caso serán estos los que propongan la metodología adecuada en cada aplicación.

tanto a nivel de usuarios como de las necesidades en las aplicaciones.2. la cual si no se tiene sé debe de descargar de la página oficial de java (www. si no es así se tiene que descargar. otro requisito es tener la aplicación en la computadora.    Insegura dado que para el acceso a la información se tiene que dejar un puerto abierto. el tiempo de descarga dependerá de la conexión de internet. Interfaz poco amigable para el usuario. se ha solicitado realizar una aplicación web para el proceso PTA y POA. 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.1. 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. son más rápidos y los errores son casi nulos. Programa Anual(POA) de Trabajo Anual(PTA) y Programa Operativo Para responder a los cambios que se presentan en el ambiente de la institución. Poco intuitiva en el modo de búsqueda de información así como de captura.java. si no porque se ahorran recursos. dificultad en las actualizaciones del sistemas. 2. 17 . Actualmente existe una aplicación de escritorio la cual cuenta con la siguiente problemática. Para su funcionamiento es necesario cumplir con más de un requisito que es: tener la maquina virtual de java.com).

2. 2. Se integrado como módulo al Sistema Integral de Información.2. Objetivos Generales Brindar al Instituto Tecnológico de Celaya una herramienta que permite planear.4. flexible e integral. con un enfoque integral. ejecutar. Las búsquedas se realizaran en una forma adecuada y ordenada. La interfaz sera mas intuitiva para facilitar su uso. Un sistema que involucre a la Institución en el proceso de Planeación de una forma sencilla. programas y presupuestales acciones generales y particulares para el cumplimiento de las metas de los programas de desarrollo. 18 .3. así como formatos diseñados según las necesidades ITC.     Manejo de reglas que permitirán un mejor control de información. programar. 2. Se reducira el tiempo de respuesta a las solicitudes. Se reducira el tiempo que se tarda en capturar la información. controlar y reportar las actividades y acciones necesarias para el cumplimiento de los programas de desarrollo. Objetivos Específicos  Emitir los documentos para el cumplimiento de las normas de calidad establecidas. presupuestar. ya que ese software fue proporcionado por la Dirección General de Educación Superior Tecnológica. Se reducira el tiempo que se tardan en generar los reportes. emitiendo los formatos oficiales. Partir de las metas de los programas de desarrollo a mediano y largo plazo. ágil.No forma parte del Sistema Integral de Información con el que cuenta el Instituto Tecnológico de Celaya. Permitir establecer estrategias.        Problemas a resolver Actualización de herramientas de desarrollo.

19 . Facilitará el mantenimiento de la aplicación por su forma de desarrollo. 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.por la facilidad de agregar módulos en el proyecto.5. garantizando que la información que captura cada usuario sea la correcta . La accesibilidad de la aplicación se hará por medio de un navegador web. 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. Facilitará la escalabilidad de la aplicación. Las versiones de Symfony pueden variar en diversas funciones.    Para visualizar los reportes es necesario contar con el programa Adobe Acrobat Reader en la maquina cliente. La información estará disponible en cualquier momento y desde cualquier lugar.4.  Los nombres de las tablas y columnas de la base de datos debe de ser en minúsculas.4. Tendrá un mejor control en la seguridad de la información. 2. Facilitar la obtención de la información por medio de búsquedas más inteligentes y agiles.6.2. Contara con una interfaz agradable e intuitiva. Alcances      Se integrará la aplicación al sistema integral de información. así como un navegaron. por lo que se sugiere leer la documentación de la versión que se va utilizar en el proyecto.2. El servido deberá contar con una versión de php mayor o igual a 5.

1. 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.1. 3. El Servidor Web Un servidor Web es un programa que está sobre el servidor que escucha las peticiones HTTP.3.1. Antecedentes Web Tim Berners-Lee crea el primer navegador de que funcionaría en modo texto y para UNIX.2. haciendo una necesidad la creación de aplicaciones más rápidas. 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). Capítulo Marco teórico 3. 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. 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. ligeras y robustas que permitan utilizar el Web. Este protocolo pertenece a la capa de aplicación en el modelo OSI. 3.1. Su función 20 .

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. Este tipo de servidores siempre será fundamental en el desarrollo de las aplicaciones del lado del servidor (server side applications). páginas web o simplemente páginas HTML. 21 . el de aplicaciones requiere hacer una ejecución del script relacionado con la petición. no importando el tipo de petición que realice el cliente. Diremos que para definir la parte de servidor de páginas. A diferencia de un servidor de páginas.es transferir el hipertexto. En un servidor Web se deben identificar dos partes fundamentales. ya que se ejecutarán sobre él. siempre devolverá un resultado HTML. CLIENTE Petición ¿Procesamiento? NO SI Servidor de Páginas Generar Página Envía datos al usuario Servidor de Aplicación Ejecuta Programa o Script Imagen 3. que será transmitida al cliente por el servidor de páginas. la parte de servidor de páginas y la otra el servidor de aplicaciones. 1: Funcionamiento de un Servidor Web. para generar una página Web.

que es muy importante en cualquier aplicación que implique un proceso. ¿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. Estas dos partes nos dan como resultado una página dinámica o bien una aplicación Web.1. Está tecnología proporciona soporte para el acceso a bases de datos. además. son ejecutadas sobre la máquina del cliente dentro de su navegador web que es el encargado de interpretar este código ó script. que al ejecutarse lo hacen sobre el servidor. Este texto describe de manera resumida la historia del Grupo Apache. y solo pueden ser vistas desde el servidor. reconociendo su labor y mencionar que cualquiera puede unirse a esta labor. con el uso de Internet y la web para comunicarse. Las tecnologías del Lado del Servidor son secciones de código dentro de una página Web. disponible en todas las plataformas. Estos voluntarios son conocidos como el Grupo Apache. gratuito y con disponibilidad de su código fuente. Apache no solo funciona en la mayoría (prácticamente en todas) de las versiones de Unix sino que.x y OS/2. Al principio. pero esto ya no es verdad. Apache se utilizaba para ser el primer servidor Web basado en Unix. planear y desarrollar el servidor y su documentación. El proyecto es administrado conjuntamente por un grupo de voluntarios en todo el mundo. funciona en Windows 2000/NT/9x y en muchos otros sistemas operativos de escritorio y de tipo servidor como son Amiga OS 3. Una de las principales características que presenta Apache es que funciona en plataformas virtuales muy utilizadas. código y documentación para el proyecto.2. Servidor Web Apache 3.Las aplicaciones Web. Además. 22 . Las tecnologías del Lado del Cliente. potente. cientos de usuarios han aportado ideas. también cuentan con dos partes. 3. las tecnologías Lado del Servidor (Server-Side) y Lado del Cliente (Client.Side).2.

Extensible: gracias a ser modular se han desarrollado diversas extensiones entre las que destaca PHP.1). Se desarrolla de forma abierta.1. Características de Apache Apache es uno de los mejores servidores de Webs utilizados en la red internet desde hace mucho tiempo.3. para el desarrollo de módulos específicos.     Basado en hilos en la versión 2. y con la API de programación de módulos. Modular: Puede ser adaptado a diferentes entornos y necesidades. rápido y eficiente. 3.3. Entre sus características destacan :    Multiplataforma. únicamente le hace competencia un servidor de Microsoft. 23 . informes de fallos y actualizaciones para la solución de los mismos.3.2. Es un servidor de web conforme al protocolo HTTP/1.1. con los diferentes módulos de apoyo que proporciona. Postgresql 3. ¿Qué es PostgreSQL? PostgreSQL es un sistema de base de datos de gestión de objeto-relacional (ORDBMS) basado en Postgres. Postgres fue pionera en muchos conceptos que sólo estuvo disponible en algunos sistemas de bases de datos comerciales mucho más tarde. desarrollado en la Universidad de California en Berkeley del Departamento de Ciencias de la Computación. versión 4. un lenguaje de programación del lado del servidor. obteniendo nuevas ideas.2. el IIS. continuamente actualizado y adaptado a los nuevos protocolos (HTTP 1. que tanto gusta a los usuarios de LINUX.0. Por lo que este servidor es uno de los mayores triunfos del software libre. Incentiva la realimentación de los usuarios. Apache es un servidor web flexible.2.

2. PostgreSQL está ampliamente considerado como el sistema de bases de datos de código abierto más avanzado del mundo.1. optimización de consultas. y es capaz de manejar complejas rutinas y reglas. transacciones. Posee muchas características que tradicionalmente sólo se podían ver en productos comerciales de alto calibre. multi-versión. debido a un nuevo esfuerzo de código abierto y a la incrementada funcionalidad del software. Integridad Referencial: PostgreSQL soporta integridad referencial. La siguiente es una breve lista de algunas de esas características. a partir de PostgreSQL 7.3. Soporte SQL Comprensivo: PostgreSQL soporta la especificación SQL99 e incluye características avanzadas tales como los joins (uniones) SQL92. control de concurrencia. la cual es utilizada para garantizar la validez de los datos de la base de datos. y arrays (arreglos). DBMS Objeto-Relacional: PostgreSQL aproxima los datos a un modelo objetorelacional. Postgresql fue renombrado a PostgreSQL.x. Ejemplos de su avanzada funcionalidad son consultas SQL declarativas. 3.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 objetorelacionales llamado Postgresql. En 1996. tras un breve tiempo como Postgres95. funciones métodos de acceso y tipos de datos definidos por el usuario. herencia. Altamente Extensible: PostgreSQL soporta operadores. 24 . soporte multi-usuario. 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. 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.

¿Dónde puedo descargar Tomcat? En la página de descarga de Yakarta ! 3.API Flexible: La flexibilidad del API de PostgreSQL ha permitido a los vendedores proporcionar soporte al desarrollo fácilmente para el RDBMS PostgreSQL. PHP. Otra ventaja de PostgreSQL es su habilidad para usar Perl. Perl. Hay un proceso maestro que se ramifica para proporcionar conexiones adicionales para cada cliente que intente conectar a PostgreSQL. 3. Estas interfaces incluyen Object Pascal. Desarrollado bajo la licencia Apache en un entorno abierto y participativo. ya que 25 .3.2 y JavaServer Pages 1. 3. Ruby. Lenguajes Procedurales: PostgreSQL tiene soporte para lenguajes procedurales internos.4. Debido a que son residentes en la memoria. incluyendo un lenguaje nativo denominado PL/pgSQL. que pretende ser una colaboración del de su clase mejores desarrolladores de todo el mundo. se ejecuta dentro de un contenedor de servlets (por ejemplo. Python.¿Cuáles son las páginas JSP? En pocas palabras.1. Cliente/Servidor: PostgreSQL usa una arquitectura proceso-por-usuario cliente/servidor.4. ODBC. que puede responder rápidamente a las solicitudes. y Pike. PL/SQL. TCL. Apache tomcat 3.x para manejar procesos. C/C++.4. Tomcat!). Java/JDBC. Este lenguaje es comparable al lenguaje procedural de Oracle. ¿Cuáles son los servlets?.1 tecnologías. los servlets Java son programas residentes en memoria. Ésta es similar al método del Apache 1. Python. ¿Qué es Tomcat? Tomcat es la implementación de referencia oficial de la especificación Java Servlet 2. o TCL como lenguaje procedural embebido.4.2.3.

iReport está además integrado con JFreeChart. JavaBeans. y cada uno tiene su lugar en la astucia de desarrolladores de la caja de herramientas. La diferencia clave es el lenguaje de programación de la opción. a diferencia basada en secuencias de comandos CGI. etc. perl. subinformes. etc.1.no incurren en los gastos generales de la creación de procesos y la limpieza posterior. Ha habido muchas comparaciones de estas tecnologías. iReport le permite a ingenieros que apenas están aprendiendo 26 . Por ejemplo.sin cara ". imágenes. Los datos para imprimir pueden ser recuperados por varios caminos incluso múltiples uniones JDBC. PHP usa una C / C + + / híbrida Java.5. una de la biblioteca gráficas OpenSource más difundida para Java. ¿Qué es iReport? La herramienta iReport es un constructor / diseñador de informes visual. que combinan la programación y secuencias de comandos con un lenguaje de marcado como HTML." JSP es comparable a otras tecnologías como PHP y ASP. IREPORT 3.5. Un servlet casi se puede considerar como un applet que se ejecuta en el lado del servidor . poderoso. Este instrumento permite que los usuarios corrijan visualmente informes complejos con cartas.. Es más fácil combinar la plantilla fija o estática de datos con contenido dinámico. por ejemplo. "La tecnología JSP es una extensión de la tecnología servlet creado para apoyar creación de páginas HTML y XML. en consonancia simple mecanismo para extender la funcionalidad de un servidor web y para acceder a los sistemas empresariales existentes. 3. y JSP utiliza toda la potencia del lenguaje de programación Java. intuitivo y fácil de usar para JasperReports escrito en Java. TableModels. ASP utiliza VBScript. XML. etc Desde servlet sitio The Sun : "El Java Servlet API TM proporciona a los desarrolladores web con una.

Deshacer/ repetir ilimitados. (ej. Coreano. campos de texto. Japonés. llenador. Soporte para fuentes TrueType Soporte para localización. Soporte para todas las bases de datos accesibles para JDBC.2. Soporte para plantillas de documentos. 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. Funcionalidades de Arrastrar y soltar.                   Editor incorporado con acentuó de sintaxis para expresiones escritas. Soporte virtual para todo tipo de fuente de datos. Asistente para crear informes de forma automática Soporte para subreportes. Contiene herramientas completas para dibujar rectángulos. Editor WYSIWYG para la creación de reportes. etc. y exportador de reportes integrados.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.5. graficas. Chino. 27 . líneas elipses.) Navegador para la estructura del documento Compilador. etiquetas. Soporte para gráficas. Soporte integrado para scriptlets. Característica de respaldo para archivos fuente. Manejo de una librería de objetos estándares. número de páginas). Soporte par Unicode y lenguajes non-Latin ( Ruso. sub-reportes y código de barras. Extensibilidad a través de plug-ins. 3.

JavaScript (Jquery y Jquery UI) 3. efectos avanzados y de alto nivel.6. lo que hace fácil encontrar soluciones ya creadas en jQuery para implementar asuntos como interfaces de usuario.7. 3. efectos diversos. bien documentado y con un gran equipo de desarrolladores a cargo de la mejora y actualización del framework. votaciones. Como es normal. es un producto serio. animación. construido en la parte superior de la jQuery JavaScript Library.2. etc. Sistema de acoplamiento. estable. que básicamente nos sirven para hacer lo mismo. que puede utilizar para construir aplicaciones web altamente interactivas. el control de eventos. ¿Qué es Jquery? Jquery v1. lo que hace suponer que es una de las mejores opciones. Otra cosa muy interesante es la dilatada comunidad de creadores de plugins o componentes. 3. Librería de Estilos. 28 .2 es una rápida y concisa que simplifica la Biblioteca Javascript documento HTML que atraviesa. Además. 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. 3.1. galerías. y las interacciones Ajax para el desarrollo web rápido. ¿Qué es JQuery UI? jQuery UI proporciona abstracciones de bajo nivel de interacción y animación. cada uno de los frameworks tiene sus ventajas e inconvenientes.6. Ventajas en usar Jquery Existen varias soluciones similares que también funcionan muy bien.   Asistente para crear tablas de contingencia. JQuery está diseñado para cambiar la forma en que escribes JavaScript. los widgets temable.6.4.

páginas PHP contienen HTML con código incluido en el mismo que hace "algo" (en este caso. PHP 3.7. 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".8. La meta de este lenguaje es permitir escribir a los creadores de páginas web. Ventajas en usar JQuery UI     Facilidad en la creación de interfaces de alto nivel de interacción y animación. es un lenguaje "Open Source" interpretado de alto nivel. aunque se puede hacer mucho más con PHP. Lo mejor de usar PHP es que es extremadamente simple para el principiante. ofrece muchas características avanzadas para los programadores profesionales. facilitando el uso de la aplicación. 29 . pero a su vez.1. Fácil implementación en el desarrollo Gran ahorro de tiempo en el desarrollo Cuenta con una licencia GPL y MIT 3.8. En lugar de usar muchos comandos para mostrar HTML. 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. generando HTML y enviándolo al cliente. es que el código es ejecutado en el servidor. La mayoría de su sintaxis es similar a C.3. especialmente pensado para desarrollos web y el cual puede ser incrustado en páginas HTML. El cliente recibirá los resultados de ejecutar el script. acrónimo de "PHP: Hypertext Preprocessor". ¿Qué es PHP? PHP. Java y Perl y es fácil de aprender. sin ninguna posibilidad de determinar qué código ha producido el resultado recibido. páginas dinámicas de una manera rápida y sencilla.1. Lo que distingue a PHP de algo como Javascript del lado-cliente. mostrar "Hola ¡soy un script PHP!).

Este tipo de uso es ideal para scripts ejecutados regularmente desde cron (en *nix o Linux) o el Planificador de tareas (en Windows). con PHP instalado. Consultar la sección Instrucciones de instalación para más información. También es posible escribir aplicaciones independientes de una plataforma. Puede crear un script PHP y correrlo sin necesidad de un servidor web o navegador. El intérprete PHP (CGI módulo). 3. Este es el campo más tradicional y el principal foco de trabajo. Estos scripts también pueden ser usados para tareas simples de procesamiento de texto. 30 .8. se puede utilizar para muchas otras cosas. no disponible en la distribución principal. Consultar la sección Usos de PHP en la línea de comandos para más información. puedes visitar las » páginas web del proyecto.  Scripts en la línea de comandos. Si está interesado en PHP-GTK. como procesar la información de formularios. conectándose con el servidor web. Y esto no es todo. un servidor web y un navegador. ¿Qué se puede hacer con PHP? PHP puede hacer cualquier cosa que se pueda hacer con un script CGI. y quisiera utilizar algunas características avanzadas en programas clientes. Existen principalmente tres campos en los que se usan scripts en PHP. Es necesario hacer funcionar el servidor.  Escribir aplicaciones de interfaz gráfica. Se necesitan tres cosas para que esto funcione. El resultado del programa PHP se puede obtener a través del navegador. Probablemente PHP no sea el lenguaje más apropiado para escribir aplicaciones gráficas. Solamente necesita el intérprete PHP para usarlo de esta manera. pero si conoce bien PHP.  Scripts del lado-servidor.2. generar páginas con contenidos dinámicos. se puede hacer mucho más. PHP-GTK es una extensión de PHP.Aunque el desarrollo de PHP está centrado en programación de scripts en ladoservidor. puede utilizar PHP-GTK para escribir dichos programas. o enviar y recibir cookies.

especialmente bajo ambientes Unix. cuando se configura como módulo de Apache. gráficos. Esto le permite al PHP ser utilizado en muchas áreas diferentes. PHP se integra muy bien junto a otro software.ME.bla.3. tales como encriptado. sino además no crear demoras en la máquina. XML y otras. Velocidad: No solo la velocidad de ejecución. PHP utiliza su propio sistema de administración de recursos y dispone de un sofisticado método de manejo de variables. Windows (95.NT.XP. Seguridad: El sistema debe poseer protecciones contra ataques. está listo para ser utilizado.2000.4. pero teniendo de respaldo una increíble comunidad de programadores y usuarios es mucho más difícil para lo bugs sobrevivir.8. Ventajas adicionales de PHP  PHP corre en (casi) cualquier plataforma utilizando el mismo código fuente. la cual es importante. PHP provee diferentes niveles de seguridad. Usuarios con experiencia en C y C++ podrán utilizar PHP rápidamente.8.3. seguridad y simplicidad.bla. Por esta razón no debe requerir demasiados recursos de sistema. estos pueden ser configurados desde el archivo . Otra característica a tener en cuenta seria la conectividad. Como en todos los sistemas se 31 . estabilidad. pudiendo ser compilado y ejecutado en algo así como 25 plataformas. Ninguna aplicación es 100% libre de bugs.bla) y Macs. conformando un sistema robusto y estable. incluyendo diferentes versiones de Unix. PHP dispone de una amplia gama de librerías. 3. y agregarle extensiones es muy fácil.ini Simplicidad: Se les debe permitir a los programadores generar código productivamente en el menor tiempo posible. Ventajas de PHP Las cuatro grandes características: Velocidad. Estabilidad: La velocidad no sirve de mucho si el sistema se cae cada cierta cantidad de ejecuciones.98.

y otros muchos. lo cual significa que el usuario no depende de una compañía específica para arreglar cosas que no funcionan. de hecho mucha de la funcionalidad del PHP se la debe al C en funciones como fread() o srtlen().  Rapidez. AOLServer. Algunas de las que ya vienen implementadas permiten manejo de gráficos. Entre los lenguajes del tipo C incluimos al Java y Javascript. así que se ejecuta rápidamente utilizando poca memoria. 32 . POP. fácilmente podrá crear una API para esta. calendarios. por esto cualquiera con experiencia en lenguajes del estilo C podrá entender rápidamente PHP. archivos PDF. XML. los scripts pueden ser ejecutados de manera independiente al OS.  PHP es Open Source. Flash. PHP actualmente se puede ejecutar bajo Apache. Siempre podrás disponer de ODBC para situaciones que lo requieran. Informix.  Una gran variedad de módulos cuando un programador PHP necesite una interfaz para una librería en particular.  Puede interactuar con muchos motores de bases de datos tales como MySQL. PostgreSQL.  PHP es completamente expandible. Cybercash. un conjunto de módulos y una variedad de extensiones de código. Roxen yTHTTPD. IIS. Otra alternativa es configurarlo como modulo CGI.  La sintaxis de PHP es similar a la del C.utiliza el mismo código base.  Muchas interfaces distintas para cada tipo de servidor. lo que lo hace extremadamente veloz. Oracle. así que muchos programadores se sentirán como en casa. además no estás forzado a pagar actualizaciones anuales para tener una versión que funcione. etc. MS SQL. Esta completamente escrito en C. IMAP. Está compuesto de un sistema principal (escrito por Zend). PHP generalmente es utilizado como modulo de Apache.

PostgreSQL. forzando al desarrollador a crear código más legible y más fácil de mantener. Linux. Para empezar. un framework facilita la programación de aplicaciones. gracias a sus características. Además.) como en plataformas Windows. Symfony 3. automatiza las tareas más comunes. 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. Oracle y SQL Server de Microsoft. el desarrollo de las aplicaciones web. Por último. ya que encapsula operaciones complejas en instrucciones sencillas. Symfony es compatible con la mayoría de gestores de bases de datos. como MySQL. etc. un framework proporciona estructura al código fuente.9. A continuación se muestran algunas de sus características. Ha sido probado en numerosos proyectos reales y se utiliza en sitios web de comercio electrónico de primer nivel. Symfony es un completo framework diseñado para optimizar. El resultado de todas estas ventajas es que no se debe reinventar la rueda cada vez que se crea una nueva aplicación web. Proporciona varias herramientas y clases encaminadas a reducir el tiempo de desarrollo de una aplicación web compleja.3.1. la lógica de servidor y la presentación de la aplicación web. separa la lógica de negocio. Además.9. Symfony está desarrollado completamente con PHP 5. 33 . permitiendo al desarrollador dedicarse por completo a los aspectos específicos de cada aplicación. Se puede ejecutar tanto en plataformas *nix (Unix.

así como la adaptación local de los contenidos. Independiente del sistema gestor de bases de datos.3. Automatización de características de proyectos web Symfony automatiza la mayoría de elementos comunes de los proyectos web. lo que permite su integración con librerías desarrolladas por terceros.9. como por ejemplo:   La capa de internacionalización que incluye Symfony permite la traducción de los datos y de la interfaz. 34 . ya que encapsulan grandes bloques de código en llamadas simples a funciones. en la que el desarrollador solo debe configurar aquello que no es convencional. Basado en la premisa de “convenir en vez de configurar”.2. Los helpers incluidos permiten minimizar el código utilizado en la presentación. pero lo suficientemente flexible como para adaptarse a los casos más complejos. 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.   Código fácil de leer que incluye comentarios de phpDocumentor y que permite un mantenimiento muy sencillo. además de ser lo suficientemente estable como para desarrollar aplicaciones a largo plazo. 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). Sencillo de usar en la mayoría de casos. Fácil de extender. 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.

El sistema de enrutamiento y las URL limpias permiten considerar a las direcciones de las páginas como parte de la interfaz. Los plugins.3. 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 . lo que asegura la obtención de datos correctos y mejora la experiencia de usuario. La gestión de la caché reduce el ancho de banda utilizado y la carga del servidor.     Los datos incluyen mecanismos de escape que permiten una mejor protección contra los ataques producidos por datos corruptos. el filtrado y la ordenación de datos. 3. Los formularios incluyen validación automatizada y relleno automático de datos (“repopulation”). las factorías (patrón de diseño “Factory”) y los “mixin” permiten realizar extensiones a medida de Symfony. 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.9. 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. Los listados son más fáciles de utilizar debido a la paginación automatizada. 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 soporte de e-mail incluido y la gestión de APIs permiten a las aplicaciones web interactuar más allá de los navegadores. además de estar optimizadas para los buscadores.

En el año 2003. El completo sistema de log permite a los administradores acceder hasta el último detalle de las actividades que realiza la aplicación. ¿Quién ha desarrollado Symfony y por qué motivo? La primera versión de Symfony fue publicada en Octubre de 2005 por Fabien Potencier. Fabien empleó un año entero para desarrollar el núcleo de Symfony.  El framework de desarrollo de pruebas unitarias y funcionales proporciona las herramientas ideales para el desarrollo basado en pruebas (“test-driven development”).9. Fabien llegó a la conclusión de que no existía ninguna herramienta con esas características. Fabien es el presidente de Sensio (http://www. Fabien realizó una investigación sobre las herramientas de software libre disponibles para el desarrollo de aplicaciones web con PHP.4. 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. 3. decidió que las herramientas disponibles habían alcanzado un grado de madurez suficiente como para integrarlas en un framework completo.    La interfaz de línea de comandos automatiza la instalación de las aplicaciones entre servidores.com/). una empresa francesa de desarrollo de aplicaciones web conocida por sus innovaciones en este campo.  La barra de depuración web simplifica la depuración de las aplicaciones. Después del lanzamiento de la versión 5 de PHP. basando su trabajo en el framework Mojavi (que también era un framework que seguía el funcionamiento MVC). fundador del proyecto y coautor de este libro. Es posible realizar cambios “en caliente” de la configuración (sin necesidad de reiniciar el servidor). ya que muestra toda la información que los programadores necesitan sobre la página en la que están trabajando.sensio. en la herramienta Propel para el mapeo de objetos 36 .

Después de utilizar Symfony en algunos proyectos. Fabien pidió a su compañero de trabajo François Zaninotto. que investigara el código fuente del programa y escribiera un libro sobre Symfony. que fuera fácil de recordar y que no estuviera asociado a otra herramienta de desarrollo. y además estaba libre como nombre de proyecto. mostrar la experiencia de Sensio y porque considera que es divertido hacerlo. la documentación era suficiente como para atraer a muchos desarrolladores. 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). Para que Symfony fuera un proyecto de software libre exitoso. El resto es historia. debía tener una documentación amplia y en inglés.a bases de datos (conocido como ORM. 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. el desarrollo web se hace más intuitivo y las aplicaciones resultantes son más robustas y más fáciles de mantener. Además. aprovechar la respuesta de los usuarios. La otra alternativa era “baguette”. ya que disponer de un framework efectivo es la mejor ayuda para el desarrollo eficiente y rápido de las aplicaciones. Fabien decidió publicarlo bajo una licencia de software libre. el otro coautor de este libro. 37 . Sus razones para liberar el proyecto fueron para donar su trabajo a la comunidad. cuando el proyecto se lanzó públicamente. Además. Fabien desarrolló originalmente Symfony para utilizarlo en los proyectos de Sensio. para aumentar la incorporación de usuarios al proyecto. Aunque el proceso fue arduo. no le gustan las mayúsculas. de “object-relational mapping”) y en los helpers empleados por Ruby on Rails en sus plantillas. aunque no es una palabra correcta en el idioma inglés (la palabra correcta es “symphony”). ―Symfony‖ era muy parecido a lo que estaba buscando.

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. ya que se necesitaría un libro entero para ello. deberían consultar la documentación oficial de PHP disponible en http://www. 3.3.6.7. método. KISS. Además. Métodos mágicos Uno de los puntos fuertes de los objetos de PHP es la utilización de los “métodos mágicos”. Programación Orientada a Objetos (OOP) La programación orientada a objetos (OOP. RAD. Los programas tradicionales pueden considerarse como una colección de funciones o como una lista de instrucciones de programación. herencia y muchos otros propios de la programación orientada a objetos. Puedes saltarte esta sección si conoces el significado de OOP.9.5. DRY. 38 .oop5.php. YAML y PEAR. Como Symfony hace un uso continuo de los mecanismos orientados a objetos disponibles en PHP 5. deberías conocer algunos conceptos básicos. TDD.php. llamadas objetos. por sus siglas en inglés Object-oriented programming) no va a ser explicada en este capítulo. que interactúan entre sí. objeto.9.basic. estos métodos son fáciles de reconocer ya que sus nombres siempre empiezan con 2 guiones bajos seguidos (__).net/manual/es/language. ORM. 3. es un requisito obligatorio el conocer la OOP antes de aprender Symfony. Este tipo de métodos permiten redefinir el comportamiento de las clases sin modificar el código externo.‖ PHP 5 incluye los conceptos de clase. Aquellos que no estén familiarizados con estos conceptos.9. Conceptos básicos Antes de empezar con Symfony. Con estos métodos es posible que la sintaxis de PHP sea más concisa y más fácil de extender.

La documentación oficial de PHP también explica los métodos mágicos (http://www. no es necesario decidir donde guardar los scripts. http://pear. PHP busca de forma implícita un método llamado toString(). instalar. // Se busca el método mágico echo $miObjeto->__toString(). al mostrar un objeto. está desarrollado con PHP y se incluye en las distribuciones estándar de PHP. Symfony utiliza los métodos mágicos de PHP.oop5. $miObjeto = new miClase(). el cual permite comprobar si se ha creado una visualización personalizada.php. echo $miObjeto.9. Como se muestra en el siguiente ejemplo.php. actualizar y desinstalar scripts de PHP.net/manual/es/language. por lo que deberías conocer su funcionamiento. PEAR (PHP Extension and Application Repository) PEAR es un “framework y sistema de distribución para componentes PHP reutilizables”. 3.magic. 39 .php). PEAR es un proyecto creado por la comunidad de usuarios de PHP. incluye documentación y muchos paquetes agrupados en categorías.Por ejemplo. SUGERENCIA El sitio web de PEAR.net/.8. Si se utiliza un paquete de PEAR. cómo hacer que se puedan utilizar o cómo extender la línea de comandos (CLI). PEAR permite descargar.

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. se debe ejecutar el siguiente comando: > pear upgrade PEAR 3.0. para acceder a la base de datos como si fuera orientada a objetos.9. no es necesario conocer la sintaxis de PEAR para utilizar Symfony. es necesario una interfaz que traduzca la lógica de los objetos a la lógica relacional. Los plugins de Symfony son paquetes de PEAR con una configuración especial. Los canales de PEAR solamente se pueden utilizar a partir de la versión 1.9. 40 . Afortunadamente. Por este motivo. Para actualizar PEAR.4. El proyecto Symfony dispone de su propio repositorio PEAR. El propio framework Symfony también está disponible como paquete de PEAR. también llamado canal. 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. Esta interfaz se denomina “mapeo de objetos a bases de datos” (ORM. Para comprobar si PEAR está instalado en el sistema. de sus siglas en inglés “object-relational mapping”).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. Lo único necesario es entender su funcionamiento y tenerlo instalado. PHP 5 y Symfony por el contrario son orientados a objetos. Mapeo de Objetos a Bases de datos (ORM) Las bases de datos siguen una estructura relacional. por lo que es necesario actualizar PEAR si se dispone de una versión anterior.

De esta forma. Con la programación orientada a objetos.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. El cambio se puede realizar modificando solamente una línea en un archivo de configuración. es muy sencillo cambiar a otro sistema de bases de datos completamente diferente en mitad del desarrollo de un proyecto. si se dispone de una tabla llamada Cliente con 2 campos. 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. puede que sea necesario acceder directamente al nombre completo (NombreCompleto). Por ejemplo. 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. 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. Los desarrolladores especializados en la programación con bases de datos pueden localizar fácilmente el código. } 41 . Nombre y Apellido. 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().' '. El prototipo se puede realizar utilizando SQLite y después se puede cambiar fácilmente a MySQL. La capa de abstracción utilizada encapsula toda la lógica de los datos. 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. PostgreSQL u Oracle cuando el cliente se haya decidido.

Para obtener el precio total de los productos del carrito y así realizar el pago.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. foreach ($this->getProductos() as $producto) { $total += $producto->getPrecio() * $item->getCantidad().org/trac/).phpdb. Propel. Por ejemplo. } return $total. que también es un proyecto de software libre. se puede añadir un método llamado getTotal() de la siguiente forma: public function getTotal() { $total = 0. 42 . } Y eso es todo.La documentación de este ORM se encuentra en el sitio web de Propel.(http://propel. la siguiente clase CarritoCompra almacena los productos (que son objetos). Imagina cuanto te hubiera costado escribir una consulta SQL que hiciera lo mismo. Propel está completamente integrado en Symfony. Se pude usar otros como Doctrine que se verá más adelante. es una de las mejores capas de abstracción de objetos/relacional disponibles en PHP 5.

9. 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. la falta de versatilidad de los lenguajes de programación (antes de ejecutar el programa se debe construir. 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. compilar y reiniciar) y sobre todo por el hecho de que los clientes no estaban dispuestos a adaptarse a otras metodologías. Stupid) 43 . Las consecuencias de estas metodologías para el desarrollador son numerosas. en la que cada nueva versión incorpora nuevas funcionalidades y se desarrolla en un breve espacio de tiempo. Estas ideas se resumen en el principio denominado KISS: ¡Haz las cosas sencillas. Los métodos utilizados deben ser lo más sencillos y directos posibles. como RAD (desarrollo rápido de aplicaciones) y el desarrollo ágil de software.10. idiota! (Keep It Simple. la programación de aplicaciones web fue un tarea tediosa y muy lenta. Afortunadamente. los equipos de desarrollo deben adaptarse a esas necesidades y tienen que poder cambiar la estructura de una aplicación de forma rápida. las empresas reaccionan más rápidamente y los clientes cambian de opinión constantemente durante el desarrollo de los proyectos. Este modelo se veía favorecido por la baja velocidad de desarrollo. El programador no debe pensar acerca de las versiones futuras al incluir una nueva funcionalidad. Desarrollo rápido de aplicaciones (RAD) Durante mucho tiempo. la aplicación se desarrolla de forma iterativa. se han creado los diagramas UML (Unified Modeling Language) y se ha producido abundante documentación sobre el proyecto. De este modo. Hoy en día. el uso de lenguajes de script como Perl y PHP permiten seguir otras estrategias de programación. A partir de ahí.3.

Los bloques de código repetidos se refactorizan en un único lugar. La documentación relacionada con XP puede enseñarte mucho sobre el desarrollo rápido y efectivo de las aplicaciones. Este proceso se llama refactorización y sucede a menudo durante el desarrollo de una aplicación web. lo que se conoce como TDD: desarrollo basado en pruebas (test-driven development). Por este motivo. Una buena forma de empezar con XP son los libros escritos por Kent Beck en la editorial Addison-Wesley. normalmente se debe reescribir parte del código existente. 44 . Si están bien escritas. El código suele moverse a otros lugares en función de su naturaleza. las pruebas unitarias permiten asegurar que nada ha dejado de funcionar después de haber refactorizado parte del código de la aplicación. aplicando el principio DRY: No te repitas (Don’t Repeat Yourself). Algunas metodologías de desarrollo de aplicaciones obligan a escribir las pruebas antes que el propio código. aprender a utilizar Symfony no es como aprender un nuevo lenguaje de programación. 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. De hecho. sino que consite en aprender a tomar las decisiones correctas para desarrollar las aplicaciones de forma más efectiva. Una de las metodologías más efectivas se conoce como XP: programación extrema (Extreme Programming). Symfony es la herramienta ideal para el RAD. Para asegurar que la aplicación sigue funcionando correctamente a pesar de los cambios constantes. el framework ha sido desarrollado por una empresa que aplica el RAD a sus propios proyectos.Cuando se modifican los requisitos o cuando se añade una nueva funcionalidad. se necesita una serie de pruebas unitarias que puedan ser automatizadas. NOTA Existen otros principios y hábitos relacionados con el desarrollo ágil de aplicaciones.

'calle' => 'Gran Vía'.9. 'codigopostal' => '12345' ) 45 . como por ejemplo: $casa = array( 'familia' => array( 'apellido' => 'García'. 'Carmen') ).symfony-project. 'María'). fácil de leer para las personas y fácil de interactuar con los lenguajes de script”. 3.org/askeet) y su lectura es muy recomendada para todos aquellos que quieran adentrarse en el desarrollo ágil de aplicaciones. Dicho de otra forma.org/). YAML es un formato especialmente útil para describir datos que pueden ser transformados en arrays simples y asociativos. YAML es un lenguaje muy sencillo que permite describir los datos como en XML. YAML Según el sitio web oficial de YAML (http://www. 'hijos' => array('Jose'. 'Manuel'.yaml. pero con una sintaxis mucho más sencilla.11. 'ciudad' => 'Cualquiera'.La aplicación se llama Askeet (http://www. YAML es “un formato para serializar datos que es fácil de procesar por las máquinas. 'padres' => array('Antonio'. 'direccion' => array( 'numero' => 34.

Manuel .María hijos: .Jose .).Antonio .Carmen direccion: numero: 34 calle: Gran Vía ciudad: Cualquiera codigopostal: "12345" 46 . Este array de PHP se puede crear directamente procesando esta cadena de texto en formato YAML: casa: familia: apellido: García padres: .

Por este motivo. Symfony utiliza el formato YAML como el lenguaje preferido para almacenar su configuración. hijos: [Jose.yaml. El formato se lleva utilizando desde 2001 y existen utilidades para procesar YAML en una gran variedad de lenguajes de programación.YAML utiliza la tabulación para indicar su estructura. Manuel. ciudad: Cualquiera. 47 . SUGERENCIA La especificación completa del formato YAML se puede encontrar en http://www.org/. Este libro contiene muchos archivos YAML. padres: [Antonio.ini (ya que estos últimos no soportan la herencia y las estructuras complejas). Por tanto. pero como es tan sencillo. los datos YAML anteriores se pueden escribir de forma abreviada de la siguiente manera: casa: familia: { apellido: García. 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 . Como se ha visto. direccion: Gran Vía. Carmen] } direccion: { numero: 34. 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 {}. María]. probablemente no necesites aprender más detalles de este formato. codigopostal: "12345" } YAML es el acrónimo de “YAML Ain’t Markup Language” (‖YAML No es un Lenguaje de Marcado‖) y se pronuncia “yamel”. 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.

3. Si por ejemplo una misma aplicación debe ejecutarse tanto en un navegador estándar como un navegador de un dispositivo móvil. Resumen Symfony Symfony es un framework para desarrollar aplicaciones web creadas con PHP 5. El único requisito técnico obligatorio es el conocimiento de PHP 5. el mapeo de objetos a bases de datos (ORM) y el desarrollo rápido de aplicaciones (RAD). su lógica de negocio.10. consola de comandos. La vista transforma el modelo en una página web que permite al usuario interactuar con ella. es decir. El controlador se encarga de aislar al modelo y a la vista de los detalles del protocolo utilizado para las peticiones (HTTP.9. etc. Añade una nueva capa por encima de PHP y proporciona herramientas que simplifican el desarrollo de las aplicaciones web complejas. El controlador se encarga de procesar las interacciones del usuario y realiza los cambios apropiados en el modelo o en la vista. El modelo se encarga de la 48 . 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.2 ilustra el funcionamiento del patrón MVC.). manteniendo el controlador y el modelo original. email.3. sobre todo la programación orientada a objetos (OOP). solamente es necesario estar familiarizado con los conceptos básicos de la programación moderna. La imagen 3. El patrón MVC Symfony está basado en un patrón clásico del diseño web conocido como arquitectura MVC.12. Este libro contiene todos los detalles del funcionamiento de Symfony y para entenderlo. solamente es necesario crear una vista nueva para cada dispositivo. que está formado por tres niveles:    El modelo representa la información con la que trabaja la aplicación.

Un script simple <?php // Conectar con la base de datos y seleccionarla 49 . haciendo que la vista y las acciones sean independientes de. 2: El patrón 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. Las capas de la arquitectura MVC Para poder entender las ventajas de utilizar el patrón MVC. el script necesario para mostrar los artículos almacenados en una base de datos se muestra en el siguiente listado: Listado 2-1 . 3.10. Imagen 3.2.1.abstracción de la lógica relacionada con los datos. 3. el tipo de gestor de bases de datos utilizado por la aplicación. por ejemplo. se va a transformar una aplicación simple realizada con PHP en una aplicación que sigue la arquitectura MVC. Programación simple Utilizando solamente PHP normal y corriente.10.

printf("\t\t<td> %s </td>\n". $conexion). $fila['titulo']). MYSQL_ASSOC)) { echo "\t<tr>\n". // Ejecutar la consulta SQL $resultado = mysql_query('SELECT fecha. 'micontrasena'). mysql_select_db('blog_db'. 50 . titulo FROM articulo'. 'miusuario'. ?> <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.$conexion = mysql_connect('localhost'. $conexion). $fila['fecha']). printf("\t\t<td> %s </td>\n".

modificar el código HTML del script anterior para mejorar la presentación es un follón debido a cómo está programado. el código PHP puro con toda la lógica de negocio se incluye en el script del controlador. De hecho.echo "\t</tr>\n".3.10. El código solo funciona si la base de datos es MySQL. 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?). En primer lugar. ?> El script anterior es fácil de escribir y rápido de ejecutar. Así que el código va a ser dividido en dos partes. como se muestra en el listado 2-2. El código HTML y el código PHP están mezclados en el mismo archivo e incluso en algunas partes están entrelazados. 3. } ?> </table> </body> </html> <?php // Cerrar la conexion mysql_close($conexion). 51 . Separando la presentación Las llamadas a echo y printf del listado 2-1 dificultan la lectura del código. pero muy difícil de mantener y actualizar.

'micontrasena').php <?php // Conectar con la base de datos y seleccionarla $conexion = mysql_connect('localhost'. $conexion). como se muestra en el listado 2-3. 52 . ?> El código HTML. titulo FROM articulo'. que contiene cierto código PHP a modo de plantilla. // Crear el array de elementos para la capa de la vista $articulos = array(). MYSQL_ASSOC)) { $articulos[] = $fila.La parte del controlador. } // Cerrar la conexión mysql_close($conexion). mysql_select_db('blog_db'. $conexion). se almacena en el script de la vista.php'). 'miusuario'. // Incluir la lógica de la vista require('vista.Listado 2-2 . while ($fila = mysql_fetch_array($resultado. // Ejecutar la consulta SQL $resultado = mysql_query('SELECT fecha. en index.

en vista.Listado 2-3 .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. la 53 . ?> </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 parte de la vista.

11. no se deben incluir instrucciones PHP que generen etiquetas HTML.2. y como puedes imaginar. que puede ser utilizado desde el lenguaje de programación. el mismo controlador se puede reutilizar para otros tipos de presentaciones completamente diferentes. 3. 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). De hecho. Doctrine 3. sin necesidad de la duplicación de código innecesario. Toda la lógica se ha centralizado en el script del controlador. ¿Qué es Doctrine? La doctrina es un objeto mapeo relacional (ORM) para PHP 5. Además. foreach/endforeach y poco más. Las instrucciones más comunes en la parte de la vista suelen ser echo. como por ejemplo un archivo PDF o una estructura de tipo XML.11. ORM 54 . Muchos de los paquetes libres y comerciales que autorizan a esto. Esto proporciona a los desarrolladores una poderosa alternativa a SQL que mantiene la flexibilidad. if/else.11. esto permite que tengamos una base de datos "objeto virtual". que solamente contiene código PHP y ningún tipo de HTML. inspirado en hiberna HQL.3 + sobre una capa de abstracción de base de datos de gran alcance (DBAL).1. pero a veces los desarrolladores optaron por crear uno por su cuenta.2.suficiente como para que un diseñador HTML sin conocimientos de PHP pueda entenderla. Básicamente. 3. ¿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.

Se sienta en la cima de PHP Data Objects (PDO) y se divide en dos capas principales. 3. 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.11. Dailymotion. 55 . El puente entre el modelo relacional y el modelo de objetos / modelo de dominio Doctrine ORM Completa base de datos de la abstracción de la API Doctrine DBAL Básico entre la Base de datos DBAL PDO Imagen 3. cuando se carga el paquete ORM la DBAL ya está incluido.12.3. la DBAL y el ORM. Object-Relational Mapping API. delicious) y en otros miles de sitios pequeños y medianos. Probado Symfony ha sido probado con éxito durante años en varias aplicaciones gigantescas (Yahoo! Answers.3. 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. Razones para utilizar Symfony Escalable Symfony es infinitamente escalable si se disponen de los recursos necesarios. 3: Funcionamiento de Doctrine. Información Básica La doctrina es una herramienta para el mapeo objeto-relacional en PHP. La capa ORM depende de la DBAL y por lo tanto. Yahoo! utiliza Symfony para programar aplicaciones con 200 millones de usuarios. La biblioteca se puede utilizar DBAL independiente. La imagen de abajo muestra cómo las capas de trabajo Doctrina juntos.

Seguro Symfony permite controlar hasta el último acceso a la información e incluye por defecto protección contra ataques XSS y CSRF. por la que las versiones estables se mantienen durante 3 años sin cambios pero con una continua corrección de errores. Documentado Symfony es el framework mejor documentado.Soporte Symfony sigue una política de tipo LTS (long term support). 56 . Además. gratuitas y/o de software libre. con la que puedes desarrollar aplicaciones web comerciales. Compromiso Los creadores de Symfony no viven del framework. sino de las aplicaciones que desarrollan con él. toda la documentación está traducida al español. Código Desde su primera versión Symfony ha sido creado sólo para PHP 5. Licencia Symfony se publica bajo licencia MIT. ya que ha publicado cinco libros gratuitos de calidad y siempre actualizados.000 pruebas unitarias y funcionales. para obtener el máximo rendimiento de PHP y aprovechar todas sus características. Calidad Su código fuente incluye más de 9. la buena documentación y el soporte muy largo. por lo que les interesa como aspectos como el rendimiento. Internacionalización Symfony está traducido a más de 40 idiomas e incluye todas las herramientas necesarias para que traduzcas fácilmente tus aplicaciones.

El núcleo es el programa más importante en la computadora.13. 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. Sin embargo. Linux Debian 3. Un sistema operativo es un conjunto de programas y utilidades básicas que hacen que su computadora funcione. Una gran parte de las herramientas básicas que completan el sistema operativo. en especial con el Hurd.13. lo que la gente quiere es el software de aplicación: herramientas que los ayuden a realizar lo que necesiten hacer. Estas herramientas también son libres.3. Este sistema operativo que hemos creado se llama Debian GNU/Linux. ¿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. desde editar documentos. Desde luego. vienen del proyecto GNU.: kernel). o simplemente Debian para acortar. se está trabajando para ofrecer Debian con otros núcleos. de ahí los nombres: GNU/Linux y GNU/Hurd. 57 . El Hurd es software libre producido por el proyecto GNU. realiza todo el trabajo básico y le permite ejecutar otros programas. El centro de un sistema operativo es el núcleo (N. Linux es una pieza de software creada en un principio por Linus Torvalds y soportada por miles de programadores a lo largo del mundo. del T. Los sistemas Debian actualmente usan el núcleo de Linux. El Hurd es una colección de servidores que se ejecutan sobre un micronúcleo (como Mach) para implementar las distintas funcionalidades.1.

En la cima de la torre se encuentra Debian — organizando y encajando todo cuidadosamente para que todo el sistema trabaje junto. 58 . En la base está el núcleo. Después está todo el software que usted ejecuta en su computadora. Encima se encuentran todas las herramientas básicas.Es un poco como una torre.

4.Los contenidos que tendrá este..4.1. En estas reuniones se llevaron varios requerimientos del sistema los cuales son: 1. En esta actividad se llevó a cabo el análisis de requerimientos del sistema. El proceso de planeación tiene diferentes etapas las cuales están en lazada.-El tiempos de desarrollo y terminación. 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.Formatos que llevarían el sistema. formulando una medida viable. 3.. Para la observación del sistema se recibieron diferente documentación la cual permitió tener un conocimiento claro del continuación. 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 proceso de planeación como se muestra a 59 . 2. escalable y práctica para que estos procesos se lleven de la mejor manera. la Licenciada Gutiérrez Moreno. Salvador Perez Juana Imelda responsable del PTA y Humberto Placencia Aguado responsable del POA. así como conocer cuáles eran las entradas y salidas. Descripción de las actividades realizadas Análisis del Sistema requerimientos del Se analizó el proceso minuciosamente para poder obtener los sistema que en la actualidad se necesita con el fin de comenzar a desarrollar los módulos. teniendo constantes reuniones con el personal del Departamento de planeación del ITC entre los que se encuentran la Jefa de este departamento.

. Programación y Presupuestación. para dar a conocer las normas. Director del Inst. acordando las metas con el Director de Área afín de la DGEST.. con la finalidad de elevar la calidad en el Servicio Educativo.1. 4.Convoca a reunión de trabajo a los directivos y jefes de departamento.Da instrucciones al Subdirector de Planeación y Vinculación para comunicar el documento final y establecer estrategias de cumplimiento. sino procede lo regresa con las observaciones pertinentes de acuerdo a los lineamientos establecidos. 6. 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. 4. revisa e integra al PTA del plantel.-Recibe solicitud por parte de la DGEST . El procedimiento del Programa de Trabajo Anual El procedimiento del Programa de Trabajo Anual es el siguiente : 1. a dicha programación debe dársele seguimiento y la evaluación correspondiente en el cumplimiento de las metas.Elabora el PTA del Departamento.y da instrucciones al Subdirector de Planeación y Vinculación sobre las estrategias para la formulación del Programa de Trabajo. Subdirector de Planeación y Vinculación. para su corrección. División o Centro a su cargo.Firma el PTA del Instituto Tecnológico o Centro y lo envía para su revisión y autorización a la DGEST. 60 . Programación y Presupuestación para su revisión. división o centro. Subdirector de Planeación y Vinculación... Subdirectores y Jefes de Departamento.-Recibe autorización del PTA del Instituto Tecnológico o Centro. Tecnológico o Centro.actividades se realizan mensualmente. EL Director del Instituto Tecnológico o Centro. Evaluación y Seguimiento de las metas del PTA. 7. Director del Instituto Tecnológico o Centro.Recibe. lineamientos y el mecanismo de trabajo para la elaboración del PTA 3. Departamento de Planeación. 5.1. Si procede lo validad e integra. 2. Recibe y analiza el PTA del Instituto Tecnológico o Centro y prepara su envío a la DGEST.

a realizar una reunión para establecer estrategias para el cumplimiento y reforzamiento de las metas con el Director. Departamento de Planeación. realiza una reunión para establecer estrategias para la mejora continua. Programación y Presupuestación analiza el seguimiento y evaluación.8. 61 . Subdirectores y Jefes de departamento. si no procede. Si procede.

Da instrucciones al Subdirector de Planeación y Vinculación para comunicar el documento final y establecer estrategias de cumplimiento. Recibe. lineamientos y el mecanismo de trabajo para la elaboración del PTA 4 3 Departamento de Planeación.El siguiente diagrama muestra el procedimiento anteriormente descrito. revisa e integra al PTA del plantel. 5 Se Elabora el PTA del Departamento de acordando las metas. Firma el PTA del Instituto Tecnológico y lo envía para su revisión y autorización a la DGEST 8 Director del Instituto Tecnológico o Centro.-Recibe autorización del PTA del Instituto Tecnológico o Centro. Evaluación y Seguimiento de las metas del PTA 7 Si procede. 62 . Tecnológico. 6 Analiza el PTA del Instituto Tecnológico y prepara su envío a la DGEST. Programación y Presupuestación. si no procede. Subdirectores y Jefes de departamento Diagrama 4. a realizar una reunión para establecer estrategias para el cumplimiento y reforzamiento de las metas con el Director. 2 1 Estrategias para la formulación del Programa de Trabajo Dar a conocer las normas. realiza una reunión para establecer estrategias para la mejora continua. Director del Inst. 1: Diagrama del procedimiento del PTA.

Programación y presupuestación recibe los POA de cada departamento responsable. Si procede.1. 3. Programació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. Entregan al jefe del Departamento de Planeación. Someten a revisión con el jefe inmediato superior el POA de sus área o departamento y recaba su visto bueno. 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.4. El Departamento de Planeación. para elevar la calidad en los Servicios Educativos. El Subdirector de Planeación y Vinculación da instrucciones al jefe del Departamento de Planeación.1. regresa al departamento responsable las observaciones correspondientes. 2. 4.2.1 El procedimiento del Programa Operativo Anual El procedimiento del Programa Operativo Anual es el siguiente: 1. Programación y Presupuestación el POA de su área. si no procede. los revisa y procesa la información proporcionada.2. 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. y lineamiento para la formulación del POA en base a las metas del PTA y PIID de la institució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. 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. integra el POA y lo presenta al Subdirector de Planeación y Vinculación. 63 . 4.

solicitando su autorización ante la DGEST. informa el monto autorizado a cada uno de los departamentos. 2: Diagrama del Proceso de POA.convoca a reunión a Directivos y Jefes de Departamento para presentar el POA para su análisis.5. Programación y Presupuestación una vez autorizado el POA. 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. 64 . Someten a revisión con el jefe inmediato superior el POA de su área o su departamento y recaba su visto bueno. Diagrama 4. 6. El Subdirector de Planeación y Vinculación da instrucciones al jefe del Departamento de Planeación. La Subdirección de Planeación y Vinculación con previo acuerdo del Director. Programación. convoca a reunión a Directivos y Jefes de Departamento para presentar el POA para su análisis. convoca a reunión a Directivos y Jefes de Departamento para presentar el POA para su análisis. 5 El Director firma y envía oficio del POA. El Director firma y envía oficio del POA. 4 Los Directivos y jefes de Departamento determinan las necesidades del área o departamento de su responsabilidad y elabora el POA en los formatos correspondientes.Programación y Presupuestación el POA de su área. 3 La Subdirección de Planeación y Vinculación con previo acuerdo del Director . 7. El Departamento de planeación.solicitando su autorización ante la DGEST. Entregan al jefe del Departamento de Planeación . convoca a reunión a Directivos y Jefes de Departamento para presentar el POA para su análisis. 7 La Subdirección de Planeación y Vinculación con previo acuerdo del Director. y lineamiento para la formulación del POA en base a las metas del PTA y PIID de la institución. 6 La Subdirección de Planeación y Vinculación con previo acuerdo del Director. 1 Diagrama del Programa Operativo Anual 2 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.

en el POA se asignaran acciones para poder llevar a cabo las metas.1. Diagrama de caso de uso PTA En el Diagrama 4. 3: Diagrama de Casos de Uso para el PTA. Acción Actor El cargado del PTA AAAAAAAAA Captura de las metas Institucionales Captura del programa trabajo anual Diagrama 4.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. 65 . 4.3.3 muestra las funciones del personal encargado del PTA.

4 muestra las diferentes acciones que el personal encargado del POA y Jefes de Departamento realizan. 4. Diagrama de caso de uso POA En el Diagrama 4. 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.4. Interfaz poco amigable para el usuario. unidades y partidas Capturar POA de su Departamento Diagrama 4. 66 . Acción Actor Actor En cargado del POA Selecciona tiempo de captura Jefes de Departamento Capturar acciones y Asignar acciones al departamento Capturar insumos.4. Poco intuitiva en el modo de búsqueda de información así como de captura. 4: Diagrama de Casos de Uso para el POA.2.1. dificultad en las actualizaciones del sistemas.

Pues es un lenguaje multiplataforma y sencillo de aprender. ofreciendo características muy similares a cualquier software privativo que tenga este fin.1. que permite crear documentos con esta extensión de manera rápida y sencilla. Para la parte de manejo de información. pues éstas eran un estándar en la construcción de cualquier módulo del SII. 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.Para su funcionamiento es necesario cumplir con más de un requisito que es: tener la maquina virtual de java. otro requisito es tener la aplicación en la computadora.2. estos reportes se querían en un formato PDF. el tiempo de descarga dependerá de la conexión de internet.java. Se utilizaría PHP. Análisis de las herramientas de desarrollo Una vez que se contó con toda esta información. 67 . se justifica el hecho de utilizar un manejador de bases de datos como lo es PostgreSQL. como lenguaje de programación orientado a web. si no es así se tiene que descargar.com). 4. lo cual proporciona una ventaja extra sobre los demás. además como ya se menciono es un estándar. 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. para lo cual se contaba con IReport. se procedió a hacer una justificación de las herramientas para el desarrollo del sistema propuesto. Dentro del sistema también se realizarían reportes. 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. la cual si no se tiene sé debe de descargar de la página oficial de java (www.

Puesto que la aplicación se propuso para trabajar en un entorno Web, debido a ello era necesario contar con un servidor, se optó por utilizar Apache puesto que es robusto, potente, disponible en todas las plataformas, gratuito y con disponibilidad de su código fuente, ofreciendo por mucho mejores ventajas que sus rivales como IIS u otros, además de que también es un estándar de desarrollo para el SII. Para Sistema Operativo, solo se contaba con dos opciones puesto que las máquinas que utilizaríamos solo soportaban Microsoft Windows y GNU/Linux. Se optó por seleccionar el uso de GNU/Linux por contar con más seguridad, menor concurrencia en la aparición de virus, rapidez que proporciona a PHP, etc. Se utilizó Symfony es un framework para la creación de aplicaciones PHP y la forma más sencilla de aumentar la productividad y calidad esta. Symfony ha sido probado con éxito en algunos de los sitios web más grandes del mundo. Las ventajas que se puede observar a primera vista es que este framework permite separar la lógica de negocio, la lógica de servidor y la presentación de la aplicación web. Proporciona varias herramientas y clases encaminadas a reducir el tiempo de desarrollo de una aplicación web compleja. Además, automatiza las tareas más comunes, permitiendo al desarrollador dedicarse por completo a los aspectos específicos de cada aplicación. El resultado de todas estas ventajas es que no se debe reinventar la rueda cada vez que se crea una nueva aplicación web. Para mejorar la interacción de la interfaz se opto por utilizar Jquery UI, el cual permitirá tener una interfaz amigable para los usuarios finales.

4.3. Análisis de requerimientos
Los requerimientos encontrados para el módulo a desarrollar, son que el servidor contara con Apache, apache tomcat , Php, Linux, postgresql , symfony. Los requerimientos para el usuario, no son muy complejos ya que una computadora normalmente cuenta con un navegador de internet el cual permitirá acceder a la aplicación.
68

4.3.1. Capacitación para el uso de las herramientas de desarrollo
Una de las actividades más laboriosas, cuando se está descubriendo nuevas herramientas como en este caso son: IReport y Symfony lo cual Ireport fue uno de los más fáciles en entender y dominar gracias a su herramienta para crear los pdf la hace ser muy fácil de adaptarse y desarrollar utilizando síntesis de sql para realizar las consultas y obtener los datos necesarios en los reportes, por otra parte Symfony se tuvo que adquirir nuevo conocimiento aparte del conocimiento del lenguaje de php, como fueron los archivos yam y los ORM (mapeo objeto relacional) así como el estilo de arquitectura de software MVC que separa los datos de una aplicación, la interfaz de usuario, y la lógica de control en tres componentes distintos explicados en el Marco Teórico.

4.4.

Análisis de diseño y desarrollo de la base de datos

Al ser esté un módulo que se incorporará al Sistema Integral de Información (SII), ya se cuenta con parte de la estructura de la base de datos para la elaboración del PTA y POA, sin embargo aún había que agregarle algunos campos requeridos para completar la estructura. A continuación se presentará el conjunto de tablas previamente existentes, más adelante se mostrará a detalle la estructura de cada una de ellas y cómo se relacionaron con las nuevas tablas así como también se hará mención de los campos y tablas nuevos.

69

Diagrama 4. 5: Diagrama Entidad-Relacion.

Para ver el diccionario de la base de datos ir al Anexo A Tablas que se Modificaron.  Tabla Insumo_accion_departamento ver Tabla 4.1

Tabla 4. 1: Insumo_accion_departamento.

Columnas agregadas a la tabla Insumo_accion_departamento

70

Nombre de la columna Año_Captura  Tabla Accion_departamento ver Tabla 4.2 Tipo Integer Tabla 4. Columnas agregadas a la tabla Accion_departamento Nombre de la columna tope_presupuestal  Tabla insumo ver Tabla 4.3 Tipo Numeric(9. 2: Accion_departamento. 3: insumo 71 .2) Tabla 4.

Columnas agregadas a la tabla insumo

Nombre de la columna Sede PeriodoInicial PeriodoFinal Año Creación de la tabla 

Tipo Varchar(200) Date Date integer

APOA_insumo_accion_departamento ver Tabla 4.4

Tabla 4. 4: APOA_insumo_accion_departamento

4.5.

Desarrollo de la interfaz del usuario

Antes de iniciar la programación o diseño de interfaces, se definió cómo se realizaría el acceso, tomando en cuenta que existe el sistema integral de información, permitiendo un acceso a las personas que elaboran en el ITC. La interfaz de acceso que se

muestra a continuación es solo una validación de usuario y contraseña los cuales se asignan al ingresar al ITC.

72

Imagen 4. 1: Pagina de acceso al SII.

Una vez que se ha entrado al SII se pueden observar una serie de opciones, dependiendo del usuario que entre. En la figura siguiente se muestra un ejemplo del menú para un usuario, esto solo con el fin de dar una idea clara de donde se encontrará ubicada la liga para entrar al sistema de PTA_POA.

Imagen 4. 2: Menu del SII.

Para el desarrollo de la interfaz se tomaron en cuenta las necesidades de la PTA y POA, los cuales tienen como objetivo de ser intuitiva y a la visión de los usuarios agradable. La interfaz consta de un menú el cual tendrá diferentes opciones, dependiendo del tipo de usuario que quiera acceder.

73

Imagen 4. 3: Interfaz de Usuario del Sistema PTA-POA.

Los colores de la interfaz fueron seleccionados con el objetivo que fueran un medio de trabajo agradable al usuario.

4.5.1. Validación del sistema
Se validaron los formularios por medio del lenguaje del lado del servidor PHP y del lado del cliente javascript, lo cual permite una integridad de información la cual evita tener errores en la captura.

4.5.2. Prueba del sistema
Para la prueba del sistema se analizaron varios puntos que se determinaron importantes que son los siguientes:  Integridad y consistencia en los datos

Verificar que la información que se mostrara fuera la correcta así como la captura de esta.  Seguridad o Symfony ya tiene contemplado los siguientes ataques:  Inyección de sql

74

reducía considerablemente los tiempos contemplados para otras actividades. y ataque automático. 4. ataque de un click. 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. tratando de emular el uso que se le daría. Nota: las validaciones se hicieron localmente. Esta vulnerabilidad es conocida también por otros nombres como XSRF. 75 . puesto que el tiempo con el que se contaba. Este proceso resultó recursivo por un tiempo pues se realizaron muchas pruebas y correcciones. o que el tipo de cuadro de texto no era el correcto. cabalgamiento de sesión. En base a los resultados arrojados por estos dos puntos anteriores. enlace hostil. 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. Como errores ortográficos. cuando se integro en el sistema del Instituto Tecnologico de Celaya se realizaron las mismas pruebas para ver el funcionamiento adecuado en línea. etc.6. Después se realizaron iteraciones con el sistema. Las iteraciones se realizaron cinco veces por cada módulo existente. se observaron los valores de prueba y se decidió modificar el código y nuevamente validar y probar los puntos más débiles.

aunque estos están en constante cambio debido a las nuevas solicitudes que envía la DGEST para la captura del PTA y POA. haciendo este un constante actualización en conocimiento. Después de terminar este proyecto. 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. ya que esto me va a ayudar en mi vida profesional que apenas comienza. esto es desde el análisis pertinente. También pude observar mediante la práctica. ya que éste asigna metas que deben cumplir en su periodo. me siento más seguro de mí. o cambiar el método de asignación de las mismas. 6. Como nota. El desarrollo de la aplicación en Web fue un proceso de dedicación y esfuerzo para su elaboración. está funcionando de acuerdo a las expectativas que se optaron que el sistema tuviera. sino que es toda una metodología que se debe seguir para tener resultados favorables. que el desarrollo de sistemas no es solo programar.5. permitiendo tener un panorama más amplio de las herramientas que actualmente se usan en un habiente laboral. y pruebas del mismo. Conclusión Durante mi estancia en las residencias profesionales. Inconvenientes o problemas En el sistema 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. así como el diseño e documentación. 76 .

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. 77 . 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.7.

org/doc/1_4/ (junio 2009) Manual y Referencia de Doctrine http://www.net (junio 2009) Manual y Referencia de Apache.debian.php. http://www.apache.apache.org/ (junio 2009) Manual y Referencia de PostgreSQL.org/plugins/mwiki/index.org/index. http://www.html( junio 2009) 78 .org/ (junio 2009) Manual y referencia de IReport http://jasperforge.php/Ireport (junio 2009) Manual y referencia de Debian http://www.org/projects/orm(junio 2009) Manual y referencia de apache Tomcat http://tomcat. http://www.doctrine-project.org/ (junio 2009) Manual y Referencia de Symfony http://www.symfony-project.6.es.postgresql. Referencias de Internet Manual y Referencia de PHP.

Diccionario de la Base de datos Tabla: public.0) Not Null accion cantidad_periodo1 cantidad_periodo2 Descripción Conceptos más específicos dentro de una actividad que facilitan el establecimiento de metas y sus unidades de medida.7. Varchar Integer Integer Yes Yes Yes Yes Unique P/K Def Val Tabla: public.accion Columnas Nombre Tipo Not Null id_accion Integer Not Null id_meta_institucional Integer Not Null id_institucion Integer Not Null anio numeric(4. Anexos Anexo A.accion_departamento Columnas Nombre Tipo Not Null id_departamento Integer Not Unique P/K Def Val 79 .

Null id_accion Integer Not Null id_meta_institucional Integer Not Null id_institucion Integer Not Null anio numeric(4.0) Not Null Descripción Yes Yes Yes Yes Yes Son las acciones que se le asigna a cada departamento la cual permitirá cumplir las metas Tabla: public.0) Not Null id_insumo Integer Not Null Yes Yes Yes Yes Yes Yes Unique P/K Def Val 80 .apoa_insumo_accion_departamento Columnas Nombre Tipo Not Null id_departamento Integer Not Null id_accion Integer Not Null id_meta_institucional Integer Not Null id_institucion Integer Not Null anio numeric(4.

capitulo Columnas Nombre id_capitulo capitulo Tipo integer char(4) 81 Not Null Unique P/K Not Yes Null Yes Def Val .calendario_ejecucion Columnas Nombre Tipo Not Null id_mes id_meta_institucional id_institucion anio id_meta_nivel_jerarquico Descripción Tiempo que duro en realizar una meta Integer Integer Integer numeric(4.Integer id_fuente_ingreso_capitulo cantidad_periodo1 precio_unitario cantidad_periodo2 justificacion Descripción Ante proyecto planeación anual operativo anual Integer numeric(9.0) Integer Not Null Not Null Not Null Not Null Not Null Unique P/K Yes Yes Yes Yes Yes Def Val Tabla: public.2) Integer Varchar Not Null Yes Tabla: public.

concepto Columnas Nombre id_concepto Tipo integer Not Null Unique P/K Not Yes Null Yes Def Val id_capitulo concepto dsc_concepto Descripción integer char(4) varchar(200) Tabla: public.dsc_capitulo Descripción varchar(100) Capitulo que tiene como asignado los conceptos Tabla: public.departamento Columnas Nombre Tipo integer id_departamento departamento varchar(100) Descripción Nombre del departamento Not Null Unique P/K Not Yes Null Yes Def Val Tabla: public.departamento_institucion Columnas Nombre id_institucion Tipo integer Not Null Not Def Val Unique P/K 82 .

departamento_proceso_clave Columnas Nombre id_proceso_clave id_departamento Descripción En lace de las tablas de proceso y departamento Tipo integer integer Not Null Def Val Unique P/K Tabla: public.id_departamento Descripción integer Null Not Null Yes Yes Enlace de las tablas de departamento con la institución Tabla: public.estados_revisiones Columnas Nombre Tipo integer id_estado_revision Not Null Unique P/K Not Yes Null Yes Def Val estado_revision 83 .estado Columnas Nombre id_estado estado Descripción Estados del país Tipo integer char(70) Not Null Not Null Def Val Unique P/K Yes Yes Tabla: public.

varchar(100) Descripción Indica el estado de la revisión Tabla: public.fuente_ingreso Columnas Nombre Tipo integer id_fuente_ingreso fuente_ingreso varchar(50) Descripción Tipo de ingreso que recibe el tecnológico Not Null Unique P/K Not Yes Null Yes Def Val 84 .estructura_programatica Columnas Nombre Tipo Not Null Unique P/K Not Yes Null Yes Def Val id_estructura_programatica integer 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.

Tabla: public.institucion Columnas Nombre id_institucion Tipo integer Not Null Unique P/K Not Yes Null Yes Def Val integer id_tipo_institucion institucion varchar(100) 85 .fuente_ingreso_capitulo Columnas Not Null Unique P/K id_capitulo Not integer Null id_fuente_ingreso Not integer Null Not Yes id_fuente_ingreso_capitulo integer Null Yes Nombre Tipo Def Val Descripción En lace de la tabla de ingreso y capitulo Tabla: public.indicador Columnas Nombre id_indicador indicador Descripción Tipo integer varchar Not Null Unique P/K Not Yes Null Yes Def Val Tabla: public.

clave_institucion direccion telefono codigo_postal id_estado Descripción Datos del instituto char(5) varchar char(12) char(5) integer Not Null Tabla: public.2) integer Not Null Unique P/K Not Null Yes Def Val Not Null Yes Tabla: public.insumo Columnas Nombre id_insumo id_unidad id_partida insumo precio_actual id_institucion Descripción Nombre de los componentes. artículos. etc. Tipo integer integer integer varchar(200) numeric(15.insumo_accion_departamento Columnas Nombre id_departamento id_accion id_meta_institucional id_institucion Tipo integer integer integer integer Not Null Not Null Not Null Not Null Not Null Def Val Unique P/K Yes Yes Yes Yes 86 .

2) integer varchar Not Null Not Null Not Null Yes Yes Yes Tabla donde liga el insumo la acción y el departamento Tabla: public.anio id_insumo id_fuente_ingreso_capitulo cantidad_periodo1 precio_unitario cantidad_periodo2 justificacion apoa_insumo Descripción: Descripción numeric(4.0) integer integer integer numeric(9.meta_institucional Columnas Nombre Tipo integer id_meta_institucional Not Null Unique P/K Not Yes Null Yes Def Val id_meta_piid id_indicador integer integer 87 .mes Columnas Nombre id_mes mes Descripción Id Meses y nombre de meses Tipo integer varchar(50) Not Null Not Null Def Val Unique P/K Yes Yes Tabla: public.

0) varchar integer Not Null Not Null Not Null Not Null Not Null Def Val Unique P/K Yes Yes Yes Yes Tabla: public.id_unidad_medida meta_institucional formula anio_vigencia Descripción integer varchar varchar(1024) numeric(4.0) Meta de la institución a cumplir Tabla: public.meta_nivel_jerarquico Columnas Nombre id_meta_institucional id_institucion anio meta_nivel_jerarquico id_meta_nivel_jerarquico Descripción Meta del nivel jerárquico Tipo integer integer numeric(4.meta_piid Columnas Nombre id_meta_piid Tipo integer Not Null Not Null Def Val Unique Yes P/K Yes meta_piid clave_meta_piid Descripción varchar char(5) Me de PIID(Programa Institucional de Innovación y Desarrollo) 88 .

partida Columnas Nombre id_partida id_concepto partida dsc_partida nombre Descripción (none) Tipo integer integer char(4) varchar varchar(200) Not Null Unique P/K Not Yes Null Yes Def Val 89 .monto Columnas Nombre monto Descripción (none) Tipo numeric Not Null Def Val Unique P/K Tabla: public.meta_proceso_clave Columnas Nombre id_meta_institucional id_proceso_clave Descripción Tabla que liga la meta con proceso Tipo integer integer Not Null Not Null Not Null Def Val Unique P/K Yes Yes Tabla: public.Tabla: public.

Tabla: public. 1 es el periodo que se está capturando actualmente.periodo_captura Columnas Nombre Not Null Unique P/K id_periodo_captura Not Yes integer Null Yes Descripción: anio Descripción: fecha_inicio Descripción: fecha_fin Descripción: estatus Descripción: Descripción Se define el periodo de captura tanto del pta como del poa. Tipo Def Val Serial para la llave primaria Not integer Null Año de captura date Fecha de inicio de captuta tanto PTA como POA.Tabla: public. date Fecha fin de captuta tanto PTA como POA. Not integer Null Estatus del periodo.partida_departamento Columnas Nombre id_departamento id_partida Descripción (none) Tipo integer integer Not Null Not Null Not Null Def Val Unique P/K Yes Yes Tabla: public.periodo_seguimiento 90 .

0) Tabla: public.proceso_clave Columnas 91 .Columnas Nombre Tipo integer id_periodo_seguimiento Not Null Unique P/K Not Yes Null Yes Def Val periodo_seguimiento anio Descripción (none) varchar(50) numeric(4.personal Columnas Nombre rfc id_puesto id_institucion id_departamento nombre apellidos id_personal password blocked super_user email Descripción (none) Tipo varchar(13) integer integer integer varchar(70) varchar(70) integer varchar(254) integer smallint varchar(100) Not Null Unique P/K Not Yes Null Def Val Not Null Yes Yes 0 Tabla: public.

programa_trabajo_anual Columnas Nombre id_meta_institucional id_institucion anio Tipo integer integer numeric(4.0) Not Null Not Null Not Null Not Null Def Val Unique P/K Yes Yes Yes 92 .proceso_estrategico Columnas Nombre id_proceso_estrategico Tipo integer Not Null Unique P/K Not Yes Null Yes Def Val proceso_estrategico varchar(50) char(5) clave_proceso_estrategico Descripción (none) Tabla: public.Nombre id_proceso_clave Tipo integer Not Null Unique P/K Not Yes Null Yes Def Val id_proceso_estrategico proceso_clave clave_proceso_clave id_estructura_programatica Descripción integer varchar(100) char(5) integer Tabla: public.

esto en los formatos del pta y poa.puesto Columnas Nombre id_puesto Tipo integer Not Null Unique P/K Not Yes Null Yes Def Val id_puesto_jefe_inmediato integer puesto varchar id_tipo_puesto integer Descripción: Identificador del tipo de puesto.puesto_meta_nivel_jerarquico Columnas Nombre id_puesto id_meta_institucional Tipo integer integer Not Null Not Null Not Def Val Unique P/K Yes 93 .0) integer integer varchar Tabla: public. puesto_firma varchar Descripción: Descripción del puesto como aparecerá en la firma. Tabla: public.id_periodo_seguimiento id_meta_institucional_previa id_institucion_previa anio_previa porcentaje_programado cantidad meta_institucional_adaptada Descripción Programa anual de trabajo integer integer integer numeric(4. puesto_abreviado varchar Descripción: Descripción abreviada del puesto.

revisiones_metas Columnas Nombre id_revisiones Tipo integer Not Null Unique P/K Not Yes Null Yes Def Val ano id_revision_congruencia id_revision_dir_area id_meta_institucional id_institucion anio fecha_revision_director_area fecha_autorizacion_congruencia observaciones varchar(500) Descripción Revisiones meta numeric(4.0) integer integer integer integer numeric(4.id_institucion anio id_meta_nivel_jerarquico Descripción integer numeric(4.0) date date Tabla: public.0) integer Null Not Null Not Null Not Null Yes Yes Yes Yes Puesto metas del nivel jerárquico Tabla: public.seguimiento_pta Columnas Nombre Tipo Not Null Def Val Unique P/K 94 .

seguimiento_revision Columnas Nombre id_revision Tipo integer Not Null Unique P/K Not Yes Null Yes Def Val ano id_revision_congruencia id_estado_revision id_institucion id_revision_dir_area fecha_revision_congruencia fecha_revision_dir_area observaciones_congruencia entregado fecha_entrega observacion_dir_area Descripción Seguimiento de revisión numeric(4.2) Tabla: public.porcentaje_alcanzado Descripción Seguimiento del PTA numeric(3.0) integer integer integer integer date date varchar boolean date varchar(1024) Tabla: public.tipo_institucion Columnas Nombre Tipo integer id_tipo_institucion tipo_institucion varchar(100) Not Null Unique P/K Not Yes Null Yes Def Val 95 .

Descripción Tipo de institución Tabla: public.unidad Columnas Nombre id_unidad unidad Descripción Unidades Tipo integer varchar(50) Not Null Not Null Def Val Unique P/K Yes Yes Tabla: public. Tabla: public. varchar Descripción: Descripción Tipos de puestos dentro de las instituciones.unidad_medida Columnas Nombre Tipo Not Null Unique P/K Def Val 96 .tipo_puesto Columnas Nombre id_tipo_puesto Tipo integer Not Null Unique P/K Not Yes Null Yes Def Val Identificador del tipo de puesto. Descripción: tipo_puesto Not Null Descripción del tipo de puesto.

integer id_unidad_medida unidad_medida varchar Descripción Unidad de medida Not Null Yes Yes 97 .

org/installation 98 .2.symfony-project. Instalar Symfony Descargar Symfony des de la página oficial http://www.Anexo B Manual de Instalación Tener instalado los siguientes servicios Apache2(apt-get install apache2) Php5.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.

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. Existen dos archivos que nos permite descargar (Source. por lo tal descargáremos la versión 1.Imagen 1: Página de Descargas de Symfony. En el proyecto se trabajó con la versión Symfony 1. 99 . para el proyecto utilizaremos Source y como nos encontramos en Linux podemos descargar el archivo que está en . Sandbox) y dos formas de compresión.4 En la columna donde se encuentra la tabla podrá ver que dice Download Imagen 2: Opciones de descarga de Symfony.4.

$ 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 . 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.bat con el mismo nombre symfony el cual nos permitirá trabajar de una manera más sencilla. $ 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. 100 . una vez creado hay que introducirnos en la carpeta y poner el siguiente comando. 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. $ 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.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.

htaccess que lo direccione a la carpeta web y que prohíba el acceso a las demás carpetas.$ php symfony doctrine:build-model Recuerde configurar un virtual host que apunte el directorio web si no. 101 . puede controlar el acceso por medio de .

Imagen 4.Acciones 102 ..Anexo C Manual de Manual de operación La aplicación cuenta con un menú el cual le permitirá realizar diferentes acciones tan sólo dándole clic(ver Imagen 3) Imagen 3: Menú de la Aplicación Una vez seleccionada la acción le mostrara una tabla la cual contiene varios dibujos que muestran la acción que puede realizar como modificar y eliminar también en la parte superior con tiene varias imágenes las cuales tienen diferentes acciones como crear nuevo registro y poder filtrar y/o ordenar (ver Imagen 4).

(ver Imagen 6). Imagen 5.Formulario el cual permite insertar un registro.. Imagen 6..Insertar Registro Formulario que permite modificar un registro. (ver Imagen 5).Modificar un registro 103 .