domingo, 31 de agosto de 2014

1er Parcial | 2da Tarea | Calidad, ISO 9126

Introducción:

     En esta ocasión veremos que es la calidad en un software y que significa ISO 9126, todo esto para entender mejor todos los estándares que debe de cumplir nuestro sistema para que sea satisfactorio para el cliente.

Desarrollo:


     Concepto de Calidad: "La totalidad de las características de una entidad que influyen en su aptitud para satisfacer las necesidades establecidas e implícitas". (Del Sastre Benjamín, 2010).
     También podría decirse que es todo lo que hace que cierto ente u objeto sobresalga dentro de los de su misma especie o campo, por ejemplo, en computación, un procesador con mas núcleos tiene mayor calidad, esto ya que al tener más núcleos hay una mayor velocidad en los procesos y no hay tanta sobrecarga.

     ¿Que significa ISO 9126?
     ISO 9126 es un estándar de calidad del software el cual esta compuesto por 4 partes, realidad, calidad externa, calidad interna y calidad en uso. "El objetivo es abarcar todos los aspectos que pueden afectar a la calidad de los productos del software" (Gómez David Alejandro, 2009).

Módulos de la calidad interna y externa:
A la calidad interna y externa también se les llama modelo de calidad interna y externa, este modelo tiene 6 módulos o características que debe cumplir el software y estos a su vez tienen subcategorías:




  • Funcionalidad: Capacidad del Software de proporcionar funciones declaradas e implícitas bajo ciertas condiciones.

      •               Adecuación: Capacidad del software de dar las funciones y objetivos (para ciertos usuarios) necesarios.
      •                Exactitud: Capacidad del software de dar resultados acordados con el grado necesario de precisión.
      •         Interoperabilidad: Capacidad del software de interactuar con mas sistemas específicos.
      •                Seguridad de acceso: Capacidad del software de bloquear los datos de personas o sistemas ajenos a este, y al mismo tiempo brindarlos adecuadamente a las personas o sistemas autorizadas.
      •                Cumplimiento funcional: Capacidad del software de unirse a normas, convenciones o legislación relacionadas con la funcionalidad.

    • Fiabilidad: Capacidad del software de mantener un nivel de prestaciones especifico en condiciones especificas.
      •                Madurez: Capacidad para evitar errores como resultado de fallas del software.
      •                Tolerancia a fallos: Capacidad de mantener un nivel de prestaciones en caso de fallos.
      •                Capacidad de recuperación: Capacidad de recuperar datos afectados en caso de un fallo del sistema.
      •              Cumplimiento de la fiabilidadCapacidad del software de unirse a normas, convenciones o legislación relacionadas con la fiabilidad.

    • Usabilidad: Capacidad de ser entendido, aprendido, usado y ser atractivo al usuario en ciertas condiciones.
      •                Capacidad de ser entendido: Que el software sea entendido por el usuario y este es adecuado para realizar ciertas tareas o condiciones en casos particulares.
      •                Capacidad de ser aprendido: Que el usuario pueda aprender sobre su aplicación.
      •                Capacidad para ser operado: Que el usuario pueda operar el software y controlarlo.
      •                Capacidad de atracción: Que el software sea atractivo para el usuario.
      •                Cumplimiento de usabilidadCapacidad del software de unirse a normas, convenciones o legislación relacionadas con su usabilidad.

    • Eficiencia: Capacidad del software de ejecución bajo condiciones específicas.
      •                Comportamiento temporal: Capacidad para dar tiempos de respuesta apropiados bajo ciertas condiciones.
      •                Utilización de recursos : Capacidad para usar una cantidad y tipo de recursos adecuados cuando se lleva a cabo una función en ciertas condiciones.
      •                Cumplimiento de la eficiencia: Capacidad del software de unirse a normas, convenciones o legislación relacionadas con su eficiencia.

    • Mantenibilidad: Capacidad del software para ser modificado (correcciones, mejoras, adaptaciones, etc.)
      •                Capacidad para ser analizado: Capacidad del software para poder detectar fallos e identificar lo que debe ser modificado.
      •                Capacidad para ser cambiado: Capacidad del software para aceptar modificaciones implementadas.
      •                Estabilidad: Capacidad para evitar fallos debido a modificaciones del sistema.
      •                Capacidad para ser probado: Capacidad que permite que el sistema modificado sea validado.
      •                
      • Cumplimiento de 
      • la mantenibilidad
      • Capacidad del software de unirse a normas, convenciones o legislación relacionadas con su mantenibilidad.

    • Portabilidad : Capacidad del software de ser transferido de un entorno a otro.
      •                Adaptabilidad: Capacidad del software de adaptarse a diferentes entornos sin aplicar acciones o mecanismos distintos de aquellos que son del propósito del software.
      •                Instabilidad: Capacidad de ser instalado en un entorno específico.
      •                Coexistencia: Capacidad del software de coexistir con otro software independiente, compartiendo los mismos recursos.
      •                Capacidad para reemplazar: Capacidad del software de ser usado para el mismo objetivo, en lugar de otro producto.
      •                Cumplimiento de la portabilidadCapacidad del software de unirse a normas, convenciones o legislación relacionadas con su portabilidad.

    Conclusión:

    Como pudimos ver, la calidad de un software esta basada en muchas cosas que le van a dar a este sistema un determinado grado de calidad en base a este estándar que es el ISO/IEC 9126, y como todo estándar se usa para que todos los software estén calificados uniformemente, sin variedades de medición.

    Bibliografía:
    Gómez David Alejandro (2009). ISO 9126. Recuperado de:
    http://alejandrogomeziso.blogspot.mx/

    Del Sastre Benjamín (2010). Norma ISO/IEC 9126 : 2001. Recuperado de:
    http://www.austral.edu.ar/aplic/webSIA/webSIA2004.nsf/6905fd7e3ce10eca03256e0b0056c5b9/c18992b29a6c30e00325779e004ef56b/$FILE/Norma%20ISO%209126%20espa%C3%B1ol.pdf

    Anónimo. Calidad de Software. Recuperado de:
    http://www.ub.edu.ar/catedras/ingenieria/ing_software/ubftecwwwdfd/calidadsw/calidad.htm

    sábado, 23 de agosto de 2014

    1er Parcial | 1ra Tarea | Investigación Pruebas

    Introducción:

             A continuación veremos lo que son las pruebas relacionadas al software, cuales son, y las razones por las cuales siempre se deben de llevar  acabo.

    Desarrollo:

    • Prueba:

    Se define como la acción o el efecto de probar, que esta a su vez es una muestra o indicio de algo que se hace para saber la eficacia de algo o alguien, como funciona o reacciona y el impacto que tendrá en su forma definitiva.

    • Ingeniería de Pruebas:

                Es  la ejecución de programas de software para detectar defectos y fallas, también su tarea es demostrar que un programa realiza las funciones para las cuales fue construido.
    Es importante que el o los que hayan creado el programa no prueben sus propios desarrollos, aparte de esto una prueba debe de tener ya preestablecidos los resultados esperados, después de obtener los resultados, y en base a ellos corregir los fallos del sistema que no se desean en el producto final.

    • Ciclo de vida del software:

                Se describe como el desarrollo del software desde la fase de inicio hasta la fase final. El propósito de esto es definir las fases intermedias que se necesitan para validar el desarrollo de la aplicación (para garantizar que cumpla con los requisitos), ya que la rectificación de errores suele ser muy costoso, por lo que esto se hace por partes para evitar estos inconvenientes.
    El ciclo de vida de un software tiene los siguientes procedimientos:

    1. Definición de objetivos: Definir el resultado del proyecto.
    2. Análisis de los requisitos: Recopilar, examinar y formular los requisitos del cliente.
    3. Diseño general y detallado: Requisitos generales de la aplicación y la definición precisa de cada subconjunto de esta.
    4. Programación: Implementación de un lenguaje de programación para crear las funciones definidas durante la etapa de diseño.
    5. Prueba de unidad: Prueba de cada subconjunto de la aplicación para asegurar que se implementación de acuerdo a las especificaciones.
    6. Integración: Garantizar que los módulos se integren con la aplicación.
    7. Prueba beta(o validación): Garantizar que el software cumple con las especificaciones originales.
    8. Documentación: Sirve para documentar lo necesario para los usuarios del software y los desarrollos futuros
    9. Implementación del software.
    10. Mantenimiento: Procesos correctivos y actualizaciones secundarias del software.

    • Tipos de pruebas del software:

    1. Prueba Unitaria: Focalizada en ejecutar módulos individuales, para facilitar la integración de las unidades en componentes mayores.
    2. Prueba de Integración: Verificar que las interfaces entre las entidades externas y las aplicaciones funcionan correctamente.
    3. Prueba de Regresión: Determinar si un cambio reciente a una parte del programa tiene efecto adverso en otra(s) parte(s).
    4. Pruebas de Humo: Garantizar poco esfuerzo en la integración final del sistema, asegurar resultados de pruebas unitarias.
    5. Pruebas del Sistema: Asegurar la propia navegación dentro del sistema, ingreso de datos, procesamiento y recuperación.
    6. Prueba de Desempeño: Validar el tiempo de procesamiento de las funciones de la aplicación, bajo las condiciones: Volumen normal anticipado y Volumen máximo anticipado.
    7. Prueba de Carga: Verificar el tiempo de respuesta del sistema para casos de uso de negocios, bajo diferentes condiciones.
    8. Prueba de Stess: Verificar que el sistema funciona apropiadamente bajo estas condiciones de stress: Memoria baja o no disponible, máximo número de clientes conectados, múltiples usuarios realizando la misma transacción con los mismos datos, etc.
    9. Prueba Volumen: Verificar que la aplicación funciona correctamente bajo los siguientes escenarios  de volumen: Máximo número de clientes conectados, todos ejecutando la misma función, Máximo tamaño de base de datos y múltiples consultas ejecutadas simultáneamente.
    10. Prueba de Recuperación y Tolerancia de fallas: Verificar que los procesos de recuperación restauran apropiadamente la Base de datos, aplicaciones y sistemas. Y los llevan a un estado deseado.
    11. Prueba de Múltiples Sitios: Detectar fallas en configuraciones y comunicaciones de datos entre múltiples sitios.
    12. Prueba de Compatibilidad Y Conversión: Buscar problemas de compatibilidad y conversión en los sistemas.
    13. Prueba de Integridad de Datos y Base de Datos: Asegurar que los métodos de acceso y procesos funcionan adecuadamente y sin ocasionar corrupción de datos.
    14. Prueba de Seguridad y Control de Acceso: Nivel de seguridad de la aplicación y del sistema.
    15. Prueba del Ciclo del Negocio: Asegurar que el sistema funciona de acuerdo con el modelo de negocios emulando los eventos en tiempo y forma.
    16. Pruebas de GUI: Verifica la navegación a través de los objetos de la prueba reflejan las funcionalidades del negocio y los requisitos.
    17. Pruebas de Configuración: Validar y verificar que el cliente del sistema funciona apropiadamente en las estaciones de trabajo recomendadas.
    18. Prueba de Estilo: Comprobar que la aplicación sigue los estándares de estilo del cliente.
    19. Prueba de Aceptación: Determinar por medio del cliente la aceptación o rechazo del sistema desarrollado.
    20. Prueba de Instalación: Verificar que el sistema se instala apropiadamente en cada cliente.
    21. Pruebas Funcionales: Se asegura el trabajo apropiado de los requisitos funcionales incluyendo la navegación, entrada de datos, procesamiento y obtención de resultados.
    22. Pruebas de Documentación y Procedimiento: Evaluar la documentación del usuario.
    23. Prueba de Usabilidad: Determinar la usabilidad del sistema.
    24. Prueba de Campo: Correr el sistema en el ambiente real para encontrar errores y validar el producto contra sus especificaciones originales.
    25. Pruebas Alfa: Prueba de aceptación para detectar errores en el sistema bajo un ambiente controlado.
    26. Pruebas Beta: Realizar la validación del sistema por parte del usuario.

    Conclusión:

               Como ya se vio, las pruebas en la programación de los sistemas es muy importante, ya sea para descubrir el impacto del producto, para saber si es lo que el cliente quería, o para saber si todo funciona correctamente bajo ciertas condiciones.
    Obviamente si estas pruebas no se hacen antes de la implementación del producto final, solo se puede esperar un producto con varios fallos y que no sea satisfactorio para el cliente.


    Bibliografía:

    Anónimo. Definición de prueba. Recuperado de:
    http://definicion.de/prueba/

    Abad Londoño Jorge Hernán (2005). Tipos de pruebas de software. Recuperado de:
    http://ing-sw.blogspot.mx/2005/04/tipos-de-pruebas-de-software.html

    Anónimo. Ciclo de vida del software. Recuperado de:
    http://es.kioskea.net/contents/223-ciclo-de-vida-del-software