Gil (discussão | contribs)
Sem resumo de edição
Gil (discussão | contribs)
Linha 35: Linha 35:
<br>
<br>
*[3] https://pt.wikipedia.org/wiki/Framework_para_aplicações_web
*[3] https://pt.wikipedia.org/wiki/Framework_para_aplicações_web
<br>
*[Imagens]http://blogwebdesignmicrocamp.com.br/programacao/o-que-e-um-framework/
<br>
<br>

Edição das 16h14min de 22 de maio de 2017

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. 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