jueves, 9 de mayo de 2013


            LA CONFIABILIDAD DEL SOFTWARE

Las organizaciones que desarrollan productos basados en software requieren de prácticas efectivas que permitan mejorar la calidad del producto. La Ingeniería de la Confiabilidad de Software es una práctica cuantitativa que puede ser implementada en organizaciones de cualquier tamaño bajo distintos modelos de desarrollo. Las organizaciones desarrolladoras de productos basados en software destinan grandes cantidades de recursos para mejorar la calidad de sus productos. Una parte de dichos recursos se utiliza para la adopción de mejores prácticas. Sin embargo, la dificultad de la adopción de dichas prácticas no sólo reside en el costo y el tiempo requerido para institucionalizarlas, sino en cómo medir su impacto en la calidad del software, así como demostrar el retorno de dicha inversión. El grupo de Confiabilidad de Software y Sistemas (SoSYR) del Centro de Investigación en Matemáticas A.C., lleva a cabo investigación sobre prácticas industriales de bajo costo, con un alto impacto en la calidad de los productos de software y que sean aplicables a organizaciones de distintos tamaños.
En este artículo se introduce a la Ingeniería de la Confiabilidad de Software (ICS). La ICS es una práctica de bajo costo, independiente del modelo de desarrollo y de la plataforma tecnológica que permite caracterizar y controlar de manera cuantitativa la calidad del producto.
La calidad, las fallas y la confiabilidad de Software. La calidad es un atributo percibido por los usuarios o clientes de cualquier producto o servicio. En el caso de productos basados en software, la percepción de la calidad está en función de las fallas que el cliente percibe del mismo durante su operación.
La confiabilidad es un atributo que mide el grado en que un producto opera sin fallas bajo condiciones establecidas por un periodo de tiempo determinado. La confiabilidad es un atributo cuantitativo que ha sido ampliamente analizado, estudiado y usado en otras industrias para caracterizar la calidad de los productos o servicios. En su concepción más general, la confiabilidad es un atributo que mide el grado en que un producto opera sin fallas bajo condiciones establecidas por un periodo de tiempo determinado.
Una falla es la manifestación percibida por el cliente de que algo no funciona correctamente e impacta su percepción de la calidad. Un defecto es el problema en el producto de software que genera una falla. 




¿QUÉ ES LA INGENIERÍA DE CONFIABILIDAD DE SOFTWARE?
La ICS es una práctica que permite planear y guiar el proceso de la prueba del software de manera cuantitativa. La ICS no es algo nuevo. Se origina en los años 70 con los trabajos de J. D. Musa, A. Iannino, y K. Okumoto[1]. Su efectividad ha hecho que muchas empresas incorporen esta práctica en sus proyectos, tales como AT&T, Alcatel, HP, IBM, Lockheed-Martin, Microsoft, Motorola, entre otras. El impacto de dicha práctica se ha visto en la aprobación de un estándar de la AIAA (en 1993) así como sus correspondientes versiones en los estándares de IEEE. Cabe mencionar que se han documento más de 60 artículos reportando los resultados de la aplicación de la ICS en distintos proyectos.
Dos elementos caracterizan la ICS: (1) el uso esperado relativo de las funcionalidades del sistema y (2) los requerimientos de calidad definidos por el cliente, que incluyen la confiabilidad, la fecha de liberación y costo del ciclo de vida del proyecto.
El primer elemento (1) se centra en caracterizar de manera cuantitativa el uso esperado del sistema mediante la definición del llamado perfil de operación del sistema. Esta caracterización cuantitativa permite optimizar el uso de los recursos en las funciones que tengan un mayor impacto y mayor uso esperado dentro
del sistema.
El perfil de operación de un sistema es la caracterización cuantitativa del uso que se espera de las funcionalidades principales del sistema. Por lo general se usan probabilidades para cuantificar dicho uso esperado.
El segundo elemento (2) se refiere al enfoque al cliente mediante el establecimiento de objetivos cuantitativos asociados a la calidad del producto (representados con base a las fallas del producto). La satisfacción de dichos objetivos permite establecer un balance entre los costos del producto, así como la satisfacción de las necesidades del cliente.

¿Por qué usar la CONFIABILIDAD DEL SOFTWARE?
La ICS es independiente de la tecnología y de la plataforma de desarrollo. No requiere ningún cambio en arquitectura, diseño, o código, sino que puede sugerir los cambios que serían útiles. También, la ICS está altamente orientada al cliente y está altamente correlacionada con los niveles 4 y 5 del Modelo Integrado de Madurez de las Capacidades (CMM-I) del Instituto de Ingeniería de Software. Su alta orientación al cliente se debe a la naturaleza de la información requerida en el proceso de la ICS, lo que implica tener un contacto frecuente y cercano con los clientes. Esta interacción mejora la satisfacción del cliente y reduce riesgos de manera similar a lo propuesto en los métodos ágiles de desarrollo.
La alta correlación con los niveles de madurez 4 y 5 de CMM-I se debe a que dicha práctica satisface varios objetivos relacionados con la medición para la optimización del proceso de desarrollo. La ICS es una buena opción para alcanzar dicho objetivo. Comparado con las ventajas, el costo de aplicar la ICS es bajo de acuerdo a la experiencia de John D. Musa[3]. Hay un costo de inversión de no más de 3 días equivalentes del personal por persona en una organización, que incluye un entrenamiento de dos días para cada uno y la planeación con un número mucho más pequeño. Los gastos reflejados en el proyecto varían típicamente a partir 0.1 a 3.0 por ciento de costo total del proyecto[3]. Cabe mencionar que el componente más grande del costo es el asociado al desarrollo del perfil de operación.


EL PROCESO DE LA CONFIABILIDAD DE SOFTWARE.
 El proceso de la ICS puede verse como un conjunto de actividades adicionales y complementarias a las ya realizadas dentro de cualquier proceso de desarrollo. Seis actividades definen el marco de trabajo de la ICS que son mostradas en la Figura 1 y descritas a continuación.
1. Definir el Producto. Puede verse como un complemento del Análisis de Requerimientos y Diseño Arquitectónico. En esta actividad se define quiénes son los clientes, usuarios, proveedores y otros sistemas relacionados.
2. Desarrollar el Perfil de Operación. Se define el conjunto completo de operaciones (i.e., tareas o funcionalidades lógicas principales del sistema) con su correspondiente probabilidad de ocurrencia o uso esperado. En esta etapa, la administración de los recursos toma un nivel cuantitativo basado en la importancia de cada operación del sistema. La Tabla 1 muestra un ejemplo parcial de un perfil de operación para un producto para la navegación en el Web.
3. Definir la Confiabilidad Adecuada. Se define lo que se considera como “falla” para el producto en desarrollo así como los medios para identificarla. Esta definición es crítica para el proceso y debe ser constante durante todo el ciclo de vida. La Tabla 2 muestra un ejemplo de clases de severidades de fallas y ejemplos de cada tipo de falla.
4. Preparar las Pruebas. Se definen los casos de prueba y los métodos de prueba a partir de la información de los perfiles operacionales y las estrategias de apoyo a la confiabilidad de software. Esta actividad puede integrarse con el proceso de pruebas del modelo de desarrollo que se tenga. Lo importante en esta etapa es la decisión de qué cosas se van a probar y qué datos se usaran en los casos de prueba.
5. Ejecutar las Pruebas. Se asignan los tiempos para las pruebas entre los sistemas, los tipos de prueba (i.e., características, carga y regresión) así como su ejecución.
6. Guiar las Pruebas. Se procesa la información obtenida en la ejecución de las pruebas para varios propósitos. El primero es monitorear el crecimiento de la confiabilidad del sistema (o la reducción de las intensidades de falla) mientras se van reparando los defectos encontrados que generaron las fallas. Otro propósito es el de poder determinar si es necesario seguir probando; finalmente, el tercero es el de dirigir la fase del liberación del producto. La Figura 2 muestra una gráfica típica usada para monitorear la reducción de las intensidades de falla.



11 comentarios:

  1. Este tema de Confiabilidad de Sw permite planear y guiar el proceso de la prueba del software de manera cuantitativa, su efectividad ha hecho que muchas empresas incorporen esta práctica en sus proyectos.

    ResponderEliminar
  2. La calidad, las fallas y la confiabilidad de Software
    La calidad es un atributo percibido por los usuarios o clientes de cualquier producto o servicio. En el caso de productos basados en software, la percepción de la calidad está en función de las fallas que el cliente percibe del mismo durante su operación.

    La confiabilidad es un atributo que mide el grado en que un producto opera sin fallas bajo condiciones establecidas por un periodo de tiempo determinado. La confiabilidad es un atributo cuantitativo que ha sido ampliamente analizado, estudiado y usado en otras industrias para caracterizar la calidad de los productos o servicios. En su concepción más general, la confiabilidad es un atributo que mide el grado en que un producto opera sin fallas bajo condiciones establecidas por un periodo de tiempo determinado.

    ResponderEliminar
  3. Cabe mencionar que se han documento más de 60 artículos reportando los resultados de la aplicación de la ICS en distintos proyectos.
    Dos elementos caracterizan la ICS: (1) el uso esperado relativo de las funcionalidades del sistema y (2) los requerimientos de calidad definidos por el cliente, que incluyen la confiabilidad, la fecha de liberación y costo del ciclo de vida del proyecto.
    El primer elemento (1) se centra en caracterizar de manera cuantitativa el uso esperado del sistema mediante la definición del llamado perfil de operación del sistema. Esta caracterización cuantitativa permite optimizar el uso de los recursos en las funciones que tengan un mayor impacto y mayor uso esperado dentro
    del sistema.
    La confiabilidad es un atributo que mide el grado en que un producto opera sin fallas bajo condiciones establecidas por un periodo de tiempo determinado. La confiabilidad es un atributo cuantitativo que ha sido ampliamente analizado, estudiado y usado en otras industrias para caracterizar la calidad de los productos o servicios. En su concepción más general, la confiabilidad es un atributo que mide el grado en que un producto opera sin fallas bajo condiciones establecidas por un periodo de tiempo determinado.

    ResponderEliminar
  4. La confiabilidad del software es la funcionabilidad o el buen funcionamiento que tendrá el software para ser usado que tenga las características necesarias para llevar a cabo su trabajo de la manera más correcta posible trata de probar el software para poder mejorarlo trata de analizar posibles errores otras funciones que se le pueda dar entre otros cosas que tengan que ver con el desempeño del software

    ResponderEliminar
  5. Es una práctica cuantitativa que debe ser planteada en diferentes modelos de desarrollo ,se puede ver también como un practica de bajo costo ,la confiabilidad es una característica que nos permite revisar las cualidades y por medio de la cuantitativo podemos contarlo, la confiabilidad del software no es algo nuevo, se origina en los 70,muchas empresas los incorporaron en sus proyectos, existe dos elementos que caracterizan la confiabilidad del software: el primero es el uso relativo de las funcionalidades ,se centra en la forma cuantitativa,refiriendoce a los recursos del sistema, la segundad habla sobre calidad de los requerimientos bien definidos, además de que nos habla del enfoque del cliente con el objetivos de mejoras y buenos resultados, la confiabilidad puede verse como un proceso, dónde entra la generación del producto, desarrolló de la operación, confiabilidad adecuada,pruebas,ejecución esta serie de procesos tienen cierto tiempo para su elaboración.

    ResponderEliminar
  6. Practica cuantitativa que puede ser implementada en organizaciones de cualquier tamaño bajo distintos modelos de desarrollo, dicho en otras palabras es decir que tanto les a servido el software, como les a servido el software etc.
    Características de la CS (Confiabilidad de Software)
    1. El uso de esperado de las funcionalidades.
    2. Los requerimientos de calidad.
    Elementos
    1. Unificación.
    2. Establecer objetivos cliente – diseñadores, programadores. etc.
    La confiabilidad es buen partido no requiere el cambio en la arquitectura, diseño o código sino solo la evolución del mismo.
    Seis procesos para la confiabilidad del producto.
    1. Definir el producto.
    2. Desarrollar el perfil del producto.
    3. Definir la confiabilidad adecuada.
    4. Preparar las pruebas.
    5. Ejecutar las pruebas
    6. Cuidar las pruebas.

    ResponderEliminar
  7. Es una práctica cualitativa que puede ser implementada en organizaciones de cualquier tamaño a desarrollar. Esto nos permite la confianza del software en su utilización. Elementos característicos:
    • El uso esperado relativo en su funcionalidad
    • Los requerimientos de calidad del cliente.
    En el cual una característica primordial es sus principales características del software. Existen procesos para la confiabilidad:
     Definir el producto
     Desarrollar el perfil de operación
     Definir la confiabilidad adecuada
     Preparar las pruebas
     Ejecutar las pruebas
     Guiar las pruebas

    ResponderEliminar
  8. Es un tema de mucha importancia "LA CONFIABILIDAD DEL SOFTWARE" Ya que en cualquier empresa siempre se toman las decisiones respecto a el costo y el tiempo para medir su impacto en la calidad del software, por lo que nos damos cuenta que este debe ser confiable siempre ya que un sistema no confiable pues no funciona para la empresa, ya que debe demostrar dicha inversión.

    Vemos que la confiabilidad del SW es una práctica que permite planear y guiar el proceso de la prueba del software de manera cuantitativa; por lo que nos damos cuenta que pues es una evaluación durante la el ciclo de vida del SW, y principalmente en la etapa de pruebas.

    Y pues esto conlleva a un proceso que despliega una serie de pasos:
    1. Definir el Producto.
    2. Desarrollar el Perfil de Operación.
    3. Definir la Confiabilidad Adecuada.
    4. Preparar las Pruebas.
    5. Ejecutar las Pruebas.
    6. Guiar las Pruebas.

    ResponderEliminar
  9. La confiabilidad del software es muy importante ya que las organizaciones que desarrollan productos basados en software requieren de prácticas efectivas que permitan mejorar la calidad del producto. La Ingeniería de la Confiabilidad de Software es una práctica cuantitativa que puede ser implementada en organizaciones de cualquier tamaño bajo distintos modelos de desarrollo.Las organizaciones des arrolladoras de productos basados en software destinan grandes cantidades de recursos para mejorar la calidad de sus productos. Una parte de dichos recursos se utiliza para la adopción de mejores prácticas.

    ResponderEliminar
  10. La confiabilidad es un atributo que mide el grado en que un producto opera sin fallas bajo condiciones establecidas por un periodo de tiempo determinado. La confiabilidad es un atributo cuantitativo que ha sido ampliamente analizado, estudiado y usado en otras industrias para caracterizar la calidad de los productos o servicios. En su concepción más general, la confiabilidad es un atributo que mide el grado en que un producto opera sin fallas bajo condiciones establecidas por un periodo de tiempo determinado.

    ResponderEliminar
  11. La confiabilidad en el software, basicamente detecto dos aspectos importantes en este tema, estos aspectos que resalto son los siguientes:

    Costo y tiempo. Debemos ser muy claros en estos dos aspectos ya que son de suma importancia en la confiabilidad del software ya que es uno de los atributos que opera sin fallas dentro del sistema utilizando un tiempo determinado y seguro dentro del mismo.

    Como ultimo comentario sobre este tema tengo que todo lo antes visto dentro del tema nos deja una clara explicasio de los aspectos a considerar en el desarrollo de un sistema, tomando las medidas adecuadas para su funcionamiento y la calidad de sus productos.

    ResponderEliminar