Prós e Contras no desenvolvimento com Frameworks

Tempo de Leitura: 6 Minutos

Quando damos inicio a um novo projeto, seja ele um aplicativo, um site corporativo, um sistema online, um web-service ou qualquer outro, independente do tamanho e da complexidade, vem a mente quais as possíveis linguagens que usaremos seja no server-side ou no client-side e se usar ou não um Framework. A resposta a essa pergunta, tecnicamente, depende de alguns fatores e vamos falar sobre eles agora.

Traduzindo Framework significa moldura de trabalho, e é justamente isso o que ele faz, delimita os limites dentro dos quais você pode desenvolver, cuidando de todo o resto, isso agiliza muito o desenvolvimento de rotinas padrão e da gestão posterior do software, porém, para ter uma boa experiência com uso destas ferramentas devemos nos atentar aos detalhes, especificações e disponibilidade de recursos.

A primeira coisa que temos que ter em mente é, não escolhemos um framework e desenvolvemos utilizando ele, e sim usamos ele como uma ferramente para nos auxiliar no desenvolvimento, ou seja, pouco adianta um super framework cheio de recursos e funcionalidades, para desenvolvermos um site pessoal, já que a maioria das hospedagens compartilhadas não suporta a instalação de alguns frameworks, o que necessariamente obrigaria o ambiente ser um VPS ou ou servidor dedicado.

Por outro lado, não devemos reinventar a roda, se temos no escopo do projeto, um ambiente que suporta o uso de determinados frameworks, e estes atendem a todos os requisitos, então porque não utiliza-los e agilizar muito o processo de desenvolvimento? Produzir um código com alta taxa de reusabilidade, dentro dos mais novos padrões de desenvolvimento da indústria de software, com segurança e validações consistentes de dados, entre outros pontos positivos.

Outro ponto muito importante, é a equipe que está envolvida no projeto, se a curva de aprendizado do software for muito acentuada, podemos ter perda na produtividade se todos não conhecerem bem a ferramenta que está sendo utilizada. Muitas vezes uma empresa de software já possui pessoal treinado, e com uma grande biblioteca de recursos desenvolvidas durante todo o seu ciclo de vida, código que já foi testado, e já está disponível neste caso, adotar uma nova ferramenta pode não ser tão produtivo.

Um grande ponto positivo, é a segurança, todos os grandes Frameworks implementam muitas técnicas para proteção contra diversos tipos de ataques de pessoas mal-intencionadas como Session Fixation, Cross-site scripting, CSRF (Cross-site request forgery) entre outras, além de recursos de validação de dados e checagens, o que certamente levaria um bom tempo para ser desenvolvido por nós do zero, e certamente ainda deixaríamos muitas vulnerabilidades no sistema e só descobriríamos quando fossemos atacados. Você e sua equipe passariam mais tempo se preocupando com rotinas de desenvolvimento focados na regra do negócio do que na manutenção de padrões como telas de cadastro, ou persistência de dados, validação de formulários e segurança contra ataques.

Lembre-se, mesmo com uso de Framework poderosos, a segurança não depende só dele, e boas práticas de desenvolvimento, testes, e técnicas de segurança com uso de padrões são extremamente importantes e de responsabilidade da equipe de desenvolvimento.

Um grande ponto negativo, é que muitas vezes, o Framework não atende 100% dos requisitos de nosso software e nos vemos de mãos atadas pois o core (núcleo) é complexo e demorado para ser alterado, ou não pode ser alterado por ser algo comercial, e somos obrigados a fazer ajustes ou emendas que podem quebrar toda a estabilidade do desenvolvimento dentro daquele padrão, e esperar uma atualização que pode ou não servir para nosso caso pode ser extremamente demorado. Além do que, não temos como garantir que versões futuras deste Framework sejam retro-compatíveis e que bugs existentes em versões antigas não possam ser explorados e servirem de vulnerabilidade para nosso sistema.

Outro ponto importante, é a acomodação da equipe, muitas vezes quando estamos acostumados com o uso de uma ferramenta, temos a tendência natural a querer resolver todos os problemas com ela, e acabamos tentando resolver problemas muito simples com soluções muito complexas, algo como tentar matar uma formiga com uso de um canhão, a formiga vai morrer, porém os danos colaterais serão muitos. Geralmente grandes Framework consomem recursos de hardware, e podem vir a degradar a performance de sistemas muito simples consumindo recursos preciosos, e o mesmo se aplica também a grandes projetos, já que escalar estes recursos pode ser um grande problema principalmente em sistemas distribuídos e cloud computing, onde o custo depende diretamente dos recursos consumidos.

Geralmente, Framework vão te auxiliar com problemas tradicionais como autenticações, validações, criação de telas e formulários, consistência de dados entre outros, e você, terá todo o tempo para determinar as regras do negócio, como implementar as funções específicas do projeto. Em resumo, Framework são muito bons em auxiliar a equipe no desenvolvimento de projetos de médio e grande porte, porém, usar micro-Framework podem ser mais fáceis e produtivos quando a ideia é projetos de menor porte, e de alta disponibilidade ou escalabilidade.

Já projetos menores ou de alta disponibilidade podem fazer usos de outras formas de controle e de reaproveitamento como bibliotecas de classe, onde o controle só passa para o software terceirizado quando existe a necessidade, quem controla todo o fluxo de desenvolvimento é o desenvolvedor da aplicação, em Framework quem controla todo o acesso a partes do código é o próprio Framework.

Quais são os cuidados necessários ao usar essa tecnologia?

Alguns cuidados devem ser tomados quando falamos de uso de frameworks. Por exemplo, há algumas perguntas que devem ser respondidas de antemão, tais como:

  • Quem será o profissional responsável por auditar o código desenvolvido?
  • Quantas pessoas utilizarão o código criado? Há uma equipe responsável que conseguirá detectar os bugs?
  • Quem serão os responsáveis pelas correções de bugs? Como eles serão corrigidos e quando?
  • Como serão programadas as atualizações das aplicações que usam esse framework?
  • Como será feito o cronograma para aplicação das funcionalidades?
  • Como será documentado o framework?

Também é importante considerar a possibilidade de os frameworks existentes não suprirem a necessidade das suas aplicações, ou, em alguns casos, ele apresente uma complexidade muito maior do que as soluções necessitam.

Há frameworks de todos os tipos, com as mais variadas funções e diferentes tamanhos. Por isso, o desenvolvedor deve encontrar aquele que tenha só as funções que são necessárias para seu projeto — ou o mínimo possível de componentes extras.

Lembre-se de que há diversas opções mais robustas, mas que essas ferramentas vêm com uma gama de funções que têm poucas chances de serem usadas pela aplicação. Com isso, vão representar um peso desnecessário no programa.

Qual a diferença entre frameworks e biblioteca de código?

A biblioteca é menos complexa do que o framework. É um dos recursos mais utilizados na área de TI, cuja ideia principal é compartilhar soluções já prontas, por meio de funções ou métodos. Em uma analogia bastante simples, seria o mesmo que aplicar a estrutura de equações para resolver problemas matemáticos. Assim, não é preciso desenvolver toda a lógica para chegar a formulação da equação — a questão já está pronta.

Muitas empresas que desenvolvem soluções específicas, como um software para gestão de vendas, ou softwares para automação de processos trabalhistas, PDV, entre uma infinidade de outros, muitas vezes possuem uma vasta biblioteca de funções já desenvolvidas e customizadas para seus clientes, e que já estão amplamente testadas e fazem mais jus ao uso do que reescrever tudo dentro de um framework.

Em outras palavras, é uma espécie de coleção de implementações de comportamentos, definidas em uma linguagem e importadas para o código que está desenvolvendo. Um exemplo de biblioteca de códigos bastante utilizado é o jQuery, utilizado para manipulação de códigos HTML. O framework, normalmente, é conhecido por ser um conjunto de bibliotecas de códigos abstratos que realizarão uma operação maior. Com um maior grau de complexidade, está diretamente ligado à arquitetura de software.

Um exemplo simples são as telas de login. Elas possuem características sempre bem semelhantes: uma tela para inserção do nome do usuário, campo para inserção da senha, um botão de recuperação de senha e um de ‘entrar’. Por terem sempre a mesma estrutura, criou-se um framework dessa operação, de forma que essa função é implementada rapidamente no código, sem ter que reescrevê-lo sempre que quiser acrescentar uma tela de login a sua solução.