Processos de Software – Produtividade e Padronização no Desenvolvimento

AGRADEÇA AO AUTOR COMPARTILHE!

No artigo anterior sobre Processos de Software e a Qualidade do Produto, foi dito que ter grandes experiências, excelentes conhecimentos técnicos em programação, modelagem de banco de dados, tendências, etc., não são suficientes para gerar um produto de software de qualidade. Tendo em vista todo este otimismo, muitos projetos falham na entrega de suas funcionalidades e até mesmo são interrompidos antes de sua conclusão. Pois extrapolam prazos de entrega, geram custos bem acima do previsto ou cobrado, desmotivação da equipe de desenvolvimento recorrente as correções constantes de falhas, alteração de membros da equipe,  o cliente muda frequentemente de opinião e o principal, a insatisfação dele por ter um produto fora de conformidade.

Então, o que fazer?

A solução estaria então em adotar um Processo de Software bem definido. Muitos são os tipos de processos e muitas são as necessidades de equipes e das empresas em ter e utilizar um bom Processo de Software a fim de adquirir organização e qualidade em seus produtos, respeitando prazos de cronograma, administrando esforços de equipe, obtendo mais produtividade e padronização de desenvolvimento.

Porém, não acredito que exista um único processo perfeito para o desenvolvimento de software, ou seja, para adquirir um bom processo, deve ser levado em consideração fatores como:

  • Tipo de software que está desenvolvendo;
  • Tamanho de equipe (desenvolvedor único, dois desenvolvedores, equipe pequena, equipe com mais de 100 membros);
  • Infraestrutura;
  • Capital investido;
  • Entre outros.

Entre diversos tipos de Processos de Softwares, destacam-se os modelos em Cascata (CMMI), Espiral, Iterativos (PU – Processo Unificado) e os modelos Ágeis (XP, Scrum).

Mas por que utilizar um Processo de Software?

Dentre alguns fatores, podemos definir que o Processo de Software visa à qualidade do produto como um todo, onde é estabelecida a lógica do domínio da aplicação para o projeto decidindo seu scopo e comprometimento do Patrocinador, levantamento dos requisitos, riscos de projeto, padronização de desenvolvimento, construção do modelo e prototipagem, implementação sistemática de testes, feedback do cliente, revisões técnicas, gerência de configuração, etc. Porém, todo este conjunto (o Processo) não basta apenas ser implementado, ou seja, deve-se ter o gerenciamento do processo como um todo a fim de garantir que ele esteja sendo executado corretamente por seus envolvidos.

Em outras palavras, o Processo de Software não é uma tarefa simples de implementar numa organização. Ele “afeta” diretamente seus envolvidos, no qual em alguns casos, são obrigados a saírem de suas zonas de conforto. O processo também confronta a cultura de uma empresa, e todo este conjunto gera uma certa resistência dos envolvidos em colaborar para o sucesso do mesmo.

Meu artigo não é de forma alguma induzir o leitor a optar para um processo X ou Y, mas sim avaliar o nível caótico de não se utilizar um processo e os benefícios conquistados com sua aplicação.

Particularmente, um dos modelos que mais me apego são os modelos Ágeis, devido a suas práticas, valores e por serem iterativos.

Os modelos iterativo e evolutivo envolvem a imediata programação e teste de um sistema e considera que o desenvolvimento começa antes que os requisitos tenham sido definidos em detalhes. Evitando assim grandes desgastes e desmotivação na fase inicial.

Nesta abordagem de ciclo de vida, o desenvolvimento é organizado em uma série de mini projetos curtos, de duração fixa chamadas de iterações. O produto de cada um é um sistema parcial, executável, testável e integrável. Cada iteração inclui suas próprias atividades de análise de requisitos, projeto, implementação e teste. No modelo Ágil, os detalhes de requisitos são acrescentados no decorrer do processo, utilizando assim, a modelagem na perspectiva de principalmente entender o que foi pedido e não documentar.

Ao contrário, nos modelos em cascatas (ou sequencial), há uma tentativa de definir em detalhes todos ou a maioria dos requisitos antes da programação e também de criar um projeto abrangente, antes da programação. Igualmente, há uma tentativa de definir um plano ou cronograma confiável logo no início. Outro ponto a ser avaliado, é que neste modelo, modificações tardias de requisitos não são bem vindas. Deve levar-se em conta que custos de operações aqui são bem mais altos e é um modelo muito burocrático.

Apesar do meu apego ao modelo Ágil, o ideal é que as equipes criem seu próprio Processo de Software, olhando na perspectiva de não diminuir o valor de outros métodos e sim, agregando as boas práticas mais comuns que atendam as suas necessidades dentro da sua realidade, não se esquecendo de manter um contínuo amadurecimento do processo como um todo.

Fonte: Blog Rafael Amaral
Twitter: @rafaelamaralll

AGRADEÇA AO AUTOR COMPARTILHE!

Deixe seu comentário

Seu endereço de e-mail não será publicado. Campos com * são obrigatórios!

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">