PDF de programación - Dan Rozenfarb - Como yerba mala - Ágiles 2008

Imágen de pdf Dan Rozenfarb - Como yerba mala - Ágiles 2008

Dan Rozenfarb - Como yerba mala - Ágiles 2008gráfica de visualizaciones

Actualizado el 21 de Marzo del 2018 (Publicado el 2 de Enero del 2018)
248 visualizaciones desde el 2 de Enero del 2018
465,9 KB
58 paginas
Creado hace 12a (14/11/2008)
Como yerba mala

Dan Rozenfarb
dan.rozenfarb@gmail.com

© Copyright 2008, Dan Rozenfarb

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

[…]

© Copyright 2008, Dan Rozenfarb

Principios Ágiles

2. Ágiles y flexibles

10.

Todo trabajo extra será peso muerto.

© Copyright 2008, Dan Rozenfarb

Qué me importa

“Una herramienta que permita importar
un archivo de texto en formato CSV a la
base de datos”

© Copyright 2008, Dan Rozenfarb

Qué me importa (cont.)

1ra iteración:

Importador

© Copyright 2008, Dan Rozenfarb

Qué me importa (cont.)

Class Importador



Method importar {

self.abrirArchivo
while not self.finDeArchivo {

self.importarRegistro
self.avanzarBarraProgreso

}
self.cerrarArchivo

}

© Copyright 2008, Dan Rozenfarb

Qué me importa (cont.)

Cambio de requerimiento: Ejecución en batch

© Copyright 2008, Dan Rozenfarb

Qué me importa (cont.)

MENTIRA

© Copyright 2008, Dan Rozenfarb

Qué me importa (cont.)

2da iteración: Batch

Importador
archivo
tabla
importar

ImportadorShell
modelo
archivo
tabla
importar

© Copyright 2008, Dan Rozenfarb

Qué me importa (cont.)

Observer

MVC

© Copyright 2008, Dan Rozenfarb

Qué me importa (cont.)

Cambio de requerimiento: Resultados

© Copyright 2008, Dan Rozenfarb

Qué me importa (cont.)

3ra iteración: Resultados

© Copyright 2008, Dan Rozenfarb

Qué me importa (cont.)

Cambio de requerimiento: Resultados del batch

© Copyright 2008, Dan Rozenfarb

Qué me importa (cont.)

4ta iteración:

Log

¿Qué información debería tener?

© Copyright 2008, Dan Rozenfarb

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

}

© Copyright 2008, Dan Rozenfarb

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)

}

o

Parser

© Copyright 2008, Dan Rozenfarb

Qué me importa (cont.)

© Copyright 2008, Dan Rozenfarb

Qué me importa (cont.)

Importador
archivo
tabla
procesados
importados
errores
duración

importar
cargarLog

© Copyright 2008, Dan Rozenfarb

Qué me importa (cont.)

Cambio de requerimiento: Logs de una sesión

© Copyright 2008, Dan Rozenfarb

Qué me importa (cont.)

5ta iteración: Log de sesiones de trabajo

Importador
archivo
tabla
logs

importar

DatosDelLog

archivo
tabla
procesados
importados
errores
duración

Vector

© Copyright 2008, Dan Rozenfarb

Qué me importa (cont.)

© Copyright 2008, Dan Rozenfarb

Qué me importa (cont.)

Importador
archivo
tabla
logs

importar

Importador
archivo
tabla
logs

importar

DatosDelLog

archivo
tabla
procesados
importados
errores
duración

Importación

archivo
tabla
procesados
importados
errores
duración
fecha

© Copyright 2008, Dan Rozenfarb

Qué me importa (cont.)

Serialización / Deserialización

una importación

01110011010010101011101010101010101

© Copyright 2008, Dan Rozenfarb

Qué me importa (cont.)

Method importar {

self.abrirArchivo
while not self.finDeArchivo {

self.importarRegistro
self.avanzarBarraProgreso

}
self.cerrarArchivo
self.serializarImportación

}

© Copyright 2008, Dan Rozenfarb

Qué me importa (cont.)

Importador

archivo
tabla
actual

logs
importaciones
importaciones
importaciones

importar

Importación

archivo
tabla
procesados
importados
errores
duración
fecha

© Copyright 2008, Dan Rozenfarb

Qué me importa (cont.)

Importación

© Copyright 2008, Dan Rozenfarb

Qué me importa (cont.)

No existe más el término log

Mejoramos la comunicación con el cliente,

ateniéndonos al Dominio

© Copyright 2008, Dan Rozenfarb

Qué me importa (cont.)
Conclusiones del ejercicio
• ¿Fuimos eficientes?
• Fuimos eficientes
• ¿Fuimos eficientes?
• Formato, lectura, escritura y parsing del log
• Variables en Importador
• “Los cambios son inevitables y no anticipables”

• MVC (circa 1980)
• Observer (1994)
• Importador – Importación

© Copyright 2008, Dan Rozenfarb

Qué me importa (cont.)

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

Importador

Importación

© Copyright 2008, Dan Rozenfarb

Buen Diseño y Análisis

Como yerba mala, el buen diseño
nunca muere

¿Y el experto no anticipa estos problemas?

Tampoco el buen análisis

© Copyright 2008, Dan Rozenfarb

Desarrollar software es difícil

Crisis del Software

¿

?

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

1958
1968

‘58

‘68

‘08

¡50 años de “crisis”!
¡40 años de Ingeniería!

© Copyright 2008, Dan Rozenfarb

Modelar

Recorte y Proyección

Realidad

Dominio

© Copyright 2008, Dan Rozenfarb

Modelar (cont.)

Dominio

Modelo Conceptual

Modelo Formal

Qué

Análisis

Diseño

© Copyright 2008, Dan Rozenfarb

Buen Diseño

 Modelo

(representación de lo que deseamos)

 Software

(mantenible, flexible, etc.)

Ambos, muy difíciles de lograr

© Copyright 2008, Dan Rozenfarb

Modelo

Frederick Brooks
Aristóteles

1985
circa 330 a.c.

Complejidad

Esencial

Accidental

© Copyright 2008, Dan Rozenfarb

Modelo (cont.)

Don Quijote de la Mancha

Formato
Texto

Tamaño
2.140.886

© Copyright 2008, Dan Rozenfarb

Modelo (cont.)

Don Quijote de la Mancha

Formato
Texto
WinZip 9.0 SR-1 (enhanced deflate)

Tamaño
2.140.886
768.756

35%

© Copyright 2008, Dan Rozenfarb

Modelo (cont.)

Don Quijote de la Mancha

Formato
Texto
WinZip 9.0 SR-1 (enhanced deflate)
Re-comprimido

Tamaño
2.140.886
768.756
768.998

© Copyright 2008, Dan Rozenfarb

Modelo (cont.)

Don Quijote de la Mancha

Formato
Texto
WinZip 9.0 SR-1 (enhanced deflate)
Re-comprimido
WinRAR 3.51 (best compression)
Re-comprimido

Tamaño
2.140.886
768.756
768.998
505.328
506.704

23%

© Copyright 2008, Dan Rozenfarb

Modelo (cont.)

Don Quijote de la Mancha

¿Podemos reducirlo más?

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

© Copyright 2008, Dan Rozenfarb

Modelo (cont.)

Todo debe ser lo más simple posible,

pero no más

© Copyright 2008, Dan Rozenfarb

Buen Software

 Mantenible
 Comprensible
 Eficiente (en espacio y tiempo)
 Escalable
 Robusto
 Flexible
 Bajo acoplamiento
 Alta cohesión
 etc.

© Copyright 2008, Dan Rozenfarb

Software (cont.)

SIMPLE

© Copyright 2008, Dan Rozenfarb

Paliativo a la complejidad

Simplicidad

(principio 10 del manifiesto)

William de Occam (≈1300):

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

© Copyright 2008, Dan Rozenfarb

Paliativo a la complejidad

Principio K.I.S.S.:

Keep It Simple, Stupid

© Copyright 2008, Dan Rozenfarb

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

Cambio

(principio 2 del manifiesto)

© Copyright 2008, Dan Rozenfarb

Cambio

Dominio

Esencial

Accidental

Es infrecuente

Habitual

Proporcionalidad

• Implementación
• Comprensión
• Relevamiento
• Humor del cliente
• Tecnología
• …

© Copyright 2008, Dan Rozenfarb

Cambio (cont.)

Factura ≈ Nota de Débito

© Copyright 2008, Dan Rozenfarb

Paliativos al cambio

Lo único inamovible es que habrá cambios

1. Anticiparlos

Aprender el dominio
Extraerle el conocimiento al experto
No alcanza con tenerlo en el equipo
Convertirse en uno

© Copyright 2008, Dan Rozenfarb

Paliativos al cambio (cont.)

Buen Análisis

© Copyright 2008, Dan Rozenfarb

Paliativos al cambio (cont.)

2. Modelo tolerante al cambio

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

 Encapsulamiento
 Binding dinámico
 Bajo acoplamiento
 Alta cohesión

© Copyright 2008, Dan Rozenfarb

Paliativos al cambio (cont.)

Buen Diseño

© Copyright 2008, Dan Rozenfarb

Paliativos al cambio (cont.)

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

Herramientas

 Patterns
 Frameworks
 Refactoring
 Reificación
 …
 Buenas prácticas

© Copyright 2008, Dan Rozenfarb

Paliativos al cambio (cont.)

No reinventemos la rueda

© Copyright 2008, Dan Rozenfarb

Y algo más

Actitud

© Copyright 2008, Dan Rozenfarb

Sobre la simplicidad

La simplicidad está al final del recorrido

© Copyright 2008, Dan Rozenfarb

Como yerba mala, nunca mueren

Larga vida a:
observar el dominio,
el buen análisis
y el buen diseño

© Copyright 2008, Dan Rozenfarb

¿Preguntas?

¿Eh?

Las imágenes pertenecen a sus respectivos dueños

© Copyright 2008, Dan Rozenfarb
  • Links de descarga
http://lwp-l.com/pdf8134

Comentarios de: Dan Rozenfarb - Como yerba mala - Ágiles 2008 (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad