1. Tipos:
1.1. Frameworks de aplicación:
1.1.1. Estos frameworks forman una estructura básica de programador para ciertos tipos de aplicaciones. Proporcionan una función y una estructura que son importantes para todas las aplicaciones de ese tipo.
1.2. Frameworks de dominio
1.2.1. Los marcos de dominio crean la estructura de programación para un área problemática particular y por lo tanto proporcionan funciones para resolver este problema.
1.3. Frameworks de clase
1.3.1. Framework son una combinación de clases y métodos que se pueden utilizar para una amplia gama de aplicaciones. Apoyan la implementación de la aplicación del programador a un cierto nivel abstracto.
1.4. Frameworks de componentes
1.4.1. Estos frameworks de trabajo proporcionan un entorno para el desarrollo e integración de componentes de software, que son un conjunto de clases y generalmente tienen una interfaz claramente definida.
1.5. Frameworks de coordinación
1.5.1. Estos frameworks proporcionan la capacidad de configurar interacciones de dispositivos y sirven para garantizar una compatibilidad perfecta.
1.6. Frameworks de prueba
1.6.1. Como su nombre lo indica, este framework se utiliza para probar software desarrollado. Ejemplos bien conocidos son JUnit para pruebas de módulos y Selenium para pruebas de aplicaciones web.
1.7. Frameworks de web
1.7.1. Los frameworks web están diseñados para el desarrollo de webs dinámicas y aplicaciones web. En este sentido, proporcionan métodos y funciones para apoyar a los desarrolladores.
2. Objetivos:
2.1. Comprender y manejar la estructura de las aplicaciones complejas
2.2. Reutilizar dicha estructura para resolver problemas similares.
2.3. Planificar la evolución de la aplicación, identificando sus parte mutables e inmutables así como los costos de posibles cambios
2.4. Permitir el estudio de alguna propiedad específica del dominio.
3. ejemplos framework
3.1. Lavarel - PHP
3.2. CakePHP
3.3. .NET
3.4. Ruby on Rails
3.5. Genesis - Wordpress
3.6. Zengrid - Joomla!
3.7. PhoneGap- HTML5. CSS3 y Javascript
4. Definición
4.1. Un MT es un diseño reutilizable de todo o parte de un sistema, representado por un conjunto de clases abstractas y la forma en la cual sus instancias interactúan. Es un esquema (un esqueleto, un patrón) para el desarrollo y/o la implementación de una aplicación.
4.1.1. Las principales ventajas que ofrecen los MT son la reducción del coste de los procesos de desarrollo de aplicaciones software para dominios específicos, y la mejora de la calidad del producto final.
5. Factores a considerar cuando elijas un framework
5.1. Desarrollo web con PHP 5
5.2. Soporte de comunidad
5.2.1. Es muy importante que el framework elegido tenga una comunidad activa y participativa. De esta manera te va a ser más fácil conseguir ayuda en los momentos difíciles. Visita la web de la comunidad y asegúrate que obtendrás consejos y soluciones cuando los necesites
5.3. Documentación
5.3.1. La documentación de un framework debe estar actualizada y ser lo bastante amplia para que te ayude con los problemas que te puedan surgir. Una herramienta bien documentada es mucho más fácil de utilizar.
5.4. Simplicidad y potencia
5.4.1. Algunos framework son muy potentes pero difíciles de entender. El código generado por el framework debe ser claro y limpio, que no tengas que preocuparte de las peculiaridades internas del framework.
5.5. Arquitectura MVC
5.5.1. Como hemos comentado anteriormente, este tipo de arquitectura nos ayuda a tener separado la lógica de negocios, los datos y la presentación. De esta manera nuestro código esta mucho más ordenado, nos hace más fácil cualquier tipo de modificación y actualización y facilita mucho el trabajo en equipo.
5.6. Reutilización
5.6.1. Es imprescindible que los elementos desarrollados puedan ser reutilizados en varios proyectos
5.7. Patrón Active Record
5.7.1. Es interesante tener una clase especifica que se encargue de realizar las operaciones de modificación y consulta de una determinada tabla de una base de datos.
5.8. Posicionamiento
5.8.1. Dependiendo del proyecto puede ser que no nos interese estar bien posicionado, pero si no es así, es interesante que el framework ofrezca funcionalidades como url’s amigables, etc., para no tener que rehacer el proyecto más adelante.
5.9. Seguridad
5.9.1. Puede ser un tema que en un principio pasamos por alto y luego ya es demasiado tarde. Asegúrate que el framework este desarrollado tomando la seguridad como punto de partida. Si un framework es muy potente pero no es seguro no nos sirve de nada.