Atributos de Calidad
Transcripción
Atributos de Calidad
ATRIBUTOS DE CALIDAD DE SOFTWARE Rubby Casallas Departamento de Ingeniería de Sistemas y Computación Uniandes Calidad de Software Una definición de calidad de enfatizar tres aspectos: 1. 2. 3. Los requerimientos de software es lo más importante para medir la calidad. Si éstos no se satisfacen se identificará mala calidad La no definición o el no seguimiento de estándares y guías llevará a mala calidad El no hacer explícitos requerimientos no funcionales llevará a que no se satisfagan (mantenibilidad, portabilidad, etc. ) Modelos de Calidad de Software Definir Calidad de Software es una tarea compleja. Incluye muchos aspectos que deben ser caracterizados. Modelos más antiguos McCall (1977) y Boehm (1978) ISO 9126 es un estándar inspirado en esos modelos ISO 9126 Necesidad de poder tener una definición uniforme para calidad Provee una definición de las características de calidad Define un proceso de evaluación de la calidad ISO 9126 ISO 9126 Funcionalidad Confiabilidad Facilidad de uso Eficiencia Facilidad de mantenimiento Portabilidad Funcionalidad Adecuación Exactitud Interoperabilidad Seguridad de acceso Cumplimiento funcional Confiabilidad Madurez Tolerancia a Fallos Facilidad de recuperación Cumplimiento de la fiabilidad Facilidad de uso Facilidad para ser entendido Facilidad para ser aprendido Facilidad para ser operado Facilidad de atracción Cumplimiento de la usabilidad Eficiencia Comportamiento temporal Utilización de recursos Cumplimiento de la eficiencia Facilidad de mantenimiento Facilidad para ser analizado Facilidad para ser cambiado Estabilidad Facilidad para ser probado Cumplimiento de la mantenibilidad Portabilidad Adaptabilidad Facilidad de instalación Coexistencia Facilidad para reemplazar Estabilidad Facilidad de mantenimiento Facilidad para ser probado Facilidad para ser analizado number of number of number of number of parameters referenced global variables parameters changed called relationships number of non-cyclic path number of nested levels cyclomatic number number of call-paths cyclomatic number number of statements comments rate Atributos principales del modelo Funcionalidad Grado en que las necesidades asumidas o descritas se satisfacen (Con)fiabilidad Grado en que el sistema responde bajo las condiciones definidas durante un intervalo de tiempo dado. Atributos principales del modelo (2) Facilidad de uso Conjunto de características que influyen en el esfuerzo requerido para el uso y la evaluación individual de cada uso por parte de un conjunto de usuarios dados Eficiencia Conjunto de características que determinan la relación entre el nivel de rendimiento del software y el número de recursos usados, bajo ciertas condiciones dadas Atributos principales del modelo (3) Facilidad de mantenimiento Características del software que determinaran el esfuerzo requerido para implementar cambios Portabilidad Conjunto de características que determinan la facilidad del software para ser transferido de un entorno de operación a otro Funcionalidad Adecuación Facilidad del producto software para proporcionar un conjunto apropiado de funciones para tareas y objetivos de usuario especificados Exactitud Facilidad del producto software para proporcionar los resultados o efectos correctos o acordados, con el grado necesario de precisión Funcionalidad (2) Interoperabilidad Facilidad del producto software para interactuar con uno o más sistemas especificados Seguridad de acceso Facilidad del producto software para proteger información y datos de manera que las personas o sistemas no autorizados no puedan leerlos o modificarlos, al tiempo que no se deniega el acceso a las personas o sistemas autorizados Funcionalidad (3) Cumplimiento funcional Facilidad del producto software para adherirse a normas, convenciones o regulaciones en leyes y prescripciones similares relacionadas con funcionalidad Confiabilidad Madurez Facilidad del producto software para evitar fallar como resultado de fallos en el software Tolerancia a fallos Facilidad del software para mantener un nivel especificado de prestaciones en caso de fallos software o de infringir sus interfaces especificados Confiabilidad (2) Facilidad de recuperación Facilidad del producto software para reestablecer un nivel de prestaciones especificado y de recuperar los datos directamente afectados en caso de fallo Cumplimiento de la fiabilidad Facilidad del producto software para adherirse a normas, convenciones o regulaciones relacionadas con al fiabilidad Facilidad de uso Facilidad para ser entendido Facilidad del producto software que permite al usuario entender si el software es adecuado y cómo puede ser usado para unas tareas o condiciones de uso particulares Facilidad para ser aprendido Facilidad del producto software que permite al usuario aprender sobre su aplicación Facilidad de uso (2) Facilidad para ser operado Facilidad del producto software que permite al usuario operarlo y controlarlo Facilidad de atracción Facilidad del producto software para ser atractivo al usuario Cumplimiento de la usabilidad Facilidad del producto software para adherirse a normas, convenciones, guías de estilo o regulaciones relacionadas con la usabilidad Eficiencia Comportamiento temporal Facilidad del producto software para proporcionar tiempos de respuesta, tiempos de proceso y potencia apropiados, bajo condiciones determinadas Utilización de recursos Facilidad del producto software para usar las cantidades y tipos de recursos adecuados cuando el software lleva a cabo su función bajo condiciones determinadas Cumplimiento de la eficiencia Facilidad del producto software para adherirse a normas o convenciones relacionadas con la eficiencia Facilidad de mantenimiento Facilidad para ser analizado Es la Facilidad del producto software para serle diagnosticadas deficiencias o causas de los fallos en el software, o para identificar las partes que han de ser modificadas Facilidad para ser cambiado Facilidad del producto software que permite que una determinada modificación sea implementada Facilidad de mantenimiento (2) Estabilidad Facilidad del producto software para evitar efectos inesperados debidos a modificaciones del software Facilidad para ser probado Facilidad del producto software que permite que el software modificado sea validado Cumplimiento de la mantenibilidad Facilidad del producto software para adherirse a normas o convenciones relacionadas con la mantenibilidad Portabilidad Adaptabilidad Facilidad del producto software para ser adaptado a diferentes entornos especificados, sin aplicar acciones o mecanismos distintos de aquellos proporcionados para este propósito por el propio software considerado Facilidad de instalación Facilidad del producto software para ser instalado en un entorno especificado Portabilidad (2) Coexistencia Facilidad del producto software para coexistir con otro software independiente, en un entorno común, compartiendo recursos comunes Facilidad para reemplazar Facilidad del producto software para ser usado en lugar de otro producto software, para el mismo propósito, en el mismo entorno Portabilidad (3) Cumplimiento de la portabilidad Facilidad del producto software para adherirse a normas o convenciones relacionadas con la portabilidad Maintainability metrics Analyzability: cyclomatic number number of statements comments rate Changeability: number of nested levels average size of statement number of variables Maintainability metrics Stability: number of parameters referenced number of global variables number of parameters changed number of called relationships Testability: number of non-cyclic path number of nested levels cyclomatic number number of call-paths Measuring aspects of quality, defects Measuring many of the quality factors described in quality models is dependent on subjective ratings In order to suppress variability those performing rating should be made aware of the need for consistency Software quality measurement using the decomposition approach requires careful planning and data collection in order to keep down the extra costs involved One solution is to look at quality as the lack of defects and thus concentrate on recording errors, faults, and failures Measuring aspects of quality, defects A de facto standard measure of software quality is defect density Defects can be classified as known defects and latent defects Then defect density can be defined as: defect density = # known defects / product size Measuring aspects of quality, defects For using defect density in decision making the following should be noted: The terminology differs widely: fault rate, fault density, and failure rate are used almost interchangeably Defect rate is dependent on time and defect density on size Remember that size can be measured in many different ways Defect finding is also dependent on the efficiency of the testing process Measuring aspects of quality, defects Even if our measurement otherwise are OK, you should remember that defects are not equally serious, and that the faults which eventually lead to failures is also affected by the specific users Despite these problems defect density is an important quality measure Measuring aspects of quality, Usability Usability of a software product is the extent to which the product is convenient and practical to use (right help in the right way) For measurement we must decompose usability in more fundamental attributes, each of which must be assessed by the user for the product in question: Entry level: experience of user. Learnability: speed of learning: eg. hours of training. Handling ability: speed of working when trained, or errors made. Measuring aspects of quality, Maintainability Suppose we seek measures to characterize the ease of applying maintenance to a specific product We can then define a measure called mean time to repair (MTTR) To calculate this measure, we need the following information: problem recognition time administrative delay time maintenance tools collection time problem analysis time change specification time change time (including testing and review) Maintainability To determine which measures (relating to specific internal attributes) most affect maintainability, we must gather them in combination with external maintainability measures So for instance we may find empirically that bad structure (measured in some way) normally means high MTTR. If this is the case then badly structured modules should be analyzed and appropriate guidelines established and actions taken.