Melhoria contínua de software

Lorena Carla
Troopers-Legacy
Published in
6 min readJan 30, 2024

A tecnologia está em constante evolução. Todos os dias nos deparamos com novas ferramentas, novos paradigmas e novos padrões. Por isso, a capacidade de adaptar e melhorar um software existente é crucial para atender às novas demandas dos usuários e da própria tecnologia. A melhoria contínua de software é um processo de aprimoramento e aperfeiçoamento que visa melhorar a qualidade, eficácia e eficiência da aplicação.

Praticar a qualidade de software, seguindo - por exemplo, as dicas mencionadas neste outro artigo que publicamos - desde o início da confecção de uma aplicação, tornará o processo de melhoria contínua mais leve e eficiente, pois reduzirá as chances de refatorações, surgimento de bugs e a má, ou nenhuma, interpretação sobre o código. Mas um software nunca é finalizado e por isso deve progredir. Neste artigo discorreremos sobre fatores super importantes para se levar em consideração na hora de evoluir sua aplicação.

Refatorações

Apesar de querermos evitar refatorações, também é importante compreender que ela pode acontecer naturalmente. Uma aplicação é evoluída gradualmente, e nesse processo ele acompanha as necessidades do mercado e dos usuários, e estes podem se alterar com o tempo. Além disso, durante a evolução de uma aplicação a maturidade dos envolvidos vai evoluindo com o tempo, novas pessoas entram para o time, outras o deixam. Todos estes impactos podem resultar em um código que já não faz mais sentido. Diferentes pessoas, com diferentes contextos e senioridades contribuem para sua construção, que, inicialmente, foi projetado para funcionar de uma forma x. Com o tempo ele vai evoluindo gradualmente e passa a funcionar de uma forma y. Sendo assim, em algum momento a refatoração poderá ser um processo natural e necessário de se acontecer. Mas é importante não nos esquecermos, que ainda queremos evitá-la, mas não hostilizá-la.

Não se esqueça dos débitos técnicos

Ao evoluir sua aplicação, em algum momento, serão gerados débitos técnicos, isto é, tomaremos certas decisões que podem ter algum impacto negativo ao longo prazo, desta forma, pontuamos o que precisará ser ajustado e nos comprometemos a ajustá-lo assim que possível. Mas é muito comum que débitos técnicos não sejam documentados e por isso acabam sendo esquecidos até que a situação se agrave, por isso, primeiramente é muito importante que estes débitos sejam documentados. Você pode criar tarefas no seu próprio backlog, pois os débitos técnicos devem entrar como parte do planejamento. Eles devem ser priorizados em conjunto com as novas features e estar inclusos no prazo estimado para a sprint do seu time. Só assim, eles terão a relevância e a priorização necessária para que não sejam esquecidos, permitindo que o software evolua sem problemas deixados para trás.

Mantenha a aplicação atualizada, atualize suas dependências

À medida que o software vai evoluindo, é possível que as bibliotecas e pacotes passem a depender de versões que tenham recursos específicos, além de que, novos recursos podem facilitar o desenvolvimento. Atualizar as dependências ajuda a manter a compatibilidade do seu projeto com os últimos lançamentos. As bibliotecas são constantemente refinadas e as atualizações trazem correções de bugs, melhorias no desempenho e até mesmo correções de vulnerabilidades, aumentando a segurança da aplicação. Outro ponto importante é que, ao atualizar suas bibliotecas, você incentiva a comunidade de desenvolvedores que as mantém, para que continuem evoluindo e trazendo novos recursos. Não podemos nos esquecer também, que com o lançamento de novas versões dos pacotes, as versões antigas não recebem suporte ou possuem um suporte muito limitado.

Para auxiliar nessas atualizações você pode configurar o dependa bot, que verifica regularmente os repositórios de origem dos pacotes e bibliotecas, verificando se há novas versões disponíveis ou se foram lançadas correções de segurança. Desta forma ele gera automaticamente um pull request atualizando algumas dependências. Os testes da sua aplicação irão auxiliar bastante no momento dessas atualizações, pois nem sempre as alterações afetam apenas o package.json, podem afetar os usos das ferramentas disponibilizadas pelo pacote. Um teste pode auxiliar a encontrar onde precisa de alterações ao destacar erros da aplicação.

Monitoramento de software

O objetivo principal do monitoramento de software é identificar problemas, tomar ações preventivas e corretivas, e obter insights para melhorar o desempenho geral do sistema. A análise e a visualização de dados coletados pelo monitoramento ajudam a identificar tendências, padrões e problemas recorrentes. Isso permite que as equipes tomem decisões de maneira mais assertiva. As métricas refletem o comportamento do software em execução, medindo o tempo de resposta, latência, taxa de transferência (Throughput), quantidade de usuários utilizando a plataforma, quantidade de cliques ou utilização de uma funcionalidade, taxa de erros, entre outros. Logs e eventos são muito utilizados para o recolhimento de dados, gerando métricas e facilitando investigações dos comportamentos da aplicação. Os logs são registros detalhados das atividades do software, enquanto os eventos são notificações sobre a ocorrência de eventos específicos no sistema. Monitorar logs e eventos podem ajudar a entender o fluxo de execução do software, identificar erros e exceções, e detectar comportamentos anormais ou atividades maliciosas.

Evolua analisando métricas

Como descrito no tópico anterior, com o monitoramento de software é possível tomar decisões mais precisas e assertivas para a evolução da sua aplicação. A evolução do software deve ser pautada em métricas e nos feedbacks dos usuários, desta forma, sendo implementadas de forma gradual em ciclos de desenvolvimento, acrescenta melhorias de forma incremental.

Nós, como desenvolvedores, normalmente, não seremos as pessoas que irão analisar os dados propriamente ditos, mas temos um papel muito importante na coleta destes dados ao realizar a implementação de logs, eventos, como analytics, e até mesmo teste de usuários, como teste AB.

Essas análises desempenham um papel crucial na minimização de problemas durante intervenções no produto. Antes de serem definidas, é feita uma verificação para checar a viabilidade da implementação na aplicação. Além disso, antes de serem efetivamente aplicadas, são testadas em um cenário real, proporcionando resultados mais conclusivos.

As análises das métricas aumentam o conhecimento sobre os usuários e sobre o produto. Consequentemente, de maneira proporcional, a maturidade da equipe e do próprio produto também aumentam.

Outro ponto bastante interessante, é que possuindo métricas, é possível passar de forma clara as motivações e valores dos trabalhos realizados pelo time, passando informações baseadas em dados e não no achismo ou vaidade.

Um software nunca está finalizado

Lembre-se, um software nunca está finalizado. Isso porque o software é um produto dinâmico, em constante evolução e melhoria. As necessidades dos usuários e do mercado mudam ao longo do tempo. À medida que novas tecnologias surgem e os requisitos dos usuários se modificam, o software precisa se adaptar para continuar sendo relevante e atender às demandas em constante mudança. Além de que, mesmo com testes rigorosos, é quase impossível eliminar todos os defeitos e bugs de um software desde o início. Conforme o software é usado, novos bugs podem ser descobertos ou surgir outras situações não previstas. Portanto, é necessário realizar correções e melhorias constantes. Outro fator que reforça o ponto de que um software nunca está realmente finalizado é que as aplicações são executadas em ambientes tecnológicos em constante evolução, como sistemas operacionais, navegadores e dispositivos. Manter o software atualizado é necessário para garantir a compatibilidade e o desempenho adequado nessas novas configurações.

Portanto, o desenvolvimento de software é um processo contínuo que envolve ciclos de lançamento regulares, em que novas versões são lançadas para introduzir melhorias, corrigir bugs e adicionar recursos adicionais. Essa abordagem iterativa permite que o software permaneça relevante, seguro e eficiente ao longo do tempo, atendendo às necessidades dos usuários e se adaptando ao ambiente em mudança.

Quer conhecer mais sobre os times de tecnologia da Hotmart?

Acompanhe a nossa comunidade de tecnologia pelo site Hot Hackers. Por lá você se inscreve em nossa newsletter mensal, nos eventos, acompanha o Podcast de tecnologia Pod&Dev, e não perde nenhuma novidade!

Para se candidatar às vagas, acesse nossa página de Jobs.

Até a próxima!

--

--