Afirmar que hay software 100% libre de fallos es totalmente falso. Es perfectamente normal que los desarrolladores cometan errores y que una aplicación no funcione a la primera. Bueno, esta afirmación es perfectamente discutible y me he encontrado con gente en foros que sostiene que es capaz de desarrollar software completamente Bug Free.

En fin, Javier Lopez Arana me envia este artículo donde cita algunas de las razones de porque el software no está libre de defectos.

Falta de comunicación entre los equipos de desarrollo y calidad – Como consecuencia, algunas veces no están claros los requerimientos que tiene que tener la aplicación software a diseñar, es decir lo que la aplicación debería y no debería hacer

Complejidad del software – La complejidad de las actuales aplicaciones software, aplicaciones que usan configuraciones multi capa, arquitecturas cliente – servidor, bases de datos relacionales, complejas comunicaciones de datos, bases de datos relacionales así como el uso de tecnologías orientadas a objetos puede ser difícil de entender para personas sin experiencia en el desarrollo de software actual.

Errores en la programación – Los programadores, como todo el mundo, pueden cometer errores. Es importante que le equipo de QA testee profundamente todos los requerimientos de la aplicación y tener un sistema de seguimiento de defectos que permita a los programadores solucionar los defectos que han sido encontrados por el equipo de QA

Presiones de tiempo – Ya sabemos que los schedules de los proyectos software son bastante ajustados y que cuando se acercan los deadlines es más fácil que se cometan errores por motivos de presiones de entregas

La implantación de nuevas funcionalidades en fases avanzadas del ciclo de vida del producto puede generar nuevos errores en funcionalidades que anteriormente funcionaban correctamente – de ahí la importancia de los test de regresión

Las tools de desarrollo de software, pueden introducir sus propios issues dando origen a issues que no son consecuencia de problemas en el código de la aplicación a diseñar sino que derivan de problemas en el código asociado a las tools de desarrollo de software

Cambios en los requerimientos – Se trata de un problema bastante común en aquellas organizaciones donde existen expectativas relativas a que los requerimientos se pueden predeterminar y pueden permanecer bastante estables. El usuario final puede no entender los efectos de los cambios. Como consecuencia de estos cambios se tienen que realizar rediseños, cambios en los schedule que pueden afectar a otros proyectos. Dependiendo del número de cambios y de su importancia aumentara la complejidad de la coordinación de los equipos de trabajo lo que puede originar errores. Todo esto tiene que ser tenido en cuenta por el equipo de QA para realizar y planificar un testing extensivo y exhaustivo

Código pobremente documentado – Es complicado mantener o modificar el código que se ha escrito sin documentar. La complejidad aumenta si la persona que tiene que mantener o modificarlo no es la misma persona que lo ha escrito.