SlideShare una empresa de Scribd logo
1 de 29
Descargar para leer sin conexión
Desarrollo ágil
        con
Yupp PHP Framework


  A/C Pablo Pazos Gutierrez
         JIIO 2008
Agenda
• Desarrollo ágil
  – Ideas
• Frameworks (artefactos de software)
  – Definición y objetivos
  – Clasificación
  – Agilidad en la programación
• Yupp Framework
  –   Generalidades
  –   Estado actual y futuro
  –   YORM
  –   YMVC
• Resumen
1. Desarrollo ágil (I)
Objetivos:
 – Utilizar herramientas que resuelvan problemas de programación
   simples y repetitivos, para poder dedicar el tiempo a resolver otras
   tareas más complejas que agreguen más valor al proyecto.
 – Minimizar riesgos de desarrollar software en periodos cortos de
   tiempo.
 – Obtener resultados rápidamente.
 – Posibilidad de adaptarse a requerimientos cambiantes o agregar
   nuevos requerimientos sin afectar el avance del proyecto.
 – Aumentar productividad del equipo de desarrollo y calidad del
   producto.
 – Comenzar el proyecto con código que funciona y no tiene errores.
1. Desarrollo ágil (II)

• Yupp PHP Framework aumenta el “nivel”
  de desarrollo que tiene PHP, mediante un
  framework liviano (implementado 100%
  utilizando primitivas PHP), simple de
  aprender y utilizar, 100% orientado a
  objetos, con convenciones para realizar
  las tareas censillas y la posibilidad de
  extenderse para manejar tareas más
  complejas o no contempladas en las
  convenciones.
2. Frameworks (I)

• Según Wikipedia:
  – Un framework, en el desarrollo de software
    es una estructura de soporte definida en la
    cual otro proyecto de software puede ser
    organizado y desarrollado.
  – Provee una estructura y una metodología de
    trabajo.
  – http://es.wikipedia.org/wiki/Framework
2. Frameworks (II)
• Un framework no es una librería.
• Una librería apunta a reutilizar código y rutinas.
• Un framework apunta a reutilizar módulos y
  componentes, que son elementos de diseño no
  rutinas de implementación.
• La reutilización de módulos está en un nivel
  mayor a la reutilización de rutinas.
• La reutilización de rutinas se aplica a la
  programación procedural, mientras que la
  reutilización de módulos se aplica más a la
  programación orientada a objetos.
2. Frameworks (III)
• Clasificaciones de frameworks por principal
  funcionalidad:
  – Acceso a datos
     • Simplificar el acceso, conexión con múltiples motores de
       bases de datos.
  – Interfaz de usuario
     • Simplificar la construcción y generación.
  – Conectividad entre sistemas
     • Web services, XML.
  – Modularización
     • Organización del código en unidades independientes y
       reutilizables.
  – Verticales (incluye todos los anteriores)
2. Frameworks (IV)
• Ejemplo: framework vertical
  – Componentes desarrollados + Framework = Sistema
  – Yupp Framework es un vertical porque integra y simplifica todas
    las funcionalidades: acceso a datos, comunicación, interfaz de
    usuario y modularización.
3. Yupp Framework (I)
• Yupp y su aporte al desarrollo ágil
 – Comenzar el proyecto con código funcionando
 – Tareas simples y tediosas resueltas
    • No es necesario diseñar la base de datos: se genera
      automáticamente a partir de la definición del modelo de datos
      orientado a objetos.
    • Tareas de ruteo de pedidos y obtención de parámetros (por
      ejemplo valores enviados por un formulario) son manejados por el
      framework. Además cuenta con validación automática de datos.
    • Cuenta con herramientas que facilitan la generación de páginas y
      favorecen la reutilización de código de presentación.
    • Definición explícita de componentes ayuda a ordenar el código y
      a reutilizar componentes entre distintas instalaciones de Yupp.
    • Etc, etc....
3. Yupp Framework (II)
• Objetivo:
   – simplificar el desarrollo de sistemas web 2.0, y posibilitar
     el prototipado rápido de aplicaciones.
• Usuarios: programadores / diseñadores (web, UI)
• Características:
   –   Desarrollado en PHP 5 (100% Orientado a Objetos)
   –   Open Source: Apache License 2.0
   –   Basado en convenciones (paradigma: convention over configuration)
   –   Orientado a componentes: extensión indefinida de la funcionalidad
   –   Módulos principales:
        • YORM: Acceso a datos mediante Object Relational Mapping
        • YMVC: Implementación del patrón Model-View-Controler
   – Simple, fácil de aprender y usar, documentación creciente,
     desarrollo y mejora constante.
3. Yupp Framework (III)
• ¿Qué ofrece concretamente Yupp
  Framework?
  – Prototipos: sirve para desarrollar prototipos
    funcionales, de sistemas complejos,
    rápidamente.
  – Sistemas web 2.0: sirve para desarrollar
    sistemas completos de pequeño y mediano
    porte en una forma ordenada, intuitiva, rápida y
    simple.
  – Futuro cercano: generación de código,
    integración con otros sistemas, empaquetado e
    instalación de componentes reusables.
3. Yupp Framework (VI)
• Estado actual del proyecto (en dic-2008):
   – v0.1.5
   – Aprox. 50 clases y 10 KLOC
• ¿Por qué PHP?
   – Lenguaje poderoso (PHP5 100% OO)
   – Integrado con múltiples tecnologías: encriptado, WS, XML, HTTP,
     sockets, email, proceso de imágenes, gran cantidad de DBMS, etc.
   – Multiplataforma: Winows, Linux/Unix, MacOS
   – Requiere infraestructura mínima:
      • Servidor HTTP: Apache, Lighttpd, ...
      • Intérprete PHP
   – Soporte de múltiples IDEs (Implementado con Eclipse+plugins)
   – Fácil de aprender
   – Excelente documentación (http://www.php.net)
3. Yupp Framework (V)
Futuro:
 – Automatizar el procesamiento de artefactos de análisis/diseño: casos de uso y modelos
   de datos, por ejemplo:
     • Generar flujos de páginas web a partir de diagramas de flujo:
          – Los diagramas de flujo, mostrando la interacción del usuario con el sistema, se desprenden de los casos de
            uso ya especificados.
     • Generar modelo de datos a partir de diagramas de clases:
          – Yupp ya genera el esquema de la BD y las funcionalidades CRUD, por lo que a partir de un diagrama de
            clases se podría tener un sistema funcionando con altas, bajas, modificaciones y consultas! (CRUD en
            inglés)
     • Generación automática de casos de prueba unitaria:
          – Para cada clase del dominio, generar pruebas unitarias que permitan realizar testing para las operaciones
            CRUD. Estos casos luego pueden ser extendidos o ampliados por el usuario.

 – Generar modelo de datos a partir de bases de datos existentes:
     • Para generar informes utilizando la API de consultas de Yupp
     • Creación de nuevos sistemas de gestión basados en web sobre sistemas legado
 – Fuentes de datos remotas (Yupp como front-end)
 – Importar / exportar componentes entre aplicaciones (al estilo de paquetes)
3. Yupp Framework (VI)
• Generación de flujos de páginas funcionales =
  cliente contento + detección temprana en errores
  de requerimientos
               El cliente ve a la interfaz de usuario como todo el sistema
               La interfaz de usuario funcionando en etapas tempranas
               del proyecto agrega:
                   Visibilidad sobre el avance (para el cliente)
                   Posibilidad de detectar problemas en requerimientos
                   Posibilidad de detectar requerimientos ocultos
                   Aporta a la comunicación y agilidad del proceso
                     -Detecto un problema temprano
                     -Adapto el proceso rápidamente
                     -Sigo adelante
               Yupp puede servir como herramienta de prototipado de
               sistemas que no se implementen en PHP, pero igual se
               quiera tener una UI rápidamente para mostrarle al cliente.
3. Yupp Framework (VII)
• 2 componentes principales:
  – YORM: encargada de la definición y persistencia
    de los datos, agrega un capa de abstracción del
    acceso a dato y una forma orientada a objetos
    de realizar consultas.
  – YMVC: implementación del patrón Model-View-
    Controller, encargada de procesar los pedidos
    HTTP del usuario, realizar precesamiento de la
    información, determinar que vista mostrarle al
    usuario y generar una página web (o algún tipo
    de salida, p.e. XML).
3. Yupp Framework: YORM
•   YORM: Yupp Object-Relational Mapping
    –   Componente de acceso a datos y persistencia
    –   Definición de modelos de datos OO
    –   Generación automática de tablas en la BD
    –   Soporte para:
         • Clases y atributos
         • Links
              – Unidireccionales / bidireccionales
              – Diferentes cardinalidades: 1..1, 1..N, N..N
         •   Herencia
              – Mapeo de única tabla (STI: single table inheritance)
              – Mapeo de múltiples tablas (MTI: múltiple table inheritance)
    – Validación automática
    – API
         • manipular la base de datos (CRUD)
         • manejar el modelo OO
         • manejar errores de validación
    – Principio: la API maneja los casos más comunes de consultas
      sin necesidad de escribir ni una línea de SQL.
3. Yupp Framework: YORM

Tipos de links y opciones de mapeo de
    herencia soportados por YORM.
3. Yupp Framework: YORM

Ejemplo: modelo de datos para sistema de blog
3. Yupp Framework: YORM
• Tablas generadas automáticamente a
  partir de la implementación del modelo
  de datos (ejemplo del blog)
3. Yupp Framework: YORM
• Fuentes de datos remotas: futuro
  – Integración con otros sistemas
  – Yupp Framework como front-end (la fuente de datos está
    en otro sistema, Yupp se encarga de la UI)
3. Yupp Framework: YORM
• YORM API:
  – Manejo de la base:
     •   static get(id:Integer) : PersistentObject // Cargar un objeto de la base
     •   static listAll() : List<PersistentObject> // Cargar todos los objetos
     •   static count(): Integer                    // Contar todos los objetos
     •   static findBy(c:Condition) : List<PersistentObject>
     •   static countBy(c:Condition) : Integer      // Contar datos que cumplen condición
     •   validate(): Boolean                        // Validación automática de datos
     •   save(): Boolean                            // Insert o update, sabe cual hacer
     •   delete( logical: Boolean)                  // Eliminación física o lógica
  – Manejo de errores de validación:
     • hasErrors(): Boolean                       // Verifica si tiene errores
     • getErrors(): List<FieldErrors>             // Obtener errores de todos los campos
     • getFieldError(fieldName:String) : FieldErrors
  – Manejo de relaciones: (métodos dinámicos)
     •   getXXX(): PersistentObject | Datatype     //   Obtener el valor del atributo XXX
     •   setXXX( PersistentObject | Datatype )     //   Establecer el valor del atrib. XXX
     •   addToXXX( PersistentObject )              //   Agregar un elemento a una lista XXX
     •   removeFromXXX( PersitentObject )          //   Quitar el elemento de la lista XXX



Comentario: XXX es el nombre de un atributo de la clase, en el caso de getXXX
y setXXX es un atributo simple, en el caso de addToXXX y removeFromXXX es
una colección de elementos.
3. Yupp Framework: YORM
• Definición de una clase “Usuario” del modelo de datos
     class Usuario extends PersistentObject
     {
        function __construct()
        {
           $this->withTable = quot;usuariosquot;;
           $this->addAttribute(quot;nombrequot;,           Datatypes :: TEXT);
           $this->addAttribute(quot;emailquot;,            Datatypes :: TEXT);
           $this->addAttribute(quot;clavequot;,            Datatypes :: TEXT);
           $this->addAttribute(quot;edadquot;,             Datatypes :: INT_NUMBER);
           $this->addAttribute(quot;fechaNacimientoquot;, Datatypes :: DATE);
           $this->addHasMany(quot;comentariosquot;, Comentario);
           $this->addHasMany(quot;entradasquot;,     EntradaBlog);
           $this->constraints = array (
              quot;nombrequot; => array (
                 Constraint :: minLength(1),
                 Constraint :: maxLength(30),
                 Constraint :: blank(false)
              ),
              quot;clavequot; => array( Constraint :: minLength(5) ),
              quot;edadquot;   => array( Constraint :: between(10, 100) ),
              quot;emailquot; => array( Constraint :: email() )
           );
        }
     }
3. Yupp Framework: YMVC
• Yupp Model-View-Controller
  –Implementación sólida del patrón MVC,
   más herramientas necesarias.
  –Tareas:
    • Rutear los pedidos a controladores
    • Ejecutar lógica de negocio
       – Acceso a datos (YORM)
       – Comunicación con otros sistemas (@todo)
       – Proceso de información
    • Determinar la salida
       – Que salida, en que formato: HTML, XML, JSON, CSV
       – Caso más frecuente: generar una página HTML para el usuario
    • Generación de páginas
       – Colaboración entre vista, layout, helpers y templates para generar una
         página HTML maximizando la reutilización de código.
3. Yupp Framework: YMVC
•Proceso de un pedido:
 – URL: /blog/usuario/show?id=1
 – Convención: /{component}/{controller}/{action}?params
3. Yupp Framework: YMVC
•   Filters: extraen parámetros del pedido.
•   Custom mappings: determinan a que acción de que controlador hay que
    invocar.
•   Excecuter: es quien llama a la acción y controla su ejecución.
•   Controller: es donde se define la lógica de las acciones.
•   WebFlow: flujo definido en un controlador, permite especificar una
    secuencia de acciones y páginas de forma sencilla.
•   View model: es el contenedor de datos que se utiliza para que el controller
    le pase datos a las vistas.
•   View: definen como se debe mostrar la información al usuario, generando
    una página HTML.
•   Layout: define el aspecto general de un conjunto de vistas, sirve para
    hacer lucir similar a varias vistas reutilizando este código común.
•   Template: si un tipo de información se muestra de la misma forma en
    varias vistas, ese código se pone en un template que se utiliza siempre
    para mostrar la misma información, es un nivel más detallado de reuso de
    código que el layout.
•   Helpers: toda lógica de presentación que sea muy utilizada debe ir en un
    helper, un helper equivale a una taglib de JSP, por ejemplo hay un helper
    para generar links, la llamada a templates se hace mediante un helper,
    para incluir CSS o Javascript se utiliza un helper, etc.
3. Yupp Framework: YMVC
• Ejemplo: salvar una entrada luego de editada
   – Nota: el código es análogo para salvar cualquier otra clase del
     modelo da datos     simplifica la generación automática de código
           class EntradaBlogController extends YuppController {
              ...
              public function saveAction()
              {
                  $id = $this->params['id'];
                  $obj = EntradaBlog::get( $id );
                  $obj->setProperties( $this->params );

                     // Si no puede salvar, vuelve a edit y muestra errores de validación
                     if ( !$obj->save() )
                     {
                          $this->params['object'] = $obj;
                          return $this->render(quot;entradaBlog/editquot;, &$this->params);
                     }

                     // Modelo para vista show
                     $this->params['object'] = $obj;
                     return $this->render(quot;entradaBlog/showquot;, &$this->params);
               }
               ...
           }
Usuario de Yupp Framework
                 ¡ADVERTENCIA!




 Desarrollar con Yupp puede ser perjudicial para la salud ☺
4. Resumen
• Buscar alivianar el proceso de desarrollo
  considerando consejos de metodologías ágiles
  (iteraciones, artefactos, comunicación) y utilizar
  herramientas que se adapten al proceso para
  automatizar tareas simples y repetitivas dejando
  las “manos libres” para atender los verdaderos
  problemas.
• Yupp Framework busca la agilidad en la
  automatización de conversión de artefactos,
  generación de prototipos, como solución para
  desarrollo de aplicaciones web 2.0 de pequeño y
  mediano porte, o como front-end de sistemas de
  mayor porte desarrollados en con tecnologías.
¿Preguntas?

           A/C Pablo Pazos Gutierrez
                pablo.swp@gmail.com

              Yupp PHP Framework
    http://groups.google.com/group/yuppframeworkphp
             http://yuppframework.blogspot.com
http://www.simplewebportal.net/yupp_framework_php_doc/

Más contenido relacionado

La actualidad más candente

Aplicando Uwe - Un ejemplo didactico
Aplicando Uwe - Un ejemplo didacticoAplicando Uwe - Un ejemplo didactico
Aplicando Uwe - Un ejemplo didacticomillernegro
 
Lp II clase01 - Desarrollo de software con RUP
Lp II   clase01 - Desarrollo de software con RUPLp II   clase01 - Desarrollo de software con RUP
Lp II clase01 - Desarrollo de software con RUPAngelDX
 
Metodologias para el desarrollo de aplicacones web
Metodologias para el desarrollo de aplicacones webMetodologias para el desarrollo de aplicacones web
Metodologias para el desarrollo de aplicacones webJosafat Mtz
 
Desarrollo software orientado a la web
Desarrollo  software orientado a la webDesarrollo  software orientado a la web
Desarrollo software orientado a la webMaritza_Tapia
 
Requerimientos, Ventajas y Desventajas de las aplicaciones web
Requerimientos, Ventajas y Desventajas de las aplicaciones webRequerimientos, Ventajas y Desventajas de las aplicaciones web
Requerimientos, Ventajas y Desventajas de las aplicaciones webAlonzer Acid Nox
 
Java frameworks
Java frameworksJava frameworks
Java frameworksmaurocol13
 
Metodologia de desarrollo de aplicaciones eorm
Metodologia de desarrollo de aplicaciones eormMetodologia de desarrollo de aplicaciones eorm
Metodologia de desarrollo de aplicaciones eormLeonardo Martinez
 

La actualidad más candente (12)

Aplicando Uwe - Un ejemplo didactico
Aplicando Uwe - Un ejemplo didacticoAplicando Uwe - Un ejemplo didactico
Aplicando Uwe - Un ejemplo didactico
 
Metodología WEB NDT
Metodología WEB NDTMetodología WEB NDT
Metodología WEB NDT
 
Metodologia Diseño Web
Metodologia Diseño WebMetodologia Diseño Web
Metodologia Diseño Web
 
Lp II clase01 - Desarrollo de software con RUP
Lp II   clase01 - Desarrollo de software con RUPLp II   clase01 - Desarrollo de software con RUP
Lp II clase01 - Desarrollo de software con RUP
 
Wsdm
WsdmWsdm
Wsdm
 
Uwe uml
Uwe umlUwe uml
Uwe uml
 
Conociendo Nuestro Fua interno
Conociendo Nuestro Fua internoConociendo Nuestro Fua interno
Conociendo Nuestro Fua interno
 
Metodologias para el desarrollo de aplicacones web
Metodologias para el desarrollo de aplicacones webMetodologias para el desarrollo de aplicacones web
Metodologias para el desarrollo de aplicacones web
 
Desarrollo software orientado a la web
Desarrollo  software orientado a la webDesarrollo  software orientado a la web
Desarrollo software orientado a la web
 
Requerimientos, Ventajas y Desventajas de las aplicaciones web
Requerimientos, Ventajas y Desventajas de las aplicaciones webRequerimientos, Ventajas y Desventajas de las aplicaciones web
Requerimientos, Ventajas y Desventajas de las aplicaciones web
 
Java frameworks
Java frameworksJava frameworks
Java frameworks
 
Metodologia de desarrollo de aplicaciones eorm
Metodologia de desarrollo de aplicaciones eormMetodologia de desarrollo de aplicaciones eorm
Metodologia de desarrollo de aplicaciones eorm
 

Destacado

Buenas prácticas para el desarrollo Web
Buenas prácticas para el desarrollo WebBuenas prácticas para el desarrollo Web
Buenas prácticas para el desarrollo Webgueste60889d
 
Desarrollo Web con Kohana Framework PHP
Desarrollo Web con Kohana Framework PHPDesarrollo Web con Kohana Framework PHP
Desarrollo Web con Kohana Framework PHPJavier López López
 
AngularJS 1 - A Superheroic Javascript MVC framework (Spanish)
AngularJS 1 - A Superheroic Javascript MVC framework (Spanish)AngularJS 1 - A Superheroic Javascript MVC framework (Spanish)
AngularJS 1 - A Superheroic Javascript MVC framework (Spanish)Nacho García Fernández
 
Curso Básico de AngularJS
Curso Básico de AngularJSCurso Básico de AngularJS
Curso Básico de AngularJSCarlos Azaustre
 
Patron de Desarrollo Modelo Vista Controlador
Patron de Desarrollo Modelo Vista ControladorPatron de Desarrollo Modelo Vista Controlador
Patron de Desarrollo Modelo Vista ControladorHenry Vargas
 
144 Rest Web Services
144 Rest Web Services144 Rest Web Services
144 Rest Web ServicesGeneXus
 
Introducción a Laravel 5 - Un Framework para Artesanos Web
Introducción a Laravel 5 - Un Framework para Artesanos WebIntroducción a Laravel 5 - Un Framework para Artesanos Web
Introducción a Laravel 5 - Un Framework para Artesanos WebFacundo E. Goñi Perez
 
Developing Java Web Applications
Developing Java Web ApplicationsDeveloping Java Web Applications
Developing Java Web Applicationshchen1
 
Calculadora Gráfica Java implementando el Patrón MVC
Calculadora Gráfica Java implementando el Patrón MVCCalculadora Gráfica Java implementando el Patrón MVC
Calculadora Gráfica Java implementando el Patrón MVCIgnacio Aular Reyes
 
Arquitectura y diseño de aplicaciones Java EE
Arquitectura y diseño de aplicaciones Java EEArquitectura y diseño de aplicaciones Java EE
Arquitectura y diseño de aplicaciones Java EECarlos Gavidia-Calderon
 
Arquitectura de una aplicación
Arquitectura de una aplicaciónArquitectura de una aplicación
Arquitectura de una aplicaciónuniv of pamplona
 
Arquitectura 3 Capas
Arquitectura 3 CapasArquitectura 3 Capas
Arquitectura 3 CapasFani Calle
 
Digpen 7: Why choose Laravel?
Digpen 7: Why choose Laravel?Digpen 7: Why choose Laravel?
Digpen 7: Why choose Laravel?John Blackmore
 

Destacado (20)

Introducción a Kohana Framework
Introducción a Kohana FrameworkIntroducción a Kohana Framework
Introducción a Kohana Framework
 
Buenas prácticas para el desarrollo Web
Buenas prácticas para el desarrollo WebBuenas prácticas para el desarrollo Web
Buenas prácticas para el desarrollo Web
 
Desarrollo Web con Kohana Framework PHP
Desarrollo Web con Kohana Framework PHPDesarrollo Web con Kohana Framework PHP
Desarrollo Web con Kohana Framework PHP
 
Angular Conceptos Practicos 1
Angular Conceptos Practicos 1Angular Conceptos Practicos 1
Angular Conceptos Practicos 1
 
Introducción a Angular JS
Introducción a Angular JSIntroducción a Angular JS
Introducción a Angular JS
 
AngularJS 1 - A Superheroic Javascript MVC framework (Spanish)
AngularJS 1 - A Superheroic Javascript MVC framework (Spanish)AngularJS 1 - A Superheroic Javascript MVC framework (Spanish)
AngularJS 1 - A Superheroic Javascript MVC framework (Spanish)
 
Curso Básico de AngularJS
Curso Básico de AngularJSCurso Básico de AngularJS
Curso Básico de AngularJS
 
Patron de Desarrollo Modelo Vista Controlador
Patron de Desarrollo Modelo Vista ControladorPatron de Desarrollo Modelo Vista Controlador
Patron de Desarrollo Modelo Vista Controlador
 
144 Rest Web Services
144 Rest Web Services144 Rest Web Services
144 Rest Web Services
 
Introducción a Laravel 5 - Un Framework para Artesanos Web
Introducción a Laravel 5 - Un Framework para Artesanos WebIntroducción a Laravel 5 - Un Framework para Artesanos Web
Introducción a Laravel 5 - Un Framework para Artesanos Web
 
Developing Java Web Applications
Developing Java Web ApplicationsDeveloping Java Web Applications
Developing Java Web Applications
 
Calculadora Gráfica Java implementando el Patrón MVC
Calculadora Gráfica Java implementando el Patrón MVCCalculadora Gráfica Java implementando el Patrón MVC
Calculadora Gráfica Java implementando el Patrón MVC
 
MVC: La Vista
MVC: La VistaMVC: La Vista
MVC: La Vista
 
CRUD html php mysql
CRUD html php mysqlCRUD html php mysql
CRUD html php mysql
 
Arquitectura y diseño de aplicaciones Java EE
Arquitectura y diseño de aplicaciones Java EEArquitectura y diseño de aplicaciones Java EE
Arquitectura y diseño de aplicaciones Java EE
 
Arquitectura de una aplicación
Arquitectura de una aplicaciónArquitectura de una aplicación
Arquitectura de una aplicación
 
Arquitectura para aplicaciones web
Arquitectura para aplicaciones webArquitectura para aplicaciones web
Arquitectura para aplicaciones web
 
Arquitectura de aplicaciones
Arquitectura de aplicacionesArquitectura de aplicaciones
Arquitectura de aplicaciones
 
Arquitectura 3 Capas
Arquitectura 3 CapasArquitectura 3 Capas
Arquitectura 3 Capas
 
Digpen 7: Why choose Laravel?
Digpen 7: Why choose Laravel?Digpen 7: Why choose Laravel?
Digpen 7: Why choose Laravel?
 

Similar a Desarrollo ágil con Yupp PHP Framework

herramientas tecnológicas
herramientas tecnológicasherramientas tecnológicas
herramientas tecnológicasGerardo Linares
 
Prototipado rapido de interfaces
Prototipado rapido de interfacesPrototipado rapido de interfaces
Prototipado rapido de interfacesGaby Fernandez
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de softwaremat3matik
 
Ingeniería%20de%20 software[1], maryy
Ingeniería%20de%20 software[1], maryyIngeniería%20de%20 software[1], maryy
Ingeniería%20de%20 software[1], maryynelly
 
Ingeniería de software16
Ingeniería de software16Ingeniería de software16
Ingeniería de software16Ramon
 
Ingenier%c3%ada de software
Ingenier%c3%ada de softwareIngenier%c3%ada de software
Ingenier%c3%ada de softwareMarilupe
 
Ingen de software
Ingen de softwareIngen de software
Ingen de softwareerikapoh
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de softwaresamantha
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de software142918
 
Metodología rup final
Metodología rup finalMetodología rup final
Metodología rup finalMariaC7
 
DESARROLLO RAPIDO DE APLICACIONES WEB
DESARROLLO RAPIDO DE APLICACIONES WEBDESARROLLO RAPIDO DE APLICACIONES WEB
DESARROLLO RAPIDO DE APLICACIONES WEBJavier Condori Flores
 

Similar a Desarrollo ágil con Yupp PHP Framework (20)

herramientas tecnológicas
herramientas tecnológicasherramientas tecnológicas
herramientas tecnológicas
 
Clase 11
Clase 11Clase 11
Clase 11
 
Prototipado rapido de interfaces
Prototipado rapido de interfacesPrototipado rapido de interfaces
Prototipado rapido de interfaces
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de software
 
Ingeniería%20de%20 software[1], maryy
Ingeniería%20de%20 software[1], maryyIngeniería%20de%20 software[1], maryy
Ingeniería%20de%20 software[1], maryy
 
Ingeniería de software16
Ingeniería de software16Ingeniería de software16
Ingeniería de software16
 
Ingenier%c3%ada de software
Ingenier%c3%ada de softwareIngenier%c3%ada de software
Ingenier%c3%ada de software
 
Ingen de software
Ingen de softwareIngen de software
Ingen de software
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de software
 
Clase 11
Clase 11Clase 11
Clase 11
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de software
 
Metodología rup final
Metodología rup finalMetodología rup final
Metodología rup final
 
DESARROLLO RAPIDO DE APLICACIONES WEB
DESARROLLO RAPIDO DE APLICACIONES WEBDESARROLLO RAPIDO DE APLICACIONES WEB
DESARROLLO RAPIDO DE APLICACIONES WEB
 
7984
79847984
7984
 
7984
79847984
7984
 
tema1 clase 1
tema1 clase 1tema1 clase 1
tema1 clase 1
 
7984
79847984
7984
 
7984
79847984
7984
 
7984
79847984
7984
 
7984
79847984
7984
 

Más de Pablo Pazos

Microservicios y plataformas abiertas en salud - JIAP 2018
Microservicios y plataformas abiertas en salud - JIAP 2018Microservicios y plataformas abiertas en salud - JIAP 2018
Microservicios y plataformas abiertas en salud - JIAP 2018Pablo Pazos
 
Apoyo a la toma de decisiones clínicas con openEHR y SNOMED CT - casos de uso...
Apoyo a la toma de decisiones clínicas con openEHR y SNOMED CT - casos de uso...Apoyo a la toma de decisiones clínicas con openEHR y SNOMED CT - casos de uso...
Apoyo a la toma de decisiones clínicas con openEHR y SNOMED CT - casos de uso...Pablo Pazos
 
openEHR presentacion informativa 2017
openEHR presentacion informativa 2017openEHR presentacion informativa 2017
openEHR presentacion informativa 2017Pablo Pazos
 
CaboLabs - Workshop de interoperabilidad usando estándares
CaboLabs - Workshop de interoperabilidad usando estándaresCaboLabs - Workshop de interoperabilidad usando estándares
CaboLabs - Workshop de interoperabilidad usando estándaresPablo Pazos
 
CaboLabs - Estándares e interoperabilidad en informática en salud
CaboLabs - Estándares e interoperabilidad en informática en saludCaboLabs - Estándares e interoperabilidad en informática en salud
CaboLabs - Estándares e interoperabilidad en informática en saludPablo Pazos
 
CaboLabs - Proyectos de informatica en salud
CaboLabs - Proyectos de informatica en saludCaboLabs - Proyectos de informatica en salud
CaboLabs - Proyectos de informatica en saludPablo Pazos
 
EHRServer - Plataforma Abierta para Gestionar y Compartir Datos Clínicos Esta...
EHRServer - Plataforma Abierta para Gestionar y Compartir Datos Clínicos Esta...EHRServer - Plataforma Abierta para Gestionar y Compartir Datos Clínicos Esta...
EHRServer - Plataforma Abierta para Gestionar y Compartir Datos Clínicos Esta...Pablo Pazos
 
Presentación del Taller de Interoperabilidad con Mirth Connect y HL7
Presentación del Taller de Interoperabilidad con Mirth Connect y HL7Presentación del Taller de Interoperabilidad con Mirth Connect y HL7
Presentación del Taller de Interoperabilidad con Mirth Connect y HL7Pablo Pazos
 
Presentacion del programa de formacion profesional de Informática en Salud, E...
Presentacion del programa de formacion profesional de Informática en Salud, E...Presentacion del programa de formacion profesional de Informática en Salud, E...
Presentacion del programa de formacion profesional de Informática en Salud, E...Pablo Pazos
 
Design and implementation of Clinical Databases using openEHR
Design and implementation of Clinical Databases using openEHRDesign and implementation of Clinical Databases using openEHR
Design and implementation of Clinical Databases using openEHRPablo Pazos
 
openEHR Developers Workshop at #MedInfo2015
openEHR Developers Workshop at #MedInfo2015openEHR Developers Workshop at #MedInfo2015
openEHR Developers Workshop at #MedInfo2015Pablo Pazos
 
Towards the Implementation of an openEHR-based Open Source EHR Platform (a vi...
Towards the Implementation of an openEHR-based Open Source EHR Platform (a vi...Towards the Implementation of an openEHR-based Open Source EHR Platform (a vi...
Towards the Implementation of an openEHR-based Open Source EHR Platform (a vi...Pablo Pazos
 
openEHR training in Latin America - Pablo Pazos #MedInfo2015
openEHR training in Latin America - Pablo Pazos #MedInfo2015openEHR training in Latin America - Pablo Pazos #MedInfo2015
openEHR training in Latin America - Pablo Pazos #MedInfo2015Pablo Pazos
 
openEHR: aspectos de interoperabilidad y mantenibilidad
openEHR: aspectos de interoperabilidad y mantenibilidadopenEHR: aspectos de interoperabilidad y mantenibilidad
openEHR: aspectos de interoperabilidad y mantenibilidadPablo Pazos
 
Generación automática de interfaces de usuario para sistemas de información c...
Generación automática de interfaces de usuario para sistemas de información c...Generación automática de interfaces de usuario para sistemas de información c...
Generación automática de interfaces de usuario para sistemas de información c...Pablo Pazos
 
Presentacion InfoLac 2014 - generacion de interfaz de usuario para sistemas d...
Presentacion InfoLac 2014 - generacion de interfaz de usuario para sistemas d...Presentacion InfoLac 2014 - generacion de interfaz de usuario para sistemas d...
Presentacion InfoLac 2014 - generacion de interfaz de usuario para sistemas d...Pablo Pazos
 
Developing openEHR EHRs - core functionalities
Developing openEHR EHRs - core functionalitiesDeveloping openEHR EHRs - core functionalities
Developing openEHR EHRs - core functionalitiesPablo Pazos
 
Taller de Modelado Clínico con openEHR - HIBA 2013
Taller de Modelado Clínico con openEHR - HIBA 2013Taller de Modelado Clínico con openEHR - HIBA 2013
Taller de Modelado Clínico con openEHR - HIBA 2013Pablo Pazos
 
Taller de implementación de openEHR - HIBA 2013
Taller de implementación de openEHR - HIBA 2013Taller de implementación de openEHR - HIBA 2013
Taller de implementación de openEHR - HIBA 2013Pablo Pazos
 
CaboLabs: expertos en informática médica, estándares e interoperabilidad
CaboLabs: expertos en informática médica, estándares e interoperabilidadCaboLabs: expertos en informática médica, estándares e interoperabilidad
CaboLabs: expertos en informática médica, estándares e interoperabilidadPablo Pazos
 

Más de Pablo Pazos (20)

Microservicios y plataformas abiertas en salud - JIAP 2018
Microservicios y plataformas abiertas en salud - JIAP 2018Microservicios y plataformas abiertas en salud - JIAP 2018
Microservicios y plataformas abiertas en salud - JIAP 2018
 
Apoyo a la toma de decisiones clínicas con openEHR y SNOMED CT - casos de uso...
Apoyo a la toma de decisiones clínicas con openEHR y SNOMED CT - casos de uso...Apoyo a la toma de decisiones clínicas con openEHR y SNOMED CT - casos de uso...
Apoyo a la toma de decisiones clínicas con openEHR y SNOMED CT - casos de uso...
 
openEHR presentacion informativa 2017
openEHR presentacion informativa 2017openEHR presentacion informativa 2017
openEHR presentacion informativa 2017
 
CaboLabs - Workshop de interoperabilidad usando estándares
CaboLabs - Workshop de interoperabilidad usando estándaresCaboLabs - Workshop de interoperabilidad usando estándares
CaboLabs - Workshop de interoperabilidad usando estándares
 
CaboLabs - Estándares e interoperabilidad en informática en salud
CaboLabs - Estándares e interoperabilidad en informática en saludCaboLabs - Estándares e interoperabilidad en informática en salud
CaboLabs - Estándares e interoperabilidad en informática en salud
 
CaboLabs - Proyectos de informatica en salud
CaboLabs - Proyectos de informatica en saludCaboLabs - Proyectos de informatica en salud
CaboLabs - Proyectos de informatica en salud
 
EHRServer - Plataforma Abierta para Gestionar y Compartir Datos Clínicos Esta...
EHRServer - Plataforma Abierta para Gestionar y Compartir Datos Clínicos Esta...EHRServer - Plataforma Abierta para Gestionar y Compartir Datos Clínicos Esta...
EHRServer - Plataforma Abierta para Gestionar y Compartir Datos Clínicos Esta...
 
Presentación del Taller de Interoperabilidad con Mirth Connect y HL7
Presentación del Taller de Interoperabilidad con Mirth Connect y HL7Presentación del Taller de Interoperabilidad con Mirth Connect y HL7
Presentación del Taller de Interoperabilidad con Mirth Connect y HL7
 
Presentacion del programa de formacion profesional de Informática en Salud, E...
Presentacion del programa de formacion profesional de Informática en Salud, E...Presentacion del programa de formacion profesional de Informática en Salud, E...
Presentacion del programa de formacion profesional de Informática en Salud, E...
 
Design and implementation of Clinical Databases using openEHR
Design and implementation of Clinical Databases using openEHRDesign and implementation of Clinical Databases using openEHR
Design and implementation of Clinical Databases using openEHR
 
openEHR Developers Workshop at #MedInfo2015
openEHR Developers Workshop at #MedInfo2015openEHR Developers Workshop at #MedInfo2015
openEHR Developers Workshop at #MedInfo2015
 
Towards the Implementation of an openEHR-based Open Source EHR Platform (a vi...
Towards the Implementation of an openEHR-based Open Source EHR Platform (a vi...Towards the Implementation of an openEHR-based Open Source EHR Platform (a vi...
Towards the Implementation of an openEHR-based Open Source EHR Platform (a vi...
 
openEHR training in Latin America - Pablo Pazos #MedInfo2015
openEHR training in Latin America - Pablo Pazos #MedInfo2015openEHR training in Latin America - Pablo Pazos #MedInfo2015
openEHR training in Latin America - Pablo Pazos #MedInfo2015
 
openEHR: aspectos de interoperabilidad y mantenibilidad
openEHR: aspectos de interoperabilidad y mantenibilidadopenEHR: aspectos de interoperabilidad y mantenibilidad
openEHR: aspectos de interoperabilidad y mantenibilidad
 
Generación automática de interfaces de usuario para sistemas de información c...
Generación automática de interfaces de usuario para sistemas de información c...Generación automática de interfaces de usuario para sistemas de información c...
Generación automática de interfaces de usuario para sistemas de información c...
 
Presentacion InfoLac 2014 - generacion de interfaz de usuario para sistemas d...
Presentacion InfoLac 2014 - generacion de interfaz de usuario para sistemas d...Presentacion InfoLac 2014 - generacion de interfaz de usuario para sistemas d...
Presentacion InfoLac 2014 - generacion de interfaz de usuario para sistemas d...
 
Developing openEHR EHRs - core functionalities
Developing openEHR EHRs - core functionalitiesDeveloping openEHR EHRs - core functionalities
Developing openEHR EHRs - core functionalities
 
Taller de Modelado Clínico con openEHR - HIBA 2013
Taller de Modelado Clínico con openEHR - HIBA 2013Taller de Modelado Clínico con openEHR - HIBA 2013
Taller de Modelado Clínico con openEHR - HIBA 2013
 
Taller de implementación de openEHR - HIBA 2013
Taller de implementación de openEHR - HIBA 2013Taller de implementación de openEHR - HIBA 2013
Taller de implementación de openEHR - HIBA 2013
 
CaboLabs: expertos en informática médica, estándares e interoperabilidad
CaboLabs: expertos en informática médica, estándares e interoperabilidadCaboLabs: expertos en informática médica, estándares e interoperabilidad
CaboLabs: expertos en informática médica, estándares e interoperabilidad
 

Último

Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaarkananubis
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxJOSEFERNANDOARENASCA
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 

Último (20)

Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en mina
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptx
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 

Desarrollo ágil con Yupp PHP Framework

  • 1. Desarrollo ágil con Yupp PHP Framework A/C Pablo Pazos Gutierrez JIIO 2008
  • 2. Agenda • Desarrollo ágil – Ideas • Frameworks (artefactos de software) – Definición y objetivos – Clasificación – Agilidad en la programación • Yupp Framework – Generalidades – Estado actual y futuro – YORM – YMVC • Resumen
  • 3. 1. Desarrollo ágil (I) Objetivos: – Utilizar herramientas que resuelvan problemas de programación simples y repetitivos, para poder dedicar el tiempo a resolver otras tareas más complejas que agreguen más valor al proyecto. – Minimizar riesgos de desarrollar software en periodos cortos de tiempo. – Obtener resultados rápidamente. – Posibilidad de adaptarse a requerimientos cambiantes o agregar nuevos requerimientos sin afectar el avance del proyecto. – Aumentar productividad del equipo de desarrollo y calidad del producto. – Comenzar el proyecto con código que funciona y no tiene errores.
  • 4. 1. Desarrollo ágil (II) • Yupp PHP Framework aumenta el “nivel” de desarrollo que tiene PHP, mediante un framework liviano (implementado 100% utilizando primitivas PHP), simple de aprender y utilizar, 100% orientado a objetos, con convenciones para realizar las tareas censillas y la posibilidad de extenderse para manejar tareas más complejas o no contempladas en las convenciones.
  • 5. 2. Frameworks (I) • Según Wikipedia: – Un framework, en el desarrollo de software es una estructura de soporte definida en la cual otro proyecto de software puede ser organizado y desarrollado. – Provee una estructura y una metodología de trabajo. – http://es.wikipedia.org/wiki/Framework
  • 6. 2. Frameworks (II) • Un framework no es una librería. • Una librería apunta a reutilizar código y rutinas. • Un framework apunta a reutilizar módulos y componentes, que son elementos de diseño no rutinas de implementación. • La reutilización de módulos está en un nivel mayor a la reutilización de rutinas. • La reutilización de rutinas se aplica a la programación procedural, mientras que la reutilización de módulos se aplica más a la programación orientada a objetos.
  • 7. 2. Frameworks (III) • Clasificaciones de frameworks por principal funcionalidad: – Acceso a datos • Simplificar el acceso, conexión con múltiples motores de bases de datos. – Interfaz de usuario • Simplificar la construcción y generación. – Conectividad entre sistemas • Web services, XML. – Modularización • Organización del código en unidades independientes y reutilizables. – Verticales (incluye todos los anteriores)
  • 8. 2. Frameworks (IV) • Ejemplo: framework vertical – Componentes desarrollados + Framework = Sistema – Yupp Framework es un vertical porque integra y simplifica todas las funcionalidades: acceso a datos, comunicación, interfaz de usuario y modularización.
  • 9. 3. Yupp Framework (I) • Yupp y su aporte al desarrollo ágil – Comenzar el proyecto con código funcionando – Tareas simples y tediosas resueltas • No es necesario diseñar la base de datos: se genera automáticamente a partir de la definición del modelo de datos orientado a objetos. • Tareas de ruteo de pedidos y obtención de parámetros (por ejemplo valores enviados por un formulario) son manejados por el framework. Además cuenta con validación automática de datos. • Cuenta con herramientas que facilitan la generación de páginas y favorecen la reutilización de código de presentación. • Definición explícita de componentes ayuda a ordenar el código y a reutilizar componentes entre distintas instalaciones de Yupp. • Etc, etc....
  • 10. 3. Yupp Framework (II) • Objetivo: – simplificar el desarrollo de sistemas web 2.0, y posibilitar el prototipado rápido de aplicaciones. • Usuarios: programadores / diseñadores (web, UI) • Características: – Desarrollado en PHP 5 (100% Orientado a Objetos) – Open Source: Apache License 2.0 – Basado en convenciones (paradigma: convention over configuration) – Orientado a componentes: extensión indefinida de la funcionalidad – Módulos principales: • YORM: Acceso a datos mediante Object Relational Mapping • YMVC: Implementación del patrón Model-View-Controler – Simple, fácil de aprender y usar, documentación creciente, desarrollo y mejora constante.
  • 11. 3. Yupp Framework (III) • ¿Qué ofrece concretamente Yupp Framework? – Prototipos: sirve para desarrollar prototipos funcionales, de sistemas complejos, rápidamente. – Sistemas web 2.0: sirve para desarrollar sistemas completos de pequeño y mediano porte en una forma ordenada, intuitiva, rápida y simple. – Futuro cercano: generación de código, integración con otros sistemas, empaquetado e instalación de componentes reusables.
  • 12. 3. Yupp Framework (VI) • Estado actual del proyecto (en dic-2008): – v0.1.5 – Aprox. 50 clases y 10 KLOC • ¿Por qué PHP? – Lenguaje poderoso (PHP5 100% OO) – Integrado con múltiples tecnologías: encriptado, WS, XML, HTTP, sockets, email, proceso de imágenes, gran cantidad de DBMS, etc. – Multiplataforma: Winows, Linux/Unix, MacOS – Requiere infraestructura mínima: • Servidor HTTP: Apache, Lighttpd, ... • Intérprete PHP – Soporte de múltiples IDEs (Implementado con Eclipse+plugins) – Fácil de aprender – Excelente documentación (http://www.php.net)
  • 13. 3. Yupp Framework (V) Futuro: – Automatizar el procesamiento de artefactos de análisis/diseño: casos de uso y modelos de datos, por ejemplo: • Generar flujos de páginas web a partir de diagramas de flujo: – Los diagramas de flujo, mostrando la interacción del usuario con el sistema, se desprenden de los casos de uso ya especificados. • Generar modelo de datos a partir de diagramas de clases: – Yupp ya genera el esquema de la BD y las funcionalidades CRUD, por lo que a partir de un diagrama de clases se podría tener un sistema funcionando con altas, bajas, modificaciones y consultas! (CRUD en inglés) • Generación automática de casos de prueba unitaria: – Para cada clase del dominio, generar pruebas unitarias que permitan realizar testing para las operaciones CRUD. Estos casos luego pueden ser extendidos o ampliados por el usuario. – Generar modelo de datos a partir de bases de datos existentes: • Para generar informes utilizando la API de consultas de Yupp • Creación de nuevos sistemas de gestión basados en web sobre sistemas legado – Fuentes de datos remotas (Yupp como front-end) – Importar / exportar componentes entre aplicaciones (al estilo de paquetes)
  • 14. 3. Yupp Framework (VI) • Generación de flujos de páginas funcionales = cliente contento + detección temprana en errores de requerimientos El cliente ve a la interfaz de usuario como todo el sistema La interfaz de usuario funcionando en etapas tempranas del proyecto agrega: Visibilidad sobre el avance (para el cliente) Posibilidad de detectar problemas en requerimientos Posibilidad de detectar requerimientos ocultos Aporta a la comunicación y agilidad del proceso -Detecto un problema temprano -Adapto el proceso rápidamente -Sigo adelante Yupp puede servir como herramienta de prototipado de sistemas que no se implementen en PHP, pero igual se quiera tener una UI rápidamente para mostrarle al cliente.
  • 15. 3. Yupp Framework (VII) • 2 componentes principales: – YORM: encargada de la definición y persistencia de los datos, agrega un capa de abstracción del acceso a dato y una forma orientada a objetos de realizar consultas. – YMVC: implementación del patrón Model-View- Controller, encargada de procesar los pedidos HTTP del usuario, realizar precesamiento de la información, determinar que vista mostrarle al usuario y generar una página web (o algún tipo de salida, p.e. XML).
  • 16. 3. Yupp Framework: YORM • YORM: Yupp Object-Relational Mapping – Componente de acceso a datos y persistencia – Definición de modelos de datos OO – Generación automática de tablas en la BD – Soporte para: • Clases y atributos • Links – Unidireccionales / bidireccionales – Diferentes cardinalidades: 1..1, 1..N, N..N • Herencia – Mapeo de única tabla (STI: single table inheritance) – Mapeo de múltiples tablas (MTI: múltiple table inheritance) – Validación automática – API • manipular la base de datos (CRUD) • manejar el modelo OO • manejar errores de validación – Principio: la API maneja los casos más comunes de consultas sin necesidad de escribir ni una línea de SQL.
  • 17. 3. Yupp Framework: YORM Tipos de links y opciones de mapeo de herencia soportados por YORM.
  • 18. 3. Yupp Framework: YORM Ejemplo: modelo de datos para sistema de blog
  • 19. 3. Yupp Framework: YORM • Tablas generadas automáticamente a partir de la implementación del modelo de datos (ejemplo del blog)
  • 20. 3. Yupp Framework: YORM • Fuentes de datos remotas: futuro – Integración con otros sistemas – Yupp Framework como front-end (la fuente de datos está en otro sistema, Yupp se encarga de la UI)
  • 21. 3. Yupp Framework: YORM • YORM API: – Manejo de la base: • static get(id:Integer) : PersistentObject // Cargar un objeto de la base • static listAll() : List<PersistentObject> // Cargar todos los objetos • static count(): Integer // Contar todos los objetos • static findBy(c:Condition) : List<PersistentObject> • static countBy(c:Condition) : Integer // Contar datos que cumplen condición • validate(): Boolean // Validación automática de datos • save(): Boolean // Insert o update, sabe cual hacer • delete( logical: Boolean) // Eliminación física o lógica – Manejo de errores de validación: • hasErrors(): Boolean // Verifica si tiene errores • getErrors(): List<FieldErrors> // Obtener errores de todos los campos • getFieldError(fieldName:String) : FieldErrors – Manejo de relaciones: (métodos dinámicos) • getXXX(): PersistentObject | Datatype // Obtener el valor del atributo XXX • setXXX( PersistentObject | Datatype ) // Establecer el valor del atrib. XXX • addToXXX( PersistentObject ) // Agregar un elemento a una lista XXX • removeFromXXX( PersitentObject ) // Quitar el elemento de la lista XXX Comentario: XXX es el nombre de un atributo de la clase, en el caso de getXXX y setXXX es un atributo simple, en el caso de addToXXX y removeFromXXX es una colección de elementos.
  • 22. 3. Yupp Framework: YORM • Definición de una clase “Usuario” del modelo de datos class Usuario extends PersistentObject { function __construct() { $this->withTable = quot;usuariosquot;; $this->addAttribute(quot;nombrequot;, Datatypes :: TEXT); $this->addAttribute(quot;emailquot;, Datatypes :: TEXT); $this->addAttribute(quot;clavequot;, Datatypes :: TEXT); $this->addAttribute(quot;edadquot;, Datatypes :: INT_NUMBER); $this->addAttribute(quot;fechaNacimientoquot;, Datatypes :: DATE); $this->addHasMany(quot;comentariosquot;, Comentario); $this->addHasMany(quot;entradasquot;, EntradaBlog); $this->constraints = array ( quot;nombrequot; => array ( Constraint :: minLength(1), Constraint :: maxLength(30), Constraint :: blank(false) ), quot;clavequot; => array( Constraint :: minLength(5) ), quot;edadquot; => array( Constraint :: between(10, 100) ), quot;emailquot; => array( Constraint :: email() ) ); } }
  • 23. 3. Yupp Framework: YMVC • Yupp Model-View-Controller –Implementación sólida del patrón MVC, más herramientas necesarias. –Tareas: • Rutear los pedidos a controladores • Ejecutar lógica de negocio – Acceso a datos (YORM) – Comunicación con otros sistemas (@todo) – Proceso de información • Determinar la salida – Que salida, en que formato: HTML, XML, JSON, CSV – Caso más frecuente: generar una página HTML para el usuario • Generación de páginas – Colaboración entre vista, layout, helpers y templates para generar una página HTML maximizando la reutilización de código.
  • 24. 3. Yupp Framework: YMVC •Proceso de un pedido: – URL: /blog/usuario/show?id=1 – Convención: /{component}/{controller}/{action}?params
  • 25. 3. Yupp Framework: YMVC • Filters: extraen parámetros del pedido. • Custom mappings: determinan a que acción de que controlador hay que invocar. • Excecuter: es quien llama a la acción y controla su ejecución. • Controller: es donde se define la lógica de las acciones. • WebFlow: flujo definido en un controlador, permite especificar una secuencia de acciones y páginas de forma sencilla. • View model: es el contenedor de datos que se utiliza para que el controller le pase datos a las vistas. • View: definen como se debe mostrar la información al usuario, generando una página HTML. • Layout: define el aspecto general de un conjunto de vistas, sirve para hacer lucir similar a varias vistas reutilizando este código común. • Template: si un tipo de información se muestra de la misma forma en varias vistas, ese código se pone en un template que se utiliza siempre para mostrar la misma información, es un nivel más detallado de reuso de código que el layout. • Helpers: toda lógica de presentación que sea muy utilizada debe ir en un helper, un helper equivale a una taglib de JSP, por ejemplo hay un helper para generar links, la llamada a templates se hace mediante un helper, para incluir CSS o Javascript se utiliza un helper, etc.
  • 26. 3. Yupp Framework: YMVC • Ejemplo: salvar una entrada luego de editada – Nota: el código es análogo para salvar cualquier otra clase del modelo da datos simplifica la generación automática de código class EntradaBlogController extends YuppController { ... public function saveAction() { $id = $this->params['id']; $obj = EntradaBlog::get( $id ); $obj->setProperties( $this->params ); // Si no puede salvar, vuelve a edit y muestra errores de validación if ( !$obj->save() ) { $this->params['object'] = $obj; return $this->render(quot;entradaBlog/editquot;, &$this->params); } // Modelo para vista show $this->params['object'] = $obj; return $this->render(quot;entradaBlog/showquot;, &$this->params); } ... }
  • 27. Usuario de Yupp Framework ¡ADVERTENCIA! Desarrollar con Yupp puede ser perjudicial para la salud ☺
  • 28. 4. Resumen • Buscar alivianar el proceso de desarrollo considerando consejos de metodologías ágiles (iteraciones, artefactos, comunicación) y utilizar herramientas que se adapten al proceso para automatizar tareas simples y repetitivas dejando las “manos libres” para atender los verdaderos problemas. • Yupp Framework busca la agilidad en la automatización de conversión de artefactos, generación de prototipos, como solución para desarrollo de aplicaciones web 2.0 de pequeño y mediano porte, o como front-end de sistemas de mayor porte desarrollados en con tecnologías.
  • 29. ¿Preguntas? A/C Pablo Pazos Gutierrez pablo.swp@gmail.com Yupp PHP Framework http://groups.google.com/group/yuppframeworkphp http://yuppframework.blogspot.com http://www.simplewebportal.net/yupp_framework_php_doc/