Informe 1 Frameworks v0.4 Final

16
Pontificia Universidad Católica de Valparaíso Pontificia Universidad Católica de Valparaíso Facultad de Ingeniería Escuela de Ingeniería Informática Formulación y Evaluación de Proyectos ICI 541-1 Frameworks Integrantes: Jorge Chávez Paolo Giachetti Eduardo Mendoza Natalia Niño Choon-Ho Yoon Profesor: Antonio Moya Villegas

Transcript of Informe 1 Frameworks v0.4 Final

Page 1: Informe 1 Frameworks v0.4 Final

Pontificia UniversidadCatólica de Valparaíso

Pontificia Universidad Católica de ValparaísoFacultad de Ingeniería

Escuela de Ingeniería Informática

Formulación y Evaluación de ProyectosICI 541-1

Frameworks

Integrantes:Jorge Chávez

Paolo GiachettiEduardo Mendoza

Natalia NiñoChoon-Ho Yoon

Profesor: Antonio Moya Villegas

Page 2: Informe 1 Frameworks v0.4 Final

Formulación y Evaluación de Proyectos, ICI 541-1Frameworks

Contenido1 Introducción....................................................................................................................2

2 Desarrollo........................................................................................................................3

2.1 Framework................................................................................................................3

2.2 Ventajas y Desventajas de utilizar Framework........................................................4

2.2.1 Ventajas de utilizar Framework.............................................................................4

2.2.2 Desventajas de utilizar Framework........................................................................5

2.3 Caso de Estudio: Symfony.......................................................................................5

2.3.1 Características principales de Symfony.................................................................6

2.3.2 Aplicaciones de Symfony......................................................................................6

3 Conclusión......................................................................................................................8

4 Bibliografía.....................................................................................................................9

1

Page 3: Informe 1 Frameworks v0.4 Final

Formulación y Evaluación de Proyectos, ICI 541-1Frameworks

1 Introducción

El concepto de framework, lo que traducido al español significa “Marco de Trabajo”, como su nombre lo dice, se define, desde el punto de vista del software, como un marco o ambiente de trabajo. Es un conjunto de bibliotecas y componentes reutilizables, para el desarrollo rápido de aplicaciones.

La utilización de un framework trae diversas ventajas, como la agilidad en el desarrollo, reducción de errores, facilidad en la mantención, entre otras. Pero además trae desventajas, como el tiempo requerido en aprender y familiarizarse al framework, posibles dificultades en la modificación del framework, entre otras. Estas desventajas por lo general son despreciables en comparación a las ventajas que un framework ofrece.

Se puede considerar el framework Symfony como caso de estudio, este framework está dirigido a la creación de aplicaciones Web. Fue desarrollado por Fabien Potencier en Octubre de 2005. Elaborado en PHP5, es compatible con gran parte de gestores de bases de datos, incluyendo MySQL, PostgreSQL, SQL Server y Oracle.

2

Page 4: Informe 1 Frameworks v0.4 Final

Formulación y Evaluación de Proyectos, ICI 541-1Frameworks

2 Desarrollo

2.1 Framework

El concepto de framework, lo que traducido al español significa “Marco de Trabajo”, como su nombre lo dice, se define, desde el punto de vista del software, como un marco o ambiente de trabajo. Es un conjunto de bibliotecas y componentes reutilizables, para el desarrollo rápido de aplicaciones.

Para ello, un framework define, en términos generales, un conjunto estandarizado de conceptos y se enfoca en un tipo de problemática específica que sirve como referencia para enfrentar, diseñar y solucionar nuevos problemas de carácter similar.

En el desarrollo de software, el framework es una estructura conceptual y tecnológica con soporte definido, en el cual otro proyecto de software puede ser desarrollado y organizado, dicho en otros términos, es un molde, una base, que sirve de ayuda para la creación y organización de nuevos proyectos software, y de esta manera, facilitar enormemente el desarrollo de software, permitiendo a los diseñadores y programadores dedicar más tiempo en la especificación de requerimientos y en otras de las actividades del proceso de software.

Los frameworks suelen incluir:

Soporte de programas. Bibliotecas. Lenguaje de scripting, para desarrollar y unir los diferentes componentes de un

proyecto.

Algunos frameworks más conocidos:

Biblioteca de Componentes Visuales (VCL) de CodeGear. Swing y AWT, para el desarrollo de aplicaciones en Java. Struts, para el desarrollo de aplicaciones web en Java. Ruby On Rails, para el desarrollo de aplicaciones web escrito en Ruby. Symfony (que será nuestro caso de estudio).

Cabe destacar que, los frameworks simplifican el desarrollo de las aplicaciones mediante la automatización de muchas de las tareas frecuentes. Además, un framework proporciona una estructura predefinida del código fuente, forzando al programador a crear código más robusto, legible y más fácil de mantener.

3

Page 5: Informe 1 Frameworks v0.4 Final

Formulación y Evaluación de Proyectos, ICI 541-1Frameworks

2.2 Ventajas y Desventajas de utilizar Framework

Dependiendo del proyecto a realizar por el desarrollador, éste puede tomar la decisión de usar un determinado framework. Para esto, se toma en consideración principalmente dos criterios, que son el lenguaje de programación a utilizar y el tipo de aplicación a desarrollar. Pero es importante destacar las ventajas y desventajas existentes al usar un framework antes de tomar una decisión respecto a su implementación.

2.2.1 Ventajas de utilizar framework

1. Permite un desarrollo sencillo de aplicaciones, debido a que los componentes propios del framework están basados en soluciones predefinidas, por lo que liberan al progra-mador de crear funciones o componentes desde cero y tener que lidiar con código de bajo nivel.

2. Al tratarse de código que ya ha sido construido, probado y utilizado por otros progra-madores, disminuye considerablemente las posibilidades que existan fallas con relación a las funciones o componentes implementados desde el framework.

3. No hay necesidad de aprender a utilizar ninguna aplicación en específico, ni utilizar ninguna técnica de programación de bajo nivel, lo que permite centrarse en la lógica del negocio y aplicación de las directrices del proyecto.

4. Ya que el proceso se realiza de manera más ágil, el desarrollador puede enfocarse más en los requerimientos u otras partes del desarrollo.

5. Las funciones de los framework son altamente reutilizables.

6. Facilita el trabajo en equipo. El uso y la programación de componentes que siguen un diseño uniforme y estandarizado permite que sea más fácil comprender y modificar el código de otro programador.

7. Por lo general se encuentran bien documentados, con recursos disponibles en Internet, como utilidades y librerías, lo cual podrá satisfacer funciones más específicas del pro-yecto en sí y mantener el código actualizado.

8. Soluciona problemas comunes como la identificación de usuarios, seguridad, conectivi-dad con la base de datos, almacenamiento en caché, etc.

4

Page 6: Informe 1 Frameworks v0.4 Final

Formulación y Evaluación de Proyectos, ICI 541-1Frameworks

2.2.2 Desventajas de utilizar Framework

1. El código fuente se vuelve dependiente del framework utilizado, por lo que si se quiere cambiar de framework, será necesario reescribir la mayor parte del código.

2. Los framework al ser reutilizables tienden a generalizar la funcionalidad de los compo-nentes. Esto puede ocasionar un exceso de código y funciones que no se utilizarán. De esta manera, pueden provocar una sobrecarga innecesaria en los recursos del computa-dor.

3. Durante los primeros proyectos, el tiempo que se ahorra en programación y diseño al usar framework, se gasta en aprender a usarlo.

4. En el caso de originarse un error, resulta difícil la localización de éste, ya que por lo ge -neral se desconoce con exactitud el funcionamiento del framework.

5. Si existe un error de seguridad en el código del framework, puede llegar a afectar a to-das las aplicaciones que se encuentren utilizándolo.

2.3 Caso de Estudio: Symfony

Este Framework fue desarrollado en sus inicios por Fabien Potencier en Octubre de 2005. Fabien es presidente de Sensio, una empresa francesa de desarrollo de aplicaciones web. El nombre Symfony proviene de Sensio y Framework, escogido por su facilidad de ser reconocido y por la no asociación a otros proyectos.

Está categorizado como un framework para aplicaciones web, facilitando el trabajo mediante la automatización de algunos de los patrones utilizados para resolver las tareas comunes.

Symfony separa las capas de negocio, servidor y presentación de la aplicación web. Muchas tareas complejas u operaciones repetitivas de bajo nivel son simplificadas por Symfony en instrucciones sencillas para los desarrolladores, por lo que les permite dedicarse por completo a los aspectos específicos de cada aplicación.

Utilizando prácticas comunes en el desarrollo de aplicaciones web, se pueden evitar reconstrucciones de módulos ya creados y así acortar el tiempo de desarrollo y los costos del proyecto en cuestión.

Symfony está desarrollado completamente con PHP5 y es compatible con gran parte de gestores de bases de datos, incluyendo MySQL, PostgreSQL, SQL Server y Oracle.

Symfony puede ser ejecutado en plataformas con sistema operativo Windows, Linux o Unix.

5

Page 7: Informe 1 Frameworks v0.4 Final

Formulación y Evaluación de Proyectos, ICI 541-1Frameworks

2.3.1 Características principales de Symfony

Facilidad de instalación y configuración en una gran variedad de plataformas.

Independencia de los sistemas gestores de base de datos.

Adaptabilidad para el manejo de problemas complejos.

Aplica la mayoría de las buenas prácticas del diseño web.

Facilidad de comprensión del código, gracias a los comentarios de phpDocumentor.

Extensible, ya que permite la integración de librerías desarrolladas por terceros.

Automatiza características de proyectos web, como la traducción de datos y de in-terfaz, así como la adaptación local de los contenidos. Los formularios incluyen va-lidación automatizada y relleno automático de datos para asegurar la obtención de datos correctos.

Se puede personalizar para cumplir con los requisitos de las empresas que disponen sus propias políticas y reglas para la gestión de proyectos y la programación de apli-caciones.

Posee módulos de pruebas unitarias y funcionales para desarrollo basado en prue-bas.

Lleva un registro en detalle de todas las actividades que se realizan en la aplicación.

2.3.2 Aplicaciones de Symfony

Debido a que Symfony es un framework MVC full-stack para desarrollo en PHP [1], sus aplicaciones en la industria del desarrollo web son casi ilimitadas, ofreciendo herramientas para la construcción desde sitios webs personalizados tales como blogs, hasta aplicaciones y plataformas más complejas y a gran escala, como e-commerce o sitios corporativos.

Al pertenecer a la categoría de framework MCV (Model-Control-View) full-stack, Symfony ofrece para sus aplicaciones, un ambiente con fuertes convenciones, cohesión, buenas prácticas y por ende un desarrollo en base a componentes robustos que facilitan el trabajo de grandes equipos de trabajo en aplicaciones complejas[1]. Estas características han hecho de Symfony el framework de elección por prestigiosas compañías como Yahoo!, en el desarrollo de su plataforma Yahoo! Answers.

6

Page 8: Informe 1 Frameworks v0.4 Final

Formulación y Evaluación de Proyectos, ICI 541-1Frameworks

Ilustración 1: Yahoo! Answers fue desarrollado en base a Symfony

En este ejemplo se muestra la página de Yahoo Answers[2] y demuestra que symfony puede ser utilizado en la construcción de aplicaciones web complejas.

Otros casos de estudios incluyen Yahoo! Bookmarks, del.icio.us y Dailymotion, todas aplicaciones web de complejidad avanzada.

7

Page 9: Informe 1 Frameworks v0.4 Final

Formulación y Evaluación de Proyectos, ICI 541-1Frameworks

3 Conclusión

En la actualidad el uso de frameworks es muy frecuente en el desarrollo de aplicaciones, facilitando enormemente las labores de desarrollo, lo que permite agilidad y eficacia en la entrega de proyectos.

Aunque el uso de los framework supone de algunas desventajas que suceden principalmente durante las primeras implementaciones, suelen ser menospreciadas en comparación con las ventajas que posee y la manera en la que optimiza el desarrollo de una aplicación. Debido a esto, es porque los frameworks son tan populares y están siendo elegidos para la ejecución de un gran número de proyectos. Aun así, no hay que olvidar que, aunque los framework ofrezcan muchas facilidades en el desarrollo, en algunas ocasiones lo mejor será comenzar desde cero y hacer un software a la medida de lo que exijan los requerimientos.

Symfony es un framework para aplicaciones web desarrollado en base a PHP5 y soporta la mayoría de motores de base de datos.

Symfony es de código abierto, para que cualquiera pueda modificarlo para cumplir con sus necesidades o contribuir en su desarrollo.

Symfony automatiza varias prácticas repetitivas o de bajo nivel para aplicaciones web, por lo que facilita el desarrollo y mantención de aplicaciones complejas, desviando la atención de problemas orientados al lenguaje, a problemas orientados a la aplicación o proyecto en sí.

Symfony, pertenece a la categoría de framework MCV (Model-Control-View) full-stack, se observa su optimización para proyectos de grandes escalas gracias a que facilita herramientas y componentes de trabajos estándares para el equipo de desarrollo.

Symfony al ser un framework full-stack, elimina la capacidad de utilización de librerías externas que no siguen sus convenciones, al contrario de los glue frameworks, que sí permiten esto. Ejemplos de glue frameworks son Monk Framework [3] y Zend Framework[4].

Symfony, si bien tiene una amplia cohesión, lo robusto de su estructura viene también con un alto nivel de acoplamiento, ya que una de las características de los Frameworks Full-stack, es que sus componentes dependen unos de otros y por ende varias secciones de código no pueden ser deshabilitadas a libre discreción.

8

Page 10: Informe 1 Frameworks v0.4 Final

Formulación y Evaluación de Proyectos, ICI 541-1Frameworks

4 Bibliografía

[1] SENSIOLABS, Getting Started Symfony 1.4. Symfony, 08 de Abril, 2011.

[2] Dustin Whittle, Yahoo! Answers powered by Symfony. [en línea] <http://symfony.com/blog/yahoo-answers-powered-by-symfony> [consulta: 08, Abril, 2011]

[3] CytrusByte, Monk the Glue Framework, [en línea] <http://monkrb.com/> [consulta: 08, Abril, 2011]

[4] Zend Framework Web Page [en línea] <http://framework.zend.com/>

[5] Ralph E. Johnson. Frameworks = (Components+Patterns), COMMUNICATIONS OF THE ACM, Octubre 1997. <http://www.inf.ufsc.br/~vilain/framework-thiago/p39-johnson.pdf>

[6] http://www.maestrosdelweb.com/editorial/el-framework-symfony-una-introduccion- practica-i-parte/

[7] http://www.yiiframework.com/forum/index.php?/topic/14300-advantages-and- disadvantages-of-framework-programming/

[8] http://jordisan.net/blog/2006/que-es-un-framework

[9] http://es.wikipedia.org/wiki/Framework

[10] http://es.answers.yahoo.com/question/index?qid=20070817175348AAgSFgE

[11] http://www.alegsa.com.ar/Dic/framework.php

[12] http://www.symfony-project.org

[13] http://librosweb.es

9