Trabalho Prático da disciplina de Engenharia de Software II da UFMG
- Gabriel Edmundo Rocha - 2020054412
- Selene Melo Andrade - 2019054986
O presente sistema é uma calculadora do IRRF (Imposto de renda retido na fonte) de um indivíduo com base na passagem de diversos valores como entrada, como salário base, bônus, número de dependentes, etc. Ele possui uma interface visual em que o contribuinte entra com seu nome, CPF, informações de salário base, bonificações, periodicidade para a qual deseja calcular e eventuais descontos (dependentes, pensão alimenticia e outros). No modo "Grafico" serão entregues 3 gráficos: Um com seu salário básico e as bonificações, outro com seu salário base de cálculo e as deduções feitas para se chegar nele e o último com o valor de seu salário líquido e de seu IRRF (em reais por ano), o que forma o seu salário base para o calculo do IRRF. No modo "Relatório", o contribuinte tem um relatório com alguns dos valores totais das variáveis anteriormente referidas, além de sua aliquota efetiva de IRRF (valor do irrf/(salário base + bonificações) em porcentagem). Além disso, o sistema suporta a entrada dos dados através de uma tabela (.xlxs), ao invés da interface gráfica, gerando relatórios ou gráficos para cada contribuinte (linha) da tabela.
Para o desenvolvimento desse sistema optou-se por utilizar as seguintes tecnologias:
- Linguagem de Programação: Python
- Bibliotecas: PySimpleGUI, matplotlib, reportlab, numpy, pandas
- Ferramenta de análise: Lizard
A ferramenta realiza a análise de complexidade ciclomática do programa através de métricas para a quantidade de linhas não comentadas (NLOC), quantidade de caminhos de execução independentes do código fonte (CCN), quantidade de tokens e parâmetros utilizados e comprimento das funções.
Após rodar a ferramenta Lizard para todos os arquivos do sistema, obtivemos o seguinte relatório de complexidade:
NLOC CCN token PARAM length location
43 2 605 1 70 __init__@[email protected]
40 6 861 1 55 criar_graficos_e_relatorios@[email protected]
120 18 1117 0 155 interface_visual@[email protected]
19 1 109 13 23 __init__@[email protected]
32 11 452 1 52 formulas_entrada@[email protected]
2 1 43 1 3 enviardadosparagrafico@[email protected]
2 1 33 1 3 enviardadospararelatorio@[email protected]
13 1 68 10 17 __init__@[email protected]
34 1 373 1 42 gerarrelatorio@[email protected]
13 1 70 10 17 __init__@[email protected]
3 2 70 2 3 adddin@[email protected]
3 2 78 3 3 adddin2@[email protected]
20 1 248 1 31 criargrafico1@[email protected]
20 1 248 1 31 criargrafico2@[email protected]
20 1 248 1 31 criargrafico3@[email protected]
5 file analyzed.
===========================================================================================================
!!!! Warnings (cyclomatic_complexity > 15 or length > 1000 or nloc > 1000000 or parameter_count > 100) !!!!
================================================
NLOC CCN token PARAM length location
------------------------------------------------
120 18 1117 0 155 interface_visual@[email protected]
==========================================================================================
Total nloc Avg.NLOC AvgCCN Avg.token Fun Cnt Warning cnt Fun Rt nloc Rt
------------------------------------------------------------------------------------------
516 25.6 3.3 308.2 15 1 0.07 0.31
-
Funções com valor de CCN que ultrapassem o valor limite (CCN > 15), são funções complexas demais e, portanto, de difícil manutenibilidade e reuso.
-
A mensagem de alerta indica que existe uma função complexa demais entre todas analisadas, a função interface_visual(), com CCN = 18, podendo ser uma boa candidata a refatoração.
-
Embora não exceda o limite (CCN > 15), a função formulas_entrada() possui um valor relativamente alto, CCN = 11, e deve avaliada com atenção.
O relatório em detalhes pode ser obtido aqui