2.1 Calidad en la ingeniería del software
En una versión sucinta la calidad en
la ingeniería del software es un grupo de características
que representa la efectividad y la eficiencia de un sistema de información.
Es importante enfatizar en dos puntos :
Un software de calidad debe ser eficaz
, es decir, que debe realizar las funciones establecidas, debe
ser amigable. Un usuario debe utilizar el software porque produce
resultados confiables, realiza todas las operaciones que se requieren,
ejecuta las operaciones en un tiempo aceptado y es fácilmente
usado por el grupo de usuarios a quien este dirigido.
Un software de calidad debe ser eficiente
, es decir el costo de su desarrollo tomando todos los recursos
y el costo de su operación debe ser tal que las organizaciones
involucradas en su desarrollo y uso obtengan el máximo beneficio
o por lo menos un beneficio aceptable en un período de tiempo
establecido.
Se define la calidad de software como la ausencia de
errores de funcionamiento, la adecuación a las necesidades del
usuario, y el alcance de un desempeño apropiado (tiempo, volumen,
espacio), además del cumplimiento de los estándares. Los
objetivos que la calidad persigue son: la aceptación (utilización
real por parte del usuario) y la mantenibilidad (posibilidad y facilidad
de corrección, ajuste y modificación durante largo tiempo).
Para alcanzar estos objetivos, es necesaria una actitud y compromiso
de todo el personal que se encuentre en el desarrollo del proyecto,
y en todas y cada una de las etapas (en general, planeación,
análisis, diseño, programación, pruebas, mantenimiento)
correspondientes al ciclo de vida que se hubiese seleccionado para el
proyecto. En forma adicional durante el proceso de aplicación
de las metodologías se requiere tener en cuenta :
- Realización de Revisiones Técnicas Formales durante
cada etapa.
- Realización de pruebas y revisiones por personas “externas”
al proyecto.
- Elaboración de la adecuada documentación del software,
y de los cambios.
- Verificación del cumplimiento de los estándares de
desarrollo
- Medición permanente de la productividad del proceso y de
la calidad de los resultados.
- Desarrollo y ajustes de modelos estadísticos de calidad
y productividad.
- Control de la desviación de los promedios de calidad y productividad.
Uno de los elementos que permite dar garantía
acerca de la calidad del software es la aplicación de métricas,
estas son medidas estadísticas aplicadas a un software determinado,
garantizando calidad así como lo afirma Pressman: “La garantía
de calidad del software, es una “actividad de protección” que
se aplica a lo largo de todo el proceso de ingeniería del software”.
Todos los elementos anteriormente enumerados indican
herramientas que se deben tener en cuenta al momento de desarrollar
un software, agrupando en una definición estos elementos se afirma
que : Un software debe estar desarrollado “En concordancia con los requisitos
funcionales y de rendimiento explícitamente establecidos, con
los estándares de desarrollo explícitamente documentados
y con las características implícitas que se espera de
todo software” , si cumple los aspectos señalados se puede afirmar
que se posee un software de calidad. Teniendo en cuenta esto, se puede
afirmar :
Los requisitos del software son la base
de las medidas de la calidad.
Los estándares especificados definen
un conjunto de criterios de desarrollo que guían la forma en
que se aplica la ingeniería del software, Si no se distinguen
esos criterios no habrá calidad del software.
Existe un conjunto de requisitos implícitos
que a menudo no se mencionan, si no se alcanzan estos requerimientos
podría la calidad quedar en entredicho. Los requisitos son llamados
por los usuarios finales llaman elementos obvios, los cuales el diseñador
no debe dejar pasar sin explicación.
Para estar seguros de las anteriores afirmaciones se
tienen en cuenta factores que se pueden medir estos son llamados factores
de calidad. Éstos se agrupan en dos bloque así :
Factores que pueden ser medidos directamente
(errores, líneas, tiempo, …)
Factores que sólo pueden ser medidos
indirectamente (facilidad de uso, mantenimiento, …)
Para ilustrar el concepto de calidad de manera más
profunda, es necesario considerar algunos aspectos fundamentales que
caracterizan al software de calidad como son: solidez, exactitud, completitud,
mantenibilidad, reutilizabilidad, claridad en la documentación,
entre otros que serán descritos a continuación.
Aspectos básicos de calidad
de software
La descripción que se hace de los factores que
influyen en un software de calidad se basan principalmente en las ideas
presentadas por Dunn (1990), Crosby (1979) y Pressman (1998). Sin embargo,
también se han tomado algunos aportes de Bertrand Meyer y Mauricio
Fernando Alba (1992).
Dunn (1990) presenta la calidad en el software tomando
dos puntos de vista : la calidad en el proceso de desarrollo y la calidad
en el producto final, estos dos grupos principales los agrupa en los
siguiente aspectos de calidad : confiabilidad, utilizabilidad, mantenibilidad,
y adaptabilidad.
Pressman (1998) describe similares factores de calidad
agrupados en tres grupos: calidad en operación, calidad en revisión
y calidad en transición.
A continuación se presentan los factores de
calidad de acuerdo al orden dado por Dunn (1990).
2.2.1. Confiabilidad . Este
termino es necesario sea separado en varios elementos que permiten darle
al software el matiz de fiable. Sus componente son : Completitud, consistencia
y precisión, solidez, simplicidad, calidad en los procesos de
desarrollo y seguridad y Verificabilidad, estas dos últimas que
se determinan con el sistema en uso.
2.2.2 Usabilidad . Si bien
es cierto que la confiabilidad es un factor muy importante en la calidad
del software también lo es el hecho de que es necesario considerar
otros factores como los que se mencionan en esta sección puesto
que de nada sirve un software que funcione correcta y confiablemente
si el usuario prefiere no utilizarlo. Estos son: exactitud de los procesos,
claridad y exactitud de la documentación, completitud, eficiencia
y verificabilidad del software y claridad y amigabilidad de la interfaz.
2.2.3 Mantenibilidad . Este
aspecto de calidad involucra los elementos que simplifican la labor
de prevención, corrección o ampliación del código
del programa. Retomar un código escrito meses antes es un trabajo
dispendioso y agobiante, en especial cuando las aplicaciones no cuentan
con la característica a la cual aquí se hace referencia.
Se pueden considerar como atributos de este aspecto : exactitud y claridad
en la documentación, modularidad (acoplamiento), facilidad de
lectura y simplicidad.
2.2.4 Portabilidad . Es la
capacidad que posee un sistema de información que le permite
funcionar en diferentes plataformas ya sean hardware o de software.
Otro autor que contribuye con el aspecto de las medidas
en el software es McCall, él y sus colegas proponen tres factores
de calidad y sus partes así :
Factor 1 . Características
operativas, relacionadas con las operaciones del producto. Son: corrección,
fiabilidad, eficiencia, integridad y facilidad de uso.
Factor 2 . Capacidad de soportar cambios,
relacionado con la revisión del producto. Facilidad de mantenimiento,
flexibilidad y facilidad de prueba.
Factor 3 . Adaptabilidad, relacionado
con la transición del producto. Portabilidad, reusabilidad –
reutilizabilidad e interoperabilidad.
Como se aprecia en la anteriores palabras son muchas
las características a tenerse en cuenta al momento de desarrollar
software, estos deben aparecer como políticas o lineamientos
en los procesos de desarrollo al interior de posproyectos o empresas,
ya que se ha llegado al caso colombiano; donde las aseguradoras no realizan
amparos para contratos de desarrollo de software; dadas las pocas garantías
de le entrega exitosa y el gran número de demandas realizadas
por la empresas a las compañía desarrolladoras de software,
esto llego a situaciones no deseadas, y una de las razones principales
es no poseer ciclos de desarrollo adecuados a las necesidades del proyecto
y a las formas de trabajo del personal.
Siendo esta preocupación, no solo actual sino
histórica se plantean nuevas formas de desarrollo que permitan
llevar el ejercicio del desarrollo de software a otro nivel apareciendo
los modelos orientados a objetos. |