2009/3/26 Iván Párraga García <
ivan.parr...@gmail.com>:
>
> Hola,
>
> Yo también tengo el libro de Balcázar en mi estantería, de hecho, él fue
> (un buenísimo) profesor mío en la asignatura de nombre homólogo en la
> Facultad de Informática de Barcelona.
>
> Estoy más o menos de acuerdo que generalizar ese tipo de desarrollo
> puede ser utópico en general, pero puede tener algún nicho. Estoy
> pensando en software crítico con especificaciones realmente cerradas,
> cosas como el planificador de rutas de un misil o de un satélite de la NASA.
>
100% de acuerdo (es más o menos lo que yo decía).
> Con respecto a la desaparición de los informáticos... En fin, yo creo
> que la tecnología siempre va avanzando y tareas que antes necesitaban de
> un ingeniero ahora se "autogeneran", pero a cambio, hay nuevas
> necesidades a cubrir que siguen necesitando de una "mente humana
> informática". Creo que seguiremos siendo una especie necesaria (y no
> sólo como especificadores de algoritmos), pero lo que está clara es que
> vamos a ser "estudiantes" toda la vida.
>
Bueno, aunque nos vayamos un poco fuera del asunto de este hilo,
separemos la generación de código (que viene a ser como una ayuda,
pero que, tal y como yo lo veo, no mejoran significativamente el
resultado final) de la "captura de requisitos".
Me gustaría recomendar el libro "Bridging the Communication Gap" donde
el autor habla de las especificaciones ejecutables y de las pruebas
exploratorias. Las primeras serían ejemplos de uso del sistema que
explican qué debe hacer para cubrir las funcionalidades solicitadas
(requisitos) y que además haremos ejecutables de manera automática
(sin intervención humana). Las segundas serían las que solemos hacer
manualmente, las típicas UATs (a las que se refiere Pablo como
"validaciones formales") pero que no pueden ser exhaustivas porque
disparan el coste y también están sujetas al fallo humano.
Una de las ventajas de las primeras es que sirven para aclarar qué hay
que hacer y, más importante aún, qué NO hay que hacer. Nunca entran en
el cómo, sólo en el qué. Y en ese sentido son un poco TDD, puesto que,
con antelación a tener el sistema explicas qué quieres que haga. Más
adelante, los desarrolladores lo implementan COMO ellos decidan
(individual o colectivamente, ya sea tomando decisiones de diseño o
asumiendo las de un arquitecto, quizás).
Corolario: Es mejor impedir que surjan los defectos (con buenas
prácticas, buenos diseños, aclarando lo que hay que hacer y lo que
no...) que perseguir los defectos (porque alguno se nos puede
escapar).
Perdón por la chapa, pero es que este tema me apasiona.