O que REALMENTE significa Framework?

Desculpa a pergunta, mas a verdade é que já cansei de procurar definições de “framework” na internet. Todas elas são diferentes uma da outra! Uma diz que framework são pequenas rotinas de código, outra diz que são interfaces gráficas (:!: ), outra diz que framework é sinônimo de biblioteca… Mas afinal de contas: o que é um framework?

Obrigado!

2 curtidas

Se você procurou, a melhor definição que eu lembre é a da Wikipedia. Pode se basear por ela.

Até!

Você está confuso porque existe mais de uma definição. Mas, alguns livros fazem as seguintes definições:

  1. Biblioteca: Conjunto de código pronto. Pode ser um conjunto de funções matemáticas, não precisa necessariamente orientada a objetos. Portanto, mesmo as frameworks são bibliotecas.

  2. Toolkit: Conjunto de classes que, mas cuja arquitetura não se baseia em extensão, mas sim em uso. Um exemplo seria a STL do C++, ou o pacote java.util.concurrent. Mas, por essa definição, não seria a AWT (Abstract Window Toolkit), já que boa parte de suas classes são extensíveis.

  3. Framework: Biblioteca de classes que suportam uma funcionalidade, mas que baseiam-se em extensão. Como o caso do Swing, onde você é obrigado a implementar um TableModel, por exemplo. O framework, portanto, é mais intrusivo e gera mais acoplamento do que um Toolkit. Geralmente, um framework chega a impor algum tipo de arquitetura ao projeto de software.

  4. Engine: Um framework que geralmente gerencia o fluxo do código (geralmente roda num loop). Seria também o caso do Swing, JMonkeyEngine, Ogre ou do glut. Hoje o termo também inclui em engine a presença de um ambiente maior, com scripts, editores, etc…

Essas 4 são as definições que mais gosto. Mas autores diferentes misturam esses conceitos uma vez ou outra. Portanto, não fique tão preso as definições.

1 curtida

eu pessoalmente penso em framework como um conjunto de classes especificos para determinada tarefa, assim ao usar um framework penso em reaproveitar o trabalhado que outras pessoas criaram facilitando meu trabalho

2 curtidas

Bem, isso é exatamente o que todas as definições acima tem em comum. Mas não deixa de ser verdadeiro, já que muitos autores consideram todas as definições sinônimas.

Eu concordo com as definições do Vini só queria dizer que o toolkit ( conjunto de ferramentas) é realmente baseado em uso e não extensão, no sentido de que para funcionar não precisamos extender nada, nem reimplementar nada; mas isso não quer dizer que não possamos. O exemplo perfeito é pacote de coleções. As coisas são feita para serem usada tal como estão, mas podemos sempre implementar um List ou um Set se quisermos.
Essa é a diferença fundamental em relação a framework, onde para funcionar algo tem que ser obrigatoriamente implementado (ele apanas fornece ganchos). Embora a maioria dos frameworks apresente implementações padrão dessas peças especiais: primeiro porque quando a pessoa começa a usar o framework começa por usar o que já vem pronto, segundo porque os defaults ajudam a explicar o conceito do framework para que depois haja implementações especificas. (Todos os Default-…-Model do swing são exemplos disto)

[quote=Martin Fowler](In software any term means many things.)

Vini, gostei das definições, mas acho que muito mais do que a extensão de classes, a grande diferença entre um framework e uma biblioteca é a inversão de controle: em vez do seu código chamar o framework, o framework executa seu código, normalmente em resposta a um evento. O assunto fica confuso porque a maioria dos frameworks incluem bibliotecas também.

Sim, essa é uma consequência de basear a hierarquia em herança, e não em composição.

Mas isso ocorre em toolkits também. Por exemplo, no método sort geralmente você é obrigado a fornecer um callback (ou uma interface) para que ele saiba como ordenar os dados. E, por você ser obrigado a implementar uma interface, não transforma o toolkit em framework e também há a inversão de controle.

Na minha definição fiz questão de citar uma coisa que realmente acho ser o diferencial:
O Toolkit não te impõe qualquer tipo de design em suas classes, enquanto o framework geralmente já te dá um modelo pronto, e força que você o adote através de herança. Por isso, o grau de acoplamento é maior e há intrusão, já que você fica proibido de modelar de outras formas (as vezes até melhores do que as propostas). Tente abrir mão do modelo MVC no Swing ou no Struts e você verá bem o que estou falando.

A inversão de controle que você falou realmente ocorre, e no caso do framework é mais profunda do que uma primeira análise sugere. Só não acho que a presença dela seja decisiva para dizer que algo é um framework, embora a ausência possa dizer que algo não é um. :slight_smile:

De tudo que eu pesquisei sobre Framework, estas informações foi a que mais consegui entender, e mesmo assim não entendi cerca de 30% do que seria, eu sou formada Relações Públicas e estou fazendo pós-graduação de GTIC (Gestão de Tecnologia da Informação e Comunicação) e em um material de estudo “CobiT 4.1” eu vi uma menção a Framework, será que há alguém que poderia explicar para uma leiga no assunto de uma maneira que talvez eu pudesse entender?
Grata

Bom dia Tamara Ramos na minha opinião Framework em programação quer dizer um conjunto de classes já implementadas e testadas, prontas para o uso, para facilitar a vida do programador, deixar as tarefas do dia a dia mais rapidas e eficientes sem falar no reaproveitamento de código e na padronização, mais pelo contexto da sua pergunta, Framework quando se trata de assuntos como melhoria de processos falando em Cobit ou Itil v3. Framework quer dizer um conjunto de regras = etapas padronizadas para a resolução de um ou varios problemas, referentes a organização da empresa, melhoria de processos para obter melhor qualidade e eficiencia desde o chamado de um cliente até a resolução final do problema!

espero ter ajudado, abraços!

1 curtida

[quote=TiagoTC]Desculpa a pergunta, mas a verdade é que já cansei de procurar definições de “framework” na internet. Todas elas são diferentes uma da outra! Uma diz que framework são pequenas rotinas de código, outra diz que são interfaces gráficas (:!: ), outra diz que framework é sinônimo de biblioteca… Mas afinal de contas: o que é um framework?

Obrigado![/quote]

Na minha opinião:

Suas definições estão corretas, eu complementaria dizendo que um framework “encapsula um código (ex: de difícil/complexo entendimento), dando uma interface mais amigável”.

Obrigada André, e obrigada Rafael, você me auxiliou muito com a sua explicação estou no módulo de Governança em TI, e agora entendi bem!!!

Atenciosamente,
Tâmara Ramos.

[quote=Tamara Ramos]De tudo que eu pesquisei sobre Framework, estas informações foi a que mais consegui entender, e mesmo assim não entendi cerca de 30% do que seria, eu sou formada Relações Públicas e estou fazendo pós-graduação de GTIC (Gestão de Tecnologia da Informação e Comunicação) e em um material de estudo “CobiT 4.1” eu vi uma menção a Framework, será que há alguém que poderia explicar para uma leiga no assunto de uma maneira que talvez eu pudesse entender?
Grata [/quote]

Bom, são conceitos diferentes dependendo da colocação, veja que Governança de TI -> ITIL/Cobit são um framework no sentido de “um conjunto de práticas/maneiras/diretrizes
para se fazer um trabalho”.

A explicação feita por mim foi para frameworks no contexto de Linguagem de Programação.

Você entendeu mesmo?

Na verdade entendi mais o que Rafael falou por conta do contexto, mas meu entendimento com relação a sua ajuda foi parcial rsrsrsr. Sabe não é? Não técnica!!!

[quote=RafaelCassau]Bom dia Tamara Ramos na minha opinião Framework em programação quer dizer um conjunto de classes já implementadas e testadas, prontas para o uso, para facilitar a vida do programador, deixar as tarefas do dia a dia mais rapidas e eficientes sem falar no reaproveitamento de código e na padronização, mais pelo contexto da sua pergunta, Framework quando se trata de assuntos como melhoria de processos falando em Cobit ou Itil v3. Framework quer dizer um conjunto de regras = etapas padronizadas para a resolução de um ou varios problemas, referentes a organização da empresa, melhoria de processos para obter melhor qualidade e eficiencia desde o chamado de um cliente até a resolução final do problema!

espero ter ajudado, abraços![/quote]

Uma das melhores definições que encontrei até o momento… Obrigado…

Reservadas as especificidades de cada área, onde realmente cada lembrança tem o seu significado, tento partilhar a minha contribuição.
Se usamos um tradutor para a palavra “framework” aparecerá “quadro”, mas definitivamente framework não quer dizer conjunto, bibliotecas ou até incorporações de bibliotecas, apesar de poder ser tudo isso e muito mais. Framework quer dizer apenas FERRAMENTA, simples assim, ou melhor ainda, como diria Paul M. Jones (colunista iMasters): Frameworks são máquinas. Cada um tem seu código, que equivale às partes móveis interdependentes e inter-relacionadas de uma máquina. Frameworks são fascinantes pelas mesmas razões que as máquinas são fascinantes.

Framework significa Plataforma ou Estrutura. Apenas isso.

Considerando as várias definições, entendo como uma ferramenta ou conjunto de ferramentas padronizadas para fins de produção .

Aí temos:

  1. metodologias de desenvolvimento.
  2. softwares;
  3. bibliotecas;
    Etc.

Assim, alguém que usa uma biblioteca como o Angular, pode considera-la como um framework (ferramenta de desenvolvimento).

Uma empresa que utiliza o scrum, pode considera-lá como um framework: ferramenta de gerenciamento.

Quem segue um padrão de projeto observando o PMBOK pode considerar este um framework.

O objetivo do framework é ajudar na produção, se atrapalha, não é framework.

Assim, um framework é uma ferramenta de trabalho com vistas a facilitar/melhorar/acompanhar/etc a produção em suas diversas etapas.

Se fosse fazer uma tradução grosseira, pra mim seria:
Framework = ferramenta.

Dessa forma fica menos estressante tentar adivinhar porque tem tantas definições.

Ferramenta scrum, finalidade: gerenciamento de projetos
Ferramenta Angular, finalidade: desenvolvimento;
Etc.

Assim, o importante é saber qual a finalidade da ferramenta, como a utilizar e em essência se é ou não adequada.

Assim, quando alguém disser que tem um framework novo no mercado, pergunta-se, pra que serve, depois como funciona e com a devida crítica talvez não seja um framework, mas uma MODINHA.

1 curtida