La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Ingeniería de Software

Presentaciones similares


Presentación del tema: "Ingeniería de Software"— Transcripción de la presentación:

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 Correctitud Embebidos Performance Firmware Robustez En lote o batch Mantenibilidad Tiempo real Usabilidad Entretenimiento Portabilidad Modelado y simulación Reusabilidad Recolección de datos Verificabilidad Sistemas de sistemas

23 Preguntas

24 Sugerencias

25 Aplausos


Descargar ppt "Ingeniería de Software"

Presentaciones similares


Anuncios Google