• Nenhum resultado encontrado

5.8 Desenvolvimento de um Wizard Gen´erico

5.8.2 Adaptac¸˜ao de um Wizard gen´erico

O passo 3b.2 cuida da adaptac¸˜ao do Wizard constru´ıdo no passo 3b.1, de acordo com cada par

espec´ıfico “framework e linguagem de padr˜oes”. As condic¸˜oes m´ınimas necess´arias para fazer tal adaptac¸˜ao s˜ao: existˆencia de uma linguagem de padr˜oes composta de padr˜oes de an´alise para os quais existe um diagrama de classes ilustrando a soluc¸˜ao e seus variantes; um framework que implementa os padr˜oes da linguagem de padr˜oes; e a documentac¸˜ao do framework, que mapeia os padr˜oes da linguagem de padr˜oes para as classes do framework.

Diversas atividades, descritas a seguir, s˜ao necess´arias para adaptar o Wizard ao framework

espec´ıfico, conforme ilustrado na Figura 8.13.

Passo 3b.2.1. Registrar informac¸ ˜oes sobre a linguagem de padr ˜oes

Usando a estrutura fornecida pelo Wizard, deve-se inserir todas as meta-informac¸˜oes sobre a lin-

guagem de padr˜oes espec´ıfica, tais como: • nome de todos os padr˜oes;

• nome de todos os variantes de cada um dos padr˜oes;

• classes participantes de todos os variantes de cada um dos padr˜oes, bem como seus atributos (obrigat´orios e opcionais);

5.8 Desenvolvimento de umWizard Gen´erico 118 padr ok Linguagem de programação Passo3b2.5 Implementar funções específicas pertinentes a linguagem de ões e o framewr Wizard Específico Linguagem de programação Conhecimento sobre a lógica de cada método hook

Linguagem de programação SGBD Métodos geradores de código Passo 3b2.4 Métodos geradores de scripts Conhecimento sobre a estrutura da base de dados Implementar a produção de scripts para criação da base de dados Criar métodos do gerador de código para

cada método hook do framework Passo 3b2.3 Passo 3b2.2 Passo 3b2.1 Linguagem de Padrões Específica Registrar informações sobre a linguagem de padrões Métodos geradores de código Meta-dados sobre o mapeamento Wizard Genérico "Cookbook" SGBD Meta-dados sobre a linguagem de padrões Registrar informações sobre o mapeamento entre linguagem de padrões e o framework "Cookbook" Framework específico

Figura 5.24: Processo para adaptac¸˜ao do Wizard para um framework e linguagem de padr˜oes es-

pec´ıficos

• relacionamento entre os padr˜oes (ordem na qual podem ser aplicados e restric¸˜oes de aplica- c¸˜ao); e

• operac¸˜oes de entrada e sa´ıda que podem ser inclu´ıdas nos menus do sistema.

Conforme mencionado na sec¸˜ao 5.8.1, para cadastrar essas informac¸˜oes na base de dados pode- se utilizar o pr´oprio sistema gerenciador da base de dados, ou um sistema de suporte a essa ati- vidade, caso tenha sido implementado durante a construc¸˜ao doWizard gen´erico. Exemplos desse

passo s˜ao mostrados na sec¸˜ao 5.5.3.

Passo 3b.2.2. Registrar informac¸ ˜oes sobre o mapeamento entre a linguagem de padr ˜oes e o framework espec´ıfico

Para cada padr˜ao/variante da linguagem de padr˜oes, deve-se mapear suas classes participantes `as classes do framework que as implementam. A principal fonte de informac¸˜ao para realizac¸˜ao dessa

5.8 Desenvolvimento de umWizard Gen´erico 119 atividade ´e o manual de instanciac¸˜ao do framework, oucookbook, produzido durante a fase de do-

cumentac¸˜ao do framework (ver sec¸˜ao 4.2.3). Tendo sido constru´ıdo usando o processo proposto, esse manual cont´em tabelas que mapeiam os padr˜oes, em especial as classes participantes de seus variantes, `as classes do framework que as implementam. Por conseguinte, pode-se cadastrar esse mapeamento por meio de tabelas de uma base de dados, conforme proposto na sec¸˜ao 5.8.1. Para tal, as tabelas do cookbook devem ser armazenadas nas respectivas tabelas do Wizard. Se ne-

cess´ario, pode-se recorrer ao c´odigo fonte do framework para esclarecer poss´ıveis d´uvidas quanto ao mapeamento. Um exemplo completo sobre esse passo pode ser encontrado na sec¸˜ao 5.5.3.

Passo 3b.2.3. Criar os m ´etodos do gerador de c ´odigo para cada m ´etodo-gancho do framework

Uma das tabelas do Wizard cont´em os m´etodos-gancho pertencentes a classes abstratas do fra-

mework, e que precisam ser sobrepostos. Para utilizar os mecanismos propostos na sec¸˜ao 5.8.1 para gerac¸˜ao autom´atica do c´odigo desses m´etodos, deve-se implementar m´etodos especiais no

Wizard que criem o corpo desses m´etodos e os incluam na classe apropriada da aplicac¸˜ao sendo

instanciada.

Deve-se ressaltar que essa atividade ´e opcional, visto que nem sempre oWizard deve gerar o

c´odigo mas, dependendo do caso, pode apenas fornecer uma lista dos m´etodos a serem sobrepostos. Nesse caso, a implementac¸˜ao ´e de responsabilidade do engenheiro de aplicac¸˜oes.

Para criar um m´etodo-gancho, deve-se montar o c´odigo desejado para o m´etodo, por exemplo por meio de um vari´avel texto (string) contendo os comandos que fazem parte do corpo do m´etodo,

e depois usar as caracter´ısticas de reflex˜ao da linguagem de programac¸˜ao para incluir esse m´etodo na classe apropriada. Existem pelo menos duas formas de fazer isso: pode-se criar m´etodos es- pec´ıficos no gerador de c´odigo para criar o corpo de cada m´etodo-gancho e depois compilar e anexar esse c´odigo `a classe, ou armazenar em uma tabela na base de dados do Wizard, o c´odigo

que deve ser executado para gerar o corpo do m´etodo, e ent˜ao percorrer essa tabela sistematica- mente para gerar todos os m´etodos-gancho. Exemplos concretos da primeira forma sugerida para esse procedimento s˜ao fornecidos na sec¸˜ao 5.5.3.

Passo 3b.2.4. Implementar a gerac¸ ˜ao de scripts para criac¸ ˜ao autom ´atica da base de dados

Dependendo do framework, pode ser necess´ario criar uma base de dados para persistir os objetos, seja ela orientada a objetos ou relacional. ´E desej´avel que esta tarefa seja automatizada pelo

Wizard, por ser uma tarefa trabalhosa e pass´ıvel de erros. No caso de base de dados relacional,

5.9 Considerac¸˜oes Finais 120 para criar a base de dados e suas tabelas, com a definic¸˜ao das colunas de cada tabela. Essescript

pode ser executado posteriormente pelo desenvolvedor de aplicac¸˜oes, ou pode-se fornecer um bot˜ao ou opc¸˜ao do menu que o execute.

´

E necess´ario observar que o mapeamento da linguagem de padr˜oes para o framework, presente no cookbook, pode fornecer diretrizes sobre quais tabelas devem ser criadas e sobre a estrutura

de tais tabelas (colunas, ´ındices, chaves, etc.). Assim, a criac¸˜ao dos scripts pode ser feita com base em tabelas que reflitam o mapeamento da linguagem de padr˜oes para as tabelas utilizadas na persistˆencia dos objetos. Um exemplo ´e fornecido na sec¸˜ao 5.5.3 ilustrando a gerac¸˜ao de scripts para criac¸˜ao de tabelas em base de dados MySQL.

Passo 3b.2.5. Implementar func¸ ˜oes espec´ıficas pertinentes `a linguagem de padr ˜oes e ao framework

Esta atividade ´e totalmente dependente de cada caso em particular e, portanto, n˜ao pode ser aqui generalizada. Na sec¸˜ao 5.5 pode-se encontrar algumas situac¸˜oes que ocorreram especificamente no GREN-Wizard, exemplificando a necessidade de tratar desses casos individualmente.

5.9

Considerac¸ ˜oes Finais

Neste Cap´ıtulo foram propostos processos para construc¸˜ao e instanciac¸˜ao de umWizard para faci-

litar a instanciac¸˜ao de frameworks usando linguagens de padr˜oes. Como frameworks constru´ıdos usando a abordagem proposta nesta tese possuem uma arquitetura influenciada pela linguagem de padr˜oes, ent˜ao a criac¸˜ao da ferramenta para automatizar sua instanciac¸˜ao fica facilitada. Ao inv´es de saber os detalhes de implementac¸˜ao do framework, usu´arios do Wizard precisam apenas saber

usar a linguagem de padr˜oes.

O Wizard resultante guia o usu´ario da linguagem de padr˜oes, garantindo que os caminhos

certos foram seguidos e fazendo as devidas consistˆencias para assegurar que os padr˜oes aplicados s˜ao coerentes entre si. Portanto, o usu´ario do framework tem condic¸˜oes de saber exatamente onde comec¸ar e onde terminar a instanciac¸˜ao. Al´em do mais, o enfoque da instanciac¸˜ao ´e na funcionalidade exigida, com uma noc¸˜ao clara de quais requisitos s˜ao atendidos por cada padr˜ao.

Wizards desenvolvidos com a abordagem proposta podem ser facilmente reutilizados por outros

pares “linguagem de padr˜oes e framework”. A estrutura gen´erica proposta pode ser considerada tanto como um framework quanto como um modelo de objetos adaptativo. Para adapt´a-lo para outros casos, basta preencher a base de dados com informac¸˜oes sobre a linguagem de padr˜oes espec´ıfica e sobre o mapeamento entre a linguagem de padr˜oes e o framework, e implementar as partes do gerador de c´odigo respons´aveis pela gerac¸˜ao dos m´etodos-gancho. O restante da funcionalidade independe da linguagem de padr˜oes e do framework.

5.9 Considerac¸˜oes Finais 121 No pr´oximo cap´ıtulo ´e feita a avaliac¸˜ao do processo geral proposto, por meio de experimentos e relatos de uso dos diversos produtos e processos obtidos durante a pesquisa.

C

AP

´

ITULO

6

Avaliac¸ ˜ao da Proposta

6.1

Considerac¸ ˜oes Iniciais

Neste Cap´ıtulo, avalia-se a abordagem proposta, por meio de experimentos e relatos de uso dos diversos produtos e processos obtidos ao longo do trabalho. Os experimentos est˜ao documentados usando a estrutura proposta por Wholin et al. (2000): definic¸˜ao do experimento, planejamento do experimento, operac¸˜ao do experimento e an´alise e interpretac¸˜ao dos resultados. Os diversos usos dos processos e produtos desta tese s˜ao relatados de maneira informal, com enfoque maior nos resultados obtidos e lic¸˜oes aprendidas.

Deve-se ressaltar que n˜ao foi feita uma avaliac¸˜ao geral de todo o processo, tendo sido a avaliac¸˜ao executada por partes. A realizac¸˜ao de uma avaliac¸˜ao geral demandaria muito tempo (a autora estima que por volta de um a dois anos), o que ultrapassaria os limites de tempo estabe- lecidos para a pesquisa. No entanto, acredita-se que essa avaliac¸˜ao geral poder´a ser feita de modo a aperfeic¸oar os processos obtidos. Foi realizada a an´alise estat´ıstica para os dois primeiros expe- rimentos executados, que possuem um n´umero suficiente de conjuntos de dados, enquanto para os dois ´ultimos foi feita apenas a an´alise informal e discuss˜ao dos resultados.

O Cap´ıtulo est´a organizado da seguinte forma: na sec¸˜ao 6.2 ´e avaliado o processo de construc¸˜ao de linguagens de padr˜oes para um dom´ınio espec´ıfico. Na sec¸˜ao 6.3 avalia-se a utilidade de uma linguagem de padr˜oes na modelagem de sistemas. Na sec¸˜ao 6.4 avaliam-se as vantagens de uma linguagem de padr˜oes na construc¸˜ao de um framework correspondente. Na sec¸˜ao 6.5 avalia-se a

6.2 Avaliac¸˜ao do processo de construc¸˜ao de linguagens de padr˜oes 123