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) Aplicación (Orquesta) Todo debe estar en 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 Identificación de Puntos Comunes Framework Aplicación C Frozen y Hot Spots Los “frozen spots” de un framework son aquellos puntos de reutilización no o mínimamente extensibles Aplicación A Aplicación B Framework Aplicación C Puntos de extensión Aplicación D Los “hot spots” de un framework son aquellos puntos de reutilización mediana o fuertemente extensibles Caja Blanca vs. Caja Negra Framework de Caja Blanca Framework de Caja Gris Framework de Caja Negra 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 Hibernate JDBC Mapeo ObjetoRelacional iBatis Spring 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 5 Client HTTP response (HTML) Template Engine Web Server (HTTP Engine) DBMS 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 Response Request Request Request Front Controller Controller Action Dispatcher Response Response MVC en J2EE response request Controller (Servlet) forward View (JSP) update Model (JavaBean) get information MVC en PHP (ej. Prado) response Controller request (/pages/*.php) forward View (/pages/*.page) update Model (/data/*.php) get information Frameworks en PHP * * * * * * * * * * * Frameworks en PHP Web Application Component Toolkit * Ismo InterJinn * Binarycloud PhpMvc (StrutsPort) * Sitellite Phrame (StrutsPort) * Mojavi eocene (StrutsPort) * LogiCreate Ambivalence (MaverickPort) * Medusa ?Krysalis (CocoonPort) * Core Enterprise PHP Popoon (CocoonPort) * Tanjero Jive eZPublish * rwfphp MVC8 * LIMB SMART * Horde * * * * * * * * * * * Prado Copix Booby FastFrame Seagull FuseLogic Studs (StrutsPort) Cgiapp Navigator Castor 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 # 1 2 3 4 5 6 7 8 9 10 Caracteristica Documentación Seguridad Facilidad de uso Internacionalización Manejo de errores Perfil Curva de Aprendizaje Madurez Robustez adecuada Escalabilidad Peso 9 6 10 6 6 7 9 8 9 10 4. Calificación de cada Framework # 1 2 3 4 5 6 7 8 9 10 Caracteristica Documentación Seguridad Facilidad de uso Internacionalización Manejo de errores Perfil Curva de Aprendizaje Madurez Robustez adecuada Escalabilidad PEAR WACT Prado Peso 3 5 5 9 3 5 5 6 3 4 5 10 3 3 3 6 4 4 4 6 4 4 5 7 3 4 5 9 5 4 4 8 3 2 5 9 3 3 4 10 5. Computar y Seleccionar el Mejor # 1 2 3 4 5 6 7 8 9 10 Caracteristica Documentación Seguridad Facilidad de uso Internacionalización Manejo de errores Perfil Curva de Aprendizaje Madurez Robustez adecuada Escalabilidad Total PEAR 3 3 3 3 4 4 3 5 3 3 269 27 18 30 18 24 28 27 40 27 30 WACT 5 45 5 30 4 40 3 18 4 24 4 28 4 36 4 32 2 18 3 30 301 Prado Peso 5 45 9 5 30 6 5 50 10 3 18 6 4 24 6 5 35 7 5 45 9 4 32 8 5 45 9 4 40 10 364 ¿ Preguntas y Respuestas ? ¡ Muchas Gracias !