Software não é Prédio, Ponte ou qualquer outra Obra da Engenharia Civil 
Autor: Jorge Oleques | Publicado: 2012-10-20T15:07:00-07:00




Sou aluno de Pós-Graduação Engenharia de Software de uma instituição renomada no RS e hoje escutei um dos maires absurdos que poderia ter escutado em curso de pós-graduação, um dos meus professores na aula de hoje depois de um questionamento que lhe fiz sobre desenvolver todo o projeto antes para depois codificar me respondeu que: "..imagina construirmos um prédio sem projetarmos encanamento, sem projetarmos a fiação elétrica, sem projetarmos estacionamentos e&nbsp;cômodos...".



Foi o maior absurdo que ouvi nos&nbsp;últimos&nbsp;tempos, e olha que faz um certo tempo que ouço e vejo absurdos no desenvolvimento de software.



Não quis e não quero imaginar um software como um prédio, um SOFTWARE não é uma obra de ENGENHARIA CIVIL, um SOFTWARE pode ser comparado a um organismo vivo que ira evoluir ao longo do tempo, ou&nbsp;alguém&nbsp;já projetou um software todo antes e no fim do projeto aquele software era&nbsp;exatamente&nbsp;como o projeto inicial, acho pouco&nbsp;provável, até mesmo esse querido professor( é claro se ele já fez algum software profissionalmente).





Essa explicação dada por esse senhor me fez refletir muito sobre quanto um&nbsp;comentário&nbsp;como esse tem um impacto em nossos projetos de software, pois todos que estavam na sala e que ouviram o que foi dito podem levar para suas empresas e times essa&nbsp;metáfora&nbsp;que lhes foi dita.



No inicio do desenvolvimento de software acredito que essa&nbsp;metáfora&nbsp;tenha sido de grande valia, uma vez que&nbsp;projetávamos&nbsp;e&nbsp;desenvolvíamos&nbsp;softwares bastante simples em&nbsp;comparação&nbsp;aos desenvolvidos atualmente, porem nos tempos de hoje onde os&nbsp;negócios&nbsp;mudam em um piscar de olhos, onde os sistemas são&nbsp;imensamente&nbsp;mais complexos que antes e que nossos softwares a cada dia que passa tentam imitar mais os seres humanos é&nbsp;IMPOSSÍVEL&nbsp;projetar um sistema inteiro antes do&nbsp;desenvolvimento.



O software tem que evoluir ao longo do tempo isso não sou eu quem esta dizendo isso já é discutido a tempos, Craig Larman em artigo recente escreveu sobre isso.






"A metáfora do edifício [aplicada ao desenvolvimento de software] já perdeu sua utilidade; é hora de mudar novamente. As estruturas conceituais que hoje construímos são complexas demais para serem especificadas detalhadamente com antecedência; são também complexas demais para serem construídas sem defeitos. Devemos, portanto, adotar uma abordagem radicalmente diferente. Vamos nos voltar à natureza e estudar a complexidade das coisas vivas, em vez dos trabalhos mortos do homem.


Nesse contexto, encontramos estruturas com uma complexidade imensa: o cérebro, por exemplo, é mais complexo do que é possível mapear e mais poderoso do que se pode imitar; é rico em diversidade, autoprotetor e auto-renovador. O segredo é que o cérebro evolui; não é construído. O mesmo deve acontecer com nossos sistemas de software; alguns anos atrás, Harlan Mills propôs que qualquer sistema de software deve ser evoluído através do desenvolvimento incremental."[Fred Brooks, 1986&nbsp;

]







O trecho do artigo&nbsp;&nbsp;"Não Existe Bala de Prata – Essência e Acidente em Engenharia de Software" [Brooks 1986], é de 1986 e isso mostra que esse pensamento não é algo recente, porem ainda nos tempos atuais ainda temos que escutar que o software é um "trabalho morto" feito pelo homem, para encerrar&nbsp;só tenho mais uma afirmação para fazer, SOFTWARE NÃO É PRÉDIO, PONTE OU QUALQUER OUTRA OBRA DE ENGENHARIA CIVIL.