O que é um Framework? Para que serve?

Frameworks

O que é um Framework? Para que serve?

Atenção! Essa postagem foi escrita há mais de 2 anos. Na informática tudo evolui muito rápido e algumas informações podem estar desatualizadas. Embora o conteúdo possa continuar relevante, lembre-se de levar em conta a data de publicação enquanto estiver lendo. Caso tenha sugestões para atualizá-la, não deixe de comentar!

Na maioria das vezes, aqui no blog, eu me dedico a explicar algumas funções bastante específicas de uma ou outra tecnologia. Porém, há alguns dias, recebi um comentário em algum dos meus posts que indagava, entre outras coisas, “o que é um framework?“.

Dessa forma, decidi que seria interessante desenvolver uma postagem explicando o que são frameworks PHP e como eles funcionam. Espero que essa postagem possa ser útil e ajude a tirar dúvidas.

O que é um framework?

Framework é um conjunto de códigos abstratos e/ou genéricos, geralmente classes, desenvolvidos em alguma linguagem de programação, que relacionam-se entre si para disponibilizar funcionalidades específicas ao desenvolvedor de software. Em outras palavras, é como uma caixa de ferramentas, um kit que possui diversas funcionalidades devidamente implementadas, testadas e prontas para serem utilizadas no construção de softwares, poupando ao desenvolvedor tempo e trabalho na elaboração de operações básicas como acesso a banco de dados, sistema de templates, mapeamento de rotas e validação de dados.

Os frameworks costumam ser divididos em módulos que podem ser interdependentes ou não. Isso quer dizer que, dependendo do framework utilizado, você poderá utilizá-lo apenas em sua totalidade, com todos os seus aparatos, ou então pode haver a possibilidade de utilização de apenas as partes necessárias.

Para que serve um framework? Quando devo utilizar?

Talvez ainda não tenha ficado claro para que exatamente serve um framework. Por isso, tentarei responder a essa pergunta na forma de uma historinha:

José é um desenvolvedor de softwares que precisa construir uma nova aplicação. Após realizar a análise dos requisitos, ele descobre que precisará implementar cadastro de clientes, publicação de notícias e consulta a um catálogo de produtos, além de realizar a validação de todos esses dados.

 

Para poder dar vida a esse sistema, José precisará desenvolver diversos módulos e componentes como paginação de resultados, ferramentas de criptografia, camadas de conexão a bancos de dados etc.

 

Com o intuito de pular essas tarefas repetitivas, uma vez que são coisas comuns em diversos sistemas, José opta por utilizar um framework. Após a instalação, ele começa a desenvolver seu código normalmente e, sempre que precisa, faz requisições às classes do framework para realizar essas tarefas que já tiveram seu código desenvolvido.

Espero que tenha ficado um pouco mais fácil de entender do que estou falando aqui. Porém, só saber o que, não é suficiente para você saber se precisará ou não.

A utilização de frameworks é recomendada quando, ao desenvolver uma aplicação, você precisa realizar tarefas repetitivas ou que são comuns a vários sistemas. Por que perder tempo montando e testando um sistema para validação de dados se existe uma ferramenta que já faz isso e, melhor, já foi testada por diversas pessoas? Quando digo “diversas pessoas”, refiro-me às comunidades que estão por trás do desenvolvimento dessas ferramentas, ou seja, dificilmente um framework é desenvolvido por uma pessoa só, existe uma grande comunidade que contribui na sua construção.

Existem diversos frameworks disponíveis para PHP

Existem diversos frameworks disponíveis para PHP

Vantagens e desvantagens na utilização de frameworks

Embora existam muitas vantagens na utilização de frameworks, nem tudo são flores. Reservei as próximas linhas para realizar alguns comentários sobre os prós e contras de se utilizar frameworks no desenvolvimento de uma aplicação. Dependendo do porte do sistema a ser desenvolvido, é possível até que o framework atrase o processo. Portanto, muita atenção aos detalhes!

Prós

Eficiência

A utilização das classes presentes nos frameworks pode poupar horas e horas de desenvolvimento, uma vez que diversas rotinas comuns no desenvolvimento de softwares já estão implementadas.

Reuso

Existe uma grande probabilidade de você não ficar copiando e colando código no decorrer do desenvolvimento. Pelo fato de muitas rotinas estarem prontas, o programador é estimulado a reutilizar o código.

Segurança

Em frameworks bastante difundidos, que possuem uma comunidade trabalhado em seu código, o nível de segurança é mais alto, pois existem diversas pessoas desenvolvendo e reportando erros, de forma colaborativa, contribuindo para o aumento da segurança e da estabilidade.

Custo

Geralmente os frameworks são gratuitos, ou seja, você tem acesso a uma poderosa ferramenta de desenvolvimento sem precisar gastar dinheiro.

Documentação

A maioria dos frameworks possui uma vasta documentação, explicando cada detalhe e o funcionamento de cada de suas ferramentas.

Padrões de codificação

Você não consegue utilizar um framework se não seguir um padrão de codificação. Isso pode, além de melhorar a legibilidade do código, tornar mais simples a manutenção e o entendimento por outros desenvolvedores, tendo em vista que a maneira como as coisas funcionam está presente na documentação do framework.

Contras

Dependência

Depois que você inicia o desenvolvimento de uma aplicação utilizando um framework, você está amarrado a ele. Se por acaso ele não receber mais atualizações, for descontinuado ou receber uma atualização com quebra de compatibilidade, cabe a você mantê-lo funcionando ou migrar a aplicação (muitas vezes tendo que reescrever código). Não costuma acontecer, mas nunca se sabe.

O framework não é a linguagem

Você está lidando com uma abstração da linguagem, não a linguagem em si. Isso quer dizer que você passará muito do tempo aprendendo peculiaridades do framework, não da linguagem que está por baixo dele. Isso pode ser um problema caso você não conheça bem a linguagem em que está trabalhando.

Não é muito simples modificar o framework

Aqui é preciso ter muito cuidado, pra que você não me entenda mal. Estou me referindo ao núcleo do framework, todo o seu código base. Geralmente é muito complexo de realizar uma modificação, porque, a menos que você conheça 100% da estrutura do framework, não sabe como suas modificações irão impactar o funcionamento do sistema. Além disso, você deverá estar sempre atento às atualizações, uma vez que suas modificações podem ser simplesmente “varridas” do código.

Toneladas de códigos desnecessários

Antes de escolher um framework, você deve verificar a relação entre a sua robustez e as necessidades da aplicação. Você deve fazer sua escolha baseando-se no tipo de software que você precisa produzir. Para grandes softwares, frameworks mais robustos, com diversas funcionalidades. Caso contrário, procure opções mais leves ou até mesmo microframeworks. Nem sempre a escolha é feita da maneira certa e isso pode tornar a aplicação desnecessariamente mais pesada.

Legal, mas então, em vez de aprender, vou criar meu próprio framework

Muito cuidado aí, campeão. Muitos desenvolvedores podem cair no erro de desenvolver seu próprio framework. Chamo de “erro” porque na maioria das vezes é. Não quero dizer que você está impedido de desenvolver o seu, mas que você deve pensar muito bem antes de fazê-lo, para compreender se realmente isso é necessário.

Antes de desenvolver sua própria caixa de ferramentas, faça-se as seguintes perguntas:

  • Quem irá auditar o código desenvolvido?
  • Quantas pessoas utilizarão meu código? Há gente suficiente para detectar bugs?
  • Quando e como os bugs serão corrigidos? Terei tempo pra isso?
  • Como será feita a atualização das aplicações que utilizarem esse framework quando algum bug for corrigido ou atualização realizada?
  • Terei tempo para implementar todas as funcionalidades que eu preciso? Ou desistirei no meio do caminho criando um “meio-framework”?
  • Como o framework será documentado para que outras pessoas possam utilizá-lo ou dar manutenção?

Porém, podem existir casos em que, realmente, os frameworks existentes não suprem a necessidade da sua aplicação. Ou então, até o framework mais simples é muito mais complexo do que a sua aplicação necessita. Enfim, existem pontos que você pode levar em consideração para, sim, desenvolver seu próprio framework.

  • Você aprenderá muito sobre a linguagem na qual o framework será desenvolvido.
  • É uma excelente maneira de aumentar seu portfolio (leia-se GitHub).
  • Haverá total controle sobre o código do framework.

Considerações finais

Embora seja um assunto complexo, espero que este artigo tenha ajudado a “clarear a mente”. A partir de agora, você terá mais informações para poder fazer suas escolhas.

Se quiser conhecer quais frameworks o PHP tem pra oferecer, existe um artigo na Wikipedia (inglês) intitulado Comparison of web frameworks. Lá você encontra uma lista com os principais frameworks PHP disponíveis atualmente.

E aí? Concordam, discordam, encontraram algo errado, querem fazer uma sugestão? Utilizem os comentários para entrar em contato e contribuir com a discussão.

Um abraço a todos e fiquem com Deus!
Rafael Jaques