SlideShare uma empresa Scribd logo
Frameworks
Projeto de Sistemas de Software
2
© LES/PUC-Rio
Sumário
• Motivação
• Definição
• Classificação
• Características
• Propriedades
• Técnicas de Customização
• Frameworks X Outras Abordagens
• Processos de Desenvolvimento
• Documentação
• Exemplos
• Vantagens e Desvantagens
3
© LES/PUC-Rio
Motivação
• “Reusar” software não é simples
• Maioria dos esforços resultam apenas reutilização de
pequenos componentes
• Principais vantagens do uso de frameworks
– Aumento do reuso
– Diminuição do tempo para produção de família de aplicações
• Framework provê reutilização de
– Design
– Código
• Reuso em larga escala
4
© LES/PUC-Rio
Definição
• Provê solução para uma família de problemas
semelhantes
• Usa conjunto de classes e interfaces que mostra como
decompor a família de problemas
• Como objetos dessas classes colaboram para cumprir suas
responsabilidades
• Conjunto de classes deve ser flexível e extensível
– Permite a construção de várias aplicações com pouco esforço
– Especifica-se apenas as particularidades de cada aplicação
5
© LES/PUC-Rio
Outras Definições
• “Um framework é um conjunto de classes que constituem
um design abstrato para soluções de uma família de
problemas.”
Johnson e Foote (1988)
• “Um framework é um conjunto de objetos que colaboram
com o objetivo de cumprir um conjunto de
responsabilidades para uma aplicação ou um domínio de um
subsistema.”
Johnson (1991)
• “Uma arquitetura desenvolvida com o objetivo de se obter a
máxima reutilização, representada como um conjunto de
classes abstratas e concretas, com grande potencial de
especialização.”
Mattsson (1996)
6
© LES/PUC-Rio
Classificação
• Frameworks da Infra-estrutura de Sistema
– Dão suporte ao desenvolvimento das infra-estruturas de
sistemas como
• Comunicações
• Interfaces com usuário
• Compiladores
• Frameworks de Integração com Middleware
– Padrões e classes que dão suporte à comunicação de
componentes e a troca de informação
• Frameworks de Aplicações Corporativas
– Suportam o desenvolvimento de tipos específicos de aplicação
como telecomunicações ou sistemas financeiros
– Relacionados com Família de Programas
7
© LES/PUC-Rio
Características
• Reusável
– Propósito final
– Para ser reusável, deve primeiro ser usável
• Bem documentado
• Fácil de usar
• Extensível
– Framework contém funcionalidade abstrata (sem
implementação) que deve ser completada
• Seguro
– Desenvolvedor de aplicações não pode destruir o framework
• Eficiente
– Devido a seu uso em muitas situações, algumas das quais
poderão necessitar de eficiência
8
© LES/PUC-Rio
Características
• Completo
– Para endereçar o domínio do problema pretendido
• Inversion-of-Control (IoC)
– Quem é responsável por chamar os objetos de uma instância
do framework?
– Princípio de Hollywood: “Don’t call us, we call you”
• Framework define o controle de fluxo
– Inversão do controle de fluxo, comparativamente às bibliotecas de
classes
• Framework comanda a resposta do sistema aos eventos externos
– Invocando operações definidas pelo programador
9
© LES/PUC-Rio
Características
• Inversion-of-Control (IoC)
10
© LES/PUC-Rio
Características
• Inversion-of-Control (IoC)
Biblioteca de Classes
Snot
Foo
Bar
Framework
Snot
Foo
<<abstract>>
Bar
Ciente
usa
usa
CienteBar
CienteFoo
11
© LES/PUC-Rio
Propriedades
• Núcleo do framework
– Conjunto de classes que juntas colaboram para implementar
uma arquitetura de família de sistemas
• Pontos de extensão
– Na forma de classes abstratas ou interfaces
• Controle de Fluxo da Aplicação
– Fluxo definido pelo comportamento das classes que
representam o seu núcleo
– Classes responsáveis por invocar classes que estendem os
pontos de extensão
12
© LES/PUC-Rio
Propriedades
Núcleo
Pontos de Extensão
13
© LES/PUC-Rio
Propriedades
• Hot Spots
– Pontos de Flexibilização
– Partes passíveis de customização e extensão
– Expressam aspectos do domínio do framework que não podem
ser antecipados
– Descobertos na análise do domínio
• Posteriormente instanciados por especialistas no domínio da
aplicação
• Frozen Spots
– Partes fixas (núcleo)
– Partes de código já implementadas
• Chamam um ou mais hot spots definidos em cada instância
14
© LES/PUC-Rio
Abstração
• Frameworks não são executáveis
• Para produzir uma aplicação completa e executável
– Instanciar o framework implementando código específico à aplicação
para cada hot spot
15
© LES/PUC-Rio
Técnicas de Customização
• Extensão de classes abstratas
• Implementação de interfaces
• Configuração/Composição de classes existentes
• Parametrização
16
© LES/PUC-Rio
Técnicas de Customização - Exemplo
Customização por Herança:
Implementação dos
Métodos Abstratos
17
© LES/PUC-Rio
Tipos
• Tipo varia de acordo com a abordagem utilizada para a
implementação dos Hot Spots
Por Herança Por Composição
Gray-Box
White-Box Black-Box
18
© LES/PUC-Rio
Tipos
• White Box
– Fortemente ligado às características das linguagens OO
• Herança e Classes Abstratas
– Instanciação através da criação de novas classes
• Utilização de herança e de implementação de métodos
– Requer bom entendimento do framework para criar uma
instância
– Padrões de projeto tipicamente usados
• Template Method e Abstract Factory
19
© LES/PUC-Rio
Tipos
• Black Box
– Instanciados a partir de scripts ou de algum tipo de
configuração
• XML
• Wizard Gráfico
– Fundamenta-se no mecanismo de composição
– Não requer entendimento de detalhes internos para produzir
uma instância
20
© LES/PUC-Rio
Tipos
• Gray Box
– Mix de customização por herança e por
composição/configuração
– Evita desvantagens presentes nos frameworks white-box e
black-box
– Bastante flexibilidade e extensibilidade
– Habilidade de esconder informações não necessárias para
desenvolvedores da aplicação
21
© LES/PUC-Rio
Tipos
22
© LES/PUC-Rio
Frameworks X Design Patterns
• Aparentemente, ambos consistem de classes, interfaces e
colaborações prontas
• Diferenças
– Design patterns mais abstratos do que frameworks
• Framework inclui código, design pattern não (apenas exemplo do uso de
pattern)
• Devido à presença de código, framework pode ser estudado a nível de
código, executado, e reusado diretamente
– Design patterns elementos arquiteturais menores do que frameworks
• Framework típico contém vários design patterns mas o contrário nunca
ocorre
• Exemplo: Design patterns são frequentemente usados para documentar
frameworks
– Design patterns menos especializados do que frameworks
• Frameworks sempre têm um domínio de aplicação particular enquanto design
patterns não ditam uma arquitetura de aplicação particular
23
© LES/PUC-Rio
Frameworks X Design Patterns
Design
Pattern
Framework B
Framework A
24
© LES/PUC-Rio
Frameworks X Biblioteca de Classes
• Bibliotecas
– Conjunto de classes relacionadas
• Funcionalidades de propósito geral
– Classes não relacionadas a um domínio de aplicação específica
• Em contrapartida às classes de um framework
• Diferença
– Grau de reutilização
– Impacto na arquitetura da aplicação
• Classe de uma biblioteca
– Reutilizada sozinha
• Classe de um framework
– Reutilizada juntamente com as outras em uma instanciação
25
© LES/PUC-Rio
Frameworks X Biblioteca de Classes
• Classes instanciadas pelo cliente
• Cliente chama funções
• Não tem fluxo de controle pré-
definido
• Não tem interação pré-definida
• Não tem comportamento default
• Customização com subclasse ou
composição
• Chama funções da “aplicação”
• Controla o fluxo de execução
• Define interação entre objetos
• Provê comportamento default
Biblioteca Framework
26
© LES/PUC-Rio
Desenvolvimento de Framework
Desenvolvimento tradicional orientado a objetos
Análise da
Aplicação
Design Aplicação
Desenvolvimento de aplicações baseado em frameworks
Análise do
Domínio
Design do
Framework
Aplicação 1
Aplicação 2
Aplicação n
...
27
© LES/PUC-Rio
Processo de desenvolvimento
• Baseado na Experiência
Desenvolvimento
da Aplicação
Desenvolvimento
do Framework
1. Elementos em Comum
2. Experiência
Inicio do desenvolvimento
de n aplicações
1. Re-desenvolver as n aplicações
usando o Framework
2. Desenvolver as aplicações
n+1,n+2, ... usando o Framework
Atividade de manutenção
usando a experiência
28
© LES/PUC-Rio
Processo de desenvolvimento
• Baseado na Análise de Domínio
Análise do
Domínio
Desenvolvimento
da Aplicação
Desenvolvimento
do Framework
1. Identificar abstrações e
elementos em comum
2. Usar
3. Experiência
4. Atividade de manutenção
usando a experiência
29
© LES/PUC-Rio
Processo de desenvolvimento
• Caso Geral
Análise do Domínio
do Problema
Testar o Framework
desenvolvendo Aplicação
Desenvolvimento
do Framework
1. Usar
2. Erros e
Experiência
3. Atividade de manutenção
usando a experiência
30
© LES/PUC-Rio
Documentação
• Documentação deve se adaptar a diferentes públicos
– Exemplos
Público Documentação
ES que decidem qual
framework utilizar
Neste caso uma breve descrição das
capacidades é suficiente
ES que já decidiram usar o
framework
Neste caso deve-se descrever como o
uso de framework foi planejado
ES que desejam realizar
algum tipo de manutenção
no framework
Neste caso, a descrição deve ser mais
elaborada, contendo os algoritmo
abstratos e o modelo de colaboração
31
© LES/PUC-Rio
Documentação
• Para atender a todo o público a documentação deve ter
diferentes níveis de abstração
– Propósito do framework
• Breve descrição do propósito do framework
• Domínio do problema para o qual foi desenvolvido
– Como usar os fundamentos do framework
• Mais importante documentação para garantir a reutilização do
framework
• Descrever como utilizar o framework
– Não entrar em detalhes sobre seu funcionamento
– Propósito das aplicações: exemplos
• Exemplos concretos ajudam a entender melhor o framework
– Design do framework
• Deve conter as classes, seus relacionamentos e colaborações
32
© LES/PUC-Rio
Exemplo 1 - Agenda
• Serviço de agenda eletrônica para a WWW
• Serviço possui com as seguintes facilidades:
– cadastro do usuário
– registro em eventos da agenda
– tarefas, compromissos, aniversários e programas de TV
(disponibilizados futuramente).
– eventos registrados podem possuir alarmes para lembrar ao
usuário da sua ocorrência
– alarmes
• meios de comunicação
• Hotspots
– Canais de comunicação
– Tipos de eventos
33
© LES/PUC-Rio
Exemplo 1 - Agenda
Hot Spots
34
© LES/PUC-Rio
Exemplo 1 - Agenda
35
© LES/PUC-Rio
Exemplo 2 - VMarket
• Framework para sistemas de comércio eletrônico voltados
para Mercados Virtuais mediados por Agentes de Software
• Descrição do item
• Agentes de compra
• Agentes de venda
• Negociação do item entre um agente de compra e um de
venda
• Hot-spots
– item
– estados do agente
– tipos de agentes
– estratégia de negociação
36
© LES/PUC-Rio
Exemplo 2 - VMarket
INTERFACE
MARKETPLACE
SERVER
Computer
Workstation
Laptop
PDA
Agente
Negócios são fechados dentro do
marketplace através da intermediação de agentes
37
© LES/PUC-Rio
Exemplo 2 - VMarket
• Exemplo em XML de uma descrição do Item
38
© LES/PUC-Rio
Exemplo 2 - VMarket
• Diagrama de Classes
Hotspot
39
© LES/PUC-Rio
Vantagens
• Com o framework pronto, benefícios
– Redução de custos
– Redução de time-to-market
• Motivos
– Maximização de re-uso (análise, design, código, testes)
• Reutilização de design feito por outros pode transferir
conhecimento e experiência para o usuário do framework
– Desenvolvedores adicionam valor em vez de reinventar a roda
– Menos manutenção
• Fatoração de aspectos comuns a várias aplicações
• Uso de herança permite corrigir todas as aplicações com a troca de
uma classe-mãe
– Cuidado com o "Fragile Base Class Problem” onde troca da classe-mãe
quebra as filhas
– Melhora do código (menos defeitos) devido ao uso em várias
aplicações
40
© LES/PUC-Rio
Vantagens
• Outras vantagens
– Diminuição de linhas de código na aplicação
– Melhor consistência e compatibilidade entre aplicações
– Conhecimento sobre o domínio da aplicação é mantido dentro
da organização
– Alavancagem do conhecimento de especialistas
• Framework oferece uma forma de empacotar o conhecimento de
especialistas sobre domínios de problemas
• Assim, não se perde o conhecimento com a saída de especialistas e
o conhecimento pode ser usado/estudado sem a presença do
especialista
• Resultado: criação de patrimônio estratégico da empresa (Strategic
Asset Building)
41
© LES/PUC-Rio
Desvantagens
• Construir um framework é complexo
– Re-uso não vem sozinho: deve ser planejado
– É mais complexo e demora mais fazer uma aplicação tendo que
construir um framework em vez de fazer a aplicação do zero
• Documentação é essencial para o usuário (desenvolvedor)
poder utilizar o framework
• Dificuldade para manter compatibilidade com versões
anteriores
– Frameworks se tornam mais maduros com o passar do tempo e
as aplicações devem evoluir em paralelo
• Flexibilidade e generalização do framework podem trabalhar
contra sua eficiência em algumas aplicações
42
© LES/PUC-Rio
Desvantagens
• Benefícios são realizados em longo prazo
– Quem pode pensar em longo prazo quando se está competindo
"On Internet time"?
• Poucas empresas
• Uma empresa aeroespacial demorou anos para fazer frameworks e
começou a ter retorno na quarta missão
• Precisa-se modificar o processo de desenvolvimento e criar
novos incentivos
• Vencer o "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)
43
© LES/PUC-Rio
Bibliografia
• Jacques S. Projeto de Software Orientado a Objeto.
http://www.dsc.ufcg.edu.br/~jacques/cursos/map/html/fra
me/oque.htm
• Markiewicz M., Lucena C. Object Oriented Framework
Development. http://www.acm.org/crossroads/xrds7-
4/frameworks.html
• Sommerville, I. Software Engineering. 7th edition,
Chapter 18, 2000.

Mais conteúdo relacionado

PDF
Educação e certificação na Plataforma .NET
PDF
Apostila desenvolvimento aplicações comerciais com C#
PPTX
Fundamentos do .NET Framework - Parte 1
PPTX
Linguagem de programação C# 4 e 5
PPTX
Teste Driven Development
PDF
AAB307 - Frameworks and Application Blocks - wcamb
PPTX
Linguagem de programação Java 6, 7 e 8
PPTX
DotNet Framework e Orientação a Objetos 1 - Introdução
Educação e certificação na Plataforma .NET
Apostila desenvolvimento aplicações comerciais com C#
Fundamentos do .NET Framework - Parte 1
Linguagem de programação C# 4 e 5
Teste Driven Development
AAB307 - Frameworks and Application Blocks - wcamb
Linguagem de programação Java 6, 7 e 8
DotNet Framework e Orientação a Objetos 1 - Introdução

Semelhante a Aula05 frameworks (20)

PDF
Frameworks da web - Uma ferramenta de reutilização de software
PPTX
Engenharia de Software Reuso Engenharia de Software Reuso Engenharia de Softw...
PPTX
Frameworks de desenvolvimento web
PDF
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks
PPT
Reutilização
PPTX
Desenvolvimento baseado em componentes
PPTX
Revisão de C# 4.0
PPTX
Programação orientada à objetos & mvc
PPTX
Curso PHP UNIFACS 2014.1 – Frameworks
PPTX
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - .NET SP - Abril-2018
PPTX
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Hertz - Janeiro-2018
PPTX
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Grupo Bandeirantes - ...
PPTX
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Developers-SP - Janei...
PDF
Framework usar ou não usar
PPTX
Behavior-Driven Development (BDD) - DevOps Summit 2016
PDF
Padrões de projetos
PDF
Métodos ágeis de desenvolvimento de software
PDF
Outras Metodologias Ágeis Parte 3
PPTX
Mocks, Stubs e Fakes - Developers-SP - Julho-2017
Frameworks da web - Uma ferramenta de reutilização de software
Engenharia de Software Reuso Engenharia de Software Reuso Engenharia de Softw...
Frameworks de desenvolvimento web
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks
Reutilização
Desenvolvimento baseado em componentes
Revisão de C# 4.0
Programação orientada à objetos & mvc
Curso PHP UNIFACS 2014.1 – Frameworks
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - .NET SP - Abril-2018
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Hertz - Janeiro-2018
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Grupo Bandeirantes - ...
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - Developers-SP - Janei...
Framework usar ou não usar
Behavior-Driven Development (BDD) - DevOps Summit 2016
Padrões de projetos
Métodos ágeis de desenvolvimento de software
Outras Metodologias Ágeis Parte 3
Mocks, Stubs e Fakes - Developers-SP - Julho-2017
Anúncio

Último (19)

PDF
Aula04-Academia Heri- Tecnologia Geral 2025
PPTX
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
PDF
Processos na gestão de transportes, TM100 Col18
PDF
Apple Pippin Uma breve introdução. - David Glotz
PPTX
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
PPTX
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
PDF
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
PDF
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
PPTX
Aula 18 - Manipulacao De Arquivos python
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PDF
Custos e liquidação no SAP Transportation Management, TM130 Col18
PDF
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
PPTX
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
PDF
COBITxITIL-Entenda as diferença em uso governança TI
PDF
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
PDF
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
PDF
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
PDF
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
Aula04-Academia Heri- Tecnologia Geral 2025
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
Processos na gestão de transportes, TM100 Col18
Apple Pippin Uma breve introdução. - David Glotz
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
Aula 18 - Manipulacao De Arquivos python
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
Custos e liquidação no SAP Transportation Management, TM130 Col18
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
COBITxITIL-Entenda as diferença em uso governança TI
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
Anúncio

Aula05 frameworks

  • 2. 2 © LES/PUC-Rio Sumário • Motivação • Definição • Classificação • Características • Propriedades • Técnicas de Customização • Frameworks X Outras Abordagens • Processos de Desenvolvimento • Documentação • Exemplos • Vantagens e Desvantagens
  • 3. 3 © LES/PUC-Rio Motivação • “Reusar” software não é simples • Maioria dos esforços resultam apenas reutilização de pequenos componentes • Principais vantagens do uso de frameworks – Aumento do reuso – Diminuição do tempo para produção de família de aplicações • Framework provê reutilização de – Design – Código • Reuso em larga escala
  • 4. 4 © LES/PUC-Rio Definição • Provê solução para uma família de problemas semelhantes • Usa conjunto de classes e interfaces que mostra como decompor a família de problemas • Como objetos dessas classes colaboram para cumprir suas responsabilidades • Conjunto de classes deve ser flexível e extensível – Permite a construção de várias aplicações com pouco esforço – Especifica-se apenas as particularidades de cada aplicação
  • 5. 5 © LES/PUC-Rio Outras Definições • “Um framework é um conjunto de classes que constituem um design abstrato para soluções de uma família de problemas.” Johnson e Foote (1988) • “Um framework é um conjunto de objetos que colaboram com o objetivo de cumprir um conjunto de responsabilidades para uma aplicação ou um domínio de um subsistema.” Johnson (1991) • “Uma arquitetura desenvolvida com o objetivo de se obter a máxima reutilização, representada como um conjunto de classes abstratas e concretas, com grande potencial de especialização.” Mattsson (1996)
  • 6. 6 © LES/PUC-Rio Classificação • Frameworks da Infra-estrutura de Sistema – Dão suporte ao desenvolvimento das infra-estruturas de sistemas como • Comunicações • Interfaces com usuário • Compiladores • Frameworks de Integração com Middleware – Padrões e classes que dão suporte à comunicação de componentes e a troca de informação • Frameworks de Aplicações Corporativas – Suportam o desenvolvimento de tipos específicos de aplicação como telecomunicações ou sistemas financeiros – Relacionados com Família de Programas
  • 7. 7 © LES/PUC-Rio Características • Reusável – Propósito final – Para ser reusável, deve primeiro ser usável • Bem documentado • Fácil de usar • Extensível – Framework contém funcionalidade abstrata (sem implementação) que deve ser completada • Seguro – Desenvolvedor de aplicações não pode destruir o framework • Eficiente – Devido a seu uso em muitas situações, algumas das quais poderão necessitar de eficiência
  • 8. 8 © LES/PUC-Rio Características • Completo – Para endereçar o domínio do problema pretendido • Inversion-of-Control (IoC) – Quem é responsável por chamar os objetos de uma instância do framework? – Princípio de Hollywood: “Don’t call us, we call you” • Framework define o controle de fluxo – Inversão do controle de fluxo, comparativamente às bibliotecas de classes • Framework comanda a resposta do sistema aos eventos externos – Invocando operações definidas pelo programador
  • 10. 10 © LES/PUC-Rio Características • Inversion-of-Control (IoC) Biblioteca de Classes Snot Foo Bar Framework Snot Foo <<abstract>> Bar Ciente usa usa CienteBar CienteFoo
  • 11. 11 © LES/PUC-Rio Propriedades • Núcleo do framework – Conjunto de classes que juntas colaboram para implementar uma arquitetura de família de sistemas • Pontos de extensão – Na forma de classes abstratas ou interfaces • Controle de Fluxo da Aplicação – Fluxo definido pelo comportamento das classes que representam o seu núcleo – Classes responsáveis por invocar classes que estendem os pontos de extensão
  • 13. 13 © LES/PUC-Rio Propriedades • Hot Spots – Pontos de Flexibilização – Partes passíveis de customização e extensão – Expressam aspectos do domínio do framework que não podem ser antecipados – Descobertos na análise do domínio • Posteriormente instanciados por especialistas no domínio da aplicação • Frozen Spots – Partes fixas (núcleo) – Partes de código já implementadas • Chamam um ou mais hot spots definidos em cada instância
  • 14. 14 © LES/PUC-Rio Abstração • Frameworks não são executáveis • Para produzir uma aplicação completa e executável – Instanciar o framework implementando código específico à aplicação para cada hot spot
  • 15. 15 © LES/PUC-Rio Técnicas de Customização • Extensão de classes abstratas • Implementação de interfaces • Configuração/Composição de classes existentes • Parametrização
  • 16. 16 © LES/PUC-Rio Técnicas de Customização - Exemplo Customização por Herança: Implementação dos Métodos Abstratos
  • 17. 17 © LES/PUC-Rio Tipos • Tipo varia de acordo com a abordagem utilizada para a implementação dos Hot Spots Por Herança Por Composição Gray-Box White-Box Black-Box
  • 18. 18 © LES/PUC-Rio Tipos • White Box – Fortemente ligado às características das linguagens OO • Herança e Classes Abstratas – Instanciação através da criação de novas classes • Utilização de herança e de implementação de métodos – Requer bom entendimento do framework para criar uma instância – Padrões de projeto tipicamente usados • Template Method e Abstract Factory
  • 19. 19 © LES/PUC-Rio Tipos • Black Box – Instanciados a partir de scripts ou de algum tipo de configuração • XML • Wizard Gráfico – Fundamenta-se no mecanismo de composição – Não requer entendimento de detalhes internos para produzir uma instância
  • 20. 20 © LES/PUC-Rio Tipos • Gray Box – Mix de customização por herança e por composição/configuração – Evita desvantagens presentes nos frameworks white-box e black-box – Bastante flexibilidade e extensibilidade – Habilidade de esconder informações não necessárias para desenvolvedores da aplicação
  • 22. 22 © LES/PUC-Rio Frameworks X Design Patterns • Aparentemente, ambos consistem de classes, interfaces e colaborações prontas • Diferenças – Design patterns mais abstratos do que frameworks • Framework inclui código, design pattern não (apenas exemplo do uso de pattern) • Devido à presença de código, framework pode ser estudado a nível de código, executado, e reusado diretamente – Design patterns elementos arquiteturais menores do que frameworks • Framework típico contém vários design patterns mas o contrário nunca ocorre • Exemplo: Design patterns são frequentemente usados para documentar frameworks – Design patterns menos especializados do que frameworks • Frameworks sempre têm um domínio de aplicação particular enquanto design patterns não ditam uma arquitetura de aplicação particular
  • 23. 23 © LES/PUC-Rio Frameworks X Design Patterns Design Pattern Framework B Framework A
  • 24. 24 © LES/PUC-Rio Frameworks X Biblioteca de Classes • Bibliotecas – Conjunto de classes relacionadas • Funcionalidades de propósito geral – Classes não relacionadas a um domínio de aplicação específica • Em contrapartida às classes de um framework • Diferença – Grau de reutilização – Impacto na arquitetura da aplicação • Classe de uma biblioteca – Reutilizada sozinha • Classe de um framework – Reutilizada juntamente com as outras em uma instanciação
  • 25. 25 © LES/PUC-Rio Frameworks X Biblioteca de Classes • Classes instanciadas pelo cliente • Cliente chama funções • Não tem fluxo de controle pré- definido • Não tem interação pré-definida • Não tem comportamento default • Customização com subclasse ou composição • Chama funções da “aplicação” • Controla o fluxo de execução • Define interação entre objetos • Provê comportamento default Biblioteca Framework
  • 26. 26 © LES/PUC-Rio Desenvolvimento de Framework Desenvolvimento tradicional orientado a objetos Análise da Aplicação Design Aplicação Desenvolvimento de aplicações baseado em frameworks Análise do Domínio Design do Framework Aplicação 1 Aplicação 2 Aplicação n ...
  • 27. 27 © LES/PUC-Rio Processo de desenvolvimento • Baseado na Experiência Desenvolvimento da Aplicação Desenvolvimento do Framework 1. Elementos em Comum 2. Experiência Inicio do desenvolvimento de n aplicações 1. Re-desenvolver as n aplicações usando o Framework 2. Desenvolver as aplicações n+1,n+2, ... usando o Framework Atividade de manutenção usando a experiência
  • 28. 28 © LES/PUC-Rio Processo de desenvolvimento • Baseado na Análise de Domínio Análise do Domínio Desenvolvimento da Aplicação Desenvolvimento do Framework 1. Identificar abstrações e elementos em comum 2. Usar 3. Experiência 4. Atividade de manutenção usando a experiência
  • 29. 29 © LES/PUC-Rio Processo de desenvolvimento • Caso Geral Análise do Domínio do Problema Testar o Framework desenvolvendo Aplicação Desenvolvimento do Framework 1. Usar 2. Erros e Experiência 3. Atividade de manutenção usando a experiência
  • 30. 30 © LES/PUC-Rio Documentação • Documentação deve se adaptar a diferentes públicos – Exemplos Público Documentação ES que decidem qual framework utilizar Neste caso uma breve descrição das capacidades é suficiente ES que já decidiram usar o framework Neste caso deve-se descrever como o uso de framework foi planejado ES que desejam realizar algum tipo de manutenção no framework Neste caso, a descrição deve ser mais elaborada, contendo os algoritmo abstratos e o modelo de colaboração
  • 31. 31 © LES/PUC-Rio Documentação • Para atender a todo o público a documentação deve ter diferentes níveis de abstração – Propósito do framework • Breve descrição do propósito do framework • Domínio do problema para o qual foi desenvolvido – Como usar os fundamentos do framework • Mais importante documentação para garantir a reutilização do framework • Descrever como utilizar o framework – Não entrar em detalhes sobre seu funcionamento – Propósito das aplicações: exemplos • Exemplos concretos ajudam a entender melhor o framework – Design do framework • Deve conter as classes, seus relacionamentos e colaborações
  • 32. 32 © LES/PUC-Rio Exemplo 1 - Agenda • Serviço de agenda eletrônica para a WWW • Serviço possui com as seguintes facilidades: – cadastro do usuário – registro em eventos da agenda – tarefas, compromissos, aniversários e programas de TV (disponibilizados futuramente). – eventos registrados podem possuir alarmes para lembrar ao usuário da sua ocorrência – alarmes • meios de comunicação • Hotspots – Canais de comunicação – Tipos de eventos
  • 33. 33 © LES/PUC-Rio Exemplo 1 - Agenda Hot Spots
  • 35. 35 © LES/PUC-Rio Exemplo 2 - VMarket • Framework para sistemas de comércio eletrônico voltados para Mercados Virtuais mediados por Agentes de Software • Descrição do item • Agentes de compra • Agentes de venda • Negociação do item entre um agente de compra e um de venda • Hot-spots – item – estados do agente – tipos de agentes – estratégia de negociação
  • 36. 36 © LES/PUC-Rio Exemplo 2 - VMarket INTERFACE MARKETPLACE SERVER Computer Workstation Laptop PDA Agente Negócios são fechados dentro do marketplace através da intermediação de agentes
  • 37. 37 © LES/PUC-Rio Exemplo 2 - VMarket • Exemplo em XML de uma descrição do Item
  • 38. 38 © LES/PUC-Rio Exemplo 2 - VMarket • Diagrama de Classes Hotspot
  • 39. 39 © LES/PUC-Rio Vantagens • Com o framework pronto, benefícios – Redução de custos – Redução de time-to-market • Motivos – Maximização de re-uso (análise, design, código, testes) • Reutilização de design feito por outros pode transferir conhecimento e experiência para o usuário do framework – Desenvolvedores adicionam valor em vez de reinventar a roda – Menos manutenção • Fatoração de aspectos comuns a várias aplicações • Uso de herança permite corrigir todas as aplicações com a troca de uma classe-mãe – Cuidado com o "Fragile Base Class Problem” onde troca da classe-mãe quebra as filhas – Melhora do código (menos defeitos) devido ao uso em várias aplicações
  • 40. 40 © LES/PUC-Rio Vantagens • Outras vantagens – Diminuição de linhas de código na aplicação – Melhor consistência e compatibilidade entre aplicações – Conhecimento sobre o domínio da aplicação é mantido dentro da organização – Alavancagem do conhecimento de especialistas • Framework oferece uma forma de empacotar o conhecimento de especialistas sobre domínios de problemas • Assim, não se perde o conhecimento com a saída de especialistas e o conhecimento pode ser usado/estudado sem a presença do especialista • Resultado: criação de patrimônio estratégico da empresa (Strategic Asset Building)
  • 41. 41 © LES/PUC-Rio Desvantagens • Construir um framework é complexo – Re-uso não vem sozinho: deve ser planejado – É mais complexo e demora mais fazer uma aplicação tendo que construir um framework em vez de fazer a aplicação do zero • Documentação é essencial para o usuário (desenvolvedor) poder utilizar o framework • Dificuldade para manter compatibilidade com versões anteriores – Frameworks se tornam mais maduros com o passar do tempo e as aplicações devem evoluir em paralelo • Flexibilidade e generalização do framework podem trabalhar contra sua eficiência em algumas aplicações
  • 42. 42 © LES/PUC-Rio Desvantagens • Benefícios são realizados em longo prazo – Quem pode pensar em longo prazo quando se está competindo "On Internet time"? • Poucas empresas • Uma empresa aeroespacial demorou anos para fazer frameworks e começou a ter retorno na quarta missão • Precisa-se modificar o processo de desenvolvimento e criar novos incentivos • Vencer o "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)
  • 43. 43 © LES/PUC-Rio Bibliografia • Jacques S. Projeto de Software Orientado a Objeto. http://www.dsc.ufcg.edu.br/~jacques/cursos/map/html/fra me/oque.htm • Markiewicz M., Lucena C. Object Oriented Framework Development. http://www.acm.org/crossroads/xrds7- 4/frameworks.html • Sommerville, I. Software Engineering. 7th edition, Chapter 18, 2000.