/Blog

11-Erros-no-projeto-de-software-que-devem-ser-evitados

Neste post

11 Erros no projeto de software que devem ser evitados

A maioria dos projetos de software falham por fatores técnicos e humanos, resultando em prejuízos. Principais erros incluem planejamento inadequado, diagnóstico ruim, comunicação deficiente, cronogramas irrealistas, falta de testes, ausência de checklists, estouro de prazos, subestimação de riscos, entre outros. Conheça todos aqui.

É fato comprovado que a maioria dos projetos de software falham, causando prejuízos a empresas de todos os portes. Mas por que isso é tão comum? A resposta envolve fatores técnicos e humanos. Neste artigo, listamos as 11 principais causas que levam a erros no projeto de software e as soluções para reduzir o seu risco de ocorrência.

Antes de tudo, considere estes números:

Nada menos que 66% dos projetos de software falham.
Mais de 31% dos projetos hoje em andamento serão cancelados antes de serem concluídos.
52,7% dos projetos custarão 189% a mais que suas estimativas originais.
88% dos projetos de software no mundo ultrapassam prazo.

(Fonte: Standish Group)

Essas são estatísticas bastante preocupantes se você considerar o papel vital que os softwares desempenham na forma como trabalhamos, produzimos e vivemos. Afinal, não é só uma questão de prejudicar os negócios, pois os softwares impactam na realidade do cotidiano das pessoas.

Daí a importância de entender por que tantos projetos de software falham e buscar garantir que a mitigação de riscos faça parte do processo de planejamento. Confira a seguir os principais erros que levam ao fracasso de projetos – e como evitá-los.

Os 11 principais erros no projeto de software

Erro nº 1: Plano de projeto ruim

Assim como construir um prédio com bases fracas leva facilmente a edificação à ruína, um plano ruim é o primeiro passo para o fracasso do projeto de software. De fato, é o pior erro que um gerente de projetos pode cometer. O planejamento deve ser amplo e detalhado, cobrindo todas as etapas do projeto, como objetivo, escopo, cronograma, distribuição de tarefas, gestão de riscos, etc.

💡 Solução: Quando feito da maneira certa, um plano ajudará a equipe a manter o curso do projeto mesmo diante de mudanças e imprevistos. Um plano adequado de software deve contemplar pelo menos os seguintes itens:

  • Escopo
  • Objetivos do projeto
  • Organização de projeto
  • Organização da equipe e papéis envolvidos
  • Riscos do Projeto
  • Descrição dos riscos
  • Estratégias de redução dos riscos
  • Recursos de software e hardware
  • Descrição dos recursos
  • Custos relacionados
  • Divisão do trabalho (atividades do projeto, milestones e resultados de cada atividade)
  • Cronograma (dependência entre atividades, pessoas envolvidas, tempo para cada milestone)
  • Mecanismos de monitoramento

Erro nº 2: Diagnóstico inadequado

Todo mundo sabe que a maioria das equipes de desenvolvimento tem um prazo curto e rígido, e que não deve ser comprometido. Mas, para cumprir o prazo, os times podem deixar de lado a pesquisa sobre o cliente. A má compreensão do que ele deseja resultará em mil ajustes em um produto confuso, abaixo da média, com bugs ou até mesmo levar o projeto ao fracasso.

💡 Solução: Os desenvolvedores de software precisam entender claramente o objetivo do projeto, o que o produto resolverá e quem é o usuário real. Por isso, a melhor maneira de criar um ótimo software é envolver o cliente em todas as fases de desenvolvimento e testes.

Erro nº 3: Comunicação deficiente

A equipe precisa entender a distribuição do trabalho. Sem uma ideia clara do que precisa ser feito e por quem, o progresso do projeto é comprometido, há perda de tempo e de recursos intelectuais e financeiros.

💡 Solução: Um sistema eficiente prospera com a boa comunicação e delegação adequada de trabalho, aumenta a chance de desenvolver o projeto dentro do prazo e criar uma entrega de valor para o cliente. Aqui, é preciso determinar como será a comunicação entre os envolvidos no projeto, incluindo o cliente, e de que forma as entregas ou aceites serão realizados.

Erro nº 4: Cronogramas irrealistas

O cronograma pode se tornar um pesadelo na ausência da palavra “não” – uma das maiores razões pelas quais os projetos de software falham é porque os gerentes de projeto concordam com alterações de escopo que tornam os cronogramas infactíveis.

💡 Solução: É função do gerente de projetos ter discussões francas com o cliente e saber limitar o trabalho que será executado, levando em conta cuidadosamente os recursos disponíveis para a equipe.

Erro nº 5: Ignorar os testes do produto

Se testes inadequados provocam uma perda absurda de tempo e recursos, não fazê-los é como colocar explosivos dentro do projeto. Os testes são cruciais para encontrar defeitos, bugs, erros ou outros problemas e uma das formas mais eficientes de verificar se o produto atende aos requisitos.

💡 Solução: Executar processos de testes de software ao longo do ciclo de desenvolvimento, em prazos regulares, ajuda a identificar falhas antes que seja tarde demais, evitando danos irreversíveis no projeto.

Aqui estão os principais tipos de testes:

  • Teste de aceitação: Verifica se todo o sistema funciona como pretendido.
  • Teste de integração: Garante que os componentes ou funções do software funcionem juntos.
  • Teste de unidade: Valida se cada unidade de software funciona conforme o esperado. Uma unidade é o menor componente testável de um aplicativo.
  • Teste funcional: Verificação de funções que “simulam” cenários de negócios com base nos requisitos funcionais, como o Teste de Caixa Preta, por exemplo.
  • Teste de desempenho: Testa como o software funciona em diferentes cargas de trabalho. O teste de carga é usado para avaliar o desempenho em condições reais.
  • Teste de regressão: Verifica se novos recursos quebram ou degradam a funcionalidade. No entanto, pode-se utilizar um Teste de Sanidade* para verificar menus, funções e comandos no nível da superfície, quando não há tempo para um teste de regressão completo.

* O Teste de Sanidade é um subconjunto do Teste de Regressão.

  • Teste de estresse: Testar quanta tensão o sistema pode suportar antes de falhar.
  • Teste de usabilidade: Validar o quanto um cliente pode usar um sistema ou aplicativo da web para concluir uma tarefa satisfatoriamente.

Os testes devem ser robustos e estressantes, ou seja, imitar as condições mais extremas que seu software encontrará no ambiente de produção. Inclua também boas práticas de qualidade de desenvolvimento de software, como QA.

Leia também:
O que é e como funcionam os testes automatizados
10 ferramentas para testes automatizados de software

Erro nº 6: Não ter um checklist

Os checklists devem ser usados durante várias fases do processo de desenvolvimento do projeto. Ou melhor, cada etapa ou subetapa do projeto pode e deve ter seu próprio checklist. Porém, os desenvolvedores podem estar ocupados fazendo testes e documentações finais e ignorar itens importantes destas listas que certamente vão causar algum tipo de problema mais à frente.

Por exemplo, é possível criar checklists para:

  • Descobrir erros de função, de lógica ou de implementação para qualquer representação do software.
  • Verificar que o software atende aos requisitos especificados.
  • Garantir que o software foi representado de acordo com padrões pré-definidos.
  • Especificações de design/interface/UI.
  • Desenvolver projetos mais gerenciáveis.
  • Analisar qualidade de codificação.
  • Garantir funcionalidades, medir desempenho
  • Elencar quais problemas e defeitos os testes de software devem contemplar.

💡 Solução: As checklists devem ser aplicadas a tudo o que envolva análise, projeto, codificação e teste, com foco em aspectos e defeitos comuns de cada fase correspondente.

Erro nº 7: Estourar o prazo do projeto

A falta de tempo suficiente para cada fase do projeto pode levar à análise inadequada dos requisitos, codificação apressada, testes insuficientes e documentação incompleta. O resultado pode ser um sistema que não atende às expectativas e falha em uma ou mais áreas-chave.

No entanto, estimar o tempo necessário para realizar cada fase de um projeto é difícil e é comum ser excessivamente otimista.

💡 Solução: Definir claramente o objetivo do projeto, estabelecendo as tarefas que serão realizadas e quem vai realizá-las; alinhar as expectativas do cliente e da empresa, para que todos estejam na mesma página, e ter indicadores de gestão. É importante também adotar uma metodologia ágil, como Scrum.

Erro nº 8: Subestimar riscos

A maioria dos gerentes de projeto falha em prever riscos, o que pode levar ao descarrilamento do projeto e também aumentar os custos. Por outro lado, superestimar os riscos também levará a obstáculos no andamento do projeto. Tanto a superestimação quanto a subestimação de projetos podem ser prejudiciais.

💡 Solução: É preciso elaborar um bom plano de riscos e definir medidas alternativas que possam ser implementadas para salvar o projeto em tempos de crise.

Leia também:
Gestão de riscos em projetos de Desenvolvimento de Software

Erro nº 9: Requisitos pouco claros

A especificação de requisitos é uma etapa determinante para o sucesso de um software. É o que define os objetivos e funções que serão executadas, com a descrição do que irá ocorrer a cada ação do usuário. Uma falha nos requisitos básicos do software pode levar o processo todo ao fracasso e a problemas de usabilidade, funcionalidade e de execução, além de desperdício de tempo e dinheiro.

A análise dos requisitos também auxilia nas estimativas de prazo e de custo do projeto.

💡 Solução: Especificar os requisitos funcionais e não funcionais, descrevendo o passo a passo de cada funcionalidade, assim como suas devidas restrições, além de especificar as necessidades do cliente e as exigências do negócio.

Erro nº 10: Desvio de Escopo: o temível “Scope Creep”

O temido desvio de escopo (“scope creep”) nada mais é do que trabalho adicional que a equipe de desenvolvimento de software não esperava ou para o qual não estava preparada, causando atrasos, custos adicionais e até mesmo o total desmoronamento do projeto.

Se o escopo está sendo alterado, possivelmente o prazo ou o custo vão aumentar (quando não os dois), pois as alterações solicitadas pelos clientes sempre são para acrescentar algo, e não para excluir algo do projeto.

💡 Solução: Resistir ao aumento do escopo requer objetivos bem definidos, comunicação consistente e disposição para dizer “não” quando as demandas se tornam irrealistas e se estendem além do escopo do projeto. É imprescindível avaliar a solicitação do cliente e verificar se realmente é possível efetuar a alteração sem afetar dois pontos da tríade, que são prazo e custo, o que muitas vezes não acontece.

Erro nº 11: Estimativas erradas

Estimativas incorretas podem comprometer as entregas ao gerar um cronograma impreciso, mais custos para o projeto, horas extras para entregar no prazo acordado com o cliente, entre outros problemas.

O processo de estimativa consiste em definir o escopo do projeto, estimar o esforço e tempo necessários e, em seguida, desenvolver o cronograma, levando em consideração fatores como disponibilidade de recursos, tecnologias envolvidas, etc.

💡 Solução: Utilizar técnicas de medição de tamanho do software e de esforço através de uma metodologia e de métricas ou ainda por analogia, em que as estimativas de tamanho do projeto atual são baseadas em outras já realizadas em projetos similares. A UDS, por exemplo, tem sucesso de 100% em suas estimativas baseadas em analogia devido a 20 anos de experiência em projetos de software para empresas nacionais e internacionais.

Leia também:
Como medir o tamanho do software

Erros em softwares custam trilhões de dólares às empresas

Em 2021, o Citibank perdeu meio bilhão de dólares por causa de um sistema mal desenhado. Tudo aconteceu quando funcionários faziam pagamentos de juros a alguns credores de um cliente. 

No entanto, uma interface mal projetada do sistema os induziu a um erro caríssimo: em vez de pagar US$ 7,8 milhões de juros, os funcionários acabaram transferindo US$ 500 milhões.

Além do prejuízo financeiro, ocorreu o dano à reputação da empresa junto aos clientes e o mercado.

Uma pesquisa realizada em 2018 pela Tricentis, identificou 606 falhas em sistemas de 314 companhias, que impactaram 3,7 bilhões de pessoas e resultaram em US$ 1,7 trilhões em perdas financeiras. 

De lá para cá, esse número vem aumentando a um percentual de 14% ao ano, segundo um relatório do Consortium for Information & Software Quality (CISQ, 2020).

As repercussões de erros em softwares não são apenas financeiras: também podem causar efeitos nefastos na segurança e privacidade das pessoas, vazando dados valiosos, ou mesmo ameaçar a saúde e a vida.

Daí a importância cada vez maior de seguir boas práticas de desenvolvimento de software, não apenas para assegurar códigos de qualidade e melhor documentação, como entregar um produto final livre de problemas.

Por fim, é importante dizer que o “projeto de desenvolvimento de software ideal” não existe. Cada um tem suas próprias características, funcionalidades, usuários, bugs, base de código e outros componentes.

Não tem mágica, mas conhecer os principais erros no projeto de software contribui para o desenvolvimento consistente e sustentável e ajuda a diminuir os riscos do fracasso com seus consequentes prejuízos para todos os envolvidos.

Desenvolvimento de Software UDS.

O atributo alt desta imagem está vazio. O nome do arquivo é traco-ok.png

Gostou deste artigo? Assine nossa newsletter e receba em primeira mão conteúdos sobre tecnologia, desenvolvimento de software, inovação e muito mais.

Simone Marques

Jornalista, especialista em mídias digitais e estrategista de conteúdos de tecnologia na UDS.

Posts Relacionados

Inscreva-se no nosso blog

Receba em primeira mão os conteúdos mais quentes da área de Tecnologia.