8 feb 2007

Problemas en el desarrollo de software

Para poder entender claramente la necesidad de la Ingeniería de Software como disciplina, es necesario adentrarse en los problemas que se presentan en los proyectos de desarrollo de software y sus causas.

Es sabido que muchos proyectos de desarrollo de software no cumplen sus objetivos de tiempo, costo y calidad (ver por ejemplo Chaos Report de Standish Group) ¿cuáles son las razones?. Según Standish Group, las 3 razones más importantes de falla en los proyectos son:

1. Falta de información por parte de los usuarios
2. Requerimientos y especificaciones incompletas
3. Requerimientos y especificaciones cambiantes

Eso nos da una pista importante (ya lo había dicho Frederick Brooks en No Silver Bullet): "La parte más dificil de desarrollar un sistema es decidir qué desarrollar... ninguna otra parte hace fallar tanto el sistema resultante si se hace mal. Ninguna otra parte es más difícl de rectificar después". Brooks define las dificultades de desarrollar software en Esenciales (o inherentes al software) y Accidentales, siguiendo el pensamiento aristotélico y dice que el software es una construcción conceptual que toma múltiples representaciones muy detalladas, y que la dificultad esencial radica en la especificación, diseño y prueba de esta construcción conceptual ( dificultad semántica), y no tanto en la labor de representarla y probar esta representación (dificultad sintáctica).

Existen otros problemas relacionados con los requerimientos, como el hecho de que es difícil representar el conocimiento experto o que la mayoría de las personas pueden hacer bien su trabajo sin que necesariamente puedan explicar bien cómo o porqué lo hacen.

Por otro lado y refiriéndome a la causa No. 3 del reporte de Standish Group, Ed Bersoff estableció que "No importa donde te encuentres en el ciclo de vida, el Sistema cambiará y el deseo de cambiar persistirá durante todo el ciclo de vida".

¿Tiene la Ingeniería de Software una solución para estos problemas?

Es importante hacer notar que estamos aquí en la parte del Qué desarrollar y aun no entramos al Cómo desarrollarlo.

No hay comentarios.: