FRAMEWORKS(Conceptos y Prácticas) Contenido • Introducción • Principio de Inversión de Control • Características de los Frameworks • Frameworks en Java • Frameworks en PHP • Evaluación de Frameworks Contenido • Introducción • Principio de Inversión de Control • Características de los Frameworks • Frameworks en Java • Frameworks en PHP • Evaluación de Frameworks Reuso en el Desarrollo. de Software • Copiar y Pegar • Inclusión de archivos • Librerías de funciones • API • Mediante herencia • Mediante composición • Por plantillas • Con componentes • Usando patrones • Usando frameworks • De Modelos • … Definición de Framework “Un Framework es una mini-arquitectura reutilizable que provee la estructura genérica y el comportamiento para una familia de abstracciones de software, junto con un contexto formado por metáforas que especifican las colaboraciones y el uso en un dominio dado.” Reuso de diseño y código Al adoptar un framework estamos reusando tanto el diseño que éste trae incorporado como el artefacto físico (código ejecutable). Por este motivo el creador del framework debe ser un experto en el dominio. Contenido • Introducción • Principio de Inversión de Control • Características de los Frameworks • Frameworks en Java • Frameworks en PHP • Evaluación de Frameworks Principio de Inversión del Control El código de un aplicación convencional está formado por piezas centrales que utilizan clases o rutinas utilitarias externas. Principio de Inversión del Control En el desarrollo con frameworks, las clases o módulos de una aplicación son “manejados” por la lógica de control interna del framework. Principio de Inversión del Control Framework (Director) Todo debe Aplicación estar en (Orquesta) un lugar acordado Contenido • Introducción • Principio de Inversión de Control • Características de los Frameworks • Frameworks en Java • Frameworks en PHP • Evaluación de Frameworks Estructura de un Framework Frozen Spot Hot Spot Desarrollo con Frameworks Nacimiento de un Framework Aplicación A Aplicación B Aplicación C Identificación de Puntos Comunes Framework Frozen y Hot Spots Los “frozen spots” de un framework son aquellos puntos de reutilización no Aplicación A o mínimamente extensibles Aplicación B Framework Aplicación C Puntos de extensión Los “hot spots” de un framework son aquellos puntos de reutilización Aplicación D mediana o fuertemente extensibles Caja Blanca vs. Caja Negra Framework de Framework de Caja Blanca Caja Negra Framework de Caja Gris Contenido • Introducción • Principio de Inversión de Control • Características de los Frameworks • Frameworks en Java • Frameworks en PHP • Evaluación de Frameworks Frameworks (en Java) JSF Eventos, Componentes, IoC WebWork Tapestry MVC, Action controller Struts Freemaker, Velocity Frameworks de presentación Servlets JSPs Frameworks de integración de componentes Pool de Objetos Picocontainer EJBs Frameworks de persistencia IoC, POJO Spring Hibernate JDBC Mapeo Objeto- Relacional iBatis Framework JUnit Basado en el patrón Template Method Arquitecturas por capas y Frameworks Elementos J2EE distribuidos en 5 niveles Implantación de patrones Framework STRUTS Framework ORACLE BC4J Contenido • Introducción • Principio de Inversión de Control • Características de los Frameworks • Frameworks en Java • Frameworks en PHP • Evaluación de Frameworks Historia de PHP •1994 •Creado por Rasmus Lerdorf. •Llamado: Personal Home Page •1995 •PHP/FI (Interprete de Formularios) •1998 •Liberado PHP3 •Llamado: Hypertext Preprocessor Historia de PHP •2000 •Liberado PHP4 •Motor ZEND creado por: •Zeev Suraski •Andi Gutmans •…En la actualidad •Liberada PHP5 http://www.php.net/ http://www.zend.com/ Antecedentes de Frameworks en PHP 2 *.php 3 1 (Bytecode) HTTP request (PHP) HTML 4 DBMS 5 Template HTTP response Engine (HTML) Client Web Server (HTTP Engine) Antecedentes de Frameworks en PHP Template Engine. (Motores de Plantillas) •Smarty •PHP Nuke •TemplatePower •xTemplate •FastTemplate •PHPlib Frameworks en PHP Frameworks en PHP Frameworks MVC en PHP Request Response Front Action Response Request Controller Controller Dispatcher Request Response MVC en J2EE response Controller View request (Servlet) forward (JSP) update get Model information (JavaBean) MVC en PHP (ej. Prado) response Controller View request (/pages/*.php) forward (/pages/*.page) update get Model information (/data/*.php) Frameworks en PHP Frameworks en PHP * Web Application Component Toolkit * Ismo * Prado * InterJinn * Binarycloud * Copix * PhpMvc (StrutsPort) * Sitellite * Booby * Phrame (StrutsPort) * Mojavi * FastFrame * eocene (StrutsPort) * LogiCreate * Seagull * Ambivalence (MaverickPort) * Medusa * FuseLogic * ?Krysalis (CocoonPort) * Core Enterprise PHP * Studs (StrutsPort) * Popoon (CocoonPort) * Tanjero Jive * Cgiapp * eZPublish * rwfphp * Navigator * MVC8 * LIMB * Castor * SMART * Horde * VAAL Fuente: http://wact.sourceforge.net/index.php/MvcFrameworksWrittenInPhp Frameworks en PHP Contenido • Introducción • Principio de Inversión de Control • Características de los Frameworks • Frameworks en Java • Frameworks en PHP • Evaluación de Frameworks Evaluación de Frameworks en PHP 1. Selección de los Frameworks. 2. Selección de las características. 3. Valoración de las características. 4. Calificación de cada Framework. 5. Computar totales y seleccionar el mejor Framework. 1. Selección de los Frameworks Alternativas: •PEAR: http://pear.php.net/ •WACT: http://www.phpwact.org/ •Prado: http://www.pradosoft.com/ 1. Selección de los Frameworks PEAR • Basado en componentes. • Framework propio de la comunidad de PHP. • Propone estilos estándar de codificación. • Manejo de errores. • Amplia baraja de librerías. • Actualizaciones en línea e integradas con PHP. • Uso de AJAX. 1. Selección de los Frameworks WACT • Implementación MVC. • Manejo de errores. • Numerosas opciones de configuración. • Facilidad para el cambio en la lógica del negocio. • Motor de plantillas. • Arquitectura de controladores. • Fácil integración con AJAX. • Robustas alternativas para el montaje de seguridad. 1. Selección de los Frameworks Prado • Basado en componentes. • Programación dirigida por eventos. • Integración de temas. • Reusabilidad. • Variedad de controles web • Soporte de Ajax a partir de la versión 3.1 • Cumplimiento de XHTML • Motor de Plantillas. • Fácil de usar, robusto y maneja de Excepciones. • Usa técnicas de cache para mejorar desempeño. • Php Rapid Application Development Object-oriented. • Validaciones livianas en Java-Script. 2. Selección de las Características Documentación: Manuales, ejemplos y comunidad de desarrollo del framework para garantizar un adecuado soporte. Seguridad: Manejo de usuarios y mecanismos de personalización de menús para la adecuada implementación de roles. Facilidad de uso: Proceso de instalación sencillo, al igual que las actualizaciones y adaptaciones sobre el framework. Internacionalización: mecanismos para el manejo de parámetros que permitan la internacionalización del portal. Manejo de errores: Captura y personalización de los errores para un adecuado tratamiento y presentación de los mismos. 2. Selección de las Características Perfil: Soporte a un modelo de desarrollo adecuado a las necesidades particulares del equipo técnico. Curva de Aprendizaje: Dificultad a facilidad para la implementación de ejemplos que nos definan la complejidad de uso. Madurez: Versión del framework y sistemas en producción que han sido desarrollados usando éste. Robustez adecuada: Mecanismos de manejo de concurrencia y volúmenes de información que se ajusten a las necesidades del portal. Escalabilidad: Adecuado manejo de los servicios de infraestructura que garanticen mantener tiempos de respuestas apropiados a pesar del crecimiento del portal. 3. Valoración de las Características # Caracteristica Peso 1 Documentación 9 2 Seguridad 6 3 Facilidad de uso 10 4 Internacionalización 6 5 Manejo de errores 6 6 Perfil 7 7 Curva de Aprendizaje 9 8 Madurez 8 9 Robustez adecuada 9 10 Escalabilidad 10 4. Calificación de cada Framework # Caracteristica PEAR WACT Prado Peso 1 Documentación 3 5 5 9 2 Seguridad 3 5 5 6 3 Facilidad de uso 3 4 5 10 4 Internacionalización 3 3 3 6 5 Manejo de errores 4 4 4 6 6 Perfil 4 4 5 7 7 Curva de Aprendizaje 3 4 5 9 8 Madurez 5 4 4 8 9 Robustez adecuada 3 2 5 9 10 Escalabilidad 3 3 4 10 5. Computar y Seleccionar el Mejor # Caracteristica PEAR WACT Prado Peso 1 Documentación 3 27 5 45 5 45 9 2 Seguridad 3 18 5 30 5 30 6 3 Facilidad de uso 3 30 4 40 5 50 10 4 Internacionalización 3 18 3 18 3 18 6 5 Manejo de errores 4 24 4 24 4 24 6 6 Perfil 4 28 4 28 5 35 7 7 Curva de Aprendizaje 3 27 4 36 5 45 9 8 Madurez 5 40 4 32 4 32 8 9 Robustez adecuada 3 27 2 18 5 45 9 10 Escalabilidad 3 30 3 30 4 40 10 Total 269 301 364 ¿ Preguntas y Respuestas ? ¡ Muchas Gracias !