domingo, 31 de agosto de 2014

TAREA 2

Introducción

Hoy en día la calidad de un producto se traduce en ahorro de mantenimiento y una mejora general. Hablar de calidad de software implica la necesidad de establecer parámetros que nos permitan establecer los niveles mínimos que un producto de este tipo debe de alcanzar para que se considere de calidad (Abud Figueroa María Antonieta, 2010). En este ámbito se han realizado muchos intentos para estandarizar los mecanismos de calidad, en el siguiente trabajo se expondrá uno de los mas importantes: La Norma ISO-9126.

Desarrollo

Antes de definir a la norma ISO 9126, es preciso definir el significado de calidad. El concepto técnico de calidad representa más bien una forma de hacer las cosas en las que, fundamentalmente, predominan la preocupación por satisfacer al cliente y por mejorar, día a día, procesos y resultados (Fernández Hatre, A.,2002). Este concepto a evolucionado hasta convertirse en una política de mejora continua que abarca a todos los niveles de una organización.


ISO 9126 es un estándar internacional para la evaluación de la calidad del software. Este contempla seis categorías con las cuales se puede evaluar un programa. Estas categorías son las siguientes:

  • Funcionalidad: En esta característica se evalúa si el software cumple con las funciones que satisfagan el motivo de su creación. Para este atributo se establecen los siguientes atributos:
    • Adecuación: Mide si el software cuenta con los recursos adecuados para cumplir las funciones especificadas en su creación.
    • Exactitud: Permite evaluar si el software presenta resultados acorde con los especificados.
    • Interoperabilidad: Permite evaluar la capacidad del software de interactuar con otros sistemas, previamente especificados.
    • Conformidad: Evalúa si el software se atiene a estándares similares.
    • Seguridad: La capacidad que tiene el software de prevenir el acceso no autorizado.

  • Confiabilidad: Este apartado comprende un conjunto de atributos, que permiten evaluar si el software puede desempeñarse adecuadamente en situaciones normales y bajo un tiempo establecido. Sus atributos son los siguientes:
    • Nivel de madurez: Permite medir con que frecuencia falla el software.
    • Tolerancia a fallas: Se refiere a la capacidad de mantener su funcionalidad a pesar de que ocurran fallas.
    • Recuperación: La capacidad de restablecer el nivel de operación y recobrar datos dañados.

  • Usabilidad: Consiste en un conjunto de atributos, para medir con que tanto esfuerzo el usuario puede usar el sistema. Sus atributos son los siguientes:
    • Comprensibilidad: Se refiere a que tan rápido los usuarios entienden los conceptos relativos a la aplicación del software.
    • Facilidad de aprender: Establece que tan rápido se puede aprender a usar la aplicación.
    • Operabilidad: Evalúa los conceptos que hacen alución a como opera el sistema.

  • Eficiencia: Esto permite evaluar la relación entre el funcionamiento del software contra la cantidad de recursos que utiliza. Sus atributos son:
    • Comportamiento con respecto al tiempo: Esto es relativo al tiempo de procesamiento de los datos y los tiempos de respuesta.
    • Comportamiento con respecto a recursos: La cantidad de recursos usados y su cantidad de tiempo.

  • Mantenibilidad: Se refiere a la dificultad que se tiene para hacer cambios en el software, ya sea para correccion de errores o por el incremento de funcionalidad. Sus atributos son:
    • Capacidad de analisis: Capacidad que se tiene para diagnosticar fallas en el software.
    • Capacidad de modificacion: Mide el esfuerzo necesario para modificar aspectos del software.
    • Estabilidad: Permite evaluar los riesgos de efectos inesperados.
    • Facilidad de prueba: Se refiere al esfuerzo necesario para validar el software una vez que fue modificado.

  • Portabilidad: Es la capacidad que tiene el software de ser transferido de un ambiente a otro. Sus atributos son los siguientes:
    • Adaptabilidad: Evalúa la oportunidad del software para adaptarse a diferentes ambientes sin la necesidad de sufrir cambios.
    • Facilidad de instalación: Es el esfuerzo necesario para adaptar el software a un ambiente determinado.
    • Conformidad: Permite evaluar si el software se adiere a estándares de portabilidad.
    • Capacidad de reemplazo: Se refiere al esfuerzo para sustituir le software y remplazarlo por otro con funciones similares.


Conclusión

El mundo globalizado exige cada vez la aplicación de estándares internacionales que garanticen la calidad de los productos. Por esta razón, es necesario que tofo aquel que se dedica a la creación de software incluya en sus procesos, estándares de calidad que permitan certificarse en alguno de los modelos.

Fuentes

Abud Figueroa María Antonieta. (2010). Calidad en la Industria del Software. La Norma ISO-9126. 2014, de Instituto Politécnico Nacional Sitio web: http://www.repositoriodigital.ipn.mx/bitstream/handle/123456789/5321/34-2.pdf?sequence=2

Fernández Hatre, A.. (2002). Manual y procedimientos de un sistema de calidad ISO 9001-2000.. 2014, de Instituto de Fomento Regional Sitio web: http://www.apmarin.com/download/691_cal1.pdf

sábado, 23 de agosto de 2014

TAREA 1

Introducción

La ingeniería de pruebas pertenece a una rama de la informática orientada a brindar y aplicar conceptos básicos con respecto a la calidad del software. Tiene una gran importancia, ya que es capaz de prevenir futuras fallas en el sistema. En el siguiente trabajo se presentaran algunos conceptos fundamentales para introducirnos a la ingería de pruebas.


Desarrollo

  • Prueba: Una prueba es un examen o experimentación con el fin de descubrir el buen funcionamiento de una cosa o ente. En el caso del software, es el proceso de ejecución que tiene como intención descubrir errores. Un buen caso de prueba es aquel que tiene una probabilidad muy alta de descubrir un nuevo error (A. Goñi, J.R. Zubizarreta, 2007). Según este concepto, se puede decir que las pruebas de software, no pueden usarse para demostrar la ausencia de defectos, solo pueden mostrar que existen errores en el programa. Se dice que una prueba tiene éxito cuando descubre un nuevo error (A. Goñi, J.R. Zubizarreta, 2007).

  • Ingeniería de Pruebas: Una ingeniería es el arte de aplicar conocimientos técnicos y científicos para la invencion o perfeccionamiento de métodos. Entonces la ingeniería de pruebas cociste en aplicar diversas tecnicas para examinar diversas características en un software, como lo son: concisión, integridad, facilidad de uso, facilidad de mantenimiento, consistencia, estandarización de los datos, etc. (F.Javier Zarazaga Soria, 2008).

  • Ciclo de vida del Software: El ciclo de vida del software se puede definir como: el proceso que se sigue para construir, entregar y hacer evolucionar el software, desde la concepción de una idea hasta la entrega y el retiro del sistema (Rubby Casallas, Andrés Yie, 2004). Las etapas del ciclo de vida del software son las siguientes:
    • Requerimientos
    • Diseño
    • Desarrollo
    • Implementación
    • Pruebas
    • Mantenimiento
    Existen diversos modelos para representar este proceso, uno de los mas famosos es el modelo de cascada, la siguiente imagen lo ejemplifica mejor:





















  • Etapa de Pruebas: Es la etapa mas costosa del ciclo de vida del software, debido a que es en este punto en el que hay que poner a prueba cada elemento del programa como: especificaciones de requisitos, casos de uso, diagramas de diversos tipos y, por supuesto, el código fuente y el resto de productos que forman parte de la aplicación (A. Goñi, J.R. Zubizarreta, 2007).  Existen diversos tipos de pruebas,  a continuación se nombraran las mas importantes:
    • Pruebas de caja negra: Este tipo de prueba se centra en los requisitos funcionales del software y permite obtener entradas que prueben todos los flujos de una funcionalidad (casos de uso). 
    • Pruebas de caja blanca: Consiste en realizar pruebas para verificar que líneas específicas de código funcionan tal como esta definido.
    • Pruebas de unidad: Usan la descripción del diseño detallado como guía, se prueban los caminos de control importantes con el fin de descubrir errores dentro del ámbito del módulo.
    • Prueba de integración: El objetivo es coger los módulos probados en la prueba de unidad y construir una estructura de programa que esté de acuerdo con lo que dicta el diseño.
    • Prueba de resistencia: Enfrenta a los programas a situaciones anormales.
    • Prueba de rendimiento: Prueba el rendimiento del software en tiempo de ejecución.
    • Prueba de validación: Proporciona una seguridad final de que el software satisface todos los requerimientos funcionales y de rendimiento.


Conclusión

La ingeniería de pruebas es un proceso muy importante dentro del ciclo de vida del software, sin mencionar uno de los mas caros, ya que esta orientada a aplicar diversas técnicas o pruebas, para medir características especificas de la aplicación, y así, evitar posibles fallas que puedan tener repercusiones grandes. 


Fuentes

A. Goñi, J.R. Zubizarreta. (2007). Evaluación/Pruebas del Software. 2014, de Facultad de Informática UPV/EHU Sitio web: http://siul02.si.ehu.es/~alfredo/iso/Tema3.pdf

F.Javier Zarazaga Soria. (2008). Introducción a la ingeniería del software. 2014, de Universidad de Zaragoza Sitio web: http://webdiis.unizar.es/~zarazaga/workPage/docencia/ingSoft1/trasparencias/is1_01.pdf

Rubby Casallas, Andrés Yie. (2004). Ingeniería de software Ciclos de vida y metodologias. 2014, de Universidad de los Andes Sitio web: http://sistemas.uniandes.edu.co/~isis2603/dokuwiki/lib/exe/fetch.php?media=principal:isis2603-modelosciclosdevida.pdf