1 / 25

Ingeniería de Software

Ingeniería de Software. Atributos de Calidad del Software. ¿Qué es calidad?. Es la aptitud de un producto o servicio para satisfacer las necesidades del usuario. Es el grado en que un software cumple con los requisitos especificados, ya sean funcionales o no funcionales .

Download Presentation

Ingeniería de Software

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Ingeniería de Software Atributos de Calidad del Software

  2. ¿Qué es calidad? • Es la aptitud de un producto o servicio para satisfacer las necesidades del usuario. • Es el grado en que un software cumple con los requisitos especificados, ya sean funcionales o no funcionales. • IEEE 1601: Es el grado en que el sw posee una combinación adecuada de determinadas características como son el rendimiento, la fiabilidad o la seguridad (es decir de ciertas cualidades). • ISO 8402: Es la totalidad de las características de una entidad que dan soporte a su capacidad de satisfacer necesidades manifiestas e implícitas. • Es la concordancia con los requisitos funcionales y de rendimiento explícitamente establecidos, con los estándares de desarrollo explícita mente establecidos, con los estándares de desarrollo explícitamente documentados y con las características implícitas que se espera de todo software desarrollado profesionalmente.

  3. Clasificación • Algunas clasificaciones son: • Calidad Externa (visible) y calidad interna (no visible). Muchas veces la calidad interna tiende a ser mas fácilmente medible que la externa • Calidad del producto y calidad del proceso. No es lo mismo la calidad del producto que la calidad el proceso por el cuál se generó ese producto. • Calidad desde el punto de vista del usuario. A veces al usuario solo le importa cierto atributo de calidad, dejando de lado otros parámetros. • En general se puede decir que las clasificaciones son difusas porque hay un impacto de un atributo de calidad (cualidad) en las otras.

  4. Impacto entre cualidades

  5. Atributos de calidad del software • Algunos atributos:

  6. Correctitud • ¿Hace lo que espero? • Un software es correcto cuando satisface, hasta cierta medida, las condiciones descritas en la especificación de requerimientos formales. • Esto requiere de 2 cosas: • que la especificación de requerimientos no sea ambigua • que el sistema sea verificable. • La validación de la correctitud del software NO incluye a la validación de la especificación del mismo. • Subcaracterísticas: Precisión, adecuación, interoperabilidad, conformidad, seguridad.

  7. Robustez • ¿Lo hace aún  en condiciones adversas? • Es la capacidad del software de funcionar en condiciones no esperadas. Un sistema es robusto si cuando se dan esas condiciones puede seguir andando o fallar pero recuperarse luego. • Las condiciones no esperadas incluyen errores del usuario, momentos de Stress, fallos de la red. • Subcaracteristicas: madurez, tolerancia a errores, recuperabilidad

  8. Perfomance • Es la capacidad que tiene el software de utilizar los recursos de manera óptima, esto significa utilizar la menor cantidad de recursos para realizar la mayor cantidad de acciones en el menor tiempo posible. • En general, a mayor velocidad esperada mayor utilización de recursos. Para los escenarios esperados, se debe encontrar un equilibrio entre la utilización de recursos y la velocidad. • Para definir la eficiencia esperada se debe trabajar sobre un grupo de casos esperados, para los casos no esperados, el funcionamiento va a estar ligado a la Robustez del sistema y NO a la eficiencia. • Subcategorias: Velocidad, manejo de recursos.

  9. Usabilidad • La capacidad de un software de ser utilizado por un usuario. En general es difícil de medir dado que suele responder a características subjetivas. • Un sistema es usable no sólo si es atractivo sino también si es fácil de aprender, fácil de acceder y entender. • Haciendo esta separación se pueden realizar distintas estrategias para medir la usabilidad: • Pruebas desde cero • Pruebas por expertos • Heurísticas   • Medir la cantidad de pasos para realizar una acción • Subcategorias: comprensibilidad, aprendibildiad, atractividad y operatibilidad.

  10. Verificabilidad • La capacidad de un sistema de poder revisar la adecuación a los distintos atributos de calidad. • Cada atributo necesita de alguna manera poder ser revisado para su aceptación. • En general lo más importante es la verificabilidad de: • Correctitud: poder asegurar que cada acción devuelve el resultado esperado • Eficiencia: poder ver en tiempo cercano a la realidad, el estado actual de los recursos • Robustez: poder ver lo antes posible si algún componente falló • Una herramienta para asegurar cierto nivel de verificabilidad es incluyendo logging.

  11. Evolucionabilidad / Mantenibilidad • Es la capacidad del software de evolucionar ya sea por: • Cambios • Errores • Nuevos requerimientos • Para asegurar esa capacidad, el software debe asegurar la estabilidad y proveer maneras de volver atrás en casos de error. • Subcategorias: Analizabilidad, cambiabilidad, estabilidad, comprobabilidad

  12. Portabilidad • La capacidad de un software de ser utilizado en ambientes distintos. • Esto incluye: • La capacidad de funcionar en distintos hardware y software • Co-existir con distintos sistemas • La facilidad de instalación / desinstalación • Migración de datos existentes. • Subcategorias: Adaptabilidad, Instalabilidad, Co-existencia, reemplazabilidad.

  13. Reusabilidad • Es la capacidad de un subsistema de ser utilizable como parte de otro sistema en el futuro. • La capacidad de diseñar software reusable muestra la madurez de la organización y por lo tanto de una mayor impresión de la calidad. • Tener software reusable ayuda a la eficiencia en proyectos futuros.

  14. Atributos internos de Calidad • Ejemplos: • Fan-In/Fan-Out • Líneas de código • Complejidad Ciclomática • Longitud de identificadores • Pesos de métodos por clase • Tamaño de árbol de jerarquía de clases • Cohesión y acoplamiento • Cobertura de pruebas • Documentación interna (del código, diseño, etc.)

  15. Ejemplo de impacto entre atributos

  16. Trade-Offs • A la hora de definir la importancia de los atributos de calidad en un producto, se debe tener en cuenta que presentan conflictos entre sí. • Por ejemplo: • Usabilidad – Performance • Robustez – Performance • Velocidad – Uso de memoria • Portabilidad – Verificabilidad • Seguridad - Usabilidad

  17. La pausa son 5 minutos Y La Virginia es el té

  18. Escenarios de Atributos de calidad • Se utilizan para disminuir la ambigüedad de los atributos de calidad especificados, de manera que puedan ser verificables. • Se especifica: • Origen del estimulo: actor o acción que interactúa con el sistema • Estimulo: condición a considerar • Ambiente: estado esperado del sistema • Componentes: componentes afectados • Respuesta: actividad esperada por el sistema • Medida de la respuesta: cómo se va a medir esa respuesta

  19. Escenarios de Atributos de calidad - Ejemplo • “Los usuarios bajo condiciones normales, deben ser capaces de realizar 1000 transacciones por minuto. El sistema debe mostrar el resultado en pantalla en una latencia menor a 3 segundos. • Se especifica: • Origen del estimulo: Usuario realiza transacción • Estimulo: Inicio de transacción, probabilístico de 1000tx x minuto • Ambiente: Estado normal, horario normal, carga normal • Componentes: Todo el sistema • Respuesta: Transacción procesada • Medida de la respuesta: Latencia menor a 3 segundos

  20. Atributos de calidad del proceso • Robustez: • Un Proceso es robusto si puede adaptarse de manera prolija a cambios inesperados en el entorno: Nuevos requerimientos, cambios en el equipo de trabajo. Básicamente un proceso es confiable si en la práctica ayuda a producir software de la calidad esperada. • Evolucionabilidad: • Un Proceso es puede evolucionar cuando puede adaptarse a nuevas técnicas y metodologías. La diferencia con robustez es que estos cambios no son inesperados. • Reusabilidad: • Un proceso es reusable si en el futuro se puede utilizar en otros proyectos.

  21. Atributos de calidad del proceso • Productividad: • Es la velocidad de producción que tiene un proceso de desarrollo. Esta velocidad se puede medir en distintas formas, desde  líneas de código x horas hombre hasta tareas hechas en una iteración. Muchas veces se suele sobreestimar esta productividad, dado que el equipo puede tardar más en realizar algunas tareas para hacerlas más eficientes, reusables y libres de errores que permiten no sólo incrementar la productividad a futuro sino evitar trabajo. • Oportunidad (Timeliness): • Es la capacidad del proceso de entregar resultados a tiempo. Un software puede pasar de valer millones a nada por no haber estado listo a tiempo, ya sea mucho antes de tiempo o después (en general, después). Esto se ve frecuentemente en páginas web o aplicaciones para celulares.Diferentes estilos de ciclo de vida permiten disminuir el impacto de no estar listos a tiempo, entre estos se destacan los ciclos de vida incrementales y los basados en un timebox. • Visibilidad (Visibility): • La visibilidad en un proyecto de software se consigue cuando cualquier stakeholder puede saber de manera fácil en qué estado se encuentra el proyecto: qué tareas se terminaron, cuáles están en progreso y cuáles son las próximas a realizarse. Además ayudan internamente al equipo a organizarse entre tareas dependientes y sincronización entre desarrollo y testing.

  22. Características de acuerdo al tipo de sistema? • Standalone • Web • Embebidos • Firmware • En lote o batch • Tiempo real • Entretenimiento • Modelado y simulación • Recolección de datos • Sistemas de sistemas • Correctitud • Performance • Robustez • Mantenibilidad • Usabilidad • Portabilidad • Reusabilidad • Verificabilidad

  23. Preguntas

  24. Sugerencias

  25. Aplausos

More Related