SlideShare une entreprise Scribd logo
1  sur  26
El uso e implementación
de Patrones de Diseño.
Pedro Quiñonez Bernardino
Líder de Proyecto-Telcel
A G E N D A
●
La historia se repite...............
●
Objetivo
●
Que es un patrón
●
Clasificación
●
Implementaciones
●
Utilización de enfoques (cuando sí y cuando no)
●
Ventajas / Desventajas
La historia se repite...............
https://www.youtube.com/watch?v=qwZhHVl5hRU
Objetivo
Que es un patrón?
http://lema.rae.es/drae/?val=patr%C3%B3n
●
Un evento o problema que ocurre infinidad de veces en
nuestro entorno, así como la solución al mismo.
●
Un patrón define una posible solución correcta para un
problema de diseño dentro de un contexto dado.
Referencia: http://es.wikipedia.org/wiki/Patr%C3%B3n_de_dise%C3%B1o#Categor.C3.ADas_de_patrones
Los 4 fantásticos...............
●
Elementos reusables.
●
No reinventar el hilo negro.
●
Homogenizar vocablos.
●
Estandarizar los diseños.
●
Facilitar el reconocimiento de
problemas.
●
Cerrar alternativas vs nuevas formas
de implementaciones.
●
Generar un ambiente cerrado a la
creatividad inherente en el
desarrollo de software.
Erich Gamma, Richard Helm, Ralph Johnson y John Vlisides publican
Design Patterns
1979-Christopher Alexander
Clasificación
Creación
●
Abstract Factory
●
Factory Method
●
Builder
●
Singleton
●
Prototype
Estructura
●
Adapter
●
Bridge
●
Composite
●
Decorator
●
Facade
●
Proxy
●
Flyweight
●
Chain of Responsability
●
Interpreter
●
Mediator
●
Memento
●
Visitor
●
Command
●
Iterator
●
Observer
●
State
●
Strategy
●
Template Method
Comportamiento
Clasificación
Implementaciones
●
Servidor Sockets Consultas S-HDR
●
Servidor de Reportes Corporativos (RUBI)
●
Front–End captura de información de Reportes y
Procesamiento Movimientos.
Servidor Sockets Consultas
S-HDR
●
Concurrencia●
Performance ●
Volumen
Objetivo: Implementación de un componente para la
comunicación de aplicaciones con plataforma de validación.
●
Traza y Logueo●
Comunicación Síncrona
Servidor Sockets Consultas
S-HDR
Servidor Sockets Consultas
S-HDR
P o o l C o n e c t i o n S i n g l e t o n
+ g e t I n s t a n c e ( )
+ c r e a t e I n s t a n c e ( )
+ g e t D a t a S o u r c e ( )
I C o n s u l t a S I A N T E L
C o n s u l t a S t o r e P r o c e d u r e J d b c S I A N T E L I m p l
+ s e t D a t a S o u r c e ( )
+ c o n s u lt a U n i t a r ia S I A N T E L ( )
+ c o n s u lt a M a s iv a S I A N T E L ( )
I C o m u n i c a t o r I n t e r f a c e
A b s t r a c t S t r e a m
+ d e b u g T r a m a ( )
O b j e c t S t r e a m C o m u n i c a t o r I m p l
+ O b j e c t S t r e a m C o m u n ic a t o r I m p l ( )
+ le e L i n e a ( )
+ e s c r ib e L in e a s ( )
+ e s c r ib e L in e a ( )
+ le e M e t o d o C o n s u l t a ( )
+ s e t I n p u t S t r e a m ( )
+ s e t O u t p u t S t r e a m ( )
+ le e R e s p u e s t a S e r v e r ( )
C o m u n i c a t o r F a c t o r y
+ c r e a C o m u n ic a t o r ( )
C o n s u l t a S i a n t e l F a c t o r y
+ c r e a C o n s u lt o r ( )
S i a n t e l S e r v e r
+ r u n ( )
+ c lo s e ( )
T a s k S i a n t e l E x e c u t e
+ r u n ( )
+ c lo s e S o c k e t ( )
+ i n it ( )
+ c o n s u lt a U n ic a ( )
+ c o n s u lt a M a s iv a ( )
S t a r t S i a n t e l S e r v e r
+ m a in ( )
C o n s t a n t e s U t i l
+ C O N S U L T A _ M A S I V A
+ C O N S U L T A _ U N I C A
G l o b a lP a r a m e t e r s
+ g e t P a r a m I d R e q u e s t ( )
+ c r e a t e I n s t a n c e ( )
+ g e t V a lu e ( )
D B B a s e D a o
+ c lo s e C o n n e c t io n ( )
+ e x e c u t e Q u e r y ( )
+ e x e c u t e U p d a t e ( )
+ g e t C o n n e c t i o n ( )
+ p r e p a r e C A L L ( )
+ p r e p a r e S Q L ( )
Servidor Sockets Consultas
S-HDR
●
Reflection: obtiene instancia de implementación a utilizar en runtime.
●
Singleton: generación de única instancia de parámetros de configuración.
●
Factory Method: creación de instancia de objeto a realizar las consultas
a plataforma de validación.
●
Strategy: para permitir el intercambio de funcionalidad o algorítmo sin
afectar el flujo de la aplicación.
●
Pool de hilos: soporte de concurrencia por el servidor.
Servidor Sockets Consultas
S-HDR
Implementación.............................
Servidor de Reportes RUBI
Objetivo: Eliminar la problemática inherente en la
generación de los reportes del Sistema de Integral de
Aplicaciones.
Problemas:
●
Saturación de conexiones sobre sistema legacy.
●
Indisponibilidad de recursos compartidos entre aplicaciones.
●
Saturación de Cluster y servidores de aplicaciones.
●
Lentitud e indisponibilidad de aplicaciones.
Servidor de Reportes RUBI
Estado inicial..................
Servidor de Reportes RUBI
Servidor de Reportes RUBI
Servidor de Reportes RUBI
●
Template Method: Define algoritmo
de generación de reporte.
●
Observer: Pasos a nivel flujo de
reporte.
●
Strategy: Intercambio de
funcionalidad de reportes.
●
Singleton: Unica instancia de Pool de
Hilos (Reportes y Observadores).
Servidor de Reportes RUBI
Template Method: Define algoritmo de generación de reporte.
Servidor de Reportes RUBI
Observer: Pasos a nivel flujo de reporte.
Cúando sí y cúando no................
Implementación in-house:
●
Aplicaciones ligeras en tamaño (no en funcionalidad).
●
La funcionalidad es concreta y específica (no existen
indefiniciones).
●
No es opción actualizar aplicación (negocio).
●
Sistemas heredados con tecnologías desactualizadas
(aplicaciones operando, diversidad de API´s, alto costo en
actualización de aplicación).
●
Nivel intermedio-alto en conocimiento de POO, POA, Patrones
y estilos arquitectónicos.
Cúando sí y cúando no................
Implementación híbrida (framework + patrones):
●
Aplicaciones con funcionalidad más extensa y variada (no
reinventes el hilo negro).
●
La posibilidad de definir y proporner las tecnologías a utilizar
(proyectos de desarrollos nuevos).
●
El alcance del desarrollo es ambiguo (demasiada incertidumbre
e indefinición).
●
Robustez e implementaciones validadas por toda una
comunidad.
Ventajas / Desventajas...............
Ventajas:
●
Conocimiento y control total de “las tripas” de las aplicaciones.
●
Aplicaciones compactas, dedicadas y puras.
●
Identificación de un área de oportunidad y posible
implementación.
●
Promoción de pensamiento abstracto.
●
Comprensión de la forma de trabajo de API´s y framework.
●
Generación de mejores niveles de programación.
●
Especialización en la generalización.
Ventajas / Desventajas...............
Desventajas:
●
Curva de aprendizaje.
●
Cambio de cultura y pensamiento de abstracto.
●
Fuertes conocimientos de conceptos de programación y
orientación a objetos: “Ya sé porque no funciona.........”.
●
Caer en sobreingeniería y antipatrones.
●
Conocimiento puntual y especializado (saber qué, cómo, porque
y cuando).
Preguntas:
@quinonezbp
http://mx.linkedin.com/in/pquinonez
pedro.quinonez@gmail.com

Contenu connexe

En vedette

patrones de diseño web.
  patrones de diseño web.   patrones de diseño web.
patrones de diseño web. Diana Luna
 
Arquitectura aplicaciones Patrones de diseño
Arquitectura aplicaciones Patrones de diseñoArquitectura aplicaciones Patrones de diseño
Arquitectura aplicaciones Patrones de diseñoGermania Rodriguez
 
Patrones estructurales
Patrones estructuralesPatrones estructurales
Patrones estructuralesJuan Camilo
 
Patrones de diseño de GoF
Patrones de diseño de GoFPatrones de diseño de GoF
Patrones de diseño de GoFYaskelly Yedra
 
Diseño de interfaz importancia y proceso
Diseño de interfaz importancia y procesoDiseño de interfaz importancia y proceso
Diseño de interfaz importancia y procesoadrianazamora
 
Estándares para el diseño de interfaz
Estándares para el diseño de interfazEstándares para el diseño de interfaz
Estándares para el diseño de interfazJose Luis Dorao
 
Patrones de diseño de software
Patrones de diseño de softwarePatrones de diseño de software
Patrones de diseño de softwareIker Canarias
 

En vedette (10)

Delegation
DelegationDelegation
Delegation
 
patrones de diseño web.
  patrones de diseño web.   patrones de diseño web.
patrones de diseño web.
 
Patrones de diseño
Patrones de diseñoPatrones de diseño
Patrones de diseño
 
Arquitectura aplicaciones Patrones de diseño
Arquitectura aplicaciones Patrones de diseñoArquitectura aplicaciones Patrones de diseño
Arquitectura aplicaciones Patrones de diseño
 
Clase 07a patrones_diseno
Clase 07a patrones_disenoClase 07a patrones_diseno
Clase 07a patrones_diseno
 
Patrones estructurales
Patrones estructuralesPatrones estructurales
Patrones estructurales
 
Patrones de diseño de GoF
Patrones de diseño de GoFPatrones de diseño de GoF
Patrones de diseño de GoF
 
Diseño de interfaz importancia y proceso
Diseño de interfaz importancia y procesoDiseño de interfaz importancia y proceso
Diseño de interfaz importancia y proceso
 
Estándares para el diseño de interfaz
Estándares para el diseño de interfazEstándares para el diseño de interfaz
Estándares para el diseño de interfaz
 
Patrones de diseño de software
Patrones de diseño de softwarePatrones de diseño de software
Patrones de diseño de software
 

Similaire à Artesanos de software: El uso e implementación de patrones de diseño en sistemas productivos, no todo en la vida son frameworks.

20150302_Infoday regional H2020_SME Instrument_Vicente Rodilla
20150302_Infoday regional H2020_SME Instrument_Vicente Rodilla20150302_Infoday regional H2020_SME Instrument_Vicente Rodilla
20150302_Infoday regional H2020_SME Instrument_Vicente RodillaRedit
 
20150226_Infoday H2020_Energía_Vicente Rodilla
20150226_Infoday H2020_Energía_Vicente Rodilla20150226_Infoday H2020_Energía_Vicente Rodilla
20150226_Infoday H2020_Energía_Vicente RodillaRedit
 
Trabajo práctico de introducción a la ingeniería industrial
Trabajo práctico de introducción a la ingeniería industrialTrabajo práctico de introducción a la ingeniería industrial
Trabajo práctico de introducción a la ingeniería industrialangel_acevedo
 
Costos de investigación y desarrollo power poing
Costos de investigación y desarrollo power poingCostos de investigación y desarrollo power poing
Costos de investigación y desarrollo power poingRicardo Pesca
 
Aterrizando la Inteligencia Artificial
Aterrizando la Inteligencia ArtificialAterrizando la Inteligencia Artificial
Aterrizando la Inteligencia ArtificialGonzalo Aguirre D.
 
Guia de Aprendizaje PMA SPA.pdf
Guia de Aprendizaje PMA SPA.pdfGuia de Aprendizaje PMA SPA.pdf
Guia de Aprendizaje PMA SPA.pdfCarlosSalvador65
 
Guia de Aprendizaje PMA SPA.pdf
Guia de Aprendizaje PMA SPA.pdfGuia de Aprendizaje PMA SPA.pdf
Guia de Aprendizaje PMA SPA.pdfyiguigay
 
Guia de Aprendizaje PMA SPA.pdf
Guia de Aprendizaje PMA SPA.pdfGuia de Aprendizaje PMA SPA.pdf
Guia de Aprendizaje PMA SPA.pdfssuserf36230
 
A step by step approach Smartcom' s experience
A step by step approach Smartcom' s experienceA step by step approach Smartcom' s experience
A step by step approach Smartcom' s experienceJaime Zaldivar
 
Seguridad informática
Seguridad informáticaSeguridad informática
Seguridad informáticaLuisa Correa
 
Visual Studio Team Service.- Un viaje a dev ops
Visual Studio Team Service.- Un viaje a dev opsVisual Studio Team Service.- Un viaje a dev ops
Visual Studio Team Service.- Un viaje a dev opsPeter Concha
 
Diseño de Interacción en Cátedra Salomone DG2 DG3 FADU/UBA - 9 jun 2011
Diseño de Interacción en Cátedra Salomone DG2 DG3 FADU/UBA - 9 jun 2011Diseño de Interacción en Cátedra Salomone DG2 DG3 FADU/UBA - 9 jun 2011
Diseño de Interacción en Cátedra Salomone DG2 DG3 FADU/UBA - 9 jun 2011Santiago Bustelo
 
Curso de Ingeniería de Software - Capitulo2
Curso de Ingeniería de Software - Capitulo2Curso de Ingeniería de Software - Capitulo2
Curso de Ingeniería de Software - Capitulo2Eddie Malca
 

Similaire à Artesanos de software: El uso e implementación de patrones de diseño en sistemas productivos, no todo en la vida son frameworks. (20)

Folleto cofaso
Folleto cofasoFolleto cofaso
Folleto cofaso
 
Presentacion2
Presentacion2Presentacion2
Presentacion2
 
20150302_Infoday regional H2020_SME Instrument_Vicente Rodilla
20150302_Infoday regional H2020_SME Instrument_Vicente Rodilla20150302_Infoday regional H2020_SME Instrument_Vicente Rodilla
20150302_Infoday regional H2020_SME Instrument_Vicente Rodilla
 
20150226_Infoday H2020_Energía_Vicente Rodilla
20150226_Infoday H2020_Energía_Vicente Rodilla20150226_Infoday H2020_Energía_Vicente Rodilla
20150226_Infoday H2020_Energía_Vicente Rodilla
 
Herramientascal
HerramientascalHerramientascal
Herramientascal
 
Trabajo práctico de introducción a la ingeniería industrial
Trabajo práctico de introducción a la ingeniería industrialTrabajo práctico de introducción a la ingeniería industrial
Trabajo práctico de introducción a la ingeniería industrial
 
BIG O EXPOSICION
BIG O EXPOSICIONBIG O EXPOSICION
BIG O EXPOSICION
 
Costos de investigación y desarrollo power poing
Costos de investigación y desarrollo power poingCostos de investigación y desarrollo power poing
Costos de investigación y desarrollo power poing
 
Valery ojeda
Valery ojeda Valery ojeda
Valery ojeda
 
Aterrizando la Inteligencia Artificial
Aterrizando la Inteligencia ArtificialAterrizando la Inteligencia Artificial
Aterrizando la Inteligencia Artificial
 
Guia de Aprendizaje PMA SPA.pdf
Guia de Aprendizaje PMA SPA.pdfGuia de Aprendizaje PMA SPA.pdf
Guia de Aprendizaje PMA SPA.pdf
 
Guia de Aprendizaje PMA SPA.pdf
Guia de Aprendizaje PMA SPA.pdfGuia de Aprendizaje PMA SPA.pdf
Guia de Aprendizaje PMA SPA.pdf
 
Guia de Aprendizaje PMA SPA.pdf
Guia de Aprendizaje PMA SPA.pdfGuia de Aprendizaje PMA SPA.pdf
Guia de Aprendizaje PMA SPA.pdf
 
A step by step approach Smartcom' s experience
A step by step approach Smartcom' s experienceA step by step approach Smartcom' s experience
A step by step approach Smartcom' s experience
 
Seminario2
Seminario2Seminario2
Seminario2
 
Seguridad informática
Seguridad informáticaSeguridad informática
Seguridad informática
 
Visual Studio Team Service.- Un viaje a dev ops
Visual Studio Team Service.- Un viaje a dev opsVisual Studio Team Service.- Un viaje a dev ops
Visual Studio Team Service.- Un viaje a dev ops
 
Diseño de Interacción en Cátedra Salomone DG2 DG3 FADU/UBA - 9 jun 2011
Diseño de Interacción en Cátedra Salomone DG2 DG3 FADU/UBA - 9 jun 2011Diseño de Interacción en Cátedra Salomone DG2 DG3 FADU/UBA - 9 jun 2011
Diseño de Interacción en Cátedra Salomone DG2 DG3 FADU/UBA - 9 jun 2011
 
Curso de Ingeniería de Software - Capitulo2
Curso de Ingeniería de Software - Capitulo2Curso de Ingeniería de Software - Capitulo2
Curso de Ingeniería de Software - Capitulo2
 
Ejecuciã“n de instrucciones
Ejecuciã“n de instruccionesEjecuciã“n de instrucciones
Ejecuciã“n de instrucciones
 

Plus de Software Guru

Hola Mundo del Internet de las Cosas
Hola Mundo del Internet de las CosasHola Mundo del Internet de las Cosas
Hola Mundo del Internet de las CosasSoftware Guru
 
Estructuras de datos avanzadas: Casos de uso reales
Estructuras de datos avanzadas: Casos de uso realesEstructuras de datos avanzadas: Casos de uso reales
Estructuras de datos avanzadas: Casos de uso realesSoftware Guru
 
Building bias-aware environments
Building bias-aware environmentsBuilding bias-aware environments
Building bias-aware environmentsSoftware Guru
 
El secreto para ser un desarrollador Senior
El secreto para ser un desarrollador SeniorEl secreto para ser un desarrollador Senior
El secreto para ser un desarrollador SeniorSoftware Guru
 
Cómo encontrar el trabajo remoto ideal
Cómo encontrar el trabajo remoto idealCómo encontrar el trabajo remoto ideal
Cómo encontrar el trabajo remoto idealSoftware Guru
 
Automatizando ideas con Apache Airflow
Automatizando ideas con Apache AirflowAutomatizando ideas con Apache Airflow
Automatizando ideas con Apache AirflowSoftware Guru
 
How thick data can improve big data analysis for business:
How thick data can improve big data analysis for business:How thick data can improve big data analysis for business:
How thick data can improve big data analysis for business:Software Guru
 
Introducción al machine learning
Introducción al machine learningIntroducción al machine learning
Introducción al machine learningSoftware Guru
 
Democratizando el uso de CoDi
Democratizando el uso de CoDiDemocratizando el uso de CoDi
Democratizando el uso de CoDiSoftware Guru
 
Gestionando la felicidad de los equipos con Management 3.0
Gestionando la felicidad de los equipos con Management 3.0Gestionando la felicidad de los equipos con Management 3.0
Gestionando la felicidad de los equipos con Management 3.0Software Guru
 
Taller: Creación de Componentes Web re-usables con StencilJS
Taller: Creación de Componentes Web re-usables con StencilJSTaller: Creación de Componentes Web re-usables con StencilJS
Taller: Creación de Componentes Web re-usables con StencilJSSoftware Guru
 
El camino del full stack developer (o como hacemos en SERTI para que no solo ...
El camino del full stack developer (o como hacemos en SERTI para que no solo ...El camino del full stack developer (o como hacemos en SERTI para que no solo ...
El camino del full stack developer (o como hacemos en SERTI para que no solo ...Software Guru
 
¿Qué significa ser un programador en Bitso?
¿Qué significa ser un programador en Bitso?¿Qué significa ser un programador en Bitso?
¿Qué significa ser un programador en Bitso?Software Guru
 
Colaboración efectiva entre desarrolladores del cliente y tu equipo.
Colaboración efectiva entre desarrolladores del cliente y tu equipo.Colaboración efectiva entre desarrolladores del cliente y tu equipo.
Colaboración efectiva entre desarrolladores del cliente y tu equipo.Software Guru
 
Pruebas de integración con Docker en Azure DevOps
Pruebas de integración con Docker en Azure DevOpsPruebas de integración con Docker en Azure DevOps
Pruebas de integración con Docker en Azure DevOpsSoftware Guru
 
Elixir + Elm: Usando lenguajes funcionales en servicios productivos
Elixir + Elm: Usando lenguajes funcionales en servicios productivosElixir + Elm: Usando lenguajes funcionales en servicios productivos
Elixir + Elm: Usando lenguajes funcionales en servicios productivosSoftware Guru
 
Así publicamos las apps de Spotify sin stress
Así publicamos las apps de Spotify sin stressAsí publicamos las apps de Spotify sin stress
Así publicamos las apps de Spotify sin stressSoftware Guru
 
Achieving Your Goals: 5 Tips to successfully achieve your goals
Achieving Your Goals: 5 Tips to successfully achieve your goalsAchieving Your Goals: 5 Tips to successfully achieve your goals
Achieving Your Goals: 5 Tips to successfully achieve your goalsSoftware Guru
 
Acciones de comunidades tech en tiempos del Covid19
Acciones de comunidades tech en tiempos del Covid19Acciones de comunidades tech en tiempos del Covid19
Acciones de comunidades tech en tiempos del Covid19Software Guru
 
De lo operativo a lo estratégico: un modelo de management de diseño
De lo operativo a lo estratégico: un modelo de management de diseñoDe lo operativo a lo estratégico: un modelo de management de diseño
De lo operativo a lo estratégico: un modelo de management de diseñoSoftware Guru
 

Plus de Software Guru (20)

Hola Mundo del Internet de las Cosas
Hola Mundo del Internet de las CosasHola Mundo del Internet de las Cosas
Hola Mundo del Internet de las Cosas
 
Estructuras de datos avanzadas: Casos de uso reales
Estructuras de datos avanzadas: Casos de uso realesEstructuras de datos avanzadas: Casos de uso reales
Estructuras de datos avanzadas: Casos de uso reales
 
Building bias-aware environments
Building bias-aware environmentsBuilding bias-aware environments
Building bias-aware environments
 
El secreto para ser un desarrollador Senior
El secreto para ser un desarrollador SeniorEl secreto para ser un desarrollador Senior
El secreto para ser un desarrollador Senior
 
Cómo encontrar el trabajo remoto ideal
Cómo encontrar el trabajo remoto idealCómo encontrar el trabajo remoto ideal
Cómo encontrar el trabajo remoto ideal
 
Automatizando ideas con Apache Airflow
Automatizando ideas con Apache AirflowAutomatizando ideas con Apache Airflow
Automatizando ideas con Apache Airflow
 
How thick data can improve big data analysis for business:
How thick data can improve big data analysis for business:How thick data can improve big data analysis for business:
How thick data can improve big data analysis for business:
 
Introducción al machine learning
Introducción al machine learningIntroducción al machine learning
Introducción al machine learning
 
Democratizando el uso de CoDi
Democratizando el uso de CoDiDemocratizando el uso de CoDi
Democratizando el uso de CoDi
 
Gestionando la felicidad de los equipos con Management 3.0
Gestionando la felicidad de los equipos con Management 3.0Gestionando la felicidad de los equipos con Management 3.0
Gestionando la felicidad de los equipos con Management 3.0
 
Taller: Creación de Componentes Web re-usables con StencilJS
Taller: Creación de Componentes Web re-usables con StencilJSTaller: Creación de Componentes Web re-usables con StencilJS
Taller: Creación de Componentes Web re-usables con StencilJS
 
El camino del full stack developer (o como hacemos en SERTI para que no solo ...
El camino del full stack developer (o como hacemos en SERTI para que no solo ...El camino del full stack developer (o como hacemos en SERTI para que no solo ...
El camino del full stack developer (o como hacemos en SERTI para que no solo ...
 
¿Qué significa ser un programador en Bitso?
¿Qué significa ser un programador en Bitso?¿Qué significa ser un programador en Bitso?
¿Qué significa ser un programador en Bitso?
 
Colaboración efectiva entre desarrolladores del cliente y tu equipo.
Colaboración efectiva entre desarrolladores del cliente y tu equipo.Colaboración efectiva entre desarrolladores del cliente y tu equipo.
Colaboración efectiva entre desarrolladores del cliente y tu equipo.
 
Pruebas de integración con Docker en Azure DevOps
Pruebas de integración con Docker en Azure DevOpsPruebas de integración con Docker en Azure DevOps
Pruebas de integración con Docker en Azure DevOps
 
Elixir + Elm: Usando lenguajes funcionales en servicios productivos
Elixir + Elm: Usando lenguajes funcionales en servicios productivosElixir + Elm: Usando lenguajes funcionales en servicios productivos
Elixir + Elm: Usando lenguajes funcionales en servicios productivos
 
Así publicamos las apps de Spotify sin stress
Así publicamos las apps de Spotify sin stressAsí publicamos las apps de Spotify sin stress
Así publicamos las apps de Spotify sin stress
 
Achieving Your Goals: 5 Tips to successfully achieve your goals
Achieving Your Goals: 5 Tips to successfully achieve your goalsAchieving Your Goals: 5 Tips to successfully achieve your goals
Achieving Your Goals: 5 Tips to successfully achieve your goals
 
Acciones de comunidades tech en tiempos del Covid19
Acciones de comunidades tech en tiempos del Covid19Acciones de comunidades tech en tiempos del Covid19
Acciones de comunidades tech en tiempos del Covid19
 
De lo operativo a lo estratégico: un modelo de management de diseño
De lo operativo a lo estratégico: un modelo de management de diseñoDe lo operativo a lo estratégico: un modelo de management de diseño
De lo operativo a lo estratégico: un modelo de management de diseño
 

Artesanos de software: El uso e implementación de patrones de diseño en sistemas productivos, no todo en la vida son frameworks.

  • 1. El uso e implementación de Patrones de Diseño. Pedro Quiñonez Bernardino Líder de Proyecto-Telcel
  • 2. A G E N D A ● La historia se repite............... ● Objetivo ● Que es un patrón ● Clasificación ● Implementaciones ● Utilización de enfoques (cuando sí y cuando no) ● Ventajas / Desventajas
  • 3. La historia se repite............... https://www.youtube.com/watch?v=qwZhHVl5hRU
  • 5. Que es un patrón? http://lema.rae.es/drae/?val=patr%C3%B3n ● Un evento o problema que ocurre infinidad de veces en nuestro entorno, así como la solución al mismo. ● Un patrón define una posible solución correcta para un problema de diseño dentro de un contexto dado. Referencia: http://es.wikipedia.org/wiki/Patr%C3%B3n_de_dise%C3%B1o#Categor.C3.ADas_de_patrones
  • 6. Los 4 fantásticos............... ● Elementos reusables. ● No reinventar el hilo negro. ● Homogenizar vocablos. ● Estandarizar los diseños. ● Facilitar el reconocimiento de problemas. ● Cerrar alternativas vs nuevas formas de implementaciones. ● Generar un ambiente cerrado a la creatividad inherente en el desarrollo de software. Erich Gamma, Richard Helm, Ralph Johnson y John Vlisides publican Design Patterns 1979-Christopher Alexander
  • 9. Implementaciones ● Servidor Sockets Consultas S-HDR ● Servidor de Reportes Corporativos (RUBI) ● Front–End captura de información de Reportes y Procesamiento Movimientos.
  • 10. Servidor Sockets Consultas S-HDR ● Concurrencia● Performance ● Volumen Objetivo: Implementación de un componente para la comunicación de aplicaciones con plataforma de validación. ● Traza y Logueo● Comunicación Síncrona
  • 12. Servidor Sockets Consultas S-HDR P o o l C o n e c t i o n S i n g l e t o n + g e t I n s t a n c e ( ) + c r e a t e I n s t a n c e ( ) + g e t D a t a S o u r c e ( ) I C o n s u l t a S I A N T E L C o n s u l t a S t o r e P r o c e d u r e J d b c S I A N T E L I m p l + s e t D a t a S o u r c e ( ) + c o n s u lt a U n i t a r ia S I A N T E L ( ) + c o n s u lt a M a s iv a S I A N T E L ( ) I C o m u n i c a t o r I n t e r f a c e A b s t r a c t S t r e a m + d e b u g T r a m a ( ) O b j e c t S t r e a m C o m u n i c a t o r I m p l + O b j e c t S t r e a m C o m u n ic a t o r I m p l ( ) + le e L i n e a ( ) + e s c r ib e L in e a s ( ) + e s c r ib e L in e a ( ) + le e M e t o d o C o n s u l t a ( ) + s e t I n p u t S t r e a m ( ) + s e t O u t p u t S t r e a m ( ) + le e R e s p u e s t a S e r v e r ( ) C o m u n i c a t o r F a c t o r y + c r e a C o m u n ic a t o r ( ) C o n s u l t a S i a n t e l F a c t o r y + c r e a C o n s u lt o r ( ) S i a n t e l S e r v e r + r u n ( ) + c lo s e ( ) T a s k S i a n t e l E x e c u t e + r u n ( ) + c lo s e S o c k e t ( ) + i n it ( ) + c o n s u lt a U n ic a ( ) + c o n s u lt a M a s iv a ( ) S t a r t S i a n t e l S e r v e r + m a in ( ) C o n s t a n t e s U t i l + C O N S U L T A _ M A S I V A + C O N S U L T A _ U N I C A G l o b a lP a r a m e t e r s + g e t P a r a m I d R e q u e s t ( ) + c r e a t e I n s t a n c e ( ) + g e t V a lu e ( ) D B B a s e D a o + c lo s e C o n n e c t io n ( ) + e x e c u t e Q u e r y ( ) + e x e c u t e U p d a t e ( ) + g e t C o n n e c t i o n ( ) + p r e p a r e C A L L ( ) + p r e p a r e S Q L ( )
  • 14. ● Reflection: obtiene instancia de implementación a utilizar en runtime. ● Singleton: generación de única instancia de parámetros de configuración. ● Factory Method: creación de instancia de objeto a realizar las consultas a plataforma de validación. ● Strategy: para permitir el intercambio de funcionalidad o algorítmo sin afectar el flujo de la aplicación. ● Pool de hilos: soporte de concurrencia por el servidor. Servidor Sockets Consultas S-HDR Implementación.............................
  • 15. Servidor de Reportes RUBI Objetivo: Eliminar la problemática inherente en la generación de los reportes del Sistema de Integral de Aplicaciones. Problemas: ● Saturación de conexiones sobre sistema legacy. ● Indisponibilidad de recursos compartidos entre aplicaciones. ● Saturación de Cluster y servidores de aplicaciones. ● Lentitud e indisponibilidad de aplicaciones.
  • 16. Servidor de Reportes RUBI Estado inicial..................
  • 19. Servidor de Reportes RUBI ● Template Method: Define algoritmo de generación de reporte. ● Observer: Pasos a nivel flujo de reporte. ● Strategy: Intercambio de funcionalidad de reportes. ● Singleton: Unica instancia de Pool de Hilos (Reportes y Observadores).
  • 20. Servidor de Reportes RUBI Template Method: Define algoritmo de generación de reporte.
  • 21. Servidor de Reportes RUBI Observer: Pasos a nivel flujo de reporte.
  • 22. Cúando sí y cúando no................ Implementación in-house: ● Aplicaciones ligeras en tamaño (no en funcionalidad). ● La funcionalidad es concreta y específica (no existen indefiniciones). ● No es opción actualizar aplicación (negocio). ● Sistemas heredados con tecnologías desactualizadas (aplicaciones operando, diversidad de API´s, alto costo en actualización de aplicación). ● Nivel intermedio-alto en conocimiento de POO, POA, Patrones y estilos arquitectónicos.
  • 23. Cúando sí y cúando no................ Implementación híbrida (framework + patrones): ● Aplicaciones con funcionalidad más extensa y variada (no reinventes el hilo negro). ● La posibilidad de definir y proporner las tecnologías a utilizar (proyectos de desarrollos nuevos). ● El alcance del desarrollo es ambiguo (demasiada incertidumbre e indefinición). ● Robustez e implementaciones validadas por toda una comunidad.
  • 24. Ventajas / Desventajas............... Ventajas: ● Conocimiento y control total de “las tripas” de las aplicaciones. ● Aplicaciones compactas, dedicadas y puras. ● Identificación de un área de oportunidad y posible implementación. ● Promoción de pensamiento abstracto. ● Comprensión de la forma de trabajo de API´s y framework. ● Generación de mejores niveles de programación. ● Especialización en la generalización.
  • 25. Ventajas / Desventajas............... Desventajas: ● Curva de aprendizaje. ● Cambio de cultura y pensamiento de abstracto. ● Fuertes conocimientos de conceptos de programación y orientación a objetos: “Ya sé porque no funciona.........”. ● Caer en sobreingeniería y antipatrones. ● Conocimiento puntual y especializado (saber qué, cómo, porque y cuando).