sexta-feira, 20 de janeiro de 2006

Software e filmes

O artigo Successful software management style: Steering and balance*, que faz parte da edição de janeiro do ezine developerWorks : Rational: Rational Edge ezine provoca o leitor ao tentar comparar o processo de desenvolvimento de software à produção de um filme. É claro que as semelhanças não são lá muito grandes, mas o autor tenta propagar a idéia de que o processo de desenvolvimento está muito mais perto do processo de produção cinematogáfica, do que o de produzir uma ponte. E certamente ao fim do artigo você acaba concordando com ele (bom, eu ao menos concordei).

De qualquer forma, o mais importante neste texto são as quatro práticas que ele descreve como características de projetos de software bem sucedidos. Resumidamente, estas práticas são:
  1. Gerenciamento de escopo: soluções evoluem a partir de especificações, e especificações evoluem a partir de soluções candidatas. Ou seja, não adianta obter todos os requerimentos de um projeto antes de começar a implementar. Isto ocorre porque normalmente o cliente não sabe ao certo o que ele quer, e quando você solta a primeira versão de uma solução, daí então ele começa a realmente entender o que ele quer, e o que você pode fazer pra ele. Com isto, o autor defende a idéia de soltar versões funcionais, mas não completas, em intervalos de tempo curtos. Com isto, o entendimento do problema, e da solução aumenta com o passar do tempo, e fica mais fácil se detectar problemas nas primeiras iterações de um projeto.
  2. Controle do processo: O rigor no processo de desenvolvimento de software deve evoluir de um controle menos rígido para uma mais rígido. Com isto você não engessa a evolução das primeiras fases, contribuindo para aumentar a velocidade na implementação de pequenas versões funcionais que serão úteis para a detecção de falhas no início do processo.
  3. Progresso: Projetos saudáveis exibem uma seqüência de progressões e digressões. Ou seja, a gente também erra. Não é sempre que a gente vai acertar, e isso é bom. Os erros são importantes para entendermos mais rápido o problema. Por isso a importância de ciclos de vida curtos. Quanto antes você detectar um erro, mais rápido você consegue voltar atrás, e corrigir o problema.
  4. Controle de qualidade: Testes de releases de demonstração é uma atividade vital, que completa uma iteração do projeto. Todas as soluções candidatas devem ser testadas, e os testes devem evoluir conforme o projeto. Nas primeiras iterações os testes devem ser menos estritos, focando em problemas de arquitetura, integração ... conforme o projeto evolui, teste de funcionalidade, teste de casos de uso e simulações vão se tornando mais necessários e completos, pois evoluem conforme o entendimento do problema.
Diversas outras idéias são colocadas pelo autor - Walker Royce, vice-presidente da IBM Rational Worldwide Brand Services - e são interessantes. Recomendo a leitura deste artigo a todos que têm interesse na área de engenharia de software e gerenciamento de projetos. Depois, coloquem seus comentários aqui, pra discutirmos mais as idéias do autor, e nossas próprias experiências.

Nenhum comentário: