quarta-feira, 27 de abril de 2011

E a Engenharia de software, é engenharia mesmo?

Algum tempo atrás, eu li artigo argumentando que fazer software não deveria ser considerado um processo de Engenharia. Na época, o argumento pareceu bastante razoável, pois eu acabei lendo estes artigos durante meu período de estudos iniciais de metodologias ágeis (programação extrema em mais detalhes). No laboratório em que trabalho tivemos até um debate acerca do tema e tal, e no final ficou realmente a impressão de que o caráter "artesanal" é forte na maioria das vezes. Daí a ligação fraca entre o processo de fazer software e o processo de Engenharia.

Mesmo assim, sempre me incomodou uma inconsistência: se a Engenharia nada mais é que resolver problemas, porque a designação não serve para os problemas resolvidos por programas de computador?

Depois de um tempo, ao desenvolver meu texto do Mestrado, li um (monte de) artigo(s) muito interessante(s)  sobre as origens dos métodos ágeis, algumas contadas pelos criadores do próprio manifesto ágil.

Em um deles, Williams e Cockburn [1] argumentavam que fazer software é, sem dúvida, um processo de Engenharia. O motivo? Bem, processos de Engenharia podem ser vistos de duas formas: formais ou empíricos. Os processos de formais estabelecem modelos capazes de repetição gerando sempre resultados consistentes. Os processos industriais têm essa característica de repetição. Neste sentido, fazer um carro é um processo que, uma vez formulado, pode ser repetido em outras localidades.

Os processos empíricos, por outro lado, são executados de acordo com a situação, precisando de pequenos ajustes ao longo da própria execução. Cockburn argumentava que fazer software é justamente um processo não-repetitivo, em que cada situação necessita de uma solução distinta. Para mim, este argumento aproxima muito o "fazer software" de Artesanato. Quem prefere não usar o termo Engenharia de software talvez esteja fazendo alguma relação entre programar e o artesanato. Eu, particularmente, a acho a analogia super válida, só não acho que programar deixa de ser Engenharia por isso.

EDIÇÃO: obrigado ao Flávio por apontar que faltou a referência.

[1] - WILLIAMS, L.; COCKBURN, A. Agile software development: it's about feedback and change. Computer, v. 36, n. 6, p. 39-43, 2003. ISSN 0018-9162. Link para o artigo original.

2 comentários:

  1. Poderia me dar a referencia de qual artigo do Cockburn você se refere?

    ResponderExcluir
  2. Eu jurava que tinha incluído a referência desde o começo. Editei para incluir, agora.

    Obrigado por apontar esse detalhe, Flávio.

    ResponderExcluir