Introducción a técnicas para realizar cambios en el software de manera segura y progresiva. Desde refactorings de pequeñas porciones de código hasta cambios en la arquitectura y la base de datos.
Este documento presenta una comparación entre las plataformas Windows y Web para aplicaciones desarrolladas con GeneXus, y provee consejos y experiencias sobre migraciones de Win a Web. Se destacan las diferencias en diseño, programación de eventos, reportes, seguridad, y llamados entre paneles. También se mencionan nuevas posibilidades del entorno web como integración con otros sistemas a través de servicios web. Finalmente, se concluye que una migración es viable y tiene ventajas, recomendando el uso de GeneXus 8.0.
Este documento describe cómo utilizar Integration Services en SQL Server 2014 para transferir datos de una base de datos transaccional a un data mart en SQL Server 2014. Explica los pasos para crear un proyecto SSIS, extraer datos de las tablas de una base de datos, transformar los datos y cargarlos en tablas de un data mart. También incluye consultas SQL para extraer datos de hechos y dimensiones y limpiar las tablas del data mart antes de cargar los datos.
Facebook está revolucionando la forma de desarrollar nuevas experiencias para nuestros usuarios. Aplicaciones móviles, de escritorio y web bajo un mismo paradigma para gobernarlas a todas. Conceptos nuevos en el manejo de estado como Flux y Redux nos ayudan a tacklear la complejidad inherente de las apps modernas. Esta charla es una inmersión técnica a la revolución que ya comenzó y que está cambiando definitivamente la forma en que pensamos el software de consumo masivo.
El objetivo de la presentación es ayudar con trucos y consideraciones para mover nuestras aplicaciones del nivel 3 al nivel 4 de una forma práctica y reduciendo los costes de transición (de menor coste/complejidad a mayor sin comprometer mucho el siguiente paso). Veremos cómo desacoplar sin eventos de dominio sobre el mismo monolito, algunos trucos para mejorar la asincronía, cómo usar eventos con un monolito, la diferencia entre orquestrar y coordinar, y mucho más!
El documento describe la actualización de la aplicación SAP y la base de datos a la versión 9.3 PL14 en noviembre de 2021. Incluye revisiones de pruebas unitarias y pruebas integrales en un ambiente de pruebas, así como la migración de datos y la comprobación de saldos e integridad de la información antes del lanzamiento. También presenta los pasos de migración de SAP Business One desde la versión 9.2 PL07 hasta la versión actual 9.3 PL14 y futuras actualizaciones planificadas.
Descripción de la interfaz de programaciónEneldo Serrata
Consiste en un dispositivo con el cual las aplicaciones web, se pueden comunicar con las impresoras fiscales por medio a un API que les ofrece todas la funciones y de esta forma pueda interactuar con la impresora desde el browser, es una excelente solución para todos aquellos programadores que quieran implementar las impresoras fiscales desde sus aplicaciones web o por medio a una red.NOTA: En proceso de homologación y por el momento solo funciona com impresoras EPSON.
Este documento presenta información sobre la API web de Microsoft Dynamics 365. Brevemente describe las características clave de la API web como la implementación de OData V4, la capacidad de consumir y crear registros, y las limitaciones actuales como la actualización de campos de búsqueda a NULL. También proporciona enlaces a recursos adicionales sobre temas como Xrm.WebApi, Postman y Typescript.
Este documento presenta una comparación entre las plataformas Windows y Web para aplicaciones desarrolladas con GeneXus, y provee consejos y experiencias sobre migraciones de Win a Web. Se destacan las diferencias en diseño, programación de eventos, reportes, seguridad, y llamados entre paneles. También se mencionan nuevas posibilidades del entorno web como integración con otros sistemas a través de servicios web. Finalmente, se concluye que una migración es viable y tiene ventajas, recomendando el uso de GeneXus 8.0.
Este documento describe cómo utilizar Integration Services en SQL Server 2014 para transferir datos de una base de datos transaccional a un data mart en SQL Server 2014. Explica los pasos para crear un proyecto SSIS, extraer datos de las tablas de una base de datos, transformar los datos y cargarlos en tablas de un data mart. También incluye consultas SQL para extraer datos de hechos y dimensiones y limpiar las tablas del data mart antes de cargar los datos.
Facebook está revolucionando la forma de desarrollar nuevas experiencias para nuestros usuarios. Aplicaciones móviles, de escritorio y web bajo un mismo paradigma para gobernarlas a todas. Conceptos nuevos en el manejo de estado como Flux y Redux nos ayudan a tacklear la complejidad inherente de las apps modernas. Esta charla es una inmersión técnica a la revolución que ya comenzó y que está cambiando definitivamente la forma en que pensamos el software de consumo masivo.
El objetivo de la presentación es ayudar con trucos y consideraciones para mover nuestras aplicaciones del nivel 3 al nivel 4 de una forma práctica y reduciendo los costes de transición (de menor coste/complejidad a mayor sin comprometer mucho el siguiente paso). Veremos cómo desacoplar sin eventos de dominio sobre el mismo monolito, algunos trucos para mejorar la asincronía, cómo usar eventos con un monolito, la diferencia entre orquestrar y coordinar, y mucho más!
El documento describe la actualización de la aplicación SAP y la base de datos a la versión 9.3 PL14 en noviembre de 2021. Incluye revisiones de pruebas unitarias y pruebas integrales en un ambiente de pruebas, así como la migración de datos y la comprobación de saldos e integridad de la información antes del lanzamiento. También presenta los pasos de migración de SAP Business One desde la versión 9.2 PL07 hasta la versión actual 9.3 PL14 y futuras actualizaciones planificadas.
Descripción de la interfaz de programaciónEneldo Serrata
Consiste en un dispositivo con el cual las aplicaciones web, se pueden comunicar con las impresoras fiscales por medio a un API que les ofrece todas la funciones y de esta forma pueda interactuar con la impresora desde el browser, es una excelente solución para todos aquellos programadores que quieran implementar las impresoras fiscales desde sus aplicaciones web o por medio a una red.NOTA: En proceso de homologación y por el momento solo funciona com impresoras EPSON.
Este documento presenta información sobre la API web de Microsoft Dynamics 365. Brevemente describe las características clave de la API web como la implementación de OData V4, la capacidad de consumir y crear registros, y las limitaciones actuales como la actualización de campos de búsqueda a NULL. También proporciona enlaces a recursos adicionales sobre temas como Xrm.WebApi, Postman y Typescript.
Capas de acceso a datos .NET escalables de verdad: el batido perfecto para el...SolidQ
En esta sesión aprenderemos a detectar e implementar correctamente capas de acceso a datos . NET que escalen a las capacidades HW de nuestras máquinas. Saca provecho de todas las posibilidades de rendimiento que se ofrecen combinando SQL Sever y .NET.
El documento explica el patrón arquitectónico Command and Query Responsibility Segregation (CQRS). CQRS separa las operaciones de lectura y escritura en una aplicación, utilizando modelos separados y optimizados para cada caso. Esto mejora el rendimiento, la escalabilidad y la simplicidad. CQRS también puede implementarse utilizando múltiples bases de datos para lecturas y escrituras.
Detección de cambios para el desarrollo de WareHouseFreddy Angarita
Este documento describe varios métodos para detectar cambios en un almacén de datos (data warehouse), incluyendo eliminación y recarga, transformación de tipo de cambio de dimensión estándar (SCD), búsqueda, transformación Kimball SCD, método MergeJoin, transformación T-SQL MERGE y detección de cambios de datos (CDC). Explica las ventajas e inconvenientes de cada método y proporciona ejemplos de su implementación.
Presentación Ruby on Rails en Softare Freedom Day 09 Buenos Airespeterpunk
Slides de la presentación realizada el 19 de Septiembre del 2009 en el contexto de Software Freedom Day 09 realizado en la UTN sede medrano. Para más información: http://blogs.onrails.com.ar/2009/9/14/rails-en-software-freedom-day-09
El documento describe el concepto de "Cream Code" en Objective-C, que se refiere a código de alta calidad, entendible, extensible y mantenible. Explica que el Cream Code sigue principios como modularización, evitar duplicación de código, simplicidad y uso de pruebas. También describe técnicas para lograr Cream Code como separar responsabilidades en los controladores de vista, inyección de dependencias, patrones de diseño y pruebas. El objetivo final es producir código más legible, flexible y robusto.
El documento describe las etapas clave para el desarrollo de un sitio web, incluyendo: 1) entender los requisitos, 2) decidir si se puede completar el proyecto, 3) acordar el costo y alcance. Luego detalla varias consideraciones adicionales como el público objetivo, contenido y presupuesto. Finalmente, recomienda tiempos específicos para cada etapa del proceso.
Este documento discute el uso excesivo de plugins en WordPress y propone una solución alternativa. Actualmente, hay más de 18,000 plugins disponibles y se han realizado más de 267 millones de descargas. Sin embargo, a menudo los plugins solo resuelven problemas de forma parcial y requieren personalización. La solución propuesta es aprender PHP básico y usar funciones como wp_insert_post para crear soluciones personalizadas en lugar de depender de plugins. Se provee un ejemplo práctico de cómo permitir que los usuarios envíen nuevas publicaciones directamente
Oracle 12c Transaction Guard and Application ContinuityJulio
Descripción y ventajas de las características Transaction Guard y Application Continuity, nuevas en Oracle Database 12c. Conferencia realizada para OTN Tour Guatemala 2017
Desarrollar para la nube no es tan transparente como creemos. Conocer correctamente este nuevo entorno, así como sus limitaciones nos ayudarán a evitar problemas de escalabilidad. En esta sesión veremos cómo desarrollar correctamente soluciones para la nube de Microsoft que sean escalables. Veremos ejemplos de lo que no es escalable y también veremos cómo podemos solucionarlo y evitarlo. Hablaremos de patrones de arquitectura, Unity, Entity Framework, capas de acceso a datos, worker roles, web roles,… escalabilidad!
Este documento presenta las arquitecturas de dos sistemas financieros complejos desarrollados por Mercap. La primera solución utiliza una arquitectura modular dividida en sistemas, mientras que la segunda incorpora un motor de workflow embebido. Ambas soluciones permiten mantener un código único para todos los clientes y configurar procesos de negocio de forma dinámica sin necesidad de cambios de código. Además, la segunda solución facilita la auditoría de procesos al registrar la historia de ejecución de cada workflow.
Este documento presenta conceptos y técnicas relacionadas con ASP.NET MVC 3 y Visual Studio 2010. Explica el patrón REST, la diferencia entre modelo y viewmodel, el patrón de controlador flaco y modelo gordo, y el concepto de mejora progresiva. También incluye ejemplos de código para una aplicación TODO list utilizando estas técnicas.
Desarrollo de un nuevo Software para Operadores de Comercio Exterior - ControlDharma Consulting
Dharma Consulting ha sido aprobada como proveedor de entrenamiento en gestión de proyectos por el Project Management Institute (PMI). Como proveedor registrado del PMI, Dharma Consulting acepta cumplir con los criterios de calidad establecidos por el PMI. El documento presenta una solicitud de cambio para agregar la capacidad de guardar firmas escaneadas de representantes en un módulo de software.
Html5 para móviles, las reglas no escritasCarlos Toxtli
Conoce como hacer de forma adecuada una plataforma que funcione online y offline tanto en navegadores como en dispositivos que soporten aplicaciones basadas en navegadores incrustados.
Introducción al desarrollo Web: Frontend con Angular 6Gabriela Bosetti
El documento presenta una introducción al desarrollo frontend con Angular 6. Los objetivos incluyen comprender el desarrollo frontend con Angular, utilizar un framework MVC como Angular, y ser capaz de desarrollar una Single Page App. Se explican conceptos como TypeScript, Bootstrap, servicios y enrutamiento. Finalmente, se muestra cómo crear y extender un repositorio para migrar la aplicación con servicios backend.
Contratos y presupuestos en proyectos Drupal - Drupal Camp Spain 2014Atenea tech
En esta sesión me gustaría exponer dos maneras de gestionar un proyecto: agilismo y predictivo. Dentro de estas dos maneras de trabajar, es imprescindible plantear el cómo realizar presupuestos, ya que estos pueden implicar que la relación con el cliente sea fluida y que el proyecto sea un éxito, o por el contrario, encontrarnos en un callejón sin salida con un proyecto sobredimensionado y mal pagado.
Hablaré sobre las diferentes formas de hacer presupuestos, algunos consejos prácticos, así como dar importancia a la responsabilidad que tenemos al firmar un acuerdo.
El documento describe varios métodos de pagos electrónicos como Cardnet, Visanet, PayPal y Authorize.net. Explica sus características principales como la facilidad de implementación, soporte para tarjetas locales y métodos de integración como pagos integrados y SOAP. También analiza ventajas como SDK para diferentes lenguajes y desventajas como interfaces poco personalizables y costos elevados para pequeñas empresas.
1) El documento presenta información sobre aplicaciones AJAX (JavaScript asíncrono y XML), comparando el comportamiento de aplicaciones de escritorio, web y web + AJAX. 2) Describe conceptos clave como Javascript, XML, JSON y el objeto XMLHttpRequest que permite solicitudes asíncronas al servidor. 3) Explica el flujo típico de una aplicación AJAX, incluyendo respuestas del servidor y marcos como ExtJS.
Tras analizar los procesos de negocio de la compañía detectamos puntos de mejora mediante la automatización de estos, mediante un despliegue de tecnología movil orientado a mejorar el servicio a los clientes y reducir el coste operativo.
Actualmente la interacción de los explotadores de máquinas de Jupama es la siguiente:
Cuando un cliente necesita comunicarse con Jupama, dispone de un número de teléfono al que llamar. En dicha llamada, es atendido por un asistente virtual que le
ofrece 4 opciones:
• Solicitud de cambio, con una cantidad predefinida según el histórico del cliente.
• La asistencia de un técnico.
• La asistencia de un comercial.
• La posibilidad de hablar con un operador.
Capas de acceso a datos .NET escalables de verdad: el batido perfecto para el...SolidQ
En esta sesión aprenderemos a detectar e implementar correctamente capas de acceso a datos . NET que escalen a las capacidades HW de nuestras máquinas. Saca provecho de todas las posibilidades de rendimiento que se ofrecen combinando SQL Sever y .NET.
El documento explica el patrón arquitectónico Command and Query Responsibility Segregation (CQRS). CQRS separa las operaciones de lectura y escritura en una aplicación, utilizando modelos separados y optimizados para cada caso. Esto mejora el rendimiento, la escalabilidad y la simplicidad. CQRS también puede implementarse utilizando múltiples bases de datos para lecturas y escrituras.
Detección de cambios para el desarrollo de WareHouseFreddy Angarita
Este documento describe varios métodos para detectar cambios en un almacén de datos (data warehouse), incluyendo eliminación y recarga, transformación de tipo de cambio de dimensión estándar (SCD), búsqueda, transformación Kimball SCD, método MergeJoin, transformación T-SQL MERGE y detección de cambios de datos (CDC). Explica las ventajas e inconvenientes de cada método y proporciona ejemplos de su implementación.
Presentación Ruby on Rails en Softare Freedom Day 09 Buenos Airespeterpunk
Slides de la presentación realizada el 19 de Septiembre del 2009 en el contexto de Software Freedom Day 09 realizado en la UTN sede medrano. Para más información: http://blogs.onrails.com.ar/2009/9/14/rails-en-software-freedom-day-09
El documento describe el concepto de "Cream Code" en Objective-C, que se refiere a código de alta calidad, entendible, extensible y mantenible. Explica que el Cream Code sigue principios como modularización, evitar duplicación de código, simplicidad y uso de pruebas. También describe técnicas para lograr Cream Code como separar responsabilidades en los controladores de vista, inyección de dependencias, patrones de diseño y pruebas. El objetivo final es producir código más legible, flexible y robusto.
El documento describe las etapas clave para el desarrollo de un sitio web, incluyendo: 1) entender los requisitos, 2) decidir si se puede completar el proyecto, 3) acordar el costo y alcance. Luego detalla varias consideraciones adicionales como el público objetivo, contenido y presupuesto. Finalmente, recomienda tiempos específicos para cada etapa del proceso.
Este documento discute el uso excesivo de plugins en WordPress y propone una solución alternativa. Actualmente, hay más de 18,000 plugins disponibles y se han realizado más de 267 millones de descargas. Sin embargo, a menudo los plugins solo resuelven problemas de forma parcial y requieren personalización. La solución propuesta es aprender PHP básico y usar funciones como wp_insert_post para crear soluciones personalizadas en lugar de depender de plugins. Se provee un ejemplo práctico de cómo permitir que los usuarios envíen nuevas publicaciones directamente
Oracle 12c Transaction Guard and Application ContinuityJulio
Descripción y ventajas de las características Transaction Guard y Application Continuity, nuevas en Oracle Database 12c. Conferencia realizada para OTN Tour Guatemala 2017
Desarrollar para la nube no es tan transparente como creemos. Conocer correctamente este nuevo entorno, así como sus limitaciones nos ayudarán a evitar problemas de escalabilidad. En esta sesión veremos cómo desarrollar correctamente soluciones para la nube de Microsoft que sean escalables. Veremos ejemplos de lo que no es escalable y también veremos cómo podemos solucionarlo y evitarlo. Hablaremos de patrones de arquitectura, Unity, Entity Framework, capas de acceso a datos, worker roles, web roles,… escalabilidad!
Este documento presenta las arquitecturas de dos sistemas financieros complejos desarrollados por Mercap. La primera solución utiliza una arquitectura modular dividida en sistemas, mientras que la segunda incorpora un motor de workflow embebido. Ambas soluciones permiten mantener un código único para todos los clientes y configurar procesos de negocio de forma dinámica sin necesidad de cambios de código. Además, la segunda solución facilita la auditoría de procesos al registrar la historia de ejecución de cada workflow.
Este documento presenta conceptos y técnicas relacionadas con ASP.NET MVC 3 y Visual Studio 2010. Explica el patrón REST, la diferencia entre modelo y viewmodel, el patrón de controlador flaco y modelo gordo, y el concepto de mejora progresiva. También incluye ejemplos de código para una aplicación TODO list utilizando estas técnicas.
Desarrollo de un nuevo Software para Operadores de Comercio Exterior - ControlDharma Consulting
Dharma Consulting ha sido aprobada como proveedor de entrenamiento en gestión de proyectos por el Project Management Institute (PMI). Como proveedor registrado del PMI, Dharma Consulting acepta cumplir con los criterios de calidad establecidos por el PMI. El documento presenta una solicitud de cambio para agregar la capacidad de guardar firmas escaneadas de representantes en un módulo de software.
Html5 para móviles, las reglas no escritasCarlos Toxtli
Conoce como hacer de forma adecuada una plataforma que funcione online y offline tanto en navegadores como en dispositivos que soporten aplicaciones basadas en navegadores incrustados.
Introducción al desarrollo Web: Frontend con Angular 6Gabriela Bosetti
El documento presenta una introducción al desarrollo frontend con Angular 6. Los objetivos incluyen comprender el desarrollo frontend con Angular, utilizar un framework MVC como Angular, y ser capaz de desarrollar una Single Page App. Se explican conceptos como TypeScript, Bootstrap, servicios y enrutamiento. Finalmente, se muestra cómo crear y extender un repositorio para migrar la aplicación con servicios backend.
Contratos y presupuestos en proyectos Drupal - Drupal Camp Spain 2014Atenea tech
En esta sesión me gustaría exponer dos maneras de gestionar un proyecto: agilismo y predictivo. Dentro de estas dos maneras de trabajar, es imprescindible plantear el cómo realizar presupuestos, ya que estos pueden implicar que la relación con el cliente sea fluida y que el proyecto sea un éxito, o por el contrario, encontrarnos en un callejón sin salida con un proyecto sobredimensionado y mal pagado.
Hablaré sobre las diferentes formas de hacer presupuestos, algunos consejos prácticos, así como dar importancia a la responsabilidad que tenemos al firmar un acuerdo.
El documento describe varios métodos de pagos electrónicos como Cardnet, Visanet, PayPal y Authorize.net. Explica sus características principales como la facilidad de implementación, soporte para tarjetas locales y métodos de integración como pagos integrados y SOAP. También analiza ventajas como SDK para diferentes lenguajes y desventajas como interfaces poco personalizables y costos elevados para pequeñas empresas.
1) El documento presenta información sobre aplicaciones AJAX (JavaScript asíncrono y XML), comparando el comportamiento de aplicaciones de escritorio, web y web + AJAX. 2) Describe conceptos clave como Javascript, XML, JSON y el objeto XMLHttpRequest que permite solicitudes asíncronas al servidor. 3) Explica el flujo típico de una aplicación AJAX, incluyendo respuestas del servidor y marcos como ExtJS.
Tras analizar los procesos de negocio de la compañía detectamos puntos de mejora mediante la automatización de estos, mediante un despliegue de tecnología movil orientado a mejorar el servicio a los clientes y reducir el coste operativo.
Actualmente la interacción de los explotadores de máquinas de Jupama es la siguiente:
Cuando un cliente necesita comunicarse con Jupama, dispone de un número de teléfono al que llamar. En dicha llamada, es atendido por un asistente virtual que le
ofrece 4 opciones:
• Solicitud de cambio, con una cantidad predefinida según el histórico del cliente.
• La asistencia de un técnico.
• La asistencia de un comercial.
• La posibilidad de hablar con un operador.
Similar a Modificando el software de manera progresiva (20)
Buscador de Eventos y Fiestas en España - Buscafiestaholabuscafiesta
Buscafiesta.es es el buscador líder en España para fiestas y eventos, diseñado para satisfacer las necesidades tanto de organizadores como de asistentes. Este innovador software ofrece una plataforma integral que permite a los organizadores de eventos añadir, gestionar y promocionar sus actividades de manera totalmente autónoma, facilitando la visibilidad y escalabilidad de sus eventos.
Buscafiesta.es no solo conecta a los organizadores con su público objetivo, sino que también ofrece herramientas de marketing y análisis que ayudan a maximizar el impacto de cada evento. Ya sea para una fiesta local, un concierto multitudinario o un evento corporativo, Buscafiesta.es es la solución definitiva para hacer de cada evento un éxito rotundo.
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...micarnavaltupatrimon
Mi Carnaval es la plataforma que permite conectar al usuario con la cultura y la emoción del Carnaval de Blancos y Negros en la ciudad de Pasto, esta plataforma brinda una amplia oferta de productos, servicios, tiquetería e información relevante para generarle valor al usuario, además, la plataforma realiza un levantamiento de datos de los espectadores que se registran, capturando su actividad e información relevante para generar la analítica demográfica del evento en tiempo real, con estos datos se generan modelos predictivos, que permiten una mejor preparación y organización del evento, de esta manera ayudando a reducir la congestión, las largas filas y, así como a identificar áreas de alto riesgo de delincuencia y otros problemas de seguridad.
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...micarnavaltupatrimon
Mi Carnaval es la plataforma que permite conectar al usuario con la cultura y la emoción del Carnaval de Blancos y Negros en la ciudad de Pasto, esta plataforma brinda una amplia oferta de productos, servicios, tiquetería e información relevante para generarle valor al usuario, además, la plataforma realiza un levantamiento de datos de los espectadores que se registran, capturando su actividad e información relevante para generar la analítica demográfica del evento en tiempo real, con estos datos se generan modelos predictivos, que permiten una mejor preparación y organización del evento, de esta manera ayudando a reducir la congestión, las largas filas y, así como a identificar áreas de alto riesgo de delincuencia y otros problemas de seguridad.
9. Narrow change
Reduce el número de lugares donde necesitas hacer un cambio antes de hacerlo
Ejemplo de cliente de order:
public void processCustomerOrders(String customer) {
for (Order order : orders) {
if (order.customer.equals(customer)) {
order.process();
};
}
}
…. y n clientes más
10. public void processCustomerOrders(String customer) {
for (Order order : orders) {
if (order.customer.equals(customer)) {
order.process();
};
}
}
class Order {
String customer;
….
}
11. public void processCustomerOrders(String customer) {
for (Order order : orders) {
if (order.customer.equals(customer)) {
order.process();
};
}
}
class Order {
String customer;
String getCustomer() {
return customer;
}
}
12. public void processCustomerOrders(String customer) {
for (Order order : orders) {
if (order.getCustomer().equals(customer)) {
order.process();
};
}
}
class Order {
String customer;
String getCustomer() {
return customer;
}
}
13. public void processCustomerOrders(String customer) {
for (Order order : orders) {
if (order.getCustomer().equals(customer)) {
order.process();
};
}
}
class Order {
Customer customer;
String getCustomer() {
return customer.getName();
}
}
14. Parallel change
1. Desarrolla en paralelo la nueva manera de hacer algo sin tocar la antigua.
2. Después cambia progresivamente de la antigua a la nueva.
3. Cuando el código antiguo ya no lo necesite nadie, lo puedes borrar.
Dos enfoques de cambios paralelos:
● Ocurren manera transparente para el cliente (sin cambios en interface)
● Afectan visiblemente a los clientes (cambios en interface)
15. Parallel change: sin cambios de interface
The Limited Red Society
by Joshua Kerievsky
16. Parallel change: con cambios de
interfacedouble getFlowBetween(Date start, Date end) {
double result = 0;
for (Receipt receipt : receipts) {
if (receipt.getDate().after(start) && receipt.getDate().before(end) ) {
result += receipt.getTotal();
}
}
}
… con n-clientes
17. Parallel change: con cambios de
interfacedouble getFlowBetween(Date start, Date end) {
DateRange dateRange = new DateRange(start, end);
double result = 0;
for (Receipt receipt : receipts) {
if (receipt.getDate().after(start) && receipt.getDate().before(end) ) {
result += receipt.getTotal();
}
}
}
… sin cambios en los clientes
18. Parallel change: con cambios de
interfacedouble getFlowBetween(Date start, Date end) {
DateRange dateRange = new DateRange(start, end);
double result = 0;
for (Receipt receipt : receipts) {
if (receipt.getDate().after(date.getStart()) && receipt.getDate().before(date.getEnd())) {
result += receipt.getTotal();
}
}
}
… sin cambios en los clientes
19. Parallel change: con cambios de
interfacedouble getFlowBetween(Date start, Date end) {
DateRange dateRange = new DateRange(start, end);
double result = 0;
for (Receipt receipt : receipts) {
if (receipt.getDate().after(date.getStart()) && receipt.getDate().before(date.getEnd())) {
result += receipt.getTotal();
}
}
}
… sin cambios en los clientes
20. Parallel change: con cambios de
interfacedouble getFlowBetween(Date start, Date end) {
DateRange dateRange = new DateRange(start, end);
return getFlowBetween(dateRange);
}
double getFlowBetween(DateRange dateRange) {
double result = 0;
for (Receipt receipt : receipts) {
if (receipt.getDate().after(date.getStart()) && receipt.getDate().before(date.getEnd())) {
result += receipt.getTotal();
}
}
} … cambiamos los clientes uno a uno y una vez estén todos ...
21. Parallel change: con cambios de
interfacedouble getFlowBetween(Date start, Date end) {
DateRange dateRange = new DateRange(start, end);
return getFlowBetween(dateRange);
}
double getFlowBetween(DateRange dateRange) {
double result = 0;
for (Receipt receipt : receipts) {
if (receipt.getDate().after(date.getStart()) && receipt.getDate().before(date.getEnd())) {
result += receipt.getTotal();
}
}
}
22. Evolved target
Cuando sabes dónde quieres llegar en tu diseño, haz pequeños refactorings que
vayan evolucionando hacia el objetivo.
28. Cambios en servicios
● Problema con cambios en servicios que tiene ya clientes
● Código de clientes que no lo puedes tocar (retrocompatibilidad):
○ Clientes externos
○ Aplicaciones móviles nativas
● Código que puedes cambiar pero con costo grande:
○ otros equipos
○ muchos clientes
32. Breaking the monolith
Para sacar de una aplicación un servicio:
1. Separar código del nuevo servicio en paquete
2. Separar las tablas a las que se acceden
3. Separar el código al nuevo servicio
38. ¿Cómo empezar?
● Ahora mismo: planteárselo
● Mañana: Testing
● En 1 hora: Limited Red Society de Joshua Kerievsky
● Con un poco de tiempo: Refactoring de Martin Fowler