domingo, 31 de agosto de 2014

Calidad y la norma ISO 9126

Introducción

La calidad es una parte muy importante del desarrollo de pruebas ya que es un indicador de que tan satisfactorio es un software y que tan bien hecho esta. Una herramienta para hacer esto es la norma ISO 9126 ya que es un estándar con el cual se evalúa la calidad del software, esta norma ISO tiene diversas características.

Desarrollo

Calidad

Podemos definir a la calidad como las propiedades con las que juzgamos el valor de algún objeto o servicio. Aplicado al desarrollo de software podemos decir que es el que tan bueno es dicho software.

Norma ISO 9126

Es un estándar internacional el cual evalúa la calidad del software. Y como se ha dicho antes tiene diversas características y características.
  • Funcionalidad: Es proporcionar las acciones que se requieren en base a especificaciones y requerimientos.
    • Adecuación: Es proporcionar las funciones que se requieren de acuerdo a los objetivos que se necesitan cumplir.
    • Exactitud: Es proporcionar la información o resultados que se solicitan con una gran precisión.
    • Interoperabilidad:  Que tan fluido interactúa el programa con otros sistemas.
    • Seguridad: Es el que tanto protege el sistema los datos e información de los usuarios para que estos no sean modificados o leídos.
  • Fiabilidad: Es la probabilidad para que el programa funcione bien.
    • Madurez: Que tan bien hecho esta hecho el software para evitar fallas.
    • Tolerancia a fallos: La facilidad con la que el software se recupera después de que presente un fallo.
    • Capacidad de recuperación: La habilidad para que el software recupere los datos afectados después de un fallo.
  • Usabilidad: Está conformada por características como el que tan atractivo es el software y que tan fácil se puede entender usar o aprender.
    • Capacidad para ser entendido: La rapidez con la que el usuario aprende a utilizar el programa y lo que este hace.
    • Capacidad para ser aprendido: La facilidad con la que el usuario puede memorizar la funcionalidad del software.
    • Capacidad para ser operado: Que tan fácil es de usar el programa.
    • Capacidad de atraccion:o   Es el que tan atractivo le parece a el usuario.
  • Eficiencia: Es la utilización correcta de los recursos con los que cuenta el programa.
    • Comportamiento temporal: Es el tiempo que tarda en responder el programa.
    • Utilización de recursos:  La fluidez con la que el software realiza acciones con los recursos que se le proporcionan.
  • Mantenibilidad: La facilidad con la que el software puede ser modificado.
    • Capacidad para ser analizada: La facilidad con la que se puede hacer un análisis al software, esto se hace mediante pruebas.
    • Capacidad para ser cambiado: La sencillez con la que se puede realizar modificaciones a un programa.
    • Estabilidad: Se refiere a que el software no sufra daños después de recibir mantenimiento o cambios.
    • Capacidad para ser probado: Que después de que el software sea modificado pueda ser validado.
  • Portabilidad
    • Adaptabilidad: La facilidad con la que se adapta un software a distintas plataformas, sin la necesidad de acciones externas al dicho programa.
    • Instalabilidad: La facilidad del programa para ser instado bajo condiciones especificas.
    • Coexistencia: Es la capacidad que tiene el software para trabajar en conjunto con otro.
    • Capacidad para remplazar: Es la capacidad de un software para remplazar a otro.

Conclusión

Si se aplica de una buena todas estas características en la evaluación del software podremos hacer que el proyecto a desarrollar sea un éxito y tenga la mayor aceptación posible gracias a su buen funcionamiento y todas las características que estén presentes.
Pero algo importante a resaltar es que todo esto es relativo, esto quiere decir que cada persona puede definir por sí mismo estas características y las puede entender como ella pueda.

Fuentes

Fairley, Richard. Ingeniería de Software, 2ª Edición. Editorial Mc Graw Hill. México. 1987


Abud Maria. (2000). Calidad en la Industria del Software. La Norma ISO-9126. Agosto 30, 2014, de Universidad Nacional de La Plata Sitio web: http://recursosbiblioteca.utp.edu.co/tesisd/textoyanexos/0053L864e_anexo.pdf

domingo, 24 de agosto de 2014

Ingerieria de pruebas y el ciclo de vida del software

Introducción

Los siguientes temas hacen referencia a la ingeniería de pruebas de software, lo cual es fundamental para el desarrollo de un proyecto el cual se realiza mediante la implementación del ciclo de vida del software principalmente usando el llamado modelo de cascada.
Este modelo consta de 5 niveles; pero se profundizara en el nivel de pruebas y todo lo que representa.

Desarrollo

Prueba.

Una prueba es la razón, argumento, instrumento u otro medio con que se pretende mostrar y hacer patente la verdad o falsedad de algo. (Real Academia Española, 2001). Si esto lo aplicamos al desarrollo de un programa podemos decir que una prueba es una técnica que implica la ejecución del programa mediante la cual podemos conocer la calidad y con ello mejorar el producto detectando fallas o problemas. (Carlos Blanco Bueno, 2007).

Ingeniería de pruebas. 

Una ingeniería es la especialización en la ejecución de ciertas aplicaciones de la ciencia en base a conocimientos científicos amplios y diversos. (Louis de Broglie, 1958). Debido a que la programación y el desarrollo de software se están convirtiendo en toda una ciencia y en base a la definición de prueba, podemos decir que la ingeniería de pruebas es la mejora de un software o el mantenimiento de este, con la ayuda de la detección de errores que pueda contener este y esta detección se realiza con un conocimiento antes adquirido.

Ciclo de vida del software. 

El ciclo de vida del software es una estructura guía, abstracciones, marcos del proceso que pueden se extendidos y adaptados para crear procesos más específicos.(Lorena Castañeda Bueno, 2010). La idea central de todo esto es que un proyecto tenga éxito. Hay distintos tipos de modelos que podemos usar como el modelo de cascada, el lineal y el de espirar pero todos comparten las siguientes etapas:
  • Especificación del software: Son los requerimientos funcionales, no funcionales y de sistema. Es el ¿Qué vamos hacer?
  • Diseño del software: Aquí definimos el como vamos hacer el proyecto.
  • Implementacion: Es la codificación.
  • Pruebas: Como lo hemos dicho antes es el encontrar errores y mejorar el sistema.
  • Mantenimiento: Es la corrección de los errores encontrados en la etapa de pruebas.

Modelo lineal:



Modelo de espiral:



Modelo de cascada:

Tipos de prueba de software

  • Prueba de caja blanca: Se basa en la detección de los errores lógicos que se pueden presentar, por ejemplo, se tienen que probar todas las posibilidades lógicas de cada modulo ademas de llevar al limite bucles con sus limites operacionales.operacionales. También se buscan los errores topográficos
  • Prueba de caja negra: Esta prueba se centra en los requisitos funcionales del programa. Por ejemplo: que no cuente con las funciones que debería, errores de rendimiento, errores en la interfaz o errores en la ejecución y terminación.
  • Prueba basada en requerimientos: Las pruebas basadas en requerimientos son una aproximación sistemática al diseño de casos de prueba en donde el usuario considera cada requerimiento y deriva un conjunto de pruebas de cada uno. (Sommerville, 2005).
  • Pruebas de aceptación: Pruebas realizadas por los usuarios con el fin de saber si el sistema esta listo para ser implantado. Son las versiones betas o alfas de algún software.
  • Pruebas de integración: Es tomar todos los componentes desarrollados e integrarlos para formar el sistema con el fin de observar el diseño y la arquitectura de este.

Conclusión

Las pruebas dentro del desarrollo de un proyecto son la parte más importante durante la elaboración de este, ya que no importa que tan bueno seas programando siempre cometerás errores por lo que es indispensable aplicar una etapa de pruebas durante el desarrollo del software para que el proyecto se concluya con éxito y para esto debemos conocer todos los conceptos antes mencionados y lo mas importante saberlos aplicar como buen ingeniero.

Fuentes

Ruiz R. (2010). Las pruebas de software y su importancia en las organizaciones. Agosto 24, 2014, de Universidad Veracruzana Sitio web: http://cdigital.uv.mx/bitstream/123456789/28540/1/Ruiz%20Tenorio.pdf

[Bernd Bruegge, Dutoit Allen. Object-Oriented Software Engineering: 
Using UML, Patterns, and Java, 2004, Prentice Hall, segunda edición. 
Capítulo 15.

Castañeda L. (2010). Ingenieria de requerimientos. Agosto 24, 2014, de Universidad ICESI Sitio web: http://bibliotecadigital.icesi.edu.co/biblioteca_digital/bitstream/10906/4083/1/Presentacion_ciclo_vida_software.pdf

Sommerville I. (2005). Ingenieria de software. Madrid España: Pearson Educación.