19 de junio de 2010

Nuestro Proyecto

Las imagenes de nuestro proyecto las subimos al siguiente enlace , aca hay unos preview

http://rapidshare.com/files/400796521/secuencia_de_imagenes_de_funcionamiento_aplicacion.docx.html















7. Framework y lecciones aprendidas

¿Qué es Symfony?
El framework symfony es un conjunto de relacionados, pero independientes sub-frameworks, que forman un completo framework MVC (Modelo, Vista, Controlador). Antes de la codificación inicial, nos tomamos un tiempo para leer la historia y la filosofía de symfony. Entonces, comprobamos del framework sus requisitos previos y usamos el script check_configuration.php para validar tu configuración.
Finalmente, instalamos symfony. Después de algún tiempo también desearás actualizar a la última versión del framework.
El framework también proporciona herramientas para facilitar el despliegue.
El Modelo
La parte del Modelo de symfony se puede hacer con la ayuda del ORM Doctrine. Basado en la descripción de la base de datos, esta genera las clases para los objetos, formularios, y filtros. Doctrine también genera las sentencias SQL utilizada para crear las tablas en la base de datos. La configuración de la base de datos se puede hacer con una tarea o editando un archivo de configuración. Además de su configuración, también es posible hacer la inyección inicial de datos, gracias a los archivos de datos. Puede incluso hacer que estos archivos sean dinámicos.
Los objetos Doctrine también puede ser fácilmente internacionalizados.
La Vista
De forma predeterminada, la capa de la Vista de la arquitectura MVC utiliza archivos PHP planos como plantillas.
Las plantillas puede utilizar helpers para tareas recurrentes como crear una URL o un enlace. Una plantilla puede ser decorada por un layout para abstraerse del encabezado y pie de las páginas. Para hacer vistas aún más reutilizables, puedes definir slots, partials, y componentes.
Para acelerar las cosas, puedes utilizar el sub-framework del cache para guardar en cache una página entera, solo la acción, o tan solo partials o componentes. También puedes eliminar el cache manualmente.


El Controlador
La parte del Controlador es gestionado por controladores frontales y acciones.
Las tareas se puede utilizar para crear simples módulos, módulos CRUD, o aun para generar completos y funcionales módulos admin para las clases del modelo.
Los módulos admin te permiten construir una aplicación completamente funcional sin codificación alguna.
Para abstraer la implementación técnica de un sitio web, symfony utiliza un sub-framework enrutamiento que genera URLs amigagles. Para hacer la implementación de servicios web aún más fácil, symfony soporta formatos en forma nativa. También puedes crear tus propios formatos.
Una acción puede ser reenviada a otra, o redirigida.

La Configuración
El framework symfony hace que sea fácil tener diferentes ajustes de configuración para distintos entornos. Un entorno es un conjunto de ajustes que permite diferentes comportamientos en los servidores de desarrollo o de producción. También puedes crear nuevos [entornos].
Los archivos de configuración de symfony puede definirse en diferentes niveles y la mayoría de ellos son conscientes del entorno:
* app.yml
* cache.yml
* databases.yml
* factories.yml
* generator.yml
* routing.yml
* schema.yml
* security.yml
* settings.yml
* view.yml

La mayoría de los archivos de configuración usan el formato YAML.
En lugar de utilizar la estructura de directorios por defecto y organizar tus archivos de aplicaciones por capas, también puedes organizarlos por función, y agruparlos en un plugin. Hablando de la estructura de directorios por defecto, también puedes personalizarla de acuerdo a tus necesidades.

La Depuración
Desde el logging hasta la la barra de herramientas de depuración web, y las significativas excepciones, symfony proporciona un montón de herramientas útiles para ayudar a los desarrolladores a depurar problemas con mayor rapidez.
Los Principales Objetos de Symfony
Los frameworks de symfony proporciona un buen número de objetos básicos que nos abstraen de necesidades recurrentes en los proyectos web: la petición, la respuesta, el usuario, el logging, las rutas, y el administrador del cache .
Estos objetos básicos son gestionados por el objetos sfContext, y que se configuran a través de las factorias.
El objeto user gestiona la autenticación, autorización, flashes, y atributos para ser guardado en la sesión.


Tomado de : http://www.symfony-project.org/jobeet/1_2/Doctrine/es/24

9. Hola mundo Symfony

6. Seguridad symfony

6. Seguridad symfony

El framework symfony tiene incorporadas protecciones contra XSS y CSRF. Estos ajustes pueden ser configurados desde la línea de comandos, o la edición de un archivo de configuración.El framework de formularios proporciona características incorporadas de seguridad.
Symfony en sus inicios tuvo muchos problemas de seguridad, y tenía grandes cambios versión a versión en cuanto al manejo de la seguridad. En mayo de 2008 se modificó su política de seguridad tras un grave agujero de seguridad que tardó demasiado tiempo en corregirse. Hoy en día Symfony incluye numerosas estrategias y utilidades para hacer frente a los ataques XSS y CSRF.
Symfony para el manejo de la seguridad recomiendo mantener actualizado su sistema.
Se pueden encontrar las actualizaciones del sistema en la siguiente página, los desarrolladores de symfony encuentras problemas o bugs como SQL INYECTION o problemas particulares de tipo y realizan una actualización.

http://www.symfony.es/categoria/seguridad/

5. Descripción del FrameWork de desarrollo web SYMFONY MVC

Anteriormente se dijo que el patrón MVC es un estilo de arquitectura de software que separa los datos de una aplicación, la interfaz de usuario, y la lógica de control en tres componentes distintos, y con base en esto el framwork de desarrollo Symfony cuenta con una abstracción donde se conoce con nombres diferentes a las distintas capas de este patrón.
En el framework symfony las distintas funcionalidades son creadas en modulos dentro de la aplicación web, cada modulo ofrecerá un servicio en particular y su creación estará estructurada en una carpeta con el nombre del modulo, dentro de esta por lo general hay dos carpetas denominadas actions y templates.
Un modulo se compone de un controlador frontal, un layout donde se ubica el código HTML y el código de la acción, es en el que se encuentra la información del acceso a la base de datos.
En el transcurso de la evolución del proyecto se tuvo que trabajar en la abstracción, para usar el patrón MVC con symfony, sobretodo en la construcción del chat ya que fue creado sin ayuda de ningún plugin, aprendiendo a realizar el acceso a la base de datos necesario y el código html y las diferentes acciones para dar por concebido el chat del GROUPWARE para el grupo IDIS.

PATRONES ARQUITECTURALES QUE SE UTILIZARON
En el desarrollo del proyecto para construir un GRUOPWARE para el grupo IDIS, empleamos el patrón MVC como ya se dijo anteriormente, ya que el framework adopta este patrón y es un patrón bastante útil al momento de separa la lógica del negocio de la parte de la presentación y demás artefactos necesarios en la aplicación, MVC es un patrón de alto nivel. Además el proyecto de creación GROUPWARE se hizo uso del patrón controlador de frente ya que se hacia el llamado del modulo y la acción correspondiente, dicho patrón maneja la lógica recibiendo las solicitudes del servidor para analizarles y según sea el caso delega la acción requerida. Además se empleo el patrón de información solicitada al momento de realizar la autenticación de usuarios al solicitar la información del usuario en particular, dependiendo de los privilegios con los que cuente el usuario en cuestión y existirá un menú para el usuario administrador y para el usuario miembro del grupo IDIS, al igual que la solicitud de datos en el chat.

4. METODOLOGÍA DE DESARROLLO APLICADA AL PROYECTO DE CREACIÓN DE UN SISTEMA GROUPWARE PARA EL GRUPO IDIS DE LA UNIVERSIDAD DEL CAUCA

Anteriormente se comentó que la metodología adoptada en el desarrollo de la aplicación Groupware para el grupo de investigación conocido como GRUPO IDIS, de la universidad del Cauca fue XP(PROGRAMACION EXTREMA), que fue una metodología de desarrollo muy apropiada debido al poco tiempo disponible, en esta ocasión durante la etapa de culminación del proyecto se conservaron los roles asignados anteriormente, debido a los buenos resultados arrojados en la anterior etapa no se realizaron modificaciones en los roles pero se debió de intensificar el trabajo durante los últimos días aun excediendo los horarios establecidos, de tal forma que si se había fijado trabajar jornadas diarias de 3-4 horas, se trabajó jornadas de 8 horas diarias en los últimos 3 días previos a la fecha de entrega del proyecto, puesto que surgieron inconvenientes en la construcción de los módulos que comprenden el chat y el calendario manejador de eventos.
Dentro del plan de trabajo establecido en el cronograma de actividades se logró construir la libreta de direcciones, donde Héctor Alcázar, programo la mayoría de las funcionalidades de esta, con ayuda de Vanessa y José Luis se llevaron a cabo los últimos detalles de este modulo, en las funcionalidades del chat y el calendario de eventos, se planeo dar solución con mudulos ya creados por el soporte de symfony frameowork , pero lamentablemente al momento de aplicarles al proyecto que se estaba construyendo , surgió la problemática que no era posible realizar con éxito dicha incorporación a la aplicación en construcción, por lo que se recomienda para futuros proyectos de desarrollo con ayuda del framework symfony el realizar un muy buen estudio de las funcionalidades que se desean incorporar a la aplicación ya que de no hacerlo sufrirán las consecuencias, en nuestro caso la mitología de desarrollo ayudo bastante para soportar los tropiezos con la planificación, pero se debe de buscar módulos de symfony bastante trabajados ya que de no ser así se deberán de concebir las distintas funcionalidades, paso a paso y no se aprovechara al máximo las bondades del framework symfony.
La metodología sugirió que las integrantes del grupo con mayores afinidades en las distintas necesidades fuera el encargado de tal responsabilidad, en este caso en el área de desarrollo se traba de forma conjunta donde todos los miembros trabajan en el desarrollo del código para la aplicación, nuestro desarrollador principal es Héctor Alcázar, Vanessa agredo se encarga de la planificación de actividades labores como pruebas son realizadas por José Luis Martínez entre otras tareas que son asumidas por los diferentes integrantes del grupo, el desarrollo fue manejado en conjunto debido a la naturaleza de symfony que no permite crear carpetas y archivos manualmente, copiar y pegar módulos creados en otros equipos, ya que symfony trabaja con la consola que con unas cuantas líneas de comando incorpora módulos completos a la aplicación, y basta con personalizar los módulos creados es por esta razón que se debió trabajar la creación de las distintas funcionalidades en conjunto, sin dejar de lado los roles de pruebas ,programación de actividades y demás para trabajar según la responsabilidad asignada en un principio.
La experiencia es bastante gratificante gracias a que el trabajo con este grupo de trabajo es bien distribuido y se trabajó a gusto, se debe tener en cuenta que al momento de querer trabajar en un determinado proyecto de desarrollo la escogencia de un framework de desarrollo y metodología de desarrollo marca una trayectoria bastante grande en la realización del mismo y de acuerdo con lo anterior se tendrá éxito más fácilmente o no, con cualquier framework de desarrollo se puede dar solución a la construcción de una aplicación en particular, pero es claro que cada herramienta y cada mitología de desarrollo aporta funcionalidades a cada proyecto.