Archive for June, 2005

Troca de Contexto

Thursday, June 30th, 2005

Como falei antes, eu estava lendo um livro sobre casos de uso do RUP, mas acabam de me devolver o Agile Software Development, do Uncle Bob. Esse livro é dos primórdios do Manifesto Ágil, muito bem recomendado e parece ser excelente!

Com prefácio de Erich Gama, o livro tem uma abordagem informal baseada em estudos de caso. Cheguei na parte onde o manifesto é explicado, excelente escrita, coisa que você deveria mostrar ao seu gerente.

Estava pretendendo pegar um livro mais “escovador de bytes” (tem um Tanenbaum me esperando lá em casa há algum tempo), mas não resisti.

E o JavaBlogs.com.br?

Thursday, June 30th, 2005

No ano passado, uma iniciativa em conjunto do GUJ e Portal Java produziu o jablo (quando fui no Conexão Java 2004, descobri que os paulistas pseudo-franceses falam “jablô”, né dqo? :D), um portal de blogs brasileiros sobre Java (mas ate´blog não relacionado a java tinha, apesar de todos 90% técnicos).

Por um milhão de motivos, o site caia diariamente, não se conseguia logar, não funcionava por algumas semanas, ia e voltava… mas foi um sucesso. Nunca a comunidade brasileira produziu tanto conteúdo, dezenas de blogs com pessoas de dviersos níveis de conhecimento postando diariamente sobre os problemas em seus projetos, as soluções que adotavam, tecnologias novas, tutoriais e até polêmicas.

Enfim, após todos os problemas, o Jablo saiu do ar. Ele até voltou, mas cadê a comunidade? Parece que as idas e vindas do sistema tiraram a credibilidade do projeto. Eu mesmo tinha um blog bem ativo por lá, e acabei aqui. O blogger tem menos recursos, mais restrições, mas ainda não vi cair.

Só eu sinto falta da época de ouro dos JavaBlogs?

JavaOne 2005: Acompanhe no Flickr!

Monday, June 27th, 2005

Dica do dia: Se você, como eu, não tem grana pra bancar uma ida ao JavaOne, pode babar nos brindes maravilhosos diretamente no slideshow do flickr.

Casos de Uso: Conheça para Criticar

Monday, June 27th, 2005

Acabei de ler o livro do Riel na sexta. O livro era bom há uns dez anos atrás, mas agora está meio fora de foco. Muitos dos problemas apresentados são resolvidos com Design Patterns simples (quase sempre Observer), mas eu acho que seria legal como o segundo livro de alguém sobre OO. Exige conhecimentos básicos de C++.

Enquanto o mundo do software espera as notícias que vem de San Francisco (e algumas já estão disponíveis) eu comecei a ler um livro que tem muito pouco a ver com meu perfil: Use Case Modeling. Não, eu não estou trabalhando na IBM nem usando RUP, mas como quase todo infeliz eu sou obrigado a utilizar processos parecidos com o RUP/UP.

The image “http://images.amazon.com/images/P/0201709139.01._SCLZZZZZZZ_.jpg” cannot be displayed, because it contains errors.

Não me entenda mal, nada contra casos de uso em si, apenas que a aplicação e o excessod e detalhes que eles são tratados no RUP além da divisão de papéis entre Analista, Projetista, peão e motorista de van me agride.

De qualquer forma, este livro parece que vai me ensinar algo a mais sobre os artefatos de análise do RUP. O processo em si tem seu lado bom (por ser um processo já é bom), e tirando o fato do autor usar setinhas no diagrama de caso de uso tem sido interessante nos dois primeiros capítulos.

Regras são Regras

Friday, June 17th, 2005

E tem gente que questiona porque cosntruir um Domain Model e uma camada de negócios consistente é importante. Leia o post no Portal Java e você vai ver um problema bem interessante.

No caso específico, alguém implementou regras de negócio em Actions Struts. Muito bom, exceto pelo fato que isso gera:

  1. Acoplamento exacerbado ao framework e consequentemente ao HTTP
  2. Programação altamente procedural (qual a diferença entre uma Action e uma função?)

Não, escolher outro framework não é a solução (mesmo que seja o Spring). O importante é saber que estas regras devem estar separadas em sua própria camada, modeladas através de objetos de negócio.

Bom, esse caso específico pede uma medida imediata que evite reescrever a lógica da aplicação toda novamente. Uma soluções é usar adaptadores.

Se você tem uma AdicionarUsuarioAction, uma RemoverUsuarioAction, por exemplo, pode criar uma interface assim:

public interface GerenciadorUsuario{
public adicionar(Usuario u);
public remover(Usuario u);
}

Todo código novo do seu sistema deve usar essa interface. O próximo passo é criar um Adapter para suas Actions, e isso mostra o que o acoplamento faz por você:

public GerenciadorUsuarioAdapter{

public void adicionar(Usuario u){
RequestAdapter req = new RequestAdapter();
requestAdapter.setParameter(”login”, usuario.getLogin());

ResponseAdapter resp = new ResponseAdapter();

executarAction(AdicionarUsuario.class, req, resp);
}
}

Uma bela gambiarra. Request e ResponseAdapter são implementações do HTTP request e HTTP response. executarAction(Class, HttpRequest, HttpResponse) faz a chamada à Action emulando um ambiente web.

A melhor solução, claro, continua sendo refatroar o código e remover a lógica de negócios do Struts. Não, não adianta colcoar esta no WebWork, XWork, Spring… o que importa é colocá-la em um Domain Model consistente e reaproveitável, mas Domain Model é assunto apra outro post.

Subversivo

Friday, June 17th, 2005

Sim, sou mais um adepto do “CVS melhorado“.

Precisava de um modo de armazenar alguns projetos open-source e outros fechados e acessá-los de qualquer lugar. Para os livres até poderia usar o java.net (na verdade eu uso, o Subversion é um proxy) ou sf.net, mas nem todo lugar onde estou permite acesso a portas “estanhas” como as do CVS. Decidi então colocar um no meu PC em casa, um P4 normal e mixuruca com ADSL 512kbps ligado 24/7.

Eu tinha até instalado o cvsnt, mas decidi testar o SVN. Segui os passos do tutorial do Heitor Rapcinski no GUJ, e a instalação foi super simples. Apenas alterei a porta do servidor para 80 e pronto. O acesso está bem estável e muito mais rápido que o CVS do java.net e sf.net :P

Controle de Versão é uma das práticas do SCM que mais são usadas hoje. É simplesmente loucura pensar em alguém configurando versões com arquivos zipados em backup, como eu já tanto fiz e aidna é feito em muitos lugares.

O Subversion tem suas vantagens sobre o CVS, vou fazer uma tentativa antes de recomendar ou não o sistema. No trabalho eu uso Perforce, que é bem legal para linha de comando, mas um pouco complexo para Java (mudar nome de classes envolve renomear arquivos e um pesadelo anexado a isso).

Comentário: Spring in Action

Saturday, June 4th, 2005

Acabo de ler o livro.

Bem, apesar dos muitos erros de ortografia (e quem sou eu para reclamar disso?), o livro faz o que se propõe: ensina a configurar o framework. Só não espere motivação para usá-lo, ou um guia de como tal e tal função pdoeria ser útil. Para usar o livro você já deve saber proque quer suar Spring, apenas desejando dominar as configurações.

Mas a pior característica do livro, na minha opinião, é simplesmente fazer uma substituição de EJB e suas service layers por Spring na maior parte dos exemplos. O livro é uma aula de anti-patterns de Orientação a Objetos, se você não entende porque, leia isso.

Resumindo: vale a compra, mas não espere demais.

Update: Minha proxima leitura e o Object Oriented Design Heuristics de Arthur Riel. Mais um classico :)

Resolução de Mês Novo

Thursday, June 2nd, 2005

Com a minha incapacidade de digitar um texto num editor e colar no blogger (as vezes por minha culpa, as vezes do blogger), decidi que vou manter os textos longos em PDF e colocar como texto no blog cosias mais breves apenas.

Com o novo blog saindo quando Zahl quiser, isso deve mudar novamente.

Ah, obrigado novamente ao renato pela força e os PDFs :)