Procesos de Desarrollo

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.