Conceito
- Uma abstração que une códigos comuns entre vários projetos de software provendo uma funcionalidade específica, por configuração durante a programação de uma aplicação.[1]
- Definir exatamente o que é um framework não é uma tarefa tão fácil, muitos são os conceitos criados por profissionais da área, mas em conceitos gerais seria um conjunto de códigos abstratos e/ou genéricos, geralmente classes implmentadas em uma linguagem de programação, que são usadas para modelar e construir as partes de uma aplicação que são comuns à um domínio de problemas específicos.[2]
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.
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