• Nenhum resultado encontrado

5 CALV3 – UMA DSL VISUAL PARA O DOMÍNIO DE SEGURANÇA DE SISTEMAS CORPORATIVOS

5.2. CONCEPÇÃO DA DSL VISUAL CAL

5.2.4. Sintaxe da CALV3 e Editor visual

A sintaxe de uma linguagem define como seus elementos aparecem de forma concreta e utilizável. No caso de linguagens visuais, a sintaxe não é puramente textual, ela combina gráficos, texto e convenções pelas quais os usuários podem interagir com os gráficos e o texto através da ferramenta. A linguagem de meta-modelagem da DSL Tools também permite que os conceitos do meta-modelo sejam conectados a classes que representarão os elementos da sintaxe visual. Estas classes possuem propriedades que estão relacionadas à aparência na qual os conceitos serão exibidos no diagrama, como por exemplo, forma (retangular, oval, circular), cor, decoradores (identificações textuais ou gráficas contidas nos elementos), entre outros.

A Figura 17 mostra a conexão da classe Perfil com a classe que representa sua sintaxe visual RoleShape. As classes para sintaxe visual ficam em uma “raia” própria, chamada

Swimlane dos elementos do diagrama.

Cada classe do meta-modelo que tiver alguma representação visual no diagrama será conectada a uma classe de sintaxe visual, incluindo os relacionamentos, que também são representados internamente por classes do meta-modelo. Os relacionamentos são mapeados para classes de sintaxe visual do tipo Connector, que representarão as linhas de conexão entre os conceitos. Na Figura 18 temos o exemplo do mapeamento do relacionamento Hierarquia (entre objetos) para sua classe de sintaxe visual ObjetoHierarquiaConnector. Observa-se que esta classe herda de ColorConnector, que possui uma propriedade Color. Isto significa que todas as classes de conexão que herdem da mesma permitirão ao usuário modificar a cor da linha no diagrama.

Figura 18 - Mapeamento entre a conexão hierarquia e sua classe de sintaxe visual Os elementos mais representativos da sintaxe visual da CALV3 são apresentados na tabela 2.

Tabela 2 – Elementos da sintaxe visual da CALV3

Nome Representação Gráfica Descrição

Perfil O perfil é representado por um

retângulo de bordas arredondadas, com a cor escolhida pelo usuário. Contém três decoradores: o código do perfil (acima), o nome do perfil

(abaixo) e um decorador gráfico à esquerda: uma imagem simbolizando perfil (uma pasta).

Usuário O usuário é representado por um

círculo. Contem dois decoradores: O código do usuário, um alfanumérico de 4 posições, e um decorador gráfico representando um usuário (abaixo).

Grupo de Usuários Um grupo de usuários é

representado por um retângulo. Contém 3 decoradores: o código do grupo (acima), o nome do grupo (abaixo) e um decorador gráfico representando um grupo de usuários (canto superior esquerdo)

Objeto Um objeto é representado por

um retângulo, dentro do qual as ações serão incluídas. Possui 3 decoradores: o nome do objeto (topo), um decorador gráfico indicando o tipo do objeto ( menu, Tela) e um decorador para expandir ou colapsar o interior do objeto, no canto superior esquerdo.

Ação A ação é representada por um círculo e é inserida dentro do objeto. Possui um decorador com o nome da ação.

Associação A associação é a representação

da ligação entre Usuário e Perfil, Perfil e Grupo, ou Grupo e Usuário. Apresentada com uma seta.

Hierarquia Esta ligação representa a

conexão hierárquica entre objetos (menus, telas). Visualmente apresentada por uma reta com um triângulo na ponta.

Permissão Representa a ligação de um

perfil a objetos ou ações dentro do objeto. Visualmente apresentada como uma linha tracejada com um losango em cada ponta.

O desenvolvedor ou analista de segurança pode adicionar Usuários, Perfis, Grupos etc. a um diagrama CALV3 através de operações de arrastar e soltar estes elementos de uma barra de ferramentas (toolbox), apresentada na Figura 19, para o diagrama. Ao passar o mouse sobre cada item da barra é exibida um dica visual sobre o que ele representa ou a quem ele poderá ser conectado.

Figura 19 - Barra de ferramentas da CALV3

As propriedades de cada classe do meta-modelo são apresentadas como propriedades de cada elemento de sintaxe visual e podem ser modificadas pelo analista de segurança através da janela de propriedades da própria IDE. Esta janela é sensível ao respectivo elemento em foco, e exibe as propriedades de acordo com o tipo especificado. Na Figura 20 temos o exemplo da configuração das propriedades de um elemento objeto.

Figura 20 - Janela de propriedades para configuração dos elementos de sintaxe visual

A configuração das propriedades através desta janela é familiar aos desenvolvedores, visto que é utilizada nas tarefas normais de programação como, por exemplo, elaboração de interfaces gráficas de aplicativos. Dependendo do tipo da propriedade, podem ser disponibilizados valores específicos, como é o caso do Tipo do objeto, cuja enumeração possui 3 valores: Tela, Menu ou Botão, ou da propriedade Cor que abrirá uma interface visual para escolha das cores. As alterações efetuadas nas propriedades são automaticamente refletidas no elemento do diagrama, por exemplo, ao modificar o nome do objeto, seu decorador será atualizado. Outro exemplo é alterar o tipo do objeto de Menu para Tela, que modificará automaticamente seu decorador gráfico para o respectivo ícone.

Além disso, é possível visualizar-se os elementos do diagrama CALV3 corrente de uma forma mais organizada e hierarquizada, através do uso da ferramenta chamada CAV3

Visual Language Explorer (Figura 21). É possível adicionar ou remover itens desta janela,

bem como selecionar um de seus elementos e alterar suas propriedades pela janela de propriedades

Figura 21 - Janela de navegação da CALV3 5.2.5. Validadores semânticos da CALV3

Além de ajudar o analista de segurança com aspectos de edição visual, a experiência de modelagem com a CALV3 também garante que a semântica da DSL seja respeitada pelo modelador. Regras semânticas podem ser implementadas como Hard constraints, por

exemplo, as cardinalidades entre os conceitos, ou soft constraints, regras de negócio que garantem a integridade do modelo gerado no contexto do CA V3. Este último tipo de regra é feito através de validadores semânticos, que são associados a conceitos do domínio e geram como saída itens na janela de erros da própria IDE, como podemos ver na Figura 22. Dar um duplo clique em um erro da lista, automaticamente faz a IDE colocar o foco no elemento do modelo que é a fonte do erro.

No caso da DSL Tools, os validadores semânticos podem ser criados

programaticamente. Para cada conceito do domínio é gerada uma classe parcial no C#, sendo assim, para adicionamos os validadores, implementamos um novo código em uma classe parcial complementar que checa a regra de negócio e loga o erro, conforme exemplo da Figura 23. Uma característica da linguagem C# chamada attribute¸, semelhante às anotações da linguagem Java, é utilizada para especificar quando os validadores devem executar: após a abertura de um modelo CALV3, ao salvar o arquivo ou explicitamente, através de um menu de contexto.

A seguir temos uma série de regras de negócio da CALV3 que foram implementadas através do mecanismo de validação semântica:

• O código do usuário deve ser informado;

• Código, nome e descrição do Perfil devem ser informados;

• Se um perfil for associado a um objeto, todas as ações do objeto serão associadas ao perfil, portanto associar o mesmo perfil a uma ação deste objeto é redundante;

• Código e nome do Grupo devem ser informados;

• Código, nome e tipo do Objeto devem ser informados;

• O código de cada Perfil e Grupo e o nome dos Objetos devem ser únicos;

• Um objeto não pode ser filho de outro objeto que esteja abaixo dele em sua hierarquia (evitando referências circulares entre os objetos hierárquicos). Figura 23 - Implementação de um validador semântico para a classe Grupo

A Figura 24 apresenta todas as características apresentadas até o momento e dão uma visão geral da experiência de modelagem com a CALV3, integrada ao Visual Studio 2010.

Documentos relacionados