Mejor Framework PythonOO + SOLID. Vivir sin Frameworks



Documentos relacionados
QUÉ ES Y PARA QUÉ SIRVE UML? VERSIONES DEL LENGUAJE UNIFICADO DE MODELADO. TIPOS DE DIAGRAMAS. INGENIERÍA DEL SOFTWARE (DV00205D)

INBOUND MARKETING. Conozca. Sitios rápidos, poderosos, flexibles y económicos.

De la Integración Continua a la Entrega Continua

Cómo elegir tu SOFTWARE DE GESTIÓN?

Estrategias de producto y precio

Como usar SMS para realizar campañas de Marketing

Agradecimiento: A Javier Lomelín Urrea por su dedicación y esmero en este proyecto. Manuel Fernando Guzmán Muñoz Presidente OMIJal

Patrones de Diseño Orientados a Objetos 2 Parte

Metodologías Ágiles Desde una Perspectiva de Project Management. Fernando Contreras Velásquez Project Management & Engineering Services.

Tutorial. DCADEP UA (coord.: Rosabel Roig Vila,

Tienda Online Responsive Web Design

Practica A. Crear y Administrar Grupos

COMO CREAR UN ÁLBUM DE FOTOGRAFÍAS EN MICROSOFT OFFICE POWERPOINT?

La elección de Blogger como la plataforma o lugar donde

UNIDAD 2: Abstracción del Mundo real Al Paradigma Orientado a Objetos

GUÍA RED SOCIAL LINKEDIN

Aplicaciones en Tiempo Real con node.js Por: Oscar Gracia. Aplicaciones en tiempo real con node.js. Marzo

Solución de telefonía para empresas TL Presentación de producto. Telefonía IP

Enterprise Resource Planning (ERP) SISTEMA DE PLANEACIÓN DE RECURSOS MASTER: ALFREDO CASTRO JIMENEZ

Framework para el desarrollo ágil de aplicaciones

Puedes manejar todas las áreas de tu negocio?

Sistema Comprobado de Duplicación

Los 8 errores más comunes de Diseños de tiendas online

MANUAL DE USUARIO. Guía rápida para el registro de tickets en Mesa Centuria

IMPLEMENTAMOS y GESTIONAMOS GESTOR DE CONTENIDOS. Gestiona tu propia web

Plataforma de Publicidad (Tráfico Web) con Fondo de Ganancias Compartidas

Configuración de la red

Conclusiones. Particionado Consciente de los Datos

3.1 INGENIERIA DE SOFTWARE ORIENTADO A OBJETOS OOSE (IVAR JACOBSON)

MANUAL DE AYUDA MODULO TALLAS Y COLORES

Catálogo de Productos

Minicurso: COMO PONER MI WEBSITE EN INTERNET

5.1. Organizar los roles

Reporte inicial. Metodología

Manual de Usuario SafeDigital V2 Emisión Certificados

Creando Arquitecturas

5 razones por las que NO DEBERÍAS ABRIR UNA TIENDA ONLINE

Ciclo de vida y Metodologías para el desarrollo de SW Definición de la metodología

Qué es el Software Libre? Algunos principios básicos

TUTORIAL. Configuración de cuentas de correo electrónico

INTEGRAL UNA COMPAÑÍA. Con las mejores alternativas del mercado

Conoce los Tipos de Hosting que Existen y Elige el Mejor para tus Necesidades

Curso de Spring Framework

MÓDULO 2 GOOGLE CALENDAR

ESOFT 3 Nice Screen Scraper. Héctor López Sacanell hlopez1@alumnes.udl.cat

Creación paso a paso de Formularios con Google (Parte I) (AKA: no corrijo nunca más!)

MANUAL DE USUARIOS DEL MODULO DE EVALUACIÓN DE DESEMPEÑO SISTEMA DE ADMINISTRACIÓN DE SERVIDORES PÚBLICOS (SASP)

2.0 QUÉ ES NECESARIO PARA EMPEZAR A OPERAR CON FUTUROS?

Crea tu tienda virtual online

1. A qué se parece Internet? 2. Cómo comenzó Internet? 3. De quién es ahora Internet?

MANUAL DE USUARIO MODULO VENTAS

Unidad I. 1.1 Sistemas numéricos (Binario, Octal, Decimal, Hexadecimal)

Health Coaches. Recursos para. Como crear un programa de coaching

#SoftwareLibre14. Páginas Web con Software Libre. WordPress

Demo. TDD desde Cero. Acceptance Test Driven Development.

Responsive Web Design Diseño Web Adaptable

Architectural Driven Design - ADD

**NOTA** las partes tachadas todavía no están escritas, se ira actualizando poco a poco el documento

La siguiente generación de soluciones de FP&A basadas en la nube Sencillez, colaboración y tiempo real

PROGRAMA DE AYUDA PARA LOS CONTRATOS DE FORMACIÓN CENFOMASTER CENTRO DE FORMACIÓN INSTALACIÓN DE LA APLICACIÓN

Ver el archivo PDF: FRANQUICIA PARA PUBLICAR ANUNCIOS

Software de Voz sobre Protocolos de Internet (VoIP)

El control de la tesorería consiste en gestionar desde la aplicación los cobros y pagos generados a partir de las facturas de venta y de compra.

Principalmente existen dos modos de gestionar nuestro gasto en teléfono móvil:

ESCUELA SECUNDARIA TECNICA N 109 PROYECTO: BOT DE AYUDA. Bot de ayuda es creatividad para poder ayudar a las personas de la comunidad.

Colegio Salesiano Don Bosco Academia Reparación Y Soporte Técnico V Bachillerato Autor: Luis Orozco. Subneteo

Visual Studio 2008 es el conjunto de herramientas de

El nuevo portal de formación e información bursátil. WINDOWBOLSA.COM tu formación, tu mejor inversión

Manual CMS Mobincube

LABORATORIO Nº 2 GUÍA PARA REALIZAR FORMULAS EN EXCEL

MS ACCESS BÁSICO 6 LOS INFORMES

RAPID TYPING. Qué es?

CONVIERTA CADA CONTACTO EN UNA VENTA.

Curso: FT433 - Introducción a la virtualización con VirtualBox

GUIA DEL PRODUCTO (Vendedor) CAP-PRODUCTO 1

acciones para incrementar tu 0 inteligencia financiera

Presentación de Pyramid Data Warehouse

Al ser autoadministrable no tienes limitaciones de contenido ni artículos, dado que usted puede agregar y quitar información cuando lo desee.

SOFTWARE DE SEGUIMIENTO A LA IMPLEMENTACION DE LAS RECOMENDACIONES DE LOS INFORMES DE CONTROL (SIRIC)

Marketing Jurídico, generando negocios online Por: Equipo Mi Guía Legal, El Salvador 23 de febrero de 2016

PUBLICACIÓN INFORMATIVA DE LA ASOCIACIÓN ESPAÑOLA DE FINANCIEROS DE EMPRESA N 64. MARZO

Desarrolladores: Christian David Merino Cruz. Bryan Alexis Peraza Navas. Erik Alberto Renderos Morales.

El cuadrante del éxito en la Empresa

Programación Orientada a Objetos en Java

Ingeniería del Software. La última lección. Resumen del curso. Buenas prácticas. Conclusión

Metadatos en Plataformas ECM

Cherokee Web server. Alvaro López Ortega. Madrid España

Tutorial de Subneteo Clase A, B, C - Ejercicios de Subnetting CCNA 1

Cómo encontrar. el CRM adecuado. para mi empresa? una guía creada por

Base de datos en Excel

PATRONES. Experto. Solución:

Somos : Misión. Visión

Python No Muerde. Capítulo: Python no muerde, yo sí. Este libro está disponible bajo una licencia CC-by-nc-sa-2.5.

Proyecto Crowdfunding. Se buscan early adopters tecnológicos

2011 Universidad de Sevilla Grupo IDINFOR Universidad Carlos III Grupo ENTI

Transcripción:

Mejor Framework PythonOO + SOLID Vivir sin Frameworks

Presentaciones

Alea Soluciones Bifer Team

@eferro @pasku1 @apa42 @nestorsalceda

Un placer...

Qué es un framework? Django Rails Grails Spring AppEngine Zope/Plone

Qué ventajas nos aporta? Aporta UNA solución (única) Estructura tu aplicación

Qué inconvenientes tiene? Crea GRAN dependencia Limita flexibilidad negocio Obsolescencia / Moda???

Desarrollo Ágil Crecimiento Orgánico Arquitectura Emergente

Lo único seguro Todo Cambia / Evoluciona

Existe una alternativa

Centrarnos en el Negocio y Desarrollo ágil / evolutivo

Poder postponer decisiones

Tomar decisiones conscientemente

Cómo desarrollamos negocio? DDD Domain Driven Design Clean Code / S.O.L.I.D TDD Test Driven Development

Pure Object Oriented Python Independiente de IO (No net, No BD, No files, )

Cómo hacemos el resto?

Infraestructura y Entrega Usamos las abstracciones sobre libs Clean Code / S.O.L.I.D TDD Test Driven Development

Conclusiones

Los frameworks son una decisión muy importante Las decisiones tienen que ser conscientes

Nuestra forma de trabajo y arquitectura debe permitirnos: Hacer un sistema que evolucione con las necesidades del cliente Postponer decisiones Aplicar distintas soluciones técnicas

Existen alternativas (Reales) Que permiten centrarse en negocio Que facilitan el desarrollo ágil Que evolucionan a largo plazo Que evolucionan a buena velocidad

Referencias DDD http://en.wikipedia.org/wiki/behavior-driven_development TDD http://en.wikipedia.org/wiki/test-driven_development Hexagonal Architecture http://alistair.cockburn.us/hexagonal+architecture Clean Architecture http://blog.8thlight.com/uncle-bob/2012/08/13/the-clean-architecture.html

Gracias!!!

Mejor Framework PythonOO + SOLID Vivir sin Frameworks

Presentaciones

Alea Soluciones Bifer Team Hacemos producto Telecomunicaciones Sistemas + Software Extreme Programming Aportamos valor

@eferro @pasku1 @apa42 @nestorsalceda

Un placer...

Qué es un framework? Django Rails Grails Spring AppEngine Zope/Plone Framework (tal y como lo entendemos) - Intenta solucionar un problema concreto: - el problema que tenia el que lo creo - No hay dos problemas iguales - los problemas crecen (o por lo menos cambian) - Llama a tu código - Te hace depender de él (tanto como pueda) (herencia, callbacks, estructura fuentes, tipo de BD) - Estructura tu aplicación - Define una forma de desarrollar / testear - Aporta muchas soluciones prehechas La mayor parte se centra en: Aplicaciones centradas en datos con interface usuario Web El framework te suele empujar a usarlo de cierta forma

Qué ventajas nos aporta? Aporta UNA solución (única) Estructura tu aplicación Ventajas No necestias pensar demasiado inicialmente Al principio pareces ir muy rápido

Qué inconvenientes tiene? Crea GRAN dependencia Limita flexibilidad negocio Obsolescencia / Moda??? Desventajas Vendes tu alma Te terminas centrandote en la solución técnica en vez de en el negocio del cliente Pierdes flexibilidad

Decisiones técnicas siempre son TradeOffs Corto plazo vs Largo plazo Flexibilidad vs Dirección marcada Centrarse en tecnologia vs Centrarse en negocio Crecimiento organico/evolutivo vs Desarrollo en Fases/Implantación Usar un framework es un GRAN trade-off El Cliente te paga por solucionar SU problema (Negocio / Dominio ) no por usar un framework (aunque esté de moda)

Desarrollo Ágil Crecimiento Orgánico Arquitectura Emergente

La evolución es: Sabemos muy poco Desarrollamos lo mínimo posible / Desplegamos Conseguimos feedback Repetimos

Nuestros conocimientos de negocio crece Las funcionalidades se acumulan El necesidades cambian

Al principio del proyecto no sabemos nada. Cómo coño elegimos el Framework!!! Lo eliges porque: es lo que conoces??? está de moda??? Si inicialmente no tenemos conocimiento de negocio Cómo vamos a saber lo que necesitamos técnicamente? Cómo va a saber el creador de framework lo que necesitamos? Nos va a aportar productividad o va a secuestrar la evolución futura? Somos conscientes del compromiso que es usar un framework?

Lo único seguro Todo Cambia / Evoluciona

Existe una alternativa

Centrarnos en el Negocio y Desarrollo ágil / evolutivo

Poder postponer decisiones

Tomar decisiones conscientemente

Un sistema está compuesto por subsistemas (excepto si es trivial) Diferentes subsistemas NO es diferentes módulos usando el mismo esquema de BD y compartiendo los datos

Objetivo Ciclo desarrollo / release / feedback muy rápido Cada implementación debe ser mínima Flexible Para que no cueste cambiar decisiones técnicas Para adaptarnos a Cualquier requisito

Cada subsistema lo desarrollamos con este esquema Nos centramos en Dominio de cliente / Lógica de Negocio Arquitectura Limpias Desacoplada Delivery

Cómo desarrollamos negocio? DDD Domain Driven Design Clean Code / S.O.L.I.D TDD Test Driven Development

Pure Object Oriented Python Independiente de IO (No net, No BD, No files, ) Ese código: Es independiente de IO (No net, No BD, No files, ) Puede depender de abstracciones (Cliente rest, Persistencia agregado,.)

Velocidad desarrollo buena Reusabilidad buena Valor (desde el punto de vista del cliente) buena Esto es por lo que nos pagan

Cómo hacemos el resto?

y el resto de código, el que se integra con el mundo exterior, el que permite comunicarse, el que permite persistir. Para ese código Reinventamos la rueda????

Ni de coña

Usamos librerías Muchas

Cada librería la integramos Creando una abstracción de la parte que vamos a usar (que será lo mínimo posible) La parte de negocio usa esta abstracción (nunca la librería) Creamos un test de contrato para la parte que usamos (verificamos que podemos enviar un mensaje, escribir una tabla o lo que sea)

Infraestructura y Entrega Usamos las abstracciones sobre libs Clean Code / S.O.L.I.D TDD Test Driven Development

Conclusiones

Los frameworks son una decisión muy importante Las decisiones tienen que ser conscientes

Nuestra forma de trabajo y arquitectura debe permitirnos: Hacer un sistema que evolucione con las necesidades del cliente Postponer decisiones Aplicar distintas soluciones técnicas Aplicar distintas soluciones técnicas (según se vayan necesitando, nunca antes)

Existen alternativas (Reales) Que permiten centrarse en negocio Que facilitan el desarrollo ágil Que evolucionan a largo plazo Que evolucionan a buena velocidad Aplicar distintas soluciones técnicas (según se vayan necesitando, nunca antes)

Desarrollar en Python OO (Puro) es sencillo y divertido

Referencias DDD http://en.wikipedia.org/wiki/behavior-driven_development TDD http://en.wikipedia.org/wiki/test-driven_development Hexagonal Architecture http://alistair.cockburn.us/hexagonal+architecture Clean Architecture http://blog.8thlight.com/uncle-bob/2012/08/13/the-clean-architecture.html

Gracias!!! Desksurfing