Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
2017-2018
Twitter: @JoffreLeonVeas Correo: jleon@ups.edu.ec
Tomado del texto
Ingeniería de Software
Ian Sommerville
Gestión de la Calidad
Ing. Joffre León Veas, MAE
Contenido
4.1. Tendencias de Calidad
Mediciones en el software
Puntos claves
Referencias bibliográficas
Administración de la Calidad en el Software (1/2)
Se ocupa de garantizar que el nivel de calidad requerido se logra en un
producto de software.
En todo caso, las técnicas aún tienen que evolucionar cuando se utiliza el
desarrollo ágil.
La calidad del software
La calidad del software
Calidad, de manera simplista, significa que un producto debe cumplir con
su especificación.
● Hay tensión entre los requisitos de calidad del cliente tales como
eficiencia, fiabilidad, etc. y los requisitos de calidad del desarrollador
tales como mantenimiento, reutilización, etc.;
● Algunos de los requisitos de calidad son difíciles de especificar de
manera inequívoca;
● Las especificaciones del software suelen ser incompletas y a menudo
inconsistentes.
La calidad del software
El enfoque puede ser “aptitud para el
uso" en lugar de la especificación de
conformidad.
La aptitud del software para el propósito
¿El software ha sido probado adecuadamente?
Sin embargo, existe una relación muy compleja y poco entendida entre
los procesos de software y calidad del producto.
Se debe revisar las normas y su uso con regularidad. Las normas pueden
convertirse rápidamente en obsoletas y esto reduce su credibilidad entre los
profesionales. Esto es relativo,....
Las inspecciones no requieren la ejecución del sistema así que pueden ser
realizadas antes de la implementación.
Las revisiones por pares han demostrado ser una técnica efectiva para
descubrir errores en los programas.
Inspección de lista de verificación (checklist)
Lista de verificación o comprobación de errores comunes se deben utilizar
para manejar la inspección.
Fallos de datos ·¿Están todas las variables del programa inicializadas antes de contener sus valores?
·¿Se han nombrado todas las constantes?
·¿Debe ser el límite superior de las matrices igual al tamaño de la matriz o al tamaño -1?
·Si se utilizan cadenas de caracteres, ¿es un delimitador explícitamente asignado?
·¿Hay alguna posibilidad de desbordamiento de búfer?
Fallos de Interfaz ·Todas las llamadas a funciones y métodos tienen el número correcto de
parámetros?
·¿Coinciden los tipos de datos de los parámetros formales y actuales?
·¿Están los parámetros en el orden correcto?
·Si los componentes acceden a memoria compartida, ¿tienen el mismo modelo
de la estructura de la memoria compartida?
Fallos de administración del ·Si una estructura vinculada se modifica, se han asignado correctamente todos
almacenamiento los enlaces?
·Si se utiliza el almacenamiento dinámico, ha sido el espacio asignado
correctamente?
·¿Es el espacio descargado explícitamente después de que ya no es necesario?
Fallos de gestión de excepciones ·¿Se han tenido en cuenta todas las posibles condiciones de error?
Gestión de la calidad y el desarrollo ágil
Gestión de la calidad y el desarrollo ágil
La Gestión de la calidad en el desarrollo ágil es informal y no está basada en
documentos.
Los miembros de equipo usuarios no deben comprobar código que hace que
el sistema falle. Los desarrolladores tienen que probar los cambios en sus
códigos contra todo el sistema y estar seguros de que éstos funcionan como
se esperaba.
Buenas prácticas compartidas (2/2)
Solucionar los problemas cuando los vea
En Scrum, hay una reunión de revisión después de que cada iteración del
software se ha completado (una revisión del sprint), donde se pueden discutir
temas y problemas de calidad.
Reputación Par
Los pares pueden ser reacios a buscar los errores, ya que no quieren frenar
el avance del proyecto.
Debilidades programación en parejas (2/2)
Las relaciones de trabajo
Puede ser utilizado para predecir los atributos del producto o para controlar
el proceso de software.
Existe la relación entre lo que podemos medir y lo que queremos saber. Sólo
podemos medir atributos internos, pero estamos a menudo más interesados
en los atributos externos del software.Esta relación se ha formalizado y
validado.
Puede ser difícil de relacionar lo que se puede medir y los atributos deseables
o requeridos referentes a la calidad externa.
Relaciones entre el software interno y externo
Problemas con la medición en la industria
Es imposible cuantificar el retorno de la inversión de la introducción de un
programa de métricas a nivel organizacional.
Las Métricas estáticas tienen una relación indirecta con los atributos de
calidad:
Fan-in/Fan-out Fan-in es una medida del número de funciones o métodos que se llaman a
otra función o método (digamos X). Fan-out es el número de funciones que
son llamadas por la función X. Un valor alto para fan-in significa que X está
estrechamente unido al resto del diseño y los cambios a X tendrá extensos
efectos en cadena. Un valor alto para fan-out sugiere que la complejidad
general de X puede ser alta debido a la complejidad de la lógica de control
necesaria para coordinar los llamados componentes.
Longitud de código Esta es una medida del tamaño de un programa. Generalmente, cuanto
(Length of code) mayor sea el tamaño del código de un componente, más complejo y
propenso a errores que componente es probable que sea. Longitud de
código se ha demostrado ser uno de los indicadores más fiables para
predecir la propensión a error en los componentes.
Métricas estáticas de productos de software
Métrica de Software Descripción
Complejidad ciclomática Esta es una medida de la complejidad del control de un programa. Esta
(Cyclomatic complexity) complejidad de control puede estar relacionado con la comprensibilidad
del programa.
Longitud de identificadores Esta es una medida de la longitud media de los identificadores, nombres
(Length of identifiers) de variables, clases, métodos, etc., en un programa. Cuanto más largo
sean los identificadores, más probabilidades hay de que sean
significativos y por tanto más comprensible el programa.
Métodos ponderados por clase Es el número de métodos en cada clase, ponderados por la complejidad
(WMC) de cada método. Un método simple puede tener una complejidad de 1, y
(Weighted methods per class) un método grande y complejo un valor mucho más alto. Cuanto mayor
sea el valor de este indicador, cuanto más compleja será la clase de
objeto. Objetos complejos son más propensos a ser difícil de entender.
Puede que no sea lógicamente coherente, por lo que no puede ser
utilizado eficazmente con superclases en un árbol de herencia.
Profundidad del árbol de Representa el número de niveles discretos en el árbol de herencia donde
herencia (DIT) subclases heredan atributos y operaciones (métodos) de superclases.
(Depth of inheritance tree) Cuanto más profundo es el árbol de herencia, más complejo el diseño.
Muchas clases de objetos podrían tener que ser entendidas para
comprender las clases de objetos en el árbol.
Suite métricas orientadas a objetos
Métrica Orientada a Objeto Descripción
Número de hijos (NOC) Esta es una medida del número de subclases inmediatas en una clase.
(Number of children) Mide la amplitud de una jerarquía de clases, mientras DIT mide su
profundidad. Un valor alto para NOC puede indicar una mayor
reutilización. Puede significar que más esfuerzo se debe hacer en la
validación de clases base, debido al número de subclases que dependen
de ellos.
Acoplamiento entre clases de Las clases están acoplados cuando los métodos en los métodos de uso de
objetos (CBO) una clase o variables de instancia definidas en una clase diferente. CBO
(Coupling between object es una medida de cómo existe mucha acoplamiento. Un valor alto para
classes) CBO significa que las clases son altamente dependientes, y por lo tanto es
más probable que el cambio de una clase afectará a otras clases en el
programa.
Suite métricas orientadas a objetos
Métrica Orientada a Objeto Descripción
Respuesta a una clase (RFC) RFC es una medida del número de métodos que podrían ser ejecutados
(Response for a class) en respuesta a un mensaje recibido por un objeto de esa clase. Una vez
más, RFC está relacionado con la complejidad. Cuanto mayor sea el valor
de RFC, cuanto más complejo es una clase y, por tanto, lo más probable
es que va a incluir errores.
Pérdida de cohesión en LCM se calcula considerando pares de métodos en una clase. LCOM es la
métodos (LCOM) diferencia entre el número de pares método sin atributos compartidos y el
(Lack of cohesion in methods) número de pares de método con atributos compartidos. El valor de este
indicador ha sido ampliamente debatido y que existe en varias
variaciones. No está claro si realmente añade ninguna información
adicional de utilidad más allá de la proporcionada por otros indicadores.
Análisis de componentes de software
Los componente del sistema puede ser analizado por separado utilizando una
serie de métricas.
El programa es pensado como más fiable y por lo tanto tiene un mercado más
diverso amplio. El porcentaje de usuarios que llaman a la mesa de ayuda
puede haber disminuido pero el total puede aumentar;
Los datos sobre las actividades humanas no siempre pueden ser tomadas en
serio, la razón es porque algunos cambios de los valores medidos son a
menudo ambiguos. Las razones deben ser investigados en detalle antes de
poder sacar conclusiones de las mediciones que se han hecho.
Análisis del software
Análisis de software es el análisis de
sobre los datos de software para
administradores e ingenieros de
software con el objetivo de
empoderar a las personas y los
equipos de desarrollo de software
para obtener y compartir una visión
de sus datos para tomar mejores
decisiones.
Habilitadores de Análisis de Software (1/2)
La recolección automatizada de datos de usuarios por parte de las empresas
de productos de software cuando su producto es usado.