Bom dia Pessoal!

Tive uma experiência hoje no trabalho não muito agradável, que pode acontecer em qualquer ambiente empresarial. Primeiro irei contar sobre a situação:

Situação:

Temos uma aplicação .NET, que consome um WebService que por sua vez consome uma DLL. No caso se tratava especificamente de 3 métodos de Calculo de Frete para os Produtos do nosso B2B. Pois bem.

Hoje fui fazer um “Get Lastest Version” e dei também um “Update Service Reference” E descobri que a outra equipe liberou um release de uma DLL para nossa aplicação e simplesmente o meu sistema parou de funcionar. Porque:

  • Mudaram todas as assinaturas de métodos
  • Mudaram os retornos por esses métodos
  • Excluíram algumas classes de Dominio e criaram outras em seu lugar. “Acho que eles descobriram o significado de 3° Forma Normal e resolveram fazer isso agora ¬¬”

Resultado:

É obvio, minha aplicação parou de funcionar. E eu tentei verificar no Object Explorer tudo que foi mudado, vendo as assinaturas e seus respectivos retornos. E estava completamente mudado!

Minha mente: “Calma Marcos! Eles vão liberar um documento orientando sobre todas as mudanças necessárias!”

Eu mandei um e-mail pra equipe que realizou a alteração. E a resposta que recebi foi:

“Sim nós mudamos para a nova versão da DLL liberada pela Empresa X e já publicamos no nosso servidor!”

O engraçado que foi apresentado com orgulho isso! A mudança de versão sem notificar todas as equipes que possuam essas bibliotecas em seus projetos. Sem documentação, sem notificação. Sem nada!

Me desculpem por falar isso, por favor não me processem: Mas esses “Programadores” são um banco de {*&#$%! !`

O que deveria ter sido feito?

  1. Já não poderia mudar assinaturas e seus retornos. Eu como Arquiteto de Software, já construiria seus métodos pensando em todos os requisitos. Mas é claro, que em 1% dos casos é inevitável em função do Escopo de Projeto.
  2. Existe um conceito de Compatibilidade com Versões Antigas de Sistemas, com seus releases atuais. Eu desconheço se existe uma nomenclatura para isso, mas tenho certeza que se eu procurar em http://martinfowler.com/Referência Mundial de Design Patterns de Programação do Martin Fowler, acharei esse nome. De qualquer forma, quando eu descobrir o nome dado para essa “Feature”, eu postarei aqui.
  3. No minimo que precisa ser feito é enviar um Broadcast para todas as equipes que tenham seus projetos afetados falando sobre a alteração, colocando em anexo a nova DLL e/ou Novo endereço de Serviço e também um documento orientando tudo que foi mudado e descritivos passo a passos para efetuar a alteração nos Projetos afetados.

Não devemos permitir que esses tipos de coisas aconteça! Arquiteto de Softwares: Prestem atenção no que fazem! Vocês não ganham R$ 80,00 por hora à toa!

Muito Obrigado!

Abraços!