3. TEORETISK RAMMEVERK
3.5 F EMINISTISK KRITIKK MOT KONVENSJONELLE PROFESJONSTEORIER
Antes de dar início ao processo de validação do algoritmo proposto, deve-se ter um ambiente experimental propício que simule normalmente uma etapa de seleção de componentes automatizada por algoritmos genéticos. A priori, o término da etapa do Projeto Arquitetural fornece um diagrama que possui uma arquitetura formada por especificações de componentes, visto que, como a arquitetura será a base de referência para a criação do sistema em desenvolvimento, é necessário que ela seja convertida em uma estrutura de dados a qual seja passível de computação, para então automatizar o processo de seleção de componentes.
A estrutura de dados que melhor representa a arquitetura de software do trabalho proposto é um grafo, onde os vértices podem representar componentes de software e as arestas correspondem a conexões via interfaces. Esse grafo é direcionado, porque esse direcionamento representa uma conexão com uma interface provida e requerida. Quando um vértice A aponta para outro vértice B isso representa que existe uma conexão entre o componente A e o componente B, com o primeiro possuindo a interface requerida e o último a interface provida. Há também um vértice nulo, da maneira que ele possibilita representar as interfaces providas e requeridas que não realizam conexões. Por exemplo, se um componente apresentar uma interface requerida que não se conecta a nenhum outro componente, esse mesmo componente apontará para o vértice nulo visando representar uma interface requerida sem conexão. E se o vértice nulo apontar para algum componente, o mesmo receberá a representação de uma interface provida que não efetua conexão.
Cada aresta possui um identificador que é o mesmo de um artefato X-ARM, e isso tem o objetivo de mostrar que a aresta representa uma interface de software. Assim que o arquiteto de software mapeia o diagrama da arquitetura num grafo, haverá somente os vértices que representam os componentes e as arestas que são as conexões. Esse mapeamento é realizado por persistir a estrutura da arquitetura em uma matriz que corresponde ao grafo. A partir daí, um leitor XML acessa todos os artefatos que descrevem as interfaces representadas nas arestas e recupera as informações e as convertem para dados, então todas as informações desde as operações até a arquitetura como um todo estão disponíveis para serem passíveis de operações computacionais. Portanto, essa operação descrita logo acima obteve a representação da arquitetura em um grafo.
Agora que o mapeamento do diagrama para dados computacionais foi realizado, o próximo passo é também realizar o mapeamento dos componentes candidatos para dados e
CAPÍTULO 4 – AVALIAÇÃO EXPERIMENTAL 78
posteriormente reformulá-los para serem processados pelo algoritmo proposto. O arquiteto de software fornece descrições das especificações de componentes da arquitetura para uma ferramenta, e a mesma gera um conjunto de consultas com o propósito de buscar candidatos similares. Essas consultas podem ser processadas no Serviço do Repositório, para então serem recuperados os artefatos similares dos elementos da arquitetura (componentes e suas interfaces), e um leitor de arquivos XML irá mapear os artefatos (descritos no modelo X- ARM) em dados que representarão os componentes candidatos.
Para a elaboração do ambiente experimental não será necessário popular o repositório do framework ComponentForge com artefatos alusivos aos componentes candidatos para então executar consultas buscando tais artefatos candidatos (similares). O processo de busca dos artefatos similares não impacta na execução do algoritmo proposto. Portanto, abstrai-se desse passo e são gerados, via ferramenta, artefatos variantes das especificações de componentes da arquitetura (artefatos similares); e são considerados como se fossem provenientes da execução de busca no repositório. Apenas a arquitetura e os componentes candidatos são necessários para testar a meta-heurística.
Os componentes candidatos são gerados da seguinte forma: pega-se cada especificação de componente como referência e são criadas variações dela a nível de operações e interfaces. Exemplificando, um componente candidato faz uma cópia da especificação que ele tem como referência, posteriormente esse candidato terá modificações em cada interface (serão adicionadas novas operações e/ou retirada algumas existentes, porém a interface sempre terá pelo menos uma operação que corresponde a sua interface de referência), e também o candidato receberá novas interfaces e/ou perderá algumas interfaces. Esse processo cria um candidato referente a alguma especificação de componente da arquitetura, então ele é repetido n vezes, onde n é o número de componentes candidatos que se queira criar.
A Figura 25 ilustra como os componentes candidatos são gerados a partir de uma especificação pertencente à arquitetura do sistema em construção. O candidato Componente A
dessa figura, possui uma interface provida a mais, e duas delas são similares às interfaces da especificação, contudo, a interface requerida foi idêntica. Já o candidato Componente B apresentou uma interface a menos, onde todas as interfaces desse candidato são similares as suas correspondentes na especificação. E assim por diante vão sendo geradas variações aleatórias da especificação até se obter um número n de candidatos.
No momento que todos os candidatos são criados, chega o momento do AG proposto ser iniciado. O primeiro passo do algoritmo é a criação da população, então os componentes candidatos são reformulados para os genes, que formarão cromossomos (soluções candidatas). O AG irá iterar suas etapas até que a condição de parada seja satisfeita. Enfim, nessa seção foi descrito como foi realizada a criação da massa de dados para os experimentos cuja meta é validar o trabalho proposto.
CAPÍTULO 4 – AVALIAÇÃO EXPERIMENTAL 80
Para este experimento, as informações de reúso foram geradas aleatoriamente para os componentes candidatos, pois elas não dependem somente de tais candidatos para serem geradas, mas da relação deles com o repositório que estão incluídos. Como o ambiente experimental não é dependente de algum repositório específico, atribui-se valores randômicos no intervalo [0,1] (faixa de valores possíveis para a métrica de informações de reúso) para os candidatos.