A framework é uma peça importante no desenvolvimento de software, uma vez que disponibiliza um conjunto de bibliotecas, ferramentas e processos de trabalho que permitem ao programador implementar funcionalidades complexas de forma mais célere e sem necessitar de repetir trabalho.
Hierarquicamente, a framework situa-se no ponto em que muito do trabalho “pesado” já foi feito, mas ainda há espaço e flexibilidade para adaptar componentes ou alterar o seu comportamento, permitindo a resolução de um desafio específico associado ao desenvolvimento de um projeto de software.
Assim, uma framework permite pensar de forma mais clara sobre um problema e, idealmente, ajuda a resolvê-lo. Tudo isto sem impor limitações sobre o resultado pretendido, uma vez que permite ao programador adaptá-la ao seu projeto.
Adotar, estender ou fazer?
A adoção de uma framework como forma de trabalho comum em várias equipas e projetos permite a cristalização de conhecimento acerca da framework e, consequentemente, a partilha desse conhecimento na organização ou com terceiros. Com este processo, verificam-se ganhos de eficiência e eficácia.
Geralmente, a maior parte dos projetos de software adotam uma ou mais frameworks, até porque não é comum encontrar um problema que exija a criação de uma framework de raiz. Além disso, desenvolver uma framework de raiz exige um investimento elevado e uma equipa dedicada ao projeto durante um período considerável.
A opção de estender uma framework ocorre quando se verifica que existe uma necessidade partilhada por vários projetos e que as frameworks disponíveis não a endereçam com a abrangência desejada. A grande vantagem é que permite dar um avanço considerável às equipas de projeto, uma vez que já está assegurada a integração dos componentes, a documentação, as ferramentas necessárias e os testes para novos tipos de utilização.
Dificuldades na criação/extensão de uma framework
A framework tem de ser encarada como um produto, onde os clientes são os vários projetos, equipas e programadores que a utilizam. Esta só cria valor se for utilizada em vários contextos, caso contrário, corre o risco de ficar excessivamente presa a um problema ou domínio particular.
É importante ter uma visão clara do que se pretende atingir, mas também é necessário ter consciência de que é muito difícil conseguir generalizar os problemas que a framework endereça logo à primeira tentativa. O tempo permite que se disponibilizem novas versões mais completas e que integram o feedback recebido dos programadores e equipas que utilizam a framework.
Há certezas sobre a utilização de uma nova framework? Como qualquer produto, não se pode garantir que terá clientes. Se as necessidades do público-alvo forem bem conhecidas e o produto lhes der resposta, a probabilidade de adoção será mais elevada, o que permitirá evoluir o produto através do feedback dos utilizadores e, consequentemente, extrapolar para mais cenários de utilização. Com base nesse pressuposto, é importante dar foco à documentação, produção de material de formação, desenho do conceito de produto e, claro, uma boa divulgação.
Como evoluir a framework
A utilização de tecnologias recentes e a constante atualização são um fator crítico para qualquer framework. Os clientes são sobretudo programadores que têm uma necessidade elevada de atualização, por isso a framework deve conseguir acompanhar essa necessidade, utilizando ela própria tecnologias recentes ou emergentes.
A evolução serve também para endereçar questões de segurança e de performance. No entanto, ao longo do processo, é imperativo assegurar sempre a compatibilidade de versões ou facilitar a sua conversão, para que seja simples aos utilizadores atuais também evoluírem os seus projetos.
É importante também não esquecer a evolução da framework. Uma das hipóteses é a incorporação de mais componentes para endereçar novos cenários de negócio e, eventualmente, escalar para SaaS, por exemplo.
Conclusão
Antes de começar qualquer projeto de software deve ser feita uma avaliação às necessidades da especificidade do negócio, tendo em conta os objetivos, grau de complexidade e volumetria. Além disso, devem ser estudadas as opções já disponíveis em SaaS ou Plataforma e feita uma análise exigente que inclua custo, escala e performance.
Se o resultado dessa análise for o desenvolvimento de software, é sempre conveniente considerar a utilização de uma ou mais frameworks. No entanto, se o domínio de negócio é bastante específico, pode fazer sentido a criação de uma framework, mas é fundamental assegurar que se detém os recursos necessários ou acesso a um parceiro com esse tipo de mestria.
Para terminar, partilho um caso concreto de uma framework gratuita em que se optou por estender e utilizar frameworks frontend já existentes (Angular, MobX, Bootstrap), para criar uma outra framework, designada Lightweightform. Esta endereça um problema comum a muitos programadores: a necessidade de implementar formulários com muitos campos, validações e regras de negócio complexas.
Ricardo Caetano | CTO Opensoft
Licenciado em Engenharia Eletrotécnica e de Computadores pelo Instituto Superior Técnico, e com uma Pós-Graduação em Gestão e Avaliação de Projetos pela Universidade Católica Portuguesa, Ricardo Caetano integrou a Opensoft em 2003. Na Opensoft é responsável pela gestão dos recursos tecnológicos da empresa, tendo em vista a sua contínua melhoria, otimização, desenvolvimento e contributo para o crescimento do negócio.