Unidad 1 Fundamentos Del Aseguramiento de La Calidad Del Software PDF
Unidad 1 Fundamentos Del Aseguramiento de La Calidad Del Software PDF
Unidad 1 Fundamentos Del Aseguramiento de La Calidad Del Software PDF
Programa de la asignatura:
Pruebas y mantenimiento de sistemas de software
Clave:
15144832
Índice
Presentación de la unidad
¿Te has preguntado alguna vez por qué un cierto programa no funciona como quieres?, o
quizás, ¿cómo puede existir software comercial que presenta errores? Las respuestas a
estas interrogantes están directamente relacionadas con la calidad de dichos productos, y
en esta unidad encontrarás un panorama introductorio a los temas que definen la forma
en la que podrás garantizar la calidad de cada uno de tus desarrollos en sus diferentes
ámbitos, lo cual tiene el propósito de aportar a tu formación profesional como
desarrollador de software, el tener en mente que la calidad debe estar presente en todas
las fases de desarrollo de sistemas. En esta unidad se revisará el marco de referencia de
las pruebas y mantenimiento de sistemas de software como parte importante del
aseguramiento de la calidad.
Es un conjunto de programas que en su forma definitiva se pueden ejecutar, pero comprende también
las definiciones de estructuras de datos […] que utilizan estos programas y también la documentación
referente todo ello tanto la documentación de ayuda en el uso del software para sus usuarios como la
documentación generada durante su construcción, parte de la cual también servirá para su
mantenimiento posterior (p.15).
Propósitos
Identificar los procesos que garantizan la calidad del software durante las
diferentes fases su ciclo de vida.
Comprender el alcance, la importancia y la aplicación de los estándares que
evalúan la calidad del software.
Identificar la importancia de los marcos de referencia para desarrollar softwares
bajo un esquema de calidad.
Identificar el marco de referencia de las pruebas y mantenimiento de los sistemas
de software en relación con la calidad.
Competencia específica
Analizar los procesos que garantizan la calidad del software para determinar los
requerimientos de pruebas y mantenimiento, mediante los estándares de calidad.
Para poder definir el concepto de calidad del software, es necesario analizar previamente
las diferentes connotaciones y definiciones que existen sobre ella en ámbitos más
generales.
Para Calero et ál. (2010), la definición del concepto de calidad del software no debe
abarcar únicamente al propio producto o componente de software en sí, sino a todo el
contexto que rodea a dicho producto o componente. De acuerdo con el autor, este
enfoque de calidad (incluso aplicada a cualquier cosa) debe tener una visión integral, que
contemple el entorno donde se ejecuta y los procesos que lo han generado.
Según Chemuturi (2011, p. 2), la calidad puede apreciarse desde tres perspectivas:
Para un consumidor final, la calidad connota una funcionalidad libre de defectos, fácil
de usar, con niveles aceptables de fallas durante su uso, confiable en su rendimiento,
con fácil acceso a servicios y protección contra daños.
Como es posible observar, la calidad tiene diferentes connotaciones, según los actores
organizacionales.
La norma ISO 9000:2000 define a la calidad como “el grado en el que un conjunto de
características inherentes cumple con los requerimientos” (Uddesh, p. 308). En la
definición anterior, se entiende como grado un nivel continuo de calidad que comienza en
cero y crece quizá infinitamente. Esta deducción, sin embargo, es ambigua debido a que
se puede cuestionar lo siguiente: ¿en qué nivel se considera la calidad como mala, buena
o excelente?, ¿quién está facultado para emitir esta calificación? Existen estándares
internacionales y proyectos de aseguramiento de la calidad del software, mismos que se
detallarán a continuación.
En el tema 1.1. Calidad del software en el entorno de las organizaciones, se abordarán los
ámbitos de análisis de la calidad de los sistemas de software, así como los estándares
internacionales que rigen el proceso del aseguramiento de la calidad.
Esta unidad comprende el estudio de los estándares internacionales ISO e IEEE. Tema
que aporta los lineamientos estandarizados para construir software de calidad.
Posteriormente, se analizarán los modelos y procesos que se emplean para garantizar la
calidad del software, mediante una introspección a la forma en la que se abordan cada
una de las fases de desarrollo de software, y se podrá identificar el nivel de madurez de
las actividades encaminadas a la calidad. Finalmente, en el tema sobre el ciclo de vida del
software y los ámbitos de análisis de la calidad, se abordarán las cuatro dimensiones que
definen un software de calidad y cómo se relacionan con el ciclo de vida de los sistemas.
Comprender los temas de esta unidad es importante debido a que se introduce la calidad
al ciclo de vida de sistemas como un complemento a cada una de sus diferentes fases;
esto con el objetivo de que los proyectos de desarrollo de software, elaborados bajo un
enfoque de calidad, cubran eficientemente los requerimientos para los cuales fueron
concebidos.
En la actualidad, las organizaciones con mayor renombre son aquellas que han integrado
la calidad como parte básica de sus procesos. La implementación de normas y
estándares puede ser un deber largo y tedioso para una organización, principalmente por
los recursos implicados en el proceso de certificación, compromiso público que una
organización hace con la calidad al cubrir los lineamientos especificados en los diferentes
estándares internacionales. Cuando una organización cuenta con una o varias
certificaciones, éstas se traducen en garantías para sus usuarios (Calero et ál., 2010).
Esta inversión en recursos toma sentido cuando se evalúan las ventajas que representa la
adopción de las normas o estándares internacionales de calidad de los productos o
servicios de una organización, entre las que se encuentran el mejorar los procesos de la
organización, la reducción de costos, mejora en el control del negocio, mejora en la
generación de información para la toma de decisiones, entre otras. Cada una de las
mencionadas anteriormente, pueden ser aplicadas también en los proyectos de desarrollo
de software.
Debido a que existen numerosas familias de normas que evalúan diferentes áreas del
desarrollo de software, esta unidad se enfocará en las más representativas para los
procesos de pruebas y mantenimiento, mismas que son fundamentales para que un
producto de software pueda ser considerado de calidad.
Categorías Subcategorías
Adecuación
Funcionalidad Precisión
Interoperabilidad
Seguridad
Conformidad de su funcionalidad
Madurez
Confiablidad Tolerancia a fallas
Habilidad de recuperación
Conformidad de su confiablidad
Clasificación de
Comprensibilidad
las categorías y
Usabilidad Facilidad de aprendizaje
subcategorías de
Facilidad de operación
la norma ISO
9126 Conformidad de su usabilidad
para la
evaluación del Manejo de tiempos
software Eficiencia Empleo de recursos
Conformidad de su eficiencia
Adaptabilidad
Portabilidad Facilidad de instalación
Coexistencia
Facilidad de reemplazarse
Conformidad de la portabilidad
Categorías y subcategorías de ámbitos para la evaluación de la calidad del software. Basado en Carrol, 2007,
p. 200.
Las métricas internas son aquellas que miden la calidad del software considerando
factores medibles durante su desarrollo (por ejemplo, el tiempo en el progreso de cada
fase, las líneas de código, etcétera), mientras que las métricas externas evalúan la calidad
del software teniendo en cuenta los resultados de utilizarlo en un ambiente de producción.
Los factores externos, son todos aquellos factores que pueden ser directamente percibidos por los
usuarios y que afectan su trabajo (usualmente relacionadas a la funcionalidad y usabilidad). Factores
internos, hacen referencia al as características constructivas de los componentes, que son tan sólo
accesibles y controlables por sus fabricantes. No todas las propuestas existentes separan de esta
forma los factores pero sí se aplica en el estándar ISO/IEC 9126 y en los modelos resultantes de
aplicar el método SQUID (p. 297).
La familia ISO/IEC 25000 se compone de cinco divisiones principales (Calero et ál., 2010):
Los estándares ISO para el desarrollo de software siguen modelos similares a los del ciclo
de vida del software, por eso es posible decir que la búsqueda de la calidad comienza
desde el inicio del propio proyecto, y lo acompaña durante todo su desarrollo.
Para el ámbito de las pruebas y mantenimiento de software, esta familia de normas tiene
mucha relevancia debido a su relación directa con las fases de pruebas y mantenimiento
de software, debido a que las normas SQuaRE evalúan la calidad del software desde dos
perspectivas, la interna y la externa (uso del producto).
Las características internas que se relacionan directamente con las pruebas de sistemas
de software abarcan cada una de las descritas anteriormente: funcionalidad, confiablidad,
usabilidad, eficiencia, facilidad de mantenimiento y portabilidad. Las características
externas también figuran directamente en los procesos de pruebas de sistemas de
software; es en ellas donde tienen mayor peso las pruebas, pues es cuando el producto
final es sometido a dichas evaluaciones.
Puedes conocer más información sobre la familia ISO/IEC 25000 y sus subdivisiones la
página electrónica de ISO 25000 Calidad del producto software.
De acuerdo con Tuya et ál. (2007), la norma IEEE 12207 agrupa los procesos del ciclo de
vida del software en tres niveles principales, que a su vez se dividen en otras categorías
de proceso (p. 19):
2. Procesos de soporte. Se refiere a los procesos que pueden ser empleados por
cualquiera de los otros procesos en determinadas fases del ciclo de vida.
Gestión. Comprende los procesos que contienen prácticas que pueden ser utilizadas
por cualquier persona que gestione cualquier tipo de proyecto, o de proceso del ciclo
de vida del software.
Mejoramiento. Comprende los procesos que establecen, definen, implementan,
evalúan y mejoran las técnicas que se realizan en la organización.
Infraestructura. Describe los métodos que se realizan para dotar a la organización
tanto de capital humano como de la infraestructura necesaria para que los otros
procesos puedan realizarse de manera apropiada.
Reutilización. Contiene los procesos directamente relacionados con la realización de
acciones destinadas a explotar las oportunidades de reutilización.
Procesos primarios del ciclo de vida Procesos de soporte del ciclo de vida
Adquisición Documentación
Suministro Gestión de la configuración
Aseguramiento de la calidad
Verificación
Validación
Ingeniería Operación
Revisión conjunta
Auditoría
Resolución de problemas
Mejoramiento Reutilización
El diagrama anterior muestra los principales procesos que se evalúan en el estándar, así
como los subprocesos que los conforman.
Los estándares que se analizaron en esta unidad comprenden los más relevantes para las
fases de pruebas y mantenimiento de sistemas de software. Es importante su
conocimiento, debido a que representan un marco de referencia para encaminar el
desarrollo de software hacia mejores niveles de calidad.
El siguiente paso para desarrollar software de calidad es adentrarse en los procesos que
se llevan a cabo durante un proyecto, para identificar si se están realizando de la manera
correcta y, en caso contrario, se optimice su ejecución.
Si deseas consultar más información acerca de los estándares que creó la IEEE para la
ingeniería de software, ingresa a la página electrónica de la IEEE Standards Association.
La comparación del desarrollo de software con una línea de producción de una fábrica
podría parecer que le resta ese carácter artesanal, con el que a muchos desarrolladores
de software les gusta comparar su trabajo; sin embargo, esta analogía es necesaria para
lograr una mejor medición de la calidad.
Tercera etapa. Aquí es posible hablar ya de una industrialización del software, donde se
contempla el uso de tecnologías de orientación a objetos y reutilización de librerías, bajo
un esquema de procesos bien delimitados para la ingeniería del software. Comienza el
auge de la producción masiva de software calidad.
Como en las demás industrias, el desarrollo de software no pasó desapercibido para los
estándares, y comenzó el desarrollo y evolución de las normas que evalúan la calidad de
los sistemas de software.
Fue desarrollado a principios de los años 90 por el SEI (Software Engineering Institute),
institución creada por el gobierno estadounidense, mencionada en la etapa dos de la
evolución del desarrollo de software, bajo el liderazgo de Watts Humprey (Tuya et ál.,
2007), con la finalidad de contar con un marco de referencia para la evaluación y mejora
de procesos de software.
El modelo CMM divide la madurez de los procesos de software en cinco fases o niveles,
que buscan un refinamiento continuo hacia la optimización de cada proceso. Por madurez
de los procesos de software debe entenderse el nivel en el que se encuentra el software,
de acuerdo con la siguiente escala evolutiva, representada en la siguiente gráfica:
Cada uno de los niveles del CMM se define por una serie de áreas clave de proceso o
KPA (key process área, por sus siglas en inglés). De acuerdo con Tuya et ál. (2007),
estas KPA se refieren a un grupo de actividades que al ser realizadas por el equipo de
desarrollo de software de manera conjunta, ayudarán a lograr los objetivos de su nivel y
encaminarlo al proceso el estado más alto de madurez.
Es posible definir a las KPA como el conjunto de estrategias que se deben llevar a cabo,
en cada niel del CMM, para lograr el nivel de madurez requerido y avanzar al siguiente.
Éstas son descritas a continuación:
Nivel 1 inicial. Se caracteriza por la indisciplina en los procesos. No cuenta con áreas
clave de proceso o KPA (Tuya et ál., 2007).
Nivel 4 gestionado. Contempla la mejora continua de los procesos, toda vez que ya se
han superado los niveles anteriores. Para efectuar esta acción, se incluyen los conceptos
de gestión de la calidad del software y la cuantitativa de procesos (Tuya et ál., 2007).
Los tres ejes fundamentales del surgimiento del CMMI son la reorganización de áreas de
proceso, la mejora y modernización de las KPA, así como la creación de objetivos
genéricos para cada área de proceso, lo que facilita que se entienda bien el fin que tiene
cada nivel del CMMI (este modelo se revisó a detalle en la asignatura Modelos de calidad
de software).
En este tema se analizaron los modelos y procesos que se emplean para garantizar la
calidad del software. El principal objetivo de este estudio es llevar la calidad a lo más
profundo del desarrollo: sus procesos. Las pruebas y mantenimiento de sistemas de
software tienen una relación muy cercana con estos procesos, pues para determinar si
están dando el resultado adecuado es necesario ponerlos a prueba, y de acuerdo con los
resultados, establecer si es necesaria la implementación de proyectos de pruebas y
mantenimiento, tanto de los procesos como del desarrollo completo.
Es importante recordar que la calidad del software va mucho más allá de si este cubre con
los requerimientos del usuario, también es importante que la calidad se refleje en la
documentación del proyecto, su administración, el código fuente, la selección y
capacitación del personal de desarrollo.
El ciclo de vida del software se refiere a los procesos o fases implicadas en su desarrollo.
Existen diferentes tipos de modelos que definen su ciclo de vida, tales como el modelo en
cascada, el basado en componentes, el modelo del desarrollo evolutivo, entre otros, los
cuales revisaste en la asignatura Métodos y modelos de desarrollo de software.
Sin importar el modelo empleado para el ciclo de vida de los sistemas de software, es
posible apreciar fases fundamentales en cada uno de ellos, tales como (Sommerville,
2011):
Especificación del software. Son definidas las funciones del software así como sus
alcances y limitaciones.
Diseño e implementación del software. Se produce el software descrito en la
especificación.
Validación del software. Valida que el software realice los procesos de acuerdo con
la forma en que se espera que lo haga.
Evolución del software. Son definidos los cambios o adaptaciones que el software
debe realizar para ajustarse a las necesidades cambiantes de los usuarios.
Para Calero et ál. (2010), en el estudio de la calidad del software es posible apreciar las
mismas estructuras que en un ciclo de vida de sistemas de software. Desde la obtención
de los requerimientos (análisis), integración de componentes (desarrollo) hasta el
mantenimiento del sistema.
De acuerdo con Chemuturi (2010, p. 25), existen cuatro ámbitos de análisis de la calidad
que definen las fases principales del ciclo de vida de los sistemas de software:
1. Calidad de la especificación
2. Calidad del diseño
3. Calidad en el desarrollo
4. Calidad de la conformidad
Los ámbitos de análisis de la calidad se aplican de manera paralela al ciclo de vida del
software:
Calidad de la especificación. Se ubica en la primera fase del ciclo de vida del software,
en la fase de análisis.
Calidad del diseño. Se ubica en la segunda fase del ciclo de vida del software, en la
etapa de diseño.
Calidad en el desarrollo. Se ubica en la tercera fase del ciclo de vida del software, en la
etapa de desarrollo.
Calidad de la conformidad. Se ubica en la cuarta fase del ciclo de vida del software, en
la fase de pruebas.
Dentro del ciclo de vida tradicional del software, las especificaciones forman parte de la
fase del análisis, y si no son definidas de manera correcta, el diseño será incorrecto y
provocará que el producto final también sea incorrecto. Cualquier esfuerzo gastado en el
aseguramiento de la calidad será en vano.
Es de suma importancia que las especificaciones de los sistemas de software sean bien
definidas, comprensibles, y que tomen en cuenta todos los aspectos posibles que se
relacionan con la calidad del sistema.
Para asegurar que las especificaciones sean correctas, es necesario que personal
altamente calificado en el análisis de sistemas las elabore y defina los estándares que se
emplearán.
Fases
del diseño
Al igual que con las especificaciones, los ámbitos de calidad del diseño tienen una
relación directa con el ciclo de vida tradicional del software, pues se llevan a cabo en la
fase de diseño.
En este ámbito, una lluvia de ideas del equipo de desarrollo es muy útil para ayudar a los
diseñadores a llegar a la mejor solución para el proyecto.
Las actividades que normalmente se llevan en la fase de desarrollo del ciclo de vida del
software comprenden:
Creación de la base de datos y estructura de tablas
Desarrollo de librerías
Desarrollo de pantallas
Desarrollo de reportes
Desarrollo de planes de pruebas unitarias
Desarrollo de procesos
Las ventajas que se obtienen cuando se desarrolla a partir de este tipo de directrices son
muy importantes para garantizar el desarrollo de un sistema de software de calidad, así
como su futuro mantenimiento.
Para efectuar una medición sobre los niveles de calidad logrados, se pueden seguir las
siguientes alternativas:
Este tema abarcó la relación que existe entre el ciclo de vida del software y cómo es
posible analizar si se están llevando a cabo controles de calidad en cada una de sus
fases. Es muy importante comprender cuáles son los ámbitos que definen la calidad del
software, debido a que en el siguiente tema se abordará la forma en que ésta se asegura,
a través de sus ámbitos de análisis: especificación, diseño, desarrollo y conformidad.
En este nuevo tema, el objetivo fundamental será implementar aquellos mecanismos que
permitan tener la certeza de que los esfuerzos realizados en busca de la calidad no sean
desperdiciados, implementando controles sobre los procesos y resultados para que en
determinado momento puedan ser detectados errores (pruebas) no vistos durante el
desarrollo, o simplemente para adaptar el software a nuevos requerimientos del usuario
(mantenimiento). En este momento es posible ver que, en la búsqueda de la máxima
calidad en el desarrollo de software, son de vital importancia las fases de pruebas y
mantenimiento, sea cual sea el modelo elegido para el ciclo de vida o el estándar bajo el
que se lleven a cabo los desarrollos.
3. Se realiza una solicitud que toma como base un producto de software similar al
deseado, y se incluye la personalización que se requiere para adaptarlo a los
requerimientos del usuario.
Sin importar cuál sea el escenario desde el que fueron generadas las especificaciones, y
una vez que están definidas, el aseguramiento de la calidad del software comienza su
intervención, organizando, clasificando y evaluando las especificaciones obtenidas.
El proceso de diseño puede ser explicado de manera muy simple de la siguiente forma:
Producto
final
de esas alternativas para el proyecto, hasta finalizar con el diseño conceptual que se
refiere a determinar cómo se va a almacenar, manipular y distribuir la información.
En esta etapa del ciclo de vida de sistemas, es posible pensar que si se han llevado a
cabo de manera correcta las dos fases anteriores (especificaciones y diseño), tendrá
como consecuencia que la fase del desarrollo sea correcta también.
Sin embargo, esta fase puede tener muchos defectos de calidad, debido a que la forma
de desarrollar el código va a depender propiamente del programador que lo haga; puede
que su resultado final cumpla lo establecido en la fase de diseño, pero que el componente
de software que desarrolle consuma muchos recursos del sistema o que su código sea
ilegible para otros desarrolladores, provocando así un mantenimiento más costoso.
Finalmente, para asegurar que la fase de desarrollo fue cumplida bajo un esquema de
calidad, se puede aplicar un proceso que ayuda a garantizar este hecho: pruebas de
sistemas de software, mismo que se detallará en la unidad 2 de esta asignatura.
Llorens (2005) señala que G. J. Myers1, estableció que la confiabilidad del software es la
probabilidad de que se ejecute con éxito y sin fallas por un determinado tiempo,
ponderada por el costo que representa para el usuario cada falla.
a) Funcionabilidad
b) Fiabilidad
c) Usabilidad
d) Entendibilidad
e) Eficiencia
f) Mantenibilidad
g) Transportabilidad
Las métricas son aplicadas a un producto de software no ejecutable y durante las etapas
de su desarrollo. Permiten medir la calidad de los entregables intermedios, predecir la
calidad del producto final, y hacer posible que el usuario inicie acciones correctivas
tempranas en el ciclo de desarrollo.
Lo anterior da lugar a:
1
Científico norteamericano de la computación moderna.
Estas interrogantes son las causantes de que hoy en día la tecnología se encuentre en un
nivel de crecimiento muy acelerado, y que se cuenten con más y mejores servicios de
tecnologías de la información. Los más grandes visionarios de este mundo han sido
aquellos que se han cuestionado los lineamientos con los que se deben de realizar las
cosas, y a partir de ello han llegado a nuevas y mejores maneras de realizarlas.
Esta reflexión inicial es pertinente, debido a que el cuestionar la manera en que se lleva a
cabo un proceso es parte fundamental del concepto de calidad. Por ejemplo, en un inicio,
la documentación de los sistemas no existía o se resumía a notas de los desarrolladores
sobre sus códigos, que solo ellos comprendían o podían interpretar. Posteriormente, los
equipos de desarrollo se dieron cuenta de que esta forma de trabajar no era eficiente y
cuestionaron sus procesos pues, cuando se necesitaba realizar mantenimiento a los
códigos, se convertía en una labor muy tediosa porque a los desarrolladores les costaba
mucho trabajo retomar lo previamente programado.
Esta problemática se resuelve creando estándares que han mejorado la forma en que se
hacen los procesos. Ellos mismos han evolucionado de acuerdo con las necesidades de
los usuarios.
La relación que guarda este estándar con las pruebas y mantenimiento de software,
consiste en que describe los procesos como un plan integral que debe elaborarse
sistemáticamente para su correcta ejecución.
De acuerdo con este estándar, los planes para el aseguramiento de la calidad del
software contemplan los siguientes elementos (Galin, 2004):
Propósito: objetivo específico que tendrá el plan de SQA. El propósito de un plan de
SQA es delimitar claramente su alcance, enlistando los componentes de software y su
uso.
Revisiones y auditorias: deberán llevarse a cabo como parte del plan SQA. Entre las
más importantes se encuentran las revisiones de las especificaciones, del diseño y de
la implementación del software. Entre las auditorías más importantes se destacan la
de funcionalidad, de fechas de entrega y de diseño.
seguimiento, así como el plan de acción para resolverlo. Incluye tanto los productos de
software como el propio proceso.
Control de código: la forma en la que deberá escribirse el código fuente del producto
de software. Incluye control de versiones, librerías, clases y convencionalismos
particulares, tales como la forma en la que se nombran las variables o las clases.
De acuerdo con Vértice (2010), el estándar ISO 9001:2008 establece los lineamientos
necesarios para implementar sistemas de gestión de calidad. Según estadísticas
mostradas en el sitio web del organismo, es empleado por más de un millón de empresas
y organizaciones en más de 170 países.
Seguir estándares no es contar con una varita mágica que solucione todos los problemas
de una empresa, multiplique exponencialmente las utilidades, y elimine al máximo los
costos. Contar con un estándar como este implica todo un proceso que debe, en primer
lugar, cumplirse y posteriormente medirse o evaluarse.
Este estándar abarca a las organizaciones en un nivel general, va más allá del equipo de
desarrollo de software para integrar a todas y cada una de las áreas que componen su
estructura. Esta integración representa, para toda la organización, numerosas ventajas de
operación. La principal es que se definen y documentan claramente los procesos de la
organización.
Este material es de suma importancia para los analistas de sistemas, pues cuentan con
una herramienta muy poderosa de análisis que les permitirá realizar mejor su trabajo al
proponer o diseñar sistemas que optimicen dichos procesos.
Esta misma perspectiva de rayos-x del negocio permitirá elaborar proyectos de pruebas y
mantenimiento de software más eficientes, debido a que se contará con la información
suficiente para planear los procesos sin afectar la operación de la organización.
ISO/IEC 29119-4: técnicas de prueba, define un estándar internacional que cubre las
técnicas de diseño de pruebas de software (también conocidas como técnicas de diseño
de casos de prueba o métodos de prueba), que se puede utilizar durante el diseño de
prueba e implementación de procesos, dentro de cualquier organización o del ciclo de
vida de del desarrollo de software.
La descripción del objetivo y el resultado del proceso, que está soportado por un
conjunto de indicadores de desempeño de los procesos.
Los niveles de capacidad y atributos de proceso definidas en la norma ISO/IEC 33020
(evaluación del proceso-marco de medición para la evaluación de la capacidad del
proceso y la madurez de la organización), y su escala de calificación asociada.
El SQA, aseguramiento de la calidad del software (software quality assurance, por sus
siglas en inglés), es un esfuerzo más por estandarizar los procesos y modelos que
evalúan y aseguran un sistema de software con un nivel alto de calidad.
Es posible definir al SQA como un conjunto de actividades que tienen como objetivo
proporcionar confianza en que se desarrollará un software de calidad. Las actividades del
SQA abarcan todo el proceso de desarrollo de software. El aseguramiento de la calidad
del software asegura que el producto cumple con los requisitos técnicos del sistema
(Moliner, 2005).
Llorens (2005) señala que el término inglés software quality assurance (SQA) se traduce
comúnmente como control de calidad en sistemas, y que una unidad SQA en una
organización tiene como función principal motivar, promover y controlar la calidad de los
sistemas. Según Llorens, en la década de los años 80, ante el éxito de la industria
japonesa, las empresas prestaron mayor atención a la calidad de sus productos y
servicios con base en la experiencia japonesa, la cual se centró en:
El aseguramiento de la calidad del software se relaciona de manera muy directa con los
procesos de pruebas y mantenimiento de la siguiente forma: entre mayor sea el grado de
calidad de un producto de software, éste tendrá menos errores; mientras que si el
producto de software no es desarrollado bajo ningún esquema de calidad, los errores
serán numerosos y requerirá mayor esfuerzo en las fases de pruebas y mantenimiento.
Desde la posición del cliente, el trabajo del equipo de SQA lo representa. Entre las
funciones en este papel se identifican:
Señalar la funcionalidad que el cliente desea
Es posible que el equipo que define la metodología no pertenezca al equipo de QA, y sea
el SEPG (software engineering process group), equipo totalmente independiente
encargado de definir la metodología, mientras que el equipo de QA se limita a verificar
que se cumpla.
COSTOS
ADCPIO
Costo de corregir defectos en cada fase del ciclo de vida de software. Tomado de Reynolds, 1995.
Como es posible apreciar, conforme avanza el desarrollo del proyecto, el costo por
corregir defectos se incrementa notoriamente. Nótese que en la fase de análisis este
costo es casi nulo. Una ventaja de implementar SQA en los proyectos de desarrollo de
software, es que si la fase de análisis ha sido controlada bajo el esquema de calidad, los
errores que se presenten en su fase de operación serán mínimos o nulos, reduciendo de
esta manera los costos por mantenimiento.
Según Moliner (2005), entre las principales actividades que se llevan a cabo en el SQA se
encuentran:
Análisis de errores: se analiza el origen de los errores que son detectados con el
objetivo de definir estrategias que ayuden a prevenirlos y corregirlos.
de cambios, y así contar con el registro de las modificaciones que llegarán a tener
dichos componentes.
De acuerdo con Galin (2004), los siguientes son algunos elementos que comprende un
plan de SQA:
1. Objetivos de calidad
Hace referencia a los lineamientos de calidad del sistema desarrollado. En otras palabras,
se refiere a la funcionalidad que se espera tenga el software.
Los objetivos de calidad sirven como métricas para el éxito con el que el software cumple
los requerimientos del cliente.
Por cada actividad de este plan se deben describir los siguientes puntos:
Tipo de actividad
Alcance
Planificación
Procedimientos
Personal que ejecutará la actividad
Por cada actividad de este plan se deben describir los siguientes puntos:
Que el software sea realizado por terceros no significa que no sea susceptible de entrar
en el plan SQA. En estos casos, lo más recomendable es que el personal experto en
tecnología participe directamente en la elaboración de los requerimientos que deberá
cumplir el software externo, junto con el personal de las áreas que hicieron la solicitud de
la adquisición.
En el plan SQA se debe contar con una relación completa del software desarrollado
externamente. Los puntos que deben incluirse son:
Software adquirido
Software desarrollado por terceros
Software proporcionado por el cliente
5. Gestión de la configuración
El plan SQA debe especificar los procedimientos para la gestión de configuración,
incluyendo un control de cambios que se aplica a todo el proyecto.
Los procesos del SQA contemplan a todas las actividades involucradas en el ciclo de vida
de sistemas de software: análisis, diseño, desarrollo, implementación, pruebas y
mantenimiento (Sommerville, 2011). Es importante analizar la forma en que estos
procesos son llevados a cabo dentro de las organizaciones, así como los miembros del
equipo de desarrollo que los llevan a cabo. Estas recomendaciones se analizan en el
siguiente apartado.
Las ventajas de que exista, dentro del equipo de trabajo, un rol dedicado por completo al
aseguramiento de la calidad, conllevan múltiples mejoras que justifican por completo los
costos que se generen. Por ejemplo, analiza los siguientes escenarios:
Una vez analizado lo anterior, los costos que pudiera representar el contar con personal
dedicado al aseguramiento de la calidad, no son comparables con los costos que puede
llegar a generar el hecho de no tener a la calidad como eje de desarrollo de sistemas de
software.
A las personas que llevan a cabo las actividades del SQA se les conoce como analistas
de la calidad del software, y su principal función es la de vigilar el uso correcto de los
estándares de la organización como los que se estudiaron en el tema 1.1.1. Estándares
internacionales: ISO e IEEE, el estándar ISO/IEC 25000 y el IEEE 12207.
Al finalizar esta unidad, es conveniente hacerse esta pregunta: ¿qué relación existe entre
el aseguramiento de la calidad del software, las pruebas y el mantenimiento de sistemas
de software? Supóngase dos proyectos de desarrollo de software, el primero es
desarrollado bajo el estándar ISO/IEC 25000 y auditado en SQA; mientras que el segundo
no es desarrollado bajo ninguna estandarización ni auditado en SQA.
¿En qué proyecto existirá una mayor necesidad de implementar proyectos de pruebas y
mantenimiento? ¿Serán igualmente confiables o tendrán la misma calidad? En definitiva,
el proyecto desarrollado bajo esquemas estandarizados y auditado en SQA tendrá menor
necesidad de pruebas y mantenimiento debido a que, durante todo su desarrollo, cada
fase tuvo a la calidad como punto de partida.
Autoevaluación
Realiza la autoevaluación con el fin de que puedas analizar el avance que has tenido, así
como detectar las áreas de oportunidad respecto al estudio de la primera unidad.
Autorreflexiones
Cierre de la unidad
Esta primera unidad también ha analizado los ámbitos que definen la calidad del software
en las distintas fases del ciclo de vida, las cuales son:
Calidad de la especificación (fase de análisis)
Calidad del diseño (fase de diseño)
Calidad en el desarrollo (fase de implementación)
Calidad de la conformidad (fase de mantenimiento)
De igual manera, se relacionaron cada una de estas fases con las actividades que se
deben seguir para asegurar que el desarrollo sea de calidad. En este sentido, es muy
importante recordar que no es necesario seguir un determinado modelo del ciclo de vida
para que pueda ser integrado al enfoque de calidad, pues los ámbitos de análisis de la
calidad funcionan de manera general, y se adaptan al modelo que se esté empleando
para el desarrollo. El siguiente paso en la búsqueda de la calidad y mejora continua, es el
análisis de fondo de cada uno de los procesos del desarrollo de software, con el objetivo
de optimizarlos mediante la detección y resolución de errores.
En esta unidad se analizaron también las diferentes connotaciones que tiene el concepto
de calidad, y cómo puede aplicarse en las organizaciones. Los estándares internaciones
son una excelente referencia para encaminar nuestro trabajo profesional por el camino de
la calidad. Recuerda que estos estándares deben adaptarse a nuestras necesidades, pero
es necesario revisar su vigencia, pues constantemente se actualizan y mejoran.
Estos temas te han proporcionado las bases necesarias para avanzar en las siguientes
unidades. Con lo visto, podrás orientar los proyectos de pruebas y de mantenimiento de
sistemas de software a la búsqueda de la mejora continua con un enfoque de calidad.
http://www.oracle.com/technetwork/java/codeconv-138413.html
http://franciscovaldessouto.wordpress.com/2013/04/24/midiendo-la-calidad-de-
software-caso-practico-2/
Fuentes de consulta
Calero, C., et ál. (2010). Calidad del producto y proceso software. España: Ra-Ma.
Carrol, S., et ál. (2007). Fundamental Concepts for the Software Quality Engineer, 2a.
ed. Estados Unidos: American Society for Quality.
Rojas, S.E., Borjas, J.J. (1999).Calidad del Software: camino hacia una verdadera
industria del software. Escuela de administración de negocios, 38, 42-44. Bogotá,
Colombia.
ISO 25000 Calidad del producto de software. (2014). La familia de normas ISO/IEC
25000. Recuperado de http://www.iso25000.com/index.php/normas-iso-25000
Land, S., et ál. (2008). Practical Support for Lean Six Sigma Software Process
Definition: Using IEEE Software Engineering Standards. Estados Unidos: John Wiley &
Sons.
Reynolds, G. (1995). Information Systems for Managers, 3a. ed. Estados Unidos: West
Publishing Company.
Sommerville, I. (2011). Ingeniería del software. 9a. ed. España: Pearson Educación.
Tuya, J., et ál., (2007). Técnicas cuantitativas para la gestión en la ingeniería del
software. España: Netbiblo.