Pessoas, tudo bem?Hoje eu "puxei da gaveta" um texto que ja estava pronto tem algum tempo sobre engenharia de configuracao. Desde quando ingressei na nao tao famosa vida de "CM" (Configuration Manager) que eu preparei um texto para explicar um pouco mais dessa disciplina de engenharia de software que, com a adocao cada vez maior dos modelos de exelencia de softwares (CMMi, MPS.Br), vem ganhando destaque no mercado de TI. Entao, para comecar segue uma definicao de Roger Pressman (2001):E a disciplina da Engenharia de Software responsavel pelo gerenciamento da mudanca em todo ciclo de vida do software. Ao ler a definicao fica a duvida no ar: Mudanca? Sim, softwares sao produzidos com uma gama enorme de pessoas e em um ambiente cada vez mais descentralizado e com series de desenvolvimento em paralelo com mudancas sendo impostas pelo consumidor ha todo tempo e sempre visando escalabilidade dos sistemas produzidos. E nesse contexto que as mudancas durante a producao e modificacao dos softwares precisam ser controladas para se ter um maior rendimento das mesmas, conseguir visualizar claramente tais mudancas e tambem a visualizacao do ciclo de vida do sistema. Sendo assim, os engenheiros de configuracao sao os responsaveis pela harmonia entre o desenvolvimento, mudancas e paralelismo nas linhas de producao nas fabricas de software, com o dever de dar visibilidade clara dos artefatos que estao sendo gerados durante o ciclo de vida do sistema a ser produzido.Visando o controle das mudancas, e essencial que os Engenheiro de Configuracao busquem respostas para manter o ambiente de desenvolvimento conversando em uma "linguagem" comum para evitar alguns problemas comuns em times que nao trabalham seguindo essa disciplina:Falta de comunicacaoSobreposicao de alteracoesFalta de visibilidade das alteracoesAlto indice de retrabalho E acredite: Esses quatro pontos citados sao apenas a porta de entrada para muitos problemas dentro do time de desenvolvimento... E comum voce ouvir estorias de pessoas que trabalham em times de medio/grande porte sem um sistema controlado dizendo que teve que refazer uma modificacao por que o colega do lado simplesmente apagou todo o trabalho do dia dele ao terminar sua alteracao em tal linha de codigo. Retrabalho significa stress, mais horas trabalhadas, menos lucro e aumento das chances de tal alteracao dar "zebra". Em resumo, A ideia e controlar o que vem sendo feito dentro dos times, utilizando ferramentas de apoio ao controle de versao e visualizacao de alteracoes para evitar retrabalho, stress e prejuizo. Outro ponto importante na Engenharia de Configuracao e a visualizacao das modificacoes e do ciclo de vida do sistema. para isso o SCM (Software Configuration Manager) trabalha respondendo algumas questoes:Em que versao se encontra meu sistema?Foi auditado?Quem sao os responsaveis?E estavel?Pode parecer facil responder a tudo isso mas, imagine voce trabalhando em um sistema com 3 equipes de desenvolvimento, separadas geograficamente e com cada uma dependendo do trabalho da outra? Claro que essa e uma situacao extrema, mas em pequenos times tambem e complicado visualizar claramente o ciclo de vida, versoes do sistema e afins. E um trabalho arduo que requer paciencia e habilidade para verificar junto as equipes de desenvolvimento