43
Frameworks Projeto de Sistemas de Software

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

Embed Size (px)

Citation preview

Page 1: 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

Projeto de Sistemas de Software

Page 2: 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

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

Page 3: 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

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

Page 4: 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

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

Page 5: 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

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)

Page 6: 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

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

Page 7: 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

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

Page 8: 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

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

Page 9: 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

9 © LES/PUC-Rio

Características

• Inversion-of-Control (IoC)

Page 10: 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

10 © LES/PUC-Rio

Características

• Inversion-of-Control (IoC)

Biblioteca de Classes

Snot

Foo

Bar

Framework

SnotFoo

<<abstract>>

Bar

Ciente

usa

usa

CienteBar

CienteFoo

Page 11: 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

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

Page 12: 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

12 © LES/PUC-Rio

Propriedades

Núcleo

Pontos de Extensão

Page 13: 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

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

Page 14: 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

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

Page 15: 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

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

Page 16: 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

16 © LES/PUC-Rio

Técnicas de Customização - Exemplo

Customização por Herança: Implementação dos Métodos Abstratos

Page 17: 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

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-BoxWhite-Box Black-Box

Page 18: 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

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

Page 19: 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

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

Page 20: 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

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

Page 21: 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

21 © LES/PUC-Rio

Tipos

Page 22: 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

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

Page 23: 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

23 © LES/PUC-Rio

Frameworks X Design Patterns

Design Pattern

Framework BFramework A

Page 24: 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

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

Page 25: 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

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

Page 26: 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

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

...

Page 27: 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

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

Page 28: 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

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 eelementos em comum

2. Usar3. Experiência

4. Atividade de manutençãousando a experiência

Page 29: 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

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. Usar2. Erros e Experiência

3. Atividade de manutençãousando a experiência

Page 30: 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

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

Page 31: 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

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

Page 32: 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

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

Page 33: 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

33 © LES/PUC-Rio

Exemplo 1 - Agenda

Hot Spots

Page 34: 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

34 © LES/PUC-Rio

Exemplo 1 - Agenda

Page 35: 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

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

Page 36: 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

36 © LES/PUC-Rio

Exemplo 2 - VMarket

INT

ER

FA

CE

MARKETPLACE SERVER

C om puter

W orksta tion

Laptop

P D A

Agente

Negócios são fechados dentro domarketplace através da intermediação de agentes

Page 37: 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

37 © LES/PUC-Rio

Exemplo 2 - VMarket

• Exemplo em XML de uma descrição do Item

Page 38: 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

38 © LES/PUC-Rio

Exemplo 2 - VMarket

• Diagrama de Classes

Hotspot

Page 39: 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

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

Page 40: 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

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)

Page 41: 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

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

Page 42: 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

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)

Page 43: 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

43 © LES/PUC-Rio

Bibliografia

• Jacques S. Projeto de Software Orientado a Objeto. http://www.dsc.ufcg.edu.br/~jacques/cursos/map/html/frame/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.