• Nenhum resultado encontrado

tem em diversos artigos (Aarsten et al., 2000; Brugali e Menga, 1999; Brugali et al., 1997, 2000) e em uma tese de doutorado(Brugali, 1998), n˜ao deixam claro como o framework foi implementado a partir da linguagem de padr˜oes e como a linguagem de padr˜oes auxilia na instanciac¸˜ao do fra- mework. ´E dito que ela guiou o processo de construc¸˜ao, mas n˜ao foi documentado como isso foi feito.

2.6

Abordagens para Construc¸ ˜ao de frameworks

A construc¸˜ao de frameworks vem sendo alvo de pesquisa nos ´ultimos anos, tendo sido propostas diversas abordagens, entre as quais destacam-se a de Pree (1999), a de Schmid (1997, 1999), a de Froehlich et al. (1997), a de Roberts e Johnson (1998) e a de Bosch et al. (1999). Pree (1999) prop˜oe um processo para construc¸˜ao de frameworks no qual inicia-se pela definic¸˜ao de um modelo de objetos de uma aplicac¸˜ao espec´ıfica, que ´e refinado por meio de um ciclo de construc¸˜ao repetido sucessivamente. Esse ciclo inclui diversos passos: inicialmente identificam-se os pontos vari´aveis do framework, que s˜ao documentados por meio de cart˜oes de pontos vari´aveis (em inglˆes,hot spot cards). Os pontos vari´aveis s˜ao ent˜ao projetados e implementados e o framework ´e testado para

garantir que satisfac¸a aos requisitos do dom´ınio. Novos pontos vari´aveis podem ser encontrados neste passo e o ciclo pode se repetir. No fim de cada iterac¸˜ao, o framework ´e avaliado para de- terminar se pode ser liberado para uso ou se deve passar por outro ciclo de refinamento. Esta abordagem sistematiza a construc¸˜ao do framework, mas n˜ao define o processo de instanciac¸˜ao por meio do qual as aplicac¸˜oes concretas s˜ao obtidas.

Outra t´ecnica para construc¸˜ao de frameworks a partir de um modelo espec´ıfico ´e a proposta por Schmid (1997, 1999). Ele sugere que o framework seja desenvolvido por generalizac¸˜ao sistem´atica com base em um modelo de classes de uma aplicac¸˜ao fixa. Inicialmente faz-se uma an´alise de alto n´ıvel para determinar os pontos vari´aveis e estabelecer os principais aspectos do sistema que precisam ter flexibilidade. A seguir, cada ponto vari´avel ´e analisado em detalhes, produzindo-se sua especificac¸˜ao, que passar´a ainda pelo projeto de alto n´ıvel, gerando v´arios sub-sistemas de pontos vari´aveis. No ´ultimo passo, deve-se transformar o modelo de classes da aplicac¸˜ao fixa no modelo de classes do framework, por meio da substituic¸˜ao de grupos de classes do modelo original pelos sub-sistemas de pontos vari´aveis correspondentes. Esta abordagem tamb´em n˜ao define o processo de instanciac¸˜ao do framework resultante.

Bosch et al. (1999) apresenta um modelo para desenvolvimento de frameworks, composto de seis fases. A primeira trata da an´alise do dom´ınio, que ´e executada para descrever o dom´ınio coberto pelo framework e para captar seus principais conceitos e requisitos, resultando em um modelo de an´alise do dom´ınio. Na segunda fase, cria-se o projeto arquitetural do framework. Na

2.6 Abordagens para Construc¸˜ao de frameworks 30 terceira fase, refina-se esse projeto, que ´e implementado na quarta fase, utilizando uma linguagem de programac¸˜ao espec´ıfica. Na quinta fase, o framework ´e testado para avaliar tanto sua funciona- lidade quanto sua usabilidade. Finalmente, na sexta fase, o framework ´e documentado por meio de um guia do usu´ario e da documentac¸˜ao do seu projeto. Nota-se nessa abordagem uma preocupac¸˜ao maior (em relac¸˜ao `as abordagens de Pree e de Schmid) com a usabilidade do framework, visto que a fase de teste explicita a avaliac¸˜ao da facilidade de uso do framework e que a fase de documenta- c¸˜ao produz um guia do usu´ario.

Uma outra abordagem para tentar resolver o problema de instanciac¸˜ao de frameworks ´e a de Froehlich e outros (Froehlich et al., 1997), que sugere a documentac¸˜ao dos “ganchos” (em inglˆes,

hooks) do framework por meio da descric¸˜ao detalhada de seus pontos flex´ıveis, para facilitar sua

instanciac¸˜ao para aplicac¸˜oes particulares. Os ganchos s˜ao identificados pelo construtor do fra- mework, que possui alto conhecimento sobre seu projeto. Esse conhecimento ´e armazenado na descric¸˜ao dos ganchos e pode ser usado pelo desenvolvedor de aplicac¸˜oes, que ter´a condic¸˜oes de saber o que deve ser completado ou estendido no framework para adapt´a-lo de acordo com a aplicac¸˜ao espec´ıfica. Esta abordagem facilita a instanciac¸˜ao do framework, pois o desenvolvedor de aplicac¸˜oes pode se concentrar apenas nos pontos vari´aveis do dom´ınio. No entanto, se o fra- mework for muito grande, a quantidade de ganchos provavelmente tamb´em ser´a grande, tornando complexa a tarefa de identificar quais deles s˜ao pertinentes ao sistema espec´ıfico a instanciar.

Uma das abordagens preocupadas tanto com a construc¸˜ao quanto com a instanciac¸˜ao de fra- mework ´e a de Roberts e Johnson (1998), que apresenta uma linguagem de padr˜oes para o desen- volvimento de frameworks orientados a objetos, denominada “Evoluc¸˜ao de Frameworks”. Essa linguagem de padr˜oes possui nove padr˜oes que, quando aplicados, levam `a construc¸˜ao de um fra- mework caixa preta com todos os recursos necess´arios para facilitar sua instanciac¸˜ao. O primeiro padr˜ao sugere que trˆes aplicac¸˜oes concretas sejam inicialmente desenvolvidas e depois sejam ge- neralizadas, de forma gradual, para produzir um framework caixa branca. Os padr˜oes seguintes levam a diversas iterac¸˜oes sobre o framework, transformando-o de forma progressiva em um fra- mework caixa preta, por meio do uso de bibliotecas de componentes, objetos plug´aveis e objetos de granularidade menor. Os dois ´ultimos padr˜oes sugerem o desenvolvimento de um construtor visual e de ferramentas de linguagem para facilitar o uso do framework.

Em suma, as abordagens sugeridas por Pree, Schmid e Roberts e Johnson partem de modelos de aplicac¸˜oes particulares, incluindo a flexibilidade desejada posteriormente. Na abordagem de Fro- ehlich, o conhecimento sobre os pontos vari´aveis ´e proveniente do desenvolvedor do framework, que o adquiriu por meio de experiˆencia pr´atica ou an´alise de dom´ınio. Na abordagem de Bosch o modelo de an´alise do dom´ınio ´e obtido no in´ıcio do processo, o que torna os pontos vari´aveis do framework mais previs´ıveis. A abordagem proposta nesta tese segue um racioc´ınio mais pr´oximo ao de Bosch, j´a que uma linguagem de padr˜oes ´e utilizada para captar as informac¸˜oes sobre o

2.7 Abordagens para Instanciac¸˜ao de Frameworks 31