Reutilizar, reduzir, reciclar (codificar): aproveitando o software sustentável
Por Jacob Mathison
O potencial e a qualidade dos componentes de software reutilizáveis (RSCs) podem afetar a forma como vemos a sustentabilidade da web e os produtos digitais "verdes". No entanto, os RSCs são um dos aspectos menos visíveis do ciclo de inovação de uma empresa de software ou tecnologia e geralmente ficam no fundo do barril de negócios. O termo "componente reutilizável" é muito técnico para aqueles que não estão envolvidos em esforços de tecnologia e inovação e muito vago para programadores (compreensivelmente) que procuram fazer seu trabalho com o mínimo de esforço. Copiar e colar algumas linhas de código pode impactar no desenvolvimento sustentável porque, intencionalmente ou não, segue sua principal linha de questionamento: É eficiente? É facilmente compreensível? É modular? É rentável?
Compreensivelmente, as empresas estão interessadas em saber como as três primeiras perguntas afetam a quarta e última. Mas, paradoxalmente, a maioria não está disposta a inverter a ordem em que o impacto no resultado final é medido. Se mais informações e conscientização fossem divulgadas sobre reusabilidade em software, ficaria evidente que, como primeira definição, "[s]oftware reúso depende do pré-planejamento para reutilizar um componente de software que atenda às necessidades das organizações envolvidas no desenvolvimento de software em novos contextos". Planejamento, envolvimento e design estratégico vão muito além do web design baseado em componentes (componentes: pense em todo e qualquer elemento que esteja visível para os usuários ao visitar um site ou aplicativo).
O aumento da modularidade no design, plataformas sem código e soluções prontas para uso com pilhas de tecnologia populares, como Vue.js e Laravel, não é apenas um fenômeno relacionado a software, mas uma resposta às crescentes demandas dos consumidores por variedade de produtos em um período de tempo muito curto, garantindo a longevidade e relevância do produto. De fato, quando aplicado aos princípios gerais de design, "[m]odularidade no design pode ser, portanto, definida como a escolha dos limites do design de um produto e de seus componentes (...) entre os módulos."
Especificamente na tecnologia, os limites do design geralmente são determinados por equipes dedicadas para front-end, back-end, desenvolvimento de produtos e UX/UI, entre outras áreas. Esses limites podem assumir muitas variantes; na maioria das vezes, as empresas de software optam por estruturas do tipo pod onde os elementos funcionais são desenvolvidos com o objetivo de garantir a interatividade, tanto com o usuário final quanto entre os próprios elementos de design. Muitas bibliotecas de código e bibliotecas de estilo conhecidas, como Vuetify ou Bootstrap, visam manter os princípios de design (como legibilidade e acessibilidade) intactos.
Medir a sustentabilidade do software muitas vezes pode significar rastreamento de custo/benefício, bem como modelos econômicos de reuso. No nível mais básico, a sustentabilidade pode ser medida por quantas novas linhas de código foram escritas (exigindo não apenas esforço humano, tempo e capacidade profissional, mas também comprometendo tempos de carregamento, renderização e uso de largura de banda). Mesmo em 1992, esse conceito estava longe de ser novo: em relação a quantas novas linhas de código foram escritas para um projeto, existem métricas concretas para rastrear o benefício líquido de reutilização versus o custo líquido de reutilização. Hoje, modelos de automação têm sido sugeridos para medir o ciclo de desenvolvimento de evolução de manutenção para desenvolvimento sustentável em software, incluindo o uso de abordagens baseadas em modelos, previsões algorítmicas ou aprendizado de máquina. Mas a implementação de novas soluções pode ser cara para pequenas e médias empresas.
Em resposta a essa questão, os pesquisadores Maggo e Gupta falam sobre esse aspecto menos visível do software sustentável: “existe um custo adicional necessário para o desenvolvimento de componentes de software reutilizáveis do zero que podem ser usados para construir e fortalecer seus reservatórios de software”. Para evitar esse custo adicional, a chave é a avaliação do processo de cinco fatores que podem ser implementados sem recursos agregados.