Cómo se construye un software de calidad

En el desarrollo de software, la calidad del producto depende fuertemente de la calidad de los “modelos” que definen las necesidades de los clientes y que representan a ese software. La construcción de estos modelos es una tarea compleja, que requiere de conocimientos tanto de informática como de ciencias sociales.

Por la Dra. María Claudia Degrossi

La doctora Graciela Hadad, investigadora de la Facultad de Ingeniería y Tecnología Informática de la Universidad de Belgrano, junto a su equipo de investigación, verifica mediante diferentes técnicas los modelos más frecuentemente empleados. El objetivo es detectar sus defectos y corregirlos, lo que en forma directa impacta en una mejora de la calidad del software en desarrollo.

Los especialistas han diseñado tres variantes de verificación por inspección sobre un modelo léxico (glosario con los términos significativos que utilizan los clientes en su contexto de trabajo) para determinar cuál resulta más eficaz y cuál requiere menos esfuerzo. Cada variante tuvo sus ventajas y sus limitaciones. Las observaciones alcanzadas en esta investigación pueden ayudar a la gerencia de un proyecto de software a decidir sobre qué variante de inspección utilizar, en función de los tipos de defectos más críticos según la naturaleza del software, y/o en función del tiempo y los recursos humanos (y nivel de experiencia) disponibles para esta tarea.

Antes de desarrollar un software es necesario elaborar modelos que definan las necesidades de los clientes. Es una práctica habitual construir dichos modelos en un formato de texto (lenguaje natural) con una estructura simple, utilizando el propio vocabulario de los clientes, para que resulte más fácil de comprender.

Construir el modelo no es una actividad trivial, se requiere de conocimientos avanzados de informática como también conocimientos de las ciencias sociales, dado que hay una tarea intensiva de comunicación entre el cliente y el ingeniero que construirá el modelo y luego el software.

Sin embargo, estos modelos suelen presentar algunos problemas de ambigüedad y falta de completitud. La doctora Hadad señala que en un estudio empírico se observó que la mitad de los modelos escritos en lenguaje natural contenía terminología ambigua. «En otros estudios independientes se detectó que ciertos modelos también escritos en lenguaje natural tenían un nivel de omisiones superior al 40%», señala la especialista a Argentina Investiga. Por consiguiente, es importante identificar estos defectos y corregirlos tempranamente para evitar su propagación sobre el producto software. Es decir, asegura Hadad, «la calidad de los modelos impacta directamente sobre la calidad del software».

La actividad de verificación, que se encarga de detectar defectos en los modelos y corregirlos, puede realizarse mediante diferentes técnicas. Una técnica de verificación que consigue una alta eficacia en la identificación de defectos es la inspección. Esta técnica incluye no sólo un proceso formal de captura y corrección de defectos, sino también un mecanismo de mejora del propio proceso de inspección para hacerlo más productivo. En esta técnica se sigue una serie de pasos bien establecidos para detectar defectos mediante una lectura cuidadosa del modelo por personas idóneas en la técnica y en el tipo de modelo (denominados inspectores), donde luego, en una reunión, los inspectores presentan los defectos identificados a los autores del modelo, de tal manera que estos confirmen o rechacen esos defectos, y finalmente se corrijan aquellos defectos que se aceptaron como tales.

Una de las relaciones que se tiene en cuenta en el desarrollo del software es la de costo-beneficio, como en toda actividad de la ingeniería. En este sentido, las inspecciones demandan tiempo y esfuerzo humano, pero tienen alta efectividad en mejorar la calidad del software, y esto debe ser considerado por las organizaciones que lo desarrollan.

A lo largo de los años se han diseñado distintas variantes de la técnica de inspección para analizar modelos en lenguaje natural. Estas variantes son:

A) Examinar el modelo de una manera ad-hoc, en base a la experiencia del inspector sobre los defectos que pueden encontrarse en dicho tipo de modelo;
B) examinar el modelo utilizando una lista de control (checklist) que evite olvidar la búsqueda de ciertos defectos posibles de ocurrir en ese modelo;
C) examinar el modelo utilizando procedimientos que guíen la manera en que se pueden detectar defectos en ese modelo, y
D) examinar el modelo a partir de la construcción de otro artefacto (producto que puede ser un software u otro modelo) sobre el que será más fácil identificar los defectos.

Hadad señala que en varios estudios experimentales se observó que la inspección basada en procedimientos (C) lograba mayor eficacia que la inspección con lista de control (B), siendo la inspección ad-hoc A) la que obtenía peores resultados, a similar experiencia de los inspectores. La investigadora comenta que, sin embargo, en la mayoría de estos experimentos no se analizó el tiempo empleado en las inspecciones, un factor de suma relevancia en esta técnica, dado que es considerada muy demandante de tiempo respecto a otras técnicas de verificación. Agrega que “en un experimento pudo comprobarse que la inspección basada en procedimientos (C) requería más tiempo que la basada en lista de control (B), aunque la primera lograba detectar en promedio más defectos”. Por ello es útil poder establecer la relación entre tiempo requerido, calidad obtenida y el nivel de experiencia del inspector. «Cuando hablamos de la calidad obtenida, nos estamos refiriendo a la cantidad de defectos identificados y su corrección, es decir, se mejora la calidad fundamentalmente liberando al modelo de defectos», argumenta Hadad. «Asimismo, se ha observado en la literatura una falencia en el estudio de inspecciones basadas en la construcción de un artefacto auxiliar (D)», agrega.

Consultada acerca del objetivo de su trabajo, la directora del proyecto comentó: «en nuestro trabajo de investigación se han diseñado inspecciones con checklist (B), con procedimientos (C) y bajo la modalidad constructiva de artefactos (D), aplicándolas a ciertos tipos de modelos en lenguaje natural».

Recientemente, realizaron un estudio empírico comparativo de estas tres variantes de inspección sobre un modelo léxico (glosario con los términos significativos que utilizan los clientes en su contexto de trabajo) para establecer qué variante resulta más eficaz para capturar determinados defectos y qué esfuerzo requiere. En el estudio utilizaron cinco glosarios distintos, involucrando inspectores novatos, a los que entrenaron para utilizar estas variantes de inspección. A cada inspector se le asignó un glosario y una variante de inspección. A su vez, a cada glosario se le aplicó cada una de las tres variantes de inspección, realizándose un total de quince inspecciones.

Los defectos se tipificaron en: inconsistencias, hechos incorrectos, omisiones y ambigüedades. Además, cada defecto se calificó según su grado de severidad en: alto, medio o bajo. Por cada inspección realizada se midieron los tiempos empleados, y el número de defectos encontrados por tipo de defecto y por grado de severidad. Las tres variantes fueron: Checklist (B), Procedimientos (C) y Constructiva (D). El promedio de cantidad de defectos por término definido fue de 1,56 para (B); 1,43 para (C) y 2,13 para (D).

En el análisis de los resultados de las inspecciones, pudo observarse que:
• La variante constructiva llevó más tiempo que la variante con lista de control, pero logró tasas de detección de defectos muy superiores.
• La variante con procedimientos insumió mucho más tiempo capturando menos defectos.
• La variante constructiva tuvo más inspecciones con mayor cantidad de defectos capturados, mientras que la variante con procedimientos tuvo más inspecciones con bajas tasas de detección de defectos.
• La variante constructiva tuvo más inspecciones con altas tasas de detección de defectos de severidad alta y media.
• La variante constructiva fue la que identificó más omisiones y ambigüedades.
• La variante con lista de control tuvo mejor eficacia en capturar errores.

Estas observaciones podrían ayudar a la gerencia de un proyecto de software a decidir sobre qué variante de inspección utilizar, en función de los tipos de defectos más críticos según la naturaleza del software, y/o en función del tiempo y los recursos humanos (y nivel de experiencia) disponibles para esta tarea.

El Grupo de Investigación en Ingeniería de Requisitos pertenece a la Facultad de Ingeniería y Tecnología Informática, de la Universidad de Belgrano y está compuesto por la doctora Graciela D. S. Hadad; el especialista Alberto Sebastián, la licenciada Daniela Raffo y las alumnas de grado Gabriela Castañeda Marrero y Natalia Mercedes Vidal Monge Navarro.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s