miércoles, 20 de noviembre de 2013

En entradas anteriores publiqué el 1º criterio de calidad que es corrección, hoy hablaré sobre el segundo criterio de calidad que es la robustez.
Día a día veo a mucha gente discutir que un sistema es robusto, que un código es robusto, que un lenguaje de programación es robusto, discuten sobre si es robusto o no hasta blogger, llegué a la conclusión que en realidad muy pocos entienden qué es la robustez, y hoy hablaremos sobre ello.


Robustez:
Robustez es la habilidad de una entidad de software de funcionar aún en condiciones anormales (No especificadas).
La robustez es una cualidad vinculada con "que ocurre en situaciones anormales". Esta cualidad es diferente a la corrección, que define el comportamiento del sistema en los casos que son explícitamente determinados por la especificación.

La robustez es por definición y naturaleza una noción más difusa que la noción de corrección. Su interés es determinar que ocurre en aquellos casos no determinados explícitamente en la especificación. No es posible decir como en el caso de la corrección que el sistema debería comportarse de tal o cual manera, dado que por definición "tal" o "cual" tarea no son conocidas, puesto que de ser así, estaríamos en el dominio de la corrección. Siempre habrá situaciones que la especificación no cubre o direcciona explicitamente. El rol de la robustez es asegurar que si tales situaciones ocurren, el sistema no termina abrutamente o genera eventos no deseados, sino por el contrario termina claramente o entra en un modo de degradación no destructiva.

El termino fiabilidad es algunas veces utilizado por robustez, pero su este concepto denota una idea más general que es mejor interpretada como la unión de corrección y robustez.

Para que el lector comprenda claramente daremos un ejemplo, imaginese que me el cliente especifica, exige, un programa en C++ que al ingresar dos numeros naturales se sumen y muestren un resultado. Entonces el programador realiza un programa que al ingresar dos numeros se suman y muestran el resultado, la robustez empezaría a ser visible en el momento en que el usuario del programa en vez de ingresar un número natural como estaba especificado ingresa un número negativo (que no pertenece a los numeros naturales), el comportamiento del programa en éste caso que no se había especificado está claramente enlazado con la robustez del mismo, lo mismo ocurriría si ingresase un caracter.
Pero notese, que si nosotros pusieramos "si se ingresa un numero negativo, hacer tal cosa" estaríamos especificando que hacer cuando se ingrese un negativo por lo que automáticamente deja de pertenecer a la robustez, porque ya hablamos de algo que tenemos en cuenta y pasa al área de corrección.

Entonces deberíamos poner si no se ingresa un numero negativo. Es un ejemplo muy simple pero que aclara bastante, aunque no es la solución final pero es para que tengan una idea de la diferencia entre robustez y corrección.

Saludos!

0 comentarios:

Publicar un comentario

Subscribete al RSS Follow me on Twitter!