domingo, 12 de fevereiro de 2012

Impressões sobre o livro Introdução à arquitetura e design de software




Bom hoje terminei de ler o livro Introdução à arquitetura e design de software escrito pelo pessoal da Caelum, foi o livro de tecnologia que li em menor tempo, entre os motivos para tal feito destaco a didática utilizada pelo autores, o livro é muito gostoso de ler e de fácil compreensão, outro fator é que ele não é muito grande. São ao todo 232 páginas de puro conteúdo. Pode parecer que é superficial mas não é, o livro aborda muito bem alguns dos principais aspectos para desenvolver um software bem arquitetado e com ótimo design, mostrando diversos pontos positivos e negativos ao escolher certos caminhos no desenvolvimento.
O livro é todo baseado no Java e trata de aspectos que vão desde a JVM até  a Integração de sistemas Web e Rest.
Os capítulos que mais gostei foram o 3º - Tópicos de Orientação a Objetos, 4º- Separação de responsabilidades e o 6º- Decisões arquiteturais.

No capitulo 3 o livro fala de como programar orientado a interfaces e não á implementação deixando o código menos acoplado, como devemos buscar programar compondo comportamentos para nossas classes, devemos também evitar e herança e favorecer a composição como explicação de que herança força a classe filha a conhecer o comportamento da classe mãe, o que é visto como quebra de encapsulamento. Outro aspecto interessante nesse capitulo é quando indica a favorecer a imutabilidade nas classes fazendo com que não tenhamos problemas como a  perca de referencia dos objetos.

No capitulo 4 destaco como o livro trata e ensina a obter um baixo acoplamento e uma alta coesão utilizando técnicas de separação de responsabilidades, interessante também como defendem o uso de um Framework para injeção de dependências e inversão de controle, entre eles temos o Spring Framework, mas no JEE6 já temos a implementação do CDI - Context and Dependency Injection embutida na plataforma. O capitulo faz alusão aos Singletons  e como caiu em desuso chegando a ser considerado um anti-pattern  por possuir uma instancia unica, ele faz com que classes que precisem do acesso global de um singleton tenha um alto acoplamento.

O capitulo 6 explica a diferença entre Tiers e Layers conceitos bastantes confundido pelos Desenvolvedores.
Layers são as separações lógicas de como organizar o código da aplicação de maneira a diminuir o acoplamento e facilitar as mudanças, o MVC é um exemplo dessa separação.
Tiers já trata de separações físicas entre partes do sistema exemplo: servidor web e o banco de dados.
Outro assunto interessante é sobre Desenvolvimento Web MVC e qual tipo de abordagem devemos usar ao desenvolver um software Actions ou  Componentes, fazendo uma analise também de frameworks Action-based (Struts2) e Component-based  (Jsf).
Frameworks ORM também são muito abordados neste capitulo, mais precisamente o uso do Hibernate, explicando como tirar proveito de Caches de 1º e 2º níveis, diminuindo o acesso ao banco e ganhando performance.

Esses foram os tópicos abordados pelo livro que achei mais interessante compartilhar, mas vale ressaltar que o livro todo é bom, não tem um capitulo que não dê para tirar proveito e enriquecer seu conhecimento. Aconselho a quem não tem adquiri-lo, tenho certeza que terão uma outra visão quando forem desenvolver algum software, até porque é um livro de certa forma barato pelo quanto de valor ele ira agregar ao profissional que o tiver.

Endereço na Web do livro: http://www.arquiteturajava.com.br/

3 comentários:

  1. Oi Tiago!

    Fico feliz que o livro tenha sido proveitoso pra você! Valeu pelo feedback e elogios

    Abraços,

    Sérgio

    ResponderExcluir
  2. Oi Sergio,
    Parabéns mais uma vez e estamos na espera por novos lançamentos agora!:)

    ResponderExcluir
  3. Faaaaala Tiago,

    Muito boa a sua crítica. Parabéns por compartilhar seu sentimento sobre o livro.

    Ainda não tive acesso, e se estava motivado para ler, principalmente, por causa da demora para o seu lançamento, agora com seu testemunho fico ainda mais curioso.

    Apesar das críticas negativas que ouvi por aí, vejo que podem estar infundadas e espero poder ter acesso a esse ponto de vista o mais rápido possível.

    Valeu cara!

    ResponderExcluir