martes, 12 de marzo de 2013

AUTOEVALUACION DE MI BLOG

Este blog fue creado con el objetivo de compartir los conocimientos que hacen parte del curso Evaluación de Software identificado con el código No. 301569 - 8. Curso liderado por el tutor especialista Francisco Nicolás Solarte.

Blog es una de las herramientas didácticas que ofrece la web para compartir información y conocimiento de interés de un grupo. Personalmente considero que más que una herramienta es un recurso educativo que permite que nuestro aprendizaje sea mucho más dinámico y activo.

En cuanto al contenido he creado unas entradas con información que hacen parte del módulo Evaluación de Software; el cual fue escrito por el tutor, ingeniero y especialista Francisco Nicolás Solarte. Los vídeos e imágenes que hacen parte de este blog; se encuentran en la web.

Considero que aplique mi mejor esfuerzo para cumplir con lo solicitado por el tutor en la guía de reconocimiento; además es una herramienta que ofrece la opción de continuar aportando conocimientos de interés a un grupo o comunidad.


INTRODUCCION


La evaluación de software en la actualidad es uno de los elementos que debe ser tenido en cuenta en el proceso de construcción de un producto software, como también, en el producto terminado. La evaluación del producto software es la garantía que debe brindar el fabricante de que su producto cumple con las normas de calidad

Internacionales para estos productos tan especiales. Además la evaluación de productos software contribuye al mejoramiento de los procesos en la empresa, ya que, permite la verificación y validación de todas y cada una de las características del producto no importando así se trate de una aplicación pequeña o compleja.


JUSTIFICACION

Actualmente cada uno de los productos de software que salen comercialmente al mercado deben garantizar al menos el cumplimiento de normas estándares de calidad que permitan a los usuarios determinar el grado de eficiencia, eficacia y confiabilidad de estos productos. Y una de las funciones encomendadas a los ingenieros es la de evaluar los productos software y determinar cuál de ellos es el más apropiado para la organización o para uno de los procesos dentro de ella.

METODOLOGÍA TÉCNICA PARA LA EVALUACIÓN DE SOFTWARE


La metodología para evaluación técnica de software considera una serie de pasos que deben ser tenidos en cuenta cuando se trata de realizar este proceso tan complejo, por eso es necesario que se conozcan y se haga el seguimiento de ellos para realizar una buena evaluación del producto.

Dentro de los estándares de calidad más utilizados está el estándar definido por la ISO/IEC 9126 el cual toma en consideración la evaluación de las características internas, externas y de calidad en uso. A su vez cada una de las características se divide en subcaracterísticas que se pueden definir y a las cuales se les puede establecer unas métricas, pruebas y escalas de medición que permitan establecer una valoración para el producto en la característica que haya sido elegida.

MODELOS TRADICIONALES DE EVALUACIÓN DE LA CALIDAD DEL SOFTWARE



Cuando se trata de evaluar la calidad de un producto software hay que tener en cuenta que la calidad es un concepto muy complejo y que, además, depende mucho del punto de vista que se adopte. La evaluación se basa en la descomposición del concepto genérico de calidad en propiedades más sencillas de medir y evaluar. Este tipo de descomposición recibe el nombre de modelo de calidad. Los modelos de calidad más conocidos y utilizados han sido los de Boehm y McCall.


Modelos y métricas para evaluar la calidad del software

http://sedici.unlp.edu.ar/bitstream/handle/10915/19762/Documento_completo.pdf?sequence=1

Factores y métricas de la calidad del software(McCall)



NORMA DE EVALUACIÓN ISO/IEC 9126

CALIDAD DEL SOFTWARE

Esta norma Internacional fue publicada en 1992, la cual es usada para la evaluación de la calidad de software, llamado “Information technology-Software product evaluation-Quality characteristics and guidelines for their use”; o también conocido como ISO 9126 (o ISO/IEC 9126). Este estándar describe 6 características generales: Funcionalidad, Confiabilidad, Usabilidad, Eficiencia, Mantenibilidad, y Portabilidad.

 La norma ISO/IEC 9126 permite especificar y evaluar la calidad del software desde diferentes criterios asociados con adquisición, requerimientos, desarrollo, uso, evaluación, soporte, mantenimiento, aseguramiento de la calidad y auditoria de software. Los modelos de calidad para el software se describen así:

 Calidad interna y externa: Especifica 6 características para calidad interna y externa, las cuales, están subdivididas. Estas divisiones se manifiestan externamente cuando el software es usado como parte de un sistema Informático, y son el resultado de atributos internos de software.

Calidad en uso: Calidad en uso es el efecto combinado para el usuario final de las 6 características de la calidad interna y externa del software. Especifica 4 características para la calidad en uso.

Al unir la calidad interna y externa con la calidad en uso se define un modelo de evaluación más completo, se puede pensar que la usabilidad del modelo de calidad externa e interna pueda ser igual al modelo de calidad en uso, pero no, la usabilidad es la forma como los profesionales interpretan o asimilan la funcionabilidad del software y la calidad en uso se puede asumir como la forma que lo asimila o maneja el usuario final. Si se unen los dos modelos, se puede definir que los seis indicadores del primer modelo tienen sus atributos y el modelo de calidad en uso sus 4 indicadores pasarían hacer sus atributos, mirándolo gráficamente quedaría así:

Norma de Evaluación ISO/IEC 9126

 
Se establecen categorías para las cualidades de la calidad externa e interna y calidad en uso del software, teniendo en cuenta estos 7 indicadores (funcionalidad, confiabilidad, utilidad, eficiencia, capacidad de mantenimiento, portabilidad y calidad en uso), que se subdividen a su vez en  varios indicadores; estas se pueden medir por métrica interna o externa.

 
Evaluación Interna, externa y Calidad de Uso ISO/IEC 9126

 
 Las definiciones se dan para cada característica y subcaracterística de calidad del software que influye en la calidad. Para cada característica y subcaracterística, la capacidad del software es determinada por un conjunto de atributos internos que pueden ser medidos. Las características y subcaracterísticas se pueden medir externamente por la capacidad del sistema que contiene el software.


FUNCIONALIDAD

Funcionalidad es la capacidad del software de cumplir y proveer las funciones para satisfacer las necesidades explícitas e implícitas cuando es utilizado en condiciones específicas. A continuación se muestra la característica de Funcionalidad y las subcaracterísticas que cubre:

 
Característica de funcionalidad

 
La funcionalidad se divide en 5 criterios:

Adecuación: La capacidad del software para proveer un adecuado conjunto de funciones que cumplan las tareas y objetivos especificados por el usuario.

 Exactitud: La capacidad del software para hacer procesos y entregar los resultados solicitados con precisión o de forma esperada.

Interoperabilidad: La capacidad del software de interactuar con uno o más sistemas específicos.

Seguridad: La capacidad del software para proteger la información y los datos de manera que los usuarios o los sistemas no autorizados no puedan acceder a ellos para realizar operaciones, y la capacidad de aceptar el acceso a los datos de los usuarios o sistemas autorizados

Conformidad de la funcionalidad: La capacidad del software de cumplir los estándares referentes a la funcionalidad.

CONFIABILIDAD

La confiabilidad es la capacidad del software para asegurar un nivel de funcionamiento adecuado cuando es utilizando en condiciones específicas. En este caso al confiabilidad se amplia sostener un nivel especificado de funcionamiento y no una función requerida.
Característica de Confiabilidad

 La confiabilidad se divide en 4 criterios:

Madurez: La capacidad que tiene el software para evitar fallas cuando encuentra errores. Ejemplo, la forma como el software advierte al usuario cuando realiza operaciones en la unidad de diskett vacia, o cuando no encuentra espacio suficiente el disco duro donde esta almacenando los datos.

 Tolerancia a errores: La capacidad que tiene el software para mantener un nivel de funcionamiento en caso de errores.

 Recuperabilidad: La capacidad que tiene el software para restablecer su funcionamiento adecuado y recuperar los datos afectados en el caso de una falla.

 Conformidad de la fiabilidad: La capacidad del software de cumplir a los estándares o normas relacionadas a la fiabilidad.

 USABILIDAD

La usabilidad es la capacidad del software de ser entendido, aprendido, y usado en forma fácil y atractiva. Algunos criterios de funcionalidad, fiabilidad y eficiencia afectan la usabilidad, pero para los propósitos de la ISO/IEC 9126 ellos no clasifican como usabilidad. La usabilidad está determinada por los usuarios finales y los usuarios indirectos del software, dirigidos a todos los ambientes, a la preparación del uso y el resultado obtenido.

 Característica de Usabilidad

 La usabilidad se divide en 5 criterios:

Entendimiento: La capacidad que tiene el software para permitir al usuario entender si es adecuado, y de una manera fácil como ser utilizado para las tareas y las condiciones particulares de la aplicación. En este criterio se debe tener en cuenta la documentación y de las ayudas que el software entrega.

Aprendizaje: La forma como el software permite al usuario aprender su uso. También es importante considerar la documentación.

 Operabilidad: La manera como el software permite al usuario operarlo y controlarlo.

 Atracción: La presentación del software debe ser atractiva al usuario. Esto se refiere a las cualidades del software para hacer más agradable al usuario, ejemplo, el diseño gráfico.

Conformidad de uso: La capacidad del software de cumplir los estándares o normas relacionadas a su usabilidad.
 

EFICIENCIA

La eficiencia del software es la forma del desempeño adecuado, de acuerdo a al número recursos utilizados según las condiciones planteadas. Se debe tener en cuenta otros aspectos como la configuración de hardware, el sistema operativo, entre otros.

 Característica de Eficiencia
 
La eficiencia se divide en 3 criterios:

 Comportamiento de tiempos: Los tiempos adecuados de respuesta y procesamiento, el rendimiento cuando realiza su función en condiciones específicas. Ejemplo, ejecutar el procedimiento más complejo del software y esperar su tiempo de respuesta, realizar la misma función pero con más cantidad de registros.

Utilización de recursos: La capacidad del software para utilizar cantidades y tipos adecuados de recursos cuando este funciona bajo requerimientos o condiciones establecidas. Ejemplo, los recursos humanos, el hardware, dispositivos externos.

Conformidad de eficiencia: La capacidad que tiene el software para cumplir con los estándares o convenciones relacionados a la eficiencia.

CAPACIDAD DE MANTENIMIENTO

 La capacidad de mantenimiento es la cualidad que tiene el software para ser modificado. Incluyendo correcciones o mejoras del software, a cambios en el entorno, y especificaciones de requerimientos funcionales.


 Característica de Mantenimiento
El mantenimiento se divide en 5 criterios:

Capacidad de ser analizado: La forma como el software permite diagnósticos de deficiencias o causas de fallas, o la identificación de partes modificadas.

Cambiabilidad: La capacidad del software para que la implementación de una modificación se pueda realizar, incluye también codificación, diseño y documentación de cambios.

Estabilidad: La forma como el software evita efectos inesperados para modificaciones del mismo.

Facilidad de prueba: La forma como el software permite realizar pruebas a las modificaciones sin poner el riesgo los datos.

Conformidad de facilidad de mantenimiento: La capacidad que tiene el software para cumplir con los estándares de facilidad de mantenimiento.

Portabilidad

La capacidad que tiene el software para ser trasladado de un entorno a otro.

Característica de portabilidad

La usabilidad se divide en 5 criterios:

 Adaptabilidad: Es como el software se adapta a diferentes entornos especificados (hardware o sistemas operativos) sin que implique reacciones negativas ante el cambio. Incluye la escalabilidad de capacidad interna (Ejemplo: Campos en pantalla, tablas, volúmenes de transacciones, formatos de reporte, etc.).

 Facilidad de instalación: La facilidad del software para ser instalado en un entorno específico o por el usuario final.

 Coexistencia: La capacidad que tiene el software para coexistir con otro o varios software, la forma de compartir recursos comunes con otro software o dispositivo.

Reemplazabilidad: La capacidad que tiene el software para ser remplazado por otro software del mismo tipo, y para el mismo objetivo. Ejemplo, la remplazabilidad de una nueva versión es importante para el usuario, la propiedad de poder migrar los datos a otro software de diferente proveedor.

Conformidad de portabilidad: La capacidad que tiene el software para cumplir con los estándares relacionados a la portabilidad.

CALIDAD EN USO

Calidad en uso es la calidad del software que el usuario final refleja, la forma como el usuario final logra realizar los procesos con satisfacción, eficiencia y exactitud. La calidad en uso debe asegurar la prueba o revisión de todas las opciones que el usuario trabaja diariamente y los procesos que realiza esporádicamente relacionados con el mismo software.


Característica Calidad de uso

La calidad de uso se divide en 4 criterios:

Eficacia: La capacidad del software para permitir a los usuarios finales realizar los procesos con exactitud e integridad.

Productividad: La forma como el software permite a los usuarios emplear cantidades apropiadas de recursos, en relación a la eficacia lograda en un contexto específico de uso. Para una empresa es muy importante que el software no afecte al productividad del empleado

 Seguridad: Se refiere al que el Software no tenga niveles de riesgo para causar daño a las personas, instituciones, software, propiedad intelectual o entorno. Los riesgos son normalmente el resultado de deficiencias en la funcionalidad (Incluyendo seguridad), fiabilidad, usabilidad o facilidad de mantenimiento.

 Satisfacción: La satisfacción es la respuesta del usuario a la interacción con el software, e incluye las actitudes hacia el uso del mismo. A continuación se describe un cuadro donde podemos resumir las características y cada uno de sus atributos, este cuadro le ayudara a visualizar el proceso de evaluación.

PROCESO DE EVALUACIÓN DE SOFTWARE



 
El proceso de evaluación de software se inicia con una visión cualitativa y deriva en una evaluación cuantitativa, siendo todo el proceso documentado y cumpliendo los siguientes pasos:

Estado del Software

 Que se refiere al conocimiento del el estado del software, estableciendo si se trata de un desarrollo sin terminar o un producto terminado para la entrega al cliente.

 Identificar el tipo de software

Donde se debe especificar el tipo de software a evaluar, si es un sistema operativo, software de seguridad, software de ofimática, lenguaje de programación, base de datos, aplicativo a la medida, entre otros.

 Perfiles de Evaluadores

Teniendo como marco conceptual al estándar ISO/IEC9126, se consideran tres perfiles de usuario, a un alto nivel de abstracción para desarrollo de software, usuarios finales, desarrolladores, y gerentes. El estándar afirma que la relativa importancia de las características de calidad varía dependiendo del punto de vista considerado y de la crítica de los componentes del software a evaluar.

La visión del usuario final, concierne al interés de los mismos en usar el software, como así también su performance, su eficiencia, su facilidad de uso, entre otros aspectos. Los usuarios finales no están interesados en características internas o de desarrollo del software.

La visión de calidad del desarrollador debe considerar no sólo los requerimientos del software para la visión del usuario sino también la calidad para los desarrollos intermedios resultantes de las actividades de la fase de desarrollo.

Se debe tener en cuenta que los desarrolladores están preocupados en características de calidad del software como mantenibilidad y portabilidad.

La visión de calidad del gerente es una visión integradora, que incorporar requerimientos de negocio a las características individuales. Ejemplo, un gerente está interesado en el equilibrio entre la mejora del software y los costos y tiempos establecidos.

MÉTRICAS EXTERNAS BASADOS EN ISO/IEC 9126

Norma ISO 9126