Un Framework es una abstracción de un componente de software (su construcción se basa en la experiencia) para resolver un problema en UN CONTEXTO (ojo no confundir con PATRON que es para resolver un problema en CUALQUIER contexto). Así pues, se puede considerar un framework como una aplicación genérica incompleta y configurable a la que podemos añadirle las últimas piezas para construir una aplicación concreta.Es el esqueleto sobre el cual varios objetos son integrados para una solución dada.
El concepto framework se emplea en muchos ámbitos del desarrollo de sistemas software, no solo en el ámbito de aplicaciones Web. Podemos encontrar frameworks para el desarrollo de aplicaciones médicas, de visión por computador, para el desarrollo de juegos, y para cualquier ámbito que pueda ocurrírsenos.
Objetivos principales que persigue un framework son:
- Los Frameworks son desarrollados con el objetivo de brindarles a los programadores y diseñadores una mejor organización y estructura a sus proyectos facilitando el mantenimiento de alguna aplicación.
- Facilitar el desarrollo de software, evitando los detalles de bajo nivel, permitiendo concentrar más esfuerzo y tiempo en los requerimientos de software.
- Acelerar el proceso de desarrollo
- Reutilizar código ya existente. La reutilización ha sido y es uno de los principales objetivos de la Ingeniería del Software desde sus comienzos. Mejorar las posibilidades de reutilización fue uno de las causas para la creación de las técnicas orientadas a objetos.
- Promover buenas prácticas de desarrollo como el uso de patrones
TIPOS DE FRAMEWORK WEB
Los frameworks se pueden clasificar dependiendo de algunas consideraciones en:
Funcionalidad
- Orientados a la interfaz de usuario como Java Server Faces.
- Orientados a aplicaciones de publicación de documentos, como Coocon.
- Orientados a la parte de control de eventos, como Struts y algunos que incluyen varios elementos como Tapestry.
- Full-Stack: el objetivo principal de los full-stack es proveer un conjunto de componentes que abarque todo lo que necesitas para construir una aplicación web, asegurandose que todos esos componentes funcionen bien entre si.
- Glue: por el contrario el objetivo de los glues es tener un conjunto de adaptadores e interfaces de código que puedan manejar varios componentes, es decir que funcionen bien mezclandose con otros componentes distintos al framework.
- Un framework de aplicación encapsula una capa de funcionalidad horizontal que puede ser aplicada en la construccion de una gran variedad de programas.
- Un framework de dominio implementa una capa de funcionalidad vertical, correpondiéndose con un dominio de aplicación o una línea de producto. Su evalución deberá ser también la más rápida, pues deben adaptarse a las áreas de negocio para las que están diseñados.
La mayoria de frameworks Web se encargan de ofrecer una capa de controladores de acuerdo con el patrón MVC o con el modelo 2 de Servlets y JSP, ofreciendo mecanismos para facilitar la integración con otras herramientas para la implementación de las capas de negocio y presentación.
VENTAJAS EN LA UTILIZACIÓN DE FRAMEWORKS
- Reducción en el tiempo de desarrollo de nuevos aplicativos.
- Reducción de costos de mantenimiento.
- Mayor nivel de confiabilidad (comparado con escribir codigo nuevo), en la medida que hay rehúso y el framework se estabiliza.
- Estandarización y consistencia.
- Es posible encapsular estándares y mejores prácticas de la compañia en un framework, logrando consistencia y aseguramiento de uso de dichos estándares y mejores prácticas.
DOCUMENTACION DEL FRAMEWORK
La documentación del framework es esencial, para que este pueda ser reutilizado.
La documentacion debe contener:
- El propósito del framework.
- Como debe ser utilzado.
- Diseño detallado del framework.
OTRAS CONSIDERACIONES
- Los framework no son reutilizables por si solos, y cuando se diseña e implementan soluciones con la reutilizacion en mente, el tiempo y los costos en general, son mayores.
- Los framework deben ser vistos como una inversión, ya que en la medida que el framework se reutilice, aparecerán nuevos beneficios.
- Requieren de programadores más expertos para su desarrollo, que una aplicación común.
- Requiere buena documentación y de entrenamiento para los desarrolladores que lo utilizan.
RAZONES PARA ELEGIR UN FRAMEWORK
¡No reinventemos la rueda!!!. Para que vamos a gastar tiempo desarrollando un sistema de template si puede reutilzar uno, que ya esta probado por muchos usuarios.
Muchos de los framework Web son abiertos y soportados por una comunidad que actualizan la funcionalidad y corrigen los errores de manera sostenida.
¿Cual de todos?
Lo básico para descargar cualquier framework es que actualmente lo usen bastantes programadores, que tenga una buena comunidad que lo soporte y que la documentación sea amplia y actualizada
El soporte de la comunidad es cuanta gente y cuanto participan en sus foros, chats y wikis. Es una buena oportunidad para ver el nivel de la comunidad, si el nivel es demasiado profesional o la comunidad tiene buen soporte para la gente que este aprendiendo.
EJEMPLOS DE FRAMEWORKS
Actualmente existe una gran variedad de framework para php, entre lo mas utilizados a nivel mundial estan:
- Yii
- CodeIgniter
- CakePHP
- Zend
- Symfony
- PHPDevShell
- Akelos
- QPHP
- ZooP
- Entre otros..