terça-feira, 11 de março de 2008

Desenvolvendo em camadas

Desde a faculdade ouvi falar nas tais 3-camadas e em como elas ajudariam no desenvolvimento de sistemas, sejam eles escritos em Java, Delphi, PHP, ou qualquer outra. Depois de quebrar a cabeça tentando entender, me foram apresentados os tais Design Patterns do GoF , do Martin Fowler, e de tantos outros... Enfim, piorou tudo quando vi a lista de "camadas" adotadas no J2EE. Era tudo muito estranho - eu não conseguia ver aplicação naquilo tudo.

Quando comecei efetivamente a trabalhar com projeto e implementação orientados a objetos, percebi que algumas coisas podiam ser bem aproveitadas. Debulhei uma série de artigos e projetos desenvolvidos em cima de frameworks orientados a objetos, e consegui assimilar algumas coisas interessantes:

As minhas principais motivações no uso de divisão em camadas são:
  • Aumento na manutenibilidade - se o código for bem projetado, as manutenções corretivas e evolutivas tendem a ser mais ágeis e menos confusas.
  • Especialização - posso definir um especialista para fazer o trabalho em uma camada, aumentando a produtividade local (naquela camada)
  • Diminuição da dependência entre as camadas - posso criar uma camada em PHP, a outra em Java e outra em qualquer SGBD.
  • Desacoplamento - Quanto menos acoplados forem os componentes melhor, uma vez que as amarras entre estes podem dificultar as manutenções.
É evidente que isso traz um contraponto, a saber:
  • É exigido mais da equipe de projeto - a análise e projeto são mais exigidas, e a formalização dos artefatos produzidos é maior. Na prática isso demanda um pouco mais de trabalho.
  • Ferramental e processo - é necessário dar o devido suporte ao projeto, usando ferramentas de apoio; além disso, um processo é desejável, pois aumenta-se o volume de esforço acumulado, e é bom ter um passo-a-passo.
  • Comunicação - É um fator essencial: a comunicação entre todos os envolvidos dos projetos;
  • Gerência - diferente dos projetos individuais ad-hoc, projetos com a divisão de camadas geralmente exigem um certo grau de gerência para manter as partes coesas.

Nenhum comentário: