E-Zine Exclusivo para o Whastapp

Qualidade de Software: Uma questão de eficiência.

foto_ramos Qualidade de Software: Uma questão de eficiência.

Ramos de Souza Janones

Janones, é um empreendedor brasileiro apaixonado por empreendedorismo e tecnologia. Ao longo dos anos trabalhando com o desenvolvimento de softwares desktop desde a linguagem Clipper, passando pelo Delphi e atualmente com Java.

Optou pela formação de Publicidade e Marketing por sua segunda empresa de tecnologia ter participado do "boom" da internet nos anos 90 e na procura de melhorar seus conhecimentos em negócios.

Em razão da principal formação e profundos conhecimentos em programação e banco de dados, é capaz de realizar o desenvolvimento de aplicativos web, desktop e mobile com maior criatividade e inovação que profissionais de desenvolvimento com uma formação única e mais especifica, dedicada somente ao desenvolvimento de softwares.

Com toda sua experiência com empresas de software, sua formação e paixão por negócios escreveu o livro "Marketing para Empresas e Profissionais de Software", publicado pela editora carioca Ciência Moderna em 2012. Além de outros livros sobre programação.
foto_ramos Qualidade de Software: Uma questão de eficiência.

Por Ramos de Souza Janones.

Você sabia que, a grande maioria das empresas de software no Brasil gasta 70% do tempo de desenvolvimento corrigindo erros, ao invés de inovar e desenvolver novas soluções?

É um trabalho de reescrever códigos ao invés de criar novos códigos, inovar, criar novas soluções. Existem empresas que já estão na versão 5 de seu software, mas tem clientes que ainda usam a versão 3, porque os clientes morrem de medo de atualizar, por causa dos históricos de erros em novas versões – eles preferem os problemas já conhecidos. Empresas que levam o software ao cliente e uma tela não funciona, ou uma correção de um problema que afetou outro lugar no sistema e uma infinidade de questões, aqui vamos ilustrar apenas algumas:

Não existem requisitos ou documentação.

Geralmente desenvolvedores não fazem a tarefa de casa levantando os requisitos de software, já começam a escrever o código conforme é pedido. Ou, pior, não fazem as documentações necessárias de análise antes do desenvolvimento de um software. Isso causa diversos problemas:

  • Quando o desenvolvedor desconhece os requisitos, ele provavelmente voltará a reescrever um código que já foi escrito, pela falta de análise, desordem, descaso por não levantar os requisitos.
  • Às vezes pode até haver requisitos, mas numa equipe cada desenvolvedor pode interpretar os requisitos de uma forma diferente.
  • Requisitos mal levantados ou mal escritos por falta de conhecimento ou experiência.
  • Falta de uma documentação do software.
  • Documentação mal elaborada.

Quando há a falta de documentação o serviço de software fica complicado em diversos sentidos: há uma grande dificuldade de encontrar mão de obra especializada, e quando encontram, devido à falta de documentação, os contratados levam meses para conhecer o software da empresa, afinal, o conhecimento está na cabeça de alguns; é difícil fazer teste de software para garantir um menor risco de erros; o desenvolvimento de software é comprometido aumentando as chances de erros do software. Estes são apenas alguns exemplos.

Não existe a fase de projeto de software

Simplesmente levantam-se rapidamente os requisitos e inicia o desenvolvimento, sem uma analise e projeto. Isso leva a falta de documentação e inicio de vários problemas de, no futuro, ter que reescrever códigos com erro, além de dificultar para a equipe de testes a análise do software.

Controle de mudanças e de versões inadequadas (ou inexistentes)

Não há um controle do que foi mudado, um muda o banco de dados sem comunicar e interferem outros módulos do software. Não há uso de controle de versões. O que é um erro. Há diversas ferramentas que fazem este controle, como o CVS.

Foco na entrega

Muitos pensam em entregar o mais rápido o software, sem se preocupar com a qualidade. Isso faz o software voltar com diversos erros encontrados, muitas vezes pelos clientes, o que é péssimo. É melhor colocar um prazo real e entregar com qualidade, que correr para entregar rápido. Há empresas que eliminam a análise de documentação do projeto em nome de “produtividade”, mas esta suposta “produtividade” é apenas ilusória.

Inexistência de um time de testes

Geralmente quem faz os testes são os desenvolvedores. Isso é um erro. Eles seguem uma lógica que é diferente da lógica de usuários finais. Ou quando tem uma equipe de testes, é a secretária, o office-boy, ou outros funcionários da empresa que não fazem um teste correto. Ou a falta de ferramentas de automação de testes. Ou o teste é realizado pelos próprios clientes, o que é pior.

Time de testes focado em testes superficiais

Quando há, como foi citado no item anterior, não utilizam ferramentas de automação de testes, de ferramentas de gestão de testes, de gestão de defeitos, etc. Fazem aquele teste de usuário, mesmo assim superficial, não fazem teste do banco de dados, do desempenho do sistema, de análise do código, não catalogam os defeitos em níveis de defeitos, não criam regras de mensagens de erros para ajudar ao usuário a contornar os possíveis erros, etc. Hoje montar uma equipe de testes é importante, se estuda muito teste de software, são raros os profissionais especializados e são muito bem remunerados.

Desenvolvimento reativo

O desenvolvimento é focado na correção de erros, ao invés da evolução do software ou novas soluções. Isso devido aos fatores já mencionados.

O teste e a qualidade de software hoje em dia são tão importantes e é um assunto muito discutido no mundo todo e já há alguns anos no Brasil, porque hoje tudo depende de software: o piloto de avião para navegar, sistemas de pagamentos de contas, sistemas bancários, enfim, uma afinidade de softwares que todos nós dependemos. Um erro pode colocar a vida de pessoas em risco, perdas de negócio e produtividade, prejuízos financeiros, comprometimento da reputação da empresa, etc. Vemos quase que diariamente noticias de empresas prejudicadas devido a erros em softwares.

Hoje softwares se comunicam com tudo: WebService de nota fiscal eletrônica, PAD, celulares, internet, rede, etc. Devem se portar para os mais diversos sistemas operacionais, os mais diversos browsers, e tudo isso leva a uma maior complexidade, não apenas de código mas de análise, e uma boa documentação para manutenção e continuidade dos softwares.

Sem um bom levantamento de requisitos, análise, documentação e projeto a chance de erros é enorme e pior: sem todos estes passos antes do desenvolvimento será um grande pesadelo difícil de sair.

Se a engenharia em geral gasta seu tempo em análise, documentação, projeto e uma série de bateria de testes, porque a engenharia de software deve ser diferente? É preciso mudar a mentalidade e cultura dos desenvolvedores e empresas de software a investirem mais nestes itens, não apenas para a melhora na qualidade do software, mas para melhorar o rendimento da equipe interna, de novos contratados, criação de novos produtos ao invés do foco reativo, diminuição da equipe de suporte técnico, consecutivamente dos custos da empresa, maior competitividade no mercado, consecutivamente um lucro maior.

Trocam tudo isso em nome de “maior produtividade”, o que é um erro, não aumenta a produtividade coisa nenhuma, só piora, é comprovado através de pesquisas que a grande maioria das empresas brasileiras gastam 70% do tempo de desenvolvimento corrigindo erros, por falta dos itens já mencionados. Onde está a produtividade? É uma ilusão pensar que economizando nestes itens haverá maior produtividade. Além do mais, basta utilizar ferramentas CASE que geram o código a partir da documentação. E vamos falar um pouco de ferramentas CASE.

Sobre ferramentas CASE

Ferramentas CASE (do inglês Computer-Aided Software Engineering) é uma classificação que abrange todas as ferramentas baseada em computadores que auxiliam atividades de engenharia de software, desde análise de requisitos e modelagem até programação e testes. Podem ser consideradas como ferramentas automatizadas que tem como objetivo auxiliar o desenvolvedor de sistemas em uma ou várias etapas do ciclo de desenvolvimento de software

Objetivos

  • Melhoria da qualidade de software
  • Aumento da produtividade no processo de software

Vantagens do uso de ferramentas CASE

  • Qualidade no produto final
  • Produtividade
  • Agilizar o tempo para tomada de decisão
  • Menor quantidade de códigos de programação
  • Melhoria e redução de custos na manutenção
  • Agilidade no retrabalho do software

Desvantagem do uso de ferramentas CASE

  • Incompatibilidade de ferramentas
  • Treinamento para utilização

Uma ferramenta CASE que gosto bastante é o Enterprise Architect, que permite tudo isso e ainda gerar códigos em:

  • ActionScript
  • Ada
  • C e C++
  • C#
  • Java
  • Delphi
  • Verilog
  • PHP
  • VHDL
  • Python
  • System C
  • VB.Net
  • Visual Basic
  • E mais…

Esta é apenas uma solução para documentação e análise de sistema, que permite aumentar a qualidade melhorando ainda mais a produtividade no desenvolvimento de software.

Muito foi falado de testes neste artigo, então apresento aqui algumas ferramentas de testes open-source:

Ferramentas de Testes

Para automação de testes podemos citar as seguintes ferramentas open-source:

  • Testlink – www.teamst.org – Para desenvolvedores Web.
  • Selenium–Testes –  Automatizados para Web por meios Funcionais e de Aceitação. http://seleniumhq.orgJMeter
  • Testes de performance em aplicações de diferentes tipo de servidores (HTTP/HTTPS, SOAP, JMS, etc..). http://jakarta.apache.org/jmeter
  • Watir –Testes Automatizados para Web escritos na linguagem Ruby. Existem derivações em .Net (WatN) e Java (WatJ) http://watir.com
  • FitNesse–Web Server – Wikie ferramenta de Teste Automatizado para suportar Testes de Aceitação http:// jakarta.apache.org/jmeter/jakarta.apache.org/jmeter

Conclusão

É preciso mudar a mentalidade e cultura de desenvolvedores e empresas de software para aumentar não apenas a qualidade de software, mas a rentabilidade das empresas de software em geral. Um grande desafio, uma vez que as faculdades, universidades e cursos técnicos formam desenvolvedores com esta mentalidade e cultura atrasados no mundo de hoje.

Os profissionais e empresas de software deveriam investir em treinamentos de análise, documentação e orientação a objetos, além de testes de software e, incentivar os funcionários a adotarem a risco estas metodologias de análise, desenvolvimento e testes de software. Só assim poderemos melhorar o cenário do mercado de software nacional, podendo inclusive competir com o mercado internacional.

Ah, se gostou deste artigo, vai adorar este livro:

Livro do curso: Marketing para Empresas e Profissonas de Software

capalivro Qualidade de Software: Uma questão de eficiência.

Esta obra tem como objetivo levar o leitor a pensar sobre todas as estratégias de mercado a fim de se destacar da concorrência no setor de software, aumentando suas chances de vendas. 

Em todos os capítulos do livro há estudos de casos, conteúdos complementares e dicas de ferramentas que tornam a obra completa, levando o leitor a uma reflexão de todo seu negócio e tornando-o competitivo e lucrativo.

Mais sobre o livro….

Top
%d blogueiros gostam disto: