Link-up the requirements and testing

Anuncio
RACCIS 4(2), pp. 39-46 (2014)
Revista Antioqueña de las
Ciencias Computacionales y la Ingeniería de Software
ISSN: 2248-7441
www.fundacioniai.org/raccis
[email protected]
Link-up the requirements and testing - How much progress has been made?
Vinculación entre requisitos y pruebas - ¿Qué tanto se ha avanzado?
Marc Luisiana1, Alissa Murthor2
BORLAND. luisianamarc(AT)borland.com1, murthoralissa(AT)borland.com2
INFORMACIÓN DEL ARTÍCULO
Tipo
Revisión
Historia
Recibido: 23-07-2014
Correcciones: 09-09-2014
Aceptado: 15-10-2014
Keywords
Requirements Engineering, software
quality, functional testing, software
errors.
Palabras clave
Ingeniería de Requisitos, calidad del
software,
pruebas
funcionales,
errores del software.
ABSTRACT
In Requirement Engineer are conducted two fundamental process of software engineer: 1)
specification of system expectations, and 2) tests to ensure that they are fulfil. Giving its
importance to product quality and efficient develop is crucial they are aligned. In literature
can be found a wide investigation in both fields, but scarce the works about how link them. In
this work is presented a study with the goal of mapping this situation, and to identify useful
approaches to future research. Over 100 jobs found only 35 were considered relevant to make
them a discussion in the light of the sub-categories of models based on evidence and
traceability.
RESUMEN
En la Ingeniería de Requisitos se llevan a cabo dos procesos fundamentales de la Ingeniería
de Software: 1) la especificación de las expectativas del sistema, y 2) las pruebas para
garantizar que se cumplan. Dada su importancia para la calidad del producto y el desarrollo
eficiente es crucial que estén alineados. En la literatura se puede hallar una amplia
investigación en ambos campos, pero escasean los trabajos acerca de cómo vincularlos. En
este trabajo se presenta un estudio con el objetivo de mapear esta situación, y para identificar
enfoques útiles y necesidades para la investigación futura. De más de 100 trabajos
encontrados sólo 35 se consideraron relevantes para hacerles una discusión a la luz de las
sub-categorías de modelos basados en pruebas y en trazabilidad.
© 2014 IAI. All rights reserved.
1. Introducción
Con la creciente demanda por el mejoramiento de la
calidad del software, la necesidad y la importancia de las
pruebas se ha hecho más evidente en los últimos años. Para
los sistemas de seguridad crítica, como las misiones
espaciales, el diagnóstico médico, y la aviación, las pruebas
son un aspecto crucial para su éxito porque los errores
pueden causar pérdidas irreparables. Por otro lado, la
Ingeniería de Requisitos (RE) representa una visión
complementaria de un sistema y por lo tanto tiene una
relación sinérgica con las pruebas [1]. Por lo tanto, acercar
la RE y las pruebas podría ser de amplio beneficio para
ambas disciplinas y para el mejoramiento de la calidad del
software [2]. También ayudaría a descubrir posibles
errores en las etapas tempranas, lo que a su vez mejoraría
la fiabilidad del producto y los clientes estarían más
satisfechos [3, 4]. Desde la perspectiva de la gestión de
proyectos, la vinculación de los requisitos y las pruebas
permitiría estructurar planes de prueba más precisos, lo
que se reflejaría en el costo del proyecto y en la estimación
del calendario. De esta forma, probablemente el proyecto
se termine dentro de la programación y el presupuesto
planificado [1].
Aunque la industria está cada vez más interesada en lograr
esta vinculación, a menudo en las prácticas de RE no lo
logra y cada vez se amplía la brecha entre ellos. Es
llamativo que en estos esfuerzos la atención se ha centrado
principalmente en los requisitos funcionales más que en
los no-funcionales; en parte porque los primeros juegan un
papel significativo en el éxito de los proyectos, aunque
Grunske [5] establece que a menudo el cumplimiento de
los segundos es más importante para tener un cliente
satisfecho; y Matoussi y Laleau [6] señalan que la
verificación de estos requisitos casi siempre se hace muy
tarde, después de terminar la aplicación. El objetivo en este
trabajo es realizar un mapeo sistemático acerca de lo que
se propone en la literatura para alinear la especificación de
requisitos y las pruebas, con el propósito de presentar una
visión general de la investigación en esta área.
Entre los trabajos encontrados acerca de esta temática se
presta amplia atención a esta trazabilidad, porque puede
ayudar a determinar qué requisito ha sido cubierto por
cuál prueba y cómo los casos de prueba generados cubren
estos requisitos [6]. Rastrear los resultados de las pruebas
a los requisitos también es útil para encontrar la causa de
una prueba fallida. Otra razón importante es que la
trazabilidad mejora la gestión del cambio, ayudando a
descubrir cómo se refleja en un requisito al aplicar los
casos de prueba. También ha llamado la atención la
investigación en áreas como el desarrollo basado en
39
modelos y la arquitectura basada en modelos [7], porque
son técnicas que están logrando la curiosidad de la
industria porque proporcionan derivación automática de
casos de prueba a partir del modelo de comportamiento
del sistema, llamado modelo de prueba.
Esta investigación presenta un mapeo sistemático, que,
como Petersen et al. [8] describen, consiste en una visión
general de los estudios primarios realizados sobre un tema
específico y la categorización de los resultados,
proporcionando un resumen visual. Como tal, un mapa
sistemático ofrece una visión general de un campo
identificando posibles lagunas en la investigación,
mientras que una revisión sistemática de la literatura
proporciona un estudio más detallado de los resultados
identificados [9]. El proceso del mapeo consiste de cinco
fases [8]: 1) definición de las preguntas de investigación,
2) realización de la búsqueda de los estudios primarios, 3)
proyección de artículos para inclusión/exclusión, 4)
clarificación de los resúmenes, y 5) extracción y mapeo de
los datos.
2. Método de investigación
1. Definición de las preguntas de investigación. Para buscar
las investigaciones existentes sobre la alineación de
especificación de requisitos y las pruebas se
formularon las siguientes preguntas de investigación:
P1. ¿Qué estudios se han realizado acerca de la
vinculación de la especificación de requisitos y las
pruebas? El objetivo es conocer: qué temas han sido
investigados y en qué medida; cuáles de estos
estudios se centran en requisitos no-funcionales; y
cuáles son las diferentes perspectivas que abordan
la alineación, por ejemplo, qué enfoques de prueba
se utilizan. Esto ayudaría a identificar necesidades
de investigación complementaria.
P2. ¿Qué tipo de soluciones se representan en estas
investigaciones? La idea es encontrar las soluciones
dadas en las diferentes formas que abordan la
alineación, como método, proceso, marco,
herramienta, etc.
P3. ¿De qué forma se divulga la investigación acerca de
la alineación la especificación y las pruebas? Una
visión general sobre las formas que utilizan los
investigadores para publicar resultados también
podría ayudar con esta investigación.
2. Búsqueda de estudios primarios. Para llevar a cabo la
búsqueda se requería obtener una visión general de las
áreas de especificación de requisitos y de pruebas y de
su alineación. Para lograrlo se reunió un conjunto
inicial de publicaciones conocidas previamente a través
de una búsqueda exploratoria [1, 3-5, 10-15].
Posteriormente se amplió este conjunto utilizando la
referenciación de los trabajos, es decir, mirando cuáles
de los trabajos de la muestra fueron referenciados en o
se refieren a. Se encontraron 24 trabajos que ayudaron
a explorar y elegir palabras clave relevantes para el
mapeo sistemático. Desde las preguntas de
investigación y con base al estudio inicial se derivaron
algunas categorías para la realización de la cadena de
búsqueda: C1, requisitos no-funcionales (NFR); C2,
especificación de NFR; C3, pruebas de NFR; y C4,
vinculación de la especificación y las pruebas de NFR.
Posteriormente se formuló una combinación de las
categorías para llegar a la cadena de búsqueda: (C1 ˄
C2 ˄ C3 ˄ C4).
En la línea de tiempo se decidió cubrir todas las
investigaciones en los últimos 10 años, y se limitó a
documentos escritos en inglés. Las bases de datos
seleccionadas fueron Scopus, Inspec Ingeniería Village,
ISI Web of Knowledge, e IEEE Xplore. Luego se hizo un
refinamiento incremental de la cadena de búsqueda en
cinco pasos. En cada uno se registraron los resultados
para ver si contenían documentos del conjunto inicial;
en el caso que perteneciera a éste se desechaba y se
mejoraba nuevamente la cadena de búsqueda. Un
refinamiento importante fue la eliminación de la
categoría C2 de la cadena, porque muchos artículos en
el conjunto inicial no incluían el término especificación
en su título o resumen. Al encontrar pocos resultados
en NFR se decidió tomar algunas ideas desde la
alineación de requisitos y las pruebas en general. Así
que se añadió otra categoría C5 con el ítem requisito, y
se modificó la cadena de búsqueda a ((C1 ˅ C5) ˄ C3 ˄
C4). Después de la iteración final del refinamiento de la
cadena de búsqueda se alcanzaron 438 resultados.
3. Proyección de artículos para inclusión/exclusión. En esta
fase se definieron los criterios de inclusión y exclusión
a fin de lograr un entendimiento común entre los
miembros del equipo para realizar la proyección. El
proceso de selección se realizó en dos pasos: 1) se
consideraron el título y el resumen de todos los
documentos. Los principales criterios de inclusión
fueron: trabajos que describen la alineación de la
especificación de requisitos funcionales o nofuncionales y las pruebas. Se excluyeron trabajos en
congresos y artículos que no se centraran en el
desarrollo de software. En el proceso, si un
investigador no estaba seguro acerca de la exclusión de
un artículo, se dejaba para el segundo paso. Se
excluyeron 395 documentos en este paso. 2) Se hizo
una lectura completa a los documentos restantes. Se
excluyeron posters, artículos de opinión personal del
autor sobre lo que es bueno o malo [16], y trabajos
cortos (menos de 6 páginas). Los trabajos sólo se
incluyeron si habían sido objeto de revisión por pares.
Si los investigadores no estaban de acuerdo sobre la
inclusión o exclusión de algún trabajo se discutía hasta
llegar a una decisión por consenso. Se excluyeron 8
documentos en este paso. Al final, el número de
trabajos en la muestra se redujo a 35.
4. Clarificación de los resúmenes. En esta fase se desarrolló
el formulario de extracción de datos, en parte basado
en el utilizado por Ivarsson y Gorschek [17]. Para
construir esta forma se buscaron, a través del análisis a
los resúmenes, palabras y conceptos como contexto y
40
dominio, y para lograrlo se leyeron los documentos en
detalle. Utilizando las palabras clave finalmente se
seleccionaron los siguientes atributos: enfoque de la
investigación, tipo de contribución, calidad de los
resultados, dominio, y escala.
5. Extracción y mapeo de datos. A la medida que se
estudiaba el texto completo de los documentos también
se llenó el formulario de extracción de datos para cada
uno, y con el análisis a los mismos se respondió a las
preguntas de investigación.
3. Resultados
3.1 Para responder a P1 se hizo una clasificación de los
documentos y se encontraron las siguientes áreas y
sub-áreas de trabajo:
 Modelos basados en pruebas. Esta área es en la que
se encuentra mayor producción en la muestra, y los
requisitos informales son la base para el desarrollo
del modelo de comportamiento del sistema. Este
modelo se utiliza para generar casos de prueba
automáticamente. Uno de los problemas es que las
pruebas generadas no se pueden ejecutar
directamente en la implementación bajo prueba,
porque están en el mismo nivel de abstracción que
el modelo. Arnold, Corriveau y Wei abordan este
problema [18] y proponen una solución, además,
sostienen que su enfoque basado en escenarios
soporta la trazabilidad entre los casos de prueba
generados y los ejecutados. Este enfoque es
compatible con requisitos funcionales y nofuncionales.
Otras propuestas son la de Goel, Sengupta y
Roychoudhury [19], quienes proponen un enfoque
orientado a modelos en el que se combinan las
fortalezas de los estilos de modelado basados en
escenarios y los basados en el estado. Footprinter es
una herramienta que hace posible rastrear desde
los requisitos hasta las pruebas y viceversa en un
enfoque de ingeniería de ida y vuelta. El marco
propuesto por Tasi et al [20] para pruebas basadas
en escenarios se compone de scripts de prueba y
casos de prueba, generados automáticamente, con
base a un escenario de especificación para el
componente principal de prueba. Algunas
investigaciones desarrollan procesos basados en
modelo orientados a las pruebas, es el caso de
Pfaller et al [21] quienes utilizan diferentes niveles
de abstracción en el proceso de desarrollo para
derivar casos de prueba y vincularlos con las
correspondientes necesidades de los usuarios;
Boulanger y Dao [22] proponen un enfoque en el
que la RE se realiza en diferentes fases del modelo
en V, con el fin de facilitar la validación y la
trazabilidad de requisitos; Lobo y Arther [23]
desarrollan un proyecto que tiene como objetivo
reducir la brecha entre la RE y el proceso de V&V, lo
que logran aplicándolo en un modelo de dos fases:
1) se lleva a cabo justo después de la elicitación de
requisitos para cada función específica del sistema,
y 2) se verifica y valida la calidad de los vínculos
entre las series de requisitos.
Otros estudios parten de pruebas basadas en el
modelo de sistemas orientados al servicio, como el
de Felderer et al [7], quienes están convencidos de
que la herramienta que proponen podría apoyar la
trazabilidad entre todo tipo de modelos y sistemas;
el marco propuesto por Tasi et al [20] también tiene
como objetivo las pruebas de servicios web. Hay
otros enfoques, como el de Marelly Harel y Kugler
[24], que extienden secuencias de cartas con
instancias y variables simbólicas con el fin de
enlazar los requisitos y las pruebas; Zou y Pavlovski
[12] proponen casos de control para complementar
los casos de uso mediante el modelado de requisitos
no-funcionales que no pueden ser abordados de
otra manera. Se pueden aplicar durante el ciclo de
vida de desarrollo de software y también para
verificar si el sistema implementado cumple con los
requisitos no-funcionales especificados.
 Desarrollo orientado a objetivos. En el modelado
orientado a objetivos el ingeniero puede darse
cuenta fácilmente de las necesidades de las partes
interesadas y de sus interdependencias, utilizando
conceptos mucho menos dependientes de la
tecnología de implementación y mucho más
cercanos al dominio del problema [25]. Los
objetivos, que pueden estar en varios niveles de
abstracción, definen las necesidades de las partes
interesadas. Cuando son estados que los actores
pueden alcanzar se conocen como difíciles, y son
fáciles cuando son metas que nunca se pueden
alcanzar plenamente. Los requisitos funcionales se
muestran como objetivos difíciles y los nofuncionales, como la eficiencia y la fiabilidad,
representan objetivos fáciles, lo que significa que se
espera cumplirlos dentro de unos
límites
aceptables pero no absolutamente [25]. Este tipo de
desarrollo mejora la productividad así como la
calidad del modelo. Nan et al [25] proponen un
marco para el rastreo de aspectos de los requisito
para la implementación y las pruebas. También
proporcionan soporte de lenguaje para transformar
los modelos en programas orientados a aspectos.
Los casos de prueba se pueden derivar de estos
modelos para ayudar en el proceso de verificación.
Las metodologías de la Ingeniería de Software
orientada a aspectos se basan en el paradigma de
agentes, y ayudan a desarrollar sistemas
distribuidos complejos [26]. También abordan
parcialmente el vínculo entre los requisitos y las
pruebas, lo que se logra mediante la verificación
formal basada en la especificación y las técnicas de
prueba orientadas a objetos. Duy, Perini y Tonella
[26] introducen un marco de pruebas para estas
metodologías llamado TROPOS, el cual proporciona
una manera sistemática de derivar los casos de
prueba a partir del análisis objetivo. Este enfoque se
41
denomina prueba orientado a objetivos. En cuanto
al desarrollo orientado a aspectos, Nan et al [25] lo
presentan como una solución
para la
transformación del modelo objetivo a la
implementación. Describen cómo se introducen los
aspectos desde el modelo y presentan un marco en
el que los aspectos pueden mantener la trazabilidad
desde el nivel de los requisitos tempranos hasta la
implementación y la prueba.
 Trazabilidad. Abbors, Truscan y Lilius [27]
presentan un enfoque para la trazabilidad de los
requisitos, a través de un proceso de modelo basado
en pruebas, y herramientas que se utilizan para cada
fase. Algunas investigaciones previas orientan las
pruebas basadas en requisitos a facilitar la
trazabilidad entre ellos y las pruebas. Mendez, Perez
y Mendoza [28] presentan un proceso de prueba
basado en requisitos y definen una guía sobre cómo
mantener la trazabilidad en el proceso desde los
requisitos tempranos hasta los casos de prueba.
Quinn et al [29] proponen un método mediante el
cual los requisitos de un componente software se
pueden especificar fácilmente en un documento de
referencia, con el fin de facilitar la trazabilidad entre
los requisitos y las pruebas. Algunas investigaciones
abordan cuestiones de trazabilidad utilizando
escenarios, como Naslavsky et al [30] quienes
consideran que diferentes tipos de escenarios son
útiles para trazar los requisitos a las pruebas a
través del ciclo de vida del desarrollo, y que cada
uno se puede utilizar como escenario de prueba;
Goel y Roychoudhury [31] estudian las cuestiones
de generación de pruebas y trazabilidad en tres
diferentes sistemas basados en escenarios
modelando lenguajes. Otras investigaciones
construyen meta-modelos para facilitar la
trazabilidad. En este sentido, y con el fin de
establecer la relación entre los componentes
software que incluyen los requisitos, los casos de
prueba de diseño, y el código, Ibrahim et al [32]
construyeron un meta-modelo con soporte de
trazabilidad top-down y bottom-up; y Dubois,
Peraldi y Lakhal [33] proponen una meta-modelo
con el objetivo de mantener el enlace de
trazabilidad de los requisitos en tres fases: la
elicitación, el diseño, y la V&V.
 Enfoques formales. Post et al [2] se centran en la
traducción de requisitos a un lenguaje formal
basado en escenarios, que a su vez podría estar
vinculado con la verificación de software. Ramo et al
[34] utilizan un sub-conjunto de diagramas UML 2.0
y lenguaje OCL para formalizar el comportamiento
esperado del sistema. El modelo es utilizado para
generar automáticamente scripts de prueba
ejecutables. Kelleher y Simonss [35] proponen un
nuevo enfoque de modelado de requisitos en el que
los casos de uso son reemplazados por clases de
casos de uso en UML 2.0. Estas clases son plantillas
formales que describen reglas con instancias sobre
los requisitos modelados. Esta sustitución, junto con
la utilización de enlaces de trazabilidad explícitos,
facilita la reducción de la brecha entre los requisitos
y las pruebas. Sabetta et al [36] discuten que a veces
puede ser necesario transformar los modelos UML
en diferentes modelos de análisis que puedan ser
utilizados para verificar, formalmente, algún tipo de
requisito no-funcional [37]. Algunos de estos
modelos son redes Petri, redes de colas, lógica
formal, etc. Para este propósito, su enfoque de
abstracción puede transformar modelos UML en
diferentes tipos de modelos de análisis con
diferentes formalismos. Hassan et al [38] se centran
en los requisitos de seguridad. Proponen el primer
enfoque de seguridad de software orientado a
objetivos, con el propósito de producir de forma
sistemática software con alto nivel de seguridad. El
modelo soporta la derivación automática de las
especificaciones en lenguaje B y un conjunto de
casos de prueba de aceptación desde el modelo de
requisitos, para garantizar una mejor alineación de
la seguridad de ellos y las pruebas. Hussain y
Eschbach [39] presentan un enfoque de análisis de
seguridad basado en modelos, que genera
automáticamente modelos formales del sistema y
produce un árbol de fallos que puede ser utilizado
para generar casos de prueba. Por lo tanto, los casos
de prueba pueden ser ligados directamente a los
requisitos de seguridad para asegurar la
trazabilidad entre las actividades de prueba y los
requisitos de seguridad.
 Enfoques centrados en el código. Mugridge [40]
presenta una propuesta de desarrollo de pruebas
orientado a historias como una forma
complementaria que se puede aplicar al desarrollo
de sistemas. Las pruebas de historias, que son
ejemplos ejecutables y orientados a negocios, son
escritas por los clientes como una alternativa para
detallar el documento de requisitos. Como
documentos ejecutables reducen significativamente
la necesidad de derivar pruebas independientes,
porque les ayudan a los desarrolladores a verificar
continuamente su compatibilidad con el sistema.
Bâillon y Mongardé [41] describen el desarrollo
orientado a comportamiento como un nuevo
paradigma con el fin de abordar los problemas de
trazabilidad. Introducen la herramienta XReq como
soporte para Ada y otros lenguajes de tipo estático.
 Buenas prácticas para la alineación. Uusitalo et al [3]
presentan un conjunto de buenas prácticas que se
pueden aplicar para crear un vínculo más fuerte
entre la Ingeniería de Requisitos y las pruebas.
Algunas involucran a los probadores durante la
planificación del proyecto y la revisión de
requisitos, lo que podría conducir a una mayor
calidad y a mejorar la capacidad de prueba.
Kukkanen et al [1] proponen un enfoque sistemático
para mejorar los procesos de los requisitos y las
pruebas además del objetivo de vincularlos.
Describen lecciones aprendidas y mejores prácticas
determinadas a partir de la aplicación de nuevos
42
procesos en un estudio de caso industrial.
Sabaliauskaite et al [42] llevaron a cabo una
encuesta en una gran empresa de software en
Suecia, con el objetivo de investigar los obstáculos y
prácticas experimentados en la adecuación de los
requisitos y las pruebas.
y la seguridad están incluidos en los requisitos de
modelado. El marco de Duy, Perini y Tonella [26]
está orientado a objetivos en los que los requisitos
no-funcionales se especifican como objetivos fáciles.
Para descubrir aspectos desde los modelos objetivo
los objetivos deben ser elicitados y categorizados
como difíciles y fáciles. En el método propuesto por
Mendez, Perez y Mendoza [28] se especifican los
casos de prueba basados en casos de uso que
permiten la trazabilidad entre las pruebas y los
requisitos funcionales y no-funcionales. En este
enfoque la tabla de casos de prueba especificados se
puede utilizar para definir los procedimientos
asociados a los requisitos no-funcionales. El metamodelo presentado por Dubois, Peraldi y Lakhal
[33] permite una trazabilidad completa de ambos
tipos de requisitos a través del proceso de
desarrollo de software. En su investigación, Sabetta
et al [36] transforman modelos UML a diferentes
tipos de modelos de análisis, como redes Petri,
redes de colas, lógica formal, etc. Cada uno podría
ser utilizado en la verificación formal de diferentes
requisitos no-funcionales. Hassan et al [38] se
centran en la alineación de los requisitos de
seguridad y las pruebas a través del apoyo de la
derivación automática de especificaciones en
lenguaje B y un conjunto de casos de prueba de
aceptación desde el modelo de requisitos. En otra
investigación, Mugridge [40] establece que tanto el
desarrollo orientado a prueba de historias como el
desarrollo orientado a pruebas dependen de
avanzadas técnicas de pruebas automatizadas,
incluidas las pruebas de los requisitos nofuncionales.
 Casos de prueba. Nebut et al [43] se concentran en
una guía para la generación automática de casos de
prueba en sistemas embebidos que se basa en
conceptos orientados a objetos. Los requisitos del
sistema se describen a través de casos de uso,
contratos, y escenarios. Si se necesita cualquier otra
información sobre los requisitos es proporcionada
por diferentes artefactos UML, como los diagramas
de secuencia. Whalen et al [44] mencionan varios
problemas en la medición de la adecuación de las
pruebas funcionales usando artefactos ejecutables.
También presentan métricas de cobertura basadas
en los requisitos formales de alto nivel. Conrad, Fey
y Sadeghipour [45] presentaron una estrategia de
generación de casos de prueba que se utiliza en una
empresa de automóviles. Siegl, Hielscher y German
[46] también están interesados en la industria
automotriz y propusieron un método para la
generación automática de casos de prueba, y otro
para la derivación de casos de prueba desde los
requisitos. Riebisch y Hubner [47] se concentran en
el primer paso de la generación de casos de prueba.
Su método utiliza una descripción en lenguaje
natural que transforma en una expresión con
sintaxis y semántica definida formalmente.
 Enfoques con soporte para requisitos no-funcionales.
El marco de validación de Arnold, Corriveau y Wei
[18] soporta el modelado y la validación automática
de requisitos funcionales y no-funcionales. El
enfoque basado en la notación de requisitos es uno
de los pocos que aborda el modelado y la validación
de ambos tipos [48]. La propuesta der Felderer et al
[7] es adecuada para probar los contratos a nivel de
servicio que se consideran como propiedades nofuncionales. En este caso, el estudio del rendimiento
3.2 Para la pregunta P2 se construyó una base de datos en
la que se detallan los tipos de investigación y los tipos
de contribución encontrados. La Tabla 1 muestra un
mapa de la cantidad de trabajos, la focalización de la
investigación, y la alineación de la especificación de
requisitos y las pruebas. Cabe señalar que un trabajo
puede proporcionar múltiples contribuciones, por
ejemplo, ser una herramienta y un método.
Tabla 1. Mapa de los resultados
Tipo de investigación
Propuestas de
solución
8
6
1
12
3
1
Investigación
evaluativa
1
1
1
2
2
Enfoque de
investigación
Formal
Trazabilidad
Centrado en código
Centrado en modelos
Casos de prueba
Buenas prácticas
Tipo de contribución
Método
Proceso
Herramienta
6
3
2
5
1
1
2
2
3
2
5
1
3.3 Para la pregunta P3 se encontró que la mayoría de
investigaciones se divulga en conferencias y talleres
(80%). Esto llama la atención porque al parecer los
investigadores prefieren presentar sus resultados
ante una comunidad que los retroalimenta
inmediatamente, y no esperar al proceso de
publicación en alguna revista.
2
1
Guía
Marco
1
1
1
Métrica
3
1
6
1
2
Modelo
2
1
4. Discusión
Existen varios desafíos en el uso de los modelos orientados
a pruebas para alinear los requisitos y las pruebas a los que
los investigadores han tratado de hacerles frente. Uno es
estructurar casos de prueba ejecutables, ya que las
pruebas no están al mismo nivel de detalle que el código de
implementación [18, 48], y otro es diseñar casos de prueba
43
exitosos, es decir, que cubran los requisitos y que tengan
altas probabilidades de descubrir errores potenciales [21].
La trazabilidad de requisitos en el proceso de estos
modelos es otro tema importante, y es el foco de varias
investigaciones como [7, 21, 31] que se focalizan
principalmente en la trazabilidad de los requisitos
funcionales, mientras que para los no-funcionales queda
abierta a nuevas investigaciones [27]. Algunas se orientan
al uso de los modelos en sistemas orientados a servicios [7,
20], o al uso de la notación de escenarios para la
especificación de los modelos del sistema [18, 20, 31, 48].
El enfoque en temas de trazabilidad también es concebible
ya que ayuda a determinar el grado de cobertura de los
casos de prueba a los requisitos y mejora la gestión del
cambio, que es de vital importancia para la industria. Como
Abbors, Truscan y Lilius mencionan [27], la trazabilidad
reduce el tiempo necesario para la depuración de la
especificación o la implementación del sistema, ofreciendo
evaluaciones rápidas.
Los enfoques formales también son de interés para la
investigación, y se utilizan para traducir requisitos
informales a modelos formales para generar pruebas
formales, y para rastrear entre los requisitos informales y
la pruebas [31]. La aplicación de métodos formales para
alinear los requisitos y las pruebas tiene algunas ventajas
y desventajas. En este enfoque los requisitos se formulan
en una representación precisa, comprobable, y correcta,
que es inequívoca y coherente [37]. Esto hace de los
métodos formales una de las mejores opciones para la
elaboración de modelos y pruebas para los sistemas
complejos y de seguridad crítica. Por otra parte, el uso de
métodos formales es difícil para los profesionales [37]. Las
personas con experiencia en este campo son difíciles de
conseguir y costoso de emplear, y su aplicación,
especialmente para sistemas complejos, es difícil debido a
su alto costo y escalabilidad limitada. Algunos
investigadores han iniciado el proceso de romper estas
dificultades, como el profesor Serna en Colombia [49-52],
pero hay espacio para más investigaciones que puedan
potencializar las ventajas de los métodos formales y
hacerlos más fáciles de aprender y aplicar, y para buscar la
alineación de los requisito y las pruebas.
En cuanto al tipo de investigación, en todas las áreas el
enfoque es proponer alguna solución. Esto significa que los
desafíos en cada una se conocen bien, pero las soluciones
propuestas son muy pequeñas y se quedan sólo en mostrar
el uso actual y en evaluar lo que se publica. Sólo la mitad de
los trabajos han evaluado sus ideas en estudios de casos
industriales, pero la validez de la discusión es pobre,
porque se mencionan las amenazas sin una discusión
detallada. Además, la mayoría de las búsquedas no son lo
suficientemente maduras para ser publicadas en revistas,
por lo que el 80% de las investigaciones en esta revisión
se publicaron en conferencias y talleres. Con todo y que la
alineación de los requisitos y las pruebas parece ser una
área bastante inmadura, todavía se tiene la necesidad de
un mayor trabajo práctico.
El tipo de contribución es principalmente métodos (31%),
herramientas (24%), y marcos (14%). Se necesita
presentar nuevas metodologías o mejorar las existentes
para establecer un fuerte vínculo entre los requisitos y las
pruebas. Con el fin de que sean prácticos en la industria se
deben construir herramientas y marcos de soporte. Esto se
espera lograr muy pronto, porque los resultados muestran
que el interés de los investigadores por hacerlo se ha
incrementado en los años recientes. Otro punto
importante es que la mayoría de los esfuerzos por alinear
los requisitos y las pruebas han sido en requisitos
funcionales, y se descuida ampliamente a los nofuncionales desconociendo la importancia de éstos en los
sistemas complejos actuales.
5. Conclusiones
Este trabajo presenta un mapeo sistemático acerca de la
alineación de la especificación de requisitos funcionales o
no-funcionales y las pruebas. Se identificaron 35 trabajos
que aportan para responder a las preguntas de
investigación: 1) ¿Qué estudios se han realizado acerca de
la vinculación de la especificación y la prueba de
requisitos? 2) ¿Qué tipo de soluciones se representan en
estas investigaciones? Y 3) ¿De qué forma se divulga la
investigación acerca de la alineación de la especificación y
las pruebas?
Para responder a 1 se trabaja en enfoques centrados en el
modelo, en el código, en la trazabilidad, métodos formales,
en casos de prueba, en problemas, y en un conjunto de
buenas prácticas. El enfoque principal es en modelos
basados en pruebas y en trazabilidad. En respuesta a 2, el
tipo de contribución es en su mayoría métodos (26%) y
herramientas (24%), seguidos de marcos (14%). En
respuesta a 3, la mayor parte de la investigación se ha
publicado en conferencias y talleres (80%), y muy poco en
capítulos de libro y revistas científicas.
Aunque la industria está cada vez más interesada en
establecer un fuerte vínculo entre los requisitos y las
pruebas, aún existe una brecha significativa en estas áreas.
Esto muestra un alto potencial para trabajo futuro en el
establecimiento de métodos y procesos con herramientas
de soporte. Los enfoques actuales han prestado poca
atención a los requisitos no-funcionales, aunque juegan un
papel fundamental en la consecución de sistemas software
de calidad. Como tal, esta área tiene un alto potencial para
futuras investigaciones.
Referencias
[1]
[2]
[3]
[4]
Kukkanen, J. et al (2009). Applying a systematic approach
to link requirements and testing: A case study. Proceedings
Asia-Pacific Software Engineering Conference (APSEC), pp.
482-488. December 1-3, Penang, Malaysia.
Post, H. et al (2009). Linking functional requirements and
software verification. Proceedings 17thIEEE International
Requirements Engineering Conference (RE), pp. 295-302.
August 31-September 4, Atlanta, USA.
Uusitalo, E. et al (2008). Linking requirements and testing
in practice. Proceedings 16th IEEE International
Requirements Engineering Conference, pp. 265-70.
September 8-12, Catalunya, Spain.
Serna M.E. (2014). Model to Develop and Manage
Requirements Engineering –MoDeMaRE–. In press.
44
[5]
[6]
[7]
[8]
[9]
[10]
[11]
[12]
[13]
[14]
[15]
[16]
[17]
[18]
[19]
[20]
[21]
Grunske, L. (2008). Specification Patterns for probabilistic
quality properties. Proceedings 30th International
Conference on Software Engineering (ICSE 2008), pp. 3140. May 10-18, Leipzig, Germany.
Matoussi, A. & Laleau, R. (2008). A Survey of non-functional
requirements in software development process. Technical
report TR-LACL-2008-7. Laboratory of Algorithms,
Complexity and Logic (LACL), University of Paris, France.
Felderer, M. et al (2010). A tool-based methodology for
system testing of service-oriented systems. Proceedings
Second International Conference on Advances in System
Testing and Validation Lifecycle (VALID), pp. 108-13.
August 22-27, Nice, France.
Petersen, K. et al (2008). Systematic mapping studies in
software engineering. Proceedings 12th International
Conference on Evaluation and Assessment in Software
Engineering (EASE), pp. 68-77. June 26-27, Bari, Italy.
Serna, M.E. (2014). Methodology for perform reliable
literature reviews. In press.
Chung, L. & Prado, J. (2009). On Non-functional
requirements in Software Engineering. In Alexander, T. et al
(Eds.), Proceedings Conceptual Modeling: Foundations and
Applications, pp. 363-379. Springer-Verlag.
Agnes, M.; Frati, P. & Albinet, A. (2010). Requirement
traceability in safety critical systems. Proceedings of the 1st
Workshop on Critical Automotive applications: Robustness
and Safety, pp. 11-14. April 28-30, Valencia, Spain.
Zou, J. & Pavlovski, C. (2008). Control cases during the
software development life-cycle. Proceedings IEEE
Congress on Services Part 1 (SERVICES-1), pp. 337-344. July
6-11, Honolulu, USA.
Metsa, J.; Katara, M. & Mikkonen, T. (2007). Testing nonfunctional requirements with aspects: An industrial case
study. Seventh International Conference on Quality
Software (QSIC'07), pp. 5-14. October 11-12, Portland, USA.
Romano, B. et al (2009). Software testing for webapplications non-functional requirements. Proceedings of
the 2009 Sixth International Conference on Information
Technology: New Generations, pp. 1674-1675. April 27-29,
Las Vegas, USA.
Glinz, M. (2007). On non-functional requirements.
Proceedings 15th IEEE International Requirements
Engineering Conference (RE'07), pp. 21-26. October 15-19,
Delhi, India.
Wieringa, R. et al (2005). Requirements engineering paper
classification and evaluation criteria: A proposal and a
discussion. Requirements Engineering Journal 11(1), pp.
102-107.
Ivarsson, M. & Gorschek, T. (2009). Technology transfer
decision support in requirements engineering research: A
systematic review of REj. Requirements Engineering
Journal 14 (3), pp. 155-175.
Arnold, D.; Corriveau, J. & Wei, S. (2010). Modeling and
validating requirements using executable contracts and
scenarios. Proceedings 8th ACIS International Conference
on Software Engineering Research, Management and
Applications (SERA), pp. 311-20. May 24-26, Montreal,
Canada.
Goel, A.; Sengupta, B. & Roychoudhury, A. (2009).
Footprinter: Round-trip engineering via scenario and state
based models. Proceedings 31st International Conference
on Software Engineering, pp. 419-420. May 16-24,
Vancouver, Canada.
Tsai, W. et al (2003). Scenario-based web services testing
with distributed agents. IEICE Transactions on Information
and Systems 86(10), pp. 2130-2144.
Pfaller, C. et al (2006). On the integration of design and test:
A model-based approach for embedded systems.
Proceedings of the 2006 international workshop on
[22]
[23]
[24]
[25]
[26]
[27]
[28]
[29]
[30]
[31]
[32]
[33]
[34]
[35]
Automation of software test (AST), pp. 15-21. May 20-28,
Shanghai, China.
Boulanger, J. & Dao, V. (2008). Requirements engineering in
a model-based methodology for embedded automotive
software. Proceedings IEEE International Conference on
Research, Innovation and Vision for the Future, pp. 263268. July 13-17, Ho Chi Minh City, Vietnam.
Lobo, L. & Arthur, J. (2005). Local and global analysis:
Complementary activities for increasing the effectiveness of
requirements verification and validation. Proceedings of
the 43rd Annual ACM Southeast Conference, pp. 256-261.
March 18-20, Kennesaw, USA.
Marelly, R.; Harel, D. & Kugler, H. (2002). Multiple instances
and symbolic variables in executable sequence charts.
Proceedings 17th International Conference on ObjectOriented Programming, Systems, Languages and
Applications (OOPSLA), pp. 83-100. November 4-8, Seattle,
USA.
Nan, N. et al (2009). Aspects across software life cycle: a
goal-driven approach. Lecture Notes in Computer Science
5560, pp. 83-110.
Duy, N.; Perini, A. & Tonella, P. (2008). A goal-oriented
software testing methodology. Lecture Notes in Computer
Science 4951, pp. 58-72.
Abbors, F.; Truscan, D. & Lilius, J. (2009). Tracing
requirements in a model-based testing approach.
Proceedings First International Conference on Advances in
System Testing and Validation Lifecycle (VALID), pp. 123-8.
September 20-25, Porto, Portugal.
Mendez, E.; Perez, M. & Mendoza, L. (2008). Improving
software test strategy with a method to specify test cases.
Proceedings 10th International Conference on Enterprise
Information Systems, pp. 159-64. June 12-16, Barcelona,
Spain.
Quinn, C. et al (2006). Specification of software component
requirements using the trace function method. Proceedings
International Conference on Software Engineering
Advances, pp. 50-50. October 29 - November 3, Papeete,
Tahiti.
Naslavsky, L. et al (2005). Using scenarios to support
traceability. Proceedings 3rd international workshop on
Traceability in emerging forms of software engineering, pp.
25-30. November 8, Long Beach, USA.
Goel, A. & Roychoudhury, A. (2006). Synthesis and
traceability of scenario-based executable models.
Proceedings 2nd International Symposium on Leveraging
Applications of Formal Methods, Verification and
Validation, pp. 347-54. November 15-19, Paphos, Cyprus.
Ibrahim, S. et al (2006). A software traceability validation
for change impact analysis of object oriented software.
Proceedings of the International Conference on Software
Engineering Research and Practice, pp. 453-459. June 2629, Las Vegas, USA.
Dubois, H.; Peraldi, M. & Lakhal, F. (2010). A model for
requirements traceability in a heterogeneous model-based
design process - Application to automotive embedded
systems. Proceedings 15th IEEE International Conference
on Engineering of Complex Computer Systems, pp. 233-242.
March 22-26, Oxford, UK.
Bouquet, F. et al (2007). A subset of precise UML for modelbased testing. Proceedings 3rd international workshop on
Advances in model-based testing, pp. 95-104. July 9-12,
London, England.
Kelleher, J. & Simonsson, M. (2006). Utilizing use case
classes for requirement and traceability modeling.
Proceedings 17th IASTED International Conference on
Modelling and Simulation, pp. 617-25. Anaheim, CA, USA,
2006.
45
[36] Sabetta, A. et al (2005). Abstraction-raising transformation
for generating analysis models. Lecture Notes in Computer
Science 3844, pp. 217-26.
[37] Mustelier, D. & Viera, Y. (2013). Variables that define the
complexity of the software functional requirements. Revista
Antioqueña de las Ciencias Computacionales y la Ingeniería
de Software (RACCIS), 3(2), pp. 38-42.
[38] Hassan, R. et al (2010). Formal analysis and design for
engineering security automated derivation of formal
software security specifications from goal-oriented security
requirements. IET Software 4(2), pp. 149-160.
[39] Hussain, T. & Eschbach, R. (2010). Automated fault tree
generation and risk-based testing of networked automation
systems. Proceedings 15th IEEE Conference on Emerging
Technologies and Factory Automation, pp. 1-8. September
13-16, Bilbao, Spain.
[40] Mugridge, R. (2008). Managing agile project requirements
with storytest-driven development. IEEE Software 25(1),
pp. 68-75.
[41] Bâillon, C. & Mongardé, S. (2010). Executable requirements
in a safety-critical context with Ada. Ada User Journal 31(2),
pp. 131-135.
[42] Sabaliauskaite, G. et al (2010). Challenges in aligning
Requirements Engineering and verification in a large-scale
industrial context. Lecture Notes in Computer Science 6182,
pp. 128-42.
[43] Nebut, C. et al (2006). Automatic test generation: A use case
driven approach. IEEE Transactions on Software
Engineering 32(3), pp. 140-55.
[44] Whalen, M. et al (2006). Coverage metrics for requirementsbased testing. Proceedings of the international symposium
[45]
[46]
[47]
[48]
[49]
[50]
[51]
[52]
on Software testing and analysis, pp. 25-35. July 17-20,
Portland, USA.
Conrad, M.; Fey, I. & Sadeghipour, S. (2005). Systematic
model-based testing of embedded automotive software.
Electronic Notes in Theoretical Computer Science 111, pp.
13-26.
Siegl, S.; Hielscher, K. & German, R. (2010). Model based
requirements analysis and testing of automotive systems
with timed usage models. Proceedings 18th IEEE
International Requirements Engineering Conference, pp.
345-350. September 29 – October 1, Sydney, Australia.
Riebisch, M. & Hubner, M. (2005). Traceability-driven
model refinement for test case generation. Proceedings
12th IEEE International Conference and Workshops on the
Engineering of Computer-Based Systems, pp. 113-120.
April 4-7, Greenbelt, USA.
Arnold, D.; Corriveau, J. & Wei, S. (2010). Scenario-based
validation: Beyond the user requirements notation.
Proceedings Software Engineering Conference, pp. 75-84.
April 6-9, Oakland, USA.
Serna, M.E. (2010). Formal methods and Software
Engineering. Revista Virtual Universidad Católica del Norte
30, pp. 158-184.
Serna, M.E. (2013). Logic in Computer Science. Revista
Educación en Ingeniería 8(15), pp. 62-68.
Serna, M.E. & Polo, J.A. (2014). Logic and abstraction in
engineering education: A necessary relationship. Revista
Ingeniería Investigación y Tecnología XV(2), pp. 299-310.
Serna, M.E. & Zapata, A.L.F. (2014). Approach to logic and
abstraction in the engineering training. Revista
Internacional de Educacion y Aprendizaje 2(1), pp. 35-47.
46
Descargar