¿Por qué falla el Software?
Leía la interesante nota de Christian los problemas que provoca OOXML, y encontré un comentario que me llamó la atención:
La verdad, es que como cualquier cosa hecha por el hombre, el software no está libre de errores.
Pero pareciera que la calidad del software, comparado con otras construcciones humanas, es pésima.
Algunos dirán que en el caso de Microsoft es aún peor.
¿Acaso el software es tan complejo que su tasa de errores siempre será mayor?
La realidad es que no.
El software puede construirse libre de fallas. Cuando decimos libre de fallas, queremos decir que la tasa de errores es tan baja como en otras actividades humanas, incluso más.
Software correcto y software libre de errores
"Beware of bugs in the above code; I have only proved it correct, not tried it."
Donald Knuth
Existen métodos formales (es decir, matemáticos) que permiten demostrar que una pieza de software es correcta. Estos método por supuesto son trabajosos, pero se han hecho avances para automatizar estos problemas.
Muchos lenguajes de programación contienen una serie de directivas que permiten demostrar que el software es correcto de acuerdo a las especificaciones.
Esto no significa que el software esté libre de fallos, porque pueden pasar varias cosas:
- El hardware puede tener alguna falla
- Los recursos necesarios no están disponibles, por ejemplo, no hay suficiente memoria RAM porque está siendo usada por otro proceso, o el espacio en disco no es suficiente.
- El software fue dimensionado para cierta carga de trabajo, y los usuarios han decidido aumentar las demandas sobre el mismo.
Y un largo etcétera.
Pero, ¿si uno puede establecer esta lista de posibles fallasa a priori, qué nos impide tomar las medidas para evitar estas fallas?
La verdad es que nada.
Errores aceptables
Cada vez que nos encontramos ante una falla, estamos aprendiendo algo nuevo, algo que no sabíamos sobre el sistema.
Esta ignorancia puede originarse porque no fuimos rigurosos en el análisis de requerimientos, o porque nadie conocía las condiciones que provocaron el fallo.
Los errores revelan nueva información sobre el sistema. La corrección del bug es responder a una nueva pregunta que nos plantea el sistema.
El único bug aceptable es aquel que nos revela algo que no sabíamos, todos los demás se pueden prevenir, ya sea programando en forma defensiva, o manejando las excepciones de manera adecuada.
Cada vez que enfrentamos la corrección de un bug debemos realizar las pruebas de regresión adecuadas, agregar nuevos tests, que nos permitan asegurar que si arreglamos un bug no dejemos sin funcionar algo que estaba bien.
Entonces ¿por qué falla tanto el software?
Los usuarios han sido engañados todo este tiempo, el software no es más complejo que construir edificios, o automóviles.
Lo que pasa es que los equipos de desarrollo del software comercial sufren de una serie de presiones del mercado que hacen que no se hagan todas las pruebas exhaustivas.
Se insiste en sacar nuevas versiones anualmente, que agregan más y más características al software.
Mientras más grande y complejo el software, más puntos de falla puede tener.
La verdad, es que el software bien hecho no debería tener fallas.
Categorías
Desarollo , Programación , Tecnología , Usabilidad0 TrackBacks
Abajo se encuentran listados enlaces a este artículo: ¿Por qué falla el Software?.
URL de TrackBack URL para esta entrada: http://www.lnds.net/cgi-bin/mt-tb.cgi/1883


5 Comentarios
Toda la razón Eduardo, detrás de un soft no necesariamente está toda la información disponible y los equipos trabajan contra el tiempo, contra los jefes negreros, mascullando lo poco que ganan, etc. Al final recibes un producto más estético que funcional y como si no fuera poco, te cobran el mazazo por las "mantenciones". Lo otro es que ni siquiera has terminado de instalar y el cliente ya está pidiendo más funcionalidades, por lo que la posibilidad de errores aumenta exponencialmente...
Saludos.
¿Estas diciendo que la culpa de que falle el software es de los usuarios?
¡¡Sacrilegio!!
:)
El software, por mucho que no le guste a los hackers (y en el buen sentido de la palabra), es un producto de Ingeniería. Obviamente si haces una bonita interfaz de un convertidor, o cosas así, claro es como construir una casa de un perro. Pero no es lo mismo que desarrollar un SGBD, un ERP como SAP e incluso el mismo Kernel de Linux a pesar de ser Open Source, sigue estrictos procesos de revisión y hay harta Ingeniería detrás de cada componente.
Yo no le echaría la culpa a los usuarios. Yo creo que el mercado del software todavía es super joven, queda mucho camino por recorrer para llegar a los niveles de estandarización de la mecánica, la electrónica o la Ingeniería Civil. Antes con los automóviles también pasaba, en EE.UU. las únicas grandes eran GM y Chrysler, llegaron los japoneses que de alguna forma tenían que entrar al mercado gringo, así que tuvieron que ofrecer mejores productos y más baratos. Esto implicó que las industrias gringas tuvieron que mejorar también sus productos y lograr acuerdos para estandarizar algunas piezas a fin de facilitar la manufactura y garantizar un nivel de seguridad en sus productos.
El mercado del software con el tiempo necesitará también de los estándares para desarrollar cada vez más rápido. Hay que darle tiempo al tiempo para que la disciplina del software comience a madurar. Yo creo que como se viene toda la moda de la biotecnología y también de la robótica, las exigencias en el software podrían ser más intensas.
Leí tu comentario, y estoy de acuerdo.
Trate de poner un comentario en tu blog, pero tengo que ser usuario registrado de blogger para hacerlo, y eso nunca...
No creo que los usuarios tengan culpa de las fallas en el software, sin embargo creo que es en la comunicacion con los usuarios donde hay problemas.
El usuario sabe lo que quiere, y los ingenieros de software saben lo que se puede hacer.
Entre ambos deben llegar a un consenso, que debe ser la especificación del sistema.
A todo esto, la industria del software tiene más o menos la misma edad que tenía la industria automovilística en los 50, y ya en esa época los autos quedaban bastante bien.
Saludos.
no esta lo que yo queria!!