Problema: Problema: FRAMEWORK. Problema: Motivação. O que é um framework

Documentos relacionados
Frameworks. Viviane Torres da Silva

Desenvolvimento de Aplicações Desktop

Requisitos de sistemas

Introdução à Análise e Projeto de Sistemas

Projeto de software Estrutura do software e arquitetura SWEBOK

2 Frameworks: Conceitos Gerais

Roni Fabio Banaszewski UTFPR Universidade Tecnológica Federal do Paraná

Levantamento, Análise e Gestão Requisitos. Aula 03

2

ENGENHARIA DE SOFTWARE. Aula 17 Reuso de software

Técnicas para Reutilização de Software

PROJETO ARQUITETURAL PARTE II: PADRÕES DE PROJETO. Projeto de Programas PPR0001

Desenvolvimento Baseado em Componentes e o Enfoque de Linha de Produtos

Modelagem de Dados MODELAGEM DE DADOS. Sistemas de Banco de Dados. Profa. Rosemary Melo

15/04/2013. Pensar Orientado a Objetos. Projeto Orientado a Objetos. Características de Objetos. Classe de Objetos. Comunicação entre Objetos

Daniel Wildt

RUP Unified Process. Profª Jocelma Rios

UML. Modelando um sistema

Análise e projeto de sistemas

Orientação a Objetos Parte I. Introdução a POO (Programação Orientada a Objetos)

Um Middleware de Inteligência Artificial para Jogos Digitais 105

Reuso de Software Aula Maio 2012

Desenvolvimento de Software Baseado em Componentes. Paulo C. Masiero

Introdução a Padrões, GRASP. Nazareno Andrade (baseado no material de Hyggo Almeida e Jacques Sauvé)

UML Diagrama de Atividades Diagrama de Caso de Uso. ENG1518/3VB Sistemas de Informação Gerenciais Prof. Marcos Villas

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 15 PROFª BRUNO CALEGARO

Capítulo 2. Orientação a Objetos

Prof. Fábio Lúcio Meira

Visão Geral do RUP (Rational Unified Process)

SOFTWARE REUSE. Ian Sommerville, 8º edição Capítulo 18. Aula de Luiz Eduardo Guarino de Vasconcelos

UML (Unified Modelling Language)

Matéria Introdutória. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

Comentários: Desenvolvimento de Sistemas Rogério Araújo

Tópicos da Aula. POO e Padrões de Projetos. Considere três classes... Reuso de Classes. Locadora de DVD. Sistema Acadêmico

Padrões de Projeto. Padrões de Projeto. Além dos 23 Padrões GoF. Os 23 Padrões de Projeto. Documentação de um Padrão. Classificação dos Padrões

27) Em relação aos Projetos de Sistemas de Software, assinale a sequência correta de desenvolvimento de um sistema:

O PARADIGMA ORIENTADO POR OBJETOS

2 Fluxos no Ciclo de Vida do Processo Unificado. O Processo Unificado consiste da repetição de uma série de ciclos durante a vida de um sistema.

Programação Orientada a Objetos JAVA - NETBEANS

Introdução. Programação Orientada a Objetos (POO) João Paulo Q. dos Santos

Modelagem Usando Orientação à Objetos (Programação Orientada a Objetos) Prof. Responsáveis Wagner Santos C. de Jesus

Introdução Diagrama de Classes Diagrama de Seqüência Diagrama de Atividades. Diagramas UML. Classe, Seqüência e Atividades. Marcio E. F.

Linguagem de Programação I Apresentação da Disciplina

Agenda da Aula. Arquitetura de Software e Padrões Arquiteturais. Elementos de um Padrão. Arquitetura de Software. Arquitetura de Software

Desenvolvimento de Software Baseado em Componentes. Paulo C. Masiero

Tópicos da Aula. Diretrizes Gerais. Trabalho Prático (TP) Pontuação do TP. Tema do Trabalho. Projeto de Software Diagrama de Classes

Facetas da Reusabilidade de Software

Enterprise Application Integration (EAI)

SCC-202 Algoritmos e Estruturas de Dados I. Profa. Graça Nunes 2º. Semestre 2010

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Modelagem de Dados MODELAGEM DE DADOS. Sistemas de Banco de Dados. Profa. Rosemary Melo

Engenharia Reversa e Reengenharia Software 13/05/2015

Programação Orientada a Objetos

Apresentação do Capítulo 4 MDA (Model-Driven Archtecture) ALUNO: DOMENICO SCHETTINI FILHO NÚMERO USP:

POO e C++: Herança e Polimorfismo

Complexidade do Software

Programação Orientada a Objetos

Programação Orientada a Objetos

UML. Rodrigo Leite Durães.

Introdução à Engenharia de Software

UML (Linguagem Modelagem Unificada) João Paulo Q. dos Santos

Experiência de Implantação de um Processo de Desenvolvimento de Software no Banco Central do Brasil

Visões Arquiteturais. Visões Arquiteturais

Linguagem de Programação Orientada a Objeto Abstração - Encapsulamento

Lista de Exercícios AV1

Repositório. de Componentes em Delphi. Josiane Gianisini Orientador Marcel Hugo

Introdução a UML (Unified Modeling Language)

Reúso de Software. Adaptado de. Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 18 Slide by Pearson Education

Introdução. Parte 01. Desenvolvimento de Programação Orientada a Objetos. Prof. Pedro Neto

Análise de Sistemas. Aula 5

Programação Orientada a Objetos

Notas de Aula 03: Introdução a Orientação a Objetos e a UML

Transcrição:

Problema: Construir a simulação do comportamento de caixas de supermercado. FRAMEWORK Problema: Construir a simulação do comportamento de caixas de supermercado. for( ; time < fim ; ) { e = lista.getprimeiro(); time = e.gettime(); switch( e.evento ) { case SIT_1 : tratasit_1(); geranovoevento(); break; case SIT_2: tratasit_2(); geranovoevento(); break;... Problema: Construir a simulação do comportamento de caixas de supermercado. for( ; time < fim ; ) { e = lista.getprimeiro(); time = e.gettime(); e.executa(); e.geranovoevento(); class evento {... virtual void executa() = 0; virtual void geranovoevento(); Motivação Reutilização de código Economia de tempo e dinheiro Reutilização é uma tarefa complexa e proporcional ao tamanho do código a ser reuitlizado O POO oferece recursos para implementação de frameworks Vantagens ganho de tempo e credibilidade no código O que é um framework 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

O que é um framework s: estão exatamente no meio do conceito de técnicas de reuso. São mais abstratos e flexíveis que componentes mas mais concretos e mais fáceis de reutilizar que apenas uma informação de projeto Mais complexos que componentes Menos flexível e menos provável de ser aplicável a casos gerais O que é um framework? Inversão de fluxo O framework tenta capturar o fluxo de controle de aplicação dentro de um domínio. Este fluxo pode ser especializado mais tarde por uma aplicação específica. Caso normal: em uma aplicação o programador define quando cada serviço deve ser chamado. Componentes Projeto : o algoritmo principal é dado pela estrutura do framework, sendo este o responsável por invocar serviços. O que é um framework? Inversão de fluxo O framework tenta capturar o fluxo de controle de aplicação dentro de um domínio. Este fluxo pode ser especializado mais tarde por uma aplicação específica Genéricos dentro de um domínio Os frameworks são adaptáveis a classes de aplicações por customização e extensão da estrutura que eles provêem O que é um framework? Pontos de flexibilização: HOT SPOTS Os hot spots expressam aspectos do domínio do framework que não podem ser antecipados, ou seja, são dependentes da aplicação. Não é função dos desenvolvedores de um framework compor os hot spots cobertos no domíno das aplicações. A flexibilização permite o uso do framework para o desenvolvimento de inúmeras aplicações no domínio modelado pelo framework Desenvolvimento de framework A n á l i s e d a a p l i c a ç ã o D e s i g n A p l i c a ç ã o D e s e n v o l v i m e n t o t r a d i c i o n a l o r i e n t a d o a o b j e t o s Objetivo Manter o conhecimento da organização na organização. A n á l i s e d o d o m í n i o F r a m e w o r k d e s i g n A p l i c a ç ã o 1 Reutilização A p l i c a ç ã o 2................ A p l i c a ç ã o n Otimizar generalização e a especificação D e s e n v o l v i m e n t o d e a p l i c a ç õ e s b a s e a d o e m f r a m e w o r k s

Benefícios Modularidade: encapsulamento de implementações flexíveis através de uma interface estável ajuda prover qualidade de software localizando o impacto das mudanças no design e na implementação esta localização reduz o esforço necessário para compreensão e manutenção de software Reuso: as interfaces estáveis propiciam reuso pois definem componentes genéricos que podem ser reaplicáveis para criar novas aplicações Extensibilidade: uma instância do framework é uma nova aplicação desenvolvida Classificação por escopo System infrastruture frameworks: simplificam o desenvolvimento de sistemas de infra-estrutura portáveis e eficientes como sistemas operacionais e frameworks de comunicação. Aplicabilidade são usados internamente como um software da organização e não são vendidos para clientes diretamente Middleware integration frameworks: estes frameworks são freqüentemente usados para integrar aplicações distribuídas e componentes são projetados para aumentar a habilidade de desenvolvimento de software de infra-estrutura para trabalharem similarmente em um ambiente distribuído Custo Enterprise application frameworks: Especificidade estes frameworks são voltados para domínio de aplicação em geral e são primordiais para atividades de negócio Classificação por técnicas de extensão Whitebox: Desenvolvimento de funcionalidades. Baseado em linguagens OO como herança (reuso de código) e amarração dinâmica (extensão). Desenvolvedor vê tudo. Blackbox: Uso de componentes prontos. Extensão pela definição interfaces para componentes que podem ser conectados ao framework. O reuso das funcionalidades são feitas: 1) definindo os componentes que podem se adaptar a interface e 2) integrando estes componentes. Desenvolvedor não vê nada. Graybox: criado para evitar as desvantagens presentes nos frameworks whitebox e blackbox. Um bom graybox framework tem bastante flexibilidade e extensibilidade e também tem a habilidade de esconder informações não necessárias para desenvolvedores da aplicação. Vantagens Código Menor (na aplicação) Parcialmente desenvolvido Confiável (depurado) Manutenabilidade Reutilização: Código Design Desvantagens Modelagem: necessidade de experiência no domínio da aplicação. Desenvolvimento de documentação para o usuário do framework Garantir integridade de versões s amadurecem, e as aplicações?... O processo de depuração pode se tornar complicado (Porém uma vez feito o código esta pronto) Flexibilidade vs. Generalização Vantagens e Desvantagens Vantagens: Pouco esforço de desenvolvimento Integração Eficiência (para casos genéricos) Uma vez desenvolvido o núcleo básico facilidade de desenvolvimento de aplicações Desvantagem: Curva de aprendizagem Pouca padronização Manutenção do framework e Pontapé inicial demorado

vs.. Biblioteca de classes Biblioteca de classes São um conjunto de classes relacionadas que tem funcionalidades de propósito geral Suas classes não são relacionadas a um domínio de aplicação específica Classes de bibliotecas podem ser utilizadas individualmente As classes são relacionadas entre si e as instanciações se dão em conjunto (ou de forma coordenada) vs.. Programa OO Programa OO: Descreve a execução de um programa que atende a todos os requisitos de uma especificação. : Captura as funcionalidades de diversas aplicações no domínio, mas não é executável, já que não cobre o comportamento de uma aplicação específica Processo de desenvolvimento O desenvolvimento de um framework pode ser baseado: Desenvolvimento baseado na experiência I n i c i o d o d e s e n v o l v i m e n t o d e n a p l i c a ç õ e s Na experiência dos desenvolvedores Na compreensão dos problemas do domínio de aplicação Empregando design patterns 1. E l e m e n t o s e m C o m u m 2. E x p e r i ê n c i a D e s e n v o l v i m e n t o d a A p l i c a ç ã o D e s e n v o l v i m e n t o d o F r a m e w o r k 1. R e - D e s e n v o l v e r a s n a p l i c a ç õ e s u s a n d o o F r a m e w o r k 2. D e s e n v o l v e r a s a p l i c a ç õ e s n + 1, n + 2,... u s a n d o o F r a m e w o r k A t i v i d a d e d e m a n u t e n ç ã o u s a n d o a e x p e r i ê n c i a Desenvolvimento baseado na Análise de Domínio Desenvolvimento Empregando Design Patterns Desenvolvimento da Aplicação D e s e n v o l v i m e n t o d a A p l i c a ç ã o E x p e r i ê n c i a Análise do Domínio Experiência Usar D e s e n v o l v e r a p r im e i r a a p li c a ç ã o U s a r D e s e n v o l v i m e n t o d o F r a m e w o r k Identificar abstrações e elementos em comum Desenvolvimento do A p l i c a n d o S i s t e m a t i c a m e n t e A t i v i d a d e d e m a n u t e n ç ã o u s a n d o a e x p e r i ê n c i a C o n j u n t o d e D e s i g n P a t t e r n s Atividade de manutenção usando a experiência

Testar o Desenvolvimento: Caso Geral Diretrizes de desenvolvimento Análise do domínio do problema desenvolvendo de Aplicações Experiência Desenvolvimento do Usar Atividade de manutenção usando a experiência Exemplo: Gustavo Lermen: TC Desenvolvimento de um framework com concorrência para alinhamento de seqüências de DNA Evitar todo esforço possível do usuário O usuário, no caso é a pessoa responsável por desenvolver aplicações Idealmente o usuário é especialista na aplicação, talvez não tanto em programação... Identificar quais as classes e operações do framework o usuário terá que utilizar A quantidade de código a ser escrita pelo usuário deve ser a mínima possível Instanciação Conectando componentes já existentes reutiliza a interface do framework reutiliza regras para a conexão dos componentes Criando novas sub-classes concretas whitebox as sub-classes são bem acopladas à super-classe é necessário ter um maior conhecimento das classes abstratas Estendendo as classes abstratas adicionando novas operações e variáveis backbox maneira mais difícil porém mais poderosa do uso de frameworks Documentação Documentação deve se adaptar a diferentes públicos Portfolio descrição as capacidades do framework e sua aplicabilidade. Guia de Usuário. guia para exploração do framework, explicitando hot spots e comportamento básico da execução. Descrição das semânticas esperadas aos hot spots. Exemplos Desenvolvimento descrição elaborada, contendo os algoritmo abstratos e o modelo de colaboração possibilitando a manutenção do próprio framework. Documentação Decisão de Uso Propósito do Como Utilizar Aplicações de Exemplo Design do X - - - Utilização X X X - Manutenção X X X X Conclusão É importante ter em mente: 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 mas mais esforço é necessário para aprender a usá-lo e para usá-lo efetivamente. Compromisso

Exemplo Sequenciamento de DNA Definir uma estrutura para suporte ao sequenciamento de DNA Exemplo Sequenciamento de DNA GenerateScoreValues() : void TraceBack() : void Concorrência Implementações Implementações concorrentes 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 Usuário Evento Alarme Aniversário Tarefa Ex. de evento: tarefa, aniversário Ex. de canal: celular, email Email Celular criarusuario() Usuário nome login senha criarevento() alterarevento() excluirevento() getusuario() setusuario() Alarme Evento data hora getalarme() criaralarme() s etalarme() alteraralarme() criar() excluiralarme() alterar() informarusuario() excluir() alarmar() Aniversário Tarefa aniversariante descricao get() Email Celular endereco numero Whitebox Processo de desenvolvimento: baseado na análise do domínio e na análise de aplicações já existentes Instanciação: estendendo as classes abstratas: adicionando novas operações e variáveis Documentação: Propósito do framework: O framework se destina à aplicações no domínio de agenda eletrônica. Tais aplicações são usadas para acionar um alarme e avisar ao usuário sobre um evento quando chegar a hora e a data desejada.

Como utilizar o framework: Para utilizar o framework é necessário instanciar as classes abstratas Evento e e implementar alguns métodos (métodos abstratos e outros caso necessário) e adicionar algum atributo para armazenar a informação recebida. Além disso é necessário modificar a implementação dos métodos criarevento() da classe Usuário e criar() da classe Alarme. Propósito das aplicações: Uma aplicação exemplo criação da classe Tarefa por herança a partir da classe Evento criação do atributo descrição para a classe Tarefa implementação dos métodos setevento e getevento criação da classe Email por herança a partir da classe criação do atributo endenreço para a classe Email implementação dos métodos get e set criarusuario() Usuário nome login senha criarevento() alterarevento() excluirevento() getusuario() setusuario() Evento criaralarme() alteraralarme() excluiralarme() informarusuario() Tarefa descricao Alarme data hora getalarme() setalarme() criar() alterar() excluir() alarmar() get() Email endereco get() Design do framework: criarusuario() Usuário nome login s enha criarevento() alterarevento() excluirevento() getusuario() s etusuario() Evento criaralarme() alteraralarme() excluiralarme() informarusuario() Alarme data hora getalarme() setalarme() criar() alterar() excluir() alarmar() NewClasse get() NewClasse