• No se han encontrado resultados

Como yerba mala. Dan Rozenfarb. Copyright 2008, Dan Rozenfarb

N/A
N/A
Protected

Academic year: 2022

Share "Como yerba mala. Dan Rozenfarb. Copyright 2008, Dan Rozenfarb"

Copied!
58
0
0

Texto completo

(1)

Como yerba mala

Dan Rozenfarb

[email protected]

(2)

Manifiesto Ágil

12 Principios

[…]

2. Son bienvenidos los requisitos cambiantes …

[…]

10. La simplicidad, como arte de maximizar la cantidad de trabajo que no se hace, es

esencial

[…]

(3)

Principios Ágiles

Todo trabajo extra será peso muerto.

10.

2. Ágiles y flexibles

(4)

Qué me importa

“Una herramienta que permita importar

un archivo de texto en formato CSV a la

base de datos”

(5)

Qué me importa (cont.)

1ra iteración: Importador

(6)

Qué me importa (cont.)

Class Importador

Method importar { self.abrirArchivo

while not self.finDeArchivo { self.importarRegistro

self.avanzarBarraProgreso }

self.cerrarArchivo

}

(7)

Qué me importa (cont.)

Cambio de requerimiento: Ejecución en batch

(8)

Qué me importa (cont.)

MENTIRA

(9)

Qué me importa (cont.)

2da iteración: Batch

importar archivo tabla

Importador

importar modelo archivo tabla

ImportadorShell

(10)

Qué me importa (cont.)

MVC

Observer

(11)

Qué me importa (cont.)

Cambio de requerimiento: Resultados

(12)

Qué me importa (cont.)

3ra iteración: Resultados

(13)

Qué me importa (cont.)

Cambio de requerimiento: Resultados del batch

(14)

Qué me importa (cont.)

4ta iteración: Log

¿Qué información debería tener?

(15)

Qué me importa (cont.)

Method importar {

archivo := self.abrirArchivo self.grabarParametrosEnLog

while not self.finDeArchivo { self.importarRegistro

self.avanzarBarraProgreso }

self.grabarResultadosEnLog self.cerrarArchivo

self.cerrarLog

(16)

Qué me importa (cont.)

Method cargarLog(nombreDeArchivoLog) {

archivo := self.abrir(nombreDeArchivoLog)

nombreDeArchivo := self.nombreDeArchivoEn(archivo) nombreDeTabla := self.nombreDeTablaEn(archivo)

cantDeProcesados := self.cantDeProcesadosEn(archivo) cantDeImportados := self.cantDeImportadosEn(archivo) errores := self.erroresEn(archivo)

self.cerrar(archivo) }

Parser

o

(17)

Qué me importa (cont.)

(18)

Qué me importa (cont.)

archivo tabla

Importador

importar

cargarLog

procesados

importados

errores

duración

(19)

Qué me importa (cont.)

Cambio de requerimiento: Logs de una sesión

(20)

Qué me importa (cont.)

5ta iteración: Log de sesiones de trabajo

importar archivo tabla

Importador

logs

Vector procesados

importados errores duración

DatosDelLog archivo

tabla

(21)

Qué me importa (cont.)

(22)

procesados importados errores duración

DatosDelLog archivo

tabla

Qué me importa (cont.)

importar archivo tabla

Importador

logs

procesados importados errores duración

Importación

fecha tabla archivo

importar archivo tabla

Importador

logs

(23)

Qué me importa (cont.)

Serialización / Deserialización

una importación

01110011010010101011101010101010101

(24)

Qué me importa (cont.)

Method importar { self.abrirArchivo

while not self.finDeArchivo { self.importarRegistro

self.avanzarBarraProgreso }

self.cerrarArchivo

self.serializarImportación

}

(25)

Qué me importa (cont.)

procesados importados errores duración

Importación

fecha tabla archivo

importar Importador

archivo tabla

logs actual

importaciones

importaciones

importaciones

(26)

Qué me importa (cont.)

Importación

(27)

Qué me importa (cont.)

No existe más el término log

Mejoramos la comunicación con el cliente,

ateniéndonos al Dominio

(28)

Qué me importa (cont.)

Conclusiones del ejercicio

• Fuimos eficientes

• ¿Fuimos eficientes?

• Formato, lectura, escritura y parsing del log

• Variables en Importador

• ¿Fuimos eficientes?

• MVC (circa 1980)

• Observer (1994)

• Importador – Importación

• “Los cambios son inevitables y no anticipables”

(29)

Qué me importa (cont.)

“... herramienta que permita hacer una importación…”

Importador Importación

(30)

Buen Diseño y Análisis

Como yerba mala, el buen diseño nunca muere

Tampoco el buen análisis

¿Y el experto no anticipa estos problemas?

(31)

Desarrollar software es difícil

Crisis del Software

¿ ?

“Software” como término 1958 Ingeniería de software 1968

¡50 años de “crisis”!

‘58 ‘68 ‘08

(32)

Modelar

Recorte y Proyección

Realidad Dominio

(33)

Modelar (cont.)

Análisis Diseño

Dominio Modelo Conceptual Modelo Formal

Qué

(34)

Buen Diseño

 Modelo

(representación de lo que deseamos)

 Software

(mantenible, flexible, etc.)

Ambos, muy difíciles de lograr

(35)

Modelo

Esencial Accidental Complejidad

Frederick Brooks 1985

Aristóteles circa 330 a.c.

(36)

Modelo (cont.)

Don Quijote de la Mancha

2.140.886 Texto

Tamaño

Formato

(37)

Modelo (cont.)

Don Quijote de la Mancha

768.756 WinZip 9.0 SR-1 (enhanced deflate)

2.140.886 Texto

Tamaño Formato

35%

(38)

Modelo (cont.)

Don Quijote de la Mancha

768.998 Re-comprimido

768.756 WinZip 9.0 SR-1 (enhanced deflate)

2.140.886 Texto

Tamaño

Formato

(39)

Modelo (cont.)

Don Quijote de la Mancha

506.704 Re-comprimido

505.328 WinRAR 3.51 (best compression)

768.998 Re-comprimido

768.756 WinZip 9.0 SR-1 (enhanced deflate)

2.140.886 Texto

Tamaño Formato

23%

(40)

Modelo (cont.)

Don Quijote de la Mancha

¿Podemos reducirlo más?

Teoría de la información: entropía

(41)

Modelo (cont.)

Todo debe ser lo más simple posible,

pero no más

(42)

Buen Software

 Mantenible

 Comprensible

 Eficiente (en espacio y tiempo)

 Escalable

 Robusto

 Flexible

 Bajo acoplamiento

 Alta cohesión

 etc.

(43)

Software (cont.)

SIMPLE

(44)

Paliativo a la complejidad Simplicidad

William de Occam ( ≈ 1300):

Las explicaciones más simples son preferidas a las más complejas

(principio 10 del manifiesto)

(45)

Paliativo a la complejidad

Principio K.I.S.S.:

Keep It Simple, Stupid

(46)

El otro enemigo

“Caminar sobre agua y desarrollar software a partir de una especificación es fácil si ambas están congeladas” – Edward V. Berard

(principio 2 del manifiesto)

Cambio

(47)

Cambio

Esencial Accidental

Dominio • Implementación

• Comprensión

• Relevamiento

• Humor del cliente

• Tecnología

• … Es infrecuente Habitual

Proporcionalidad

(48)

Cambio (cont.)

Factura ≈ Nota de Débito

(49)

Paliativos al cambio

1. Anticiparlos

Aprender el dominio

Extraerle el conocimiento al experto No alcanza con tenerlo en el equipo

Lo único inamovible es que habrá cambios

(50)

Paliativos al cambio (cont.)

Buen Análisis

(51)

Paliativos al cambio (cont.)

2. Modelo tolerante al cambio

 Encapsulamiento

 Binding dinámico

 Bajo acoplamiento

 Alta cohesión

Relación 1 a 1 con el dominio (más estable)

(52)

Paliativos al cambio (cont.)

Buen Diseño

(53)

Paliativos al cambio (cont.)

“Diga todo una y sólo una vez” – Kent Beck

Herramientas

 Patterns

 Frameworks

 Refactoring

 Reificación

 …

 Buenas prácticas

(54)

Paliativos al cambio (cont.)

No reinventemos la rueda

(55)

Y algo más

Actitud

(56)

Sobre la simplicidad

La simplicidad está al final del recorrido

(57)

Como yerba mala, nunca mueren

Larga vida a:

observar el dominio, el buen análisis

y el buen diseño

(58)

¿Preguntas?

¿Eh?

Referencias

Documento similar

Nery Eberto Dubón Arita GRANOS Importación de Granos Básicos 01/10/2015 GUATEMALA Cristóbal Quiej Zapil HORTALIZAS Importación de Hortalizas Frescas 02/10/2015 GUATEMALA Importadora

GRANOS Importación de Granos Básicos 08/10/2015 GUATEMALA Importadora Osorio HORTALIZAS Importación de Hortalizas Frescas 09/10/2015 GUATEMALA Importadora Río Blanco

Ketika seseorang berakidah Islam, maka pondasi awal untuk membangun akidah/keyakinannya adalah keyakinan terhadap Allah sebagai Tuhan yang wajib disembah, Maha Esa, Pencipta

Berdasarkan hasil penelitian di kawasan hutan Pertamina Bukit Datuk Dumai, Riau, pada plot seluas 1 ha tercatat 32 jenis pohon berdiameter ≥ 10 cm dan berjumlah 354

Penelitian ini akan memberikan hasil berupa data jenis dan struktur vegetasi, serta karakteristik habitat penyu hijau yang dapat dijadikan referensi bagi

Tujuan penelitian ini adalah untuk membandingkan pengaruh kombinasi maggot dengan pellet (Hermetia illusence) dan pakan buatan pada produksi pembesaran ikan Nila

Koefisien korelasi +1 menunjukan bahwa tingkat keuntungan antara 2 sekuritas tersebut selalu bergerak dari arah yang sempurna sama (artinya kalau yang satu naik 10% maka yang

[r]