Citar:
Lo importante es comprender cabalmente que es lo que queda implicado cuando se propone un ciclo de desarrollo iterativo y evolutivo o incremental. Esto cambia la manera en que se piensa sobre cómo se debe desarrollar un programa y cobra más importancia cuando el proyecto de mediano a grande o cuando debe ser realizado por un equipo.
Cuando se programa de forma individual el proceso de desarrollo y la metodología que se aplica debe adecuarse a esa situación y si el proyecto es pequeño es posible aplicar sin mayores problemas un proceso de desarrollo en cascada (análisis -> diseño -> codificación -> pruebas -> implantación -> mantenimiento), pero de todos modos sería mejor no ceñirse nunca a eso y aplicar siempre un proceso iterativo y al menos algunos conceptos de agilidad (metodologías ágiles) como TDD.
Citar:
Coincido plenamente, si ya había cumplido su propósito aún sin estar terminado, ¿para qué concluirlo? Solamente sería necesario hacerlo si se tratara de un desarrollo en equipo.
Citar:
Pero es que el propósito para el que se usan los diagramas generalmente se puede cumplir escribiendo código. Por ejemplo, la arquitectura se puede describir en términos de las interfaces de las rutinas, módulos o clases que la componen por medio de código. Pero esto implica que ese código es un bosquejo, que debe ser refinado y que generalmente o evoluciona hacia un diseño diferente o termina siendo reemplazado por otro diseño completamente distinto, y uno no debe tener pudor de tirarlo a la papelera porque, al igual que un diagrama, ya cumplió su función de permitir que se profundice el conocimiento sobre cómo deberá construirse el programa.
Sin embargo, cuando el proyecto es de mediano a grande a veces resulta útil dibujar diagramas (de componentes, de clases, de estado) cuando necesitas una visión general y resumida de la arquitectura que sea fácil de visualizar.