Quais são as capacidades necessárias para a arquitetura dos sistemas que comumente encontramos na atualidade? Dê uma olhada na figura abaixo...
Nela você vê a proposta do Simon Guest, diretor do time de Estratégia de Arquitetura da Microsoft. Para ele as principais capacidades são:
Com esta estruturação, podemos agora compor as capacidades para obter estilos de aplicações.
Exemplos:
Um Wiki costuma ter uma apresentação em HTML e usa fortemente as capacidades de colaboração e armazenamento tradicional. Se for hospedado de modo compartilhado em um fornecedor teríamos a configuração abaixo:
Um provedor SaaS, baseado em web, com serviços para clientes off-line poderia ter a seguinte configuração:
Infelizmente não achei esta apresentação para passar o link a vocês (se conseguir tomar coragem, tento reproduzi-la eu mesmo nos WebCasts de arquitetura).
Mas o importante aqui é o estilo: pense você também em capacidades antes de montar seu framework para a sua empresa, produto ou família de produtos. Esta é uma forma estruturante de pensar que, creio eu, contribui com melhor reuso e separação lógica entre camadas.