Desenvolvimento baseado em componentes - Revista Java Magazine 110
Este artigo trata do desenvolvimento baseado na construção de componentes robustos e flexíveis, e sua reutilização por outros sistemas, aumentando a qualidade do sistema final.
A importância do desenvolvimento com alta produtividade e redução de custos tem pressionado as empresas de tecnologia a buscar metodologias que se adéquem melhor às suas necessidades. O desenvolvimento baseado em componentes pode ajudar a conquistar esses requisitos, pois combina a forte reutilização com a robustez de sistemas já testados.
Desenvolvimento baseado em componentes:
Este artigo apresentará os conceitos do desenvolvimento baseado em componentes. Para isso, analisaremos os tipos de componentes de mercado e suas características, e por fim, apresentaremos o desenvolvimento de um componente de validação de documentos que adota os padrões Factory, Singleton e Strategy.
Atualmente as empresas de software procuram meios de desenvolvimento para alcançar uma alta produtividade com alto retorno sobre o investimento. Neste cenário, a margem para erros em prazos e custos deve ser mínima e o produto entregue deve contemplar praticamente todo o escopo proposto pelo solicitante (o cliente).
Esta busca pela alta produtividade passa por muitos itens. Dentre eles a contratação de profissionais experientes, treinamentos, utilização de ferramentas de última geração, adequação de processos, entre outros.
Com base nisso, esse artigo aborda uma estratégia de melhoria de produtividade focada na reutilização de artefatos já construídos, ou seja, uma abordagem arquitetural. Esta reutilização se dá pela construção de sistemas através de componentes.
O que é componentização?
O desenvolvimento baseado em componentes permite que o sistema final seja tratado como vários "minissistemas", diminuindo sua complexidade e permitindo que cada componente empregado seja focado em apenas uma funcionalidade ou um conjunto de funcionalidades semelhantes. Deste modo, estas funcionalidades podem ser reutilizadas em diversas aplicações através do acesso ao componente.
Dito isso, verificamos que componentização de software é uma abordagem arquitetural baseada na divisão de sistemas de software em unidades menores, denominadas componentes.
Neste cenário, para que possamos garantir o baixo acoplamento entre o cliente e o componente, a implementação deste deve respeitar alguns princípios de desenvolvimento. E muitos desses princípios são herdados do desenvolvimento orientado a objetos (OO), tais como:
• Componentes são orientados a interfaces, ou seja, expõem seus serviços para que o cliente realize o acesso, mas sem expor a implementação;
• Componentes podem ter dependências com outros componentes. Neste caso um componente realiza a chamada para a interface de outro componente.
O desenvolvimento de aplicações baseado em componentes nos traz uma série de benefícios, dentre os quais podemos destacar:
• Produtividade: Pode-se economizar tempo de desenvolvimento, dependendo do portfólio de componentes já prontos;
• Robustez: Maior qualidade no produto final que utiliza componentes, pois os mesmos já foram largamente testados em um projeto dedicado à construção dos mesmos;
• Padrão de desenvolvimento: Equipe orientada a desenvolvimento nos moldes da componentização.
Desafios para a adoção da componentização
Mudanças nem sempre são bem-vindas, ainda mais quando tratamos de mudanças relacionadas a desenvolvimento de software. Neste contexto, muitas pessoas entendem que: "se está funcionando, para quê mexer?".