You are on page 1of 17

Calidad de Software

Mitos y creencias en la
creacin de software de
calidad y la medicin de
sta
1

aulas.aprendiendoaprogramar.com

apdaza@gmail.com

Calidad de Software
Medir la calidad del software:
Dogmas, leyendas, supersticiones sobre la creacin
de software de calidad que:
no son congruentes con los hechos
ms y ms gentes cuestionan cada vez menos.
y se convierten en:
verdades cotidianas y
estndares a exigir.

aulas.aprendiendoaprogramar.com

apdaza@gmail.com

Calidad de Software
Medir la calidad del software:
Verdad 1. Es posible medir subjetivamente
(solicitando opiniones) la calidad del software
Confiabilidad: Pocos errores.
Flexibilidad: Adaptable a nuevas situaciones.
Robustez: No falla.
Comprensin: Es entendible el cdigo?
Fcil de usar: Ergonmico.
Reusable: Se pueden usar porciones en otro software.
Rpido: (medicin objetiva)
Mantenible: Fcil de hacerle cambios.
3

aulas.aprendiendoaprogramar.com

apdaza@gmail.com

Calidad de Software
Medir la calidad del software:
El problema surge cuando deseamos medir las
cualidades anteriores en forma objetiva:
Confiabilidad (pocos errores). Ver el nmero de mensajes de
error del cdigo fuente. A ms mensajes, menos errores??
Flexibilidad (adaptable a nuevas situaciones). Ver a cuntos
estndares se apega??
Robustez (no falla). Ver si se dise con UML o mtodo
conocido??
Comprensin (el cdigo es entendible). Si no contiene GO TOs
ni variables libres??

aulas.aprendiendoaprogramar.com

apdaza@gmail.com

Calidad de Software
Medir la calidad del software:
El problema surge cuando deseamos medir las
cualidades anteriores en forma objetiva:
Facilidad de uso (ergonoma). Medir por el tamao de los
manuales??
Reusabilidad (se puede usar en otras aplicaciones). Ver si las
clases comparten pocas variables (coherencia)??
Mantenibilidad (fcil de hacerle cambios). Medir la bondad de su
documentacin??
Modularidad (descomposicin en partes que desempean una
funcin clara). Se mide contando los mdulos o clases o
componentes.??
5

aulas.aprendiendoaprogramar.com

apdaza@gmail.com

Calidad de Software
Medir la calidad del software:
El problema surge cuando deseamos medir las
cualidades anteriores en forma objetiva:
Complejidad (cdigo enredado). Contando el nivel de anidacin
de los parntesis??
Portabilidad (usable en otros ambientes). Si se ocultan bien sus
variables internas??

Medimos lo que podemos, no lo que deberamos


busco la llave donde hay luz
6

aulas.aprendiendoaprogramar.com

apdaza@gmail.com

Calidad de Software
Medir la calidad del software:
Pocas mediciones son objetivas
Se mide altura en vez de volumen
Se mide lo que se puede, no lo que se debe
Muchas mediciones son estticas
Mito 1 Para cada atributo hay una medicin
confiable (objetiva)
Si no puede medir la liebre, mida al gato. Da lo mismo.

aulas.aprendiendoaprogramar.com

apdaza@gmail.com

Calidad de Software
Mito 1 Para cada atributo hay una medicin
confiable (objetiva):
Si no puede medir la liebre, mida al gato. Da lo
mismo.

aulas.aprendiendoaprogramar.com

apdaza@gmail.com

Calidad de Software
Un proceso confiable produce un producto
confiable:
Una manera de hacer buenos productos es seguir buenas
recetas (buenos procesos, buenos algoritmos)
Ejemplo: sopa de arroz
Ejemplo: curtido de cuero

Esto es cierto cuando la humanidad ha tenido mucha


experiencia
O cuando hay ciencias (Fsica, Qumica) antiguas que
apoyan tales procesos
Entonces, el proceso se vuelve observable (podemos ver
si lo estamos siguiendo bien)
9

aulas.aprendiendoaprogramar.com

apdaza@gmail.com

Calidad de Software
Un proceso confiable produce un producto
confiable:
Y el producto se vuelve controlable
Dado un defecto en el producto, sabemos qu parte del proceso
modificar

Pero esto no sucede con el software


La computacin es joven (60 aos)
No es an ciencia. Es un arte o artesana

Esto es cierto en la fabricacin de bisagras o varillas de


acero (leyes de la Fsica) .
Pero no en la creacin del software
Ms cercano a creacin artstica: sinfonas, novelas, pinturas,
obras de teatro...
10

aulas.aprendiendoaprogramar.com

apdaza@gmail.com

Calidad de Software
Un proceso confiable produce un producto
confiable:
Es creacin, no fabricacin!
La calidad del software producido no est relacionada
con el proceso seguido.
Es posible disear un proceso confiable para producir
buen software y si cumplimos con ese proceso, habremos
hecho software de buena calidad
Mito 2 Un buen proceso implica producir software
de buena calidad
Seguir el proceso para pintar de Diego Rivera asegura obras de alta
calidad
11

aulas.aprendiendoaprogramar.com

apdaza@gmail.com

Calidad de Software
Un proceso confiable produce un producto
confiable:
Ejemplo de un proceso confiable, observable
Reuniones cada lunes a las 9am; minutas
Conformar un comit de calidad
Que los integrantes del grupo de desarrollo conozcan las normas
ISO 9000, 9000-3
Firme conviccin de poder crear software de calidad
Revisiones peridicas de cdigo (walk-through)
Llevar un Control de Cambios y un Control de Versiones

Todo esto no garantiza producto de calidad


El proceso es controlable; el producto no lo es
12

aulas.aprendiendoaprogramar.com

apdaza@gmail.com

Calidad de Software
Un proceso confiable produce un producto
confiable:
El proceso es observable (ver si se sigui)
El proceso es controlable (fcil corregir: llegar ms
temprano a las juntas)
El producto es observable (fcil ver si es de calidad)
Est fallando la comunicacin asncrona entre
procesos que van en distintos procesadores
Pero el producto (software) no es controlable!! (no es
corregible mediante correcciones al proceso)
13

aulas.aprendiendoaprogramar.com

apdaza@gmail.com

Calidad de Software
Medir la madurez de un proceso de creacin de
software:
Un proceso confiable para crear software de calidad (un
mito).
Medir la calidad de ese proceso en una empresa, se llama
grado de madurez (Capability Maturity Model, CMM).
Califiquemos a las empresas segn su grado de madurez.
La medicin del proceso puede (quiz) ser objetiva.
Ejemplo: CMM = 1, 2, 3, 4, 5
Pero no est directamente relacionada con la calidad del
software
14

aulas.aprendiendoaprogramar.com

apdaza@gmail.com

Calidad de Software
Adecuar el proceso de creacin de software:
Si se detecta alguno de los siguientes errores, qu parte
del proceso de creacin de software modificar?
La comunicacin entre mdulos en distintos procesadores a veces falla.
El software producido no es reusable.
Varias especificaciones no se cumplen.

No se sabe
El producto no es controlable va el proceso

Mito 4 Detectada una anomala, hay un algoritmo para


corregirla
15

aulas.aprendiendoaprogramar.com

apdaza@gmail.com

Calidad de Software
El Comit de Calidad:
Elabora normas sobre cmo conducir el proceso
Vigila el apego a ellas del grupo desarrollador
Exige apego a las normas.
Regaos y sanciones
El problema original (software poco reusable) seguir sin
corregirse o se corregir por casualidad (no
controlable)
Mito 5 El Comit de Calidad de Software es algo bueno
Creer que una ley o un comit corrigen los problemas de calidad
16

aulas.aprendiendoaprogramar.com

apdaza@gmail.com

Calidad de Software
El uso de estndares:
Hay que usar UML
Hay que usar CMM del Software Engineering Institute
Hay que usar ISO 9001
No se sabe cmo hacer software de calidad, copiar a
alguien con xito (en produccin de software, no en
venta de estndares) puede ser til, o puede no ser!
Mito 6 Seguir estndares es bueno
Si sigo un estndar internacional, no me puede ir mal.
17

aulas.aprendiendoaprogramar.com

apdaza@gmail.com