A Crise no Desenvolvimento de Software



Nos anos mais recentes temos assistido a uma preocupação crescente em relação à “crise do software”, a qual está relacionada com duas ordens de fatores: 1) O aumento do custo do desenvolvimento de software; 2) Com a Incapacidade dos sistemas de software para entregarem os resultados alinhados com as necessidades dos utilizadores.

 
Alguns exemplos bem conhecidos de projetos de desenvolvimento de software que não atingiram os objetivos pretendidos, foram:
  • O desenvolvimento de um sistema produzido nos EUA pelo Departamento de Veículos Motorizados. Este sistema tinha como objetivo harmonizar o processo de registo de licenças de condução em todos os Estados. Custou 43 M$ e nunca foi usado.
  • Uma companhia aérea de renome tentou ligar o seu sistema de reservas com o sistema de reservas de duas grandes cadeias de hotéis. O projeto foi cancelado depois de se ter gasto 165 M USD.
  • O sistema computorizado de tratamento de bagagens num novo aeroporto resultou em perdas de milhões de USD decorrentes dos atrasos a que obrigou na data da inauguração do aeroporto.
Os exemplos anteriores represente grandes projetos que falharam, mas a realidade é que uma percentagem significativa do software que é produzido não produz os resultados esperados. As causas desta incapacidade para desenvolver produtos de software que cumpram com as espectativas dos utilizadores / clientes explicam-se por um conjunto relativamente pequeno de razões, dentre as quais as mais importantes são:
  • Os sistemas de software são cada vez mais complexos
  • Os sistemas de software assentam cada vez mais em plataformas distribuídas (o que está diretamente relacionado com a razão anterior, na medida em que este tipo de plataformas aumenta a complexidade do software a desenvolver)
  • A maioria dos sistemas antigos são baseados em Código Proprietário (Sistemas Legados). A modernização destes sistemas, ou o desenvolvimento de novos sistemas para substituir sistemas antigos colocam desafios de grande complexidade aos técnicos e riscos elevados para as organizações
  • Ciclos de desenvolvimento cada vez mais curtos (pressão de mercado)
  • Requisitos iniciais mal definidos
  • Gestão de risco deficiente
  • Testes insuficientes, e geralmente ocorrendo na fase final do ciclo de vida de desenvolvimento de software.
Quando as falhas do projeto são detetadas no final do processo de desenvolvimento, isso representa um enorme desperdício de tempo e de dinheiro. Vejamos com um pouco mais de detalhe as principais razões para a crise do desenvolvimento de software.

Os sistemas de software são cada vez mais complexos
 
O software é cada vez mais complexo em grande medida porque as novas tecnologias possibilitam o desenvolvimento de funcionalidades muito complexas, e porque as espectativas dos utilizadores em relação ao software criado são cada vez mais elevadas

Os sistemas de software assentam cada vez mais em plataformas distribuídas

A maioria dos sistemas atuais são distribuídos funcionando em LAN, WAN ou Internet o que coloca dificuldades adicionais ao desenvolvimento. Os projetos de software são frequentemente tão complexos que uma só pessoa não consegue ter uma visão global, clara sobre a totalidade do sistema. Isto tem como consequência que os técnicos de desenvolvimento produzem aplicações elaboradas que tentam fazer demais, e acabam por falhar não conseguindo cumprir com as espectativas dos utilizadores

A maioria dos sistemas antigos são baseados em Código Proprietário (Legado)

A necessidade de integrar código proprietário (código legado) com nova tecnologia, frequentemente adiciona complexidade aos projetos. Este problema é agravado pelo facto de muitos dos programadores originais já não estarem na organização.

Ciclos de desenvolvimento cada vez mais curtos (pressão de mercado)

A necessidade de colocar no mercado novos produtos, e produtos inovadores, antes da concorrência coloca pressão acrescida nas equipas de desenvolvimento

Requisitos iniciais mal definidos

Pouco tempo dedicado a perceber o que os utilizadores pretendem do novo sistema e falta de método, faz com que os técnicos de desenvolvimento não tenham uma compreensão completa sobre o que estão a criar. Se os requisitos do sistema não estão completamente definidos, antes do desenvolvimento se iniciar, é provável que o resultado não vá de encontro às espectativas dos utilizadores, causando insatisfação ou excesso de alterações e de repetição de trabalho

Gestão de risco deficiente

A incapacidade para analisar e gerir o risco, ao longo de todo o processo de desenvolvimento do software, aumenta a probabilidade do projeto falhar

Testes insuficientes

Os testes devem acompanhar todo o processo de desenvolvimento, quanto mais cedo começarem as ações de verificação menor será a probabilidade de encontrar no final erros que exigirão muito trabalho adicional para serem resolvidos. Contudo só a realização de testes não garantem a qualidade. É preciso planear os testes e garantir que os mesmos são realizados e que os resultados são avaliados dando lugar às ações de melhoria ou correção necessárias.

Postagens mais visitadas deste blog

PMBOK v6: 7.4 Controlar os Custos do Projeto

PMBOK: Ferramentas e Técnicas – Método da Corrente Crítica (Parte 1)