O gerenciamento de desenvolvimento de softwares

Antonio Jorge Serrano Cavalcante

Engenheiro civil; pós-graduado em Gestão de Projetos pelo IETEC

Embora apresentem necessidades comuns, o gerenciamento de projetos que envolvem o desenvolvimento de softwares é relativamente diferente do gerenciamento de outros projetos. . A diferença parece estar nas peculiaridades da natureza do software, como o fato de não podermos acompanhar sua performance durante a produção e muito pouco se pode fazer para testá-lo por etapas.

Durante seu desenvolvimento não existe um processo de manufatura, embora os desenvolvedores se empenhem para fazê-lo ficar o mais próximo possível. O processo de desenvolvimento do produto software só é concluído quando este é utilizado pelo usuário. Na grande maioria das vezes os problemas que deveriam ter sido identificados durante o processo de desenvolvimento só serão identificados durante sua utilização pelo usuário final. Nos processos de manufatura, as inspeções (revisões) que são normalmente parte da rotina do processo, identificam os problemas previamente ao seu desenvolvimento. Isto faz com que o processo de manufatura de produtos seja mais gerenciável e o cliente ou usuário final receba o produto com uma alta margem de confiabilidade.

O que normalmente percebemos, é a grande dificuldade por parte daqueles que trabalham nessa área em encontrar uma metodologia adequada que permita um melhor gerenciamento dos projetos de desenvolvimento de software. Com isto fica mais difícil planejar, estimar o tamanho, modificar e produzir o software. Particularmente no Brasil existe pouca disciplina no processo de desenvolvimento e da documentação associada a pequenos projetos de software. Por sua vez não é diferente nos grandes projetos, com a agravante que são ainda mais difíceis devido à complexidade da organização, além da complexidade do produto.

Também não existem muitas ferramentas disponíveis para ajudar na construção dos softwares, e a profissão ainda não conseguiu atingir o mesmo nível de maturidade que outras áreas da engenharia.

A construção de software é ainda uma das mais recentes atividades da engenharia, estando associada aos elementos básicos do software onde a única coisa constante é a mudança, seja ocasionada pelo hardware, sistema operacional, linguagem, interfaces externas e internas.

O que normalmente se tem levado em consideração como objetivos primários no Gerenciamento de Projetos em software são a qualidade, a produtividade e a redução de riscos.

De acordo com o Software Engineering Institute (SEI) os pontos técnicos para o gerenciamento de software devem incluir uma definição no modelo de ciclo de vida e nos tipos de planos a serem utilizados para testes, documentação, desenvolvimento, qualidade, gerenciamento, etc.

Vários autores demonstraram a importância de um bom gerenciamento de projeto de software, por meio de dados como os mostrados a seguir:

75% dos projetos de software falham, sendo sua principal causa o pobre gerenciamento (DoD, 1994). Segundo o Standish Group (1994), 31% dos projetos de software são cancelados antes de sua conclusão, e 53% excedem em mais de 50% suas previsões de prazo e custo.

Ainda segundo eles, os principais motivo para os problemas apresentados, estão relacionados a falhas no gerenciamento de software durante a fase de desenvolvimento.

Dos 16 principais fatores associados ao fracasso de um software, 9 estão relacionadas com o gerenciamento do projeto (Jones, 1996)

Estima-se que apenas cerca de 10% dos projetos de software sejam entregues com sucesso, cumprindo as estimativas. E segundo Walker (1998), o problema é mais de gerência do que técnico.

A gerência de desenvolvimento de software deve identificar as partes mais difíceis de um desenvolvimento em particular e sistematicamente trazer soluções eficientes.
Requerimentos que podem comprometer o projeto devem ser tratados no início do processo.

Neste particular o papel do gerente de projeto de software é de fundamental importância para que os objetivos da gerência de projetos de software sejam alcançados. O gerente trabalha com idéias, coisas e principalmente pessoas e suas atividades são: planejar, assessorar, organizar, dirigir e controlar. Esta visão deve considerar que o desenvolvimento de software envolve uma atividade e “seqüenciamento de criatividade” muito maior que as demais áreas. O gerente deve também ter o comprometimento da equipe a qual deverá dar e manter prazos, custos e qualidade estipulados.A atividade de gerenciar projetos é a etapa mais alta do processo de software. Esta atividade inclui pontos de conhecimento e organização que são pré-requisitos básicos para esta função, além do trabalho de ambientação do fator humano.
Seguem abaixo alguns pontos para gerenciar um projeto de software focando no que os gerentes necessitam para criar um plano de desenvolvimento, utilizando estimativas do tamanho e do esforço para executá-lo com atenção à produtividade e à qualidade. Pontos tais , como a gerência de risco, os modelos de ciclo de vida, organização da equipe de desenvolvimento e a gerência do pessoal técnico são considerados como primordiais para o controle eficiente, cujo resultado será a produção de software com baixo risco.

No negócio de software, provavelmente as únicas coisas previsíveis são as freqüentes mudanças de requisitos e a incerteza provocada pela imaturidade de novas tecnologias. Em muitos casos, os gerentes tentam impor o “previsto” através das rigorosas metodologias que são um conjunto de processos lineares que necessitam ser feitos para honrar os cronogramas e datas. Para lidar com novas tecnologias os gerentes contratam, a peso de ouro, equipes com um perfil técnico que em pouco tempo se desatualiza. Menor atenção é dada ao treinamento e à melhoria das habilidades da equipe, tal como o planejamento do projeto, a estimativa, programação, a identificação e gerenciamento de risco, e assim por diante.

Embora muitos gerentes sejam mais céticos com relação a essas novas metodologias,( eXtreme Programming", SCRUM, "Feature Driven Development) elas funcionam em muitos casos, mas requerem atenção especial a algumas questões tais como perfil da equipe, adaptação de processos, e sistemas de controle e gestão. O perfil da equipe precisa também ser aperfeiçoado em termos do uso de métodos ágeis, bem como nas questões de estimativas, planejamento e gerenciamento de risco.

A gerência de projeto do software não é sempre tão fácil como parece. As técnicas de gerência tradicionais de projeto são incapazes de adaptar-se muito bem às mudanças e aos novos riscos. Isto faz com as equipes tenham cada vez mais dificuldades para reagirem rapidamente às mudanças intrínsecas ao processo de desenvolvimento de software. Entretanto, as novas técnicas com métodos ágeis podem tornar mais fácil a vida de gerentes de projeto e equipes desde que executadas corretamente. Uma equipe qualificada e comprometida conseguirá entregar softwares melhores e mais baratos mais rapidamente.