Crise do software

A crise do software foi um termo utilizado nos anos 70, quando a engenharia de software era praticamente inexistente. O termo expressava as dificuldades do desenvolvimento de software frente ao rápido crescimento da demanda por software, da complexidade dos problemas a serem resolvidos e da inexistência de técnicas estabelecidas para o desenvolvimento de sistemas que funcionassem adequadamente ou pudessem ser validados.

A noção da crise do software emergiu no final dos anos 60. Uma das primeiras e mais conhecidas referências ao termo foi feita por Edsger Dijkstra, na apresentação feita em 1972 na Association for Computing Machinery Turing Award, intitulada "The Humble Programmer" (EWD340), publicada no periódico en:Communications of the ACM.

Logo que o desenvolvimento de software começou a caminhar com o advento das linguagens estruturadas e modulares, uma situação tornou-se clara diante de todos: a indústria de software estava falhando repetidamente na entrega de resultados dentro dos prazos, quase sempre estourando os orçamentos e apresentando um grau de qualidade duvidoso ou insatisfatório.

Em um relatório de 1969 [Naur+1969], esse problema já havia sido reconhecido. Conforme foi observado, cerca de 50 a 80% dos projetos nunca foram concluídos ou estavam tão longe de seus objetivos que foram considerados fracassados. Dos sistemas que foram finalizados, 90% haviam terminado 150 a 400% acima do orçamento e dos prazos predeterminados [Wallnau+2002].

Os problemas que originaram essa crise tinham relacionamento direto com a forma de trabalho das equipes. Eram problemas que não se limitavam a "sistemas que não funcionam corretamente", mas envolviam também dúvidas sobre como desenvolver e manter um volume crescente de software e ainda estar preparado para as futuras demandas. Essencialmente, eram sintomas provenientes do pouco entendimento dos requisitos por parte dos desenvolvedores, somados às técnicas e medidas pobres aplicadas sobre o processo e o produto, além dos poucos critérios de qualidade estabelecidos até então [Pressman2004].

A palavra crise já tem sido discutida por não descrever exatamente o problema em questão. Uma definição mais precisa talvez seja aflição crônica, pelas características de continuidade e intermitência dos sintomas [Pressman2004].

Todos esses fatores exigiram respostas e métodos que foram sendo aprimorados e documentados, dando início à área de Engenharia de Software. A busca por eficiência e competência revelou oportunidades, desafios e perigos que guiaram as tecnologias e apontaram novos rumos para as pesquisas.

A Crise de Software e a Idade Média

Para compreender melhor as origens da Crise de Software, podemos fazer uma comparação muito interessante com a história das outras indústrias. Por exemplo, antes da revolução industrial, os sapatos eram feitos de forma muito individual. Nesses tempos mais remotos, os sapateiros faziam cada par de sapatos de forma única para cada cliente, desde a obtenção da matéria prima até o produto final.

As semelhanças com a indústria de software começam logo aí. Primeiro, porque as técnicas de desenvolvimento de software ainda não estão totalmente maduras e consolidadas. Afinal, a variedade de técnicas que surgiram nas últimas décadas é enorme.

Em segundo lugar, existe uma tendência muito forte em desenvolver software sem aproveitar o material produzido no passado. E para piorar, além de entregá-lo quase sempre mal documentado, a maior parte do conhecimento envolvido na sua construção permanece apenas na cabeça dos desenvolvedores, o que deixa a situação muito parecida com a do sapateiro do exemplo.

Causas da crise de software

As causas da crise do software estão ligadas a complexidade do processo de software e a relativa imaturidade da engenharia de software como profissão:

• As estimativas de prazo e de custo freqüentemente são imprecisas

• Não dedicamos tempo para coletar dados sobre o processo de desenvolvimento de software;

• Com poucos dados históricos como guia as estimativas tem sido a olho, com resultados previsivelmente ruins;

• A produtividade das pessoas da área de software não tem acompanhado a demanda por seus serviços;

• Os projetos de desenvolvimento de software normalmente são efetuados apenas com um vago indício das exigências do cliente;

• A qualidade de software às vezes é menos que adequada o Só recentemente começam a surgir conceitos quantitativos sólidos de garantia de qualidade de software;

• O software existente é muito difícil de manter o A tarefa de manutenção devora o orçamento destinado ao software; o A facilidade de manutenção não foi enfatizada como um critério importante.

. A crise se manifesta de varias formas:

• Projetos estourando o orçamento; • Projetos estourando o prazo;

• Software de baixa qualidade;

• Software muitas vezes não atingia os requisitos;

• Projetos ingerenciáveis e o código difícil de manter.

A maior parte dos projetos continuam com estes problemas ainda na atualidade, assim pode se dizer que a crise continua vigente ainda na atualidade.

As possíveis soluções para a crise de software:

• O uso de melhores técnicas, métodos e ferramentas; • Mais treinamento e educação: Atualmente não se investe o suficiente;

• A mudança de paradigma sobre o que é desenvolver software e como deveria ser feito.

Exercícios: 1. Baseado no artigo o que seria necessário aplicar para evitar a Crise do Software?

⇒ O uso de melhores técnicas, métodos e ferramentas; ⇒ Mais treinamento e educação: Atualmente não se investe o suficiente;

⇒ A mudança de paradigma sobre o que é desenvolver software e como deveria ser feito.

2. Em sua opinião, estamos ainda em uma Crise de Software? Comente sua resposta. Sim, a engenharia de software ainda precisa evoluir para atingir patamares similares a outras engenharias. Os projetos de software ainda estão sujeitos a fracassos e é importante que sejam mantidas pesquisas com o objetivo de gerar novos processos e padrões para facilitar seu desenvolvimento. 3. Em sua opinião, a comparação entre a fabricação de sapatos e de software procede? Comente sua resposta. Sim, pois o fato da maioria dos software serem feitos sob medida, insere um complicador em seu desenvolvimento. 4. Qual o objetivo da Engenharia de Software?

A busca por eficiência e competência no desenvolvimento de softwares. 5. Segundo a Engenharia de Software, o que é um software de baixa qualidade?

Software sem documentação e com código desorganizado que não permite a extensibilidade. 6. O fato de o Software ser feito sob encomenda é um complicador? Torna a construção, de certa forma, artesanal? Comente sua resposta. Sim, cada software deve ser construído de forma única. Ele é desenvolvido através do conhecimento e experiência dos analistas, projetistas e programadores. A criatividade é peça fundamental neste desenvolvimento. 7. Em sua opinião, existem outras possíveis soluções para a crise de software além das descritas neste artigo? Sim, a busca por novos processos e a utilização de técnicas de gerenciamento de projetos.

Comentários