terça-feira, 5 de agosto de 2008

Análise e Crítica: A Pattern Language for Developing Object-Oriented Frameworks

No domínio da Orientação a Objetos (OO), um framework é um conjunto de classes que visa a reutilização de um design de software, oferecendo soluções padrões para aplicações de um mesmo domínio (framework vertical). Frameworks possibilitam também o aumento na produtividade e a diminuição no custo de desenvolvimento das aplicações. Entretanto, especificar um design para framework que ofereça também facilidade de aprendizagem tende a ser bastante complexo devido aos detalhes intrísecos no paradigma de Orientação a Objetos.

Neste contexto, [1] propõe um modelo para a implementação de frameworks. Intitulado de "Evolving Frameworks", este modelo é constituído de um conjunto de padrões que devem ser utilizados conjuntamente de forma a alcançar um design bem definido. Dentre eles, destacam-se: White-Box Framework, o qual propõe a utilização de herança ao invés de polimorfismos aliado ao uso dos padrões de projeto Template Method e Factory Method, aumentando a reusabilidade de código; Pluggable Objects onde ao observar subclasses com comportamentos semelhantes, propõe-se utilizar subclasses genéricas, possibilitando o reúso sem o conhecimento a priori do objeto; Fine-Grained Objects, o qual deve ser utilizado no estágio de refatoração do código, dividindo o objeto que possui múltiplos comportamentos em pequenos objetos com comportamentos peculiares.

Por fim, acho que a solução do paper é plausível no que tange o desenvolvimento de um bom framework, ao começar provando que, se ao menos três aplicações desenvolvidas utilizam algo em comun, a criação do framework desejado poderá ser necessária e, a partir deste ponto, desenvolver bibliotecas de componentes e refatorações de códigos. Entretanto, o paper apenas restringe a proposta a frameworks verticais, ou seja, aqueles que são dependentes do domínio da aplicação, o que torna o paper ainda mais restrito. Apesar de oferecer boas soluções, o paper mostrou-se pobre no que se refere a exemplos associados com os problemas apresentados.

[1] Don Roberts and Ralph E. Johnson. Evolving frameworks: A pattern language
for developing object-oriented frameworks. In Pattern Languages
of Program Design 3. Addison Wesley, 1997.

Nenhum comentário: