• Nenhum resultado encontrado

Atividade “Identificar declarações do domínio”

CAPÍTULO 4 – ABORDAGEM PARA CRIAÇÃO DE LINGUAGENS ESPECÍFICAS

4.2 Atividade “Identificar declarações do domínio”

Figura 4.3: Ilustração da estruturação em árvore dos requisitos

4.2 Atividade “Identificar declarações do domínio”

Essa é a principal atividade do processo pois determina os elementos fundamentais da lin- guagem, sua abrangência, flexibilidade, entre outras características. Nela, o engenheiro de do- mínio extrai e classifica declarações do domínio a partir dos requisitos da aplicação de entrada. A atividade é dividida em duas subatividades que são descritas abaixo.

4.2.1 Subatividade “Extrair declarações do domínio a partir dos requisi-

tos”

Constitui-se da estruturação dos requisitos da aplicação em formato de árvore, como pode ser visto na Figura 4.3. O primeiro nó representa o principal objetivo da aplicação. O segundo nível é chamado de “O que fazer” e decompõe o primeiro nó em outros nós que descrevem as funções que o robô deve executar para atingir o objetivo. Ainda, esses nós podem ter nós filhos que sejam mais descritivos e que continuam pertencendo ao mesmo nível. Pode-se pensar em nós filhos como descrições com menores níveis de abstração que seus nós pais. Esses nós devem descrever funções que não possuam referências a detalhes de baixo nível.

O terceiro nível é chamado de “Como fazer” e contém nós que descrevem como executar as funções descritas pelos nós do nível superior. A descrição dessas funções devem estar relaci- onadas à forma como os componentes do robô (por exemplo, sensores, atuadores, dispositivos, etc.) são utilizados para executá-las. Deve-se tomar cuidado para que os nós do terceiro nível não contenham detalhes específicos de programação, mas apenas declarações que relacionem os componentes. Por exemplo, considere que um nó do segundo nível tenha a descrição “andar seguindo paredes”; ligado a esse pode-se ter três nós no terceiro nível cujas descrições sejam “acionar motores de locomoção para frente”, “usar sensor ultrassônico para medir distância à parede” e “alinhar com o algoritmo PID”. O engenheiro de domínio pode convenientemente

4.2 Atividade “Identificar declarações do domínio” 49

omitir dos nós detalhes considerados óbvios; por exemplo, na descrição do primeiro nó do ter- ceiro nível é possível omitir os motores, deixando apenas “andar para frente” (pois pressupõe o uso de motores de locomoção).

Com a árvore criada, o engenheiro de domínio deve escolher dentre os nós do segundo e terceiro níveis quais declarações serão consideradas para construir a linguagem desejada. Se os nós folhas forem escolhidos, a linguagem resultante será mais flexível porém mais verbosa e menos relacionada com o domínio. Porém, se apenas os nós do segundo nível forem seleci- onados, a linguagem resultante será mais relacionada com o domínio e será mais expressiva, no entanto não terá muita flexibilidade e será mais limitada. Também é possível selecionar nós de ambos os níveis. De modo geral, quanto mais abstrato for o nó, menos flexível serão os elementos da linguagem relacionados a ele.

4.2.2 Subatividade “Classificar as declarações do domínio em interesses”

As declarações do domínio selecionadas na subatividade anterior devem ser classificadas em interesses. Esses interesses são característicos do domínio da robótica móvel e elicitar os mais adequados pode depender da experiência com desenvolvimento de robôs móveis. Alguns interesses são elementares, como movimentação, detecção, comunicação, e assim por diante; porém, aplicações maiores e complexas podem resultar em interesses mais específicos de do- mínio.

A intenção dessa classificação é que cada interesse agrupe declarações que são fortemente relacionadas. Isso permite que os elementos da linguagem resultante sejam coesos e bem defi- nidos. O resultado dessa atividade é o artefato Tabela de Declarações, a qual contém as decla- rações do domínio devidamente agrupadas por interesses.

Para o desenvolvimento da DSL 1, durante essa atividade foram estruturados os requisitos da aplicação feita na atividade anterior como ilustrado na Figura 4.4. Dividiu-se o objetivo principal “Monitorar portas de um corredor” em três nós: “Andar pelo corredor”, “Detectar portas abertas”, e “Emitir som caso a porta esteja aberta”. (Nota: poderia haver uma aplicação em que seus nós fossem bem diferentes desses mesmo que o objetivo principal fosse o mesmo.) Como definido no processo, o nível “Como fazer” tem de estar relacionado aos sensores, atuadores e outros possíveis dispositivos da plataforma robótica alvo. Portanto, foi definido que, para o robô andar pelo corredor, deve acionar seus motores de locomoção para frente, usar o sensor de toque para verificar o fim do corredor e dar meia-volta. Para detectar as portas abertas, ele deve usar um sensor ultrassônico para medir a distância entre o robô e as paredes e portas.

4.2 Atividade “Identificar declarações do domínio” 50

Figura 4.4: Requisitos da aplicação estruturados como árvore

Interesse Declarações

Movimentação Andar para frente

Dar meia-volta se atingir fim do corredor Detecção

Usar sensor de toque para detectar fim do corredor Usar sensor ultrassônico para medir distâncias

Comparar dados do sensor com dados sobre o corredor e as portas

Comunicação Emitir som caso a porta esteja aberta

Tabela 4.1: Relação dos interesses da DSL 1 e suas declarações

O robô deve possuir informações sobre o corredor e suas portas para poder confrontá-las com os dados obtidos pelo sensor. E, por fim, um alerta sonoro é emitido caso uma porta aberta seja identificada, e esse alerta é apenas uma sequência de tons.

Depois da extração das declarações, é necessário escolher quais delas farão parte da cons- trução da DSL. É possível, como dito anteriormente, selecionar declarações de diferentes níveis. As declarações selecionadas são as que possuem contornos tracejados na Figura 4.4. Como o objetivo era construir uma DSL flexível, todos os nós folhas foram escolhidos, exceto o nó “To- car sequência de tons”–ao invés, foi selecionado seu nó superior, para exemplificar o resultado da escolha desse tipo de nó.

Para finalizar essa atividade, é preciso categorizar as declarações escolhidas em interesses. Na Tabela 4.1 estão relacionados os interesses selecionados e suas respectivas declarações.

Documentos relacionados