21
Frameworks e Componentes Daniel Fernando Pavelec

Frameworks e Componentes Daniel Fernando Pavelec

Embed Size (px)

Citation preview

Page 1: Frameworks e Componentes Daniel Fernando Pavelec

Frameworks e Componentes

Daniel Fernando Pavelec

Page 2: Frameworks e Componentes Daniel Fernando Pavelec

Motivação Reuso

Orientação a objetos

Diminuição do tempo para produzir uma aplicação

Page 3: Frameworks e Componentes Daniel Fernando Pavelec

Componentes “Um componente de software é um empacotamento físico de software executável com uma interface pública bem definida.” (Jon Hopkins)

“Um pacote coerente de artefatos de software que podem ser independentemente desenvolvidos e entregues como uma unidade e que pode ser composto, sem modificação, com outros componentes para construir algo maior”. (D´Souza e Wills)

Page 4: Frameworks e Componentes Daniel Fernando Pavelec

Framework – O que é ? Técnicas de Reuso e “Componentização”

Design e Código

Representação física

Fluxo de Controle -> Domínio

Adaptáveis (Hot Spots)

Page 5: Frameworks e Componentes Daniel Fernando Pavelec

Algumas definições “Um framework é um conjunto de classes que

constitui 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 e Componentes Daniel Fernando Pavelec

Biblioteca

Comum

Framework

Page 7: Frameworks e Componentes Daniel Fernando Pavelec

Objetivo Manter o conhecimento

Código menor

Otimizar generalização e a especialização

Page 8: Frameworks e Componentes Daniel Fernando Pavelec

Benefícios Modularidade

Reuso

Extensibilidade

Page 9: Frameworks e Componentes Daniel Fernando Pavelec

Classificação - Extensão Whitebox

Blackbox

Graybox

Page 10: Frameworks e Componentes Daniel Fernando Pavelec

Diminuição de linhas de código na aplicação O código do framework já está escrito e depurado Frameworks oferecem reutilização de código e design Maior foco na área específica e menor foco na parte de compatibilidade do sistema Facilidade na manutenção da aplicação Pouco esforço de desenvolvimento da aplicação Integração Eficiência

Vantagens

Page 11: Frameworks e Componentes Daniel Fernando Pavelec

Desvantagens Dificuldade para se desenvolver bons frameworks A qualidade da documentação é essencial para o

usuário (desenvolvedor) Maturidade do Framework vs. Compatibilidade Depuração complicado A flexibilidade e a generalização do framework

podem afetar a eficiência em algumas aplicações Curva de aprendizagem Pouca padronização Manutenção do framework

Page 12: Frameworks e Componentes Daniel Fernando Pavelec

Framework vs. Patterns Design patterns são mais abstratos do que

um framework Frameworks são mais especializados do

que patterns. Design patterns possuem uma arquitetura

menor do que um framework. Pattern descreve como fazer um design,

enquanto um framework é o próprio design Patterns complementam frameworks

Page 13: Frameworks e Componentes Daniel Fernando Pavelec

Processo de desenvolvimento Processo baseado na experiência

Processo baseado na análise do domínio

Processo utilizando design patterns

Page 14: Frameworks e Componentes Daniel Fernando Pavelec

Diretrizes de desenvolvimento O foco deve ser como o usuário interage

com o framework.

É importante identificar quais as classes e operações do framework o usuário terá que utilizar

A quantidade de código escrita deverá ser reduzida a um mínimo

Page 15: Frameworks e Componentes Daniel Fernando Pavelec

Documentação Documentação Adaptativa:

Os que decidem qual framework utilizar.

Os que já decidiram usar o framework

Os que desejam realizar algum tipo de manutenção no framework

Page 16: Frameworks e Componentes Daniel Fernando Pavelec

Documentação Propósito do framework

Como usar os fundamentos do framework

Propósito das aplicações: exemplos

Design do framework

Page 17: Frameworks e Componentes Daniel Fernando Pavelec

Exemplo Agenda Eletrônica Enunciado:

O sistema de agenda pode ter vários usuários Os usuários selecionam o tipo de evento para o qual

ele deseja ser alarmado Ao selecionar um evento o usuário escolhe o

alarme(data e hora) que deseja e como ele deve ser avisado

O usuário é avisado através dos canais de comunicação do sistema com o usuário

Ex. de evento: tarefa, aniversário Ex. de canal: celular, email

Page 18: Frameworks e Componentes Daniel Fernando Pavelec

Aniversárioaniversariante

Tarefadescricao

Emailendereco

Celularnumero

Canal

getCanal()setCanal()

Alarmedatahora

getAlarme()setAlarme()criarCanal()alterarCanal()excluirCanal()alarmar()

Sistema

criarUsuario()

Evento

getEvento()setEvento()criarAlarme()alterarAlarme()excluirAlarme()informarUsuario()

Usuárionomeloginsenha

criarEvento()alterarEvento()excluirEvento()getUsuario()setUsuario()

Page 19: Frameworks e Componentes Daniel Fernando Pavelec

Design do Framework

NewClasse

NewClasse

Canal

getCanal()setCanal()

Alarmedatahora

getAlarme()setAlarme()criarCanal()alterarCanal()excluirCanal()alarmar()

Sistema

criarUsuario()

Evento

getEvento()setEvento()criarAlarme()alterarAlarme()excluirAlarme()informarUsuario()

Usuárionomeloginsenha

criarEvento()alterarEvento()excluirEvento()getUsuario()setUsuario()

Page 20: Frameworks e Componentes Daniel Fernando Pavelec

Conclusão Analisar:

O domínio do problema que um framework endereça

A estrutura interna de um framework Como o framework deve ser usado

“Quanto mais customizado um componente é, mais ele se adapta a uma situação em particular porém mais esforço é necessário para aprende-lo e para usa-lo efetivamente.”

Page 21: Frameworks e Componentes Daniel Fernando Pavelec

Referências Cris Kobryn, Modeling Components

and Frameworks with UML, Communications of the ACM, 43(10), pp. 31-38, October 2000.

Silva, P. Ricardo, Suporte ao desenvolvimento e uso de componentes e framework, Tese Doutorado – UFRS – 2000