¿Puede usar UML en un proyecto TDD?

7

Si es así, ¿en qué etapa? ¿O es también un proceso iterativo? Si es iterativo, ¿qué tan formal? Además, ¿qué tan útil es UML para un programador solo haciendo código abierto? Aunque me gusta ver una imagen del sistema, se siente tan formal y un camino de conejito para TDD.

Gracias.

    
pregunta Armando 09.06.2011 - 01:36

3 respuestas

9
  

¿Puedes usar UML en un proyecto TDD?

El uso de TDD no impide el uso de UML, ni tampoco el uso de UML previene TDD. De hecho, sospecharía que usar UML como herramienta de diseño para capturar el comportamiento y las interacciones del sistema facilitaría primero escribir las pruebas. Usted tendría un modelo de referencia de la implementación a utilizar. Sin embargo, a medida que implementes, también deberías mantener tu UML actualizado o perderá rápidamente su valor.

  

Si es así, ¿en qué etapa? ¿O también es un proceso iterativo?

Si va a aplicar UML en un proyecto, hay tres puntos en los que sería más útil.

Lo primero sería cuando diseñe la arquitectura del sistema, donde probablemente querrá usar los diagramas de componentes, implementación y comunicación para mostrar cómo se integrarán grandes partes del sistema y dónde se implementará cada componente. Un diagrama de implementación sería especialmente útil en un sistema distribuido, donde tiene nodos con diferentes responsabilidades y capacidades.

El siguiente punto sería una fase de diseño más detallada, cuando comience a planificar interacciones de nivel de clase y método. Aquí, es probable que encuentre los diagramas de clase, estructura compuesta, secuencia, objeto y estado más útiles. Los diagramas específicos que necesitaría dependen mucho de la complejidad del sistema y de lo que desee mostrar.

En cada una de estas dos fases, el uso de UML le permite llevar a cabo revisiones de diseño. Puede validar su diseño contra sus requisitos para asegurarse de que no le falte nada. En un entorno TDD, es posible que desee utilizar estas revisiones para identificar posibles problemas con la implementación de sus pruebas.

Las etapas finales serían durante el desarrollo, mantenimiento y mejora. Usted tiene una arquitectura y un diseño capturados que puede consultar. Esto también debería capturar su razonamiento. A medida que continúe haciendo crecer su sistema, podrá ver sus antiguas decisiones de diseño junto con la razón por la que las tomó, para determinar la viabilidad y el alcance de los cambios al agregar nuevas funciones. También proporciona un plan de acción para trabajar desde el desarrollo del sistema: ya ha pensado al menos algo por adelantado, por lo que no debe preocuparse por conectar sus módulos sobre la marcha.

El modelado iterativo es definitivamente algo por lo que luchar. No solo debe volver a visitar sus modelos al principio de cada iteración, ya que está diseñando y planificando nuevas características, sino que también debe considerar la ingeniería inversa para tratar de mantener sus modelos actualizados. No todas las herramientas pueden aplicar ingeniería inversa automáticamente a todos los tipos de diagramas, pero puede intentar mantener las otras actualizadas manualmente. Si deja que un diagrama quede desactualizado, asegúrese de indicarlo o descartarlo de cualquier repositorio o documento para que no tome decisiones basadas en datos no válidos.

  

Si es iterativo, ¿qué tan formal?

Depende.

Tiendo a ser más informal con mis modelos UML. Utilizo la notación que necesito para comunicarme a mí mismo ya los demás exactamente lo que está haciendo el sistema. Tiendo a ser más minimalista, enfocándome en enviar un mensaje en particular a mí mismo y a otros ingenieros para usarlos al desarrollar el sistema. Capto el mensaje en texto (como notas en el diagrama o incrustando el diagrama en un documento de Word junto con un texto explicativo) La idea es que a medida que desarrollo el sistema, también estoy desarrollando documentación para mí y para otros.

  

Además, ¿qué tan útil es UML para un programador solo haciendo código abierto?

Si se trata de un sistema pequeño que se construirá con bastante rapidez (< 6 meses de desarrollo constante, o algo así, como una estimación inmediata) por uno o dos desarrolladores, el impacto de UML probablemente sería mínimo. Durante un período de tiempo más prolongado, para sistemas más complejos o con un equipo más grande, le ayudará a tomar decisiones de arquitectura y diseño y luego comunicarlo a través del equipo de desarrollo.

El punto de UML no es sobre ti, sino sobre la comunicación. Si otras personas se unen a su proyecto como evaluadores o desarrolladores, tener modelos UML actualizados puede ayudarles a entender su sistema más fácilmente. Una comprensión más rápida significa que son más fáciles de ponerse al día y comenzar a contribuir, una ventaja para todos.

    
respondido por el Thomas Owens 09.06.2011 - 03:38
1

Por supuesto que puedes! Puedes usar UML si crees que sería útil. Es solo una herramienta y, como tal, puede utilizarse sin importar el ciclo de vida / técnicas de desarrollo que esté utilizando.

Con TDD (y ágil, que generalmente no está muy lejos) sería útil si, al implementar una nueva función, una visualización de la base de código existente lo ayudara o quisiera visualizar los cambios / adiciones de su nueva caracteristica. No se debe usar para "definir" la base de código en este contexto, sino solo para ayudarlo a entenderlo. Puedes dibujarlo a mano alzada en un pedazo de papel. El desarrollo Agile / TDD es bastante fluido y, sin duda, se pensaría en un diagrama UML laminado no muy diferente del diablo.

    
respondido por el Gary Buyn 09.06.2011 - 03:14
1

Su pregunta refleja el abismo percibido entre "cascada" y pensamiento "ágil", donde UML se considera una técnica utilizada en BDUF (Big Design Up Front), que es un NO absoluto en los círculos ágiles.

Sin embargo, el manifiesto ágil nunca estipuló que uno no debe hacer ninguna documentación ni ningún diseño ni ninguna arquitectura por adelantado. Solo dice "Lo suficiente" y "Valoramos el código de trabajo más que la documentación".

Hay proyectos que requieren un poco de diseño y arquitectura por adelantado, y UML es una opción obvia cuando se trata de enfrentar estos problemas. El truco es usarlo "lo suficiente". La cantidad exactamente "suficiente" es, depende del proyecto y del equipo, por lo que tendré que resolverlo por sí mismo, me temo.

    
respondido por el wolfgangsz 09.06.2011 - 11:34

Lea otras preguntas en las etiquetas

Comentarios Recientes

Por supuesto. De lo contrario, tendría que recordar a qué vinculará su GBA como mencioné. Es más fácil olvidarse del acceso, incluso si solo tiene un Exii en el entorno del jardín amurallado. Nes: Nekocoder + GBA + C ++ 2X y encabezados para configurar cosas. Entonces, si está ahí fuera, coloque esto en una cuenta de Launchpad ! Y.neko to.sdk / stage envíanos una línea en twitter. Envíe un correo electrónico a [email protected] si está interesado en un tutorial en tándem. ¿Qué pasa si no me gusta el... Lee mas