A primeira atividade para desenvolvimento de um framework ´e a identificac¸˜ao de seus pontos vari´aveis (Braga e Masiero, 2001a), isto ´e, dos pontos nos quais requer-se flexibilidade no software, j´a que eles variam de aplicac¸˜ao para aplicac¸˜ao do dom´ınio. O primeiro passo do processo proposto resultou em uma linguagem de padr˜oes para o dom´ınio. O passo 2.1 da Figura 8.3, que consiste na identificac¸˜ao dos pontos vari´aveis do framework, ´e aplicado basicamente utilizando informac¸˜oes presentes nessa linguagem de padr˜oes. Esta atividade ´e composta de cinco sub-passos, conforme ilustrado na Figura 8.4.
O primeiro sub-passo consiste da an´alise do grafo da linguagem de padr˜oes (se existir) ou, alternativamente, das sec¸˜oes “Pr´oximos Padr˜oes”. O objetivo desta an´alise ´e encontrar pontos vari´aveis decorrentes de padr˜oes opcionais da linguagem, isto ´e, padr˜oes que n˜ao s˜ao usados por
4.2 O Processo de Construc¸˜ao 62
Lista dos pontos variáveis do Framework Conhecimento sobre domínio Segunda Lista de Pontos variáveis do framework Conhecimento sobre Pontos variáveis Primeira Lista de Pontos variáveis do framework Analisar o Grafo da Linguagem de Padrões Analisar cada padrão Linguagem de Padrões Passo 2.1.1 Passo 2.1.2 Passo 2.1.3 Refinar a Lista de Pontos Variáveis Terceira Lista de Pontos variáveis do framework Decisões humanas Efetuar referência cruzada da lista de pontos variáveis Quarta Lista de Pontos variáveis do framework Terceira Lista de Pontos variáveis do framework Passo 2.1.4 Analisar requisitos não funcionais Passo 2.1.5 Conhecimento de análise do domínio
Figura 4.2: Identificac¸˜ao dos pontos vari´aveis do framework
todas as aplicac¸˜oes pertencentes ao dom´ınio, mas que podem ser opcionalmente utilizados. O grafo da linguagem de padr˜oes indica a interac¸˜ao entre os padr˜oes e a ordem na qual eles podem ser aplicados. A sec¸˜ao “Pr´oximos Padr˜oes”, comumente utilizada nos padr˜oes de uma linguagem de padr˜oes, indica os caminhos a seguir ap´os a aplicac¸˜ao (ou n˜ao) do padr˜ao atual. Portanto, esses s˜ao locais prop´ıcios para encontrar pontos vari´aveis do framework a ser constru´ıdo, uma vez que, muitas vezes, partes da funcionalidade do dom´ınio est˜ao associadas a um ou mais padr˜oes opci- onais. Assim, essa an´alise deve considerar os poss´ıveis caminhos a percorrer durante a aplicac¸˜ao da linguagem de padr˜oes. Caminhos que pulem um ou mais padr˜oes devem ser analisados, pois o framework dever´a permitir que o sistema funcione corretamente mesmo sem a aplicac¸˜ao de tais padr˜oes.
No segundo sub-passo deve ser feita a an´alise individual de cada padr˜ao, examinando-se cada uma de suas sec¸˜oes constituintes, j´a que elas podem indicar diversos pontos vari´aveis do fra- mework. Na sec¸˜ao “Variantes” ou na sec¸˜ao “Sub-padr˜oes”, poder˜ao ser encontradas soluc¸˜oes alternativas para o problema resolvido pelo padr˜ao. Al´em disso, pode haver indicac¸˜oes de aspec- tos vari´aveis que deveriam estar dispon´ıveis ao usu´ario do framework. Por exemplo, na Figura 3.5 existem diversas soluc¸˜oes alternativas para o problema de quantificac¸˜ao do recurso de neg´ocios, e tais soluc¸˜oes s˜ao mostradas por meio de diversas soluc¸˜oes ou sub-padr˜oes, tais como RECURSO INSTANCIAVEL´ e RECURSO MENSURAVEL´ .
As sec¸˜oes “Participantes” e “Colaborac¸˜oes”, presentes em padr˜oes que seguem o formato GoF (Gamma et al., 1995), tamb´em podem indicar pontos vari´aveis do framework, por exemplo, um
4.2 O Processo de Construc¸˜ao 63 participante opcional ´e uma clara indicac¸˜ao de um ponto vari´avel. A sec¸˜ao “Implementac¸˜ao” cont´em sugest˜oes de implementac¸˜oes alternativas para a soluc¸˜ao proposta, de forma que, de acordo com as restric¸˜oes impostas por cada aplicac¸˜ao em particular, diferentes implementac¸˜oes possam ser escolhidas. Outra fonte de pontos vari´aveis ´e a sec¸˜ao “Estrutura”, a qual cont´em uma representac¸˜ao diagram´atica das classes do padr˜ao e de seus relacionamentos. Uma an´alise detalhada dessa sec¸˜ao pode auxiliar na identificac¸˜ao de comportamentos alternativos, frequentemente omitidos na sec¸˜ao “Participantes”. Portanto, novos pontos vari´aveis podem ser implementados para permitir, por exemplo, novos atributos ou m´etodos das classes e algoritmos alternativos para computar o valor dos atributos.
No terceiro sub-passo refina-se a especificac¸˜ao de cada ponto vari´avel, com o intuito de suprir informac¸˜ao suficiente para que ele possa ser posteriormente projetado e implementado. Al´em do mais, identificam-se outros pontos vari´aveis n˜ao expl´ıcitos na linguagem de padr˜oes, mas que po- deriam ser inclu´ıdos para aumentar a flexibilidade do framework. Essa tarefa pode ser realizada com base no conhecimento geral do projetista do framework a respeito de implementac¸˜ao de fra- meworks. Informac¸˜oes sobre esses novos pontos vari´aveis devem ser utilizadas para melhorar a linguagem de padr˜oes, no pr´oximo ciclo de iterac¸˜ao.
No quarto sub-passo deve ser efetuada uma referˆencia cruzada entre os pontos vari´aveis iden- tificados at´e ent˜ao, o que ajuda a detectar inconsistˆencias na lista como um todo, gerando mais alguns pontos vari´aveis. Conhecimento do dom´ınio ´e imprescind´ıvel nesse ponto e, assim como no terceiro sub-passo, os novos pontos vari´aveis descobertos s˜ao utilizados na melhoria da lingua- gem de padr˜oes.
No quinto sub-passo, outros aspectos n˜ao funcionais da aplicac¸˜ao s˜ao considerados, uma vez que eles podem originar novos pontos vari´aveis, incluindo portabilidade, usabilidade, seguranc¸a e confiabilidade. Tamb´em devem ser avaliados os aspectos de projeto e implementac¸˜ao que possam trazer mais flexibilidade ao framework, aumentando seu potencial de reuso.
O resultado do passo 2.1 ´e uma lista dos pontos vari´aveis do framework, cujos elementos s˜ao compostos de um c´odigo de identificac¸˜ao do ponto vari´avel, sua descric¸˜ao, seu tipo, a sec¸˜ao fonte correspondente na linguagem de padr˜oes (opcional) e o padr˜ao no qual esse ponto vari´avel foi identificado. O tipo do ponto vari´avel permite saber o que deve ser feito para obter uma aplicac¸˜ao a partir do framework. Exemplos de poss´ıveis tipos de ponto vari´avel s˜ao: PARTIC ESCOLHA: estabelece que haver´a uma escolha entre participantes de um padr˜ao; PADR ˜AO OPCIONAL: de- termina que todo o padr˜ao pode ser aplicado opcionalmente em aplicac¸˜oes espec´ıficas; e PAR- TIC OPCIONAL: permite que um participante de um padr˜ao n˜ao seja utilizado em instanciac¸˜oes particulares.
4.2 O Processo de Construc¸˜ao 64