|
|||||
Desmistificando a Decomposição em CamadasO tema “camadas” é recorrente na arquitetura de software: muitas vezes apontado como a solução para todo tipo de software e recentemente criticado como anti-pattern. Para os iniciantes e leigos, a arquitetura de software se resume na divisão do software em camadas e sua associação a uma “pilha” de tecnologias. O padrão “Layers” O padrão (pattern) “Layers”, reconhecido inicialmente em POSA 1, identifica o contexto no qual um sistema requer decomposição e se endereça a um ou mais dos seguintes problemas, conforme sintetizado por Eeles:
Tal como no conhecido Modelo OSI, o padrão “Layers” sugere um particionamento com diferentes níveis de abstração. Camadas superiores são clientes das camadas inferiores e estas não tem dependências das primeiras. As principais estratégias para a decomposição em camadas são baseadas em responsabilidadea e reuso. Também é possível a combinação dessas estratégias em outras, como a modelagem de camadas multidimensionais. Estratégia “Camadas com base em responsabilidades” Imagine que, para uma aplicação originalmente com interface web, tenha sido identificada a posterior necessidade de acesso por dispositivos móveis. Sem modificar as demais camadas, é possível oferecer uma camada de apresentação com suporte a tais dispositivos. Outra situação possível é a troca da implementação da camada de apresentação (ex: integração com mainframe para SGBD). Esta estratégia também permite que indivíduos de habilidades distintas atuem em suas respectivas áreas de competência (ex: programadores web e integradores). Estratégia “Camadas com base no reuso” Um exemplo típico de estratificação por reuso, citado por Jacobson, é o conjunto das camadas “Base”, “Específica para Negócios” e “Específica para Aplicativos”. No livro Domain Driven Design, Evan também comenta sobre a separação das camadas e usa os termos “User Interface Layer”, “Application Layer”, “Domain Layer” e “Infrastructure Layer”. A óbvia vantagem nessa estratégia é o avançado grau de reuso de componentes. Permite também, com facilidade, o provimento e a catalogação de serviços especializados. Estratégia Camadas multidimensionais Mitos “modernos” (e ingênuos) sobre camadas arquiteturais Muitas vezes, pouco se leva em conta as forças que regem a definição de um arquitetura. Por exemplo, suponhamos a necessidade de um software simples de cadastro sem um contexto de reuso e a ser desenvolvimento por apenas um programador. Possivelmente, o “Layers” nessa situação seria um exagero. Usar o padrão (não somente o “Layers”, qualquer um) para sem considerar todas as forças envolvidas e, principalmente, o problema que está sendo endereçado é inútil e prejudicial. Nesse caso, seria mais uma bela solução para um problema que não existe. Boas referências sobre decomposição em camadas e assuntos correlatos podem ser encontradas em:
Para reflexão: “Ritual é o começo do caos”, Philippe Kruchten, em “The Tao of the Software Architect”. 7 comments to Desmistificando a Decomposição em Camadas |
|||||
|
Copyright © 2012 Arkhi - All Rights Reserved |
|||||
Parabéns pelo texto. Seria possível indicar a fonte que cita a divisão em camadas como anti-pattern?
Procurando no Google, achei este texto:
http://broadcast.oreilly.com/2008/10/mvc-as-anti-pattern.html
Obrigado e desculpe pela superficialidade (o post não tem maiores pretensões). A primeira referência que me lembre sobre a chamada “arquitetura lasanha” foi numa matéria do Mundo Java sobre Seam. Sinceramente, não tenho visto muitas publicações declarando como antipattern, mas muita gente comentando e blogando como tal. Só reforçando o conceito, para mim, pattern aplicado sem necessidade não caracteriza um antipattern, é mal uso.
[...] Principais mensagens Diretrizes do RUP para Arquitetura de SoftwareMétodos Centrados em Arquitetura para Desenvolvimento de ProjetosDesmistificando a Decomposição em Camadas [...]
Eros,
Muito oportuno o seu ponto de vista, que aliás deveria ser o da maioria dos arquitetos de software. Muitas vezes vejo pessoas utilizando um canhão pra matar uma formiga.
Um post interessante a respeito foi publicado pelo Márcio Henrique e agora atualizado com as informações do Eeles.
http://blog.mhavila.com.br/2008/08/09/tiers-and-layers-camadas-fisicas-e-logicas/
[...] Desmistificando a Decomposição em Camadas – 26 de Outubro de 2008 [...]
[...] mensagens “De Architectura”, Sec I a.C.Desmistificando a Decomposição em CamadasO Time de [...]