Construção de Frameworks
Tem-se três aspectos de desenvolvimento de frameworks [WJ90]: projeto, uso e descrição.
Projetar um framework para um subsistema é desenvolver um modelo que represente uma generalização de um subsistema. Em outras palavras, o framework não somente serve para extrair classes abstratas, mas também deve ser utilizável por diferentes aplicações. Portanto, é difícil projetar um framework pois o projetista deve ter muito conhecimento do domínio do problema e muita experiência de projeto de framework para obter esta generalização de um subsistema que permite desenvolver aplicações a partir desta.
A segunda etapa é quanto ao uso de frameworks. Para usar o framework, é preciso criar uma aplicação a partir do modelo que foi projetado. Segundo [WJ90], o uso pode se dar de uma das duas formas:
1. Definição de novas classes/subclasses que se façam necessárias, ou;
2. Configuração de um conjunto de objetos instanciados a partir das classes existentes, através do fornecimento de parâmetros a cada objeto e conectando-os entre si.
No primeiro caso acima, o comportamento específico da interface da ferramenta seria definido acrescentando-se novos métodos ás subclasses derivadas a partir das classes do framework. Cada método acrescentado deve respeitar as convenções da(s) respectiva(s) superclasse(s). Os frameworks definidos para este tipo foram denominados como caixa-branca [JF88], pois quem vai utilizá-los é obrigado a conhecer a sua estrutura interna.
Na segunda forma de especialização, o framework recebe um conjunto de parâmetros que representam o comportamento específico de cada ferramenta. Estes parâmetros são fornecidos através da interface de cada classe, esta forma de uso requer que seja conhecida apenas esta interface.
Desse modo, este tipo de framework, assim especializado, passou a ser conhecido como framework caixa-preta.
A maioria das aplicações necessita da criação de novas subclasses dentro do framework. Após a