desenvolvimento de frameworks

Avaliando Frameworks

Crítica escrita por:AndrezaVieira

Evoluindo Frameworks: Uma linguagem padrão para desenvolvimento de frameworks orientados a objetos. Neste resumo, teremos uma visão geral do conceito de "framework" e como ele está caminhando para a evolução.


1. Problema
O desenvolvimento de sistemas bem projetados, que atendam as necessidades do usuário e sejam entregues nos prazos definidos requer, além de outras condições, muito tempo e custo. Portanto, em alguns projetos são utilizados frameworks como artifício para acelerar o desenvolvimento e minimizar os custos. No entanto, a criação de frameworks demanda um custo elevado, tendo em vista que eles devem ser simples o suficiente para que as pessoas entendam, devem prover de características suficientes para serem usados de forma rápida e que permitam mudanças em alguns pontos de forma fácil. Muitos frameworks deixam de evoluir mesmo antes de chegarem ao final, em alguns casos isto acontece porque eles morrem, ou não são mais usados e não precisam mudar.
 2. Solução
O autor apresenta algumas vantagens da utilização de bons frameworks, enfatizando algumas características, como por exemplo, a redução dos custos do desenvolvimento de aplicações, devido ao reuso do design e do código. Neste sentido, o artigo expõe alguns padrões que devem ser seguidos para a construção de bons frameworks e denomina-os de linguagem de padrões, ou seja, um conjunto de padrões que é utilizado para resolver um problema. Porém, o autor ressalta que não é necessário seguir todos os padrões até o final para obter um framework viável. Seguem abaixo as características de cada padrão:
 -  Three Examples – Como começar a construir um framework? A construção de frameworks não é uma tarefa fácil, até porque não se sabe em quais aplicações eles serão utilizados. É necessário ter uma boa abstração do que será desenvolvido, de maneira que seja feita da forma mais generalizada possível. Portanto, a regra deste padrão diz que três aplicações devem ser construídas, sendo que a cada aplicação o framework obtém uma característica mais genérica;
- White-Box Framework – Devemos usar frameworks que dependem de herança ou polimorfismo? Devemos usar a herança em conjunto com padrões como Template Method e Factory Method, com o intuito de aumentar o reuso do código nas superclasses que alguma outra classe está herdando;
- Component Library – Como evitar a escrita de objetos similares para cada instanciação do framework? A solução é ter, inicialmente, uma simples biblioteca com os objetos essenciais, adicionando mais objetos à medida que forem necessários;
- Hot Spots – Como eliminar códigos comuns? Tendo em vista os códigos que mudam e os que não mudam, devemos separá-los e encapsular os que mudam em objetos individuais para cada comportamento;
Pluggable Objects – Como evitar a criação de subclasses triviais cada vez que é necessário usar o framework? Devemos criar subclasses adaptáveis que possam ser parametrizadas com mensagens para envio, índices de acesso, blocos de avaliação, ou qualquer outra ocorrência que diferencie uma subclasse trivial de outra;
- Fine-Grained Objects – Até que ponto devemos dividir objetos em objetos menores? A proposta do padrão é que devemos continuar quebrando os objetos em menores e granularidades finas até que eles não tenham nenhum significado individual no domínio do problema;
Black-Box Framework - Devemos usar frameworks que dependem de herança ou polimorfismo? A herança deve ser usada para organizar a biblioteca de componentes, porém, quando há dúvidas sobre qual a melhor técnica para determinado componente, deve ser usado o polimorfismo;
Visual Builder – Como simplificar a criação de scripts que conectam objetos do framework? Deve ser criado um programa gráfico que permite especificar os objetos que farão parte da aplicação e mostrar como eles são interligados;
Language Tools – Como inspecionar e depurar as composições criadas pelo Visual Builder? A proposta é criar ferramentas especializadas em inspeção e depuração.
3. Opinião
O artigo mostrou claramente as vantagens obtidas na utilização de frameworks e nos encoraja nesse sentido. Na minha opinião, o autor não foi muito claro na solução dos padrões e nas demonstrações através dos exemplos, o que não me deixa segura em utilizá-los em algum projeto futuro.
4. Pontos para discussão
- Os padrões apontados realmente têm algum fundamento?
- Estamos convencidos da importância de cada padrão apresentado?

Avaliando Frameworks Originalmente publicado no Shvoong: http://pt.shvoong.com/internet-and-technologies/software/1839879-avaliando-frameworks/

Comentários