Como criar frameworks corporativos

“We want to make these really elaborate architectures, because we believe that we are solving world hunger when we do so. We are going to build structures that will solve every software problem forever. These tend to go on, and on, and on forever. They are hard to work with, they actually impede the flow of most development. Avoid making the grand architecture in the sky. Anybody here have an enterprise architecture, nailed down by some people that don’t code? This is probably an error in judgment. Not that you don’t want to make enterprise wide decisions but you don’t want to have some massive enterprise architecture created by people who do not have the responsibility to deliver. The people that have the responsibility to deliver are the ones that should be deciding what their architectures ought to be.”

Traduzido:

“Nós queremos fazer essas arquiteturas realmente elaboradas, porque acreditamos que estamos resolvendo a fome mundial quando o fazemos. Nós iremos constuir grandes estruturas que vão resolver os problemas de software para sempre. Estas tendem a sobreviver para sempre. Elas são difíceis de trabalhar, e na verdade impedem o fluxo da maioria dos desenvolvimentos. Evite criar uma grande arquitetura nos céus. Alguém aqui tem uma arquitetura corporativa, criada por algumas pessoas que não codificam? Este é provavelmente um erro de julgamento. Não que você não queira fazer decisões corporativas, mas você não quer ter uma arquitetura corporativa massiva criada por pessoas que não tem responsabilidade sobre a entrega. As pessoas que tem a responsabilidade da entrega são as que deviam estar decidindo como suas arquiteturas devem ser.”

O vídeo da conferência pode ser baixado aqui, junto a inúmeras palestras, em um total de 30 GB de videos. Você pode baixar só o que quiser.

Eu já havia falado o que o uncle Bob está dizendo em outro post. Para não ficar reescrevendo, vejam o que eu disse:

“E onde ficam os frameworks corporativos, os padrões, a reusabilidade no nível da corporação? Muitas empresas fazem esse tipo de framework para ganhar tempo, diminuir a quantidade de código que escrevem, e agora? Este tipo de framework deve surgir quando necessário, e deve ter uma amplitude muito limitada. Acredito que é possível ter um framework corporativo, desde que ele emerja das necessidades reais dos projetos, ou seja, sejam abstraídos a partir de algo real que precisou ser implementado, e que pode ser reutilizado. (…) Estes podem emergir quando necessários, e devem ser feitos seguindo boas práticas, como o open closed principle, para que não se tornem um peso no processo de desenvolvimento, mas sejam uma solução real.”

Então, como criar frameworks corporativos? Ao lado dos desenvolvedores, com o olho pras necessidades reais de desenvolvimento.

  • Rodolfo

    Esse assunto de framework é complicado. Em uma empresa que trabalhei, quando vc iniciava uma nova solução ele já criava todo um template de projetos e classes pra vc, mas isso não é framework. Numa outra empresa, tínhamos um único framework que fazia tudo, interface, segurança, persistencia, e era orientado a eventos, ou seja, se quisermos fazer algo personalizado, assinamos um evento X e inserimos o nosso código. Esse framework agilizava muito o desenvolvimento das telas, mas permitia fazer mtas gambiarras. Na que eu estou atualmente, também tem um framework, mas esse nos atrapalha mais que nos ajuda. Nos empurra uma arquitetura tosca, não temos eventos e nem as classes são expansíveis. Um exemplo de como a coisa é ruim: Se vc instanciar uma classe X fora do projeto(assembly) Y, dá erro de execução, a classe se recusa a ser instanciada. WTF?!
    Gosto mto de frameworks, eu mesmo já criei alguns. É um dos meus assuntos preferidos dentre desenvolvimento de software.
    A sua argumentação está correta. Só acrescentando que desenvolver framework, é diferente de desenvolver sistemas. São paradigmas totalmente diferentes.

  • http://blogs.msdn.com/wcamb/ Waldemir

    Olá,

    Construção de um framework corporativo é realmente um dos temas mais relevantes e recorrentes não é de hoje. Costumo dizer que existem diversos desafios na construção de Frameworks Corporativos.

    Veja um exercício que fiz um tempo atrás sobre o assunto:

    Frameworks de desenvolvimento e blocos de aplicação
    http://blogs.msdn.com/wcamb/archive/2009/07/15/frameworks-de-desenvolvimento-e-blocos-de-aplica-o.aspx

    Hoje, um dos aspectos adicionais é a construção de um framework que suporte múltiplas TI’s, ora local (on-premise), ora remota (hosted), ora na nuvem (clod). Já tive algumas discussões sobre a real necessidade ou relevância de um framework assim, tão versátil. Confesso que ainda não fechei questão.

    Pensando ainda na quantidade de frameworks e recursos da plataforma Microsoft (pensando na plataforma .NET), outra questão é o risco de sobreposição de funcionalidades, entre frameworks domésticos, horizontais e verticais.

    O tema é e sempre será "bem quente!" :)

    Abraço!

    Waldemir.

  • http://unplugged.giggio.net/ Giovanni Bassi

    Oi Waldemir,
    Pois é. Acredito em frameworks como o que você colocou no seu post. O duro é ver as empresas criando frameworks de negócio, algo que eu nunca vi funcionar como deveria…
    E você tem toda razão. Em busca de flexibilidade, as empresas acabam criando frameworks cheios de coisas que nunca vão usar. Esse exemplo de cloud, on premisse, etc, é muito bom.
    Em geral, acho que as empresas devem evitar criar frameworks até que sintam uma necessidade muito forte.