Carregar apresentação
A apresentação está carregando. Por favor, espere
1
Frameworks Orientados a Objetos
2
Agenda Crash Course! Documentação/Instanciação Um problema Trade-offs
Conceitos Classificação Framework vs Outras Abordagens Processo de desenvolvimento Documentação/Instanciação Trade-offs Exemplos de Frameworks Conclusão Frameworks 2010
3
Crash Course!! Lápis... ....Ou Lapiseira? Fácil de Idealizar/Construir
Útil Pouco Flexível Necessita de outras “ferramentas” Apontador! Difícil de Idealizar/Construir Útil, mas precisa de “manual” Flexível Aceita vários tipos de grafite Restrição Diâmetro do Grafite! Frameworks 2010
4
Um problema Controle de qualidade Sensor A B Trigger Efetuador 2 3 1 4
Líquido opacidade 3 A B 1 Trigger 4 Efetuador 2010 Frameworks
5
Um problema(2) Empresa especializada em software para controle de qualidade em manufaturas. Diminuir custos com o desenvolvimento de novos sistemas. Mas muita coisa muda… Sensores Câmeras, balanças, termômetros, etc… Efetuadores Braço mecânico, rotulador, etc… Critérios de qualidade variados Itens diferentes Frameworks 2010
6
Um problema(3) Mas tudo muda? A dinâmica do processo é sempre a mesma:
Trigger Sensor Adaptações Algoritmos de classificação do item Executar ação no efetuador. Frameworks 2010
7
Uma Solução Separar o que é fixo(frozen-spot) do que é variável(hot- spot). Permitir a reutilização da parte fixa. 2010 Frameworks
8
Frameworks Introdução
9
Motivação Reuso: Reutilizar software não é simples
A maioria dos esforços resultam na reutilização de pequenos componentes. Framework Orientado a Objeto é uma técnica de reuso Provê reutilização de projeto e de código. As principais vantagens do uso de frameworks incluem: diminuição do tempo para produção de uma família de aplicações. Frameworks 2010
10
O que é um Framework? É uma aplicação “semi-acabada” que captura os conceitos mais gerais de um domínio: Uma aplicação gerada a partir de framework especializa ou estende os conceitos capturados pelo framework podendo ainda adicionar novos conceitos. Frameworks 2010
11
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 para cumprir uma série de responsabilidades em uma aplicação ou em um domínio de um subsistema.” [Johnson -1991] Frameworks 2010
12
+ duas “Um framework é uma arquitetura desenvolvida visando reutilizar ao máximo projeto e código. Este reuso se dá através da representação de um conjunto de classes abstratas e concretas, essas com grande potencial de especialização.” [Mattsson – 1996] Uma framework é mais que uma hierarquia de classes. É uma hierarquia de classes mais um modelo de interação entre os objetos instanciados a partir do framework. [Lewis95] Frameworks 2010
13
Por que reutilizar design?
A reutilização de código é um tanto restritiva, pois no processo de implementação de uma determinada abstração em uma linguagem de programação específica, as idéias originais (a abstração) são normalmente intercaladas e escondidas pelo idioma da linguagem utilizada. Isto não permite que todo ou parte do conhecimento adquirido durante o processo de desenvolvimento do artefato reutilizável seja reaproveitado em situações diversas. Frameworks 2010
14
Reuso de Design Melhoria no entendimento do sistema em geral, através do uso de uma representação de alto nível (próximo à abstração), não vinculada a um idioma (próximo à implementação). Melhoria na captura de erros de projeto, uma vez que a reutilização é decidida em fases iniciais do desenvolvimento. Induz à reutilização de código, uma vez que este design necessita de uma representação “executável” que comprove sua utilidade. Frameworks 2010
15
Frameworks Conceito Básico
16
Framework é composto por:
Frameworks 2010
17
Frozen spot Partes fixas do framework (kernel)
São partes de código já implementadas no framework que chamam um ou mais hot spots definidos em cada instância. Templates de códido. Ex: Call Trigger Call Sensor Call Adaptações Call Algoritmos de classificação do item Call Executar ação no efetuador Frameworks 2010
18
Hot spot Ou pontos de flexibilização
Pedaços do framework que são passíveis de customização e extensão Os hot spots expressam aspectos do domínio do framework que não podem ser antecipados. Os hot spots são descobertos na análise do domínio ou providos por um especialista no domínio da aplicação. Frameworks 2010
19
Exemplo.... Frameworks 2010
20
Frameworks Instanciação
21
Abstração Um framework é uma abstração e não é executável.
Para produzir uma aplicação completa e executável deve-se instanciar o framework implementando código específico a aplicação para cada hot spot. Frameworks 2010
22
Instanciação Processo de preenchimento / adaptação dos pontos de flexibilização (hot- spots) de uma framework. Aplicação 2010 Frameworks
23
Processo de Instanciação
Frameworks 2010
24
Abordagens para Instanciação
UML-F [Fontoura99] Decoração para Diagramas de Classe UML Cookbook [Krasner88] Especificação em Linguagem Natural semi-estruturada Hooks [Froelich96] Frameworks 2010
25
+ Instanciação RDL[Oliveira01]
Reuse Description Language Linguagem de prósito específico que descreve o processo de instanciação de frameworks orientados a objetos. ReuseTool[Oliveira10] (in the making :)) Máquina de Execução para RDL (em breve....) Frameworks 2010
26
Exemplo Frameworks 2010
27
Frameworks Documentação
28
Documentação Documentação deve se adaptar a diferentes públicos, três exemplos são dados abaixo: Público Documentação ESs que decidem qual framework utilizar. Neste caso uma breve descrição das capacidades é suficiente. ESs que já decidiram usar o framework Neste caso deve-se descrever como o uso de framework foi planejado. ESs que desejam realizar algum tipo de manutenção no framework. Neste caso, a descrição deve ser mais elaborada, contendo os algoritmos abstratos e o modelo de colaboração. Frameworks 2010
29
Documentação Para atender a todo o tipo de público a documentação deve ter diferentes níveis de abstração. O propósito do framework Como usar os fundamentos do framework O propósito das aplicações: exemplos O design do framework Frameworks 2010
30
Documentação Propósito do framework
Breve descrição do propósito do framework O domínio do problema para o qual foi desenvolvido. Como usar os fundamentos do framework Está é a mais importante documentação para garantir a reutilização do framework. Deve-se descrever como utilizar o framework sem entrar em detalhes sobre como ele funciona. 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. [Johnson92] Frameworks 2010
31
Exemplo Nome: SimpleFigure Tool Propósito do framework
Apresentar o nome da Figura no console. Como usar os fundamentos do framework Definir as figuras que serão utilizadas pela aplicação. Propósito das aplicações: exemplos Slides anteriores. Design do framework Slides anteriores e próximo slide. [Johnson92] Frameworks 2010
32
Colaboração Frameworks 2010
33
Processo de Desenvolvimento
Frameworks Processo de Desenvolvimento
34
Desenvolvimento de um Framework
Análise da aplicação Design Aplicação Análise do domínio Framework design Aplicação 1 Aplicação 2 Aplicação n Desenvolvimento tradicional orientado a objetos Desenvolvimento de aplicações baseado em frameworks Frameworks 2010
35
Processo de Desenvolvimento
Processo baseado na experiência Processo baseado na análise do domínio Processo utilizando design patterns Caso geral Frameworks 2010
36
Processo de desenvolvimento baseado na experiência
Inicio do desenvolvimento de n aplicações Desenvolvimento da Aplicação 1. Re - desenvolver as n aplicações usando o Framework 1. Elementos em Comum 2. Experiência 2. Desenvolver as aplicações n+1,n+2, ... usando o Framework Desenvolvimento do Framework Atividade de manutenção usando a experiência Frameworks 2010
37
Processo de desenvolvimento baseado na análise de domínio
Desenvolvimento da Aplicação Análise do Domínio 3. Experiência 2. Usar 1. Identificar abstrações e elementos em comum Desenvolvimento do Framework 4. Atividade de manutenção usando a experiência Frameworks 2010
38
Processo de desenvolvimento utilizando design de patterns
Desenvolvimento da Aplicação 3. Experiência 2. Usar Desenvolver a primeira Desenvolvimento do aplicação Framework 1. Aplicação sistemática 4. Atividade de manutenção usando a experiência Conjunto de Design Patterns Frameworks 2010
39
Processo de desenvolvimento – Caso Geral
Testar o Framework desenvolvendo de Aplicações 2. Erros e Experiência 1. Usar Análise do domínio do Desenvolvimento do problema Framework 3. Atividade de manutenção usando a experiência Frameworks 2010
40
Cuidado! Frameworks 2010
41
Frameworks Classificação
42
Quanto ao escopo Infra-estrutura Integração Corporativos
System infrastruture frameworks Integração Middleware integration frameworks Corporativos Enterprise application frameworks [Fayad99] Frameworks 2010
43
Infra-estrutura Frameworks de infraestrutura simplificam o desenvolvimento de sistemas portáteis e eficientes como sistemas operacionais, comunicações e interface com o usuário. Em geral, são usados internamente como um software da organização e não são vendidos para clientes diretamente. Frameworks 2010
44
Integração São comumente utilizados para integrar sistemas distribuídos permitindo a troca de dados entre sistemas heterogêneos. São projetados para aumentar a habilidade de desenvolvimento de software de infra-estrutura para trabalharem similarmente em um ambiente distribuído. Ex. Corba,DCOM, DSOM Frameworks 2010
45
Corporativos Estes frameworks são direcionados para amplos domínios de aplicação como telecomunicações, manufatura e finanças. Ex. SAP e seus milhares pontos de flexibilização. Frameworks 2010
46
Quanto à técnica de extensão
WhiteBox BlackBox GrayBox Frameworks 2010
47
Whitebox Fortemente ligado às características de linguagens OO:
Herança e classes abstratas. O reuso e a extensão das funcionalidades existentes são feitos através da criação de novas classes utilizando herança e implementação de métodos. O usuário do framework deve entendê-lo muito bem para que possa criar uma instância. Frameworks 2010
48
Exemplo: herança Item Cerveja Frango opacidade peso Frameworks 2010 A
B Trigger Efetuador Sensor 1 2 Cerveja opacidade 3 4 Cerveja opacidade Frango peso Frameworks 2010
49
Blackbox Instanciados a partir de scripts ou de algum tipo de configuração: XML Wizard Gráfico Para produzir uma instância o usuário do framework não precisa entender detalhes internos apenas a interface. Promovem menos flexibilidade que os frameworks do tipo whitebox. Frameworks 2010
50
Componentes Frameworks com estas características (blackbox) são comumente chamados de Componentes [Mattson2000]. Frameworks 2010
51
Graybox Criado para evitar as desvantagens presentes nos frameworks whitebox e blackbox. Permitem um certo grau de extensibilidade sem a necessidade de se expor informações internas. Frameworks visuais como o Borland VCL são exemplos, pois permitem instanciação a partir da ligação de componentes e ainda provêm parametrização via herança. Frameworks 2010
52
Classificação de Frameworks por técnicas de extensão
2010 Frameworks
53
Instanciação blackbox whitebox Conectando componentes já existentes:
Reutiliza a interface do framework. Reutiliza regras para a conexão dos componentes. Criando novas sub-classes concretas: Sub-classes são bem acopladas à super-classe É necessário ter um maior conhecimento das classes abstratas. Adicionando novas operações e variáveis. blackbox whitebox Frameworks 2010
54
Instanciação WhiteBox
Frameworks 2010
55
Instanciação Blackbox
Frameworks 2010
56
Frameworks vs Outras Abordagens
57
Framework vs Outras Abordagens
Abordagens de reutilização de software: Design Pattern Biblioteca de classes Uma aplicação orientada a objeto Linhas de Produto de Software Frameworks 2010
58
Design Pattern Design patterns são mais abstratos do que um framework.
Frameworks estão sempre relacionados a um domínio de aplicação, enquanto patterns são mais genéricos e podem ser aplicados a vários domínios de aplicação. Design patterns possuem uma arquitetura menor do que um framework. Um framework pode conter vários patterns, no entanto o oposto não se aplica. Frameworks 2010
59
Biblioteca de classes São um conjunto de classes relacionadas que tem funcionalidades de propósito geral. Suas classes não necessariamente estão relacionadas a um domínio de aplicação específico, como no caso das classes de um framework. A diferença é o grau de reutilização e o seu impacto na arquitetura da aplicação. Uma classe em uma biblioteca é reutilizada sozinha, enquanto uma classe de um framework é reutilizada juntamente com as outras em uma instanciação. Frameworks 2010
60
Hollywood Principle O fluxo de controle é inverso quando se utiliza um Framework. “don't call us, we'll call you” call backs ou herança O framework é quem tem a thread principal de execução Na utilização de bibliotecas, quem controla as interações com o artefato reutilizável é o artefato reutilizador. Frameworks 2010
61
Uma aplicação orientada a objeto
Descreve um programa executável completo que atende a todos os requisitos de uma especificação. Framework: Captura as funcionalidades de diversas aplicações de um domínio. Não é executável: Não cobre o comportamento de uma aplicação específica Frameworks 2010
62
Linha de Produto de Software
LPS: É um conceito de marketing que relaciona produtos afins com objetivo melhorar as vendas/lucros. Framework: É um conceito de engenharia (de software) que pode ser utilizado para apoiar uma LPS. Arquitetura de Referência. Frameworks 2010
63
Frameworks Trade–offs
64
Vantagens Modularidade Reusabilidade Extensibilidade
Inversão de Controle Reuso de Design Frameworks 2010
65
Modularidade Frameworks melhoram a modularidade de um design através do encapsulamento de detalhes de implementação por trás de interfaces estáveis. Esta modularidade torna possível incrementar a qualidade do software, uma vez que os impactos causados por alterações de design e implementação são localizados, reduzindo o esforço necessário para o entendimento e manutenção do software existente. Frameworks 2010
66
Reusabilidade As interfaces estáveis de um framework incentivam reusabilidade uma vez que definem um componente genérico que pode ser re-aplicado para criar novas aplicações. Esta reusabilidade carrega o conhecimento em um domínio e o esforço prévio de desenvolvedores experientes, para evitar re-criação e re-validação de soluções comuns presentes em requisitos de aplicações recorrentes. Frameworks 2010
67
Extensibilidade Frameworks aprimoram extensibilidade através da definição de pontos de extensão que permitem a uma aplicação estender suas interfaces estáveis. Estes pontos de extensão permitem o desacoplamento sistemático da parte fixa do framework, presente no domínio da aplicação, da parte variável introduzida pelo processo de instanciação. Frameworks 2010
68
Resumindo Frameworks 2010
69
Inversão de Controle (WB)
Uma novidade trazida pela reutilização de frameworks é a possibilidade da inversão do fluxo de controle, isto é, quem comanda o fluxo de execução principal do programa é o artefato reutilizável e não o artefato reutilizador. Este conceito permite que uma aplicação especifique seu funcionamento como um todo, principalmente no que se refere à coordenação de seus componentes principais. Em abordagens convencionais como as encontradas na reutilização de bibliotecas e componentes o artefato reutilizável é passivo, o que torna seu desenvolvimento muito mais complexo uma vez que o contexto em que este artefato será inserido é totalmente desconhecido pelo seu projetista. Frameworks 2010
70
Inversão de Controle A inversão de controle está intimamente ligada aos mecanismos de extensão presentes em linguagens orientadas a objetos nos quais frameworks se baseiam. Estes mecanismos, como polimorfismo e late-binding, permitem que objetos “executem” um código a ser definido futuramente pelo desenvolvedor da aplicação, durante o processo de instanciação. Esta execução se dá através de um protocolo bem definido, normalmente especificado pelo mecanismo de herança. É esta inversão de controle que, em última análise, possibilita a criação dos esqueletos de aplicação mencionados por Johnson [Johnson88]. Frameworks 2010
71
Inversão de Controle Frameworks 2010
72
Reuso de Design Frameworks oferecem reutilização de código e design o que facilita a transferência de conhecimento/experiência de alto nível ao reutilizador do framwork. Frameworks 2010
73
Desvantagens Esforço de Desenvolvimento Curva de Aprendizado
Integrabilidade Manutenibilidade Eficiência Frameworks 2010
74
Esforço de Desenvolvimento
Uma vez que o desenvolvimento de sistemas complexos é difícil, o desenvolvimento destes sistemas de forma abstrata tendo em mente reutilização é ainda mais difícil. É necessário além de tempo, o auxílio de especialistas no domínio para o qual frameworks está sendo desenvolvido bem como uma boa dose de criatividade. Frameworks 2010
75
Curva de Aprendizado Um problema comum no processo de reutilização é o tempo necessário para se tornar capacitado para obter vantagens desta reutilização. Quando tratamos de frameworks isto não é diferente. Foi constatado em [Fayad99a] que são necessários de 6 a 12 meses para um desenvolvedor se tornar produtivo na utilização de frameworks para interfaces gráficas como MFC [Mfc]. Sendo assim a menos que o custo de aprendizagem seja amortizado por vários projetos ou que o ganho de produtividade e qualidade sejam expressivos, este investimento não se tornará atraente. Frameworks 2010
76
Integrabilidade A maioria dos frameworks são desenvolvidos exclusivamente para o propósito de extensão e não integração com outros artefatos de software. Sendo assim problemas difíceis de serem solucionados, como, por exemplo, quem comanda do fluxo de controle da aplicação final, podem surgir e dificultar este processo de integração. Este tipo de problema é muito comum quando se tenta integrar frameworks[Mattsson00][Garlan96]. Frameworks 2010
77
Manutenibilidade Como todo artefato de software, seus requisitos iniciais evoluem no tempo, obrigando a criação de novas versões do framework. Sendo assim, as aplicações instanciadas a partir de um dado framework também devem evoluir com a finalidade de se manterem de acordo com a especificação do framework. Entretanto, uma vez gerada, esta aplicação “perde” o vínculo com o framework. Frameworks 2010
78
Eficiência Frameworks promovem extensibilidade empregando níveis de indireção adicionais através de mecanismos como polimorfismo e late-binding, presentes em linguagens orientadas a objetos. Esta indireção usualmente provoca queda na eficiência do código final, uma vez que chamadas adicionais a tabelas virtuais de métodos serão necessárias para executar uma determinada tarefa. Sistemas com restrições de tempo, como telecomunicações, precisam de ferramentas adicionais para gerar/transformar o código instanciado a partir do framework, de forma eficiente na plataforma alvo [Carvalho98]. Frameworks 2010
79
Exemplos de Framework Agenda VMarket Junit
JBOSS – Hibernate, Seam, JPDL Eclipse – Pluggins J2EE/ .NET Frameworks 2010
80
Agenda - Descrição Serviço de agenda eletrônica para a WWW
O serviço conta 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 de comunicação tipos de eventos Frameworks 2010
81
Agenda - Diag. de Classe do Framework
Hotspot Frameworks 2010
82
Agenda - Diag. Classe da Aplicação
Frameworks 2010
83
VMarket - Descrição 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 Frameworks 2010
84
VMarket - Descrição Frameworks 2010
85
VMarket - Item Exemplo em XML de uma descrição de item Frameworks 2010
86
VMarket - Diag. de Classe
Hotspot Frameworks 2010
87
JUnit JUnit is a testing framework written by Erich Gamma and Kent Beck. It is used by the developer who implements unit tests in Java. Frameworks 2010
88
JUnit Design Frameworks 2010
89
JUnit – Como Utilizar Frameworks 2010
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.