Modularización de KB GeneXus - lecciones aprendidas

19
Modularización de KB Lecciones aprendidas Enrique Almeida @ealmeida CONCEPTO

Transcript of Modularización de KB GeneXus - lecciones aprendidas

Page 1: Modularización de KB GeneXus -  lecciones aprendidas

Modularización de KBLecciones aprendidas

Enrique Almeida@ealmeida

CONCEPTO

Page 2: Modularización de KB GeneXus -  lecciones aprendidas

Para que?

Page 3: Modularización de KB GeneXus -  lecciones aprendidas
Page 4: Modularización de KB GeneXus -  lecciones aprendidas

Dividir yconquistar

Page 5: Modularización de KB GeneXus -  lecciones aprendidas

Módulo

Objetos Públicos

ObjetosPrivados

Módulo3

Módulo 2

Page 6: Modularización de KB GeneXus -  lecciones aprendidas

Que es módulo en GeneXus?

Page 7: Modularización de KB GeneXus -  lecciones aprendidas

Criterios de modularización

Todos los objetos en un módulo Un modulo por objeto

Page 8: Modularización de KB GeneXus -  lecciones aprendidas

UN arco intra-módulo DOS arcos intra-módulo

Buena técnica de modularización es maximizar los arcos dentro de los módulos y minimizar los arcos entre los diferentes módulos.

1

2

3

4

6

5

7

1

2

3

4

6

5

7

Page 9: Modularización de KB GeneXus -  lecciones aprendidas

Características deseables

COHESIÓN ALTA

BAJO ACOPLAMIENTO

NO CICLOS

MÓDULOS DE CARDINALIDAD PARECIDA

POCOS OBJETOS PUBLICOS

Page 10: Modularización de KB GeneXus -  lecciones aprendidas

Metodología de Modularización de una KB. Mientras hay tablas en módulo ROOT MODULE

1. Creo módulo nuevo y pongo Visibility = Private2. Elijo tablas del nuevo módulo3. Muevo las transacciones que generan las tablas elegidas4. Divido objetos que usa tablas en módulos diferentes 5. Muevo al módulo los objetos que usan las tablas elegidas6. Marco como públicos los llamados desde otro módulo7. Rebuild all y corregir errores

Las tablas sólo pueden ser actualizadas en su módulo, aunque sea pública.

Page 11: Modularización de KB GeneXus -  lecciones aprendidas

No todas las referencias son iguales

Solo se ve afectado si si cambia la estructura de la transacción

Se ve afectado si cambia la estructura + parámetros

Estructura + parámetros + Theme + webform parámetros

Estructura + parámetros + rules + eventos + variables

Page 12: Modularización de KB GeneXus -  lecciones aprendidas

Referencias a tablas

Integridad Referencial

For each de lectura

New / Delete / Update

Dependencia más débil

Dependencia más fuerte

Page 13: Modularización de KB GeneXus -  lecciones aprendidas

Automatizar la Modularización?

Page 14: Modularización de KB GeneXus -  lecciones aprendidas

Dividir una KB en módulos es NP-Completo

Page 15: Modularización de KB GeneXus -  lecciones aprendidas

Lecciones aprendidas - Modularización

Problema muy difícil

No escala

Faltan herramientas mas avanzadas

● Detección de errores más rápido● Conocer las dependencias de un módulo● Recomendación de ubicación de un objeto

Page 16: Modularización de KB GeneXus -  lecciones aprendidas

Lecciones aprendidas - Código y objetos

mas fácil de testear

mas fácil de entender

mas fácil de mantener

Objetos mas chicos

Objetos parecidos quedan más cerca

Page 17: Modularización de KB GeneXus -  lecciones aprendidas

Lecciones aprendidas - Forma de trabajo

Reutilizar conocimiento

Mejor manejo de la complejidad

Dividir el trabajo en grupos

Mas fácil de instalar

Mejor preparados para futuro

Page 18: Modularización de KB GeneXus -  lecciones aprendidas

Futuro

Mejorar herramientas

● Trabajar con módulo + Interfaz● Especialización de módulos

Distribución de binarios

Incorporar seguridad?

Microservicios / Docker ...

Page 19: Modularización de KB GeneXus -  lecciones aprendidas

Gracias!

@[email protected]