A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Frameworks Orientados a Objetos

Apresentações semelhantes


Apresentação em tema: "Frameworks Orientados a Objetos"— Transcrição da apresentação:

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


Carregar ppt "Frameworks Orientados a Objetos"

Apresentações semelhantes


Anúncios Google