Modularización de KB GeneXus - lecciones aprendidas

Post on 28-Jan-2018

191 views 0 download

Transcript of Modularización de KB GeneXus - lecciones aprendidas

Modularización de KBLecciones aprendidas

Enrique Almeida@ealmeida

CONCEPTO

Para que?

Dividir yconquistar

Módulo

Objetos Públicos

ObjetosPrivados

Módulo3

Módulo 2

Que es módulo en GeneXus?

Criterios de modularización

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

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

Características deseables

COHESIÓN ALTA

BAJO ACOPLAMIENTO

NO CICLOS

MÓDULOS DE CARDINALIDAD PARECIDA

POCOS OBJETOS PUBLICOS

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.

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

Referencias a tablas

Integridad Referencial

For each de lectura

New / Delete / Update

Dependencia más débil

Dependencia más fuerte

Automatizar la Modularización?

Dividir una KB en módulos es NP-Completo

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

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

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

Futuro

Mejorar herramientas

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

Distribución de binarios

Incorporar seguridad?

Microservicios / Docker ...

Gracias!

@ealmeidaealmeida@concepto.com.uy