O seu software é acoplado?


Hoje a interação entre softwares é ampla e fácil de ser implementada, assim não é preciso reinventar a roda toda vez que surge a necessidade de desenvolver um recurso novo para o seu software, porém essa interação deve ser implementada com muito cuidado.

Pois caso seja implementada sem um devido estudo o tiro pode sair pela culatra. Quer entender melhor? Imagine a seguinte situação:

Você precisa que o seu CRUD de cadastro de clientes insira no momento do cadastro ou atualização do mesmo uma foto do seu cliente, basicamente essa foto será feita por uma webcam. Será que preciso escrever código para que a sua aplicação comunique com a webcam e obtenha a imagem? Dependendo da sua ferramenta de desenvolvimento ou de seu nível de conhecimento isso pode ser uma tarefa árdua e o pior, pode atrasar todo o projeto e deixar o cliente irritado.

A solução então é instalar o software de comunicação que vem junto com a própria webcam e fazer a sua aplicação executa-lo e depois apenas “ler” onde a imagem foi salva para que a sua aplicação enfim obtenha a foto, simples não? Em questão de poucas horas a solução já pode estar implementada e em produção.

Mas observe por outro ângulo, fazendo isso o seu software além de estar acoplado a marca (fabricante) da webcam (o seu hardware) também estará acoplado ao seu modelo e até mesmo a aplicação de comunicação (o seu software) fornecida pelo fabricante da webcam. Isso gera de imediato os seguintes modelos:

  • Cada vez que o fabricante alterar o software de comunicação, você fatalmente terá que efetuar mudanças na sua aplicação;
  • O cliente terá que comprar webcam iguais as que você utilizou na fase de desenvolvimento;
  • Se uma webcam quebrar com o tempo de uso e o seu modelo for descontinuado, o seu software terá que lidar com N tipos de webcam diferentes e suas aplicações de comunicação o que poderá ser um grande problema em potencial.

Viram o problema que podemos ter acoplando em demasia a nossa aplicação a algum recurso, seja ele de software ou hardware? O ideal é que nossa aplicação não fosse acoplada a nada, nem mesmo a plataforma, mas isso é impossível no dia-a-dia. Qual a saída para o caso proposto?

Mesmo que pareça reinventar a roda, o ideal era que a aplicação CRUD do exemplo acima fizesse por si só a leitura da porta USB da webcam para obter diretamente a imagem, isso a princípio seria um incomodo, mas no desenrolar dos fatos é sem dúvida a melhor saida.

Pois o seu cliente estaria livre para utilizar uma série de webcam’s diferentes, pois o seu hardware segue um certo padrão, ou seja a sua aplicações estaria preparada para uma infinidade de usos e uma diversidade de ambientes de execução.

Então? A sua aplicação é ou não acoplada ao ambiente de execução?

matrix