Archive for programação

Usando getResourceAsStream

As vezes precisamos carregar um recurso em nossa aplicação . Existem 2 formas de fezer esta procura:

getClass().getResourceAsStream()
procura o resource no mesmo diretorio do .class.
getClass().getClassLoader().getResourceAsStream())
procura no CLASSPATH.

links:
Smartly load your properties
eclipsezone

Comments

Checklist para escrever padrões de projeto

Este é o checklist para escrever padrões de Doug Lea:

  1. Descreva um único tipo de problema
  2. Descreva em que o problema ocorre
  3. Descreva a solução como uma entidade de software passível de ser construida
  4. Descreva os passos do projeto ou regras para construir a solução
  5. Descreva as forças que conduzem para a solução
  6. Descreva evidências que a solução é ótima para resolver as forças
  7. Descreva detalhes que são permitidos variar e quais não são
  8. Descreva ao menos uma instância de uso
  9. Descreva evidências que a solução resolve de forma ótima o problema
  10. Descreva os detalhes que são permitidos variar e os que não são
  11. Descreva ao menos um instância atualmente em uso
  12. Descreva evidências de generalidades através de diferentes instâncias
  13. Descreva ou referêncie as variantes e subpadrões
  14. Descreva ou referêncie outros padrões que se relacionam com este padrão
  15. Descreva ou referêncie outros padrões que este padrão faz referência
  16. Relacione com outros padrões com contexto similares, problemas e soluções

Comments

Duck Type



Tirado de pythonlogia :

Ao contrário do que muitas pessoas pensam duck typing não é um mecanismo disponível em linguagens de programação que usam tipagem dinâmica mas sim uma técnica (ou prática) de desenvolvimento. Essa técnica é explicada da seguinte forma:

Se um objeto anda como um pato e faz quack como um pato então ele é um pato.

O problema dessa explicação é que ela não fornece muitos elementos úteis para que as pessoas possam entender exatamente como isso funciona então irei recorrer à outra citação extraída do livro Design Patterns:

Program to an interface, not an implementation. (Programe para uma interface, não para uma implementação).

Duck Typing é uma técnica que funciona com qualquer linguagem de programação com suporte ao paradigma OO e diz basicamente que se o seu objeto responde à uma determinada mensagem (chamada de método) característica de um determinado tipo de objeto então esse objeto também pode ser considerado do mesmo tipo.

Acredito que esta técnica seja mais fácil de ser utilizada em linguagens dinâmicas como Python, Ruby e Smalltalk mas como fazer em Java? Em Java para que usemos um determinado comportamento de um objeto é necessário que ele defina previamente que usa a interface com o comportamento desejado.

leia mais

Comments

Pilha de aplicativos para sistemas comerciais da LZT

Ao se definir uma arquitetura de software é necessário também definir uma pilha de aplicativos que permita o desenvolvimento do sistema. A LZT tem um interessante case que foi apresentado na Pycon de desenvolvimento de software para postos de gasolina . Abaixo segue a pilha de aplicativos utilizados pela LZT que têm 8 programadores e 16 funcionários no total.

Comments

O Que é um “Arquiteto de software”?

“O arquiteto ideal deve ser uma pessoa erudita, um matemático, familiarizado com estudos históricos, um estudioso aplicado de filosofia, conhecedor de música, que não desconheça medicina, detentor de saber jurídico e familiarizado com astronomia e cálculos astronômicos.” - Vitruvius, há aproximadamente 25 anos a.C.

Li isso na revista Mundo Java 25 uma definição desafiante e intimidante do que é um arquiteto, mas a definição de Vitruvus vale para o arquiteto de software?

Se formos interpretar literalmente a resposta é não. Então como podemos definidr um arquiteto de software? Para nós entendermos o que é um arquiteto de software precisamos saber qual o objeto do seu trabalho, a arquitetura de software.

A mais pragmática definição de arquitetura de software que eu li foi:

“Arquitetura de software é o conjunto de decisões de projeto que, se feitas incorretamente, podem causar o cancelamento do projeto.” – Eoin Woods

Simples e prática e é claro extremamente dependente do conhecimento que nós temos do que são decisões de projeto. Com esta definição fica fácil entender que o arquiteto de software é aquele que toma as decisões de projeto.

Logo você pode esta dizendo eu sou um arquiteto de software pois toda vez que programo eu tomo decisões de projeto. A verdade é que tais decisões são limitadas seja pelo conhecimento que você tem sobre as opções de projeto ou seja porquê quando você iniciou a desenvolver você já adotou uma arquitetura e não pode decidir nada diferente sob a pena de ter seu projeto cancelado.

Alguns ainda podem dizer que seu projeto não precisou de um arquiteto e não segue nenhuma arquitetura. Todo desenvolvimento de software envolve implicitamente a aceitação de uma arquitetura de software. Se você não sabe qual a arquitetura de software que esta usando então você corre o risco de tomar uma decisão de projeto que vá de encontro a sua arquitetura e tenha consequências nefastas ao seu projeto.

Usando a definição de arquitetura de software podemos dizer que arquiteto de software é aquele que toma as decisões de projeto com conhecimento que esta usando a melhor opção, opção esta que se consegue tendo um pleno conhecimento do peopleware, hardware e software ou como disse Vitruvius um amplo conhecimento sobre o ser humano e como ele interage com seu meio.

Recursos:
Definições de arquitetura de software

Comments