O que são frameworks?

frameworks

No seguimento da nossa serie de PHP aqui no blog, decidi incluir um tema que faz todo o sentido nos dias actuais de um programador: as Frameworks.

Existem várias pela internet, no que toca a definição de Framework. No entanto, num contexto geral, uma framework trata-se basicamente, de uma caixa de ferramentas, entregues a um desenvolvedor.
Isto pode permitir, uma maior eficiência, principalmente para quem trabalha com múltiplos projectos.

No mesmo contexto, a reutilização de código entre projectos, pode tornar-se prática, tal como a orientação a objectos, já por aqui falada.

Claro, que como em tudo, existem vantagens e desvantagens no uso de frameworks, como vamos analisar neste artigo.

O que são frameworks?

As frameworks, são como uma template de funções (a tal caixa de ferramentas), pré-concebidas, de forma a ajudar os desenvolvedores. Particularmente, sou um grande utilizador de Laravel. Um bom exemplo de uma ferramenta que esta possui, é o eloquente (abordaremos num outro artigo).

zend
Site da framework Zend

Desta forma, durante a criação de um projecto, ou múltiplos, que utilizem a mesma framework, torna-se fácil reutilizar código entre si, reduzindo o tempo de desenvolvimento, tal como a melhor utilização das ferramentas, desta potente caixa.

Nota: As frameworks têm sempre documentação, do qual a sua leitura não deve ser descurada, para melhores resultados.

Em resumo deste tópico, isto nada mais é que um estrutura base, daquilo que é um plataforma de desenvolvimentos, composta por “componentes” e processos, que entre si, agilizam a produção de soluções.

Nota: Imaginem a felicidade, de um Product Owner ao ler isto. Mas não é tão linear assim.

Modulação, dentro e fora das frameworks

Num outro artigo da serie de PHP, que trouxe no blog, disse que na Programação Orientada a Objectos, a reutilização de código entre projectos se torna prática. Neste artigo, digo o mesmo, sobre as frameworks.
Se leste o outro artigo, talvez te estejas a perguntar qual a diferença, ou se existe alguma.

A grande diferença entre estas duas composições, talvez confusa, é a forma independente de uma, e não tão independente da outra.
Por outras palavras, e puxando ao PHP, se criar-mos um produto sem framework (ou vários), podemos usar o nosso código de forma independente entre os projectos, com mais ou menos esforço.
Uma framework, as coisas não são bem assim. Como disse, uma framework, é uma caixa de ferramentas, em que todas essas ferramentas têm um propósito dentro da caixa. Estão lá por um motivo, e têm a sua função especifica. Retirar um ferramenta de uma caixa (ou contexto), e colocar noutra, em que essa ferramenta tem dependência de outra na caixa, então não vai funcionar.

A framework tem módulos dependentes, uns dos outros, que apenas podem ser reutilizados nos projectos que tenham as mesmas framework.

Exemplo: Se eu estiver a trabalhar num projecto em Laravel, não posso reutilizar na integra, desse projecto Laravel, num projecto em Yii2, pois as frameworks têm dependências diferentes.

Cuidados a ter com frameworks

Aqui entra o ponto da organização.

Quando se trabalha em equipas grandes, existe sempre a tendência de se revelarem os “fan boys”, se uma ou outra framework. Existem muitas frameworks, para Back-end e Front-end (a abordar num futuro artigo), que umas melhor que outras, podem de forma prática, ir de encontro às necessidades do projecto.

Manter as coisas simples (diga-se organizado), é a melhor forma de se progredir no processo de desenvolvimento. A complexidade do mesmo, deve ser analisada a longo prazo, de forma a perceber se a framework corresponde às necessidades futuras, a manutenção, entre outros aspectos de gestão.

Tecnicamente, o grande pilar, será sempre a Stack que a equipa possui, a experiência e a versatilidade. Será sempre mais fácil, no avançar para determinada framework, existir membros da equipa com conhecimento da mesma, de forma a estruturar da melhor forma o projecto, passando conhecimento a curto prazo, aos restantes membros.

Principais Frameworks

Existe um número enorme de frameworks, mas irei listar as principais, tanto de Front-end, como de Back-end.

Front-end

  • Angular
  • React
  • Vue
  • Ember
  • Backbone

Back-end

  • Zend
  • Laravel
  • Symfony
  • Phalcon

Vantagens de frameworks em empresas

Com tudo o que foi acima falado, penso que a resposta é óbvio: economizar tempo!

Mas como é óbvio, o economizar tempo no desenvolvimento, tem muitas coisas inerentes a isso. Uma das que acuso como principal, é a questão de haver menos espaço a bugs, e também a probabilidade destes, serem resolvidos com maior rapidez e critério.

Outra, também bastante “culpada”, é a facilidade de acesso a documentação, e também às suas comunidades. Com o aumento destas comunidades, mais informação existe, o que facilita a aprendizagem, tal como a partilha de soluções para problemas.

laravel_doc
Página de documentação da framework Laravel

Nota: Se começas-te agora neste vida de queimar miolos, acredita que não és o primeiro a ter o problema que tens, ou vais encontrar. Milhares de pessoas no mundo têm problemas todos os dias. Basta pesquisares por um problema que tenhas, que rapidamente pode encontrar a resposta. Não te esqueças que podes ser sempre o primeiro a ter um determinado problema, e o primeiro a encontrar a solução. Partilha com a comunidade.

Outro ponto muito interessante, mágico para gestores de projecto e PO’s, é obviamente a rapidez que isto causa (não ignorar a complexidade), também derivado a consistência que estas aplicações vão ter. Um problema que é encontrado numa plataforma, e por sua vez resolvida, deixa um “Know How” dentro da equipa, para um problema semelhante a surgir numa outra plataforma dentro da empresa, que tenha re-usado o mesmo código.

Nota: Sendo pro-activo, bastaria correr as plataformas a procura do mesmo problema, antes que o clientes, se venha queixar. Utilizar repositórios internos, pode também ser boa ideia.

Desvantagens das frameworks

Pensavam que era tudo bom? Infelizmente não!

Como sabem (ou não), as frameworks são construídas por grupos de desenvolvedores, que por sua vez, evoluem a mesma framework ao longo do tempo. Normalmente, as alterações não influenciam em muito, aquilo que é a sua base. Mas pode acontecer, que, em algum momento, essas equipas, acabem por reestruturar, e que todos os projectos, como os da tua empresa, sejam afectados.
Aqui, existe o factor dependência. Ficar dependente da correcção de um problema interno da framework, que nos afete, por um longo tempo, e também outro ponto importante.

Nota: Podemos sempre nós, tentar corrigir o problema, e partilhar com a comunidade.

Como abordei acima, é preciso uma grande análise, para que se veja qual a melhor framework a usar num determinado projecto. Existem frameworks mais leves que outras. Usando mais uma vez o exemplo do Laravel, que tem um “filho” (se lhe posso chamar assim) mais leve, conhecido por Lumen. A base é a mesma, mas com menos funcionalidades, sendo a principal ou mais notorious, a remoção das Blades (front-end por assim dizer).
O Lumen, é mais usado para (micro) serviço, REST, que fazem gestão em Back-end, respondendo a uma, ou mais, plataformas num contexto de API.

Conclusão

As frameworks são, hoje em dia, talvez a melhor opção para pequenas empresas, que procuram facturação de forma mais rápida, com o lançamento de múltiplos projectos. Mantendo a consistência entre si, criar um novo projecto, com base no anterior, com a mesma framework (ou conjuntos de frameworks), torna-se prático e eficaz.

Empresa de maior volume, esta utilização é, na minha opinião, também uma mais valia. Ainda que hoje em dia, muitas empresas acreditem, que construir as suas próprias frameworks seja o melhor caminho, o custo a longo prazo manter as mesmas, pode ser bem mais penoso.