Mostrando entradas con la etiqueta falacias. Mostrar todas las entradas
Mostrando entradas con la etiqueta falacias. Mostrar todas las entradas

lunes, julio 23, 2007

¿Testeo o corrección?

Andaba yo descubriendo otro blog, el de Andrew Koenig, cuando, a raíz de dos post suyos seguidos (uno de aserciones contra excepciones y otro sobre la depuración) he reparado en el tema... últimamente se hace mucho hincapié en el desarrollo guiado por pruebas, pero según se puede ver en el segundo post, hay veces que las pruebas, e incluso el uso, no son garantía de corrección.

Por eso es tan importante que las pruebas sean realistas. Por eso es tan importante extraer información del sistema en todas la etapas del ciclo de vida. Por eso es tan importante un buen sistema de registro del sistema. Pero sobre todo, por eso es importante pensar bien antes de codificar.

También me ha recordado uno esos principios de desarrollo polémicos: Los fallos, cuanto antes mejor (Fail Fast). Es uno de los principios en el diseño de Erlang. Como dice Joe Armstrong en una entrevista reciente:

La filosofía de Erlang fue siempre construir sistemas con un montón de procesadores baratos y permitir que fallen. No prevenimos el fallo; vivimos con él y recuperamos el sistema cuando ocurren.

Hay que recordar que se trata de fallos irrecuperables, no de casos raros dentro de la lógica del programa. Es mejor dejar claro un error fatal que tratar de continuar cuando no se puede y que se pierda el rastro de lo sucedido...

Por supuesto el título es falaz, debería haber sido Testeo y corrección y todos contentos, pero espero que se me permita el recurso :)

¿Testeo o corrección? en barrapunto

jueves, junio 07, 2007

Evidencias en el desarrollo de software

Navegápolis es un blog que me gusta muchísimo. Hasta ahora no lo había referenciado porque su temática tiende más a la gestión y bueno, a mi me gusta más hablar de lo más pegado al código.

En este caso comenta Algunas evidencias del desarrollo de software extraídas directamente del libro Facts and Fallacies of Software Engineering. Haciendo una selección sobre la ya hecha por Juan Palacio:

  • El factor más importante en el trabajo con software no son las herramientas, ni las técnicas usadas por los programadores; sino la calidad de los programadores.
  • Normalmente las estimaciones se realizan al comenzar el ciclo de vida. Tiene un cierto sentido, si no fuera porque de esta forma se hace la estimación antes de definir los requisitos, y por lo tanto antes de conocer el problema.
  • La reutilización de pequeñas librerías o subrutinas llava empleándose 50 años de forma satisfactoria. La reutilización de grandes componentes es normalmente un problema sin resolver, aunque todo el mundo coincide en que es importante y deseable
  • Es 3 veces más difícil construir componentes reusables que no reusables (apunté en su día a Software Reusability: Myth Or Reality?)
  • La localización y limpieza de errores es la fase que más tiempo consume en el ciclo de vida.

Al parecer es el típico libro que, como The Mythical Man-Month, a uno le gustaría que se leyese más y en ámbitos menos técnicos. Del mismo modo a uno también le gustaría que determinadas estadísticas sobre proyectos fracasados fuesen más conocidas. Me parece de cultura general, pero debo estar equivocado :(


Evidencias en el desarrollo de software en barrapunto