Como usar métricas para garantir a qualidade de software

Aplicação de princípios de engenharia para controle de processos de construção de sistemas

Felipe Corniani de Genaro
Launchpad

--

Muito mais do que um programador capaz de escrever as melhores linhas de código, a construção de um software depende do equilíbrio entre seus regimes de desenvolvimento, o que só é possível com processos gerenciais de qualidade. A seguir discutirei como a melhoria contínua na gestão de projetos depende diretamente da integração das áreas de uma organização e do aproveitamento dos dados compreendidos e coletados nos processos iniciais.

A crescente importância da tecnologia como eixo central em diversos setores resulta em um ambiente cada vez mais competitivo para o desenvolvimento de softwares. A reação natural das empresas é tentar se reinventar no mercado e sempre buscar diminuir seus custos, o que faz com elas produzam especificações cada vez mais complexas e de difícil entendimento, onde cada decimal após a vírgula importa.

Fica evidente, portanto, que a qualidade nos serviços prestados se tornou ponto crítico e de grande impacto no produto final, sendo imprescindível a utilização de normas para o controle da qualidade de software e métodos para garantir sua assertividade e conformidade.

Medições de previsão e de controle — SOMMERVILLE, 2011

Engenharia de Software

Como toda engenharia, ela visa construir algo. Mas o que é engenharia de software? É um conjunto de métodos, ferramentas e procedimentos com o objetivo de construir software com qualidade.

A combinação desses 3 elementos fundamentais possibilita ao gerente o controle do processo de desenvolvimento do software desde as fases iniciais de concepção do projeto até sua manutenção, e oferece ao profissional uma base para a construção de softwares de alta qualidade, para além dos processos técnicos. (PRESSMAN, 2002)

Para começar a entender um pouco mais sobre esse mundo é importante entender alguns padrões básicos pré-estabelecidos, como:

Especificação: iteração entre engenheiros e stakeholders para definição de escopo;

Desenvolvimento: plano de criação de protótipo e elaboração do produto;

Validação: verificação do que foi construído e garantia de que foi produzido o que foi definido;

Evolução: inclusão de novas features e alterações no escopo do cliente.

“A qualidade de software não é diretamente comparável à qualidade da manufatura. A ideia de tolerâncias não é aplicável aos sistemas digitais.” Sommerville(2011)

E o que é qualidade? Manter a conformidade com os requisitos especificados. E como garantir a qualidade do produto final? Se tratando de softwares é impossível não mencionar a importância das métricas, que devem ser utilizadas para aperfeiçoar seus processos de desenvolvimento, delineando uma adesão maior ao que foi especificado e garantindo a conformidade com o escopo de recursos disponíveis para a construção. A utilização de métodos estatísticos substitui a subjetividade na avaliação de qualidade por indicadores. Dessa forma, é possível atribuir notas para o comportamento de cada funcionalidade, ou então realizar cálculos para um overall de todo um conjunto de ações que foi especificada, tanto para requisitos funcionais como para os não-funcionais.

A importância do gerenciamento de projeto

A função do gerente é realizar a parametrização do ambiente no qual as suas equipes estão envolvidas, disponibilizando os recursos necessários para a realização do projeto. Para isso é essencial que ele atue com organização e clareza, de forma a garantir uma comunicação efetiva entre os envolvidos e um relacionamento produtivo entre as áreas referentes ao projeto. Um bom gerenciamento pode diminuir e evitar riscos, mitigar impactos não desejados, manter prazos e custos dentro do estipulado.

Para assegurar a constante evolução nas ações de controle e monitoramento do projeto é muito interessante que o gerente seja proativo na implantação de métricas para avaliação dos procedimentos das etapas mais críticas do projeto. Classicamente essas etapas eram definidas pelo triângulo de restrições, que envolvia tempo, custo e escopo. Com a crescente complexidade dos projetos e competitividade de produção, no entanto, este triângulo foi substituído por seis variáveis: escopo, qualidade, cronograma, orçamento, recursos e riscos. Qualquer alteração desses elementos afetará os demais e é papel do gerente de projetos buscar sempre mantê-los em equilíbrio. (WASLAWICK, 2013)

Ciclo PDCA — DEMING, 1986

Métricas no desenvolvimento de software

As métricas podem mensurar fatores diversos, dependendo de sua intenção. Desde detectar tendências até medir quantitativamente a eficácia dos processos, sua premissa é ser simples, de fácil coleta e manipulação de informações, de forma a garantir sua competitividade ao longo do tempo e, portanto, seu monitoramento.

No contexto do desenvolvimento de softwares, é necessário que as metas sejam construídas a partir de dados estatísticos históricos, para que sejam projetadas o mais próximas da realidade possível, de modo a permitir a existência de processos verdadeiramente mais eficientes e eficazes. Tão importante quanto coletar e manipular os dados corretos, é papel do gerente sempre avaliar a necessidade de auditar seus processos periodicamente, evitando desperdício de tempo e esforço em algo sem propósito específico definido.

Metas de processo: medir um processo envolve todo seu ambiente, desde ferramentas, prazos, colaboração e comunicação entre áreas até mesmo as regras específicas do negócio no qual aquele processo está inserido. O resultado esperado do uso de métricas de processo revela-se, então, uma tarefa de longo prazo, pois é preciso primeiro entender o processo como um todo para depois poder propor melhorias em suas etapas.

Metas de projeto: já o controle do projeto tem um fim mais estratégico, sendo possível rastrear riscos, descobrir áreas conflitantes e avaliar o estado do projeto de uma forma mais geral. A abordagem nesse caso deve ser de forma mais sucinta, mas ainda assim promove toda uma melhora no desempenho organizacional. (PRESSMAN, 2002)

Por fim, chegamos à questão de abertura do texto: como usar métricas para garantir a qualidade de software?

Como discutido, a qualidade do produto criado depende diretamente de sua adequação aos requisitos levantados em sua especificação e sua usabilidade no meio proposto. Essa organização e controle é de responsabilidade do gerente de projeto, que devem exercer revisões conjuntas com as equipes, auditorias, revisões de processo e conduzir as reuniões com stakeholders.

Neste contexto, as métricas vêm como instrumento fundamental para calcular e definir prazos, estipular o esforço necessário que a equipe irá precisar para o seu cumprimento, assim como estimar e controlar os recursos do projeto. Procurando sempre atingir as necessidades do cliente em tempo hábil, realizando as correções dentro dos períodos mensurados de forma controlada e segura, e garantindo sua coerência e elegibilidade.

Referências

DEMING, Edwards W.; Out of the Crisis, MIT Center for Advanced Engineering Study, 1986.

PRESSMAN, ROGER S.; Engenharia de Software, São Paulo, Ed. McGraw-Hill, 2002.

SOMMERVILLE, IAN; Engenharia de Software, São Paulo, Ed. Pearson Education, 2011.

WAZLAWICK, RAUL SIDNEI; Engenharia de Software, São Paulo, Ed. ELSEVIER, 2013.

--

--

Felipe Corniani de Genaro
Launchpad

Enrolled on a Master’s degree in Computer Science with Major in Software Engineering, Digital Transformation and Systems of Systems.