Cómo probar no solo la sintaxis sino también la lógica de un diagrama de clase

¿Cómo verificamos la lógica de un diagrama de clase? Sobre todo no lo hacemos. El diseño orientado a objetos es un proceso iterativo. El diseño en sí mismo depende de cómo se usan los objetos tanto como de lo que hacen. Los diagramas de clase tratan sobre las interacciones entre los objetos y no sobre cómo funcionan internamente.

Sigue mi propia opinión y sé que algunas personas no estarán de acuerdo conmigo: si bien es bueno pasar un tiempo pensando en los objetos y sacarlos, hay un retorno negativo al tratar de ser demasiado completo al respecto. En otras palabras, tratar de dibujar todos los objetos y los detalles de sus clases es una pérdida de tiempo y dinero. Es por la misma razón por la que SpaceX no podía estar seguro de cómo aterrizar un cohete en una barcaza flotante sin intentar primero y perforar algunos agujeros en la barcaza. Nadie puede estar tan seguro de cómo deberían funcionar las cosas.

Además, mantener estos dibujos sin una herramienta automatizada es una gran inversión en tiempo y dinero. A menudo, haré un boceto, especialmente si intento comunicar un diseño a otros ingenieros y confiar en que harán un buen trabajo en los detalles. Si estoy preocupado por eso, puedo consultar su código mientras lo envían a SVN. Sí, a veces me muerdo al confiar, pero eso va con el territorio.

Escriba algunos bdd que verifiquen si el comportamiento actual es realmente el que estaba buscando.

More Interesting

¿Qué tipo de prueba de software se usa generalmente en mantenimiento de software?

¿Qué piensan los expertos en más de cinco lenguajes de programación sobre el comportamiento de tipo religioso exhibido por los programadores que cuentan con un idioma (su idioma) es mejor que otro? ¿Qué causa esto? ¿Por que sucede? ¿Es esto saludable?

¿Cuál es el mejor instituto para pruebas de software?

Cómo pasar de la programación empresarial a la programación de juegos

¿Es válido el concepto de ingeniero 10x? Específicamente, ¿es este multiplicador defendible? ¿Hay datos que sugieran que los mejores ingenieros son 10 veces mejores que los ingenieros normales, a diferencia de 3x o 100x?

¿Cuáles son los principios fundamentales detrás de ejecutar una máquina virtual de manera eficiente?

¿Cuál es la diferencia entre los ingenieros de software que se convierten en grandes expertos técnicos y los que se convierten en gerentes?

¿Por qué se exige tanto a los ingenieros de software? ¿Qué tipo de circunstancias sociales requieren este fenómeno?

¿Cuál es el mejor IDE Java ligero?

¿Cuál es la contribución exacta de Rajiv Gandhi para el desarrollo de la industria del software?

¿Los campamentos de arranque para desarrolladores realmente le dan lo que ellos llaman "habilidades de nivel de entrada del mundo real"?

¿Cómo se construye un juego móvil multijugador en tiempo real?

¿Por qué los ingenieros de software no participan en la organización laboral?

¿Cómo se transmite un video capturado por mi cámara web por un servicio como ustream?

¿Cuáles son los posibles escenarios de prueba del software actiTIME?