Arquivo para 'Arquitetura'

Como medir a coesão do seu código? A métrica LCOM

Postado em 23. jan, 2013 por .

5

Aqui no blog da Caelum já discutimos métricas como complexidade ciclomática e acoplamento, e chegamos em maneiras quantitativas de medi-las. Agora, uma boa pergunta é: como medir coesão? Mais claramente, como chegar em um número que diz o quão coesa uma classe é? Vamos estudar novamente o que é coesão. Sabemos que uma classe deve more »

Continue Lendo

Orientação a objetos: uma outra perspectiva sobre o acoplamento

Postado em 24. out, 2012 por .

30

Todo mundo que já viu orientação a objetos alguma vez na vida conhece a frase “classes devem ter alta coesão e baixo acoplamento“. Uma classe altamente acoplada pode ser sim um problema. Veja o diagrama abaixo, por exemplo, onde temos a classe GerenciadorDeNotaFiscal, que depende de outras 3 classes: um DAO, uma classe que envia more »

Continue Lendo

Comece a trabalhar com Java no Amazon S3

Postado em 14. ago, 2012 por .

5

É relativamente simples colocar sua aplicação no cloud da Amazon. Um dos serviços oferecidos e bastante utilizados é o  Amazon Simple Storage Service (S3), para armazenamento de dados em cloud. A vantagem do serviço S3 é justamente não precisarmos ter tanta preocupação com a gestão do hardware e infraestrutura, podendo também diminuir custos. O S3 more »

Continue Lendo

Entenda os MVCs e os frameworks Action e Component Based

Postado em 03. jul, 2012 por .

39

É muito comum encontrar desenvolvedores que aprendem componentes do JSF como o Primefaces e o Richfaces e gostariam de usá-las em seus projetos que utilizam frameworks web como o Spring MVC, Struts e VRaptor, porém, isso não é possível. Por que? Entenda os diferentes funcionamentos do MVC, aprenda como funcionam os frameworks e tire para more »

Continue Lendo

Revisitando a Orientação a Objetos: encapsulamento no Java

Postado em 14. jun, 2012 por .

32

Façamos uma aposta. Tenho certeza que você, ao ver a classe abaixo, consegue perceber um problema nela: Sim. Os atributos estão todos públicos! Isso vai exatamente contra uma das nossas primeiras lições quando aprendemos Java: atributos devem ser privados e precisamos de getters e setters para acessá-los. Vamos então fazer essa mudança no código. Agora more »

Continue Lendo

Java EE versus Spring: retomando a discussão

Postado em 27. mar, 2012 por and .

36

De tempo em tempo surgem artigos que retomam a velha disputa entre Spring e Java EE (algumas vezes mais focado em EJBs). O artigo mais recente é do polêmico Bill Burke que já cutucou várias vezes, dando suas razões para justificar sua visão na qual o Spring morrerá e o Java EE ganhará a batalha. more »

Continue Lendo

Medindo a complexidade do seu código

Postado em 01. mar, 2012 por .

44

Sabemos que um dos grandes vilões na hora de mantermos um sistema legado são os trechos de código difíceis ou complicados de entender. Todo programador já se deparou com (ou mesmo escreveu!) códigos com péssimos nomes de variáveis ou muitas linhas de código em um único método, sem contar o excesso de responsabilidade. Mas, sem more »

Continue Lendo

Rodando sua aplicação na Amazon do Brasil

Postado em 20. dez, 2011 por .

30

Desde o início de nosso trabalho com o cloud em 2009 temos investido tempo e pesquisa na utilização do cloud como plataforma para diminuir custos (e trabalho!) e potencializar produtos, através de diversos vendors. Com a Amazon não é diferente: nosso sistema de ensino online está deployado lá. Com o lançamento de grande parte da more »

Continue Lendo

Lançamento do livro Introdução à Arquitetura e Design de Software

Postado em 15. dez, 2011 por .

45

Depois de uma longa espera, temos o tão aguardado lançamento. O livro está sendo distribuído para as livrarias, e já é bem fácil encontrá-lo nas lojas online, como na Saraiva. Foi bastante tempo e trabalho para criar uma introdução abrangente, e ao mesmo tempo com uma necessária profundidade, de alguns dos principais tópicos da plataforma more »

Continue Lendo

NoSQL – Do teorema CAP para P?(A|C):(C|L)

Postado em 07. dez, 2011 por .

5

Existem muitas motivações para os bancos NoSQL, como por exemplo usar um modelo mais adequado para os seu dados ou facilitar alterações de schema; ou ainda além, melhorar o desempenho e simplificar a replicação para ter a tão sonhada escalabilidade linear. O teorema CAP Claro que todos os benefícios não vem sem custo, comparado com os more »

Continue Lendo

Screencast: sua App no Cloud com OpenShift

Postado em 01. dez, 2011 por .

18

O cloud vem se espalhando pelo mercado de TI e em especial entre os desenvolvedores de software. Heroku, Cloud Foundry, Microsoft Azure, Google App Engine, entre outros serviços de cloud no modelo PaaS, (Platform as a Service), popularizaram-se muito nos últimos tempos. Para disponibilizar serviços de cloud, é necessário que haja uma infraestrutura de servidores more »

Continue Lendo

mapeamento de banco de dados a orientacao a objetos

Adequar o banco às entidades ou o contrário?

Postado em 09. ago, 2011 por .

23

Uma das features interessantes do Hibernate é gerar a Data Definition Language para criação da estrutura de tabelas do banco de dados (schema). Tudo que precisamos fazer é pensar em nosso modelo Orientado a Objeto que o banco é gerado automaticamente a partir das entidades. Aparentemente o processo de pensar na modelagem do banco de more »

Continue Lendo

Caçando seus gargalos com o Hibernate Statistics

Caçando seus gargalos com o Hibernate Statistics

Postado em 08. jun, 2011 por .

15

Uma reclamação frequente dos novos usuários do Hibernate é o excesso de queries realizadas pelo framework, afetando não só a performance mas também a escalabilidade da aplicação. Será realmente culpa do framework? Práticas simples podem ajudar a enfrentar esses gargalos ao usar o Hibernate, mas como detectá-los numa aplicação que já foi mapeada sem muito more »

Continue Lendo

Como não aprender orientação a objetos: o excesso de ifs

Postado em 12. abr, 2011 por .

46

Aglomerados de ifs aparecem com frequência, e chegam até a ter um aspecto engraçado. Em alguns casos poder dar a impressão de que estamos usando orientação a objetos, já que cada cláusula costuma envolver a invocação de um método, dependendo do tipo do objeto. Infelizmente, essa sensação é falsa, e chegou até a gerar o more »

Continue Lendo

Facilitando a manutenção dos testes ao diminuir o acoplamento com o código

Postado em 01. mar, 2011 por and .

14

É fácil entender por que devemos diminuir o acoplamento entre classes: a alteração em um ponto do sistema pode propagar a necessidade de mudanças em outros. Dependendo do acoplamento, uma simples alteração exige um esforço enorme. Em alguns casos as mudanças não são feitas, e a funcionalidade é simplesmente descartada, devido a esse alto custo more »

Continue Lendo