Ambriola e Gervasi [3] estudaram os problemas envolvidos na análise de documentos de requisitos e, com o objetivo de auxiliar o processo de análise e modelagem de requisitos, desenvolveram o ambiente CIRCE para análise de requisitos em língua natural. O ambi- ente agrupa várias ferramentas de PLN para a análise dos documentos e ferramentas para geração de modelos de representação de dados, como autômatos finitos e modelos UML.
O ambiente é baseado no conceito de transformações sucessivas, aplicadas aos requi- sitos até que um modelo possa ser gerado. O usuário pode visualizar as informações em vários níveis de abstração, corrigir, completar ou aperfeiçoar os requisitos originais. Para o processamento do documento foram utilizados um tokenizer, um analisador mor- fossintático e o analisador sintático Cico. O tokenizer divide o texto em sentenças, para que possam ser analisadas e para que sejam identificadas palavras, morfemas, pontuação e outras possíveis marcas textuais. O analisador morfossintático utiliza um etiquetador baseado em análises probabilísticas de um corpus anotado [4].
A partir das ideias apresentadas em [3], vários trabalhos foram desenvolvidos, em es- pecial, o trabalho apresentado por Fernandes e Cowie [36]. Os autores construíram a ferramenta Borg baseada na implementação da ferramenta CIRCE e utilizaram o mesmo analisador sintático, Cico. A ferramenta Borg processa um documento de requisitos em língua natural, gera um modelo formal do sistema e, se o modelo gerado não for satisfa- tório, os requisitos são alterados e um novo modelo é gerado. De forma similar à CIRCE, o documento de requisitos é processado pelo Cico, que produz informações sobre o com- portamento e a estrutura do sistema. Para representar adequadamente as informações, os autores utilizaram o processo algébrico denominado Circal (CIRcuitCALculus), capaz
de representar conceitos estruturais e de comportamento do sistema modelado [71]. Com estas informações, os geradores de modelos implementados pela Borg podem identificar as classes de requisitos por meio de árvores sintáticas e gerar modelos intermediários, que podem ser usados em estágios posteriores. A partir destes modelos são construídos modelos abstratos, que são processados, e um modelo formal é gerado. Este modelo é analisado com o auxílio da ferramenta Nova [20], que implementa o Circal.
Além de utilizar documentos em língua natural como entrada, a ferramenta Borg também inclui um analisador sintático para entradas produzidas com a linguagem DOT, utilizada pela ferramenta Graphviz [41], que serve para a geração e visualização de mo- delos.
Em [7] é apresentada uma ferramenta para análise de documentos em língua natural e geração de diagramas UML. A ferramenta implementada conta com uma interface grá- fica, onde o usuário deve inserir os requisitos do sistema. O texto é processado por um tokenizer, que divide as sentenças do texto. Na etapa seguinte, as sentenças são processa- das por um etiquetador sintático e, em seguida, por um analisador sintático responsável pela geração de árvores sintáticas, que serão analisadas para auxiliar na identificação dos componentes principais da sentença - sujeito, verbo e objeto. A seguir são identificadas as relações entre as ações realizadas por um objeto e o conjunto de seus atributos. Um módulo baseado em regras identifica substantivos que desempenham papel de sujeito na sentença e os classifica como objetos de análise; os verbos são classificados como métodos e os adjetivos como atributos. Os substantivos que desempenham papel de objeto na sentença podem ser classificados como objetos de análise ou como atributos. A interface gráfica mostra os atributos e métodos classificados e permite que o usuário selecione aque- les que devem ser utilizados para uma determinada classe. Depois de definidas as classes, os relacionamentos e associações entre classes e objetos são identificados. As preposições, na maioria dos casos, são os termos que expressam esses relacionamentos. Com base em todas as informações extraídas, um diagrama de classes é gerado e convertido para código Java ou VB.Net.
Outro trabalho relacionado à geração de modelos para análise orientada a objetos é apresentado em [69]. O autor desenvolveu NL-OOPS, uma ferramenta CASE que faz uso da análise de requisitos em língua natural para a geração de modelos de objetos. O processo de análise pode ser dividido em duas etapas: análise e processamento do texto em língua natural. Para a etapa de análise, a NL-OOPS utiliza a ferramenta LOLITA [17], um sistema para processamento de textos em língua natural em larga escala, que conta com uma vasta rede semântica, denominada SemNet, integrada à WordNet [90]. Como a parte central do processamento é realizada pela LOLITA, a NL-OOPS utiliza os nós presentes na rede criada pela LOLITA para identificar objetos, eventos e associações entre eles. Depois de identificados os objetos, o modelo pode ser criado e visualizado por meio de uma interface gráfica desenvolvida para este fim.
Cunning e Rozenblit [23] propuseram uma solução para problemas com especificações de requisitos definidas de maneira informal. Tais especificações podem ser bastante im- precisas e podem conter inúmeras deficiências e inconsistências, características difíceis de serem identificadas em grandes conjuntos de requisitos. Os autores implementaram um algoritmo que, a partir de especificações de requisitos estruturadas, gera um conjunto de
cenários que podem ser usados para teste de sistemas orientados a transações.
Uma especificação de requisitos estruturada é composta por vários formulários de modo a cobrir diferentes aspectos. Os requisitos especificados de forma estruturada de- vem distinguir requisitos de interface e funcionais, uma vez que cada tipo é especificado e relacionado ao sistema de maneira distinta. Um modelo foi definido para que os requisitos possam ser representados de maneira adequada e possam ser processados pelo algoritmo proposto. Conjuntos de cenários são gerados e organizados em uma árvore de cenários. A partir dessa árvore de cenário são extraídos cenários individuais, onde cada nó da árvore representa um estado do sistema e os ramos da árvore são rotulados com pares de infor- mações de entrada e saída. Os autores relatam que um possível problema são as entradas com um grande conjunto de valores possíveis, que poderia levar o algoritmo a criar muitos estados potenciais para identificar apenas aqueles que podem ser alcançados. Para evitar este problema, os autores apontam que os estados derivados podem ser restringidos redu- zindo a geração de cenários para um subconjunto de entradas selecionadas de um domínio específico.
Nikora e Balcom [73] analisaram algumas abordagens para a elaboração de documen- tos de requisitos de forma mais rigorosa, em especial, requisitos para missões espaciais. Eles notaram que um grande problema na elicitação de requisitos para elaboração dos documentos é a definição de requisitos temporais, e que a identificação correta durante a fase de especificação pode reduzir de maneira significativa possíveis inconsistências. O problema abordado é a análise automatizada dos documentos e sua transformação em alguma notação computacionalmente legível, especificamente, em expressões LTL (Linear Temporal Logic). Os requisitos são classificados em temporais e não temporais e então relacionados a um conjunto de expressões LTL encontradas nos documentos analisados.
Para que essa transformação fosse possível foi desenvolvido um conjunto de treina- mento, sobre o qual foram aplicadas técnicas de aprendizado de máquina. Os requisitos temporais identificados em um trabalho anterior dos autores [72], citado em [73] foram as- sociados a um dos padrões LTL definidos por Dwyer[28], citado por [73]. Para o desenvol- vimento do conjunto de treinamento foram utilizadas duas representações dos requisitos: a primeira, utilizando somente os requisitos em língua natural, e a segunda, utilizando os requisitos em língua natural acrescidos de informações extraídas por um etiquetador morfossintático. Depois de processadas, as palavras mais frequentes e irrelevantes para o processamento foram removidas dos requisitos. A lista original de palavras a serem excluídas foi modificada, e palavras que denotam eventos temporais e de ordenação foram mantidas. As informações produzidas foram adicionadas a cada palavra, e os requisitos foram formatados como uma entrada para a ferramenta de mineração de dados WEKA [76]. Foram realizados experimentos com vários subconjuntos de treinamento. Os resul- tados indicam que técnicas simples de aprendizado de máquina e de processamento de língua natural podem ser usadas para a identificação e processamento de conjuntos espe- cíficos de requisitos, o que pode reduzir drasticamente a possibilidade de erros durante a análise.
Boddu, Guo e Mukhopadhyay [12] apresentam uma ferramenta denominada RETNA (Requirements to Testing in a NAtural Way), que possibilita a análise de um documento de requisitos em língua natural, a melhoria da qualidade do texto analisado e a geração
automática de um modelo de teste executável, especificamente, de uma Máquina de Es- tados. A entrada do texto a ser analisado ocorre por meio de uma interface gráfica: o usuário pode digitar o texto ou selecionar o arquivo de texto a ser utilizado.
O texto é processado por um analisador sintático probabilístico e o resultado é um conjunto de árvores sintáticas anotadas. A complexidade do texto é medida pela quanti- dade de verbos e substantivos presentes no texto. Os substantivos e verbos extraídos são processados por um stemmer para que as palavras flexionadas possam ser identificadas. Um analisador semântico analisa os resultados para a geração da estrutura de predicados e depois combina os predicados resultantes para a obtenção de uma estrutura de represen- tação do discurso. O resultado pode ser refinado pelo usuário por meio de uma interface gráfica e, em seguida, um algoritmo, proposto em [10], citado em [12], faz a conversão das estruturas de discurso para FMONA, uma linguagem de alto nível usada para facilitar a utilização da ferramenta MONA, usada para a tradução de programas (ou fórmulas) para Máquinas Finitas de Estados. O modelo de teste executável gerado pela ferramenta é uma máquina de estados e, para evitar a explosão de estados durante a geração de casos de testes, é solicitado ao usuário que forneça apenas os requisitos críticos para a ferramenta. Deeptimanhanti e Babar [26] apresentam a ferramenta UMGAR, cujo objetivo é, a partir de um documento de requisitos, gerar modelos UML. Para isso, foram usadas várias ferramentas e técnicas de PLN, entre elas, o analisador sintático de Stanford (Stanford Parser)[85] e a WordNet 2.1 [90]. Além das ferramentas de processamento linguístico, que auxiliam na normalização das sentenças para remoção de ambiguidades, um módulo é responsável pela geração dos seguintes modelos: diagrama de casos de uso, diagrama de classes e diagrama de colaboração. Depois de gerados os diagramas, um outro módulo permite a rastreabilidade entre os requisitos e os modelos criados [27]. Isso faz com que o usuário possa modificar relacionamentos entre requisitos, que são refletidos em todo o sistema. Outra característica importante é a possibilidade de converter os modelos gerados em arquivos XMI para que possam ser facilmente visualizados em qualquer ferramenta de modelagem.
Os trabalhos apresentados nesta seção são bastante interessantes por tratarem a ge- ração de modelos variados a partir de documentos de requisitos em língua natural. To- dos eles promovem algum tipo de tratamento do documento de requisitos original, por exemplo, usando especificação de requisitos estruturada, de modo a tornar a extração de informações mais fácil.
Um documento de padronização é utilizado por diversas instituições ao redor do mundo e, por isso, seu conteúdo não deve ser modificado. Assim, não é indicado que seja aplicado qualquer tratamento para melhoria da qualidade do documento, que promova a reescrita ou alterações no texto de um documento desse tipo. O trabalho aqui proposto utiliza como entrada um documento de padronização e difere dos trabalhos apresentados por não aplicar qualquer tipo de tratamento para melhoria da qualidade. Apesar disso, a análise desses trabalhos foi valiosa por permitir a identificação de diferentes processos de transformação das informações em modelos, como cenários ou Máquinas Finitas de Estados.