• Home
  • Chat IA
  • Recursos
  • Guru IA
  • Professores
Home
Recursos
Chat IA
Professores

·

Sistemas de Informação ·

Engenharia de Software

Envie sua pergunta para a IA e receba a resposta na hora

Recomendado para você

Padrões de Projeto Eds

30

Padrões de Projeto Eds

Engenharia de Software

UFF

Linhas de Produto de Software - Eds

16

Linhas de Produto de Software - Eds

Engenharia de Software

UFF

Trabalho de Projeto de Software engenharia de Software

7

Trabalho de Projeto de Software engenharia de Software

Engenharia de Software

UFF

Arquitetura de Sw - Eds

33

Arquitetura de Sw - Eds

Engenharia de Software

UFF

Técnicas de Identificação de Elementos 2022-1

9

Técnicas de Identificação de Elementos 2022-1

Engenharia de Software

UFF

Analise de Arquitetura de Microsservicos Relatorio sobre Archetipos Open Source

1

Analise de Arquitetura de Microsservicos Relatorio sobre Archetipos Open Source

Engenharia de Software

PUC

INE5614-Questionario 3 Modularidade e Reuso-Provas

7

INE5614-Questionario 3 Modularidade e Reuso-Provas

Engenharia de Software

UFSC

Engenharia de Software - Questões

3

Engenharia de Software - Questões

Engenharia de Software

IFMA

Exercícios de Testes de Unidade, Integração e Sistema com GitHub Actions

1

Exercícios de Testes de Unidade, Integração e Sistema com GitHub Actions

Engenharia de Software

UFJF

Arquitetura de Software: Estruturas e Componentes em Sistemas de Software

74

Arquitetura de Software: Estruturas e Componentes em Sistemas de Software

Engenharia de Software

PUC

Texto de pré-visualização

Frameworks Bruna Diirr brunadiirr@ic.uff.br Introdução Programar não é trivial... Estratégia: Lançar mão de formas de reuso que vão além de código  reuso de análise, design, código Framework orientado a objeto O que é um framework? “Aplicação semicompleta reutilizável que, quando especializada, produz aplicações personalizadas” (Johnson & Foote, 1988) É um conjunto de classes cooperantes que constroem um projeto reutilizável para uma determinada categoria de software um framework orientado a construção de editores gráficos para diferentes domínios outro ajuda a produzir compiladores para diferentes linguagens de programação O que é um framework? Framework é uma aplicação QUASE completa Seu trabalho consiste em prover os pedaços faltantes, que são específicos para sua aplicação Criação de subclasses específicas para a aplicação, derivadas das classes abstratas do framework O que é um framework? Um framework Provê solução para uma família de problemas semelhantes Usando classes e interfaces que mostram como decompor essa família de problemas E como objetos dessas classes colaboram para cumprir suas responsabilidades Devendo ser flexível e extensível para permitir a construção de várias aplicações com pouco esforço Especificando apenas as particularidades de cada aplicação Frameworks x Biblioteca de classes Biblioteca de classes Cada classe é única e independente das outras Comunicação entre objetos não está definida  Cliente responsável por chamar cada método Não se pode embutir conhecimento do domínio Não tem fluxo de controle pré-definido Não possui comportamento default Framework Dependências/colaborações estão embutidas Comunicação entre objetos já está definida  Framework responsável por chamar cada método Hollywood principle: “Don’t call us, we’ll call you” Pode embutir conhecimento do domínio Controla fluxo de controle Possui comportamento default Frameworks x Padrões Padrões Menores Formados por duas ou três classes Mais abstratos Representam conhecimento e experiência sobre software Possuem natureza lógica Devem ser estudados e programados a cada uso Menos especializados Podem ser usados em diversos tipos de aplicação, não ditando uma arquitetura particular Framework Maiores Formados por muitas classes Frameworks contêm padrões, mas não o inverso Menos abstratos É um software executável Possuem natureza física Programados para ser executados e reusados diretamente Mais especializados Em geral, são desenvolvidos para um domínio de aplicação específico Aparentemente, ambos consistem de classes, interfaces e colaborações prontas, mas... Frameworks x Aplicação O desenvolvimento de uma aplicação pode ser feito com base em mais de um framework. Por exemplo, no desenvolvimento de uma ferramenta CASE: o framework “Model-View-Controller” pode ser usado para desenvolver a interface; e o framework “Hotdraw” para desenvolver a parte de elaboração de diagramas Características Deve ser reusável Propósito final! Para isso, deve primeiro ser usável Bem documentado Fácil de usar Deve ser extensível Contém funcionalidade abstrata (sem implementação) que deve ser completada Deve ser de uso seguro O desenvolvedor de aplicações não pode destruir o framework Deve ser eficiente Devido a uso em muitas situações, algumas delas podem necessitar de eficiência Deve ser completo Para endereçar o domínio do problema pretendido Frameworks Vantagens Aproveitamento da experiência de especialistas do domínio Maximização de reuso Maior consistência e integração entre aplicações Redução da manutenção Aplicações com menos linhas Reparos no framework se propagam pelas aplicações Melhora da produtividade Programadores não precisam reinventar a roda Economia a longo prazo Desvantagens Maior esforço para construção e aprendizado Programas mais difíceis de depurar Necessária documentação de manutenção e apoio Vencer “Not Made Here Syndrome” “The most profoundly elegant framework will never be reused unless the cost of understanding it and using its abstractions is lower than the programmer's perceived cost of writing them from scratch” (Booch, Dr Dobb's Journal, 1994) Benefícios percebidos no longo prazo Tipos de frameworks Classificação de frameworks de acordo com duas dimensões: Como o framework é usado? Onde o framework é usado? Tipos de frameworks “Como é usado?” Inheritance-focused Também chamado de caixa-branca ou orientado à arquitetura Estende ou modifica funcionalidade pela definição de subclasses com sobrescrita de métodos Mais fácil de projetar Composition-focused Também chamado de caixa-preta ou orientado a dados Usa a funcionalidade já presente no framework As coisas internas do framework não podem ser vistas ou alteradas Deve-se usar as interfaces fornecidas As instanciações e composições feitas determinam as particularidades da aplicação Mais fácil de usar Híbridos A maioria dos frameworks é inheritance-focused com alguma funcionalidade pronta (composition-focused) Tipos de frameworks “Onde é usado?” Framework de suporte Provê serviços de nível de sistema operacional (e não de aplicação) São raros Framework de aplicação Também chamado de framework horizontal Encapsula conhecimento aplicável a vasta gama de aplicações Resolve apenas uma fatia do problema da aplicação Exemplo: framework para construção de interface GUI Framework de domínio Também chamado de framework vertical Encapsula conhecimento aplicável a aplicações de um domínio particular de problema Resolve boa parte da aplicação Exemplo: Framework para construir aplicações de controle de manufatura Exemplos Frameworks horizontais Interface do Usuário (GUI) Apple MacApp Corel/Inprise/Borland OWL Java Foundation Classes (JFC/Swing) Microsoft Foundation Classes (MFC) Sistemas operacionais Aplicações são extensões do sistema Frameworks para persistência TopLink ou CocoBase Middleware Enterprise Java Beans Microsoft MTS/COM+ Frameworks MVC Struts IBM servletmanager Oracle9iAS MVC Framework WebFlow em WebLogic Portal 4.0 da BEA WebWork Tapestry Turbine Java Infobus Frameworks verticais Editores de desenho estruturado Visio JHotdraw Aplicações financeiras complexas IBM San Francisco Jogos de dados Landin Niklasson Monitoramento de risco financeiro Rogers Como construir frameworks? Frameworks são abstrações As pessoas fazem generalização a partir de exemplos concretos A concepção de código reutilizável requer iteração Frameworks embutem conhecimento do domínio Clientes do framework são os programadores de aplicações Generalizando: Encontre coisas com nomes diferentes mas que sejam as mesmas Parametrize para eliminar diferenças Quebre coisas grandes em coisas pequenas, de forma que componentes similares possam ser encontradas Categorize coisas similares

Envie sua pergunta para a IA e receba a resposta na hora

Recomendado para você

Padrões de Projeto Eds

30

Padrões de Projeto Eds

Engenharia de Software

UFF

Linhas de Produto de Software - Eds

16

Linhas de Produto de Software - Eds

Engenharia de Software

UFF

Trabalho de Projeto de Software engenharia de Software

7

Trabalho de Projeto de Software engenharia de Software

Engenharia de Software

UFF

Arquitetura de Sw - Eds

33

Arquitetura de Sw - Eds

Engenharia de Software

UFF

Técnicas de Identificação de Elementos 2022-1

9

Técnicas de Identificação de Elementos 2022-1

Engenharia de Software

UFF

Analise de Arquitetura de Microsservicos Relatorio sobre Archetipos Open Source

1

Analise de Arquitetura de Microsservicos Relatorio sobre Archetipos Open Source

Engenharia de Software

PUC

INE5614-Questionario 3 Modularidade e Reuso-Provas

7

INE5614-Questionario 3 Modularidade e Reuso-Provas

Engenharia de Software

UFSC

Engenharia de Software - Questões

3

Engenharia de Software - Questões

Engenharia de Software

IFMA

Exercícios de Testes de Unidade, Integração e Sistema com GitHub Actions

1

Exercícios de Testes de Unidade, Integração e Sistema com GitHub Actions

Engenharia de Software

UFJF

Arquitetura de Software: Estruturas e Componentes em Sistemas de Software

74

Arquitetura de Software: Estruturas e Componentes em Sistemas de Software

Engenharia de Software

PUC

Texto de pré-visualização

Frameworks Bruna Diirr brunadiirr@ic.uff.br Introdução Programar não é trivial... Estratégia: Lançar mão de formas de reuso que vão além de código  reuso de análise, design, código Framework orientado a objeto O que é um framework? “Aplicação semicompleta reutilizável que, quando especializada, produz aplicações personalizadas” (Johnson & Foote, 1988) É um conjunto de classes cooperantes que constroem um projeto reutilizável para uma determinada categoria de software um framework orientado a construção de editores gráficos para diferentes domínios outro ajuda a produzir compiladores para diferentes linguagens de programação O que é um framework? Framework é uma aplicação QUASE completa Seu trabalho consiste em prover os pedaços faltantes, que são específicos para sua aplicação Criação de subclasses específicas para a aplicação, derivadas das classes abstratas do framework O que é um framework? Um framework Provê solução para uma família de problemas semelhantes Usando classes e interfaces que mostram como decompor essa família de problemas E como objetos dessas classes colaboram para cumprir suas responsabilidades Devendo ser flexível e extensível para permitir a construção de várias aplicações com pouco esforço Especificando apenas as particularidades de cada aplicação Frameworks x Biblioteca de classes Biblioteca de classes Cada classe é única e independente das outras Comunicação entre objetos não está definida  Cliente responsável por chamar cada método Não se pode embutir conhecimento do domínio Não tem fluxo de controle pré-definido Não possui comportamento default Framework Dependências/colaborações estão embutidas Comunicação entre objetos já está definida  Framework responsável por chamar cada método Hollywood principle: “Don’t call us, we’ll call you” Pode embutir conhecimento do domínio Controla fluxo de controle Possui comportamento default Frameworks x Padrões Padrões Menores Formados por duas ou três classes Mais abstratos Representam conhecimento e experiência sobre software Possuem natureza lógica Devem ser estudados e programados a cada uso Menos especializados Podem ser usados em diversos tipos de aplicação, não ditando uma arquitetura particular Framework Maiores Formados por muitas classes Frameworks contêm padrões, mas não o inverso Menos abstratos É um software executável Possuem natureza física Programados para ser executados e reusados diretamente Mais especializados Em geral, são desenvolvidos para um domínio de aplicação específico Aparentemente, ambos consistem de classes, interfaces e colaborações prontas, mas... Frameworks x Aplicação O desenvolvimento de uma aplicação pode ser feito com base em mais de um framework. Por exemplo, no desenvolvimento de uma ferramenta CASE: o framework “Model-View-Controller” pode ser usado para desenvolver a interface; e o framework “Hotdraw” para desenvolver a parte de elaboração de diagramas Características Deve ser reusável Propósito final! Para isso, deve primeiro ser usável Bem documentado Fácil de usar Deve ser extensível Contém funcionalidade abstrata (sem implementação) que deve ser completada Deve ser de uso seguro O desenvolvedor de aplicações não pode destruir o framework Deve ser eficiente Devido a uso em muitas situações, algumas delas podem necessitar de eficiência Deve ser completo Para endereçar o domínio do problema pretendido Frameworks Vantagens Aproveitamento da experiência de especialistas do domínio Maximização de reuso Maior consistência e integração entre aplicações Redução da manutenção Aplicações com menos linhas Reparos no framework se propagam pelas aplicações Melhora da produtividade Programadores não precisam reinventar a roda Economia a longo prazo Desvantagens Maior esforço para construção e aprendizado Programas mais difíceis de depurar Necessária documentação de manutenção e apoio Vencer “Not Made Here Syndrome” “The most profoundly elegant framework will never be reused unless the cost of understanding it and using its abstractions is lower than the programmer's perceived cost of writing them from scratch” (Booch, Dr Dobb's Journal, 1994) Benefícios percebidos no longo prazo Tipos de frameworks Classificação de frameworks de acordo com duas dimensões: Como o framework é usado? Onde o framework é usado? Tipos de frameworks “Como é usado?” Inheritance-focused Também chamado de caixa-branca ou orientado à arquitetura Estende ou modifica funcionalidade pela definição de subclasses com sobrescrita de métodos Mais fácil de projetar Composition-focused Também chamado de caixa-preta ou orientado a dados Usa a funcionalidade já presente no framework As coisas internas do framework não podem ser vistas ou alteradas Deve-se usar as interfaces fornecidas As instanciações e composições feitas determinam as particularidades da aplicação Mais fácil de usar Híbridos A maioria dos frameworks é inheritance-focused com alguma funcionalidade pronta (composition-focused) Tipos de frameworks “Onde é usado?” Framework de suporte Provê serviços de nível de sistema operacional (e não de aplicação) São raros Framework de aplicação Também chamado de framework horizontal Encapsula conhecimento aplicável a vasta gama de aplicações Resolve apenas uma fatia do problema da aplicação Exemplo: framework para construção de interface GUI Framework de domínio Também chamado de framework vertical Encapsula conhecimento aplicável a aplicações de um domínio particular de problema Resolve boa parte da aplicação Exemplo: Framework para construir aplicações de controle de manufatura Exemplos Frameworks horizontais Interface do Usuário (GUI) Apple MacApp Corel/Inprise/Borland OWL Java Foundation Classes (JFC/Swing) Microsoft Foundation Classes (MFC) Sistemas operacionais Aplicações são extensões do sistema Frameworks para persistência TopLink ou CocoBase Middleware Enterprise Java Beans Microsoft MTS/COM+ Frameworks MVC Struts IBM servletmanager Oracle9iAS MVC Framework WebFlow em WebLogic Portal 4.0 da BEA WebWork Tapestry Turbine Java Infobus Frameworks verticais Editores de desenho estruturado Visio JHotdraw Aplicações financeiras complexas IBM San Francisco Jogos de dados Landin Niklasson Monitoramento de risco financeiro Rogers Como construir frameworks? Frameworks são abstrações As pessoas fazem generalização a partir de exemplos concretos A concepção de código reutilizável requer iteração Frameworks embutem conhecimento do domínio Clientes do framework são os programadores de aplicações Generalizando: Encontre coisas com nomes diferentes mas que sejam as mesmas Parametrize para eliminar diferenças Quebre coisas grandes em coisas pequenas, de forma que componentes similares possam ser encontradas Categorize coisas similares

Sua Nova Sala de Aula

Sua Nova Sala de Aula

Empresa

Contato Blog

Legal

Termos de uso Política de privacidade Política de cookies Código de honra

Baixe o app

4,8
(35.000 avaliações)
© 2026 Meu Guru® • 42.269.770/0001-84