May 20, 2008
No último domingo estive no Falando em Java 2008. Foi um evento excelente, muito bem organizado pelo pessoal da Caelum. Na minha opinião os destaques foram:
- A apresentação sobre Domain-Driven Design (DDD) do Sérgio Lopes. No dia anterior eu tinha participado de um workshop sobre DDD bastante interessante. Mas essa apresentação foi simplesmente show. No pouco tempo disponível – apenas 40 minutos – o Sérgio conseguiu passar o que é a essência de DDD: foco no domínio para resolver o problema; resgate da Orientação a Objetos; utilização da Linguagem Ubíqua, onde os mesmos termos utilizados na conversa com o cliente apareciam no modelo expresso em código. Fez isso usando um exemplo prático, onde a partir de uma conversa com o cliente implementava o sistema que este queria. Excelente!
- A palestra do Fabio Kung sobre JRuby on Rails. O Kung deu uma aula sobre Ruby, JRuby e Rails. O mais interessante foi o final, onde ele mostrou que, apesar de JRuby on Rails (assim como Ruby MRI on Rails) ser lento e ter seus problemas para deploy em produção, a versão 3 do GUJ (feita em JRuby on Rails) consegue atender diversas vezes mais requisições por segundo do que a versão atual, em java.
- A presença do Emmanuel Bernard, líder de diversos projetos do Hibernate. O Emmanuel fez duas apresentações. A primeira foi sobre a versão 2.0 do Java Persistence API (JPA). Basicamente eles estão incluindo nesta nova versão diversas funcionalidades que já existem no Hibernate e em outras ferramentas de ORM. A segunda foi sobre o Hibernate Search, uma ferramenta que utiliza o Apache Lucene e possibilita full text search de modelos de domínio persistentes. Muito interessante!
1 Comment |
Uncategorized | Tagged: DDD, Eventos, Hibernate, Java, JRuby, OO, Rails, Ruby |
Permalink
Posted by Guilherme Cirne
May 20, 2008
Nos dias 16 e 17/05 estive em São Paulo para um workshop de Modelagem Ágil e DDD, organizado pela Fratech.
A parte de Modelagem Ágil começou com uma explicação mais teórica: modelos ágeis servem para facilitar a comunicação e não substituir a comunicação face a face; modelos devem ser criados e mantidos somente quando trouxerem valor real para o cliente; modelo não é a mesma coisa que documentação. Depois foram apresentados os conceitos de UML em Cores e Mind Map Modeling (M3). Minha impressão é que esses conceitos vão contra o que a modelagem ágil sugere. Estão mais para documentação do que modelagem. Não acredito que eles favorecem a utilização de abordagens ágeis na modelagem. O único conceito apresentado que, para mim, tem a ver com modelagem ágil é o AgileDraw, que nada mais é do que uma formalização dos rabiscos e rascunhos que fazemos nos quadros brancos, como bem disse o Bruno Carvalho.
Já a apresentação sobre Domain-Driven Design (DDD) foi bem mais interessante. O nível técnico em geral foi bem elevado assim como o nível das discussões. Alguns participantes já tinham um bom conhecimento sobre o assunto e a troca de experiências foi bastante produtiva.
Além disso, tive a oportunidade de conhecer diversas pessoas interessantes. Pena não termos conseguido marcar um chope. Na próxima não pode faltar!
1 Comment |
Uncategorized | Tagged: DDD, Eventos, Métodos Ágeis, Modelagem Ágil, OO |
Permalink
Posted by Guilherme Cirne
January 14, 2008
Já vi muita gente espalhar classes “utilitárias” por todo o sistema. StringUtil, NumberUtil, DateUtil… Daqui a pouco vamos ter UtilUtil.
Considero esse hábito no mínimo condenável. O nome dessas classes não revela qual sua real função, tornando o código difícil de entender e manter. Esse tipo de classe costuma crescer e virar um verdadeiro saco de gatos, contendo diversos métodos que praticamente não tem nada a ver uns com os outros.
Nomes de classes (e também métodos, variáveis, etc.) deveriam ser cuidadosamente definidos. Idealmente, deveria se ter em mente o conceito de Ubiquitous Language (algo como Linguagem Onipresente) do DDD na hora de se criar os nomes das classes. Ou seja, todo o comportamento do sistema deveria estar implementado em classes cujos nomes fazem parte do domínio do problema. Nomes que têm o mesmo significado tanto para a equipe técnica quanto para clientes e usuários finais. Isso facilita a comunicação entre todos e, também, o entendimento do código e sua manutenção futura.
Minha sugestão é, então, que se evite criar classes chamadas *Util. Provavelmente existe um nome melhor, que vai expressar melhor qual a responsabilidade da classe e, consequentemente, vai deixar o código mais limpo e claro.
1 Comment |
Uncategorized | Tagged: DDD, Ubiquitous Language |
Permalink
Posted by Guilherme Cirne
November 27, 2007
Hoje estava lendo sobre o Qi4j que, como informado na página inicial do mesmo, trata-se de um framework para desenvolvimento de aplicações centrados no domínio, utilizando conceitos evoluídos de AOP, DI e DDD. Trata-se de uma implementação em Java de algo conhecido como Composite Oriented Programming.
O objetivo desse framework parece com o de vários outros: deixar o desenvolvedor se concentrar no modelo de domínio do sistema – que é onde está o valor do software – sem se preocupar com o resto, como detalhes técnicos de infra-estrutura. Para isso ele utiliza o tal do Composite Oriented Programming, um paradigma radicalmente diferente. Vale a pena dar uma olhada no site para entender melhor do que se trata.
A implementação ainda se encontra num estado instável mas parece bastante promissor. Eu certamente vou acompanhar de perto sua evolução.
Leave a Comment » |
Uncategorized | Tagged: DDD, OO |
Permalink
Posted by Guilherme Cirne