Una de las cosas que muchas veces dejamos pasar cuando empezamos a desarrollar software es la parte del diseño, muchas veces los programadores les gusta terminar las cosas rapido y a como salgan y si salen bien todo al 100, pero la idea de diseñar un software muchas veces se confunde con la idea de diseñar la interfaz grafica.

La parte de diseñar software no es facil tienes que tener mucha vision de lo que quieres hacer y un buen estudio de patrones de diseño y conocimientos de UML o algun lenguaje de modelado de sistemas, aunque se puede hacer en la libreta con puro texto y dibujos que uno entienda pero si se usa un mecanismo que todo el mundo entiendan o por lo menos que ya esta estandarizado sera mucho mas facil explicar el diseño.

Pero siendo realistas el software a como va avanzando va cambiando y me refiero a que como vamos descubriendo(programando) la necesidad para la que fue diseñada el software nos damos cuenta que podria estar mejor de cierta manera o le hizo falta agregarle cosas o bien tiene cosas no necesarias y ahi es cuando se tiene que hacer una modificacion al diseño para que el software quede con los menos errores posibles.

Cuando se tiene un buen diseño de software, los programadores ya saben que camino seguir y la codificación se hace mucho mas facil por que solo van siguiendo el diseño y no están diseñando y programando a la vez, el diseño de software te da un mapa el cual seguir y asi es una buena herramienta a la hora de querer hacer modificaciones por que ya sabes por donde atacar el software.