Recentemente, notaveis do mundo da engenharia de software, liderados por Ivar Jacobson, Bertrand Meyer and Richard Soley, criaram um movimento para rediscutir as bases da engenharia de software. O SEMAT (Software Engineering Method and Theory) Call for Action sugere que nao ha organizacao na engenharia de software, que suas praticas sao imaturas e, assim, convoca a comunidade para trabalhar seus fundamentos. O ponto de partida e a definicao de uma base minima conceitual, nomeada pelos idealistas por Kernel. A importancia deste Kernel esta na necessidade de elencarmos o conjunto de elementos que sao essenciais a todos esforcos do desenvolvimento de software, um BoK (Body of Knowledge) compartilhado para academicos, pesquisadores e profissionais. De fato, um dos pontos elencados pelo grupo como o principal problema da engenharia de software atual e a divergencia entre a teoria do mundo academico e a pratica nas empresas. Em boa parte, este gap e devido aos apelos de marketing e buzzwords a que nosso mundo (de TI) esta sujeito e muitas vezes parece ate idolatrar (por um tempo). Alem dos ja citados Ivar Jacobson, Bertrand Meyer and Richard Soley, outros nomes bem conhecidos que ja escreveram varios livros sobre processos, metodologias e melhores praticas na engenharia de software tambem apoiam a ideia. Para citar alguns: Scott Ambler, Philippe Kruchten, Robert Martin, Alistair Cockburn e Erich Gamma. E relevante notar que alguns destes foram autores de metodologias mais tradicionais e outros de boas praticas ageis. O movimento ja consta com muitos adeptos mas tambem ja provocou opinioes contrarias, como pode ser acompanhado no post: Against SEMAT. O autor e da opiniao de que os formalismos comuns das engenharias ja consagradas (diferente da jovem engenharia de software, de apenas algumas decadas) nao sao sempre aplicaveis no desenvolvimento de software. Nao sou adepto as comparacoes de engenharia de software com engenharia civil. Acho ate injusta esta comparacao, justamente pela diferenca de maturidade entre as duas. Ha um artigo interessante que tenta explicar o RUP atraves de analogia com a producao de um filme: Introducing the IBM Rational Unified Process essentials by analogy. Entretanto, dizer que o desenvolvimento de software e uma arte, apesar de poetico, e assumir que nao ha maturidade para entregar software de qualidade e de acordo com as necessidades do cliente. E pior ainda do que assumir isso e nao agir. O movimento SEMAT tenta, de certa forma, colocar ordem no caos. Eliminar o estigma de que software e um produto imprevisivel, instavel e que bugs sao normais. Como profissional da area, ao ver tantos especialistas se unindo neste movimento, sinto-me na obrigacao de participar. Se vc tambem deseja apoiar, pode se subscrever na pagina do SEMAT. Que nos desenvolvedores e a engenharia de software tenhamos prosperidade em 2010! Muitos de nos ja estamos acostumados com o termo Refactoring, uma boa pratica amplamente divulgada por Martin Fowler. Refatoracao = remodelar (reprojetar) sem alterar comportamento. O termo tornou-se comum quando falamos em programacao orientada a objetos, mas o conjunto de boas praticas pode ser estendido a outros nichos, como programacao em banco de dados. O livro Refactoring Databases,