Framework es una palabra inglesa que define, en término generales, un conjunto de conceptos, prácticas y criterios para enfocar un tipo de problemática particular, en este caso crear un sistema Groupware para el grupo de investigación IDIS de la Universidad del Cauca. Nuestro equipo de trabajo al conocer lo que es un Framework y las ventajas que proporciona a la hora de desarrollar productos software como lo son desarrollo rápido de aplicaciones, reutilización de componentes software, el uso y programación de componentes que siguen una política de diseño uniforme, además de brindar portabilidad de aplicaciones de una arquitectura a otra, pensamos en usar un framework que se acomodara a las necesidades del grupo de investigación y que permitiera al equipo de trabajo desarrollar una aplicación en corto tiempo y que contara además de todo con herramientas, componentes y posibilidades para cumplir con todos los requerimientos solicitados por los clientes de la aplicación.
Al ver todo lo que se necesitaba pensamos en escoger Symfony, un frameworkcompleto, diseñado para el desarrollo de aplicaciones web. Separando la lógica del negocio, la lógica de servidor y la presentación de la aplicación web. Proporciona además varias herramientas y clases encaminadas a reducir el tiempo de desarrollo de una aplicación web compleja. Automatiza las tareas más comunes, para que el desarrollador se dedique en gran medida a los aspectos específicos de la aplicación, de forma que no reinvente la rueda cada vez que se cree una nueva aplicación web.
Al no tener absoluto conocimiento del framework que se había escogido en el grupo lo primero que hicimos fue tomar como base una guía especificada por días brindada por la página de Symfony, ubicada en http://www.symfony-project.org/jobeet/1_4/Propel/es/, desde la cual se siguió la forma de instalación, configuración de lo necesario para la utilización del framework y realización un proyecto con todas las funcionalidades que este ofrece.
A partir de esta guía hicimos la respectiva instalación, teniendo en cuenta que se debía contar con ciertos programas instalados con anterioridad en la maquina sobre la cual se instalaría (La versión mínima es PHP 5.2, Servidor HTTP (Apache 2.2 ), Una base de datos compatible con PDO (php data object) como por ejemplo MySQL, PHP acelarator, XSL Module, PHP – XML module), además de que se utilizó Ubuntu ya que después de encontrar ciertas dificultades con la instalación en Windows, se procedió a una más fácil instalación en Ubuntu.
Se instaló la versión 1.4, realizando las configuraciones pertinentes y las instalaciones de dependencias necesarias. Posteriormente se creó el proyecto, dándonos cuenta que la mayor parte de la generación de código que da Symfony se da por consola de comandos, brindando así la posibilidad de obtener funcionalidades ya implementadas y su posterior uso según lo que se necesite.
Al acceder desde un navegador web a: http://127.0.0.1:8080/index.php/, podemos darnos cuenta que el proyecto se creó con éxito.
Luego de esto se procedió a crear la aplicación, y luego cada uno de los módulos que se pretendía crear para el sistema: Modulo para los visitantes los cuales tienen la posibilidad de acceder a información del IDIS, sus miembros, proyectos, noticias, la posibilidad de contactar al grupo, y además de ello registrarse si lo desea en la aplicación para tener mayores funcionalidades. Modulo para el administrador quien administra usuarios (CRUD), acceder a funcionalidades del miembro IDIS como listar usuarios, buscar usuarios, acceso a las funcionalidades de la libreta de contactos personal, acceso a las funcionalidades de calendario compartido y acceso al chat entre los usuarios de la aplicación.Además tiene la posibilidad de acceder a información del IDIS, sus miembros, proyectos, noticias, y la posibilidad de contactar al grupo. Modulo para miembros IDIS quienes tienen la posibilidad de registrarse como usuario en la aplicación determinando sus datos personales, puede entre otras cosas listar usuarios, buscar usuarios, acceso a las funcionalidades de la libreta de contactos personal, acceso a las funcionalidades de calendario compartido y acceso al chat entre los usuarios de la aplicación.
Para el manejo del inicio de sesión se hizo uso de un plugin llamado SfGuardAuth ofrecido por Symfony el cual administra los usuarios de la aplicación, los permisos y privilegios sobre esta.
Además se hizo uso de una funcionalidad que ofrece el Framework que es la generación de un CRUD sobre una tabla de una base de datos, en nuestro caso se usó el http://localhost/phpmyadmin/, a partir de la creación de un frontend sobre la tabla que se quiere hacer el CRUD.
De forma que con esta funcionalidad se podía listar, paginar, además de hacer el CRUD de toda la información contenida en la tabla, lo cual fue utilizado en la aplicación para la administración de los usuarios y para la libreta de direcciones de contactos propios de cada uno de los miembros, teniendo presente que cada persona tendría una libreta con los contactos deseados.
A partir de todo lo realizado con el framework las lecciones aprendidas además del manejo del framework, de su instalación, del manejo de bases de datos, y todo lo concerniente al inicio de sesión en una aplicación realizada con Symfony se aprendió a hacer aplicaciones centradas en el usuario, ceñidas a aspectos de usabilidad en cuanto a acceso a información contenida en Bases de datos, en tiempo de respuesta, y disposición del contenido en esta.
Lo anterior se ha ido logrando a partir de una planeación desde el inicio del desarrollo, prototipando y haciendo evaluación de lo que se diseñaba para de esta manera saber si el usuario estaba de acuerdo con lo que se estaba planteando en el equipo de trabajo.
Del trabajo realizado hasta el momento con el framework se han tenido muchas experiencias buenas y malas, ya que es un framework muy grande, diseñado especialmente para aplicaciones grandes, por lo cual es difícil aprender y saber manejar un framework tan grande en tan poco tiempo, y partir de ceros en el desarrollo, teniendo como base únicamente guías que en su totalidad son muy extensas y con muchos detalles que tal vez no son necesarios para nuestro sistema. Pero también se han tenido cosas muy buenas como por ejemplo funcionalidades que con pocas líneas de código automatizan tareas comunes que anteriormente eran muy complicadas de realizar. Es un framework muy potente, escalable, tiene mucho soporte, es libre, seguro y documentado lo que ha permitido que se haga una aplicación usable y que cumpla con los requerimientos solicitados.