Visão sobre Orientações de Desenvolvimento

Entra ano sai ano, entra paradigma, sai paradigma…

Sempre que começamos um projeto novo tendemos a partir para uma maneira de programar aplicando o que os Gurus do Software prometem ser a mais inovadora e o melhor conceito de desenvolvimento que o mundo já viu…  A onda do momento agora é o DDD:  Domain-Driven Design.

Eric Evans, seu criador, descreve o DDD como uma maneira de pensar e de um conjunto de prioridades, visando acelerar projetos de software que têm de lidar com assuntos complicados, segundo ele o que é Business, ou Domínio da Aplicação deve ser o tema principal do foco do projeto e toda a sua arquitetura deve ser sustentada por estes princípios não tecnológicos mais de negócio em si.

Lindo não!?

Só que… Vamos lembrar alguns momentos:

No final dos Anos 90 era verdade absoluta que a aplicação da regra de negocio alinhada e impregnada com tecnologia, no caso Banco de Dados não só se restringia em garantir a integridades dos dados mais tinha o alto ganho de desempenho e automatização, pois, as famosas  ‘triggers’ eram disparadas a partir de eventos que eram capazes de avaliar uma gama enorme de alternativas que o programador seria capaz de realizar, tudo em tempo de execução pelo sistema de gerenciador de dados. Isto era tão maravilhoso que ainda hoje, mais de 10 anos após, inúmeras organizações ainda mantêm seus produtos nesta arquitetura, umas com facilidade em manter outras nem tanto. (Em tempo, o projeto em que trabalho hoje migra deste paradigma para o DDD).

Nesta época colocávamos o Core da aplicação no banco de dados e a programação tratava de apresentar para edição e leitura os dados para o usuário, rapidamente (questão de pouco mais de um ano) os gurus da informática um novo modo de enxergar esta arquitetura, a aplicação de três camadas: Apresentação, Negócio e Dados.  Pregavam que, deveríamos deslocar a lógica de negócios e a conexão com o banco de dados da camada do cliente para a camada de negócios e a camada de dados.  Se você precisar fazer qualquer alteração na lógica de negócios ou no código de acesso aos dados não vai ter que alterar nada nos aplicativos clientes. Era o que muitas pessoas já estavam fazendo, mais a partir dali tínhamos um padrão a seguir… (Porque alguém relativamente com nome falou!)

Com o .Net da Microsoft criando força e corpo um conceito mais inovador precisaria ser lançado, pois agora a Microsoft já suportava orientação a objetos e precisaria  dar um atrativo para que seus desenvolvedores e de seus concorrentes migrassem para sua tecnologia.  Muitos dos gurus então foram contratados – e bem remunerados para falar de um novo jeito de fazer as coisas certas: Precisaríamos trabalhar com DataSets desconectados!

Agora tínhamos um banco de dados em memória e a camada de regra de negócios deveria voltar ao código da aplicação e não mais deveríamos, embora pudéssemos – e com certeza o faríamos – aplicar as regras no banco de dados.

Como o DataSet foi acabando prefiro nem falar que os calos ainda doem!

Bom… Para não estender tanto vou ser mais direto: Desde que programação se tornou algo relativamente fácil de fazer (não se ofenda, só programadores que lêem isto aqui J) vários Gurus surgem todos os dias para nos ensinar que o que sabemos hoje não é tão bom assim e que a visão X é bem melhor e mais barata.

Isto é ruim? Não! Isto é ótimo. Sem duvidas estamos evoluindo muito no decorrer destes anos e em especial nos últimos cinco. Porem hoje, um pouco mais calejado insisto no que vou dizer:

“Martim Fowler, Matthen Foemmel, Robert Martin, Erich Gamma, Eric Evans e vários outros são bons, ou até como se diz em minha cidade Betim: são fodas!”

Porem, eles não donos da melhor maneira, apesar de escreverem ainda a melhor maneira atual. Amanhã outros desbancaram seus conceitos e tudo que você aprendeu virá a desabar para que uma nova construção de conhecimento seja reerguida.

Meu conselho é que não sejam metódicos demais ao desenvolver uma aplicação, procure sempre os padrões e conceitos para servirem de base de sua aplicação mais não os adote como verdade absoluta, adapte-os para sua necessidade. Mantenha um vocabulário em comum com os demais arquitetos e desenvolvedores do mundo e siga linhas de raciocínio mais principalmente mantenha o SEU raciocínio como principal. Não tenha medo de melhorar o que já é demasiadamente bom. Lembre-se: o ótimo sempre estará por vir, mais ele nunca chega.

É  linha de desenvolvimento que este blog pretende seguir portanto interajam comigo, opine, concorde e discorde o que for colocado! Quem sabe não conseguimos juntos fazer a roda de a tecnologia girar mais um pouco?

Mãos a obra!

Anúncios
    • Julio Cesar
    • 25 de janeiro de 2010

    Marcus, desenvolver é uma arte?
    Com tantas mudanças nesta nossa área, quando você pensa que esta no caminho certo (p.ex. Cliente/Servidor, COM+, Datasets, DDD,…) no momento seguinte, você precisa encontrar outro caminho. Esta nossa capacidade de “destruição criativa” é a resposta para este dilema?

    Julio

    • Julio,
      Vou comprar briga com a minha categoria mais a primeira resposta é: Não, desenvolver não é uma arte. Você não pode substituir Picasso, Mozart, Sidney Sheldon, Machado de Assis ou o Costinha. Estes sim são artistas, porque fazem coisas únicas.
      Infelizmente (ou felizmente) nós desenvolvedores temos a necessidade que nossos projetos sejam sempre substituídos dando lugar a um bem melhor, questão de sobrevivência, pois os desenvolvedores que não tem este instinto provavelmente serão eles mesmos substituídos por outros….
      Fica então também respondido quando a capacidade de “destruição criativa”, não há o que destruir, a sim o que precisa ser constantemente melhorado, o que eu tento alertar aos leitores é que nunca enxergue estas melhorias ou novas práticas como a oitava maravilha do mundo, pois elas invariavelmente serão substituídas por outras.
      Daí então vem à visão de oportunidade: eu parto do principio que não é preciso ser o Bill Gates para bolar esta nova geração de coisas ou paradigmas para melhoradas no futuro, nós mesmos podemos construí-las, desde que conhecemos as bases e fundamentos que outros visionários já levantaram. Não existem barreiras a serem quebradas, a teoria de Fermat prova que até mesmo o que parece inalcançável pode ser pego se você entender os diversos pontos de vistas que diversas pessoas tiveram, separar o bom do não tão bom e acrescentar seu toque final.
      Finalizando, em desenvolvimento não há caminho errado… Você pode abrir seu próprio atalho quando o destino estiver longe demais!

      Um abraço e obrigado pelo retorno!

    • Carlos Lacerda
    • 26 de janeiro de 2010

    Acho que complementando o que você disse a respeito dos gurus e evoluções que nao param de acontecer, elas acontecem em grande parte por necessidade de mercado, ciência, academica ou por outros motivos, cabe a cada projeto com seus arquitetos projetistas e analistas definirem o que melhor resolve o problema.

    Seguir paradigmas porque estão na moda na minha opnião geram grandes riscos principalmente em se tratanto de arquitetura e desenho de software alem de complexidade desnecessaria, retrabalho e dificuldades de comunicação com equipe.

    MDD, DDD, MDA, MDD, AOP….. e N outras letrinhas estão ai e sempre vao aparecer inumeras delas, cabe a cada um saber onde e quando aplica-las se é viavel ou não para equipe, interessante tambem lembrar que paradigmas nem sempre são facilmente quebrados principalmente em uma area cheia de cabeças de ferro com a tal da TI.

    Grande Abraço.

  1. @Marcus,

    Desculpe mas discordo de você. Desenvolver software pode ser considerado arte sim. Acho que a melhor forma de argumentar sobre isso seja referindo-se à definição do termo:

    “ART
    –noun
    1. the quality, production, expression, or realm, according to aesthetic principles, of what is beautiful, appealing, or of more than ordinary significance.

    …”

    Fonte: http://dictionary.reference.com/browse/art

    A partir do momento que podemos escrever um programa e apreciá-lo de forma a percebemos não apenas princípios estéticos no código mas também em questões estruturais, e que então podemos criticá-lo como algo “bonito” ou “feio”, estamos falando de arte.

    Pelo mesmo exemplo citado por você, os períodos literários evoluíram de forma que o sucessor negava as características do anterior(Pêndulo). Ora.. Mas não é exatamente isso que vemos hoje em dia com a evolução do desenvolvimento de software? Talvez o que aconteça no mundo atual é que essa evolução aconteça mais rápida e dinâmica do que antes.

    @Julio,

    Não entendi o que você quis dizer com “destruição criativa”. A criatividade, uma vez evidenciada não pode ser destruída. O que acontece é que uma solução criativa em um momento da evolução do desenvolvimento de software pode ser encarada de forma positiva e em outro momento, de forma negativa. É o famoso conceito de certo e errado que não se aplica muito bem nesse contexto. Existem n variantes, técnicas, humanas, etc, para uma decisão arquitetural de software por exemplo. Com isso fica inviável dizer se essa decisão foi certa ou errada pois existem uma infinidade de óticas para o mesmo problema. Provavelmente ela foi escolhida por que resolvia os problemas que existiam no momento em que ela foi concebida. Portanto quanto mais pensarmos em questões de o que é certo e o que é errado estamos automaticamente nos distanciando cada vez mais das respostas para nossos questionamentos.

    Deixar as regras de negócio de uma empresa dentro de um banco de dados não é uma solução certa nem errada. Para cada cenário onde é aplicada ela terá características positivas e negativas. Pense nessas características e coloque-as numa balança. Minha sugestão é escolher a solução onde a balança dê positiva! Talvez assim você “erre” menos. 🙂

    Abraços!
    -LeoLuz-

    • Fala -LeoLuz-!
      Discordar sempre é bom, as diferentes visões são o combustível deste blog!
      Bom, para que desenvolver aplicativos possa ser considerado “arte” nosso código precisaria ser apreciado por pelo menos uma pessoa diferente de nós (e ser eternizado), e o que vemos é que até mesmos nós que desenvolvemos o código com o passar do tempo concordamos que ele não é tão bom assim…
      Concordo com sua colocação se levarmos a definição de arte no pé da letra, mais discordo que arte seja somente isto a que o dicionário eletrônico levantou.
      Arte para mim é uma visão retratada de qualquer coisa real que não reproduza este real, por isto citei escritores, músicos e um comediante (para mim o maior!).
      Em minha opinião o que qualquer um pode fazer não pode ser chamado de arte, principalmente se o estivermos fazendo constantemente influenciados sem um mínimo de senso crítico como trato o assunto do post!
      Agradeço pela visita e lhe convido a escrever um post sobre “A arte de se desenvolver!”, terei o maior prazer em lê-lo em http://leo.classluz.net/, ou até mesmo de publicá-lo aqui.
      Um abraço,
      Marcus Alexandre

    • Edmilson
    • 28 de janeiro de 2010

    Marcus, parabéns pelo Post!

    grande parte do que vc colocou é o meu sentimento também!
    []´s

    Edmilson

    • Edmilson,

      Eu que agradeço o seu retorno!
      Volte sempre!

      Marcus Alexandre

    • Júlio César
    • 29 de janeiro de 2010

    Prezado @LeoLuz,
    meu objetivo ao citar “Destruição criativa” é uma provocação a maior barreira que temos para inovar, isto é, precisamos abandonar muitas vezes o “status quo”, destruindo a máxima “sempre foi feito assim”, e propondo uma forma nova de pensar.
    Esta rebeldia destruidora evidentemente é realizada com prudência, medindo riscos e benefícios.
    É um paradoxo: precisamos ser construtores e destruidores ao mesmo tempo !!

  1. No trackbacks yet.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

Anúncios
%d blogueiros gostam disto: