Transaction script e testabilidade  XML
Índice dos Fóruns » Arquitetura de Sistemas
Autor Mensagem
tnaires
GUJ Master
[Avatar]

Membro desde: 22/12/2003 08:05:58
Mensagens: 1678
Localização: Porto Alegre/RS - Natal/RN
Offline

Olá

Sabemos que nem todas as aplicações que mantemos usufruem de um modelo de domínio rico. Muitas delas utilizam objetos burros e inserem as regras de negócio em serviços que usam esses objetos. E muitos desses serviços não incluem apenas a lógica de negócio: geralmente embutem outros aspectos do sistema, como infraestrutura e logging.

Vale a pena inserir testes nesse contexto? Como vocês tem aplicado testes nessa arquitetura em particular?

Tarso Nunes Aires

Blog - http://cabritin.wordpress.com/
Delicious - http://delicious.com/tnaires
Twitter - @tnaires

YvGa
Virtual Machine Man

Membro desde: 07/03/2007 15:58:16
Mensagens: 518
Offline

É impossivel mudar o cenario?

Não digo da noite pro dia, mas aos poucos. Quando voce tem que alterar um determinado ponto da aplicacao, voce pode refatorar, melhorar o dominio, incluindo testes.

Nao vejo vantagens em por testes num sistema monolitico, sem melhorá-lo. Muito trabalho e pouco resultado.

Se voce nao conhece eu recomendo:
http://www.amazon.com/Working-Effectively-Legacy-Michael-Feathers/dp/0131177052

Paulo Borio
tnaires
GUJ Master
[Avatar]

Membro desde: 22/12/2003 08:05:58
Mensagens: 1678
Localização: Porto Alegre/RS - Natal/RN
Offline

Ótima recomendação de livro, Paulo. Não o conhecia, obrigado.

Mudar o cenário? Hmmm... Eu diria que é preciso mudá-lo de qualquer jeito, independente de mantermos o transaction script ou mudarmos para domain model. Os serviços precisam ser refatorados para cuidar apenas de regras de negócio, e delegar as outras responsabilidades - persistência, logging - para serviços externos. Senão nunca teremos testes que testem apenas as regras de negócio.

Mas eu gostaria de saber se alguém aqui já teve a experiência de escrever testes para um transaction script.

Tarso Nunes Aires

Blog - http://cabritin.wordpress.com/
Delicious - http://delicious.com/tnaires
Twitter - @tnaires

YvGa
Virtual Machine Man

Membro desde: 07/03/2007 15:58:16
Mensagens: 518
Offline

tnaires wrote:Ótima recomendação de livro, Paulo. Não o conhecia, obrigado.

Mudar o cenário? Hmmm... Eu diria que é preciso mudá-lo de qualquer jeito, independente de mantermos o transaction script ou mudarmos para domain model. Os serviços precisam ser refatorados para cuidar apenas de regras de negócio, e delegar as outras responsabilidades - persistência, logging - para serviços externos. Senão nunca teremos testes que testem apenas as regras de negócio.

Mas eu gostaria de saber se alguém aqui já teve a experiência de escrever testes para um transaction script.


Entao, nao sei se eh exatamente o que voce pergunta, mas quando eu ouco Transaction Script, pela definicao do PoEAA, me vem a cabeca, algo pequeno, que nao precisa de um dominio rico, mas que é organizado. Nao parece ser esse o seu caso.

Se com Transaction Script voce quer dizer aquela massaroca desgraçada que a gente encontra todos dias, nesse caso sim, já tive experiencia e ainda lido com eles.

Pode ser que alguem lhe de melhores noticias, mas no meu caso foi aquilo q eu te falei. A medida que preciso mexer vou retatorando e pondo testes, esse livro ajuda bastante na forma de fazer as alteracoes, encontrar os pontos e alterar, mas o resultado demora, nao aparece da noite pro dia e nem é tao divertido quanto usar TDD desde o inicio do projeto.

Paulo Borio
tnaires
GUJ Master
[Avatar]

Membro desde: 22/12/2003 08:05:58
Mensagens: 1678
Localização: Porto Alegre/RS - Natal/RN
Offline

YvGa wrote:Entao, nao sei se eh exatamente o que voce pergunta, mas quando eu ouco Transaction Script, pela definicao do PoEAA, me vem a cabeca, algo pequeno, que nao precisa de um dominio rico, mas que é organizado. Nao parece ser esse o seu caso.

Se com Transaction Script voce quer dizer aquela massaroca desgraçada que a gente encontra todos dias, nesse caso sim, já tive experiencia e ainda lido com eles.

Aí é que está, o Transaction Script deve ser usado para aplicações simples. Quando é utilizada para aplicações com domínio um pouco mais complexos que um CRUD, fica uma porcaria... Some a isso o fato de que todos os serviços não estão desacoplados das ortogonalidades - persistência, logging...

YvGa wrote:Pode ser que alguem lhe de melhores noticias, mas no meu caso foi aquilo q eu te falei. A medida que preciso mexer vou retatorando e pondo testes, esse livro ajuda bastante na forma de fazer as alteracoes, encontrar os pontos e alterar, mas o resultado demora, nao aparece da noite pro dia e nem é tao divertido quanto usar TDD desde o inicio do projeto.

Então você procura refatorar para um domain model ou mantém a arquitetura original?

Tarso Nunes Aires

Blog - http://cabritin.wordpress.com/
Delicious - http://delicious.com/tnaires
Twitter - @tnaires

YvGa
Virtual Machine Man

Membro desde: 07/03/2007 15:58:16
Mensagens: 518
Offline

Tento refatorar, mas nao forço. Nao sou muito fã da opção de refazer tudo, a nao ser que nao esteja funcionando mesmo ou nao esteja em producao.

Eh muito arriscado mexer em algo que nao tem testes e esta em producao, o que eu venho fazendo eh refatorar e incluir testes a medida que preciso alterar qualquer funcionalidade. Eh um processo que leva tempo, o resultado eh lento, mas eu procuro ir caminhando para um domain model sim.

O que eu aconselho tambem eh ter sempre o Refactoring e o Working effetively with legacy code sempre a mao.

This message was edited 1 time. Last update was at 23/07/2011 17:47:28


Paulo Borio
 
Índice dos Fóruns » Arquitetura de Sistemas
Ir para:   
Powered by JForum 2.1.8 © JForum Team