quarta-feira, 2 de maio de 2018

Como calcular o percentual de gordura do seu software


Sim, você leu corretamente! O software que criamos tem muita coisa que serve para nada, ou seja: pelancas e gordura, mas que nós mesmos "enfiamos" nele por comodismo ou comprometimento.

Aqui vai uma fórmula simples para calcular o percentual de "gordura" e "pelanca" que nosso software tem, e também o quanto gastamos com isso. Se você é um engenheiro ou arquiteto de software, pode otimizar seu projeto com isto, se você é um cliente, pode cortar custos.




Se você leu...

Você deve ter lido o meu artigo: "YAGNI e as pelancas do software corporativo", não? Bem, se não leu, deveria! Este artigo vai lhe ajudar a compreender o "tamanho do buraco"!

Complexidade essencial

Em todo software, há aquela complexidade introduzida em função do problema, ou seja, a complexidade necessária para resolver o problema. Este é o código essencial, aquele que não poderíamos deixar de acrescentar, caso contrário não produziríamos os resultados desejados.

Complexidade acidental

Mas também existe aquela complexidade introduzida em função da solução, ou seja, a complexidade acrescentada devido às nossas escolhas: de ferramenta, de metodologia etc. É o código que poderíamos evitar ou diminuir, se mudássemos nossas escolhas.

Síndromes

Há duas síndromes que nos fazem acrescentar complexidade e defender seu uso, mesmo diante de tão óbvios argumentos. Para começar, há há o "comodismo", que pode ser resumido em uma frase:

"Em time que está ganhando, não se mexe"

Não queremos mudar nada, pois o nosso "mecanismo" (bom trocadilho, não?) está funcionando e botando pão na nossa mesa. Mas, para botar pão na nossa mesa, está tirando de algum lugar não? No Universo, nada se cria, nada se perde! Será que se fôssemos mais eficientes sobraria mais? Daria para fazer mais projetos? Empregar mais gente?

Mudar é difícil e requer estudo e adaptação, mas não é isso que quase todas as espécies fazem na Natureza? Mudam de pele, mudam de habitat ou até se adaptam.

E há o "comprometimento", uma síndrome que nos faz continuar mesmo sabendo que estamos errados. Já investimos tempo e dinheiro demais nisso, além da nossa própria reputação. Mudar seria admitir o erro e realizar o prejuízo.

Eu acredito que admitir o problema é o primeiro passo para a cura. Enfrentar as consequências, o mais cedo possível, garante uma boa recuperação e resgata nossa credibilidade junto aos clientes.

Conte e calcule

Conte as linhas dos arquivos de configuração que você escreveu e os que foram gerados para você. Sim, os gerados também, afinal, qualquer linha em um arquivo pode causar problemas. Simplesmente, abra todos os arquivos de um projeto e conte as linhas. Conte as linhas dos arquivos de código-fonte (".java", ".py", ".c", ".cpp" etc) e conte as linhas dos arquivos de configuração (".properties", ".xml", ".json" etc). Só não conte as linhas de arquivos de dados!

Vamos chamar essa contagem de: TOTAL_LINHAS.

Agora, abra apenas os arquivos essenciais para resolver o problema! Geralmente, são apenas os arquivos de código-fonte. Conte as linhas essenciais, ou seja, apenas aquelas que efetivamente resolvem o problema. As que calculam. Chamemos essa contagem de TOTAL_ESSENCIAL.

Finalmente, divida o TOTAL_ESSENCIAL pelo TOTAL_LINHAS e você terá a "razão de código essencial", que deve ser o mais próxima de 1 possível. Agora, é possível subtrair o TOTAL_ESSENCIAL do TOTAL_LINHAS e saber qual é o TOTAL_PELANCA! E você pode dividir TOTAL_PELANCA por TOTAL_LINHAS, sabendo a "razão de pelancas".

Mas dá para ir além! Resgate o tempo total gasto para desenvolver a solução, de preferência em horas. Inclua os custos por hora (salário, luz, recursos) e calcule quanto essa gordura custou para você.

Você verá que, sem essa gordura, o software custaria menos e você poderia até aumentar sua margem de lucro. Todos ganhariam.

Atenção

Não vale "roubar"! Você sabe o que é essencial e o que não é, certo? É claro que pode manipular o resultado, fazendo "contas de chegar" para calcular algo que te ajude a defender sua posição. Mas lembre-se das duas síndromes e, se isto não for suficiente, lembre-se de quem você está beneficiando: Os fornecedores de hardware e software! Sim, pois eles vendem mais licenças e mais hardware para você, mesmo em provedores de nuvem. Dinheiro que poderia estar indo para o seu bolso!


Cleuton Sampaio, M.Sc.


Nenhum comentário:

Postar um comentário