Generación de Escenarios de Calidad a partir de ...

77
Generación de Escenarios de Calidad a partir de Requerimientos Textuales Tesis para el grado de Ingeniero de Sistemas Facultad de Ciencias Exactas Andreés Vicente Javier Enrique Marsicano Bajo la supervisioén de: Dra. Claudia Marcos Dr. J. Andreés Díaz Pace Universidad Nacional del Centro de la Provincia de Buenos Aires Tandil, Argentina Diciembre 2017

Transcript of Generación de Escenarios de Calidad a partir de ...

Page 1: Generación de Escenarios de Calidad a partir de ...

Generación de Escenarios de Calidad

a partir de Requerimientos Textuales

Tesis para el grado de Ingeniero de Sistemas

Facultad de Ciencias Exactas

Andreés Vicente

Javier Enrique Marsicano

Bajo la supervisioén de:

Dra. Claudia Marcos

Dr. J. Andreés Díaz Pace

Universidad Nacional del Centro de la Provincia de Buenos Aires

Tandil, Argentina

Diciembre 2017

Page 2: Generación de Escenarios de Calidad a partir de ...

INDICE GENERAL

Resumen..............................................................................................................................................6 1 Introducción......................................................................................................................................9

1.1.Problemática............................................................................................................................101.2.Enfoque de QAGen..................................................................................................................111.3.Organización del Informe........................................................................................................13

2 Marco teórico..................................................................................................................................142.1.Atributos de Calidad................................................................................................................14

2.1.1 Performance...................................................................................................................14 2.1.2 Usabilidad......................................................................................................................15 2.1.3 Modificabilidad.............................................................................................................15 2.1.4 Seguridad.......................................................................................................................16 2.1.5 Otras consideraciones sobre QAs..................................................................................16

2.2.Arquitectura de Software.........................................................................................................172.3.Escenarios de calidad...............................................................................................................172.4.Natural Language Understanding (NLU)................................................................................20

2.4.1 Análisis Léxico y Segmentación...................................................................................20 2.4.2 Lematización.................................................................................................................21 2.4.3 Etiquetado gramatical....................................................................................................21 2.4.4 Análisis sintáctico..........................................................................................................23

2.5.Generación de Lenguaje Natural (NLG).................................................................................23 2.5.1 Corpus NLG..................................................................................................................24 2.5.2 Arquitectura de un sistema NLG...................................................................................24 2.5.3 Relación de NLG con NLU...........................................................................................26

2.6.Información no estructurada....................................................................................................272.7.UIMA.......................................................................................................................................27

3 Trabajos relacionados....................................................................................................................293.1.Modelo para la Elicitación y Especificación manual de QAs.................................................293.2.EAMiner..................................................................................................................................303.3.QAMiner..................................................................................................................................313.4.REAssistant..............................................................................................................................333.5.Scenarios Tool..........................................................................................................................343.6.Resumen..................................................................................................................................36

4 QAGen: Un Enfoque para Generación de Escenarios de Calidad..................................................374.1.Uso de QAGen para generar escenarios de calidad.................................................................384.2.Herramientas de desarrollo de software escogidas..................................................................394.3.Proceso y etapas de QAGen....................................................................................................40

4.3.1 Etapa de segmentación..................................................................................................42 4.3.2 Etapa de pre-análisis......................................................................................................42 4.3.3 Etapa de QA Mining......................................................................................................44 4.3.4 QA Mining con UIMA Ruta..........................................................................................47 4.3.5 Etapa de Scenario Linking.............................................................................................48 4.3.5.1 Microplanner y análisis gramatical............................................................................49 4.3.5.2 Seed Extractors...........................................................................................................51 4.3.5.3 Generación de los escenarios de calidad....................................................................53

4.4.Arquitectura de QAGen...........................................................................................................54 5 Evaluación......................................................................................................................................55

5.1.Procedimiento experimental....................................................................................................55

2

Page 3: Generación de Escenarios de Calidad a partir de ...

5.1.1 Experimento #1.............................................................................................................56 5.1.2 Experimento #2.............................................................................................................57

5.2.Métricas...................................................................................................................................59 5.2.1 Coeficiente de Jaccard...................................................................................................60 5.2.2 Sorensen-Dice...............................................................................................................60 5.2.3 Similitud del Coseno....................................................................................................61 5.2.4 Normalized Levenshtein...............................................................................................61 5.2.5 Jaro-Winkler.................................................................................................................61 5.2.6 Aplicación de las métricas............................................................................................62

5.3.Discusión de los resultados......................................................................................................63 5.3.1 Similitud con escenarios de referencia.........................................................................63 5.3.2 Velocidad de ejecución.................................................................................................67

6 Conclusiones...................................................................................................................................686.1.Contribuciones.........................................................................................................................696.2.Limitaciones............................................................................................................................706.3.Trabajos futuros.......................................................................................................................70

7 Apéndice.........................................................................................................................................727.1.Escenarios generados y reales (benchmark)............................................................................727.2.Performance sentences del caso de estudio MSLite................................................................737.3.Valores obtenidos al aplicar las métricas.................................................................................737.4.Herramienta QAGen................................................................................................................75

8 Referencias.....................................................................................................................................76

3

Page 4: Generación de Escenarios de Calidad a partir de ...

INDICE DE FIGURAS

Figura 1.1: Proceso del enfoque propuesto.......................................................................................12 Figura 2.1: Partes del escenario de calidad........................................................................................18 Figura 2.2: Performance scenario sample.........................................................................................19 Figura 2.3: Ejemplo de lexema y morfemas......................................................................................21 Figura 2.4: Categorías gramaticales Penn Treebank.........................................................................22 Figura 2.5: Grafo de análisis sintáctico.............................................................................................23 Figura 2.6: Arquitectura NLG...........................................................................................................26 Figura 2.7: UIMA Analytics..............................................................................................................28 Figura 3.1: Tangling vs. Scattering....................................................................................................30 Figura 3.2: Overview of QAMiner approach....................................................................................32 Figura 3.3: Overview of REAssistant approach................................................................................33 Figura 3.4: Esquema de funcionamiento...........................................................................................35 Figura 4.1: Fases y etapas del pipeline de QAGen............................................................................38 Figura 4.2: Proceso completo de QAGen..........................................................................................39 Figura 4.3: Fase Estructuración con sus etapas.................................................................................42 Figura 4.4: Fase Análisis QA con sus etapas.....................................................................................44Figura 4.5: Resultado de aplicar las reglas a las oraciones de ejemplo de performance....................46 Figura 4.6: Resultado de aplicar Parser a las oraciones de ejemplo de Performance........................50 Figura 4.7: Ejemplo de oración donde se aplican varios patrones....................................................52 Figura 5.1: Fórmula de Jaccard.........................................................................................................60 Figura 5.2: Fórmula Sorensen-Dice..................................................................................................61 Figura 5.3: Fórmula de similitud del Coseno....................................................................................61 Figura 5.4: Fórmula Levenshtein......................................................................................................61 Figura 5.5: Fórmula Jaro...................................................................................................................62 Figura 5.6: Fórmula Jaro-Winkler.....................................................................................................62 Figura 5.7: Valores obtenidos al aplicar las métricas de similitud....................................................63 Figura 5.8: Valores de similitud con R1 y R2....................................................................................64 Figura 5.9: Valores de similitud con R1............................................................................................65 Figura 5.10: Valores de comparación con R2....................................................................................66 Figura 7.1: Pantalla de generación de escenarios de calidad.............................................................75 Figura 7.2: Pantalla del contexto de la QA Sentence........................................................................75

4

Page 5: Generación de Escenarios de Calidad a partir de ...

INDICE DE TABLAS

Tabla 2.1: Conceptos de performance (adaptado de [IEEE1992]).....................................................15Tabla 4.1: Ejemplo de POS tagging....................................................................................................43Tabla 4.2: Palabras clave de la taxonomía Constraint........................................................................44Tabla 4.3: Palabras clave de la taxonomía LTD.................................................................................45Tabla 4.4: Palabras clave de la taxonomía Event...............................................................................45Tabla 4.5: Palabras clave de la taxonomía Time................................................................................45Tabla 4.6: Frases candidatas para escenarios generadas.....................................................................53Tabla 5.1: Performance sentence detectada en HWS.........................................................................56Tabla 5.2: Performance sentences detectadas en CRS.......................................................................57Tabla 5.3: Secciones candidatas generadas para HWS y CRS...........................................................57Tabla 5.4: Secciones candidatas generadas para MSLite...................................................................58Tabla 5.5: Escenario candidato generado para MSLite......................................................................59Table 5.6: Valores de similitud con R1 y R2......................................................................................63Table 5.7: Valores de comparación con R1........................................................................................65Table 5.8: Valores de comparación con R2........................................................................................66Table 5.9: Tiempos de ejecución del procedimiento registrados........................................................67Tabla 7.1: Códigos de referencia a los escenarios de calidad generados por QAGen........................72Tabla 7.2: Códigos de referencia a los escenarios de calidad reales..................................................73Tabla 7.3: Performance sentences detectadas en MSLite...................................................................73Table 7.4: Valores obtenidos comparando contra R1.........................................................................74Table 7.5: Valores obtenidos comparando contra R2.........................................................................74

5

Page 6: Generación de Escenarios de Calidad a partir de ...

Resumen

Para el desarrollo de un sistema de software, es necesario contar con la especificación de

los requerimientos.  Los mismos suelen referirse a  la   funcionalidad del  sistema, es decir,  a   la

capacidad del sistema para hacer el trabajo para el cual fue pensado. Sin embargo, el éxito o

fracaso del desarrollo de un sistema no está determinado sólo por los requerimientos funcionales,

sino  también por  los no  funcionales,  o atributos de calidad (QAs).  Para  lograr un sistema de

calidad es importante tomar buenas decisiones al momento de diseñar la arquitectura, ya que un

diseño puede cumplir con la funcionalidad deseada y fallar a la hora de satisfacer sus QAs; es por

ello que es imprescindible identificarlos durante la captura de requerimientos, para tenerlos en

cuenta en la etapa de diseño y obtener especificaciones concretas de cada uno de ellos.

Los QAs se pueden representar, especificar y analizar mediante escenarios de calidad. El

escenario de calidad es un mecanismo que permite caracterizar y capturar aspectos de QAs de

una forma concreta, que puede ser evaluada y utilizada en las actividades de diseño, y luego

durante  el  desarrollo.  La   tarea de  analizar   los   requerimientos  para  especificar  escenarios  de

calidad concretos suele resultar dificultosa para el analista o arquitecto, ya que requiere de mucho

tiempo   y   esfuerzo;   además   que   para   lograrlo   de   manera   eficaz   debe   poseer   experiencia   y

conocimiento sobre cada uno de los QAs relevados.

En este trabajo se presenta una herramienta para asistir a un arquitecto o analista en la

tarea de especificación de escenarios de calidad, obteniendo información de un documento de

requerimientos   textuales,   gracias   a   técnicas   de  procesamiento   de   lenguaje   natural   (NLP)   e

información no estructurada,  para detectar los atributos de calidad y generar, de manera semi­

automática,   escenarios   de   calidad   a   partir   de   las   especificaciones   de   requerimientos.  La

herramienta,   llamada QAGen,  puede  entonces  asistir   a  un  analista  que  no   tiene  experiencia

suficiente   y   minimizar   los   tiempos   que   demanda   una   inspección   manual,   para   obtener   los

escenarios de calidad que son tan importantes para el diseño arquitectónico del sistema.

Para evaluar la técnica propuesta se realizaron 2 experimentos, con diferentes métricas de

similitud entre escenarios generados y reales, obteniendo una buena cantidad de cifras que fueron

sintetizadas y analizadas con valores de similitud aceptables. Además se evaluaron los tiempos

de   análisis   y   generación   de   escenarios   candidatos,   que   en   ningún   caso   superaron   los   20

segundos. Estos fueron muy favorables, sobre todo en comparación con herramientas similares,

que utilizan otras técnicas, demandando tiempos mayores en varios órdenes de magnitud.

6

Page 7: Generación de Escenarios de Calidad a partir de ...

DedicatoriasA mi madre por su apoyo con paciencia, amor, sacrificio, recursos y compañía.

A mi amada Adriana por ser la persona con la que compartiremos no sólo este sino muchos logros

y desafíos al unirnos con amor para toda la vida.

A todos mis amigos y parientes que me acompañaron, comprendieron y apoyaron con su fe, amor

fraternal, y siendo parte de alguna u otra manera.

Pero sobre todo a Jesucristo por ser la razón de mi nueva vida, fuente de inspiración y fortaleza.

J. E. M.

En primer lugar a Dios, porque todo es por él y para él.

Luego a Joana, mi esposa, la persona que alegra mi vida; por su compañía, apoyo, empuje,

paciencia, dedicación y amor incondicional.

A mis padres, Néstor y Viviana, por su esfuerzo, sustento, educación, paciencia y amor.

A mis hermanos, mi abuela, mis amigos y todos los que creyeron en mi y comparten esta

alegría conmigo.

A. V.

7

Page 8: Generación de Escenarios de Calidad a partir de ...

AgradecimientosAgradecemos a nuestros directores Dr. Jorge Andrés Díaz Pace y Claudia Marcos, por escuchar

esta propuesta de Tesis y compartir el mismo entusiasmo que nosotros en la realización de este

proyecto, con predisposición y paciencia. También queremos hacer llegar nuestro agradecimiento

a todos los profesionales que formaron parte de nuestro ciclo académico, sin su vocación docente

no podríamos haber realizado este logro. A todos ellos, muchas gracias.

8

Page 9: Generación de Escenarios de Calidad a partir de ...

1 IntroducciónUn sistema de software posee normalmente estructuras que comprenden: sus elementos

de   software   (por   ejemplo,   componentes),   relaciones   entre   ellos   (por   ejemplo,   “usos”   entre

componentes), y las propiedades de dichos elementos y relaciones [Bass 2003]. Tales estructuras

conforman la arquitectura de software del sistema. Una de las premisas más importantes a tener

en cuenta respecto a una arquitectura de un software, es que debe ser identificada y definida de

manera concisa y desde etapas  tempranas para   lograr  un sistema de calidad y evitar  serias

consecuencias como desperdicio de tiempo y recursos (debido a una arquitectura incorrecta). De

esta   manera,   se   debe   elaborar   una   representación   de   la   arquitectura   que   la   modele

adecuadamente y pueda quedar claramente documentada. De hecho, algunos sistemas poseen

una arquitectura compleja, y no puede ser obviada ni representada en forma vaga.

Para el desarrollo de sistemas de software es necesario contar con una especificación de

los  requerimientos que debe cumplir   tal  sistema,  de manera  tal  de asegurarse que se hayan

comprendido   las  necesidades  y  objetivos  de   los  stakeholders,   y  así   se  puedan  alcanzar   las

expectativas. Las especificaciones de software suelen contener requerimientos que se refieren a

la funcionalidad de un sistema, ya que es lo primero que tiene en cuenta el cliente o la parte

interesada.  Sin embargo,  el  éxito o  fracaso del  desarrollo de un sistema de software no está

determinado  sólo  por   los   requerimientos   funcionales,  sino   también  por   los   requerimientos  no

funcionales  o atributos de calidad  (QAs).  Los  QAs,  como pueden ser:  Usabilidad,  Seguridad,

Disponibilidad,   Portabilidad,   Modificabilidad,   o  Performance,   son   requerimientos   que   hacen

referencia a características de calidad o restricciones de un sistema [Gorton 2011]. La arquitectura

de software de un sistema está determinada por los QAs requeridos para tal sistema. Es por ello

que  es   imprescindible   identificar   los  QAs durante   la   captura  de  requerimientos  y   tenerlos  en

cuenta en la etapa de diseño, para poder tomar las decisiones apropiadas y elegir la arquitectura

correcta que los satisfaga. 

El desafío no es sólo identificar todos los QAs involucrados en un sistema de software,

sino también obtener especificaciones concretas de cada uno de ellos. Además, hay QAs que

comprometen a otros QAs de manera negativa, haciendo necesario el análisis de los  tradeoffs

arquitectónicos [Smith 1993]

Un atributo  de calidad de un sistema de software se puede representar,  especificar  y

analizar mediante escenarios de calidad. El escenario de calidad es un mecanismo que permite

caracterizar   y  capturar  aspectos  de  QAs de  una   forma concreta,  que  puede  ser  evaluada  y

utilizada en las actividades de diseño, y luego durante el desarrollo. Es así que una arquitectura

puede ser diseñada y evaluada utilizando escenarios de calidad. [Bass 2003]

9

Page 10: Generación de Escenarios de Calidad a partir de ...

1.1. Problemática

  Aunque   los  QAs  pueden  ser  especificados  y  documentados  mediante  escenarios  de

calidad, este mecanismo no es utilizado frecuentemente  [Shaw 1996]. La tarea de analizar los

requerimientos suele resultar dificultosa para el analista o arquitecto, ya que a menudo tiene que

dedicar  mucho   tiempo  y  esfuerzo;  además  que  para   lograrlo  de  manera  eficaz  debe  poseer

experiencia y conocimiento sobre cada uno de los QAs relevados. Otra complicación de obtener

los escenarios de calidad de un sistema, es que los QAs provienen de diversas fuentes, como

objetivos   de   negocio,   entrevistas,   especificaciones   de   requerimientos,   etc.   Generalmente   los

documentos que resultan de la elicitación de requerimientos poseen información de QAs de forma

parcial y dispersa entre las especificaciones funcionales del sistema,  lo que hace que puedan

llegar a pasar desapercibidos por el analista [Haak 2005]. De esta manera, hay un riesgo alto de

que ocurran consecuencias negativas tanto en la etapa de desarrollo e implementación, como en

la  de  mantenimiento  del  sistema.  Además,  pueden  suceder  consecuencias  posteriores  como:

fallas en el negocio, pérdida de ingresos, aumento del costo del proyecto, relaciones dañadas con

el   cliente,   entre   otras   consecuencias.  Por   ejemplo,   las   consecuencias  de  una  especificación

equivocada de seguridad en un sistema bancario o  financiero pueden resultar  en accesos no

deseados a información clasificada, o en vulnerabilidades para potenciales ataques de  hackers.

Por otro lado, si hay dos o más QAs en consideración y los mismos no están bien especificados,

podría ser dificultoso y hasta quizás pasarse por alto el análisis de  tradeoffs  entre los QAs en

cuestión. 

Existen diversas propuestas para la especificación y documentación de requerimientos no

funcionales en forma sistemática y eficaz. Por ejemplo, en  [Dorr 2003]  se presentan métodos

organizados para elicitar y especificar de forma manual QAs, pero demandan tiempo y esfuerzo

de parte de los analistas y arquitectos. Es así que se han considerado técnicas que puedan asistir

a un analista (de forma automatizada) en la tarea de elicitar y especificar QAs. En [Sampaio 2007]

se presenta  EAMiner  como una   técnica semi­automatica  para  separar  Crosscutting  Concerns

(CCCs),  los cuáles están estrechamente relacionados con los QAs. El enfoque de  EAMiner  se

basa   en   procesamiento   de   lenguaje   natural   utilizando   una   matriz   para   registrar   información

linguística   y   realizar   inferencias   para   identificar   abstracciones   y   CCCs.  Además,   se   ha

desarrollado la herramienta QAMiner [Bertoni 2010] que tiene como objetivo identificar un conjunto

de atributos de calidad candidatos, presentes en los casos de uso de un sistema, basándose en

aspectos tempranos detectados previamente. El enfoque de  QAMiner  utiliza una ontología que

representa el dominio de atributos de calidad y escenarios de calidad conteniendo relación entre

las palabras y los QAs, y se recurre a técnicas de procesamiento de lenguaje natural. Por otro

lado,  se  ha desarrollado  REAssistant  que consiste  en una herramienta  que,  de  manera muy

flexible,  provee  soporte  para  el  desarrollo  e   integración de  técnicas  para  el  procesamiento  y

análisis de requerimientos textuales. Los aspectos clave del enfoque propuesto para REAssistant

son la aplicación de una arquitectura de análisis de texto extensible (Unstructured Information

Management) que se compone de varios módulos NLP para procesar los requisitos, el análisis

semántico y la combinación de diferentes estrategias para descubrir concerns automáticamente.

10

Page 11: Generación de Escenarios de Calidad a partir de ...

De la revisión de la literatura, puede notarse que ninguna de las propuestas logran obtener una

especificación   de   QAs   por   medio   de   escenarios   de   calidad   a   partir   de   los   documentos   de

requerimientos.   Además,   las   herramientas   semiautomáticas  que   se  pueden   encontrar   suelen

demandar   muchos   datos   de   entrada   que   no   siempre   están   disponibles,   mucho   tiempo   de

procesamiento para grandes volúmenes de  información, proveer datos de parte del analista o

herramientas que realicen un pre­procesamiento, entre otras demandas. Sin embargo, mediante

avances recientes en materia de procesamiento de  lenguaje natural  se pueden superar estas

limitaciones   combinando   NLU   (Natural   Language   Understanding)   y   NLG   (Natural   Language

Generation) para construir herramientas semi­automáticas que extraigan información sobre QAs

en documentos de requerimientos y se pueda asistir al analista para generar los escenarios de

calidad correspondientes. 

1.2. Enfoque de QAGen

En este trabajo se argumenta que es posible asistir a un arquitecto o analista en la tarea

de especificación de escenarios de calidad, obteniendo información necesaria para detectar los

atributos de calidad (de un medio textual) y generar posibles escenarios de calidad a partir de las

especificaciones de requerimientos. El aprovechamiento de técnicas basadas en procesamiento

de lenguaje natural e información no estructurada permite, en principio, automatizar el análisis de

los documentos disponibles. Es así que se desarrolló un enfoque que tiene como objetivo resolver

el siguiente problema:  dado un documento de requerimientos como entrada, obtener elementos

“básicos”  para  construir  posibles  escenarios  de calidad en base a   las  descripciones de  tales

requerimientos.

La entrada del proceso son los documentos donde se especifican los requerimientos del

sistema,  y  un diccionario  de   taxonomías por  cada  atributo  de calidad que puede  proveer  un

experto del dominio o las fuentes de la literatura. Todas las entradas deben estar en formato de

texto plano. Adicionalmente se puede configurar el enfoque mediante el lenguaje de consultas de

UIMA  y   definición   de   extractores   para   ajustar   la   detección   de   QAs   y   la   generación   de   las

secciones de los escenarios de calidad.

El  proceso,  básicamente,  consta de dos  fases,  como se muestra en  la  Figura 1.1.  La

primer fase, denominada “Estructuración”, analiza la información no estructurada, y en formato de

texto plano, de manera tal que pueda generarse meta­información y estructuras de datos que

permitan a un sistema de computadora realizar los procesamientos pertinentes. La segunda fase,

denominada   “Análisis   QA”,   se   encarga   de   procesar   toda   la   meta­información   para   detectar

oraciones y frases que contengan información referente a QAs, de los cuales se extraen datos que

pueden servir  para generar  las secciones de  los escenarios de calidad. Finalmente, aplicando

NLG,   se   utilizan   los   datos   e   información   extraídos   obtener   texto   que   puede   aproximar   las

secciones de un escenario de calidad. 

11

Page 12: Generación de Escenarios de Calidad a partir de ...

Figura 1.1: Proceso del enfoque propuesto

La salida es presentada como un formulario típico de un escenario de calidad [Bass 2003],

donde  por   cada  sección   se  pueden  visualizar   y   seleccionar   las   distintas   frases  que  podrían

conformar tal sección en un escenario de calidad concreto.

Para aplicar esta técnica se desarrolló un plugin de Eclipse, denominado QAGen, que sirve

como herramienta de software para asistir en la generación de escenarios de calidad. QAGen  le

presenta al analista un conjunto de potenciales secciones de escenarios de calidad (Figura 7.1), y

para  cada una puede mostrar  el  contexto  dentro  del  documento  de donde se ha extraído  la

información que sirvió  para  inferir   tal  sección (Figura  7.2).  Se pueden validar  y  descartar   las

secciones según corresponda, para finalmente generar escenarios de calidad concretos con dos

estrategias: i) combinatoria entre las potenciales secciones, o ii) seleccionando las que se desean

que conformen un escenario de calidad específico.

Para   determinar   el   desempeño  de   la   técnica   se  evaluaron   los   resultados   de  QAGen

realizando un procedimiento experimental. Tal procedimiento consistió en utilizar como corpus de

entrada los textos de especificaciones para tres casos de estudio para obtener escenarios de

calidad de  Performance. Con los escenarios de calidad generados se analizaron las similitudes

con escenarios de calidad de referencia mediante varias métricas obteniendo índices aceptables.

Por ejemplo,  con  la estrategia de similitud del Coseno, que es una de  las más conocidas en

Recuperación de Información, se obtuvieron valores de similitud entre 0,4 y 0,54.

El   trabajo   realizado   presenta   diferentes   contribuciones   al   campo   de   la   Ingeniería   de

Software. Primero, se desarrolló un modelo para asistir a un analista durante la especificación de

escenarios de atributos de calidad de un sistema. En segundo lugar, para implementar tal modelo,

se definieron reglas y diccionarios para extraer información del atributo de calidad Performance y

se integraron diversas técnicas y componentes de software para funcionar en conjunto.

12

Page 13: Generación de Escenarios de Calidad a partir de ...

1.3. Organización del Informe

El resto del informe de este trabajo se organiza de la siguiente manera.

En  el  Capítulo   II  se  explican   los   conceptos   teóricos   relativos  a   atributos   de   calidad,

especificación   de   requerimientos,   arquitecturas   de   software   y   escenarios   de   calidad.

Adicionalmente, se introducen algunas técnicas y conceptos relacionados al  procesamiento de

lenguaje natural y análisis de información no estructurada.

En el Capítulo III se describen y comparan algunos trabajos de investigación en el campo

de la identificación de QAs, y enfoques propuestos para resolver el problema de la especificación

de escenarios de calidad.

En el Capítulo IV se presenta el enfoque QAGen. Se provee una descripción general del

proceso   que   conforma   la   técnica   y   cada   componente  del   proceso   desde  un   punto  de   vista

arquitectónico. Luego, se realiza una explicación del uso de la herramienta y cómo un analista o

usuario debe interactuar con la herramienta. Finalmente, se detallan las estrategias y heurísticas

actualmente implementadas en la herramienta para las distintas etapas del procesamiento.

En  el  Capítulo V  se  presentan   los   resultados  de   la  evaluación del  desempeño de   la

herramienta QAGen con distintas especificaciones textuales de requerimientos de tres casos de

estudio.  Se  exhiben   los   tiempos  de  ejecución  que  se   registraron  y   se  analiza   la   efectividad

comparando con diferentes métricas de similitud con los textos generados y los de referencia.

Finalmente,   en   el  Capítulo   VI  se   presenta   las   conclusiones   del   presente   trabajo,

mencionando los aportes del enfoque y las limitaciones del mismo. Además, se enumeran algunas

líneas futuras de trabajo en el campo de escenarios de calidad, y también posibles mejoras de

esta propuesta.

13

Page 14: Generación de Escenarios de Calidad a partir de ...

2 Marco teóricoEn este  capítulo  se presentan  los  conceptos principales  que se utilizan a  lo   largo del

desarrollo de este informe. Primeramente, se introducen los conceptos de Atributos de Calidad,

Escenarios de Calidad  y  Arquitectura de Software.  Luego,  se  describen   los  conceptos  de

Procesamiento de Lenguaje  Natural  e  Información no estructurada,   ya  que  estos  suelen

aplicarse para automatizar el proceso de especificación de requerimientos.

2.1. Atributos de Calidad

Los Atributos de Calidad (QAs) son propiedades medibles y evaluables de un sistema,

estas propiedades son usadas para indicar el grado en que el sistema satisface las necesidades

de   los  stakeholders  [Wojcik   2013].   Los   QAs   además   son   concebidos   como   aquellos

requerimientos que no son funcionales. De hecho, la funcionalidad es mayormente ortogonal a los

QAs; un diseño puede cumplir con la funcionalidad deseada y fallar a la hora de satisfacer sus

requerimientos de calidad. De esta manera, se entiende a la funcionalidad como la capacidad del

sistema para hacer el trabajo para el cual fue pensado, independientemente de la estructura.

Existen QAs mayormente usados que se suelen identificar en numerosos sistemas y se

describirán a continuación, aunque la lista no es final ya que muy a menudo hay situaciones en

que podrían  identificarse y proponerse nuevas propiedades para  las diversas necesidades de

stakeholders. 

2.1.1 Performance

El atributo de calidad Performance se refiere a la capacidad de responder, ya sea el tiempo

requerido para responder a eventos determinados, o bien, la cantidad de eventos procesados en

un   intervalo   de   tiempo  dado.   La  Performance  caracteriza   la  proyección  en  el   tiempo  de   los

servicios entregados por el sistema.

La  Performance  radica   en   la   naturaleza  de   los   recursos  empleados   para   cumplir   las

demandas,   y   cómo  recursos   compartidos  deben   ser   asignados   cuando   se  deben   considerar

múltiples demandas sobre los mismos recursos. [IEEE 1992]

Un esquema muy conciso y explicativo surge a partir de los trabajos de dos referentes

[Smith 1993] para modelar y describir taxonómicamente las implicancias y conceptos en cuanto a

performance. Este esquema se observa en la Tabla Tabla 2.1

14

Page 15: Generación de Escenarios de Calidad a partir de ...

Concerns

Latencia

Response windowPrecedenciaJitterCriticality

ThroughputObservation intervalProcessing rateCriticality

CapacidadUtilizationSchedulable utilizationSpare capacity

Modos

Factores

Demanda Arrival patternExecution time

SistemaType of resourcesSoftware servicesResource allocation

Tabla 2.1: Conceptos de performance (adaptado de [IEEE1992])

En   la   Tabla  Tabla   2.1  se   sintetizan   las   características   de   los  concerns  propios   de

Performance, los cuales se definen a continuación.

Latencia: Cuánto tiempo lleva responder a un evento específico.

Throughput: Cuántos eventos pueden ser atendidos dentro de un intervalo de tiempo.

Capacidad:  Cuánta  demanda  se  puede  sobrellevar  en  el   sistema mientras  se   siguen

cumpliendo los requerimientos de latencia y throughput.

Modos: Cómo puede cambiar la demanda y los recursos a lo largo del tiempo. Qué sucede

cuando la capacidad del sistema es excedida y no todos los eventos pueden ser atendidos en la

proyección de tiempo.

2.1.2 UsabilidadEste atributo de calidad se refiere a la facilidad con la que un usuario puede aprender a

utilizar e interpretar los resultados producidos por un sistema [Barbacci 1995]. Para este atributo

de calidad, se suelen considerar diversos aspectos de la interacción humano­computadora, tales

como:  aprendizaje  del   sistema,  utilización  eficiente  del   sistema,  minimización  del   impacto  de

errores,  adaptación del sistema a  las necesidades del  usuario,  confianza y satisfacción, entre

otros.

2.1.3 ModificabilidadEsta  propiedad   trata  sobre   la   capacidad  de  un  sistema para  que  puedan  modificarse

diversas propiedades del  mismo ­  sobre  todo  la   funcionalidad  ­  sin  que demande demasiado

15

Page 16: Generación de Escenarios de Calidad a partir de ...

tiempo,  esfuerzo  y/o   recursos.  La  mayoría de   los  sistemas  son propensos  a  que  se precise

introducirles   cambios,   ya   sea   para   actualizarlos   porque   cambian   las   reglas   de   negocio,   o

simplemente cambian de parecer los clientes y otros stakeholders. Es la modificabilidad de tales

sistemas lo que determina la facilidad con la que el sistema se pueda adaptar ante dichos cambios

[Bachmann 2007].

Particularmente  si   los  componentes  de  un  sistema están estrechamente  dependientes

entre sí (acoplamiento), es muy probable que no sólo haya que realizar grandes modificaciones en

el   componente   específico   al   cambio   requerido,   sino   también   en   otros   componentes   que   no

necesariamente tienen esa responsabilidad; demandando así mayor cantidad de horas de trabajo

de  los  desarrolladores.  Estas  incidencias pueden presentarse desde  los  más altos niveles de

abstracción   como  componentes   y   sus   conectores;   hasta  bajo   nivel   de  abstracción   como   las

interfaces, contratos, estructura y comunicación de los datos, etc.

2.1.4 SeguridadEs el equilibrio entre la confidencialidad, la integridad, la irrefutabilidad y la disponibilidad

de la información y datos manipulados por el sistema. Se trata del estado de un sistema, el cual

puede ser   transitorio  y  volátil.  La  seguridad  de  un sistema se caracteriza  por  mecanismos y

técnicas empleados para intentar reducir los más posible el impacto provocado por un ataque, y

las amenazas (entendidas como los caminos mediante los cuales se pueden provocar un ataque).

Abarca   los   planos   de   observación   físico,   lógico   y   humanos.   Posee   tres   tipos   de   enfoque:

prevención, precaución y reacción.

2.1.5 Otras consideraciones sobre QAsPueden   encontrarse   además   muchos   otros   QAs   como   portabilidad,   configurabilidad,

reusabilidad, testeabilidad, mantenibilidad, etc. Pero la lista puede cambiar a medida que cambian

los paradigmas, evolucionan las tecnologías y las reglas de negocio. Además varios QAs están

estrechamente relacionados entre sí. 

Existen   grandes   comunidades   que   estudian   los   diversos   QAs,   las   cuales   están   en

constante crecimiento investigando y aportando al conocimiento sobre cada uno. Cada comunidad

maneja  su  propio  vocabulario   y  conjunto  de  conceptos.  [Bass  2003]  Por  ejemplo   términos  y

conceptos   utilizados   en   la   comunidad   de   seguridad   informática   son   cifrado,   criptografía,

esteganografía, vulnerabilidad, etc. Por otra parte, suelen emplearse los mismos términos para

diferentes QAs por sus comunidades, pero su significado y semántica pueden ser muy distintas;

no es  lo  mismo riesgo,   impacto y contingencia en el  ámbito de  la seguridad que en el  de  la

disponibilidad.

Las especificaciones en cuanto a QAs por parte de stakeholders suelen ser indirectas, y

muchas   veces   pueden   aplicar   a   varios   QAs  [Wojcik   2013],   por   ejemplo:   "Introduce   new

capabilities seamlessly" puede aplicar a Performance, Disponibilidad y Modificabilidad; “Integrate

with other systems easily” puede aplicar a Interoperabilidad, Portabilidad y Modificabilidad. 

16

Page 17: Generación de Escenarios de Calidad a partir de ...

Un gran problema que suele ocurrir en la elicitación de requerimientos, o en la etapa de

diseñar un sistema, es que la especificación de QAs suele estar fragmentada o desestimada, y

debido a esto los sistemas son frecuentemente re­diseñados. El mejor momento para especificar

atributos de calidad es antes de establecer la arquitectura de software.[Bass 2003] Sin embargo,

los QAs no sólo deben ser considerados en la elicitación de requerimientos, sino en todas las

etapas   de   diseño,   implementación   y  deployment.   El   analista   o   arquitecto   de   software   debe

capturar, analizar, organizar y documentar los requerimientos, pero muchas veces se dificulta la

correcta identificación de los QAs. 

2.2. Arquitectura de Software

Una arquitectura de software es una descripción de las estructuras del sistema, representa

el diseño de alto nivel de un sistema y comprende elementos de software con propiedades y

relaciones entre ellos [Bass 2003]. Es el vehículo de comunicación entre los stakeholders, ya que

provee un lenguaje común en el que los diferentes  concerns  pueden expresarse, negociarse, y

resolverse a un nivel  que es  posible  dominar   intelectualmente,  aún para  sistemas grandes y

complejos.

Una determinada arquitectura está dictaminada principalmente por sus QAs, y es el primer

artefacto que puede ser analizado para determinar qué tan bien se están cumpliendo sus QAs

[Bass 2003], ya que las decisiones arquitectónicas se basan en ciertos QAs, ponderando así unos

por sobre otros. Es crucial corroborar que el diseño de la arquitectura satisfaga los requerimientos

de  QAs antes  de   la   implementación del   sistema.  Además,  es  de  suma  importancia  prevenir

diversas problemáticas del ciclo de vida de software que suelen aparecer a posteriori, como por

ejemplo la erosión arquitectónica [Medvidovic 2003].

Durante   la   construcción   de   la   arquitectura,   se   deben   tomar   decisiones   de   diseño   y

plasmarlas en documentos arquitectónicos, como puede ser el  Software Architecture Document,

que contendrá información relevante sobre el funcionamiento y la arquitectura del sistema. Dichos

documentos son construidos con el  objetivo de que las decisiones de diseño sean tenidas en

cuenta cuando se materialice el sistema.

Existen  tres   tipos  principales  de estructuras,  a  saber:  de módulos,  de componentes  y

conectores, y de asignación. Estas estructuras son una herramienta muy útil para diseñar una

arquitectura, debido a que permiten modelar distintos aspectos de un sistema.

Una arquitectura y los QAs que la caracterizan pueden ser especificados y evaluados por

medio de Escenarios de Calidad. 

2.3. Escenarios de calidad

Los escenarios de calidad se pueden definir como requerimientos que indican el grado en

el cual un sistema debe exhibir varias propiedades en una combinación deseada [Bass 2003]. El

escenario de calidad es un mecanismo que permite capturar aspectos de QAs de una  forma

concreta, que puede ser evaluada y utilizada en las actividades de diseño, y luego durante el

desarrollo. Los requerimientos de QAs pueden ser capturados como escenarios de calidad, ya que

17

Page 18: Generación de Escenarios de Calidad a partir de ...

son una forma de representar los QAs de un sistema de una manera formal  [Bass 2003]. Cada

escenario de calidad consiste de seis partes o secciones como se muestra en la  Figura 2.1, las

cuales se explicarán a continuación.

Figura 2.1: Partes del escenario de calidad

I. Source  ­ Es alguna entidad que generó el estímulo.

II. Stimulus ­ El estímulo es una condición o evento que afecta al sistema y necesita

ser considerada.

III. Environment ­ El estímulo ocurre bajo ciertas condiciones. 

IV. Artifact ­ Algún artefacto que es estimulado. Esto puede ser el sistema completo o

partes del mismo.

V. Response ­ La respuesta es la actividad que resulta del estímulo.

VI. Response measure ­ Cuando una respuesta ocurre, debe ser medida de alguna

manera, de modo que el requerimiento pueda ser evaluado.

Hay dos tipos de escenarios de calidad: Escenarios Generales, que son aquellos que no

dependen de algún sistema, pero pueden potencialmente pertenecer a un sistema; y por otra

parte los Escenarios Concretos, los cuales son específicos a un sistema en particular que se esté

considerando [Bass 2003]. Cabe señalar que pueden haber escenarios concretos que no posean

las seis secciones.

Por   la   misma   razón   que   los   casos   de   uso   son   esenciales   para   determinar   los

requerimientos funcionales, una colección de escenarios de calidad concretos pueden ser usados

para especificar   requerimientos  de QAs para  un sistema en  particular.  Cada  escenario  es   lo

suficientemente concreto como para tener un significado para el arquitecto, y sus detalles son lo

suficientemente   significativos   como   para   evaluar   si   el   sistema   ha   logrado   las   características

propias del atributo de calidad [Bass 2003]. 

En   teoría  la  generación de  escenarios  de  calidad  debe   realizarse  en   la  elicitación de

requerimientos de un proyecto, pero en la práctica pocas veces es concretada estrictamente. De

hecho   los   requerimientos   de   QAs   para   un   sistema   rara   vez   son   elicitados   de   una   manera

disciplinada. Esta situación se puede solucionar generando escenarios concretos, utilizando tablas

(templates) específicas a un atributo de calidad para crear los escenarios generales y a partir de

estos derivar los escenarios concretos específicos al sistema. Por cada atributo se presenta una

18

Page 19: Generación de Escenarios de Calidad a partir de ...

tabla que brinda posibles valores independientes del sistema para las seis partes de un escenario

de calidad. Las tablas sirven de lista de validación para asegurarse que todas las posibilidades

fueron consideradas [Bass 2003], ya que la omisión de algún requerimiento de atributo de calidad

puede tener serias consecuencias.

Por ejemplo si se desea crear un escenario de calidad de performance concreto, cada una

de las seis partes del escenario podrían instanciarse como se muestra en la Figura 2.2. Una vez

decididas las partes correspondientes, es posible generar un escenario de calidad concreto para

un requerimiento no funcional “Users initiate 1,000 transactions per minute stochastically under

normal operations, and these transactions are processed with an average latency of two seconds”

como se observa en la Figura 2.2.

De forma análoga al atributo de calidad performance, se pueden crear distintos escenarios

concretos para los restantes atributos de calidad.  

Figura 2.2: Performance scenario sample

Los escenarios de calidad sirven para generar un gran número de escenarios, genéricos,

independientes del sistema que sirven para especificar  los requerimientos para un atributo de

calidad   en   particular.   Es   entonces   que   los   escenarios   deben   ser   traducidos   a   escenarios

específicos,   es   decir   con   términos   concretos   del   sistema   en   cuestión.   Particularmente,   un

escenario general puede tener muchas versiones de escenarios específicos al sistema.

Cabe destacar también que existen enfoques como ATAM  [Klein 2000]  el  cual permite

evaluar las consecuencias de las decisiones arquitectónicas considerando los requerimientos de

atributos de calidad, y para ello utiliza escenarios de calidad organizados por medio de técnicas de

priorización. Se puede decir que la obtención de escenarios de calidad a partir de especificaciones

de requerimientos es determinante para lograr la arquitectura apropiada en siguientes etapas en el

ciclo de vida del software.

19

Page 20: Generación de Escenarios de Calidad a partir de ...

2.4. Natural Language Understanding (NLU)

El procesamiento de lenguaje natural (NLP por sus siglas en inglés) es un área de estudio

que   tiene   sus   inicios  en  el  mismo  momento  en  que   se   comenzó   a   estudiar   e   investigar   la

inteligencia artificial en las ciencias de computación con la publicación de Alan Turing en 1950

[Turing 1950].

NLP se trata de las técnicas computacionales que procesan lenguaje humano hablado y

escrito,  desde  aplicaciones   rudimentarias  como contabilización automática  de  palabras,  hasta

aplicaciones sofisticadas (como aquellas que responden preguntas automáticamente y traducción

de lenguaje hablado en tiempo real). Lo que distingue estas aplicaciones de procesamiento de

lenguaje de otros sistemas de procesamiento es su uso del conocimiento del lenguaje. [Jurafsky

2000] Al diseñar un sistema NLP debe definirse el dominio o conjunto de posibles entradas, las

cuales   también   servirían   para   realizar   pruebas   y   ejemplos   de   demostración   (por   ejemplo

documentos de texto). A tal colección de ejemplos de entrada de datos se la denomina corpus.

NLP se divide en la subárea de interpretación de lenguaje humano (NLU por sus siglas en

inglés), y la subárea de generación de lenguaje natural (NLG por sus siglas en inglés). A NLG

también se la considera entre las tareas semánticas que son parte de NLU.  

NLU involucra varias tareas, que suelen aplicarse secuencialmente modeladas como un

pipeline. De las diversas tareas de NLU que existen, las que se han considerado para el presente

trabajo   son:   Análisis   léxico   y   segmentación   de   oraciones,   lematización   y   segmentación

morfológica de inflexiones, etiquetado de parte del discurso y análisis gramatical (sintáctico). En

este orden es que mayormente suele ser aplicadas en un pipeline, y cada una será explicada a

continuación.

2.4.1 Análisis Léxico y SegmentaciónPara que a un texto se le aplique procesamiento de lenguaje, lo primero a considerar es

que necesita ser segmentado en unidades lingüísticas tales como palabras, signos de puntuación,

números,   formas   alfanuméricas.   El   texto   debe   ser   fraccionado   y   enriquecido   con   meta­

información, la cual es utilizada para asignar a priori datos de interés y analizarlos a posteriori;

favoreciendo la deducción y relación de información. La unidad básica de texto que puede ser

enriquecida se denomina Token. El análisis léxico ­ también llamado tokenización ­ es el proceso

de convertir una secuencia de caracteres en una secuencia de tokens. Además, es muy útil para

la   identificación   de   unidades   que   no   necesitan   ser   descompuestas   para   posteriores

procesamientos,   de   manera   tal   que   puedan   ser   descartadas   y   optimizar   el   proceso.

Generalmente, la tokenización puede facilitar el análisis sintáctico y gramatical por lo que suelen

combinarse tales procesamientos. A menudo la tokenización es considerada entre las tareas más

simples y que menos se presta atención en  idiomas con  lenguaje segmentado como  inglés y

español.  Sin   embargo,   los   errores   cometidos  en  esta   subtarea  pueden  propagarse  a   tareas

posteriores y afectar mucho los resultados finales. [Craig 2013]

20

Page 21: Generación de Escenarios de Calidad a partir de ...

Hay varios niveles de granularidad en la segmentación. La granularidad más pequeña es la

que discrimina palabras, signos,  números, etc;  pero una mayor granularidad de segmentación

suele utilizarse: segmentación de oraciones. Es de especial interés la segmentación de oraciones

cuando se considera a priori llegar a aplicar análisis gramatical, ya que desde el punto de vista

gramatical, la oración es la unidad mínima de sentido.

2.4.2 LematizaciónOtra   tarea  muy   importante  dentro  de  NLP es   la   lematización,  proceso   lingüístico  que

consiste en dada una inflexión (es decir, en plural, en femenino, conjugada, etc.), hallar el lema

correspondiente. Un lema es la forma que, por convención, se acepta como representante de

todas   las   inflexiones   de   una   misma   palabra1,   es   decir   simplificar   las   diversas   y   numerosas

variaciones de morfemas que dependen de un mismo lexema, y finalmente escoger una sola

palabra que represente el significado básico de las diferentes palabras que coinciden en un mismo

lexema (pero difieren en cuanto a sus morfemas).

Por   ejemplo,  el   lexema   “señor”  puede  ser  un   lema que   represente   cualquiera  de   las

palabras "señora” ­ “señoras” ­ “señores” ­ “señorita” Figura 2.3.

Figura 2.3: Ejemplo de lexema y morfemas

Una técnica que suele ser muy útil para aplicar junto con el procesamiento del lenguaje es

clasificar las palabras en taxonomías; también confeccionar tesauros, lista de palabras o términos

controlados   empleados   para   representar   conceptos.   Al   utilizar   este   tipo   de   técnicas,   es

imprescindible sintetizar la lista de términos utilizando lematización. 

2.4.3 Etiquetado gramaticalLa categoría gramatical (POS por sus siglas en inglés) es una clasificación de las palabras

según su tipo. En lingüística computacional, el  etiquetado gramatical  (conocido también por su

nombre en inglés, part­of­speech tagging, POS tagging) es el proceso de asignar (o etiquetar) a

cada   una   de   las   palabras   de   un   texto   de   entrada   su   categoría   gramatical,   por   medio   de

marcadores (por ejemplo anotaciones).

1 https://es.wikipedia.org/wiki/Lematizaci%C3%B3n

21

Page 22: Generación de Escenarios de Calidad a partir de ...

Estas clasificaciones son útiles debido a  la  mucha  información que brindan sobre una

palabra y sus subyacentes. Saber si una palabra es un sustantivo o un verbo denota sobre las

potenciales palabras subyacentes (por ejemplo los sustantivos son precedidos por determinantes)

y sobre  la estructura sintáctica entorno a la palabra. Esto hace que el etiquetado gramatical sea

un componente   importante en el  análisis  sintáctico­gramatical  y   también para otras  tareas de

extracción de información. La categoría gramatical es además útil cuando se desea sintetizar la

inmensa cantidad de datos que se pueden extraer de un documento, aplicando un filtrado sobre

los datos con una selección de las palabras importantes de tal documento, como los sustantivos o

verbos. Existe una categorización gramatical muy aceptada para el  idioma inglés, denominada

Penn Treebank [Mitchell 1993], que consiste en 45 categorías, tal como se muestra en la  Figura

2.4. Por ejemplo si una palabra está etiquetada con “VBG”, tal palabra se trata de un verbo en

pasado conjugado en gerundio.  O  la  etiqueta “NNS” se aplicó  a  una palabra,  se  trata de un

sustantivo en plural.

Figura 2.4: Categorías gramaticales Penn Treebank

La entrada de un algoritmo de etiquetado es una secuencia de palabras y un conjunto de

etiquetas, y la salida es una secuencia de etiquetas.

Una tarea que debe considerarse en el procesamiento de lenguaje es la desambiguación

[Jurafsky 2000],  ya que las palabras suelen ser ambiguas (se  les pueden asignar más de un

POS).   El   desafío   del   etiquetado   gramatical   es   resolver   tales   ambigüedades,   escogiendo   la

etiqueta apropiada para su contexto. 

22

Page 23: Generación de Escenarios de Calidad a partir de ...

2.4.4 Análisis sintácticoLa gramática centra la atención en la oración como unidad mínima de sentido. Es por esto

que para extraer información de un texto y procesarlo debe considerarse el análisis sintáctico, que

consiste   en   analizar   las   funciones   sintácticas   o   relaciones   de   concordancia   y   jerarquía   que

guardan las palabras cuando se agrupan entre sí en forma de sintagmas ­ oraciones simples y

oraciones compuestas de proposiciones ­ mediante una gramática de la lengua en cuestión. Un

constituyente sintáctico es una palabra o secuencia de palabras que funcionan en conjunto como

una unidad dentro de la estructura jerárquica de una oración. 

A partir de un análisis sintáctico se puede producir un grafo en el cual cada nodo es una

palabra de la oración y los vértices indican qué relación gramatical hay entre las palabras. Por

ejemplo   aplicando   una   análisis   sintáctico   a   la   oración   “Bills   on   ports   and   immigration   were

submitted by Brownback Republican Senator of Kansas” puede producirse el grafo de la  Figura

2.5 donde se indica que la palabra “were” se relaciona con la palabra “submitted” como su auxiliar

de voz pasiva. 

Figura 2.5: Grafo de análisis sintáctico

2.5. Generación de Lenguaje Natural (NLG)

NLG es un área de la inteligencia artificial y la lingüística computacional, que es concebida

para el desarrollo de sistemas de software que pueden producir textos en lenguaje natural que

pueden ser interpretados por humanos. La producción de texto por NLG se realiza a partir de

alguna representación subyacente de información que no tenga características lingüísticas. Las

tecnologías  NLG   combinan   conocimiento   sobre   el   lenguaje   y   el   dominio   de   aplicación   para

producir automáticamente documentos, reportes, explicaciones, mensajes de ayuda, entre otros

diversos tipos de textos. 

Internamente, los sistemas de computadora usan representaciones que son directamente

manipulables por tales sistemas, por ejemplo base de datos sobre aerolíneas, planillas de cálculo

23

Page 24: Generación de Escenarios de Calidad a partir de ...

contables, etc. En muchos casos, sin embargo, estas representaciones de información requieren

ser interpretados por personas expertas; es así que la gran utilidad de la tecnología NLG es crear

sistemas de computadora que presentan información a personas, y en una representación que les

resulte fácil de comprender. 

Las técnicas NLG podrían preferirse antes que la creación manual de documentos porque

pueden  incrementar   la  precisión y   reducir  el   tiempo de actualización,  o  porque garantizan   la

aplicación a estándares  [Dale 1995],   lo cual es muy aplicable a  la creación de escenarios de

calidad.

2.5.1 Corpus NLGEn  el   contexto  de  un  sistema NLG corpus  consiste  en  ejemplos  de   textos  de  salida,

además de textos de ejemplo para ser procesados. Un buen corpus es un recurso muy útil para

adquirir conocimiento cuando módulos específicos de NLG están siendo diseñados; ya que para

hacer un análisis de requerimientos a la hora de diseñar un componente NLG, se recomienda

disponer de un corpus inicial de textos creados por humanos y sus entradas asociadas. En el caso

más simple, el corpus inicial puede ser creado usando ejemplos de textos creados por humanos

que ya hayan sido archivados. Por ejemplo un Corpus de reporte de clima puede ser basado en

reportes reales escritos en el pasado, o también aplica a documentos de especificaciones técnicas

de sistemas similares como escenarios de calidad de software desarrollados anteriormente.

El corpus debe cubrir toda la variedad posible de textos que se esperan producir con el

sistema NLG:   incluir   casos  inusuales   tanto  como casos  típicos.  A veces suele  ser  necesario

solicitar a los expertos del dominio escribir ejemplos de textos de salida apropiados. Por ejemplo

para escenarios de calidad, puede solicitarse a arquitectos y analistas ejemplos de las salidas que

esperan para la generación, o a veces ajustar y retocar los textos que ya se disponen. Puede

implicar mucho esfuerzo elaborar un corpus objetivo, sin embargo, es tiempo bien invertido ya que

un buen corpus facilita el desarrollo de un buen sistema NLG.

Una vez que se dispone del Corpus,   las oraciones que contiene deben clasificarse en

alguna de las siguientes categorías: texto que no cambia, datos directamente disponibles, datos

computables y datos no disponibles.

2.5.2 Arquitectura de un sistema NLGDentro de la comunidad NLG hay un consenso en cuanto a seis actividades básicas que

se deben llevar a cabo a lo largo de todo el proceso NLG,  desde los datos de entrada hasta el

texto  de   salida.  Estas  actividades   son  Content  Determination,   Discourse  Planning,  Sentence

Aggregation, Lexicalization, Referring Expression Generation, Linguistic Realisation.

● Content Determination es el proceso de decidir qué información debe ser comunicada en el

texto,   más   precisamente   qué   información   necesitan   los   usuarios   para   cumplir   sus

objetivos. Se deben crear un conjunto de mensajes desde el sistema de entrada o fuentes

subyacentes de datos; estos mensajes son objetos de datos que luego son usadas por los

procesos de generación de lenguaje subsecuentes. 

24

Page 25: Generación de Escenarios de Calidad a partir de ...

● Discourse Planning ­ también denominada Document Structuring ­ es el proceso de definir

un orden y una estructura sobre el conjunto de mensajes a ser transmitidos, su tarea de

lograr estructurar  los mensajes producidos por el proceso  Content Determination  en un

texto coherente. Esto es como el caso cuando se narra una historia, en la cual se tiene un

comienzo, luego nudo, y finalmente desenlace. Una estructuración correcta puede hacer el

texto más fácil de leer.

● Sentence Aggregation es el proceso de agrupar mensajes juntos en una misma oración.

No   siempre   es   necesario,   ya   que   cada   mensaje   se   puede   expresar   en   una   oración

separada, pero en muchos casos puede lograr un texto con mayor legibilidad y fluidez.

● Lexicalization es el proceso de decidir específicamente cuáles palabras y cuales frases

deben   ser   escogidas   para   expresar   conceptos   del   dominio   y   relaciones   que   podrían

aparecer en los mensajes. También se puede lograr un texto con fluidez si se diversifican

las palabras con sinónimos.

● Referring   Expression   Generation   es   la   tarea   de   seleccionar   palabras   o   frases   para

identificar entidades del dominio. Está directamente relacionada con  Lexicalization, pero

referring   expression   generation   es   una   tarea   de   discriminación,   sobre   todo   para   las

situaciones donde se hace referencia reiteradas veces a una misma entidad dentro del

mismo contexto.

● Linguistic Realisation es el proceso de aplicar reglas de la gramática para producir un texto

que  sea  correcto  sintácticamente,  morfológicamente,   y  ortográficamente.  Este  proceso

usualmente es visto como el inverso del proceso de parsing, ya que en el mismo se utiliza

una gramática para mapear una oración materializada, a una representación del contenido

semántico de tal oración. En este modelo de parsing inverso, la tarea del Realiser es tomar

como entrada una  representación de un  contenido  semántico  de  una oración,  que es

similar a las representaciones producidas por las salidas de los parsers, y a partir de esto

produce una oración materializada que expresa dicho contenido semántico.

Hay muchas maneras de construir un sistema que realiza las tareas que se describieron, la

más simple es implementar un módulo separado para cada tarea, y conectar estos módulos por

un pipeline de una sóla dirección. Pero desde una perspectiva más pragmática, la arquitectura

más común en sistemas aplicados es un pipeline de tres etapas, a saber: Text­planner, Sentence­

planner y Linguistic Realiser ( Figura 2.6).

Text­planner: Esta etapa, también denominada Document Planner, combina las tareas de

Content Determination y Discourse Planning. 

Sentence­planner: Esta etapa combina Sentence Aggregation, Lexicalization, y Referring

Expression Generation. También se la suele llamar Microplanner.

25

Page 26: Generación de Escenarios de Calidad a partir de ...

Figura 2.6: Arquitectura NLG

2.5.3 Relación de NLG con NLUDesde una perspectiva de investigación NLG es un subarea de NLP, y más aún, NLG está

directamente relacionado con la otra subarea de NLP: Comprensión del Lenguaje Natural (NLU) ­

que es el estudio de los sistemas de computadora que interpretan lenguajes humanos. Ambos

comparten los mismos fundamentos teóricos y a menudo son utilizados en conjunto dentro de una

misma herramienta de software. 

Se puede pensar el  proceso de NLG como el  inverso de NLU. NLG es el  proceso de

mapear   a   lenguaje   humano   las   representaciones   internas   de   computadora   sobre   cierta

información, mientras que NLU es el proceso de mapear lenguaje humano a representaciones

internas   de   computadora.   Desafortunadamente,   por   más   intuitiva   que   sea   la   idea   es   difícil

construir sistemas bidireccionales efectivos en la práctica. Esto se debe a que muchos problemas

de NLU no lo son en NLG y vice versa. Por ejemplo, un gran desafío en construir sistemas NLU

reales es la necesidad de manipular una entrada gramaticalmente incorrecta o mal conformada, lo

cual no sería un problema en NLG; mientras que en NLG el gran problema es asegurar que el

texto generado sea fácil de entender para humanos, lo cual es omitido en NLU.  Para una tarea en

NLG, a menudo basta con  lograr una manera de decir,  describir  o relatar  algo,  mientras que

cualquier experimento en NLU tiene que tener en cuenta el hecho que entradas diferentes pueden

tener un mismo significado. 

Un obstáculo relacionado para sistemas bidireccionales es que las representaciones que

muchos de los analizadores sintácticos de NLU producen como salida, son bastante diferentes a

26

Page 27: Generación de Escenarios de Calidad a partir de ...

la entrada que muchos  realizers NLG requieren; como es el caso del proceso de  parsing. Esta

incompatibilidad básica hace difícil construir un sistema que hace tanto realisation como parsing.

[Reiter 2000]

2.6. Información no estructurada

La   información   no­estructurada   se   refiere   al   producto   directo   de   las   comunicaciones

humanas.   Por   ejemplo   documentos,   correos   electrónicos,   diálogos,   imágenes   y   videos.   Es

información que no fue en principio codificada para ser procesada por máquinas sino generada

por humanos y para humanos. Se define no­estructurada porque carece de la semántica explícita

(estructura)   ­   como  un  modelo  de  datos  predefinido   ­   requerida  para  que   los  programas  de

computadora puedan  interpretar   la   información.  Esa ausencia  de estructura en  la   información

resulta  en   irregularidades  y  ambigüedades  que  dificultan  el  procesamiento  que   realizan   tales

programas2.   La   información   no   estructurada   puede   tener   una   pseudo   estructura   o   aún   ser

altamente estructurada pero en maneras que no son anticipadas. Es por esto que este tipo de

información primero debe ser analizada para asignar, al contenido no­estructurado, semánticas

específicas   de   programas   de   computadora.   La   estructura   añadida   provee   explícitamente   las

semánticas   requeridas   por   los   programas   de   computadora   para   interpretar   los   datos

correctamente3.  

Los  documentos  de  requerimientos  de software son  una clase de   información es  una

definición   formal   de   tipos,   propiedades,   y   relaciones   entre   entidades   que   realmente   o

fundamentalmente  existen  para  un dominio  de discusión en particular.  no­estructurada  donde

puede aplicarse este enriquecimiento de estructuración, para aplicar análisis pertinente que pueda

inferir valiosa información como atributos de calidad. Pero en un gran número de casos no es

cierto  que  los  documentos no  tienen metadatos absolutamente.  El   lenguaje  en sí  posee una

estructura inherente denominada gramática, ya que la gramática describe cómo se organizan las

palabras   dentro   de   una   oración   y   se   relacionan   entre   ellas,   mediante   conjunto   de   reglas   y

principios que gobiernan el uso del lenguaje. De esta manera, se puede considerar aplicar al texto

no  estructurado  un  análisis   gramático  en   todos  sus  niveles:   sintáctico,   sintáctico­morfológico,

léxico­semántico mediante técnicas de procesamiento de lenguaje natural.

2.7. UIMA

Las aplicaciones de Gestión de  Información No Estructurada (Unstructured  Information

Management ­ UIM) son sistemas de software que analizan grandes volúmenes de información no

estructurada,   como   texto   en   lenguaje   natural   o   audio,   para   descubrir   conocimiento   que   es

relevante para el usuario final.

Una aplicación UIM puede ser consumir  texto plano e  identificar entidades,  tales como

personas, lugares, organizaciones; o relaciones, por ejemplo “trabaja para” o “se ubica en”.

2 https://en.wikipedia.org/wiki/Unstructured_data 3 http://docs.oasis-open.org/uima/v1.0/uima-v1.0.html

27

Page 28: Generación de Escenarios de Calidad a partir de ...

La Arquitectura UIM (UIMA) es una arquitectura y un  framework  de software para crear,

descubrir,   componer   y   desplegar   un   amplio   rango   de   capacidades   de   análisis   multimodal   e

integrarlos   con   tecnologías   de   búsqueda.   Uno   de   los   objetivos   de   diseño   de   UIMA   es   ser

independiente de  la modalidad. Por esta razón UIMA no restringe el  tipo de datos que puede

funcionar   como   un   objeto   de   análisis   (texto,   audio,   video,   etc),   y   admite   diferentes

implementaciones de la vinculación entre una anotación y la región del artefacto de información;

más aún evita restringirse por la forma original de contenido.

Esta y varias herramientas de NLP definen como “anotación” al tipo de meta­información

que apunta a una región dentro del objeto de análisis (Sofa), generalmente indicada por valores

de desplazamiento (offset). UIMA denomina  Analytics  a la etapa del proceso que agrega meta­

información 4, y lo define como el puente entre el dominio de información estructurada y el dominio

de la información no estructurada como ilustra la Figura 2.7; además provee modelos uniformes

de intercambio de datos, interfaces para componentes y control de proceso, los cuales simplifican

la interoperabilidad de los componentes y facilitan la especificación de pipelines.

Además UIMA tiene integrada una tecnología que sirve para definir reglas de consulta y

creación de anotaciones denominado UIMA Ruta 5. 

Figura 2.7: UIMA Analytics

4 https://uima.apache.org/d/uimaj-current/index.html 5 https://uima.apache.org/ruta.html

28

Page 29: Generación de Escenarios de Calidad a partir de ...

3 Trabajos relacionados Se han dedicado muchos trabajos para proponer enfoques que contribuyan a mejorar y

optimizar la tarea especificación de atributos de calidad. Algunos de estos enfoques se basan en

la inspección manual pero, aunque son concretos y metódicos, pueden llegar a demandar mucho

tiempo y esfuerzo. Es por ello que los últimos aportes se tratan de técnicas y herramientas que

asisten   en   el   análisis   de   documentos   de   requerimientos   de   manera   automatizado   o   semi­

automática.   Se   tratan   de   diversas   técnicas   que   emplean   mecanismos   computacionales   que

permiten   al   sistema   de   computadora   extraer   y/o   deducir   información   de   los   textos   de

especificaciones de requerimientos. Algunos requieren menos intervención humana que otros, y

cada uno arroja resultados con distintas precisiones. En este capítulo se hace una reseña de los

trabajos que emplean técnicas similares a la que se propone en este trabajo. De esta manera se

podrán comparar entre sí, a la vez que se adquiere un mayor entendimiento de la materia.

3.1. Modelo para la Elicitación y Especificación manual de QAs

El enfoque de [Dorr 2003] propone un modelo con el fin de lograr un conjunto de QARs

(Quality   Attribute   Requirement)   relacionados   con   el   atributo   de   calidad   de   “Eficiencia”,   en

concordancia   con   los   casos  de   uso   y,   si   está   disponible,   la   arquitectura  del   sistema.  Dicho

conjunto debe ser mínimo, completo, medible y trazable:

• “Mínimo” se refiere a que solo los QARs relevantes son detectados para no

restringir a la arquitectura prematuramente.

• “Completo” indica que todos los QARs de los stakeholders son identificados.

• “Medibles” significa que se puede verificar mediante una o mas métricas, que

el sistema final satisface el QAR detectado.

• “Trazable” se refiere a que el enfoque propuesto también provee la lógica

efectuada por la cual se identifica cada QAR. Por ejemplo en qué documento o parte

del mismo se identificó la información que fue utilizada para identificar cada QAR.

Los principales conceptos del enfoque están representados en un metamodelo que luego

debe ser instanciado en un modelo de calidad. El metamodelo define a un atributo de calidad (QA)

como una característica no funcional de un sistema, tarea del usuario, tarea del sistema u

organización. La distinción entre diferentes tipos de QAs es importante para el proceso de

elicitación. Cada atributo es elicitado de diferente forma. Además, tanto un atributo como un

sistema pueden ser refinados en más atributos o sistemas y, éste último, se encuentra restringido

por requerimientos arquitectónicos. Existen requerimientos no funcionales (non functional

requirement, NFR) que describen un cierto valor para un QA que debe alcanzarse en un proyecto

específico, limitándolo mediante la determinación de un valor para una métrica asociada. El

modelo distingue entre refinamientos orientados a problemas (refinamientos de NFRs en base a

restricciones de QAs) y refinamientos orientados a soluciones, materializado a través de

29

Page 30: Generación de Escenarios de Calidad a partir de ...

significados (means), utilizados para satisfacer cierto conjunto de NFRs. En muchas situaciones

un significado describe una solución arquitectónica que satisface cierto atributo de calidad (por

ejemplo, “balanceo de carga” es utilizada para satisfacer un conjunto de atributos de calidad

relacionados con el atributo “distribución de la carga del trabajo”).

Por  otro   lado,   se   crea  un  modelo  de   calidad   (Quality  Model)   instanciando  partes  del

metamodelo.   El   modelo   describe   refinamientos   de   QAs   de   alto   nivel   en   QAs,   métricas   y

significados  más  específicos.  La  idea del  modelo  es   refinar  QAs en QAs más  medibles;  por

ejemplo, QAs en los cuales una métrica puede ser asociada. A su vez describe relaciones entre

distintos QAs, capturando experiencias de proyectos previos. 

El  enfoque  propuesto  en  este   trabajo  presenta  un  modelo  de   calidad  que  puede   ser

utilizado   sin   modificaciones   pero   además   permite   hacer   adaptaciones   al   contexto   de   cada

empresa o proyecto  y  extenderlo para para especificar   requerimientos  relacionados con otros

atributos de calidad.

3.2. EAMiner

La herramienta EAMiner [Sampaio 2007] se trata de una técnica que ha sido desarrollada

para detectar y separar de manera semi­automática concerns y sus relaciones transversales. Un

Crosscutting Concern (CCC) es cualquier asunto de interés al nivel de requerimientos de software

que  puede  descomponerse en una unidad  del  modelo  dominante  de  descomposición  [Sutton

2002].  El  asunto  de  interés  puede ser  por  ejemplo  producto,  proceso,   tiempo y  costo,  etc;  y

muchos casos están relacionados con Atributos de Calidad. Los CCC son difíciles de separar y

aislar, ya que a menudo atraviesan transversalmente a varios artefactos u otros  concerns. Hay

dos síntomas que indican la presencia de CCC en los artefactos de requerimientos:  Scattering

(diseminación) y Tangling (mezcla). Scattering es cuando una responsabilidad ­ como por ejemplo

“seguridad” ­ se encuentra dispersa en dos o más abstracciones que tienen otra responsabilidad

principal. Tangling es cuando una abstracción posee entre sus responsabilidades dos o más que

no son de su alcance exclusivo Figura 3.1. 

Figura 3.1: Tangling vs. Scattering

30

Page 31: Generación de Escenarios de Calidad a partir de ...

Se han definido abstracciones para modularizar CCC denominadas aspectos. Un aspecto

temprano es considerado un aspecto a nivel de requerimientos, entendido como una entidad que

atraviesa transversalmente un  concern. El aspecto temprano modulariza responsabilidades que

podrían estar diseminadas entre varios concerns o mezcladas dentro de un mismo concern. 

La Ingeniería de Requerimientos orientada a aspectos (AORE, por sus siglas en inglés)

ayuda a lograr eficazmente la separación de CCC al nivel de requerimientos y obteniendo una

mejora   en   la   modularización   de   artefactos   de   requerimientos.   AORE   facilita   la   creación

composición y evolución de los artefactos de requerimientos. [Rashid 2003] [Whittle 2004]

En AORE las actividades de identificación y análisis son complejas y consumen tiempo. La

identificación es una  tarea compleja debido a  la gran cantidad de  información y  la naturaleza

enlazada   de   las   fuentes   de   requerimientos,   tales   como   transcripciones   de   entrevistas,

documentación legacy, manuales, etc.

EAMiner utiliza un procesador de lenguaje natural que hace uso de una matriz denominada

WMATRIX  [Sawyer 2002]  para el  pre­procesamiento de  los documentos de entrada y obtener

información relevante. En WMATRIX se registra la información de etiquetado semántico y parte

del discurso (POS), análisis de frecuencia y concordancias para identificar conceptos del dominio

que pueden ser muy útiles. El análisis semántico agrupa palabras y expresiones relacionadas en

campos semánticos y, a su vez, provee datos estadísticos para distinguir la relevancia de cada

campo. De esta manera WMATRIX es utilizada por  EAMiner  para realizar  inferencias sobre la

identificación   de   abstracciones   y   CCC.   Finalmente   WMATRIX   genera   un   archivo   XML   que

consiste en el archivo de entrada enriquecido con anotaciones del etiquetado.

EAMiner  soporta   cuatro   actividades   de   ingeniería   de   requerimientos:   elicitación,

identificación,   presentación   de   resultados   y   descarte   de   abstracciones   irrelevantes.   En   la

presentación de resultados se obtiene un modelo interno que puede visualizarse de diferentes

maneras,   representados   en   el   modelo   AORE   seleccionado   previamente.   Este   modelo   en   la

actividad final puede ser refinado y traducido a un documento de especificación de requerimientos.

Las ventajas de EAMiner son:

a) Ayuda a automatizar las actividades que son propensas a errores y consumen tiempo tales

como identificación de concerns, aspectos tempranos y sus relaciones.

b) Puede proveer fácilmente soporte para el refinado del modelo y para  la generación de

especificaciones.

c) Permite   que   el   ingeniero   de   requerimientos   adquiera   una   comprensión   del   sistema

mostrando las abstracciones clave y la información relevante.

d) Ayuda a lograr la separación de concerns al nivel de requerimientos, modularizando CCC

como aspectos tempranos.

3.3. QAMiner

La técnica QAMiner [Bertoni 2010] tiene como objetivo identificar un conjunto de atributos

de calidad candidatos, presentes en los casos de uso de un sistema, basándose en aspectos

31

Page 32: Generación de Escenarios de Calidad a partir de ...

tempranos detectados previamente. Esta herramienta permite al analista seleccionar el aspecto

temprano   que   desea   analizar,   junto   a   los   casos   de   uso   que   los   relaciona   para   contar   con

información acerca de los atributos de calidad identificados para el conjunto de datos de entrada.

Es decir, para cada aspecto temprano del sistema se muestra un ranking de porcentajes con un

atributo de calidad cada uno, indicando el grado de relación entre ese aspecto temprano y los

distintos   atributos   de   calidad   presentes   en   la   ontología.   De   esta   manera,   el   analista   puede

seleccionar los atributos de calidad destacados, para tenerlos en cuenta en las etapas siguientes

del ciclo de desarrollo.

Las entradas del proceso son  los casos de uso, definidos por el  analista, y el  aspecto

temprano   que   los   relaciona,   previamente   identificado   por   medio   de   alguna   herramienta   de

detección de aspectos tempranos, como por ejemplo la herramienta Aspect Extractor Tool [Haak

2005].  Para  analizar  esto,  se utiliza una ontología que  representa el  dominio  de atributos de

calidad y escenarios de calidad, y sirve para consultar el grado de relación de las palabras que

conforman la entrada con los diferentes atributos de calidad.

Figura 3.2: Overview of QAMiner approach

El proceso, básicamente, consta de dos etapas:

1) La primera etapa es Generación de Tokens, en donde se analiza léxica y semánticamente

la información de entrada secuencialmente para representarla en un formato uniforme y

clasificarla. Para esto se utiliza el patrón arquitectónico de  Pipes & Filters  y se aplican

técnicas de tokenización, unificación de palabras llevándolas a  lower case, filtro de  stop

words,  stemming, conteo de ocurrencias y asignación de pesos basado en la sección del

caso de uso en la que aparezca.

2) La segunda etapa es Análisis de  Tokens  en donde se realiza el análisis de  los  tokens

generados por   la  etapa anterior  para calcular,  con ayuda de  la  ontología, el  grado de

relación de cada uno de ellos con  los diferentes atributos de calidad y, así,  generar  la

salida.

32

Page 33: Generación de Escenarios de Calidad a partir de ...

Para representar la salida, se utilizan Quality Attribute Theme (QAT), que están formados

por un subconjunto de los casos de uso y un aspecto temprano, que en forma conjunta hacen

referencia a uno o varios atributos de calidad candidatos. Como resultado, se proporciona una

lista  priorizada  de  QATs  que   resume  los  concerns  y  atributos  de  calidad  candidatos  de  una

especificación de requerimientos.

3.4. REAssistant

REAssistant  [Rago   2014]  es   una   herramienta   flexible,   que   fue   desarrollada   como   un

conjunto de plugins de Eclipse y cuenta con el soporte arquitectónico del  framework UIMA para

procesar  variadas   fuentes  de   texto  con  el   fin  de  descubrir  crosscutting  concerns  latentes  en

especificaciones de casos de uso. La principal contribución de esta herramienta es su soporte

para el desarrollo e integración de técnicas para el procesamiento y análisis de requerimientos

textuales.

Los aspectos clave de la técnica propuesta para  REAssistant  son la aplicación de una

arquitectura de análisis de texto compuesta por varios módulos de Natural Language Processing

para procesar los requisitos, el análisis semántico y la combinación de diferentes estrategias para

descubrir concerns automáticamente.

Figura 3.3: Overview of REAssistant approach

REAssistant presenta tres objetivos específicos:

1) Separar el análisis del texto de las técnicas de detección de CCC para crear una solución

más simple y más flexible, donde los usuarios puedan utilizar más de una técnica para

detectar concerns, con estrategias de búsqueda pas adaptadas a sus necesidades.

2) El segundo objetivo es mejorar la forma en que las herramientas actuales inspeccionan los

requerimientos textuales,  incluyendo mejoras en el análisis semántico de las oraciones,

para evitar algunas fallas de los enfoques existentes y descubrir información más relevante

sobre las CCC.

33

Page 34: Generación de Escenarios de Calidad a partir de ...

3) El tercer objetivo es emplear una arquitectura de procesamiento de texto extensible, que

pueda manejar una variedad de análisis de texto. Esto no sólo contribuye a la flexibilidad

de la herramienta, soportando nuevos módulos de NLP o el intercambio de los mismos,

sino que también permite a los analistas personalizar las técnicas de descubrimiento de

concerns  (por   ejemplo:   ajustar   ciertos   módulos   de   NLP   particulares)   para   diferentes

dominios de software.

REAssistant utiliza tecnologías como Eclipse PDE, EMF, UIMA, entre otras. En particular,

UIMA es usado como base para el procesamiento de lenguaje natural, para realizar un análisis

robusto y extensible.

REAssistant  incluye   varios   módulos   para   identificar   conceptos   relevantes   de   los

requerimientos,   entre   ellos   componentes   de   NLP   y   módulos   que   se   centran   en   el   análisis

semántico del texto para la identificación de concerns ( Figura 3.3).

Específicamente dos técnicas que aprovechan las anotaciones semánticas y automatizan

la búsqueda de concerns:

1) La primera técnica utiliza un inventario de sentido y medidas de similitud semántica en

combinación con técnicas de agrupamiento para detectar comportamientos recurrente en

los documentos. La principal ventaja de esta técnica es que la intervención del analista es

mínima, proporcionando una rápida visión inicial de los concerns de un sistema.

2) La segunda técnica utiliza un lenguaje de consulta que puede interpretar las salidas de los

análisis  NLP para  descubrir  concerns  específicas,  por  separado.  Las  ventajas  de esta

última   técnica  es  que   los  analistas  pueden  participar  en   la  definición  de   las  mismas,

haciendo posible ajustar la herramienta a sus propósitos particulares. Además, se pueden

codificar   interpretaciones   semánticas   de   las   oraciones   en   las   consultas,   permitiendo

detectar incidencias más sutiles de los concerns.

3.5. Scenarios Tool

En la práctica, la información sobre atributos de calidad de la mayor a de los proyectos deı ı

software   suele   documentarse   de   forma   parcial   y   entremezclada   con   las   especificaciones

funcionales del sistema [Shaw1996]. ScenariosTool es un enfoque de derivación de escenarios de

calidad,  materializado en una herramienta  desarrollada en Java,  con una  interfaz  gráfica  que

permite al arquitecto ingresar las partes del escenario parcial que conoce y seleccionar la parte

faltante a inferir por la misma. Una vez generados los resultados, se muestran en forma tabular en

la  sección  de   resultados,   de  donde  el  arquitecto  puede  utilizar   la   información  brindada  para

completar la documentación sobre un sistema en particular.

El objetivo principal de este enfoque es utilizar técnicas de Inteligencia Artificial para poder

asistir de forma semi­automática a un arquitecto en la especificación de escenarios de atributos de

calidad. 

34

Page 35: Generación de Escenarios de Calidad a partir de ...

El enfoque se encuentra dividido en dos etapas: de aprendizaje y de razonamiento Figura

3.4.  Tal enfoque requiere un conjunto de información como entrada para conformar la fuente de

conocimiento,   que   consiste   principalmente   de   libros   de   arquitecturas   de   software,  papers

científicos, guías de diseño, entre otros. Además, se requiere una colección de escenarios de

atributos de calidad completos como  assets,  especificados completamente y son brindados al

enfoque por un experto. Los escenarios son utilizados como referencia para obtener información

de escenarios especificados parcialmente.

Figura 3.4: Esquema de funcionamiento

Ante   la   consulta   de   un   arquitecto   respecto   a   un   escenario   de   atributos   de   calidad

incompleto, el enfoque produce sugerencias a partir de un razonamiento mediante analog a entreı ı

los  escenarios  completos  de   referencia  y   la   información aprendida  por   la   computadora.  Este

razonamiento mediante analog a establece relaciones entre partes especificadas de escenarios deı ı

atributos   de   calidad   de   tal   forma   que   sea   posible   inferir   partes   faltantes.   Las   sugerencias

brindadas   pueden   ser   utilizadas   por   el   arquitecto   para   completar   de   forma   apropiada   los

escenarios del sistema que está desarrollando.

1) La primera etapa, denominada ‘Aprendizaje’, tiene como objetivo aprender relaciones entre

las diferentes partes de  los escenarios de atributos de calidad a partir  de  la  fuente de

conocimiento   brindada   como   datos   de   entrada.   Para   lograr   esto,   se   utilizan   dos

componentes: 

I) El primero realiza un pre­procesamiento de texto de la fuente de conocimiento donde

se aplican técnicas de eliminación y modificación de caracteres para dar formato a la

entrada, unificarla y eliminar datos no relevantes. 

II) El segundo componente toma como entrada los datos pre­procesados y genera como

salida   un   modelo   compuesto   por   todas   las   palabras   que   componen   la   fuente   de

35

Page 36: Generación de Escenarios de Calidad a partir de ...

conocimiento, junto a una representación vectorial de cada palabra, que la describe en

términos de su contexto y cantidad de apariciones en la fuente de información. Para la

implementación de este  componente,  se  utiliza  un  framework  externo,  denominado

word2vec [Mikolov 2013]. Esta representación es útil para poder realizar operaciones

algebraicas entre las palabras permitiendo, por ejemplo, medir la distancia entre ellas,

ya que son representadas mediante vectores numéricos.

2) La segunda etapa, denominada ‘Razonamiento’, es la encargada de utilizar el modelo de

tal  forma que se puedan extraer datos relativos a  información faltante o  incompleta de

escenarios   de   atributos   de   calidad.   En   esta   etapa   se   utilizan   el   modelo   generado

previamente y el conjunto de escenarios de atributos de calidad de referencia como assets,

brindados al  enfoque una sola vez por  un experto.  Como entrada para esta etapa,  el

arquitecto ingresa un escenario incompleto y el componente de recomendación completa

la información faltante del escenario ingresado conformando la salida.

3.6. Resumen

Los trabajos presentados proponen diversas herramientas y estrategias que de una u otra

manera ayudan en la especificación de atributos de calidad. La gran mayoría recurren a técnicas

del  área de  la   Inteligencia  Artificial  o  sub­áreas de ésta  (como el  procesamiento de  lenguaje

natural). Si bien los resultados que obtienen no son totalmente precisos y certeros, no dejan de

ser un aporte y contribución en la resolución de problemática, sobre todo porque logran reducir los

tiempos de procesamiento y principalmente de la inspección manual de los documentos.

36

Page 37: Generación de Escenarios de Calidad a partir de ...

4 QAGen: Un Enfoque paraGeneración de Escenarios de Calidad

El   problema   a   resolver   es   el   siguiente:   dado   un  documento   de   requerimientos   como

entrada (input), se deben obtener elementos para construir escenarios de calidad en base a las

descripciones de tales requerimientos (output). La combinación de técnicas NLP y NLG posee

potencial para lograr herramientas de software semi­automáticas que puedan asistir al analista en

la   exploración   de  escenarios  de   calidad.   Se  plantea  una   técnica,   y   una  herramienta  que   la

implementa denominada QAGen (Quality Attribute Scenario Generation), la cual logra el objetivo

procesando los documentos de requerimientos ­ texto no estructurado ­ con un análisis sintáctico y

morfológico, para obtener información estructurada que provea los datos necesarios y así deducir

atributos de calidad y los elementos que componen los escenarios de calidad. Actualmente se

dispone de herramientas que identifican atributos de calidad y  crosscutting concerns, y  QAGen

realiza un aporte al detectar no sólo información de atributos de calidad sino también facilitar la

generación de escenarios de calidad candidatos a partir de dichos atributos de calidad. 

La técnica propuesta se divide en dos fases que están compuestas etapas,  las cuales

conforman un pipeline  incremental de procesamiento, como se muestra en la   Figura 4.1. En la

primera   fase,   llamada   “Estructuración”,   se   enriquece   el   texto   con   anotaciones   básicas   para

permitir el análisis y cómputo de información; y en la segunda fase, denominada “Análisis de QA”,

se utiliza la meta­información recolectada en la fase anterior para generar potenciales secciones

de  escenarios  de  calidad  que,  una  vez  validadas  por  el   analista,   constituyen   los  escenarios

concretos.

En la primera fase,  la etapa que realiza el enriquecimiento propiamente dicho,  llamada

“Pre­análisis”, se añade el lema (inflexión más básica) y el POS (part of speech) al token de cada

palabra; pero esta etapa requiere una tokenización rudimentaria, es decir que el texto haya sido

marcado con  los  token  más básicos  (sin  meta­información),   lo  cual   lo   realiza   la  etapa previa

denominada “Segmentación”. En la segunda fase, la primera etapa es “QAMining”, que identifica

las porciones de texto (oraciones) de donde se puede extraer información útil para los escenarios

de calidad; y la siguiente etapa, “Scenario Linking”, utiliza estas porciones de texto para generar

las secciones de escenarios de calidad.

37

Page 38: Generación de Escenarios de Calidad a partir de ...

Figura 4.1: Fases y etapas del pipeline de QAGen

4.1. Uso de QAGen para generar escenarios de calidad

La herramienta  QAGen  está  diseñada para asistir  a   los  analistas en  la  generación de

escenarios   de   calidad,   tomando   como   entrada   los   documentos   de   requerimientos   más   un

diccionario   de   taxonomías   y   generando   uno   o   más   escenarios   como   salida,   que   se   puede

visualizar en la misma herramienta.

El analista debe facilitar los documentos en texto plano, con un pre­procesamiento mínimo

para eliminar caracteres extraños, como por ejemplo viñetas o íconos, y estructuras como son las

tablas, para simplificar la segmentación de los mismos. Por otro lado, el mismo debe proveer los

diccionarios, los cuales contienen listas de palabras para indicar por ejemplo conceptos referidos a

contraints, events, time, etc. Con estos datos de entrada el pipe principal de QAGen genera los

archivos resultantes con los scenarios sections, como se puede ver en la Figura 4.2.

Cada scenario section, generado automáticamente, posee diferentes oraciones candidatas

para cada parte del escenario. Estas se pueden editar, ver el contexto de donde fueron extraídas

en el documento original y seleccionarlas para generar manualmente los los escenarios de calidad

propiamente dichos, como salida final del proceso.

38

Page 39: Generación de Escenarios de Calidad a partir de ...

Figura 4.2: Proceso completo de QAGen

4.2. Herramientas de desarrollo de software escogidasExisten varias herramientas de desarrollo de software que facilitan la implementación de

aplicaciones de procesamiento del texto no estructurado. Una de las más populares, y que ha sido

aceptada por una gran comunidad, es Apache UIMA (Arquitectura para Gestión de Información

No­ Estructurada), que permite descomponer las aplicaciones en componentes que implementan

interfaces definidas por el framework y provee metadatos auto­descriptivos por medio de archivos

XML.  El  framework  administra   estos   componentes   y   el   flujo   de  datos   entre   ellos,   y   permite

configurar y ejecutar un pipeline de componentes llamados Annotator. Estos componentes hacen

el verdadero trabajo de analizar la información no estructurada. Los usuarios pueden escribir sus

propios anotadores, o configurar y utilizar anotadores preexistentes. 

Se define como anotación al tipo de meta­información que apunta a una región dentro del

objeto de análisis (Sofa),  generalmente  indicada por valores de desplazamiento (offset).  UIMA

provee modelos uniformes de  intercambio de datos,  interfaces para componentes y control de

39

Page 40: Generación de Escenarios de Calidad a partir de ...

proceso, los cuales simplifican la interoperabilidad de los componentes y facilitan la especificación

de pipelines.

UIMA tiene integrada una tecnología que sirve para definir reglas de consulta y creación de

anotaciones denominado UIMA Ruta. Se trata de un componente que consiste de dos partes: un

Motor de Análisis (Analysis Engine), que interpreta y ejecuta un lenguaje imperativo de scripting

basado en reglas; y un conjunto de herramientas para el IDE Eclipse, las cuales proveen soporte

para el  desarrollo de  las reglas.  Cada regla define un patrón de anotaciones con condiciones

adicionales. Si el patrón se aplica, entonces las acciones de la regla son realizadas sobre las

anotaciones seleccionadas.  Las  condiciones especifican   restricciones adicionales  que el   texto

seleccionado o  las anotaciones deben cumplir.  Las acciones definen  las consecuencias de  la

regla, y suelen utilizarse para crear nuevas anotaciones o modificar las existentes. Esta es una

herramienta que permite aplicar sofisticados procesamientos de manera incremental, por lo que es

muy adecuada para implementar la fase más avanzada de QAGen, Análisis QA.

Otra herramienta muy difundida es ClearTk  [Bethard 2014], un framework para desarrollo

de componentes para procesamiento de lenguaje natural a través de UIMA, creado por un centro

de investigación de la universidad de Colorado.  ClearTk  provee módulos de UIMA para utilizar

frameworks  y bibliotecas de terceros, externos a UIMA, como por ejemplo:  Snowball stemmer,

OpenNLP, Berkeley syntactic parser, ClearNLP, Stanford CoreNLP, entre otras bien conocidas y

aceptadas en el ámbito de NLP. Cada componente que se desarrolla con ClearTk es extensible y

con   alta   reusabilidad,   lo   que   permite   implementar   nuevos   componentes   más   específicos   y

optimizados para resolver y procesar información en contextos muy similares a los objetivos del

presente   trabajo.  ClearTk  permite que  la   implementación de  la   fase  inicial,  de  estructuración,

pueda llevarse a cabo de una manera robusta, simple y eficaz; permitiendo probar e intercambiar

la disposición de los componentes que conforman el pipeline.

Para el desarrollo de software que involucra generación de texto, se dispone de algunos

frameworks de NLG (natural language generation) como SimpleNLG [Gatt 2009] , que es uno de

los que más se adecua a los fines del proyecto. Este framework puede verse como un “realization

engine”   cuyo   propósito   es   proveer   simples   y   robustas   interfaces   para   generar   estructuras

sintácticas, y alinearlas mediante un mecanismo sencillo.

4.3. Proceso y etapas de QAGenLas etapas en las que se divide el proceso de QAGen están compuestas por actividades,

las cuales se explicarán detalladamente a continuación. 

Los documentos de especificaciones de requerimientos son ingresados al proceso, por lo

tanto   son  el  input  de   la  primer  etapa,   y  estos  documentos  escritos  en   lenguaje  natural   son

procesados   para   llevarlos   a   una   representación   interna   adecuada   para   facilitar   el   análisis   y

cómputo automatizado de la información, generando estructuras de datos y aplicando relaciones

lógicas a dichas estructuras de manera  incremental. Para ello se utilizan técnicas basadas en

NLP. El texto es fraccionado y enriquecido con meta­información, representada como estructuras

de datos que poseen varios atributos,  los cuales son utilizados para asignar a  priori  datos de

40

Page 41: Generación de Escenarios de Calidad a partir de ...

interés y analizarlos a posteriori; favoreciendo la deducción y relación de la información. La unidad

básica de texto que puede ser enriquecida se denomina token.

A continuación se enumeran cada una de las etapas que componen todo el procesamiento

(Figura 4.2) junto con y las actividades que contienen:

1) Etapa de segmentación

◦ Sentence Split

◦ Tokenization

2) Etapa de pre­análisis

◦ POS Tagging

◦ Lemmatization

3) Etapa de QA Mining

◦ QAW Tagging

◦ QAS Tagging

4) Etapa de Scenario Linking

◦ Dependency Parsing

◦ Microplanner

◦ Scenario Sections

Como prueba  de  concepto,   se  escogió     “performance”   como  atributo  de  calidad  para

ejemplificar,   realizar  pruebas y explicar   todo el  proceso,  ya que es  uno de  los atributos más

comunes,  pero  complejo  en  cuanto  a  diversidad.  A  continuación se  presenta  un conjunto  de

oraciones que contienen  información de atributos de calidad  performance  de donde se puede

extraer la información para los escenarios de calidad:

Las   oraciones   de   arriba   conformarán   un   ejemplo   guía   que   también   servirá   para   la

explicación del proceso. La primer oración fue extraída del documento de requerimientos del caso

41

a) The system shall provide access to the legacy course catalog database with no more than a 10 second latency.

b) The alarm is displayed on the user interfaces of all users that must receive the alarm within 3 seconds.

c) When the FSS updates a value either by itself or after executing a command that it received from MSLite it publishes a COV event.

d) If the FSS fails to execute a command that it received, and notifies MSLite, then the UI must be updated to reflect the failed command.

e) Only relevant GUI screens for these ‘m’ users will reflect the update within having received the notification from the FSS.

Page 42: Generación de Escenarios de Calidad a partir de ...

de estudio Course Registration System  y el resto de las oraciones del caso de estudio  MSLite.

[Brown 2011] [Mullick 2006]

Figura 4.3: Fase Estructuración con sus etapas

4.3.1 Etapa de segmentaciónLo primero a realizar en esta etapa es fraccionar el texto no estructurado en oraciones, lo

cual se lleva a cabo en la primera actividad, denominada  Sentence split. El procesamiento de

lenguaje natural considera a la oración como la unidad de análisis de análisis, claramente es de

importancia   crucial   asegurarse   que,   dado   un   texto,   se   pueda   fraccionar   en   fragmentos   de

oraciones [Dale 2000]. 

La segunda actividad de esta etapa –  tokenization ­  consiste en fraccionar el   texto en

tokens. Es así que se logra un preprocesamiento del texto que provee la infraestructura necesaria

para análisis y procesamientos ulteriores, y más sofisticados (Figura 4.3).

La actividad Sentence Split es implementada utilizando SentenceDetector, un segmentador

de  oraciones  de  OpenNLP.  El  anotador  TokenAnnotator  de  ClearTK  implementa   la  actividad

Tokenization, tomando como entrada texto ya enriquecido con anotaciones Sentence.

4.3.2 Etapa de pre-análisis La segunda etapa,  considerada como de pre­análisis,   realiza un procesamiento  léxico­

gramatical. En una primera actividad, etiqueta cada unidad del texto como un token que contiene

información  lingüística  denominada Parte del  Discurso (POS  tagging).  Se  trata de categorizar

cada palabra según sus propiedades gramaticales, por ejemplo: verbo, adverbio, sustantivo, etc.

Las   palabras   que   tienen   asignado   el   mismo   POS   generalmente   demuestran   el   mismo

comportamiento en términos de sintaxis y morfología. 

La segunda actividad de esta etapa consiste en llevar cada palabra a una representación

genérica   de   manera   tal   que   se   puedan   unificar   palabras   que   difieren   en   su   secuencia   de

42

Page 43: Generación de Escenarios de Calidad a partir de ...

caracteres pero se refieren a un mismo concepto,  simplificando en gran manera el  análisis  y

procesamiento en actividades subsiguientes. Una técnica para lograrlo es el stemming, que consta

en reducir una palabra a su raíz (parte que no cambia morfológicamente),  pero opera en una

palabra   individual   sin   conocimiento   de   su   contexto,   por   lo   tanto   no   puede   discriminar   entre

palabras  que  tienen diferentes  significados según su  “parte del  discurso”.  Por  su simpleza  la

ejecución del stemming es veloz, sin embargo su falta de precisión puede resultar en ineficacia del

proceso6  .  Es así  que se decidió  utilizar una técnica más sofisticada y eficaz:  la  lematización,

proceso   lingüístico   que   consiste   en,   dada   una  inflexión  (es   decir,   en   plural,   en   femenino,

conjugada, etc.), hallar el lema correspondiente. Algunos ejemplos son: "interrupts" ­> "interrupt",

"delivered"   ­>   "deliver",   "simplest"   ­>   "simple",   "simpler"   ­>   "simple",   "matching"   ­>   "match",

"celebrities" ­> "celebrity".

Formalmente,  se  define  el  token  TOKEN<begin,  end,  pos,   lemma>;  una   instancia  del

mismo   sería   por   ejemplo:  ALARM<65305,   65310,   NN,  alarm>.   Cada   token   posee   un

desplazamiento que indica dónde encontrar el inicio y el fin de la porción de texto que representa.

En la Tabla Tabla 4.1 se esquematiza el resultado de aplicar a la oración de ejemplo b) el proceso

POS tagging.

  The  alarm is displayed

BEGIN 65301 65305 65311 65314END 65304 65310 65313 65323POS DT NN VBZ VBNLEMMA the alarm be display

Tabla 4.1: Ejemplo de POS tagging

La fase POS tagging se concreta con el anotador PosTaggerAnnotator, un etiquetador de

parte­del­discurso  perteneciente  a  OpenNLP.   La   lematización   se   realiza   con  MpAnalyzer,   un

analizador morfológico de  ClearTk  que toma palabras y sus anotaciones POS como entrada y

genera lemas de tales palabras. 

Los  documentos  se  cargan  con  el   lector  de  colección  UriCollectionReader  y   luego  es

preparado como primer entrada del pipeline con UriToDocumentTextAnnotator. 

Finalmente, de la salida del pipeline se obtiene un CAS (Estructura de análisis común) de

texto enriquecido con toda la meta­información propicia para aplicar procesamientos y análisis

mas específicos. Este CAS es serializado y guardado en un archivo XMI.

6 https://en.wikipedia.org/wiki/Stemming

43

Page 44: Generación de Escenarios de Calidad a partir de ...

Figura 4.4: Fase Análisis QA con sus etapas

4.3.3 Etapa de QA MiningEn esta tercera etapa ya se dispone de la meta­información resultante del procesamiento

genérico y del texto no estructurado, y es aquí  donde se realiza el análisis específico para la

identificación de atributos de calidad. Como la gramática centra la atención en la oración como

unidad  mínima de  sentido,  el  objetivo  es   identificar  aquellas  oraciones  que  puedan  contener

información para los escenarios de calidad a generar.

La  primera  actividad,  QAW  tagging,   tiene  el  propósito  de   identificar  tokens  que  estén

estrechamente relacionados con algún atributo de calidad en particular. Cada uno de estos tokens

es identificado al encontrar alguna de las palabras clave que caracteriza el concepto que pretende

representar dicho  token.  Esas palabras clave son agrupadas en diccionarios de  taxonomías y

ontologías propias del atributo de calidad en cuestión. 

Por ejemplo, para el atributo de calidad “Performance”, se definieron los siguientes tokens:

tokenTime, tokenLTD, tokenStart, tokenEnd, tokenConstraint y tokenEvent.

La Tabla Tabla 4.2 contiene las palabras clave que identifica tokenConstraint.

Constraintaccuracy latency precedence respond criticality deadline response demand mustresponsiveness exceed simultaneous overload

Tabla 4.2: Palabras clave de la taxonomía Constraint

44

Page 45: Generación de Escenarios de Calidad a partir de ...

Tales   diccionarios   se   construyeron   en   base   a   conceptos,   definiciones   y   relaciones

extraídas de  IEEE Standard for a Software Quality Metrics Methodology  [IEEE 1992], y a cada

palabra que lo integra se le aplica el procesamiento de lematización (explicado en el apartado

anterior) para adecuarlo a esta actividad. 

Es indispensable aplicar técnicas de desambiguación, y la lematización aporta mucho al

respecto,   pero   pueden   haber   casos   particulares   que   deben   ser   contemplados   de   manera

específica. Por ejemplo la palabra "segundo" puede referirse a posición o a unidad de tiempo; es

una cuestión sintáctica que se puede resolver considerando el contexto de la palabra, en este

caso si la palabra la precede un número puede deducirse que se está hablando de unidad de

tiempo.

El resto de palabras clave para identificar  Tokens  de  performance  están contenidas en

tokenEvent (Tabla Tabla 4.3), tokenLTD (Tabla Tabla 4.4) y tokenTime (Tabla Tabla 4.5).

LTD

latency after bandwidth throughput between frequency demand start stream interval end arrival before since rate

Tabla 4.3: Palabras clave de la taxonomía LTD

EVENT

event arrive sampling transaction process deliver

interrupt calculation accessupdate complete display

Tabla 4.4: Palabras clave de la taxonomía Event

TIME time less minute

within time hour

Tabla 4.5: Palabras clave de la taxonomía Time

En   la   siguiente  actividad,  QAS  tagging,   el   objetivo  es   identificar   oraciones  que  estén

estrechamente   relacionadas   con   algún   atributo   de   calidad   en   particular.   Las   oraciones   se

identifican al cumplirse ciertas reglas y condiciones semántico­lógicas cuya definición es propia a

cada   atributo   de   calidad.   Dichas   reglas   son   muy   diversas   y   varían   mucho   en   efectividad   y

complejidad. 

Continuando  con  el  ejemplo  de  performance,   una  oración  se  marca  con   la  anotación

performanceSentence si se cumple alguna de las siguientes condiciones:

45

Page 46: Generación de Escenarios de Calidad a partir de ...

I. Contiene un tokenEvent y un tokenTime.

II. Contiene un tokenEvent y un tokenLTD.

III. Contiene un tokenEvent, un tokenStart y un tokenEnd.

IV. Contiene un tokenEvent y un tokenConstraint.

V. Contiene un tokenConstraint y un tokenTime.

VI. Contiene un tokenConstraint y un tokenLTD.

La   regla   (I)   identifica   los  casos  de  oraciones  que  describen  un  evento  que  afecta  al

sistema, y en la misma oración hace mención a algún concepto de tiempo, pero el caso (III) en la

misma oración haría mención a comienzo y fin de dicho evento.

La última regla se aplica a la oración que contiene conceptos de latencia, rendimiento o

demanda y, a su vez, se halla algún concepto de restricción estricta.

Es fundamental  idear combinaciones de reglas que sean exhaustivas en los casos que

aplican, pero sin redundancia, ya que elevaría la complejidad innecesariamente. Es muy posible

que alguna combinación no tenga sentido, es decir, que no aporte a la detección de un atributo de

calidad  en  ningún   caso   o   que   directamente   sea  absurda   (por   ejemplo:   contradicción,   casos

excluyentes, etc).

Estas   son   sólo   una   de   las   tantas   combinaciones   lógicas   que   podrían   favorecer   a   la

identificación de un atributo de calidad, siendo un desafío desarrollar aquellas que contemplan

otras combinaciones  aún más efectivas. Por eso es indispensable disponer de una herramienta

que facilite la definición de reglas como UIMA Ruta Workbench.

En la Figura 4.5, se observan con los ejemplos de performance que en a) se cumplen las

reglas (I) y (II), en b) se cumplen las reglas (I) y (IV), en c) se cumple (I), en d) se cumple (IV), y en

e) se cumple (I):

a) The system shall provide access to the legacy course catalog database with nomore than a 10 second latency.

b) The alarm is displayed on the user interfaces of all users that must receivethe alarm within 3 seconds.

c) When the FSS updates a value either by itself or after executing a command thatit received from MSLite it publishes a COV event.

d) If the FSS fails to execute a command that it received, and notifies MSLite,then the UI must be updated to reflect the failed command.

e) Only relevant GUI screens for these ‘m’ users will reflect the update withinhaving received the notification from the FSS.

Referencias de tokenEvent LTD Time

Constraint

Figura 4.5: Resultado de aplicar las reglas a las oraciones de ejemplo de performance

46

Page 47: Generación de Escenarios de Calidad a partir de ...

El objetivo de esta etapa es identificar oraciones candidatas y cada una de las anotaciones

que la componen es requisito necesario, pero no suficiente, para lograr una eficaz detección de

atributos de calidad. Es de suma  importancia evitar  o minimizar  los falsos positivos,  es decir,

aquellas secciones del texto que pueden ser identificados y anotados con alguna regla pero que

en realidad no aplican. Es uno de los mayores desafíos de NLP distinguir similares construcciones

lingüísticas complejas pero que tienen una semántica e interpretación muy diferente.

Suele   ser   de   gran   utilidad   recurrir   a   la   desambiguación,   debido   a   los   numerosos

potenciales casos donde puede hallarse una misma palabra con varios significados que hacen

referencia a conceptos muy distintos. Por ejemplo, la siguiente oración posee la palabra "second",

que puede referirse a posición o tiempo, y puede generar un falso positivo ya que si se interpreta

como tiempo hace referencia a un concepto de Performance.

The employee provides the data to be updated: Name, New password

(with second password field for confirmation), and Current password.

Ningún   procesamiento   tiene   completa   efectividad   ni   total   precisión,   por   eso   en   una

determinada etapa pueden generarse numerosas anotaciones que pueden complicar a ulteriores

etapas del procesamiento. Es prudente descartar aquellas anotaciones inertes antes de avanzar a

la siguiente etapa del pipeline.

4.3.4 QA Mining con UIMA Ruta

En el  script desarrollado con UIMA Ruta, primero se realiza una desambiguación de una

palabra clave para este atributo de calidad, y se trata de distinguir si la ocurrencia de la palabra

"segundo" se refiere a tiempo o a posición. Para el último caso, la lematización lo normaliza con la

etiqueta especial #ord#; y para el caso de interés (tiempo) se crea la etiqueta #time#, la cual es

identificada si la palabra está precedida de un número. Esto se logra con la siguiente sentencia:

NUM Token{REGEXP(".*second[s]?", true)->Token.lemma="#time#"}

Se consideraron listas de palabras clave que hacen referencia a un concepto específico de

Performance. Se definen reglas que analizan si el atributo "lema" de cada  Token  coincide con

alguna de las palabras clave definidas en la lista de taxonomías de un concepto (las cuales deben

ser palabras ya lematizadas y cargadas previamente). En caso afirmativo se genera la anotación

correspondiente  a  ese  concepto.  Por  ejemplo,  para  generar  anotaciones   "tokenConstraint"  se

define la siguiente regla:

Token{INLIST(kwds_constraint,Token.lemma) -> MARK(TokenConstraint)}

47

Page 48: Generación de Escenarios de Calidad a partir de ...

También   se   implementan   las   respectivas   reglas   para   los   demás   conceptos   de

Performance, que son: tokenTime, tokenLTD, tokenStart, tokenEnd, y tokenEvent.

Es muy posible que sea necesario definir conceptos que son referidos por una sola palabra

puntual,   en   cuyo   caso   se  pueden  utilizar   expresiones   regulares,   como  para   las  anotaciones

tokenStart y tokenEnd:

Token{REGEXP("start", true) -> MARK(TokenStart)}Token{REGEXP("end", true) -> MARK(TokenEnd)}

Se   define   una   misma   regla   para   marcar   una   oración   con   la   anotación

performanceSentence si se cumple alguna de las condiciones definidas en el apartado 4.3.3; por

ejemplo la condición a) Contiene un tokenEvent y un tokenTime. Con que se cumpla al menos una

de las 6 condiciones, se generará la anotación. Por lo tanto, todas las condiciones se relacionan

entre sí disyuntivamente con la siguiente regla:

Es adecuado para optimizar los procesamientos siguientes, más específicos y sofisticados;

realizar   una   limpieza   de   post­procesamiento   para   eliminar   los   falsos   positivos,   anotaciones

candidatas y vestigios generados por actividades anteriores. También se debe tener en cuenta la

minimización de los tiempos de procesamiento en grandes volúmenes de texto.

4.3.5 Etapa de Scenario LinkingPara el  inicio de esta etapa ya se ha localizado el  texto de donde se puede extraer la

información para deducir secciones de escenarios de calidad. Consecuentemente el desafío en

este punto es aplicar el análisis adecuado a dicho texto para realizar la extracción propiamente

dicha, y luego utilizar esa información para instanciar escenarios concretos de calidad. Es aquí

donde se presenta una situación apropiada para sacar provecho de la combinación de técnicas

NLP conjuntamente con técnicas NLG.

48

Sentence{OR( AND (CONTAINS(TokenEvent), CONTAINS(TokenTime)), AND (CONTAINS(TokenEvent), CONTAINS(TokenConstraint)), AND (CONTAINS(TokenEvent), CONTAINS(TokenLTD)), AND (CONTAINS(TokenEvent), CONTAINS(TokenStart),

CONTAINS(TokenEnd)), AND (CONTAINS(TokenTime), CONTAINS(TokenConstraint)), AND (CONTAINS(TokenLTD), CONTAINS(TokenConstraint)) ) -> MARK(PerformanceSentence)

}

Page 49: Generación de Escenarios de Calidad a partir de ...

El subsistema NLG permite ensamblar oraciones y frases mediante operaciones donde se

indican   los   lemas   que  conformarán  construcciones   lingüísticas,   y   componer   la   sintaxis   y

morfología del texto de salida.

Al   identificar   las  oraciones  que  poseen   información de  atributos  de  calidad,  se  deben

analizar de manera tal que se pueda inferir elementos para escenarios de calidad. La estructura

lingüística de dichas oraciones posee ciertos patrones que se repiten en frases o conjuntos de

palabras que servirían como semillas para el  mecanismo NLG. Con el  análisis  sintáctico que

efectúa un componente Parser se pueden extraer las denominadas “semillas”. El Parser genera

un  grafo  donde  cada  nodo  es  una  palabra,  y  cada  arista  es   la   relación gramática  entre   las

palabras. Definiendo recorridos sobre el grafo, en base a los patrones establecidos, se pueden

extraer las semillas.

Un subsistema NLG consiste en tres componentes interconectados como un pipeline Error:

no   se  encontró   el   origen  de   la   referencia,  a   saber:  Document  Planner,  Sentence  Planner   y

Linguistic   realiser  [Dale  1997].  El   componente  Document  Planner  puede   ignorarse  ya  que  el

contenido y estructuración del texto a generar está determinado a priori por la misma estructura de

los escenarios de calidad. El componente Linguistic Realizer es implementado por el  framework

Simple NLG, el cual provee un conjunto de operaciones para indicar los lexemas que conformarán

las partes de una construcción lingüística gramatical. Como parte de esta etapa de la técnica se

implementó  un componente  Sentence Planner  a medida para  la  generación de escenarios de

calidad, denominado Microplanner.

4.3.5.1 Microplanner y análisis gramaticalEl procesamiento Dependency Parsing es un procesamiento NLP que permite realizar un

análisis  de  las  dependencias  gramaticales.  El   framework  CoreNLP de  Standford  aplica  dicho

procesamiento  añadiendo  una  estructura  de datos  de  grafo,  como meta­información de  cada

oración, donde se señalan las relaciones gramaticales entre las palabras. Definimos formalmente

el grafo de la siguiente manera:

Sea { w1 ,   w2 , …,  wn } Є W, el conjunto de palabras que conforman la oración; y

sea  r (wg , wd) , una relación gramatical entre dos palabras (binaria y no simétrica) donde  wg

se   lo   denomina   gobernador   y   a   wd   se   lo   denomina   dependiente;   y   { r1(w x , w y) ,

r2(wx ' ,w y ' ) ,   …,   rm(w xn ,w y

n) }   Є   R,   el   conjunto   de   relaciones   gramaticales;   el   grafo

direccionado se define  como G = <W,R>.  Las  relaciones gramaticales son sintagmas con su

nombre   abreviado,   por   ejemplo  amod   (adjectival   modifier);   las   abreviaturas   se   encuentran

definidas y especificadas en el manual de dependencias de Standford [Manning 2008]

El  Parser  requiere un análisis léxico previo para identificar que parte del discurso posee

cada palabra, y en el  caso del Parser de dependencias de  CoreNLP  utiliza  los tags de  Penn

Treebank [Marcinkiewicz 1994]. De esta manera el framework CoreNLP provee componentes para

aplicar   cada   procesamiento   como  pipeline,   y   además   una   potente   API   que   permite   realizar

49

Page 50: Generación de Escenarios de Calidad a partir de ...

numerosas   operaciones   sobre   el   grafo   de   relaciones   gramaticales   como   recorrer   el   mismo,

acceder a nodos y aristas, obtener las palabras y la metainformación, etc.

Continuando con las oraciones de ejemplo, el esquema de la Figura 4.6 permite visualizar

la estructura de grafo y los tags de POS, resultante del procesamiento de CoreNLP a los ejemplos

de performance:

El  Parser de  CoreNLP  se aplica sólo a las oraciones de  performance  identificadas en la

etapa  QA   Mining,   ya   que   debe   minimizarse   el   tiempo   que   emplea   su   procesamiento.   Las

estructuras de grafo resultantes de las oraciones de performance presentan ciertos patrones que

se repiten cuando hay construcciones lingüísticas, frases, o conjunto de palabras que proveen

información específica para alguna sección de escenarios de calidad.  Por  ejemplo cuando se

presenta   un   subgrafo   como   el   siguiente:   {nsubjpass(w1,w2),   det(w2,w3),   auxpass(w1,w4)},   las

palabras y componentes lingüísticos que lo conforman contienen información útil  para elaborar

una definición de la sección Response del escenario de calidad.

La flexibilidad y potencia que ofrecen estas operaciones permiten realizar construcciones

lingüísticas  y   variarlas  de  muchas  maneras,   simplemente  proveyendo   las  palabras  base  que

necesita, las cuales denominamos semillas. Las semillas pueden obtenerse recorriendo el grafo

de dependencias conforme al patrón pertinente.

50

Figura 4.6: Resultado de aplicar Parser a las oraciones de ejemplo de Performance

Page 51: Generación de Escenarios de Calidad a partir de ...

4.3.5.2 Seed ExtractorsSe han identificado varios patrones que proveen información para la sección de Response

del template de escenarios de calidad. A continuación se listan los subgrafos que los describen:

Es evidente que se cumple que  A⊂B⊂C⊂D , por lo que ciertos patrones pueden estar

incluidos en otros. 

 Considerando el mecanismo descrito de SimpleNLG y las características de los patrones,

se ha diseñado un componente que extrae las semillas del grafo de dependencias gramaticales y

las  incorpora a  la  representación abstracta de construcción lingüística de  SimpleNLG  para así

generar el texto candidato a pertenecer a una sección del escenario de calidad. Este componente,

denominado Extractor, es lo suficientemente modificable, reutilizable y extensible para modelar los

patrones   y   construcciones   lingüísticas   para   las  más  diversas   combinaciones,   y   para   varias

secciones de escenarios de calidad. 

Un extractor que opera sobre patrones como A, a su vez puede utilizar eventualmente otro

extractor que opera sobre patrones como {nmod(w1,w2), case(w2,w3), det(w2,w4), compound(w2,w5),

compound(w2,w6), … , compound(w2,wn)} y subconjuntos del mismo. 

Además se ha identificado otra serie de patrones para Stimulus (del template de escenario

de calidad) que aplica a los siguientes subgrafos:

La Figura 4.7  ilustra otro buen ejemplo de oración donde se observa un grafo con varios

patrones de los descritos hasta el momento.

51

E = {dobj(w1,w2), det(w2,w3)}

F = {dobj(w1,w2), det(w2,w3), compound(w2,w4)}

G = {dobj(w1,w2), det(w2,w3), amod(w2, w4)}

A = {nsubjpass(w1,w2), det(w2,w3), auxpass(w1,w4)}

B = {nsubjpass(w1,w2), det(w2,w3), auxpass(w1,w4), nmod(w1,w5), case(w5,w6)}

C = {nsubjpass(w1,w2), det(w2,w3), auxpass(w1,w4), nmod(w1,w5), case(w5,w6),

det(w5,w7)}

D = {nsubjpass(w1,w2), det(w2,w3), auxpass(w1,w4), nmod(w1,w5), case(w5,w6),

det(w5,w7), compound(w5,w8)}

Page 52: Generación de Escenarios de Calidad a partir de ...

Cada extractor provee una función que, dada una oración con información de un atributo

de calidad y sus anotaciones pertinentes, obtiene una representación abstracta de frase a generar

y la implementa conforme a determinado patrón. El texto que instancia dicha representación se

añade como candidato  a  pertenecer  a  una sección predeterminada del  escenario  de calidad.

Consecuentemente se modelan los extractores con una jerarquía donde el la clase base posee

gran parte de esta lógica algorítmica, y las clases que heredan especializan la manera en que se

recorre el grafo y se extraen las semillas de acuerdo al patrón que representan respondiendo al

patrón Template Method.

La función  assemble  es  la que  implementa cada extractor dependiendo del patrón que

representa; y conforme a tal patrón recorre el grafo para que extraiga la palabra que representan

los nodos del recorrido, y la agrega en la representación abstracta de construcción lingüística que

genera una oración para la sección del escenario de calidad a la cual aplica. Al crear una instancia

de representación de frase para la sección de escenario de calidad, se indica el texto generado

(oración) y el  desplazamiento en el   texto del documento de requerimientos donde  localizar el

segmento de texto del que se dedujo la información. El desplazamiento se obtiene de la meta­

información de cada QA  Sentence  que  fue generada en  la  etapa de  QAMining,  y  esa meta­

información, en esta etapa, se ha traduce al formato de anotación soportada por el Dependency

Parser.

Cada   Extractor   posee   un   nombre   descriptivo   que   indica   el   lexema   en   el   que   se

fundamenta. Por ejemplo si el patrón se caracteriza por recorrer  los vértices adyacentes a los

nodos relacionados como objeto directo o buscan la primer ocurrencia de una arista con esa

relación, entonces su nombre tendrá como prefijo “DirectObject”. 

Al crear extractores, se debe especificar la sección para la cual se realiza la extracción,

para   permitir   combinaciones   y   flexibilidad.   Esto   podría   ser   configurado   por   el   usuario   final

mediante una interfaz de usuario apropiada, pero es realizado por un componente denominado

ExtractorManager que simula esas configuraciones.

Finalmente, aplicando los correspondientes extractores a los ejemplos de performance, se

obtienen las frases candidatas para secciones de escenarios de calidad de la Tabla Tabla 4.6

52

Figura 4.7: Ejemplo de oración donde se aplican varios patrones

Page 53: Generación de Escenarios de Calidad a partir de ...

Ejemplo a. Response:­ Provide access to the legacy course catalog database

Ejemplo b. Response:­ Receive the alarm­ Display the alarm

Ejemplo c. Response: ­ The FSS updates a value­ Publish a COV event

Stimulus:­ Execute a command

Ejemplo d. Response:­ Update de UI­ Reflect the failed command

Stimulus:­ Execute a command

Ejemplo e. Response:­ Reflect the update

Stimulus:­ Receive the notification from the FSS

Tabla 4.6: Frases candidatas para escenarios generadas

El proyecto  Eclipse Modeling Framework  es una herramienta de modelado que provee

infraestructura de generación de código para desarrollar software y otras aplicaciones basadas en

un modelo de estructura de datos. EMF permite generar una batería de componentes de software

que constituyen patrones de diseño que permiten modelar y visualizar escenarios de calidad y

realizar operaciones de creación y modificación de instancias de tal modelo, con una estructura de

alta   modificabilidad   y   extensibilidad.   Con   EMF   ha   sido   posible   implementar   fácilmente   la

persistencia  de  los  escenarios  de calidad generados y/o  editados,  y  cargarlos  posteriormente

cuando se desee continuar con su análisis.

4.3.5.3 Generación de los escenarios de calidadUna vez generadas todas las secciones de escenarios de calidad a partir de la información

extraída, procesada y analizada solo resta que el analista confirme de cada repertorio aquellas

secciones que resultan factibles y correctas.

A partir de las secciones validadas se pueden generar escenarios de calidad de diferente

índole, de tal manera que el entregable pueda estar junto con su información representada de

manera concisa y ordenada. Una estrategia posible  es instanciar escenarios de calidad concretos

con una y sólo una sección, otra estrategia consiste en instanciar escenarios con más de una

sección. La segunda estrategia no requiere de mucho procesamiento, sólo descartar aquellas que

el analista no incluyó en su validación. Para la primera estrategia, se hace una combinatoria entre

las secciones validadas, es decir generar un escenario por cada combinación de las secciones

validadas.   Implementando   el   patrón  Strategy  se   logra   intercambiar   fácilmente   entre   ambas

estrategias, donde la clase que implementa la combinatoria aplica una búsqueda exhaustiva con

recursión para generar todas las posibles combinaciones.  

53

Page 54: Generación de Escenarios de Calidad a partir de ...

De esta manera, en esta instancia de la última etapa ya se dispone de los escenarios de

calidad que se esperaban como salida (resultado final) del proceso completo, con  información

extraída de los datos de entrada (documentos de requerimientos) y validada por el mismo analista.

4.4. Arquitectura de QAGen

Las actividades anteriormente descritas, que se conciben como integrantes de una etapa

de procesamiento específica, pueden ser modeladas como una arquitectura Pipes & Filters. Cada

actividad  tiene una entrada de datos que, al ser procesados de una forma transparente, genera

una salida  respectiva de datos; conformando así un Filter. La salida  se conecta a la entrada de

otro  Filter  y  así  sucesivamente se construye  el  Pipeline  que  transforma  los  datos  de manera

incremental hasta obtener un resultado elaborado. Cada Filter puede ser sustituido por otro que

respete las interfaces de entrada y salida (Pipe), y realiza un procesamiento diferente, o igual pero

con operaciones distintas.

Todo el flujo de datos es sometido a un procesamiento  batch secuencial a través de los

Filter descritos. Y en los Pipes los datos migran utilizando un mecanismo Push / Pop. Cada Filter

analiza, procesa y enriquece el  texto con meta­información de manera incremental para luego

dejarla lista en el Pipe de salida de manera tal que el siguiente Filter pueda consumirla.

Esta   arquitectura   se   caracteriza   por   bajo   un   acoplamiento   y   alta   cohesión   entre

componentes dentro de un mismo Filter, lo que la hace muy favorable para refinar y/o especializar

el proceso. Por ejemplo, si en la etapa de pre­análisis hay palabras que no son bien lematizadas o

su POS es reconocido como verbo en lugar de sustantivo, o bien se desea minimizar el tiempo de

procesamiento de dicha etapa; se puede reemplazar el componente que implementa la actividad

correspondiente por otro componente que cumpla las restricciones especificadas.

54

Page 55: Generación de Escenarios de Calidad a partir de ...

5 EvaluaciónEn este  capítulo  se  presenta  una  evaluación de   la  herramienta  QAGen,   simulando   la

asistencia de un arquitecto en  la   tarea de obtener escenarios de calidad para especificar  los

requerimientos no funcionales. 

Para determinar el desempeño de la técnica propuesta, se realizó un procedimiento con

QAGen,   preparando   los   documentos   de   especificaciones   de   3   casos   de   estudio   para   ser

analizados por la herramienta. Luego se evalúa, por un lado, los tiempos que el proceso completo

requiere para completarse; y por otro  lado, para uno de  los casos de estudio, se evalúan los

escenarios de calidad generados comparando el texto que define cada uno contra el texto de los

escenarios de calidad descritos por un experto. Se consideraron diversas métricas de similitud

para realizar la comparación entre los textos de los escenarios de calidad, escogiendo las más

viables para  los propósitos del   trabajo.  Finalmente se analizan  los  resultados obtenidos,  para

determinar el desempeño de la técnica que implementa la herramienta. 

Los 3 casos de estudio utilizados fueron HWS, CRS y MSLite,  los cuales se describen

brevemente a continuación.

● Caso de estudio CRS:  Course Registration System es un sistema provisto por IBM para

demostrar sus herramientas CASE  [Bell 2011].  CRS es un sistema distribuido para ser

usado dentro de una  intranet universitaria; el cual permite a los estudiantes inscribirse a

cursadas,   soporta   la   creación   de   nuevas   cursadas   por   profesores,   y   reportar   las

calificaciones de los estudiantes. Esta especificación contiene 8 casos de uso.

● Caso de estudio HWS: Health Watcher System es un sistema desarrollado por académicos

para una institución gubernamental de Brasil [Greenwood 2011]. HWS describe un sistema

de información web que provee acceso en línea de usuarios para registrar quejas, leer

noticias de salud, y realizar consultas respecto a asuntos de salud. Esta especificación

consiste de 9 casos de uso.  Cabe destacar que otros  investigadores han usado HWS

como modelo para analizar propiedades de atributos de calidad [Haimei 2010].

● Caso de estudio    MSLite:  Management System Lightweight es un sistema desarrollado en

conjunto con profesionales de  Carnegie Mellon University y Siemens  [Gersmann 2005].

MSLite es un sistema que controla y monitorea automáticamente varias funciones de un

sistema,   tales  como:  calefacción,  ventilación,  aire acondicionado,  accesos y seguridad,

entre otros.  El sistema opera en una red,  y gestiona  las  interacciones entre diferentes

dispositivos conectados a la red. La especificación consiste de 22 casos de uso.

5.1. Procedimiento experimental

En esta sección se describe el procedimiento experimental de evaluación de la técnica de

generación de escenarios de calidad QAGen. Se escogió el atributo de calidad Performance para

55

Page 56: Generación de Escenarios de Calidad a partir de ...

el desarrollo del proceso y las pruebas, dado que es uno de los atributos más comunes. Para este

atributo de calidad se crearon los diccionarios de constraints, events, LTD, performanceKeywords

y time (Tablas Tabla 4.2, Tabla 4.3, Tabla 4.4 y Tabla 4.5) basados en conceptos, definiciones y

relaciones extraídas de [IEEE 1992]. Una vez definidos estos diccionarios, se definieron las reglas

de UIMA Ruta para detectar  los  tokens  relacionados con estas palabras y 6 reglas más para

detectar frases referentes a la performance (perfomanceSentences):

• Contiene un tokenEvent y un tokenTime.

• Contiene un tokenEvent y un tokenLTD.

• Contiene un tokenEvent, un tokenStart y un tokenEnd.

• Contiene un tokenEvent y un tokenConstraint.

• Contiene un tokenConstraint y un tokenTime.

• Contiene un tokenConstraint y un tokenLTD.

Durante este proceso se detectaron problemas, como por ejemplo la ambigüedad de las

palabras (por ej. la palabra “second”) que se trataron utilizando las etiquetas #time# y #ord# al

momento de definir las reglas de selección de los tokens específicos para cada diccionario.

Para evaluar la técnica propuesta se realizaron 2 experimentos, basados en 3 casos de

estudio. En el experimento #1 se utilizaron los casos de estudio de HWS y CRS, dado que son

casos simples y poco extensos, con el fin de medir tiempos y refinar las diferentes configuraciones

de la herramienta. En cambio, para el experimento #2 se utilizó MSLite, un caso de estudio más

completo para poder evaluar el proceso entero, su comportamiento con una entrada más extensa

y así poder validar, mediante diversas métricas, los escenarios generados en comparación con

escenarios reales, creados por un experto.

Se registraron los tiempos de ejecución para ambos experimentos, teniendo en cuenta que

se realizaron en una PC convencional, procesador Intel core i7 y 12 GB de RAM, con sistema

operativo Linux.

5.1.1 Experimento #1Para el experimento #1, se tomaron como entrada los requerimientos de HWS y CRS en

texto   plano,   limpiando   los   formatos   y   caracteres   extraños,   tablas   y   viñetas   para   facilitar   su

procesamiento, junto con los diccionarios y reglas propuestos.

Para el  primer  caso HWS, se obtuvo una entrada  resultante,  en  texto plano,  de 2078

palabras, de donde se logró detectar solo una oración (Tabla Tabla 5.1) relacionada con el atributo

de calidad performance (perfomanceSentences).

The response time must not exceed 5 seconds.

Tabla 5.1: Performance sentence detectada en HWS

56

Page 57: Generación de Escenarios de Calidad a partir de ...

En el caso de CRS, se obtuvo una entrada en texto plano de 884 palabras, que si bien es

un caso menos extenso, tiene más  información referente a  performance,  por  lo que, como se

puede ver en la Tabla Tabla 5.2, se detectaron más Performance Sentences.

The system error messages shall include a text description of the error, the operating system error code (if applicable), the module detecting the error condition, a data stamp, and a time stamp.

Mean Time Between Failures shall exceed 300 hours.

The system shall support up to 2000 simultaneous users against the central database at any given time, and up to 500 simultaneous users against the local servers at any one time.

Database Access Response Time: The system shall provide access to the legacy course catalog database with no more than a 10 second latency.

Transaction Response Time: The system must be able to complete 80% of all transactions within 2 minutes.

Tabla 5.2: Performance sentences detectadas en CRS

Estas frases detectadas, si bien provinieron de casos de estudio pequeños, fueron útiles

para redefinir las reglas de una forma más precisa y definir los  Seed Extractors  en la etapa de

Scenario Linking  para generar las secciones candidatas para los escenarios de calidad finales,

mediante el análisis del grafo resultante del procesamiento de CoreNLP. 

Como resultado, como se puede observar en la Tabla Tabla 5.3, solo se pudo generar una

frase correspondiente a HWS y 7 frases para CRS, en ambos casos relacionadas únicamente a la

sección response.

HWS RESPONSE exceeds second

CRS RESPONSE

includes a description

detects the condition

exceeds hours

supports to user

provides access

Responses Time

completes %

Tabla 5.3: Secciones candidatas generadas para HWS y CRS

Con respecto a los tiempos, se midió un tiempo de procesamiento de 15.97 segundos para HWS y

16 segundos para CRS. También se realizó la prueba de medición procesando ambos casos de

estudio en forma conjunta y se obtuvo un tiempo de 18,34 segundos.

5.1.2 Experimento #2Para el segundo experimento, se tomó como entrada las reglas y diccionarios definidos

anteriormente, pero con un nuevo caso de uso: MSLite. Este es un caso de uso más amplio, que

presenta la lista de requerimientos junto con un par de escenarios de calidad de  performance

57

Page 58: Generación de Escenarios de Calidad a partir de ...

creados por un experto (Tabla  Tabla 7.2),  los cuales son útiles para ser utilizados como texto

benchmark, es decir, para comparar y validar contra los generados por QAGen.

Para adecuar el corpus como entrada de la herramienta, se eliminaron los 2 escenarios de

calidad  de  MSLite  ya  especificados   y   se  ajustó   el   formato  eliminando   los  gráficos,   tablas   y

caracteres   extraños   como   las   viñetas,   obteniendo   un   texto   plano   de   10470   palabras,

considerablemente mayor al del experimento #1.

Tras correr las primeras etapas, de segmentación, pre­análisis y QA Mining, se obtuvieron

las Performance Sentences de la Tabla Tabla 7.3.

Como puede observarse, con este caso de estudio se detectaron más frases relacionadas

a  performance  que   en  el   experimento  #1.  Estas   frases   son   tomadas   como   entrada   para   la

siguiente etapa, con el fin de extraer las semillas para generar las secciones candidatas para los

escenarios de calidad, obteniendo las secciones de escenarios de calidad de performance de la

Tabla Tabla 5.4.

STIMULUS

reflects transmission in the UI

displays property in the alarm viewer

selects item in the Hierarchy Tree Editor

updates value on all user screen

displays alarm on the user

RESPONSE

executes a command

publishes an event

receives from MSLite

displays the old value

displays within second

receives the alarm

receives within second

reflects the update

receives the notification

Tabla 5.4: Secciones candidatas generadas para MSLite

Una vez generadas las secciones candidatas, se procedió  a generar  los escenarios de

calidad con la ayuda de la herramienta visual de edición y generación de escenarios de QAGen,

donde redujo manualmente la cantidad de posibles secciones, descartando las menos relevantes,

y se seleccionó el  source  y el  environment de cada lista. Como se puede notar, la herramienta

genera de forma automática frases candidatas para las secciones de stimulus y response, dado

que estas suelen ser las secciones que llevan frases más elaboradas y complejas de detectar

para un escenario. El resto de las secciones se pueden completar seleccionándolas de una lista

pre­definida para cada parte, en base a los templates de escenarios generales de calidad [Bass

58

Page 59: Generación de Escenarios de Calidad a partir de ...

2003]. En  la Tabla  Tabla 5.5  se muestra el escenario candidato resultante, con  las secciones

seleccionadas.

SOURCE system

STIMULUS

reflects transmission in the UI

displays property in the alarm viewer

selects item in the Hierarchy Tree Editor

ENVIRONMENT normal conditions

RESPONSEexecutes a command

publishes an event

Tabla 5.5: Escenario candidato generado para MSLite

Dado este escenario con todas las secciones candidatas generadas por la herramienta y

seleccionadas manualmente, se prosiguió a generar los escenarios concretos mediante el uso del

generador,   seleccionando   la   opción   “Combination”   que   aplica   una   búsqueda   exhaustiva   con

recursión para generar todas las posibles combinaciones. Esta combinatoria se realizó también

teniendo en cuenta escenarios con y sin  source y environment, obteniendo como resultado 24

escenarios listados en la Tabla Tabla 7.3.

Los 24 escenarios generados se utilizaron para comparar con los escenarios reales a fin

de  evaluar,  mediante  distintas  métricas,   la   similitud  de   los  mismos.  Cabe  destacar  que  esta

comparación se realiza con 2 escenarios de ejemplo, creados por un experto, pero no son puntos

de comparación absolutos dado que la generación manual es algo subjetivo y otro experto podría

proveer escenarios diferentes.

El   tiempo de procesamiento para  este  experimento,  para   la  generación automática  de

stimulus y response fue de 20,04 segundos.

5.2. Métricas

Para   realizar   una   evaluación   del   desempeño   de   herramientas   de   Recuperación   de

Información,   por   un   lado,   se   suelen   calcular   y   comparar   los   tiempos   que   emplean   los

procesamientos, desde el comienzo de la ejecución hasta obtener la salida o resultados finales; y,

si corresponde, los tiempos de entrenamiento o aprendizaje previo, entre otros.

Por  otro   lado,  el  desempeño se  puede  evaluar  según cuán acertados  o  aproximados

fueron  los resultados a un modelo de referencia denominado  benchmark.  Cuando se  trata de

textos   se   suelen   utilizar   diversas   métricas   para   comparar   dos   secuencias   de   caracteres,

considerándose   diferentes   niveles   de   granularidad;   es   decir,   se   puede   comparar   carácter   a

carácter,  palabra  a  palabra,  o  cadena  a  cadena.  Existen  métricas  de  distancia,  que   indican

cuánto  difieren  las secuencias de caracteres,  y  métricas  de  similitud,  que  indican cuánto se

asemejan las secuencias de caracteres. Las diversas métricas suelen indicar valores numéricos

que se basan en escalas que pueden diferir de las empleadas por otras métricas, por lo tanto,

para  poder  utilizarlas  en conjunto  y   realizar  comparaciones se  normalizan  de  manera  tal  de

59

Page 60: Generación de Escenarios de Calidad a partir de ...

obtener valores entre 0 y 1. Por otra parte, las métricas de similitud y distancia para comparar

secuencias de caracteres se clasifican en sintácticas y semánticas.

La similitud semántica es la medida de la interrelación existente entre dos textos y que

evalúa el grado en que coinciden sus significados. Estas métricas son las más complejas y suelen

tener muchas variables y parámetros, además requieren un preprocesamiento como lematización

y análisis sintáctico. La evaluación de similitud semántica escapa al alcance del presente trabajo y

puede ser considerada como trabajo futuro. Para evaluar el desempeño de QAGen se utilizaron

las  métricas de:  Coseno,  Jaccard,  Jaro­Winkler,  Normalized Levenshtein y  Sorensen­Dice.  Es

importante destacar que en el caso de aquellas funciones que realizan un cálculo de la distancia

entre dos elementos, se consideró la similitud como el inverso de dicha distancia.

A continuación, se describe cada una de las estrategias escogidas como métricas. Para

cada función se brinda una descripción corta, su definición formal y,  si  es necesario, algunas

consideraciones para su uso.

5.2.1 Coeficiente de JaccardLa distancia de Jaccard es una métrica usada para comparar la similitud y la diversidad de

conjuntos   finitos  de muestras.  Esta  estrategia  es  muy  útil  para  analizar  similitud  de  texto  en

colecciones inmensas [Rajaraman 2012].

La  Figura 5.1 muestra la ecuación que define formalmente esta estrategia, donde A y B

son los conjuntos de elementos a comparar.

J (A , B)=|A∩B|

|A∪B|Figura 5.1: Fórmula de Jaccard

Se puede interpretar como la cardinalidad de la intersección de ambos conjuntos dividida

por la cardinalidad de su unión. Para el presente trabajo se consideraron conjuntos de n­gramas

(secuencia de n caracteres). Cabe señalar que este índice está determinado por la cantidad de

elementos que son compartidos y la cantidad de elementos que difieren entre los conjuntos.

5.2.2 Sorensen-DiceEl   coeficiente  de  Sorensen­Dice,   es  un  método  estadístico  utilizado  para  comparar   la

semejanza de dos muestras [Dice 1945]. Se basa en el análisis de la presencia o ausencia de los

datos en las muestras. Comparado con la distancia Euclidiana o la distancia de  Jaccard,  esta

estrategia da menos peso a los datos de partes aisladas, manifestando así  su utilidad para el

análisis de conjuntos de datos heterogéneos.

60

Page 61: Generación de Escenarios de Calidad a partir de ...

SD( A ,B )=2|A∩B|

|A|+|B|Figura 5.2: Fórmula Sorensen-Dice

5.2.3 Similitud del CosenoLa   representación  de  distribuciones  como  vectores  permite  medir   la   similitud  entre   la

correlación de tales vectores [Huang 2008]. Tal similitud puede ser cuantificada como el coseno

del ángulo entre los vectores. Esta estrategia es independiente del tamaño de las distribuciones, y

es una de las más utilizadas en sistemas recuperación de información. La Figura 5.3 presenta la

ecuación que define formalmente la similitud del coseno donde   t⃗ a y   t⃗ b   son los vectores a

comparar.

Figura 5.3: Fórmula de similitud del Coseno

Se interpreta como el producto de los vectores dividido el producto de la cardinalidad de

los vectores.

5.2.4 Normalized LevenshteinLevenshtein es una métrica de edición [Levenshtein 1966] dada como el mínimo número

de  ediciones  de   caracteres   individuales   (inserción,   eliminación   y   sustitución)   requeridas  para

transformar una cadena de caracteres a otra. Se le considera una generalización de la distancia

de Hamming, que se usa para cadenas de la misma longitud y que solo considera como operación

la sustitución. 

min {H(x* , y*)}Figura 5.4: Fórmula Levenshtein

La distancia Levenshtein normalizada es calculada como la distancia Levenshtein dividido

la longitud de la secuencia más  larga. Siendo D(A,B)  la distancia  Levenshtein  normalizada,  la

similitud se calcula como 1 ­ D(A,B).

5.2.5 Jaro-WinklerLa   distancia  Jaro–Winkler  [Winkler   1990]  es   una   métrica   de   cadenas   para   medir   la

distancia  de  edición entre  dos  secuencias.  Es  una  variante  de   la  distancia  Jaro  [Jaro  1989]

propuesta  por  William  E.  Winkler.   Informalmente,   la   distancia  Jaro  entre   dos  palabras  es  el

número mínimo de  transposiciones a  caracteres  individuales   requeridas  para   transformar  una

61

Page 62: Generación de Escenarios de Calidad a partir de ...

palabra en otra. La similitud Jaro–Winkler está dada por 1 ­ Dw, donde Dw es la distancia Jaro­

Winkler. La Figura 5.5 describe formalmente la distancia Jaro  d j  de dos cadenas de caracteres

s1 y s2.

Figura 5.5: Fórmula Jaro

Donde |si| es la longitud de la cadena si; m es el número de caracteres coincidentes; y t es

el número de transposiciones, es decir, la mitad del número de caracteres coincidentes (pero en

diferente orden).

La distancia de Jaro­Winkler usa un factor de prefijos que pondera el  índice de cadenas

que coinciden desde el comienzo para un prefijo de longitud l. La Figura 5.6 describe formalmente

la distancia Jaro­Winkler de dos cadenas de caracteres x e y.

Figura 5.6: Fórmula Jaro-Winkler

Donde Jaro(x, y) es la similitud de Jaro; y LCP(x, y) es la longitud del prefijo común entre x 

e y. 

5.2.6 Aplicación de las métricasPara evaluar  el  desempeño de  la   técnica se compara  la  similitud de cada uno de  los

escenarios generados con  los escenarios reales especificados por un experto. Los escenarios

reales   se   consideran   como   texto  benchmark,   es   decir,   cuanto   más   similar   el   texto   de   los

escenarios generados, más acertada es la salida de la herramienta. Se utilizó la biblioteca java

string   similarity7  que   implementa   las   5   métricas   descritas   en   lenguaje   Java,   lo   que   permite

aplicarlas al corpus mediante un mecanismo a medida y presentar los resultados en el formato

deseado.   Para   facilitar   el   análisis   y   poder   sintetizar   los   resultados   en   gráficos   y   tablas   se

asignaron códigos de referencia a cada uno de los textos, tanto los generados (Tabla Tabla 7.1),

como los textos benchmark (Tabla Tabla 7.2).

Los valores obtenidos se pueden ver en las tablas 7.4 y 7.5 del Apéndice, los cuales se 

reflejan en el gráfico de la Figura 5.7.

7 https://github.com/tdebatty/java-string-similarity

62

Page 63: Generación de Escenarios de Calidad a partir de ...

Figura 5.7: Valores obtenidos al aplicar las métricas de similitud

5.3. Discusión de los resultados

Los 24 textos extraídos de los escenarios de calidad generados se compararon contra los

dos textos de escenarios de calidad de referencia R1 y R2 aplicando las cinco métricas, con lo

que se obtuvieron cifras para dos casos de comparación. Por otra parte, se registraron los tiempos

de ejecución durante el procedimiento experimental para analizar el desempeño también en esta

dimensión.

5.3.1 Similitud con escenarios de referenciaPara sintetizar todos los valores obtenidos tanto para el caso de comparación R1 como R2

se   calcularon   sus   máximos,   mínimos,   promedios,   medianas,   y   desviación   estándar   que   se

observan en la Tabla 5.6 y se reflejan en el gráfico de la Figura 5.8.

R1­R2 Cosine Jaccard Jaro­WinklerNormalizedLevenshtein

SorensenDice

Max 0,5360 0,2423 0,6382 0,3093 0,3900

Min 0,1983 0,0492 0,5357 0,1262 0,0938

Promedio 0,3497 0,1563 0,5921 0,2253 0,2670

Mediana 0,3388 0,1626 0,5985 0,2430 0,2797

Desviación Estándar 0,0742 0,0508 0,0283 0,0496 0,0777

Table 5.6: Valores de similitud con R1 y R2

63

Page 64: Generación de Escenarios de Calidad a partir de ...

Figura 5.8: Valores de similitud con R1 y R2

Considerando los índices que arrojaron las cinco métricas, se puede ver claramente que

con la métrica Jaro­Winkler se obtuvieron, para los dos casos de comparación, las cifras más altas

que superaron ampliamente las de las otras métricas. De hecho, los valores mínimos de  Jaro­

Winkler, que fueron 0.542 y 0.5357 para R1 y R2 respectivamente (Tabla 5.7 y Tabla 5.8), están

por encima de la mayoría de los valores de las demás métricas incluyendo sus máximos (salvo los

valores   máximos   de   Coseno).   No   obstante,   tales   valores   se   encuentran   muy   concentrados,

indicados por la desviación estándar global 0.0283 que fue la mínima. Esto se debe a que Jaro­

Winkler   es   una   métrica   ideada   para   detectar   errores   de   tipeo,   y   aplicarla   a   secuencias   de

caracteres cortas como palabras individuales o nombres de pila [Winkler 1990]; es por ello que se

debe tener en cuenta que los resultados de Jaro­Winkler, si bien dan buenos índices de similitud,

no son muy confiables al evaluar el desempeño de QAGen.

Por otra parte,  los  índices obtenidos con  Jaccard  fueron  los más bajos entre  las cinco

métricas.  De  hecho,   los  valores  máximos  obtenidos con  Jaccard  (0.2381 y  0.2423)  son  muy

inferiores a la mayoría de los obtenidos con las otras cuatro métricas. Esto se debe a que está

fundamentado simplemente en teoría de conjuntos (se basa en análisis de la presencia o ausencia

de los datos en las muestras) y su coeficiente es muy rudimentario al no añadir ningún factor o

variable heurística de ajuste, ponderación, aproximación, etc. Particularmente se puede destacar

que al aplicar  Jaccard  a los escenarios generados,  los  índices de esta métrica se vieron muy

influenciados por la cantidad de palabras no detectadas del texto benchmark, y las palabras que

se generaron y no estaban en el texto  benchmark,  las cuales superaron a las palabras que sí

coincidieron. La métrica  Sorensen­Dice,  en cambio,  es más confiable por ser una variante de

Jaccard que da menos peso a los datos de partes aisladas, siendo más apropiada para los textos

con las características de los que se desean analizar para el desempeño de QAGen. 

La métrica que arrojó resultados más razonables y descriptivos fue la del Coseno, y de

hecho esta estrategia es ampliamente utilizada y aceptada en numerosos casos de evaluación de

herramientas de Recuperación de Información. Los índices obtenidos con la estrategia de similitud

64

Page 65: Generación de Escenarios de Calidad a partir de ...

del Coseno fueron mayormente aceptables, lo cual se aprecia observando que los promedios y la

mediana de los dos casos de comparación (Tabla 5.7 y Tabla 5.8) están por encima de 0.32; y el

máximo total fue 0.536.

En la Figura 5.9 se reflejan los cálculos de análisis para los valores obtenidos con el caso

de comparación contra R1.

Figura 5.9: Valores de similitud con R1

Los   valores   máximos   obtenidos   con  Coseno,   Jaccard   y   Sorensen­Dice  (0.421967,

0.238095 y 0.3846 respectivamente) son de comparar G08 contra R1 en el que coinciden varias

palabras por ser el más completo. 

Los escenarios G13 y G01 son los más incompletos y por lo tanto los índices obtenidos

están entre los más bajos para las 5 métricas. Todos los cálculos de análisis para el caso de

comparación contra R1 se agrupan en la Tabla 5.7.

R1 Cosine Jaccard Jaro­WinklerNormalizedLevenshtein

SorensenDice

Max 0,4220 0,2381 0,6382 0,3093 0,3846

Min 0,1983 0,0571 0,5420 0,1289 0,1081

Promedio 0,3278 0,1569 0,5962 0,2373 0,2679

Mediana 0,3322 0,1689 0,6010 0,2552 0,2890

Desviación Estándar 0,0609 0,0495 0,0285 0,0533 0,0761

Table 5.7: Valores de comparación con R1

No obstante,  los escenarios generados fueron más aproximados a R2. Los cálculos de

análisis para los valores obtenidos con el caso de comparación contra R1 se reflejan en la Figura

5.10.

65

Page 66: Generación de Escenarios de Calidad a partir de ...

Figura 5.10: Valores de comparación con R2

Entre   los   valores   obtenidos   con   las   estrategias  Coseno,   Normalized   Levenshtein   y

Sorensen­Dice,  hubo   varios   que   superaron   a   la   mayoría   de   los   obtenidos   en   el   caso   de

comparación R1 con la misma estrategia. Tales valores corresponden a G05, G08, G11, G17 y

G20 que contienen “alarm”, un concepto que se menciona tres veces en R2. 

Los valores para R2 podrían haber superado aún más ampliamente si se unificaban “UI” ­

(que se menciona en los generados) y “user interface” (que se menciona en R2). Esto sirve como

lección para considerar reglas en la etapa de QAMining que unifiquen siglas y abreviaturas.

R2 Cosine Jaccard Jaro­WinklerNormalizedLevenshtein

SorensenDice

Max 0,5360 0,2423 0,6266 0,2570 0,3900

Min 0,2440 0,0492 0,5357 0,1262 0,0938

Promedio 0,3716 0,1558 0,5881 0,2132 0,2660

Mediana 0,3543 0,1583 0,5964 0,2313 0,2733

Desviación Estándar 0,0797 0,0521 0,0276 0,0422 0,0793

Table 5.8: Valores de comparación con R2

Cabe mencionar  que   todas   las  métricas  empleadas  comparan   los   textos  sin   tener  en

cuenta su significado, sintaxis, gramática, etc.; por lo tanto, puede darse el caso en que en un

texto se encuentre el mismo verbo que en el texto benchmark pero en otra conjugación, y en tal

caso deberían tener el mismo valor semántico e incrementar el índice obtenido. Es por ello que se

planteó, entre las diversas estrategias para evaluar, obtener los lemas de las palabras de ambos

textos   a   comparar   y   calcular   cuántos   lemas   coinciden   aplicando   una  estrategia   como   la   de

Jaccard  para  obtener  este   índice.  Existen numerosas métricas  semánticas   las  cuales,  por  su

sofisticada configuración y aplicación,  y  complejidad para analizar y comparar sus  resultados,

66

Page 67: Generación de Escenarios de Calidad a partir de ...

escapan al alcance del presente trabajo, pero sin lugar a dudas podrían utilizarse para realizar una

evaluación más precisa y confiable.

5.3.2 Velocidad de ejecuciónUna de las características observadas en las validaciones realizadas fue la velocidad de

ejecución dado que, como se pudo observar, se obtuvieron resultados consistentes, en tiempos

razonables,   con  aproximadamente  20  segundos  de  procesamiento  para  una  entrada  extensa

como lo es  MSLite.  QAGen presenta una ventaja considerable en este aspecto, con respecto a

herramientas   similares,   dado  que  muchas   de   ellas   realizan  procesamientos   más   costosos   y

utilizan técnicas de entrenamiento y aprendizaje que suelen requerir gran cantidad de datos y

tiempo.

En la Tabla 5.9 se muestran los tiempos obtenidos para cada caso de estudio analizado,

junto   con   la   cantidad   de   palabras   analizadas.   En   cada   caso   se   discrimina   por   tiempo   de

configuración inicial y de procesamiento donde se puede observar que los tiempos, si bien crecen

de acuerdo al   tamaño de  la  entrada,  no  lo  hace en  forma proporcional  a  la  extensión. Cabe

destacar que todas las mediciones se realizaron en una misma PC y bajo las mismas condiciones,

reiniciando el ordenador antes de cada prueba para asegurar siempre una primera corrida y evitar

datos potencialmente cacheados. 

Caso de estudio

Número de palabras Tiempo de setup Tiempo promedio total Desviación

HWS 2078 6,853 seg. 14,432 seg. 0,242 seg.

CRS 884 7,595 seg. 15,282 seg. 0,416 seg.

MSLite 10470 8,566 seg. 18,696 seg. 0,457 seg.

CRS + HWS 884 + 2078 8,311 seg. 17,564 seg. 0,422 seg.

Table 5.9: Tiempos de ejecución del procedimiento registrados

Los tiempos de configuración inicial corresponden a la preparación de Stanford CoreNLP,

que   consiste   principalmente   de   la   inicialización   del  dependency   parser,   carga   del   modelo   y

preparación del POS tagging. Estas tareas de configuración inicial se ejecutan sólo una vez, lo

que permite mejorar  los tiempos  incluyendo todos  los corpus de entrada en una sola corrida.

Además, al utilizarse una estructura de  pipelines, se ejecutan las tareas de manera continua y

secuencial,   lo cual optimiza el tiempo resultante. Por ejemplo, en el caso de CRS + HWS, se

incluyeron ambos textos como entrada, lo cual tuvo un ligero aumento de tiempo total (poco más

de   3   segundos)   con   respecto   al   procesamiento   individual   de   cada   uno   de   ellos,   dando   un

promedio de aproximadamente 9 segundos cada uno, contra unos 15 segundos que dieron como

resultado cuando se corrieron por separado.

67

Page 68: Generación de Escenarios de Calidad a partir de ...

6 ConclusionesLa especificación de atributos de calidad es una tarea que tiene un gran impacto en todo el

ciclo de vida del software. La manera en que se lleve a cabo esta tarea puede afectar mucho ­ ya

sea positivamente o negativamente ­ el diseño arquitectónico (el comportamiento y estructura del

sistema)   y  por   lo   tanto   la   satisfacción  de   los  stakeholders.  Aun  así,   las  especificaciones  de

atributos de calidad en los documentos de requerimientos suelen ser realizadas de forma vaga y

hasta omitidas. Esto se debe, generalmente, a que se presta más atención a los requerimientos

funcionales; y por otro  lado,  la  identificación de requerimientos no funcionales requiere que el

analista tenga mucha experiencia y conocimiento sobre diversos atributos de calidad. Un gran

obstáculo para la elicitación y especificación de atributos de calidad es que es una tarea que

demanda tiempo y esfuerzo.

Los escenarios de calidad son un mecanismo para especificar atributos de calidad de una

forma clara, concisa y eficaz. Además, sirven para evaluar la arquitectura del sistema y pueden

conformar su documentación entre otros artefactos. De esta manera, se debe considerar que es

de suma importancia facilitar la obtención de escenarios de calidad a partir de los requerimientos

del sistema. 

Se han logrado considerables contribuciones en la Ingeniería de Requerimientos con el

desarrollo de herramientas que asisten de forma automatizada en  las distintas tareas de esta

área. Se han implementado varias herramientas semi­automáticas aprovechando los avances de

las   áreas   de   Inteligencia   Artificial,  Natural   Language   Understanding,   o   Natural   Language

Generation, Machine Learning, etc; las cuales poseen mucho potencial para estos propósitos.

El enfoque propuesto en esta tesis plantea aprovechar las funciones de distintas tareas de

Natural Language Processing, de manera tal que se puedan identificar y analizar las secciones del

texto de los documentos de requerimientos que contienen información de atributos de calidad. A

partir de la información analizada, se pueden obtener datos que sirven para generar escenarios de

calidad aprovechando las técnicas de Natural Language Generation, por medio de las cuáles, se

pueden obtener frases que conforman las secciones de  source, stimulus, artifact, environment,

response y response measure.  Este enfoque se materializó  con una herramienta denominada

QAGen. El mismo consta de un análisis por medio de un pipeline, el cuál se divide en distintas

etapas. A lo largo de cada etapa se aplica un procesamiento incremental, al cual una vez que

identifica oraciones con información relacionada a atributos de calidad, se le realiza un análisis

gramatical para extraer los elementos que el componente de generación de lenguaje natural utiliza

para armar  las  frases que pueden pertenecer a alguna sección de  los escenarios de calidad.

Finalmente, el enfoque permite validar las frases candidatas y generar escenarios generales de

calidad y también escenarios de calidad concretos por medio de combinatoria. La herramienta

QAGen puede entonces asistir a un analista que no tiene experiencia suficiente o minimizar los

68

Page 69: Generación de Escenarios de Calidad a partir de ...

tiempos que demanda una inspección manual, a su vez obtener los escenarios de calidad que son

tan importantes para el diseño arquitectónico del sistema.

Para evaluar el enfoque, se escogió el atributo de calidad Performance, definiendo reglas y

diccionarios de palabras clave para la detección de oraciones de tal atributo de calidad. 

Se puede concluir que la utilización de técnicas de procesamiento de lenguaje natural es

muy útil  para   lograr  herramientas  de software que automaticen gran parte de  las   tareas que

implica la especificación de requerimientos no funcionales, reduciendo el tiempo y esfuerzo que

demandan   al   hacerlo   de   forma   manual.   También   estas   herramientas   logran   que   se   pueda

prescindir   (hasta  cierto  punto)  de  un  experto  en  atributos  de  calidad.  Además,  para  obtener

resultados   precisos   y   satisfactorios   se   debe   encontrar   la   manera   de   combinar   las   diversas

técnicas   NLP   y   la   mejor   configuración   de   cada   uno.   Por   otra   parte,   suelen   presentarse

complicaciones al intentar integrar componentes de software NLP que no han sido pensados para

ser compatibles entre sí. Finalmente, la gran variedad de atributos de calidad presentan el desafío

de abarcar diferentes escenarios que pueden no ser contemplados por los patrones planteados

inicialmente.  Pero sobre  todo  la comprensión de  la  lingüística es muy compleja debido a sus

diversos fenómenos como la polisemia, las siglas y abreviaturas, y los innumerables dominios y

contextos en que puede estar denotado un significado.

6.1. Contribuciones

  La herramienta propuesta en este trabajo realiza diversas contribuciones al estado del

arte, las cuales se enumeran a continuación:

● Se ha desarrollado una herramienta que asiste al  analista para generar escenarios de

calidad a partir  de  los documentos de requerimientos. Tal herramienta cuenta con una

interfaz de usuario intuitiva que guía en todo el proceso, de esta manera permite que sea

utilizada por un analista que puede no ser experto en especificación de requerimientos no

funcionales.

● Se  ha   logrado   combinar   componentes  de  Natural   Language  Understanding   y   Natural

Language   Generation  y   explotar   en   conjunto   sus   características.   El   proceso   pipeline

resultante   hace   que   la   extracción   de   información   de   los   documentos   sea

considerablemente más rápida y fácil que otras herramientas que utilizan otras técnicas de

inteligencia artificial que son muy complejas, difíciles de configurar y demandan tiempo,

como el caso de Machine Learning.

● Se   han   implementado   e   integrado   módulos   modificables,   extensibles   y   reutilizables,

permitiendo utilizar  componentes  de distintas   librerías y  realizar   futuros  cambios  en el

pipeline  fácilmente.  Por  ejemplo,   funcionalidades de  librerías como  Snowball  Stemmer,

OpenNLP,   Berkeley   Syntactic   Parser,   ClearNLP   y   Stanford   CoreNLP  pueden   sustituir

alguno de los componentes del pipeline o incorporarse como uno nuevo. De esta manera

se   pueden   aprovechar   otras   técnicas   de   NLP   que   permitirían   ajustar   y   adaptar   el

procesamiento total, y lograr resultados más específicos o precisos.

69

Page 70: Generación de Escenarios de Calidad a partir de ...

● La utilización del lenguaje de UIMA Ruta permite realizar extracción de información de los

documentos  de una manera muy potente  y   flexible por  ser  un  lenguaje de paradigma

declarativo.  Se pueden escribir  nuevas reglas  que obtengan mejores  resultados o que

apliquen para otros atributos de calidad. El diccionario de taxonomías también es flexible y

puede  ser  modificado  por  un  usuario  que  no necesariamente   tenga  conocimientos  de

programación.

6.2. Limitaciones

La   herramienta   propuesta   posee   una   serie   de   limitaciones   observadas   durante   la

evaluación experimental. Las mismas, se listan a continuación:

● Los documentos que  la herramienta  implementada toma como entrada deben estar en

idioma inglés y no se admite ningún otro idioma. Además, el formato debe ser texto plano,

sin tablas, separadores, ni estructuras de presentación de información.

● La detección de secciones  con   información de  atributos  de  calidad  suele   tener   falsos

positivos entre sus resultados, los cuales pueden ingresar ruido para las etapas posteriores

y obtener un resultado final confuso.

● La detección de patrones gramaticales  para proveer  al  componente  Natural  Language

Generation  se   realiza   por   medio   de   extractores   implementados   en   Java.   Se   debería

soportar que fácilmente se añadan nuevos extractores para patrones que aún no se habían

contemplado, y estos patrones podrían aún variar para diferentes atributos de calidad. La

implementación actual requiere que si se desea contemplar otros patrones se debe contar

con un desarrollador Java.

● El  proceso   requiere  que  el  analista   valide   las  oraciones   identificadas  como   texto  con

información  sobre  atributos  de  calidad  y   luego  valide   las  secciones  de  escenarios  de

calidad detectados para, finalmente, obtener los escenarios concretos. Además, se debe

contar con  las reglas y diccionarios para cada atributo de calidad,   los cuales deberían

ajustarse conforme a sus criterios. Lo ideal sería automatizar todo el proceso minimizando

la intervención humana.

6.3. Trabajos futuros

Si bien se alcanzaron los objetivos propuestos, se identificaron algunos trabajos futuros

que escapan al alcance del presente trabajo pero que poseen potencial para investigaciones o

tesis a partir de este enfoque. Las siguientes propuestas podrían ser consideradas:

● Definir reglas, diccionarios y taxonomías, y extractores de patrones para contemplar otros

atributos de calidad a parte de performance; y aún refinar el proceso del enfoque planteado

para obtener resultados más precisos y efectivos.

● Al obtener varios escenarios de calidad para un mismo documento de requerimientos, los

mismos no suelen tener todos la misma relevancia, importancia y efectividad. Se pueden

priorizar   escenarios   obtenidos   con   algunas   de   las   diferentes   técnicas   de   priorización

70

Page 71: Generación de Escenarios de Calidad a partir de ...

sistemática existentes como Analytic Hierarchy Process  [Saaty 1994]. Además, se puede

aplicar   priorización   a   las   secciones   generadas   y   aún   las   oraciones   identificadas   con

información de atributos de calidad.

● Las métricas de similitud semántica pueden ser muy aplicables para evaluar los resultados

y reajustar la técnica, utilizando herramientas como SEMILAR8 .

● El  campo de   la   Inteligencia  Artificial  está  en  constante  desarrollo  y  ya  se cuenta  con

comunidades   y   herramientas   que   aportan   descubrimientos   y   técnicas   cada   vez   más

sofisticadas y eficaces. Por ejemplo,  integrando al presente enfoque  Machine Learning,

podrían  obtenerse  mejores   resultados;   incluso  otras   técnicas  dentro   del   campo  de   la

lingüística computacional. 

● Este enfoque se podría implementar en otros lenguajes como C++ (UIMA lo permite), o

Python,  que   pertenece   a   un   paradigma   muy   apropiado   para   resolver   este   tipo   de

problemas y hay bibliotecas como   NLTK9  que son muy aceptadas en la comunidad de

procesamiento de lenguaje natural.

8 http://www.semanticsimilarity.org/ 9 http://www.nltk.org/

71

Page 72: Generación de Escenarios de Calidad a partir de ...

7 Apéndice

7.1. Escenarios generados y reales (benchmark)

En este apéndice se listan los escenarios utilizados para la aplicación de las métricas de

similitud,  identificados numéricamente, con los prefijos G y R para los escenarios generados y

reales, generados por un experto, respectivamente.

Escenarios de calidad generados por QAGen

G01 system reflects transmission in the UI

G02 system displays property in the alarm viewer

G03 system selects item in the Hierarchy Tree Editor

G04 system reflects transmission in the UI normal conditions

G05 system displays property in the alarm viewer normal conditions

G06 system selects item in the Hierarchy Tree Editor normaString gen = "conditions";

G07 system reflects transmission in the UI normal conditions executes a command

G08 system displays property in the alarm viewer normal conditions executes a command

G09 system selects item in the Hierarchy Tree Editor normal conditions executes a command

G10 system reflects transmission in the UI normal conditions publishes an event

G11 system displays property in the alarm viewer normal conditions publishes an event

G12 system selects item in the Hierarchy Tree Editor normal conditions publishes an event

G13 reflects transmission in the UI

G14 displays property in the alarm viewer

G15 selects item in the Hierarchy Tree Editor

G16 reflects transmission in the UI normal conditions

G17 displays property in the alarm viewer normal conditions

G18 selects item in the Hierarchy Tree Editor normal conditions

G19 reflects transmission in the UI normal conditions executes a command

G20 displays property in the alarm viewer normal conditions executes a command

G21 selects item in the Hierarchy Tree Editor normal conditions executes a command

G22 reflects transmission in the UI normal conditions publishes an event

G23 displays property in the alarm viewer normal conditions publishes an event

G24 selects item in the Hierarchy Tree Editor normal conditions publishes an event

Tabla 7.1: Códigos de referencia a los escenarios de calidad generados por QAGen

72

Page 73: Generación de Escenarios de Calidad a partir de ...

Escenarios de calidad reales

R1a field system detects a change of some value and notifies mslite the system operates under normal conditions the value is updated on all user screens that display the old value within 3seconds

R2an alarm occurs either originating in a field system or in mslite the system operates under normal conditions the alarm is displayed on the user interfaces of all users that must receive the alarm within 3 seconds

Tabla 7.2: Códigos de referencia a los escenarios de calidad reales

7.2. Performance sentences del caso de estudio MSLite

En este apéndice se listan listan las oraciones detectadas por QAGen, relacionadas con el

atributo de calidad performance (performance sentence), para el caso de estudio MSLite.

When the FSS updates a value either by itself or after executing a command that it received from MSLite it publishes a COV event.

The successful transmission of a command to the FSS is reflected in the UI. If the FSS fails to execute a command that it received, and notifies MSLite, then the UI must be updated to reflect the failed command.

The following properties for the alarm are displayed in the alarm viewer: (i) Alarm Name - The custom name of the alarm specified at the time of the creation of the Alarm Rule.

System displays “Alarm Acknowledgment Request” dialog for all logged in users with read access to the associated alarm property.[UC004.UI001] This dialog shows the following elements: a. Alarm Name - The custom name of the alarm specified at the time of the creation of the Alarm Rule.

2. System displays the “Configure Hierarchies” screen.[UC101.UI001] 3. User selects the “Create Hierarchy” button.[UC101.UI001] 4. System displays the “Create Hierarchy” screen.[UC101.UI002] 5. User enters a hierarchy name in step 1.[UC101.UI002] 6. User enters a hierarchy description in step 2.[UC101.UI002] 7. User selectively instantiates one of the following extending use cases: UC104: Create Logical Node UC105: Delete Logical Node (only after a logical node has been created) UC106: Rename Logical Node (only after a logical node has been created) UC107: Add Field Object UC108: Remove Field Object (only after a field object has been added) 8. User selects the “Create Hierarchy” button.[UC101.UI003] 9. System verifies the hierarchy name is unique.

Extension 108.8b 8b – No item is selected in the “Hierarchy Tree Editor”: 1. System displays an error message asking the user to select a field object before using this button.

The value is updated on all user screens that display the old value within 3 seconds.

The alarm is displayed on the user interfaces of all users that must receive the alarm within 3 seconds.

The Time durations specified in this scenario are performance goals and are not to be taken as hard deadlines.

Only relevant GUI screens for these ‘m’ users will reflect the update within having received the notification from the FSS.

Tabla 7.3: Performance sentences detectadas en MSLite

7.3. Valores obtenidos al aplicar las métricas

En este apéndice se listan todos los valores obtenidos al aplica las cinco estrategias de

comparación   (similitud)   entre   los   escenarios   generados   con   el   procedimiento   general   y   los

escenarios de calidad de referencia.

73

Page 74: Generación de Escenarios de Calidad a partir de ...

Cosine Jaccard JaroWinklerNormalizedLevenshtein

SorensenDice

Suma total

R1 G01 0,276916 0,084746 0,56283 0,159794 0,15625 0,56283G02 0,292999 0,11236 0,541952 0,180412 0,20202 0,541952G03 0,27693 0,092896 0,575005 0,201031 0,17 0,575005G04 0,372687 0,167598 0,593224 0,226804 0,287081 0,593224G05 0,413675 0,213483 0,597372 0,231959 0,351852 0,597372G06 0,317247 0,143564 0,602418 0,252577 0,251082 0,602418G07 0,385452 0,194737 0,619637 0,293814 0,325991 0,619637G08 0,421967 0,238095 0,624175 0,298969 0,384615 0,624175G09 0,391887 0,205128 0,634516 0,309278 0,340426 0,634516G10 0,36315 0,175258 0,638156 0,28866 0,298246 0,638156G11 0,395594 0,21875 0,61973 0,293814 0,358974 0,61973G12 0,371106 0,18593 0,637892 0,304124 0,313559 0,637892G13 0,198342 0,057143 0,568553 0,128866 0,108108 0,568553G14 0,200603 0,073034 0,545918 0,14433 0,136126 0,545918G15 0,209041 0,071429 0,544567 0,164948 0,133333 0,544567G16 0,313649 0,141243 0,584881 0,201031 0,247525 0,584881G17 0,342336 0,174157 0,575608 0,195876 0,296651 0,575608G18 0,324462 0,15847 0,583053 0,216495 0,273585 0,583053G19 0,333342 0,170213 0,614927 0,268041 0,290909 0,614927G20 0,358697 0,201058 0,599615 0,262887 0,334802 0,599615G21 0,344984 0,185567 0,603816 0,278351 0,313043 0,603816G22 0,309425 0,151042 0,620055 0,262887 0,262443 0,620055G23 0,331105 0,182292 0,609419 0,257732 0,30837 0,609419G24 0,322504 0,166667 0,611959 0,273196 0,285714 0,611959

Total R1 0,421967 0,238095 0,638156 0,309278 0,384615 0,638156

Table 7.4: Valores obtenidos comparando contra R1

Cosine Jaccard JaroWinklerNormalizedLevenshtein

SorensenDice

Suma total

R2 G01 0,315353 0,081522 0,54779 0,149533 0,150754 0,54779G02 0,46227 0,138889 0,535689 0,168224 0,243902 0,535689G03 0,297318 0,08377 0,582594 0,182243 0,154589 0,582594G04 0,379267 0,16129 0,603072 0,196262 0,277778 0,603072G05 0,53604 0,238889 0,576523 0,219626 0,38565 0,576523G06 0,332609 0,149758 0,597335 0,214953 0,260504 0,597335G07 0,359378 0,17 0,626594 0,247664 0,290598 0,626594G08 0,496389 0,242268 0,603242 0,252336 0,390041 0,603242G09 0,363638 0,180488 0,624885 0,257009 0,305785 0,624885G10 0,352 0,163366 0,604551 0,247664 0,280851 0,604551G11 0,484709 0,235897 0,595467 0,252336 0,381743 0,595467G12 0,356558 0,173913 0,624885 0,257009 0,296296 0,624885G13 0,243998 0,04918 0,540907 0,126168 0,09375 0,540907G14 0,408667 0,106145 0,540618 0,135514 0,191919 0,540618G15 0,244068 0,063158 0,543572 0,154206 0,118812 0,543572G16 0,322861 0,12973 0,577334 0,17757 0,229665 0,577334G17 0,490927 0,206704 0,571537 0,196262 0,342593 0,571537G18 0,335286 0,152632 0,60004 0,196262 0,26484 0,60004G19 0,307817 0,140704 0,594233 0,242991 0,246696 0,594233G20 0,452128 0,212435 0,611524 0,247664 0,350427 0,611524G21 0,323194 0,161765 0,608321 0,252336 0,278481 0,608321G22 0,299564 0,134328 0,590497 0,242991 0,236842 0,590497G23 0,439908 0,206186 0,608304 0,247664 0,34188 0,608304G24 0,315409 0,15534 0,60375 0,252336 0,268908 0,60375

Total R2 0,53604 0,242268 0,626594 0,257009 0,390041 0,626594

Table 7.5: Valores obtenidos comparando contra R2

74

Page 75: Generación de Escenarios de Calidad a partir de ...

7.4. Herramienta QAGen

En este apéndice se muestran capturas de pantalla de la herramienta QAGen, desarrollada

para implementar el enfoque de la técnica propuesta para el presente trabajo.

Figura 7.1: Pantalla de generación de escenarios de calidad

75

Figura 7.2: Pantalla del contexto de la QA Sentence

Page 76: Generación de Escenarios de Calidad a partir de ...

8 Referencias[Bass 2003] Bass, Clements. Soft Arch in Practice. Second. Longman. 2003

[Gorton 2011] I. Gorton. Essential Software Architecture. ,2011

[Smith 1993] C. Smith, L. Williams. , Software Performance Engineering: A Case Study Including Performance Comparison with Design Alternatives, 1993

[Shaw 1996] M. Shaw, D. Garlan.. Software Architecture: perspectives on an emergingdiscipline.. . . 1996

[Haak 2005] Haak, B., Pryor, A. and Marcos, C. .Identificacion Temprana de Aspectos. ,2005

[Dorr 2003] Dörr, J., et al. , Eliciting Efficiency Requirements with Use Cases, 2003

[Sampaio 2007] Sampaio, Americo & Rashid, Awais & Chitchyan, Ruzanna & Rayson, Paul., EA-Miner: Towards Automation in Aspect-Oriented Requirements Engineering, 2007

[Bertoni 2010] Francisco Andrés Bertoni Sebastián Villanueva, Identificación de Atributos de Calidad en requerimientos. , 2010

[Wojcik 2013] Rob Wojcik, Architecting in a Complex World: Eliciting and Specifying Quality Attribute Requirements, 2013

[IEEE 1992] Software & Systems Engineering Standards Committee, Standard for a Software Quality Metrics Methodology, 1992

[Barbacci 1995] M. Barbacci, M. Klein, T. Longstaff, C. Weinstock. Quality Attributes. . Software Engineering Institute. 1995

[Bachmann 2007] F. Bachmann, L. Bass, R. Nord. Modifiability Tactics . . . 2007

[Medvidovic 2003] N. Medvidovic, A. Egyed, P. Gruenbacher, Stemming architectural erosion by coupling architectural discovery and recovery, 2003

[Klein 2000] Rick Kazman, Mark Klein Paul Clements. ATAM: Method for Architecture Evaluation. . . 2000

[Turing 1950] A. M. Turing, Computing Machinery and Intelligence, 1950

[Jurafsky 2000] Daniel Jurafsky and James H. Martin. . . Alan Apt. 2000

[Craig 2013] Tim Craig.The Art of Tokenization. ,2013

[Mitchell 1993] Mitchell P. Marcus Mary Ann Marcinkiewicz Beatrice Santorini, Building a large annotated corpus of English: the penn treebank, 1993

[Dale 1995] Dale, R. and Reiter, E. , Computational interpretations of the Gricean maxims in the generation of referring expressions, 1995

[Reiter 2000] Dale, R. and Reiter. Building Natural Language Generation Systems . . . 2000

[Sutton 2002] Sutton Jr, Stanley & Rouvellou, I.. Modeling of Software Concerns in Cosmos. . . 2002

[Rashid 2003] A. Rashid, A. Moreira, and J. Araujo, Modularisation and Composition of Aspectual Requirements, 2003

[Whittle 2004] J. Whittle and J. Araujo, Scenario Modeling with Aspects, 2004

76

Page 77: Generación de Escenarios de Calidad a partir de ...

[Sawyer 2002] P. Sawyer, P. Rayson, and R. Garside, REVERE: Support for Requirements Synthesis from Documents,

[Rago 2014] Alejandro Rago, Claudia Marcos, J. Andres Diaz-Pace, Assisting requirements analyststo find latent concerns with REAssistant,

[Shaw1996] M. Shaw, D. Garlan.. Software Architecture: perspectives on an emergingdiscipline.. . .1996

[Mikolov 2013] T. Mikolov, K. Chen, G. Corrado, J. Dean.. Efficient Estimation of Word Representations in Vector Space. . . 2013

[Bethard 2014] S. Bethard, P. Ogren, and L. Becker, ClearTK 2.0: Design Patterns for Machine Learning in UIMA, 2014

[Gatt 2009] Albert Gatt, Ehud Reiter, SimpleNLG: A realisation engine for practical applications, 2009

[Brown 2011] Brown N, Nord R, Ozkaya I, Pais M , Analysis and managementof architectural dependencies in iterative release planning, 2011

[Mullick 2006] Mullick N, Bass M, Houda Z, Paulish P, Cataldo M, Siemens globalstudio project: experiences adopting an integrated gsd infrastructure., 2006

[Dale 2000] Robert Dale, Hermann Moisl, Harold Somers. Handbook of Natural Language Processing. . CRC Press . 2000

[Dale 1997] Ehud Reiter, Robert Dale, Building Applied Natural Language GenerationSystems, 1997

[Manning 2008] Marie-Catherine de Marneffe and Christopher D. Manning, Stanford typed dependencies manual, 2008

[Marcinkiewicz 1994] Mitchell Marcus, Grace Kim, Mary Ann Marcinkiewicz, et. al., The Penn Treebank: annotating predicate argument structure, 1994

[Bell 2011] Rick Bell, Course registration system., 2011

[Greenwood 2011] Phil Greenwood., Tao: A testbed for aspect oriented software development., 2011

[Haimei 2010] Haimei Zhang and Kerong Ben, Architectural design of the health watch system with an integrated aspect-oriented modeling approach, 2010

[Gersmann 2005] Stefan Gersmann. Development of Strategies for Global Software Development. . Diplomarbeit, Technische Universitat Munchen, Fakultat fur Informatik. 2005

[Rajaraman 2012] A. Rajaraman and J. D. Ullman. Mining of massive datasets. . Cambridge University Press. 2012

[Dice 1945] L. R. Dice, Measures of the amount of ecologic association between species, 1945

[Huang 2008] A. Huang, Similarity measures for text document clustering, 2008

[Levenshtein 1966] Levenshtein, Vladimir I. , Binary codes capable of correcting deletions, insertions, and reversals, 1966

[Winkler 1990] Winkler, W. E., String Comparator Metrics and Enhanced Decision Rules in the Fellegi-Sunter Model of Record Linkage, 1990

[Jaro 1989] Jaro, Matthew A, Advances in Record-linkage Methodology a Applied to Matching the 1985 Census of Tampa, Florida, 1989

[Saaty 1994] Thomas L Saaty, How to make a decision: the analytic hierarchy process, 1994

77