a importância da implementação de um código limpo para … · 2019. 4. 24. · área de...

15
Faculdade Ietec Pós-graduação Métodos Ágeis e práticas Devops 01 de outubro 2018 A importância da implementação de um código limpo para alcançar a qualidade contínua Ellen Eliza de Almeida Analista de Sistemas [email protected] RESUMO Este trabalho aborda algumas práticas de Código Limpo através de algumas técnicas, tais como: nomes significativos, unicidade de funções, métodos não extensos, cuidado ao se utilizar comentários e testes unitários. Tendo por sua vez a finalidade de identificar pontos de ganho dentro de um projeto com poucos erros e boas condições de manutenção. Para o desenvolvimento deste trabalho utilizou-se a abordagem tanto quantitativa quanto qualitativa. Durante o estudo foi detectado problemas que podem surgir como custos em que um código ruim impacta nos projetos, desmotivação e falta de produtividade. Foi realizado também um questionário online com 124 profissionais da área de desenvolvimento de software e/ou áreas que utilizam código fonte, em empresas localizadas no Brasil. Foi possível constatar problemas ao se desenvolver códigos ruins em vários cenários, quais são os bloqueios que os profissionais utilizam para não efetuar mudanças no modo de se trabalhar, e até mesmo quando se houve ganhos em que boas práticas foram seguidas. Palavras-chave: Código Limpo. Sonar. Qualidade Contínua. Quantitativo. Qualitativo

Upload: others

Post on 23-Sep-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: A importância da implementação de um código limpo para … · 2019. 4. 24. · área de desenvolvimento, 8.1% são da área de arquitetura, 3.1% da área de automação de testes

Faculdade Ietec Pós-graduação

Métodos Ágeis e práticas Devops 01 de outubro 2018

A importância da implementação de um código limpo para alcançar

a qualidade contínua

Ellen Eliza de Almeida Analista de Sistemas

[email protected]

RESUMO

Este trabalho aborda algumas práticas de Código Limpo através de algumas técnicas, tais

como: nomes significativos, unicidade de funções, métodos não extensos, cuidado ao se

utilizar comentários e testes unitários. Tendo por sua vez a finalidade de identificar pontos

de ganho dentro de um projeto com poucos erros e boas condições de manutenção. Para o

desenvolvimento deste trabalho utilizou-se a abordagem tanto quantitativa quanto

qualitativa. Durante o estudo foi detectado problemas que podem surgir como custos em

que um código ruim impacta nos projetos, desmotivação e falta de produtividade. Foi

realizado também um questionário online com 124 profissionais da área de desenvolvimento

de software e/ou áreas que utilizam código fonte, em empresas localizadas no Brasil. Foi

possível constatar problemas ao se desenvolver códigos ruins em vários cenários, quais são

os bloqueios que os profissionais utilizam para não efetuar mudanças no modo de se

trabalhar, e até mesmo quando se houve ganhos em que boas práticas foram seguidas.

Palavras-chave: Código Limpo. Sonar. Qualidade Contínua. Quantitativo. Qualitativo

Page 2: A importância da implementação de um código limpo para … · 2019. 4. 24. · área de desenvolvimento, 8.1% são da área de arquitetura, 3.1% da área de automação de testes

1 INTRODUÇÃO

O desenvolvimento de software é uma das etapas mais importante em um ciclo de um

projeto. Atualmente muitas empresas sofrem com a má qualidade dos códigos

desenvolvidos dentro de suas equipes, levando a inúmeros defeitos e insatisfação de

clientes.

A qualidade inserida dentro do contexto de desenvolvimento do software vem ganhando

cada vez mais destaque dentro do processo, pois devido à evolução do mercado as

pessoas estão cada vez mais exigentes. Isso faz com que qualquer oportunidade, se não for

bem estruturada, pode ser engolida facilmente devido à quantidade de concorrentes.

Há curto prazo ter um código com baixa qualidade, ilegível pode funcionar, porém a longo

prazo com muitas outras atualizações acarreta em constante perda de produtividade, erros

excessivos, desmotivação do time, dentre outros. Desta forma, inserir novas funcionalidades

se torna cada vez mais demorado e com custos elevados.

Códigos são escritos posteriormente a uma necessidade identificada, “eles representam os

detalhes dos requisitos. Em certo nível não há como ignorar ou abstrair esses detalhes: eles

precisam ser especificados, E especificar requisitos detalhadamente de modo que uma

máquina possa executá-los é programar” (MARTIN, 2006, p.12).

Códigos ruins podem acarretar em vários problemas, tais como: A baixa produtividade da

equipe, pois em códigos mal escritos qualquer mudança não é trivial e requer tempo, e até

mesmo a refatoração completa do código. O segundo problema está relacionado com o alto

número de bugs.

Baseando-se neste cenário: Como melhorar a escrita de um código e quais são os

benefícios a médio e a longo prazo ao se adotar boas práticas de código limpo?

O objetivo deste trabalho é apresentar a importância do desenvolvimento de código limpo,

benefício de sua aplicabilidade e ferramentas de auxílio; de forma que possam contribuir de

forma exponencial a melhoria da escrita de códigos dentro dos projetos.

Este artigo está organizado da seguinte maneira: Na primeira seção é apresentada a

referência bibliográfica para fundamentação deste projeto, na segunda seção é apresentado

as metodologias e resultados. Por fim é apresentado as conclusões para reflexão e projetos

futuros de estudo.

Page 3: A importância da implementação de um código limpo para … · 2019. 4. 24. · área de desenvolvimento, 8.1% são da área de arquitetura, 3.1% da área de automação de testes

2 REFERENCIAL TEÓRICO

2.1 MINDSET

Ao se iniciar um projeto, definir regras, formas de implementação é de fato mais fácil.

Porém, ao ser inserido em um contexto que já se existem amarrações e muito código antigo,

muitos profissionais utilizam - se como exemplo códigos que estão fáceis de obter como

modelo. Ao se identificar uma necessidade de mudança em que a equipe sempre utiliza-se

modelos errados de implementação é necessário mudar o mindset .

Segundo Dweck (2017) os mindsets nada mais são que crenças, algo que está na mente

mas, que podem ser alteradas de forma que todos podem ter a escolha de mudança para

um objetivo final.

2.2 SONAR

É um software de auxílio ao desenvolvedor de código fonte que propõe a ser a central de

qualidade do código em si, o que possibilita o controle sobre um número de métricas de

software evidenciando uma série de possíveis erros. Tudo isso é gerado através de uma

análise no código fonte. A exibição dos problemas identificados ao longo dos códigos

implementados é feita através de uma interface web, em forma de dashboards e gráficos.

(SONARQUBE, 2016)

A utilização desta ferramenta traz inúmeros benefícios, como facilidade na validação da

qualidade do que está sendo entregue para o cliente final, diminuição de bugs visto que o

desenvolvedor irá avaliar o sonar antes de realizar entregas em produção. Os gerentes

conseguem analisar de forma facilitada os gráficos e o trabalho de desenvolvimento da sua

equipe.

3 METODOLOGIA

Segundo a abordagem do problema, conforme destaca Diehl (2004), ela pode ser

qualitativa ou quantitativa. Neste trabalho utilizou-se a abordagem tanto quantitativa quanto

qualitativa.

A abordagem qualitativa se caracteriza por descrever a complexidade de determinado

problema e a interação de certas variáveis e classificar os processos dinâmicos. (MORESI

2003).

Em relação a abordagem quantitativa se caracteriza por ser apropriada para medir tanto

opiniões, atitudes, preferências e comportamentos. O questionário aplicado forneceu dados

sobre a opinião dos profissionais da área de desenvolvimento sobre os benefícios de se

Page 4: A importância da implementação de um código limpo para … · 2019. 4. 24. · área de desenvolvimento, 8.1% são da área de arquitetura, 3.1% da área de automação de testes

utilizar um código limpo e os problemas de se utilizar códigos sem padrões,

disponibilizados através de um link online.

Quanto aos objetivos, Gil (2002) destaca que a pesquisa exploratória visa proporcionar

maior familiaridade com o problema, com vistas a torná-lo mais explícito. Neste sentido

será usado neste trabalho técnica de pesquisa indireta bibliográfica que de acordo com

Lakatos (2010, p. 166) “pode ser baseado em fontes secundárias desde revistas, livros,

pesquisas, monografias até meios de comunicação oral, filmes e televisão. Não é mera

repetição do que já foi dito, mas um exame sob um novo enfoque”.

3.1 BOAS PRÁTICAS

Algumas práticas podem ser abordadas para que o código de uma determinada

aplicação esteja de forma entendível, serão abordados a seguir tópicos que podem ser

utilizados para auxílio de boas práticas de programação e código limpo.

a) Nomes significativos: É de extrema necessidade que seja escolhido nomes para

variáveis, funções, ou classes que sejam referência para o assunto do método em si.

Esta boa prática diminui a necessidade de se inserir muitos comentários. Martin

(2006) diz que “escolher bons nomes leva tempo, mas economiza mais”, sendo

assim todos que lerem o código saberão o que determinado código faz, por conter

nomes que revelam seu propósito.

b) Códigos unificados: Ao se inserir códigos duplicados em muitos pontos do sistema é

dificultado a correção de um problema sendo necessário realizar a implementação

em vários lugares, caso a manutenção não seja realizada em todos os pontos

duplicados o sistema poderá se comportar de forma inesperada;

c) Funções pequenas: Ao se criar métodos extensos, existe uma grande dificuldade

para efetuar testes unitários e também a reusabilidade de determinadas funções.

Martin (2009) diz que as funções devem fazer apenas uma coisa, e fazer

corretamente o que foi criada para tal. A responsabilidade deve ser única.

d) Responsabilidade única: Falta do princípio de unicidade de ação. (Mesma classe

executando várias demandas) Dessa forma a classe não fica intuitiva no que

realmente deverá fazer;

Page 5: A importância da implementação de um código limpo para … · 2019. 4. 24. · área de desenvolvimento, 8.1% são da área de arquitetura, 3.1% da área de automação de testes

e) Cobertura de testes: Rocha (2001) cita que um dos principais níveis de teste de

software é o Teste de Unidade: conhecido como testes unitários. Tem por objetivo

averiguar a menor unidade do projeto, procurando provocar falhas ocasionadas por

erros de lógica ou de implementação em cada funcionalidade, separadamente. O

foco deste tipo de teste são os métodos das classes (objetos) ou mesmo pequenos

trechos de código.

Existem muitos fatores que motivam o uso desta prática, como: confiabilidade,

prevenção de "bug's", assegura os impactos em caso de alterações, utilizado como

métrica, dentre outros.

3.2 SONAR

Para padronizar o desenvolvimento e garantir a qualidade nas entregas, a

ferramenta Sonar (FIGURA 1) é uma das ferramentas existentes essencialmente

para garantir a qualidade no código e apresentar os problemas existentes nos

sistemas após a finalização de qualquer demanda.

Figura 1 - Tela inicial do Sonar

Fonte: Elaborado pela autora, 2018.

4 RESULTADOS E DISCUSSÃO

A análise dos resultados foi elaborada tomando como foco o referencial teórico deste

trabalho, melhores práticas de implementação de código, a fim de contrastar ideias, verificar

em escalabilidade a percepção da importância de se utilizar determinados padrões.

Page 6: A importância da implementação de um código limpo para … · 2019. 4. 24. · área de desenvolvimento, 8.1% são da área de arquitetura, 3.1% da área de automação de testes

O questionário referente aos métodos de desenvolvimento de um software foi aplicado para

obter informações que indiquem no cotidiano dos profissionais da área o benefício e os

malefícios quando esta prática não se é utilizada. Foram 124 profissionais respondentes

deste questionário.

A pesquisa foi dividida em 2 partes: dados de identificação e dados sobre boas práticas de

desenvolvimento.

Dados referentes à identificação

Referente ao cargo de atuação: dos participantes do questionário (FIGURA 2): 82% são da

área de desenvolvimento, 8.1% são da área de arquitetura, 3.1% da área de automação de

testes.

Figura 2 - Cargos da área

Fonte: Elaborado pela autora, 2018.

Em relação ao tempo de trabalho com código fonte (FIGURA 3), em desenvolvimento de

software ou testes automatizados foi possível identificar a experiência e práticas comuns em

relação aos profissionais. 47,06% trabalham entre 1 e 5 anos, 30,06% trabalham a mais de

5 anos e 21,8% trabalham até 1 ano com código fonte.

Figura 3 - Tempo de trabalho com código fonte

Fonte: Elaborado pela autora, 2018.

Page 7: A importância da implementação de um código limpo para … · 2019. 4. 24. · área de desenvolvimento, 8.1% são da área de arquitetura, 3.1% da área de automação de testes

Dados referentes a ferramentas e métodos

Manutenção em código: Foi identificado (FIGURA 4) que 53.2% concordam plenamente que

ao realizar uma manutenção em um código que está confuso e sem boas práticas de código

limpo muitos bugs podem surgir somente pelo mal entendimento do mesmo.

Figura 4 – Geração de bugs devido ao código mal escrito

Fonte: Elaborado pela autora, 2018.

Foi identificado pontos em que os profissionais se preocupam de imediato ao começar uma

implementação (FIGURA 5): 50,08 % indicaram que se preocupam com código limpo,

48,40% em entregar rápido, 48,04% na segurança da aplicação, e 23,04% em testes

unitários.

Figura 5 - Preocupações ao desenvolver um código novo

Fonte: Elaborado pela autora, 2018.

Page 8: A importância da implementação de um código limpo para … · 2019. 4. 24. · área de desenvolvimento, 8.1% são da área de arquitetura, 3.1% da área de automação de testes

Muitos profissionais em relação a algumas situações deixam de fazer um código limpo

utilizando-se de empecilhos (FIGURA 6), alguns destes itens foram selecionados, tais como:

79% dos participantes informaram que o prazo é um dos grandes problemas para se fazer

um bom código fonte, 60% informaram a falta de experiência, 50% indicaram cobranças por

parte de gestores, 35,50% por desinformação e 12% por rendimento. Estes pontos vão em

contrapartida em relação a mudança de mindset, pois ao perceber que a qualidade sempre

deve ser levada em consideração, nenhum destes pontos deveriam ser levados em

consideração para se realizar tal atividade.

Figura 6 – Empecilhos utilizados para se escrever um código com qualidade

Fonte: Elaborado pela autora, 2018.

Em contrapartida no ponto anterior, foi possível constatar (FIGURA 7) que 79% dos

respondentes concordam plenamente que ao dar manutenção em um código limpo a

produtividade aumenta. No total de 18,05% concordam parcialmente com esta afirmação.

Figura 7 – Produtividade ao se ter um código limpo

Fonte: Elaborado pela autora, 2018.

Page 9: A importância da implementação de um código limpo para … · 2019. 4. 24. · área de desenvolvimento, 8.1% são da área de arquitetura, 3.1% da área de automação de testes

Referente ao Sonar: Esta ferramenta é disponibilizada via link na web podendo ser

acessada por todos os membros dos times. Foi detectado (FIGURA 8), que cerca de 26%

concordam plenamente que na utilização do Sonar facilita na identificação de sensibilidades

no código e pontos de atenção para os testes unitários, ações futuras, etc. No total de

30.9% concordam parcialmente nesta afirmativa e 39% não concordam nem discordam.

Apenas 3.3% discordam parcialmente.

Figura 8 – Facilidade no trabalho ao se utilizar o Sonarqube

Fonte: Elaborado pela autora, 2018.

Alguns padrões são utilizados pelos profissionais que responderam o questionário (FIGURA

9), porém muitos itens não são levados em consideração no momento da codificação.

87,01% buscam utilizar nomes significativos, 86,03% reutilizam métodos genéricos, 75%

identam o código, 65,03 criam métodos mais curtos com responsabilidade única, 33,01 %

utilizam pouco comentário, 33,09% retornam exceção ao invés de retornar códigos de erro,

e somente 26% se preocupam em utilizar cobertura de testes.

Figura 9: Padrões que os profissionais mais utilizam

Fonte: Elaborado pela autora, 2018.

Page 10: A importância da implementação de um código limpo para … · 2019. 4. 24. · área de desenvolvimento, 8.1% são da área de arquitetura, 3.1% da área de automação de testes

2 CONCLUSÃO

Com a análise realizada neste artigo foi possível concluir que ao desenvolver uma cultura

organizacional e uma mudança de mindset, os desenvolvedores, independente do cenário

de um projeto devem implementar código com o máximo de robustez, para que todos os

benefícios desta prática sejam efetivamente concretizados.

No questionário aplicado constatou-se que muitos dos profissionais gastam mais tempo para

entender um código mal escrito que efetivamente realizar as alterações necessárias, em

muitos casos pode-se perceber que diversos softwares foram refeitos pelo não

entendimento do que o sistema fazia, devido ao código mal escrito.

O estudo deste trabalho mostrou a importância de uma prática de código limpo a fim de

aumentar a produtividade e diminuição de retrabalhos bem como bugs encontrados devido a

falta de padrões em código. Isso gera cada vez mais valor dentro da área de

desenvolvimento e para seus clientes.

Desta forma fica é considerável que as empresas façam treinamentos e conscientizem os

profissionais da área a importância de se desenvolver códigos com extrema clareza a fim de

se obter um produto com qualidade.

Códigos que seguem padrões já estabelecidos e com o auxílio de ferramentas conhecidas e

já bastante utilizadas, facilitam o entendimento e a manutenção do código. Isto, junto à

nomenclatura correta de variáveis, métodos e classes, bem como os comentários

moderados e assertivos ajudam demais na produtividade e no rendimento de quem está

lendo o código de outra pessoa, uma vez que o profissional não precisará passar pela falta

de tempo de tentar compreender e corrigir um código desconhecido.

Como trabalhos futuros, planeja-se implementar outras técnicas de código limpo, realizar

experimentos reais comparando-se uma análise em um código mal feito e em um código

limpo. Constatar as diferenças e a demora de analise entre os participantes.

Page 11: A importância da implementação de um código limpo para … · 2019. 4. 24. · área de desenvolvimento, 8.1% são da área de arquitetura, 3.1% da área de automação de testes

REFERENCIAS

DIEHL, Astor Antônio.; TATIM, Denise Carvalho. Pesquisa em ciências sociais aplicadas.

SP: Ed. Pearson, 2004.

DWECK, C. S, Mindset: the new psychology of success. London: Robinson, 2017.

GIL, Antonio Carlos. Como elaborar projetos de pesquisa. São Paulo: Atlas, 2002.

LAKATOS, Eva Maria & MARCONI, Maria de Andrade. Fundamentos da Metodologia

Científica. SP: Ed. Atlas, 2010.

MARTIN RC. Código limpo: Habilidades Práticas do Agile Software: Prentice Hall; 2009.

ROCHA, A. R. C.; MALDONADO, J. C.; WEBER, K. C. Qualidade de software: teoria e prática. São Paulo: Prentice Hall, 2001.

SONARQUBE. Continuous Inspection. [S.l.]: Sonarqube, [2016?].

https://www.sonarqube.org/features/clean-code/. Acesso em: 01 jul. 2018.

Page 12: A importância da implementação de um código limpo para … · 2019. 4. 24. · área de desenvolvimento, 8.1% são da área de arquitetura, 3.1% da área de automação de testes

ANEXO A – Questionário aplicado aos profissionais que atuam diretamente com código

Page 13: A importância da implementação de um código limpo para … · 2019. 4. 24. · área de desenvolvimento, 8.1% são da área de arquitetura, 3.1% da área de automação de testes
Page 14: A importância da implementação de um código limpo para … · 2019. 4. 24. · área de desenvolvimento, 8.1% são da área de arquitetura, 3.1% da área de automação de testes
Page 15: A importância da implementação de um código limpo para … · 2019. 4. 24. · área de desenvolvimento, 8.1% são da área de arquitetura, 3.1% da área de automação de testes