O Desenvolvimento de software é uma das áreas que tem ganhado cada dia mais espaço entre os profissionais: é uma atividade que exige conhecimento, organização, pensamento lógico e estratégico e muita compreensão de vários ramos de atividades. Isto porque conhecer as linguagens de programação e saber programar, por si só, não traz todas as ferramentas necessárias para desenvolver softwares com qualidade. É preciso compreender a atividade do cliente para construir a ferramenta que atenda suas necessidades e que esteja de acordo com a capacidade de seus recursos tecnológicos.
Antes de tudo, devemos nos ater a uma pergunta básica: o que é qualidade de software? Como definir e como mensurá-la?
Podemos compreender a definição de qualidade de software através de uma premissa básica: a necessidade do cliente. A qualidade de um software é definida pelas características que ele possui, analisadas sob a ótica do cliente. Se essas características atendem ao que foi solicitado pelo cliente no início da elaboração do projeto e se atende às suas expectativas, podemos dizer que temos um software de qualidade.
Entretanto, não é somente essa análise que define se um software tem qualidade ou não. Na verdade, podemos estabelecer um grau de qualidade, através da presença de características e análises que podem identificar o quanto nosso produto realmente é bom e bem desenvolvido.
Esse é um assunto que permite longas e produtivas discussões e observações, mas, sucintamente, podemos elencar dez pontos principais para se desenvolver um software com qualidade:
1) Conheça bem o seu cliente
É impossível fazer algo bem feito se você não souber para que ele servirá. E, nesse ponto, você precisará conhecer melhor o cliente e seu processo de trabalho, pois assim você saberá o que realmente será preciso e o que será dispensável, bem como tornará o programa mais eficiente. O cliente tem sua visão de trabalho e muitos ainda carecem de conselhos sobre processos relativos ao seu negócio. Se sua ferramenta não atender às necessidades dele, fatalmente será deixada de lado e isso impactará negativamente sobre sua imagem.
2) Seja consultor em diversos aspectos, da administração aos processos
Em diversas ocasiões, você irá se deparar com clientes que precisam de esclarecimentos e auxílio na execução de suas atividades. Ou com recursos limitados demais para permitir o funcionamento do software que atenda suas necessidades.
Muitas vezes, o próprio cliente não tem ideia do que é necessário ao seu negócio, em se tratando de softwares. É preciso, mais que ser programador, ser consultor para seu cliente, apontando os pontos de melhoria tanto de processos, como de recursos e sendo absolutamente sincero quanto ao resultado do software nos moldes praticados. Ainda que seu programa seja eficiente e esteja de acordo com o que seu cliente precisa, sem a correta orientação e recursos mínimos, ele ficará subutilizado ou trará mais problemas que soluções.
3) Dê a devida importância para o gerenciamento de projeto
Nenhum chef começa um novo prato sem saber o que está fazendo. Nenhum professor inicia seu trabalho sem um plano de aula. O fato é que ninguém pode iniciar uma atividade simplesmente começando a executá-la. É necessário planejá-la, mensurá-la, estimar a equipe necessária para realizá-la, seus custos e os recursos necessários, antes mesmo de escrever a primeira linha de código.
O gerenciamento de projeto é talvez o ponto mais importante no desenvolvimento de um software de qualidade. Sem ele, certamente haverá perda de tempo, de receita, retrabalho e o código precisará ser reescrito várias vezes, o que provavelmente comprometerá em definitivo o resultado final. A única forma de evitar isso é através da gestão do projeto, desde o primeiro contato com o cliente até a entrega e, posteriormente, o acompanhamento durante o período de garantia.
4) Conheça os recursos computacionais de seu cliente
O software precisa caber e funcionar com desenvoltura no ambiente do seu cliente. De nada adianta testá-lo em computadores de alta performance e desconsiderar que o cliente precisará manter uma rede de computadores com recursos limitados. É preciso ter ambiente específico para testes, similar ao do seu cliente e adequar seu funcionamento à capacidade dele.
5) Utilize ferramentas de mensuração de qualidade em seu software
A Engenharia de Software, que é a área da computação responsável pela especificação e desenvolvimento de sistemas, além de sua manutenção, dispõe de várias ferramentas e métricas que visam mensurar a qualidade de um sistema. Entre elas, podemos citar a análise ciclomática. É uma métrica que conta o número de decisões feitas a partir de um código. Em resumo, quanto mais pontos de decisão seu código tiver, maior sua complexidade, mais testes serão necessários e mais difícil será manter e ajustar seu código. Há diversas ferramentas, para cada linguagem de programação, que trabalham baseadas na análise ciclomática e são muito eficientes para realizar essa medição.
6) Organize seu código
Pode parecer básico, mas muitos programadores abrem mão de inserção de comentários e da correta endentação. Ocorre que alguns códigos – a maioria deles, em programas completos – se tornam complexos demais para ser analisado a “olho nu”, tanto pelo próprio desenvolvedor, como por outros profissionais.
Deixar seu código visualmente limpo e organizado é premissa fundamental para correção de problemas e modificações e inserções necessários no código a qualquer momento. Imagine que o mesmo cliente pode contratá-lo novamente para desenvolver um novo módulo para o software. Será preciso modificar toda a estrutura do código e, possivelmente, depois de algum tempo, será difícil retomar a linha de raciocínio e compreender cada bloco de códigos para não causar danos à estrutura original.
7) Seja econômico em recursos
Essa é uma outra dica simples, mas que impactará diretamente no resultado do seu trabalho: não insira aquilo que não foi pedido. Ainda que lhe pareça interessante, é importante ater-se ao que foi solicitado, uma vez que tempo de processamento é um dos principais problemas enfrentados no desenvolvimento de um software. E ainda que o banco de dados atual que será utilizado no programa seja de pequeno porte, não necessite de muita memória e recursos para processamento, alterações na estrutura do cliente poderão tornar o código impraticável se ele não tiver projeto para bancos de dados maiores.
8) Dê atenção a qualquer lapso, por menor que pareça
Uma pequena incorreção, mesmo que pareça inócua, pode ser a origem de um problema maior, se não for tratada de imediato. Logo, assim que surgir qualquer desvio, o melhor a fazer é alinhá-lo ao formato correto e não o deixar passar.
9) Prepare os utilizadores de seu software
De nada adianta ter uma ferramenta excelente se as pessoas que forem manuseá-las não conhecerem seus recursos. A subutilização de softwares é uma das principais causas de perda de clientes, pois além das equipes comumente preferirem as maneiras habituais de trabalhar, se não forem corretamente instruídas, lidar com um novo software pode ser difícil e gerar erros que ocasionalmente serão atribuídos ao programa e não aos utilizadores.
Mesmo que não haja estrutura ou tempo suficiente para orientar todos os utilizadores, é necessário pelo menos preparar com atenção especial uma pequena quantidade de multiplicadores e estar atento, durante o período de acompanhamento de resultados, à plena e correta utilização dos recursos.
10) Garanta sua plena utilização
Como já falado, sistemas que não são utilizados a contento geram dois problemas principais: a ferramenta cai em desuso, fazendo com que aquele cliente não volte a contratá-lo nem para desenvolvimento de outros softwares e nem para aprimoramento do anterior e ainda causando o terrível efeito de propaganda negativa. Softwares que não são corretamente utilizados acabam provocando a impressão errônea de que não são adequados à atividade. Esse acontecimento, eventualmente é atribuído ao desenvolvedor e não aos utilizadores. Por isso, é fundamental que as equipes conheçam todos os recursos e estejam aptas a utilizá-los, tornando o software plenamente produtivo.
Além dessas orientações, é preciso lembrar que a engenharia de software é uma das áreas mais dinâmicas que existem e exigem constante atualização dos profissionais. Além da formação acadêmica contínua, uma dica importante é buscar certificações na área, que incluem não somente a parte de TI, mas o gerenciamento de projetos e outras atuações intrinsecamente relativas à atividade. Abaixo, algumas das principais certificações que os profissionais buscam e das que agregam mais conhecimento e valorizam o profissional:
• Certified Information Systems Security Professional (CISSP) -(ISC)², relativa à segurança da informação, envolve computação em nuvem, gestão de risco e segurança móvel;
• Project Management Professional, do Project Management Institute, que habilita o professional à gestão de projetos e exige experiência de pelo menos 4500 horas (considerando os últimos seis anos de atuação);
• Microsoft Certified Solutions Developer (MCSD), específica para aplicações para Web e aplicativos para Windows Phone, envolve programação em HTML5, Javascript, CSS3, ASP.NET, MVC 4 e Windows Azure.
É importante buscar as certificações que mais se alinhem com sua área de atuação: além das citadas, existem várias outras. Há quem diga que o mercado não valoriza mais tanto o profissional certificado, entretanto, num mercado competitivo e com empresas de porte gigante buscando os melhores profissionais do mercado, certamente não se perderá nenhuma certificação feita que possa valorizar o currículo de um bom profissional!
(Créditos das imagens: pixabay.com)