You are on page 1of 19

cmo

NO hacer programas
MCs Javier Gonzlez Snchez

Las mejores practicas

Introduccin:

has escuchado algo como esto:

www.javiergs.com

javiergs@acm.org

Introduccin:

o como esto:

www.javiergs.com

javiergs@acm.org

Introduccin:

entonces el siguiente manual es para t


Tcnicas para hacer un PESIMO sistema de software Programacin estilo volcn El programa Dios La barita mgica Reinventar la rueda Casarse con el diablo El equipo superpoderoso Cdigo spaghetti Fantasmas Estufa y chimenea Y mucho ms

www.javiergs.com

javiergs@acm.org

Tcnica 1:

Lava Flow

programar al estilo volcn


Sntomas:
o o o o o o Declaracin de Variables no justificadas. Clases grandes y complejas sin documentar que no se relacionan claramente con la arquitectura Inconsistente y difuso estilo de evolucin de una arquitectura Bloques completos de cdigo comentado sin explicacin o documentacin Muchas reas con cdigo por terminar o reemplazar Cdigo sin uso abandonado, interfaces o componentes obsoletos en el cuerpo

Consecuencias: Definicin:
construir grandes cantidades de cdigo de manera desordenada, con poca documentacin y poca claridad de su funcin en el sistema. Conforme el sistema avanza en su desarrollo y crece, se dice que estos flujos de lava se solidifican, es decir, se vuelve mucho ms complicado corregir los problemas originados por estos, y el desorden va creciendo geomtricamente. o Si el cdigo de flujo de lava no es removido del cdigo puedo seguir proliferando cuando el cdigo es reusado en otras reas. Si el proceso que sufre de flujo de lava no es revisado, puede haber un crecimiento geomtrico de estos flujos, ya que muchas veces los programadores que continan trabajando con la versin original trabajan alrededor del flujo original Conforme los flujos se endurecen y solidifican, rpidamente se vuelve imposible documentar el cdigo o entender su arquitectura lo suficientemente bien como para hacer mejoras

www.javiergs.com

javiergs@acm.org

Tcnica 2:

The God

un programa omnipresente y desconocido


Sntomas:
o Una sola clase en la implementacin de todo el sistema

Consecuencias:
o o o Dependencia total de esa clase Cdigo desorganizado Fuerte interdependencia

Definicin:
Una sola clase modulo hace todo Tu programa es un SOLO archivo de muuuuuchas lneas

www.javiergs.com

javiergs@acm.org

Tcnica 3:

Golden Hammer
o o o

tambin conocida como la tcnica de la barita mgica


Sntomas:
Uso obsesivo de herramientas Terquedad de los desarrolladores para usar un paradigma de solucin para todos los programas Mala eleccin

Consecuencias: Definicin:
Es un vicio referente a aferrarse a un paradigma para solucionar todos los problemas que se nos presenten al desarrollar sistemas, como por ejemplo siempre querer usar el mismo lenguaje de programacin para todos los desarrollos sea o no conveniente. o Consumir mucho ms esfuerzo para resolver un problema

www.javiergs.com

javiergs@acm.org

Tcnica 4:

reinventar la rueda
eso reinventar la rueda
Sntomas:
o o o Poco nivel de reuso en el cdigo Constantemente se reescriben fragmentos de cdigo Hay pocos mtodos procedimientos o funciones

Consecuencias:
o El software se vuelve innecesariamente ms denso Se pierde tiempo e reimplementar cosas que ya estaban hechas Se puede perder consistencia

Definicin:
Se refiere a reimplementar componentes prefabricados de antemano y hacer poco reuso en el cdigo. Querer hacer todo uno mismo

o o

www.javiergs.com

javiergs@acm.org

Tcnica 5:

Vendor lock-in
o casarse con el diablo
Sntomas:
o o Poco conocimiento del trabajo ya existente Se buscan soluciones a problemas ya solucionados

Consecuencias:
o Se depende completamente de lo que el vendedor haga La calidad de los productos del proveedor nos comprometen El vendedor nos tiene agarrados

Definicin:
Crear una dependencia hacia un fabricante que nos provee de alguna solucin (componentes).

o o

www.javiergs.com

javiergs@acm.org

Tcnica 6:

Mythical Month Man


Sntomas:
o o

el sper equipo de programadores

Se trata de corregir retraso asignando ms personal No importa cuanto personal se aumente, el proyecto sigue sin avanzar

Consecuencias:
o

Definicin:
Consiste en la creencia de que asignar ms personal a un proyecto acotar el tiempo de entrega.

Llega un punto que entre ms personal se asigne ms se retrasa el proyecto

www.javiergs.com

javiergs@acm.org

Tcnica 7:

Spaghetti Code

o programar con las los pies


Sntomas:
o 50% del tiempo de mantenimiento se invierte en entender al sistema original. El programa creado para hacer un pequeo demo, en un dos por tres esta trabajando como producto final. El trabajo fue hecho pro el Programador Solitario Quin era ese hombre enmascarado? Sndrome del programador desesperado: mejor reescribimos todo el programa! El reuso es imposible

Definicin:
Spaghetti: dicese de una pieza de cdigo fuente no documentado, dnde cualquier pequeo movimiento convulsiona la estructura completa del sistema. Nota: Si mezclamos ms de un lenguaje de programacin en el mismo archivo el Spaghetti es ms sabroso. Ej. PHP con HTML sazonado con JavaScript, es delicioso!

Consecuencias:
o Tienes problemas, muchos problemas, disfrtalos.

www.javiergs.com

javiergs@acm.org

Tcnica 8:

Poltergeist
fantasmas
Sntomas:
o o o o El modelo de anlisis y/o diseo es inestable El diseo no coincide con la implementacin El rendimiento del sistema es pobre Imposible hacer extensiones al sistema, entre tanto fantasma encontrar los elementos relevantes se imposibilita.

Definicin:
Demasiadas clases en un programa o tablas en una base de datos. Muchas clases o tablas con mnimas responsabilidades.

Consecuencias:
o Sigues teniendo problemas, pero no te asustes solo chale la culpa al programador que estaba antes en tu lugar.

www.javiergs.com

javiergs@acm.org

Tcnica 9:

Stovepipe

cocinado en caliente
Sntomas:
o o o o o o Falta de estrategia tecnolgica de la empresa. Falta de estndares. Falta de perfil de sistema. Falta de incentivos para la cooperacin en el desarrollo de sistemas. Falta de comunicacin Falta de conocimiento sobre los estndares tecnolgicos. Falta de interafaces para la integracin de sistemas

Consecuencias: Definicin:
En la empresa se desarrollan varios sistemas de manera independiente y a distintos niveles. Esto dificulta interoperabilidad, reuso e incrementa costos. Se crean islas automatizadas dentro de la misma empresa.

o o o o o o

Tecnologas incompatibles dentro de la misma empresa Arquitecturas monolticas y no documentadas Falta de posibilidad de extender los sistemas para satisfacer las necesidades de negocio Falta de estndares Falta de reuso Falta de interoperabilidad

www.javiergs.com

javiergs@acm.org

Ms tcnicas:

alguna es de tu agrado o quizs prefieras alguna de estas:


o o o o o o o La tcnica POCP [Programacin orientada a Cut & paste] La tcnica CTE [Cubre Tus Errores] La tcnica de morir planeando La tcnica de la navaja suiza La tcnica del viejo y poderoso Duke de York La tcnica de la esponja La tcnica de la Cosa

www.javiergs.com

javiergs@acm.org

Administras proyectos de desarrollo de software?

entonces este anexo es para t

1. 2. 3.

El DES-administrador La mazorca de empleados Y otros ms

www.javiergs.com

javiergs@acm.org

Estrategia 1:

Project Miss-management
la jefa o el jefe que no sabe mandar
Sntomas:
o Retrasos en las fechas de entrega. reas incompletas.

Consecuencias:
o No se cumplen con las fechas de entrega

Definicin:
EL proyecto se descuida y no se monitorea de manera adecuada, es muy difcil de detectar en etapas iniciales pero repentinamente emerge de golpe y suele voltear de cabeza negativamente la situacin del proyecto.

www.javiergs.com

javiergs@acm.org

Estrategia 2:

Corncob

los empleados se obstaculizan unos a otros


Sntomas:
o El proyecto no se desarrolla correctamente aunque el personal es bueno

Consecuencias:
o El proyecto puede fallar por causas completamente ajenas a l.

Definicin:
Personas conflictivas o difciles de tratar que forman parte del equipo de desarrollo desvan u obstaculizan el proceso de produccin porque transfieren sus problemas personales o diferencias con otros miembros del equipo al proyecto.

www.javiergs.com

javiergs@acm.org

Ms estrategias:

puedes considerar tambin: o El supervisor paranoico o Miedo al xito o La pelea

www.javiergs.com

javiergs@acm.org

Conclusiones:

Todos estos problemas tienen una receta que los soluciona

SOFTWARE ARCHITECTURE GOOD PROJECT MANAGEMENT

www.javiergs.com

javiergs@acm.org

You might also like