Como escolher um Framework para o meu projeto ?

Olá pessoal, hoje iremos abordar um assunto muito interessante, que é a escolha de um Framework, com certeza muitos desenvolvedores e arquitetos já ficaram com dúvidas na hora de tomar esta decisão tão importante, e que pode influenciar no sucesso do projeto.

Vou listar algumas práticas e experiências que adquiri nesses últimos anos, onde fui responsável por estas escolhas, iremos focar na plataforma Java, mas o processo de definição e escolha de APIs e Frameworks, pode ser adotado em qualquer outra linguagem, pois são passos que independente de tecnologia, ajudam a tomar as melhores decisões.

Devemos Usar um Framework ?

A necessidade do mercado por softwares evoluiu muito com o passar dos anos, hoje temos sistemas operando em quase todas as áreas: Financeira, Médica, Jurídica, entre outras, com toda essa demanda, o setor de desenvolvimento teve que evoluir para acompanhar a alta procura por sistemas em um curto prazo.

Os Frameworks entram nesse ponto, eles ajudam propondo soluções para problemas recorrentes que aparecem ao desenvolver sistemas diversos, exemplos:
Quando adotamos algum framework para desenvolver algumas camadas do nosso software, conseguimos muito benefícios, tais como: reduzir o tempo de desenvolvimento, aumentar a qualidade, reuso de funcionalidades, entre outros.

Como Escolher um Framework ?

Com certeza esse é um tópico que irá reunir muita discussão, pois a escolha de um framework, é algo que depende de vários fatores, vou citar alguns que podem ajudar na hora da escolha:
  • Suporte do Mantenedor
    • É importante que o desenvolvedor/empresa que desenvolveu o framework, dê suporte e seja ativo na comunidade.
  • Suporte da Comunidade
    • É muito bom quando o framework escolhido é bem aceito pela comunidade, seja em fóruns de discussão, em blogs, entre outros meios, assim podemos tirar dúvidas e esclarecer tópicos que aparecem no decorrer do desenvolvimento.
  • Conhecimento da Equipe / Curva de Aprendizado
    • É importante que a equipe tenha conhecimento sobre o framework escolhido;
    • Na escolha do framework, pode acontecer de que membros da equipe não o conheça, com este cenário, qual tempo um desenvolvedor vai levar para aprender detalhes funcionais do framework ?
  •  Protótipo
    • Antes de homologar um framework é muito importante desenvolver um Protótipo, assim podemos realizar testes funcionais e analisar se o mesmo irá atender aos requisitos do software
  • Atende aos Requisitos ?
    •  Para responder a esta pergunta, é fundamental os itens anteriores, pois com todos eles documentados conseguimos de forma clara e objetiva a resposta.

Não Existe Bala de Prata ?

É muito comum as empresas adotarem um framework como padrão, mas até onde isso é uma vantagem ou desvantagem ?

Vou listar abaixo alguns pontos dessa abordagem:

  • Vantagens
    • Melhor reuso de funcionalidades;
    • Membros da equipe podem focar seus estudos no framework, assim temos uma equipe mais preparada tecnicamente;
  • Desvantagens
    • Utilização de um framework X onde o Y seria mais adequado;
      •  Exemplo: Em uma aplicação Web que usa serviços REST, usar um framework Component Based onde um Action Based seria mais adequado.
    • Criar funcionalidades externas as propostas pelo framework, devido ao mesmo não atender aos requisitos de um novo software da empresa.

Conclusão

Como mencionei anteriormente, este é um assunto muito complexo em arquitetura de aplicações, porque pode trazer muitas consequências ao projeto, então é importante que a decisão final seja baseada em vários itens que comprovem que o framework escolhido, irá realmente atender aos requisitos do software que será desenvolvido.

Até a próxima.

Comentários

Popular Posts

Criando arquivos de log com Log4J

Monitorando o Tomcat com Java VisualVM

Injeção de dependências em Java EE usando @Inject, @EJB e @Resource ?

Gerenciamento de Transações com EJB - Parte 2

AngularJS - Formatando Datas com o Filter Date

JBoss AS 7 - Instalação e Configuração

Configurando o arquivo application.properties do SpringBoot

Métodos Utilitários da Classe String

Criando Módulos e DataSources no Wildfly

Criando uma Aplicação com Spring Boot e MongoDB