Matheus Castiglioni

Fitness Function

Diariamente estamos evoluíndo nossos sistemas (mudanças incrementais) e projetos, seja em termos de arquitetura, design de código, funcionalidades, refatorações, reestruturações, resoluções de bugs, etc… Mas, o que tudo isso tem em comum? Independente da evolução feita, a gente precisa garantir que a qualidade e saúde da arquitetura ainda seja a mesma ou pelo menos saudável.

Mas, o que seria saudável? Como a gente pode medir isso? O que a gente mediria para ter tal informação? A gente pode medir os atributos de qualidade (dimensão da arquitetura) do sistema, por exemplo: Um cenário onde precisamos ter alta disponibilidade, um critério de validação poderia ser o tempo de resposta de uma página web, um endpoint na API, uma consulta no banco, etc…

O que é?

Uma fitness function no contexto de algoritmos vem da ideia de tentar validar se um determinado algoritmo atende algum critério de validação.

No contexto da arquitetura de software podemos utilizá-la para uma motivação semelhante, ou seja, nossas fitness functions serão responsáveis de validar algum atributo de qualidade do sistema (no exemplo anterior ela iria validar os tempos de respostas) através de algum critério.

A ideia é que cada fitness function represente um requisito da arquitetura, dessa forma, elas irão ajudar guiando a evolução do sistema (determinando os impactos das mudanças incrementais).

Mas, nem sempre vai ser possível implementá-las, por causa de complexidade ou restrições.

Na maioria das vezes crie fitness functions que podem ser validadas de forma automatizada (seja com testes, scripts ou outra maneira automática), porém, a realidade é diferente da teoria e em alguns cenários elas precisarão ser validadas e executadas de forma manual (o que não tem problema nenhum).

Tipos

Existem diferentes tipos de fitness functions, sendo:

Categorias

Além dos tipos também existem categorias, sendo:

Conclusão

Nesse post vimos o que são fitness functions, para que elas servem, quais tipos e categorias existem, porque e como devemos utilizá-las.

Abraços, até a próxima.

Matheus Castiglioni

Matheus Castiglioni

Apaixonado pelo mundo dos códigos e um eterno estudante, gosto de aprender e saber um pouco de tudo, aquela curiosidade de saber como tudo funciona, tento compartilhar o máximo de conhecimentos adquiridos e ajudar todos aqueles que sou capaz.

comments powered by Disqus