Introdução

  • Como programador, você não precisa começar do zero quando tem ferramentas projetadas para ajudá-lo em seus projetos. Frameworks são softwares desenvolvidos e usados ​​por desenvolvedores para construir aplicações.


Características básicas

  • Um framework diferentemente de uma biblioteca, tem módulos estruturados seguindo algum padrão de projeto (como o MVC por exemplo) sendo praticamente impossível construir a aplicação sem seguir os padroẽs especificados pelo framework. Exemplo: (Framework Web) É um tipo de framework designado para suportar o desenvolvimento de sites web dinâmicos, aplicações web e serviços web, e tem a implementação de módulos comuns à esse tipo de aplicação como por exemplo: acesso à banco de dados e gerenciamento de sessão.[3]
  • Um tipo de arquitetura muito usado nesses frameworks é o padrão MVC (Modelo Visão Controlador), a idéia principal desse modelo é fazer a separação entre o modelo de dados, as regras de negócios e a interface do usuário.[3] Exemplos de framework web seriam: Spring (Java), Jboss Seam (Java), Jquery (JavaScript), AngularJS (JavaScript), Zend (PHP), Symfony (PHP), Django (Python), Ruby on Rails (Ruby), Etc.


Classificação

  • Frameworks verticais – mais comummente chamados frameworks especialistas, são criados através da experiência obtida em projetos anteriores de um determinado contexto específico[1], geralmente tem as funçoẽs mais comuns de uma aplicação de um determinado escopo (como Web por exemplo) já implementadas (ou pelo menos parte delas) de maneira que o desenvolvedor não precisara recriar do zero toda a estrutura da aplicação uma vez que a maior parte dos sistemas de um determinado domínio tem requisítos funcionais comuns em todos eles. O desenvolvedor então só terá que personalizar os módulos de maneira que atendam aos requisítos específicos do seu sistema.
  • Frameworks horizontais – Esse tipo de framework não depende do domínio da aplicação e pode ser usado para resolver problemas de diferentes domínios. Exemplos: interfaces gráficas.[1]


Benefícios

  • Eficiência – Como as rotinas mais comuns de uma aplicação já terão sido implementadas, o tempo total de desenvolvimento do sistema será menor.
  • Segurança – Muitas das falhas de segurança comuns à uma aplicação já terão sido tratadas pois a maioria dos frameworks são desenvolvidos por comunidades e diversas pessoas reportando erros de forma colaborativa.
  • Custo – A maioria dos frameworks são gratuitos, não gerando custos maiores ao desenvolvimento.
  • Documentação – A maioria possui uma vasta documentação, explicando os detalhes e funcionamento de suas ferramentas.
  • Padrões de codificação – por seguir um padrão de código, além de melhorar a legibilidade do código, pode tornar a manutenção mais simples.


Desafios

  • O framework não é a linguagem – por ser uma abstração da linguagem o desenvolvedor terá que passar um tempo aprendendo as peculiariedades do framework.
  • Códigos desnecessários – Dependendo do tamanho da aplicação um framework mais robusto pode ter funcionalidades que serão desnecessárias para aquele sistema o que pode tornar a aplicação desnecessariamente mais pesada.[2]


Referências