Um Estudo sobre Padrões de Projeto Aplicados a Garbage Collection

Tamanho: px
Começar a partir da página:

Download "Um Estudo sobre Padrões de Projeto Aplicados a Garbage Collection"

Transcrição

1 Um Estudo sobre Padrões de Projeto Aplicados a Garbage Collection Cássio Frederico Moreira Druziani 1, Ailton Sergio Bonifácio 1, Yandre Maldonado e Gomes da Costa 1, Alberto Ângelo Fabris 2 1 Instituto de Informática Universidade Federal do Rio Grande do Sul (UFRGS) Caixa Postal Porto Alegre RS Brazil 2 Faculdade de Ciências Sociais Aplicadas de Cascavel (UNIVEL) Av. Titto Muffato, 2317, Bairro Santa Cruz Cascavel PR Brazil Abstract. This paper objective to show the project standards concepts, being emphasize out its great importance and applicability in the software area. A case study it is carried through on four different applied project standards to the Garbage Collector. This paper is divided of the following form: in section 1, the basic concepts on Patterns and Design Patterns with emphasis in the solutions of project for software are introduced; in section 2 the Garbage Collector is described, in whose solution the use of standards can be applied; in section 3 the four standards used in the solution are described on the proposal solution: adapter, facade, iterator and proxy and; in the fourth and last section is described an a proposal of standards application on the solution of the described problem in section 2. Resumo. Este artigo tem como objetivo conceituar padrões de projetos, ressaltando sua grande importância e aplicabilidade na área de software. É realizado, também, um estudo de caso sobre quatro diferentes padrões de projeto aplicados ao Garbage Collector. O trabalho está dividido da seguinte forma: na seção 1, são introduzidos os conceitos básicos sobre Patterns e Design Patterns com ênfase nas soluções de projeto para software; na seção 2 é descrito o Garbage Collector, em cuja solução pode-se aplicar o uso de padrões; na seção 3 são descritos os quatro padrões utilizados na solução proposta: adapter, facade, iterator e proxy e; na quarta e última seção é descrita uma proposta de aplicação de padrões na solução do problema descrito na seção Introdução O uso atual do termo padrão é derivado das escritas do arquiteto Christopher Alexander que escreveu vários livros com tópicos relacionados à construção, planejamento e arquitetura urbana. Em qualquer ciência ou engenharia é fundamental o uso de um vocabulário comum para expressar seus conceitos, e uma linguagem para relacioná-los. O objetivo do uso de padrões dentro da comunidade de software é criar um conjunto de literatura para ajudar o desenvolvedor de software a solucionar problemas encontrados

2 periodicamente ao longo de todo o desenvolvimento do software. Os padrões ajudam a criar uma linguagem compartilhada para comunicar experiências sobre estes problemas e suas soluções. A classificação formal destas soluções e suas relações nos permitem capturar o conjunto de conhecimentos que define nossa compreensão das melhores arquiteturas que satisfazem as necessidades dos usuários. O enfoque primário dos padrões não está tanto na tecnologia e sim em criar uma cultura para documentar e apoiar engenharia de arquiteturas e projetos. Cada pattern descreve em uma forma literária um problema que ocorre várias vezes no nosso ambiente e então descreve o núcleo da solução deste problema, de tal forma que podemos utilizar esta solução inúmeras vezes, gerando resultados diferentes a cada vez [Alexander 1977]. Tal linguagem de patterns permite a qualidade, que não pode ser fabricada, mas apenas gerada, indiretamente, pelas ações das pessoas. James Coplien [Coplien 1996] descreveu as seguintes considerações sobre a definição de pattern, referindo-se várias vezes às definições originais de Alexander [Alexander et.al. 1979, p.247]: Um pattern é uma peça de literatura que descreve um problema de desenho e uma solução geral para o problema em um contexto particular. Alexander define: cada pattern é uma regra com três partes, que expressam a relação entre um certo contexto, um problema e uma solução [Alexander 1979]. Um pattern, em resumo, é ao mesmo tempo uma coisa, que acontece no mundo, e a regra que nos diz como criar esta coisa, e quando devemos cria-la. Ele é tanto o processo como a coisa; tanto a descrição de uma coisa que está viva, e a descrição do processo que gera esta coisa. Em [Appleton 1999] Dirk Riehle e Heinz Zullighoven dão uma definição do termo pattern que é amplamente utilizada: Um pattern é a abstração de uma forma concreta que continua ocorrendo periodicamente em contextos não abstratos específicos. Ainda em [Appleton 1999] Richard Gabriel define de forma clara e concisa o termo pattern: Cada pattern é uma regra de três partes que expressa uma relação entre um certo contexto, um certo sistema de forças que acontecem repetidamente naquele contexto, e uma certa configuração de software que permite solucionálos. O uso de patterns permite o reuso de software que em geral tem sido um objetivo primordial em engenharia de software. A própria utilização do termo reuso (ou reutilização) é uma demonstração do quanto reuso é essencial e também do quanto ele não está sendo atingido. Para atingir este objetivo, uma engenharia utiliza conhecimentos científicos sobre domínios tecnológicos que estão codificados de uma forma que seja diretamente útil para um engenheiro. Deste modo este conhecimento codificado provê respostas para questões que ocorrem comumente na prática. Ou seja, este conhecimento deve ser reutilizado para a geração de soluções.

3 1.1 Design Patterns O termo Projeto de Padrões ou Design Patterns, é um mecanismo novo para expressar estruturas de projeto. Preservam informações de projeto abstraindo o que há por trás de um projeto. Eles identificam classes, instâncias, os papéis dos projetos, colaborações e a distribuição de responsabilidades. Design Patterns têm muita utilidade no processo de desenvolvimento de projetos orientados a objeto [Appleton 1999]: provêem um vocabulário comum para projetistas se comunicarem, documentarem, e explorarem alternativas de projeto. Eles reduzem complexidade de sistema nomeando e definindo abstrações que estão sobre classes e instâncias. Um bom conjunto de Design Patterns, com certeza eleva o nível de qualquer programa; constituem uma base reutilizável de experiência para construção de software reutilizável. Eles dispõem de meios para usar o conhecimento adquirido por projetistas mais experientes, agem como pequenos blocos de projeto que juntos constróem projetos mais complexos; eles são micro-arquiteturas que contribuem para a construção de uma arquitetura de sistema global; ajudam a reduzir o tempo de aprendizagem para uma biblioteca de classe. Uma vez que se tenha aprendido sobre um Design Pattern em uma biblioteca, o projetista pode reusar esta experiência quando aprender sobre uma nova classe; ajudam o projetista inexperiente a desenvolver como um projetista experiente; provêem um objetivo para a reorganização ou remanufatura de hierarquias de classe. 1.1 Categoria de Design Patterns Design Patterns variam na sua granularidade e no seu nível de abstração. Eles são numerosos e têm propriedades comuns. Existem muitos padrões de projeto, por isso precisamos de um modo para organizá-los. Na tabela 1 abaixo é demonstrado um sistema de classificação para padrões de projeto. Tabela 1. Organização dos Padrões de Projeto Escopo Criação Estrutura Comportamento Classe Factory Method Adapter (classe) Interpreter Template Method Objeto Fonte: [Gamma 1994] Abstract Factory Builder Prototype Singleton Adapter (objeto) Bridge Composite Decorator Facade Flyweight Proxy Chain of Responsibility Command Iterator Mediator Memento Observer State Strategy Visitor 2. Estudo de Caso Garbage Collection é a recuperação automática de recursos, normalmente na memória principal, usando o nível de linguagem. Garbage Collectors (Coletores de Lixo) são escritos tradicionalmente em assembler, tornando-os difíceis de otimizar, difíceis de

4 portar ou reusar entre sistemas operacionais ou outras linguagens. O problema é como reusar Garbage Collectors e seus diferentes algoritmos. Vários algoritmos foram desenvolvidos desde os anos 70. Muitos dos quais, algoritmos de localização; isto é, eles localizam ponteiros entre objetos na pilha a fim de encontrar os que não mais são utilizados pela aplicação. Uma alternativa para a implementação disto, é assegurar o uso de Design Patterns para a família de algoritmos dos Garbage Collectors. O algoritmo Mark-and-Sweep (Varredura) é o algoritmo original de localização. Algoritmos incrementais dividem a coleta através de muitos incrementos pequenos, a fim de evitar uma pausa longa, o suficiente para os usuários notarem. Algoritmos de compactação movem objetos na memória para desfragmentá-los. Coletores Semi-Space e Geradores dividem objetos por idade, permitindo o enfoque para os objetos mais novos [Wilson 1992]. Alguns Coletores foram examinados como um passo na aquisição de domínio de conhecimento. Este artigo consiste em utilizar Design Patterns [Gamma 1994] como ferramenta para capturar este domínio de conhecimento pertinente. Os padrões utilizados para tal tarefa são o Adapter, Facade, Iterator e o Proxy; cada qual com sua utilização específica em Garbage Collectors. 3. Design Patterns Abordados O objetivo deste padrão é permitir que interfaces incompatíveis se comuniquem. Este padrão também é conhecido como Wrapper e, convertendo a interface de uma classe, pode torná-la reutilizável fazendo com que esta corresponda à interface requerida por uma aplicação. 3.1 Padrão Adapter - Estrutural de classes e de objetos O uso do Adapter é recomendado quando se deseja usar uma classe já pronta, cuja interface não é a desejada. Quando desejado usar várias subclasses cujas interfaces não correspondem a desejada, neste caso pode-se aplicá-lo para adaptar a interface da classe mãe ou ainda para se criar uma classe reutilizável que coopera com classes cujas interfaces podem não ser compatíveis. 3.2 Padrão Facade - Estrutural de objetos O Facade torna o uso de um subsistema mais fácil, oferecendo uma interface unificada, de nível mais alto, para o conjunto de interfaces do mesmo. Uma das possíveis alternativas a se seguir quando se deseja reduzir a complexidade de um sistema é estruturá-lo em subsistemas. O padrão Facade é utilizado exatamente para tornar menor a comunicação e a dependência entre sistemas, que é um dos objetivos de um projeto. Pode-se identificar algumas situações nas quais o uso do padrão Facade se torna interessante. Uma delas é quando se deseja obter uma visão simples de um subsistema complexo. A complexidade tende a aparecer nos subsistemas à medida que os mesmos evoluem. Entretanto, é comum que muitos detalhes envolvidos nesta complexidade não interessem a muitos clientes do sistema. Neste sentido, o uso de uma fachada (Facade)

5 pode omitir detalhes (que podem ser vistos pelos clientes que necessitem de uma maior customização) fornecendo uma visão simples do sistema. Outra aplicação interessante do Facade é sua utilização entre camadas de subsistemas definindo o ponto de entrada dos níveis. Se os subsistemas forem independentes, pode-se estabelecer esta comunicação através de fachadas. Pode-se lembrar ainda uma outra situação na qual o uso de fachada (Facade) seria recomendável. Este padrão pode ser usado para favorecer a independência e a portabilidade entre sistemas quando for preciso desacoplar o subsistema dos clientes e dos outros subsistemas, nos casos em que houver muita dependência entre clientes e classes de implementação de uma abstração. Em relação às colaborações, é importante lembrar que a fachada fica entre o subsistema e o cliente, de forma que as solicitações advindas do cliente passam pela fachada que as repassa para os objetos do sistema. Assim, os objetos do subsistema não são acessados diretamente pelos clientes, e freqüentemente a fachada tem o papel de traduzir a interface destes objetos para as interfaces de subsistemas. 3.3 Iterator Pattern - Comportamental de objetos Também chamado de cursor, este padrão procura possibilitar uma forma de acesso seqüencial aos elementos de um objeto sem expor sua representação interna. O padrão Iterator permite percorrer um objeto agregado, como uma lista, de diferentes formas sem que seja necessário acrescentar à interface da lista as operações pertinentes a cada percurso diferente. Um objeto Iterator permite transferir a responsabilidade de acesso e percurso do objeto lista chamando-a para si. Ao percorrer uma lista, pode-se deixar a cargo de um objeto Iterator o controle de quais elementos já foram percorridos, isto é, identificar em que ponto da lista encontra-se o acesso. 3.4 Proxy Pattern - Estrutural de Objetos Este padrão também é conhecido como surrogate. Ele fornece um marcador de localização para controlar o acesso a um objeto. A criação e inicialização de um ou vários objetos num determinado momento pode custar um tempo significativo. Assim, visando não comprometer o desempenho geral da aplicação pode-se adiar o custo integral de criação e inicialização de um objeto até o instante em que isto seja imprescindível. Desta forma, a idéia é criar objetos caros sob demanda, quando realmente necessitamos usá-los. Para isto, utiliza-se um Proxy que funciona como um substituto temporário do objeto real. O Proxy assume a instanciação do objeto real quando for necessário. O padrão Proxy aplica-se quando se faz necessária uma referência a um objeto mais versátil, ou sofisticada, do que um simples apontador. Algumas situações onde se pode aplicá-lo são: quando um Virtual Proxy cria objetos caros sob demanda; quando um representante local para um objeto é fornecido por um Remote Proxy num espaço de endereçamento diferente; quando um Protection Proxy controla o acesso para o objeto original.

6 4. Aplicação dos Padrões: Adapters e Facades Adapters e Facades são comuns em Garbage Collection, e em muitas situações a distinção entre eles não é clara. Funcionalmente, Adapters e Facades provêem tipos de flexibilidade no mesmo ponto, a interface entre a aplicação e o Garbage Collector. Adapters permitem aos subsistemas mudarem a sintaxe de suas interfaces independentemente, enquanto Facades permitem aos subsistemas mudarem as suas decomposições internas independentemente. A diferença chave entre um Facade e um Adapter é que o Facade provê uma única interface integrada, pela qual um subsistema inteiro ou grupos de objetos podem ser acessados, enquanto um Adapter provê uma interface alterada para um único objeto para habilitá-lo a executar em um contexto para qual não foi originalmente projetado. 4.1 Adapters Adapters são comuns em gerenciamento de memória. Através de um Adapter, alguns coletores originalmente escritos em linguagem C, podem ser habilitados para serem usados em C++. A maioria dos sistemas operacionais provê um único método de alocar memória empilhada, enquanto linguagens como C provêem uma grande quantidade de chamadas em bibliotecas que alocam memória, cada uma com uma semântica ligeiramente diferente, o que faz os Adapters serem muito úteis. Linguagens como C++, Oberon e Java têm um operador New, com sintaxe divergente, que aloca memória para um objeto. Usando um Adapter um único Garbage Collector pode ser adaptado para aceitar cada linguagem. Intenção: Adaptar a interface entre o Garbage Collector e os componentes de sistemas externos. Motivação: Diferentes linguagens de implementação exigem interfaces ligeiramente diferentes para serviços fornecidos por Garbage Collectors. Solução: Colocar um objeto Adapter entre o coletor e o sistema externo para mediar as suas interações. Aplicabilidade: Seja onde for, o Garbage Collector pode ser usado com várias versões de um sistema, ou vários sistemas, ao qual vão precisar de pequenas diferenças na interface. Estrutura: Aplicação new() Adapter Collector malloc( ) Figura 1. Estrutura do Adapter e Collector Participantes: Aplicação - usa os serviços de Collector; a sintaxe das interações com Collector pode variar. Collector - oferece serviços de gerenciamento de memória para Aplicação. Pode ser usado com um variedade de Aplicações, ou várias

7 versões da mesma Aplicação, cada qual com uma diferente interação de sintaxe. Adapter - faz a mediação de todas as interações entre um Collector e uma Aplicação. Colaborações: o seguinte diagrama de interação mostra um Adapter que faz a mediação entre uma aplicação em C++ e um Collector em C. Aplicação Adapter Collector new(blarg malloc (sizeof(blarg) ) Figura 2. Diagrama de interação entre Adapter e Collector Conseqüências: como todas as interações entre o Garbage Collector e o sistema externo é mediado pelo adaptador, a sintaxe de Garbage Collector ou sistema pode mudar com uma mudança externa, que é limitada ao adaptador. Implementação: geralmente o Adapter é implementado como uma capa ao redor do Garbage Collector. 4.2 Facade Facades são usados para capturar a interface de um sistema (ou subsistema), simplificar a visão exterior do sistema e ocultar mudanças internas do sistema de seus usuários. Além disso, Facades protegem os subsistemas internos de consultas e manipulações indesejadas feitas pelos usuários. Esta combinação lhes permite proporcionar encapsulamento ao nível de pacote, semelhante ao que é fornecido ao nível de objeto pela maioria das linguagens de programação orientada a objetos. Em Garbage Collector, Facade é usado, principalmente, entre o subsistema do Garbage Collector e a aplicação do cliente para encapsulamento, conservando o namespace e favorecendo a queda de Garbage Collectors em projetos de sistemas que utilizarão gerenciamento de memórias tradicionais. Intenção: Fornecer uma interface integrada entre o Garbage Collector e componentes externos do sistema.

8 Motivação: Componentes externos do sistema requerem uma interface estável, imutável e claramente definida, para uma complexa evolução do sistema. Solução: Converter a especificação da interface do Garbage Collector; esconder completamente os detalhes da linguagem do Garbage Collector, e vice-versa. Aplicabilidade: Garbage Collectors que normalmente mudam sua estrutura interna ou sua organização durante sua vida e links externos para objetos dentro desta estrutura, imporiam limitações inaceitáveis na liberdade do projeto. Estrutura: Limites do Subsistema Garbage Collector Aplicação Facade new() sizeof() Algoritmo new() Proxy sizeof() Participantes: Figura 3. Limites do subsistema Garbage Collector Aplicação - utiliza os serviços do Garbage Collector; exige uma interface limpa e simples para o complexo subsistema do Garbage Collector; interage com o Facade como se o subsistema do Garbage Collector fosse um único objeto. Facade - fornece uma interface limpa e simples para o complexo subsistema do Garbage Collector; está ciente de alguns ou de todos os objetos internos dentro do subsistema Garbage Collector; encaminha chamadas a métodos da Aplicação para os objetos internos dentro do subsistema Garbage Collector. Algoritmo e Proxy - objetos dentro do subsistema Garbage Collector. Colaborações: o seguinte diagrama de interação mostra duas chamadas de método a um Facade que está sendo enviado a outros objetos. O primeira chamada do método, sizeof(), é despachado ao Proxy apropriado, baseado no argumento Object. A segunda chamada de método, new(), é despachado sempre ao mesmo objeto, Algoritmo. Conseqüências: A interface do Garbage Collector é reduzida a um único objeto. Implementação: Como sugerida em [Gamma 1994], a aplicação pode ser, mais adiante, desacoplada do coletor, fazendo do Facade uma classe abstrata.

9 Aplicação Facade Algoritmo Proxy sizeof(object) sizeof() new(size) new(size) Figura 4. Diagrama de interação do método Facade 4.3 Padrão Iterator Iterators são objetos que permitem iteração sobre um objeto agregado (um recipiente) sem expor sua estrutura interna. A ação primária de toda a não referência que possui os Garbage Collectors é executada por uma repetição sobre a pilha. Iterators estão no coração do Garbage Collector e um ciclo do Garbage Collector pode ser visto como uma iteração sobre cada objeto na pilha. Dentre os tipos principais de iterações em Garbage Collector, tem-se: iterações sobre origens o conjunto de ponteiros dentro da pilha externa. Normalmente envolve todos os ponteiros encontrados nas estruturas de dados global e no "runtime stacks" e pode ser difícil de incrementar. Isto acontece uma vez ao começo de cada ciclo do Garbage Collector. iterações sobre ponteiros dentro de um objeto (scanning) - estes são usados para encontrar a quais objetos, um objeto particular se refere. Isto acontece uma vez por objeto alcançável na pilha por ciclo do Garbage Collector e a menos que sejam entradas em ação especiais, isto resulta na geração de números vastos de Iterators. Felizmente, o escopo destes Iterators temporários é muito limitado e seu tempo de vida previsível, eles podem ser reinicializados e reusados. Isto elimina toda a necessidade para criar novos Iterators durante um ciclo do Garbage Collector. Intenção: iteração abstrata, iteração sobre origens, objetos pilha ou referências com um objeto. Motivação: há várias implementações possíveis para pilhas de estruturas de dados, cada uma com suas vantagens e desvantagens, sendo que para tirar vantagem

10 disto, são exigidas interfaces standards, que podem ser trocadas uma por outra. O Garbage Collector deve possuir uma interface padrão para estas estruturas de dados. Solução: separar a ordem de passagem, mecanismo e estado do resto do sistema, usando um objeto Iterator que contém o estado da iteração, e por qual são executadas todas as ações na iteração. Aplicabilidade: Onde quer que uma estrutura de dados esteja apta a ser cruzada em múltiplas direções, ou quando a implementação da estrutura de dados pode mudar. Estrutura: Iterator hasmoreitems() nextitem() Aggregate Aggregate() Iterator() additem() removeitem() Participantes: Figura 5. Estrutura do Interator Aggregate - um recipiente ou objeto gerador; responsável pela criação, ou redirecionamento de Iterators. Iterator - mantém uma referência ao Aggregate; devido ao grande número de iterações executadas durante a coleta de lixo, pode ser reusado, em lugar de destruí-lo e recriá-lo novamente. Conseqüências: o objeto Iterator extra aumenta overhead, que poderá possuir muitos métodos para trabalharem na otimização. Implementação: em função do alto número de iterações executadas durante o curso da coleta de lixo, a intenção do Garbage Collector é de não usar objetos temporários (desde que o Garbage Collector seja, provavelmente, invocado quando há pouca ou nenhuma memória para a criação deles) e reusar objetos Iterator. Permitindo ser redirecionados para iterar sobre um outro objeto. Um único Iterator por cliente pode ser usado. 4.4 Padrão Proxy Proxies são usados em Garbage Collectors de três maneiras: (i) Para controlar acesso ao objeto que eles guardam. Eles são usados para implementar read-and-write-barriers (barreiras de leitura e escrita) na ausência de memória virtual; (ii) Para ocultar o movimento, a verdadeira localização, ou mudanças no conteúdo ou localização do objeto que eles guardam. Eles podem ser usados para ocultar da aplicação, movimentos da pilha de objetos provocados pelo Garbage Collector; (iii) Para conter a informação do objeto sobre o estado do objeto que eles guardam. Eles podem ser usados em Garbage Collection para armazenar o tipo do objeto. Existem implementações alternativas para cada um deles [Goldberg 1991], mas a informação é comumente armazenada dentro de um Proxy.

11 Em Garbage Collection, Proxies são implementados de duas maneiras. A primeira, armazenando os Proxies separadamente do objeto em uma área separada de memória (tais particionamentos de memória podem conduzir aos tamanhos máximos das pilhas que são impostas, mas pode aumentar a área de referência no coletor e pode melhorar o caching). A segunda maneira, armazenando o Proxy com o objeto. Esta segunda técnica é usada por gerenciadores tradicionais de memória para linguagens como C e C++, que comumente armazenam alguns bytes de dados imediatamente antes dos objetos cederem à aplicação [Wilson et al. 1995]. Intenção: Fornece um repositório para o estado e funcionalidade do objeto no Garbage Collection. Motivação : O Garbage Collector necessita: uma área para armazenar dados de objeto; um mecanismo de execução para ler ou escrever barreiras; em um Garbage Collector móvel, um mecanismo para ocultar o movimento do objeto. Solução: usar um objeto Proxy para cada objeto de aplicação. A aplicação invoca métodos do objeto Proxy como se ele fosse o objeto atual, e chamada ao método passada no objeto atual. Estrutura: a seguir é apresentado uma estrutura para o Proxy num Garbage Collector: MemoryObject Aplicação Workspace instance( ) memory( ) getreferences( ) _id _tag _type Collector malloc( ) MutatorNode getleft( ) getright( ) setleft( ) setright( ) Participantes: Figura 6. Estrutura do Proxy para um Garbage Collector Workspace - mantém um vetor de MemoryObjects; mantém uma lista de entradas livres do vetor MemoryObject - classe base para todos os objetos alocados da pilha; repositório para dados de objeto (tipo de dados); mantém um índice (_id) em Workspace. Memory indica qual elemento contém a referência para este objeto.

12 MutatorNode - exemplo de objetos na pilha; duas instâncias acessadas; métodos contendo chamadas ao Collector.writeBarrier(). Collector - representa o restante do coletor; implementa writebarrier, que usa, entre outras coisas, os campos em MutatorNode herdados de MemoryObject. Aplicabilidade: todos Garbage Collectors incrementais e os não incrementais que armazenam dados do objeto. Implementação: tradicionalmente, Proxies são implementados em pacotes de gerenciamento de memória colocando um objeto de alguns bytes entre cada objeto normal da pilha. Estes pequenos objetos são de um tamanho conhecido, e contém dados sobre o objeto seguinte, e poderia ser obtido um ponteiro para estes dados, subtraindose um número fixo de um ponteiro para qualquer objeto da pilha. 5. Conclusão O objetivo do uso de padrões dentro da comunidade de software é criar um conjunto de literatura para ajudar o desenvolvedor de software a solucionar problemas encontrados periodicamente ao longo de todo o desenvolvimento do software. Os padrões ajudam a criar uma linguagem compartilhada para comunicar experiências sobre estes problemas e suas soluções. A classificação formal destas soluções e suas relações nos permitem capturar o conjunto de conhecimentos que define nossa compreensão das melhores arquiteturas que satisfazem as necessidades dos usuários. Cada pattern descreve em uma forma literária um problema que ocorre várias vezes no nosso ambiente e então descreve o núcleo da solução deste problema, de tal forma que podemos utilizar esta solução inúmeras vezes, gerando resultados diferentes a cada vez. Tal linguagem de patterns permite a qualidade, que não pode ser fabricada, mas apenas gerada, indiretamente, pelas ações das pessoas. O uso de patterns permite o reuso de software que em geral tem sido um objetivo primordial em engenharia de software. Os patterns propiciam reuso de soluções bem sucedidas para problemas que se repetem. Isto significa um aumento na produtividade na fase de design. Para projetos que tenham o tipo de estrutura muito complexo, o uso de patterns é uma solução que simplifica a análise provendo uma representação genérica de hierarquias que solucionam problemas da mesma natureza. Empresas que utilizam a filosofia de Design Patterns para projetar software reduzem a distância existente entre projetistas iniciantes e experientes. A criação e utilização de patterns permite perpetuar as experiências de sucesso, bem como reduzir o tempo e o esforço necessários para criar uma cultura para documentar e apoiar engenharia de arquiteturas e projetos. Em grande parte dos Garbage Collectors encontram-se Design Patterns, sendo que em sua maioria eles são similares. Neste artigo foram demonstrados quatro deles. Fica evidenciado, assim, que Garbage Collector é um bom exemplo da importância da utilização dos Design Patterns no auxílio a projetos orientados a objeto.

13 6. Referências Bibliográficas Alexander, C. (1979) The Timeless Way of Building, Oxford University. Alexander, C. et al. (1977) A Pattern Language, Oxford University. Appleton, Brad. (1999), Patterns and Software: Essential Concepts and Terminology. In: Coplien, J. O. Software Patterns, SIGS Books, Gamma, E., Helm, R., Johnson, R. and Vlissides, J. (1994) Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley. Goldberg, B. (1991). Tag-Free Garbage Collection for Strongly Typed Programming Languages. Pages of: Proceedings of ACM SIGPLAN '91 Conference on Programming Language Design and Implementation. Wilson, P. R. (1992). Uniprocessor Garbage Collection Techniques. Pages 1-42 of: Bekkers, Y., & Cohen, J. (eds), Proceedings of the 1992 International Workshop of Memory Management. Lecture Notes in Computer Science, no Springer. Wilson, P., Johnstone, M., Neely, M., & Boles, D. (1995). Dynamic Storage Allocation: ASurvey and Critical Review. In: (Baker, 1995).

J930. Padrões. Projeto. Introdução. argonavis.com.br. Helder da Rocha (helder@acm.org)

J930. Padrões. Projeto. Introdução. argonavis.com.br. Helder da Rocha (helder@acm.org) Padrões de J930 Projeto Introdução Helder da Rocha (helder@acm.org) argonavis.com.br O que é um padrão? Maneira testada ou documentada de alcançar um objetivo qualquer Padrões são comuns em várias áreas

Leia mais

1Introdução Helder da Rocha (helder@acm.org)

1Introdução Helder da Rocha (helder@acm.org) J930 Padrões Projeto de 1Introdução Helder da Rocha (helder@acm.org) argonavis.com.br O que é um padrão? Maneira testada ou documentada de alcançar um objetivo qualquer Padrões são comuns em várias áreas

Leia mais

Introdução à Padrões de Projeto. Glauber Magalhães Pires

Introdução à Padrões de Projeto. Glauber Magalhães Pires Introdução à Padrões de Projeto Glauber Magalhães Pires Agenda O que são padrões de projeto? Para que servem e por que utilizá-los? Elementos constituintes Como escolher o padrão a ser usado? Como são

Leia mais

Curso - Padrões de Projeto Módulo 1: Introdução

Curso - Padrões de Projeto Módulo 1: Introdução Curso - Padrões de Projeto Módulo 1: Introdução Vítor E. Silva Souza vitorsouza@gmail.com http://www.javablogs.com.br/page/engenho http://esjug.dev.java.net Sobre o Instrutor Formação: Java: Graduação

Leia mais

Programação Orientada a Objetos. Padrões de Criação

Programação Orientada a Objetos. Padrões de Criação Programação Orientada a Objetos Padrões de Criação Cristiano Lehrer, M.Sc. Objetivos Apresentar cada um dos 23 padrões clássicos descrevendo: O problema que solucionam. A solução. Diagramas UML (Unified

Leia mais

Padrões de Projeto. Prof. Jefersson Alex dos Santos (jefersson@dcc.ufmg.br) http://www.dcc.ufmg.br/~jefersson

Padrões de Projeto. Prof. Jefersson Alex dos Santos (jefersson@dcc.ufmg.br) http://www.dcc.ufmg.br/~jefersson Padrões de Projeto Prof. Jefersson Alex dos Santos (jefersson@dcc.ufmg.br) http://www.dcc.ufmg.br/~jefersson Apresentação Conceitos Definição Ponto de vista prático História Padrões de Projeto Conhecidos

Leia mais

Design Patterns. Viviane Torres da Silva viviane.silva@ic.uff.br. http://www.ic.uff.br/~viviane.silva/2012.1/es1

Design Patterns. Viviane Torres da Silva viviane.silva@ic.uff.br. http://www.ic.uff.br/~viviane.silva/2012.1/es1 Design Patterns Viviane Torres da Silva viviane.silva@ic.uff.br http://www.ic.uff.br/~viviane.silva/2012.1/es1 Sumário Reuso de Software Introdução Benefícios e Desvantagens Visão do Reuso Padrões de Projeto

Leia mais

Padrões GoF. Leonardo Gresta Paulino Murta leomurta@ic.uff.br

Padrões GoF. Leonardo Gresta Paulino Murta leomurta@ic.uff.br Padrões GoF Leonardo Gresta Paulino Murta leomurta@ic.uff.br Agenda Introdução Padrões de Criação Padrões de Estrutura Padrões de comportamento Leonardo Murta Padrões GoF 2 Introdução Os padrões GoF (Gamma

Leia mais

Padrões de Projeto de Software Orientado a Objetos

Padrões de Projeto de Software Orientado a Objetos Padrões de Projeto de Software Orientado a Objetos Ricardo Argenton Ramos [Baseado nos slides do professor Fabio Kon - USP] 1 Padrões de Projeto de Software OO Também conhecidos como Padrões de Desenho

Leia mais

Design Patterns STRATEGY EMERSON BARROS DE MENESES

Design Patterns STRATEGY EMERSON BARROS DE MENESES Design Patterns STRATEGY EMERSON BARROS DE MENESES 1 Breve Histórico Sobre Design Patterns A origem dos Design Patterns (Padrões de Desenho ou ainda Padrões de Projeto) vem do trabalho de um arquiteto

Leia mais

Programação Avançada. Padrões de Projeto de Software. Fonte: Oswaldo B. Peres e K19 Treinamentos

Programação Avançada. Padrões de Projeto de Software. Fonte: Oswaldo B. Peres e K19 Treinamentos Programação Avançada Padrões de Projeto de Software 1 Fonte: Oswaldo B. Peres e K19 Treinamentos Introdução Projetar software OO reusável e de boa qualidade é uma tarefa difícil; Para realizar essa tarefa

Leia mais

Padrões de Software (Software Patterns)

Padrões de Software (Software Patterns) Padrões de Software (Software Patterns) Cleidson de Souza - cdesouza@ufpa.br Departamento de Informática Universidade Federal do Pará Agenda! Definição! Histórico! Motivação! Exemplo Estratégia MVC! Forma

Leia mais

PADRÕES DE PROJETO E FRAMEWORK NO DESENVOLVIMENTO DE SOFTWARE

PADRÕES DE PROJETO E FRAMEWORK NO DESENVOLVIMENTO DE SOFTWARE PADRÕES DE PROJETO E FRAMEWORK NO DESENVOLVIMENTO DE SOFTWARE Nelson Ribeiro de Carvalho Júnior 1 RESUMO Atualmente o cenário mundial cuja dependência do software está cada vez mais evidente requer que

Leia mais

Padrões clássicos ou padrões GoF O livro "Design Patterns (1994) de Erich Gamma, John Vlissides, Ralph Jonhson e Richard Helm, descreve 23 padrões de

Padrões clássicos ou padrões GoF O livro Design Patterns (1994) de Erich Gamma, John Vlissides, Ralph Jonhson e Richard Helm, descreve 23 padrões de Padrões de Projeto Disciplina: Engenharia de Software - 2009.1 Professora: Rossana Maria de Castro Andrade Assistente da disciplina: Ricardo Fernandes de Almeida 1 O que é um Padrão? Um padrão descreve

Leia mais

PADRÕES DE SOFTWARE. Jerffeson Teixeira de Souza, Ph.D. Tarciane de Castro Andrade. Grupo de Padrões de Software da UECE (GPS.

PADRÕES DE SOFTWARE. Jerffeson Teixeira de Souza, Ph.D. Tarciane de Castro Andrade. Grupo de Padrões de Software da UECE (GPS. PADRÕES DE SOFTWARE 1 Jerffeson Teixeira de Souza, Ph.D. Tarciane de Castro Andrade Grupo de Padrões de Software da UECE (GPS.UECE) Julho-2009 CONTEÚDO Introdução aos Padrões de Software O quê são padrões?

Leia mais

Prof.ª Esp. Talita Pagani

Prof.ª Esp. Talita Pagani Especialização em Engenharia de Software Prof.ª Esp. Talita Pagani talita.cpb@gmail.com @talitapagani 21/02/2014 Design Patterns Aula 1 Prof.ª Esp. Talita Pagani 1 Informações gerais 1. Definição de Design

Leia mais

Testes com Design Patterns

Testes com Design Patterns Helder da Rocha (helder.darocha@gmail.com) 31 de março de 2005 71. Que padrão de design pode ser usado para permitir que uma implementação específica e uma hierarquia de abstrações possa variar independentemente?

Leia mais

Especialização em web com interfaces ricas. Padrões de Projeto - Estruturais

Especialização em web com interfaces ricas. Padrões de Projeto - Estruturais Especialização em web com interfaces ricas Padrões de Projeto - Estruturais Prof. Fabrízzio Alphonsus A. M. N. Soares fabrizzio@inf.ufg.br professor.fabrizzio@gmail.com Instituto de Informática Universidade

Leia mais

Design Pattern Implementation in Java and AspectJ

Design Pattern Implementation in Java and AspectJ Design Pattern Implementation in Java and AspectJ Jan Hannemann Gregor Kiczales In Proceedings of 2002 ACM SIGPLAN conference on OOPSLA. NY, USA. Introdução 2 Introdução 3 Introdução 4 Introdução 5 Introdução

Leia mais

PADRÕES DE PROJETO FAÇADE, FLYWEIGHT E VISITOR

PADRÕES DE PROJETO FAÇADE, FLYWEIGHT E VISITOR FACULDADE DE CIÊNCIAS APLICADAS SAGRADO CORAÇÃO DIRETORIA DE ENSINO SUPERIOR COORDENAÇÃO DO CURSO DE SISTEMAS DE INFORMAÇÃO GUSTAVO ANDRÉ DE FREITAS RILIANE ALPOIM PARIS RODRIGO SILVA DE SOUZA PADRÕES

Leia mais

Padrões de Desenho (Design Patterns)

Padrões de Desenho (Design Patterns) Padrões de Desenho (Design Patterns) O que são padrões de desenho Porque são úteis Conhecer alguns padrões 1 Padrões (Patterns) Design Patterns Explained: A New Perspective on Object-Oriented Design, Alan

Leia mais

Tópicos Avançados em Engenharia de Software

Tópicos Avançados em Engenharia de Software Faculdade de Ciências e Tecnologia Departamento de Matemática e Computação Programa de Pós-Graduação em Ciência da Computação Tópicos Avançados em Engenharia de Software Padrões e Frameworks (Aula 01-

Leia mais

PADRÕES DE PROJETO. Cleviton Monteiro (cleviton@gmail.com)

PADRÕES DE PROJETO. Cleviton Monteiro (cleviton@gmail.com) PADRÕES DE PROJETO Cleviton Monteiro (cleviton@gmail.com) Roteiro Atributos de qualidade Boas práticas de projeto Code Smell Padrões de Projeto Atributos de qualidade Coesão Acoplamento Atributos de qualidade

Leia mais

Padrões de Software (Software Patterns)

Padrões de Software (Software Patterns) Padrões de Software (Software Patterns) Cleidson de Souza - cdesouza@ufpa.br Departamento de Informática Universidade Federal do Pará Agenda! Definição! Histórico! Considerações! Forma de um Padrão! Exemplo!

Leia mais

Padrões de projeto 1

Padrões de projeto 1 Padrões de projeto 1 Design Orientado Objeto Encapsulamento Herança Polimorfismo Design Patterns 2 Responsabilidades Booch e Rumbaugh Responsabilidade é um contrato ou obrigação de um tipo ou classe. Dois

Leia mais

Universidade Federal de Itajubá Instituto de Engenharia de Sistemas e Tecnologias da Informação-IESTI PCO203 Tópicos Especiais em Programação

Universidade Federal de Itajubá Instituto de Engenharia de Sistemas e Tecnologias da Informação-IESTI PCO203 Tópicos Especiais em Programação UNIFEI Disciplina Professor Universidade Federal de Itajubá Instituto de Engenharia de Sistemas e Tecnologias da Informação-IESTI PCO203 Tópicos Especiais em Programação Enzo Seraphim 1 Padrões de Projeto

Leia mais

Pasteur Ottoni de Miranda Junior. Alguns Padrões de Projeto Gamma

Pasteur Ottoni de Miranda Junior. Alguns Padrões de Projeto Gamma Pasteur Ottoni de Miranda Junior Alguns Padrões de Projeto Gamma Padrões Gamma de Projeto(ou Gang-of-Four, gof) Os padrões gof foram publicados por Erich Gamma, Richard Helm, Ralph Johnson e John Vlissides

Leia mais

Proposta para a Implementação do Cadastro de um Log de Auditoria Baseada em Padrões de Projeto

Proposta para a Implementação do Cadastro de um Log de Auditoria Baseada em Padrões de Projeto FACULDADE CAMPO LIMPO PAULISTA BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO Trabalho de Diplomação Gabriel Augusto Gimenes 9881 André Marcos Silva (Orientador) Trabalho de Diplomação Proposta para a Implementação

Leia mais

Uma Noção Intuitiva dos Padrões de Desenho de Software

Uma Noção Intuitiva dos Padrões de Desenho de Software 1 1 Uma Noção Intuitiva dos Padrões de Desenho de Software Prof. Dr. Italo S. Vega italo@pucsp.br 5 de dezembro de 2001 São Paulo, SP 2 Agenda Motivação (5 min.) Padrões (20 min.) Exemplo (10 min.) Conclusões

Leia mais

Programação com Objectos

Programação com Objectos Programação com Objectos PADRÕES DE DESENHO Classificaçã Objectivo Criação Estrutura Comportamento Introdução Alguns Padrões de Desenho Classe Factory Method Adapter Interpreter Template Method O que é

Leia mais

Desafios na construção de um Framework de acesso a dados em PHP

Desafios na construção de um Framework de acesso a dados em PHP 4 5 Desafios na construção de um Framework de acesso a dados em PHP Dimas Ferreira Vidal O presente artigo procura mostrar os principais desafios no processo de desenvolvimento do framework PHPO2_DB de

Leia mais

ENGENHARIA DE SOFTWARE Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br

ENGENHARIA DE SOFTWARE Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br - MÓDULO 3 - MODELAGEM DE SISTEMAS ORIENTADA A OBJETOS COM UML 1. INTRODUÇÃO A partir de 1980, diversos métodos de desenvolvimento de sistemas surgiram para apoiar o paradigma orientado a objetos com uma

Leia mais

Uma Introdução aos Padrões de Projeto com Java. Roberto Willrich INE-CTC-UFSC

Uma Introdução aos Padrões de Projeto com Java. Roberto Willrich INE-CTC-UFSC Uma Introdução aos Padrões de Projeto com Java Roberto Willrich INE-CTC-UFSC 1 Introdução aos Padrões de Projeto Programação Introdução Motivação, Definição, Características, Histórico Descrição de um

Leia mais

Programação Orientada a Objetos Padrões de Projeto (design patterns) Fernando Vanini IC - UNICAMP

Programação Orientada a Objetos Padrões de Projeto (design patterns) Fernando Vanini IC - UNICAMP Programação Orientada a Objetos Padrões de Projeto (design patterns) Fernando Vanini IC - UNICAMP Padrões de Projeto (design patterns) Apresentação do conceito de design pattern Classificação dos design

Leia mais

OO IMPACTO DA UTILIZAÇÃO DE DESIGN

OO IMPACTO DA UTILIZAÇÃO DE DESIGN OO IMPACTO DA UTILIZAÇÃO DE DESIGN PATTERNS NAS MÉTRICAS E ESTIMATIVAS DE PROJETOS DE SOFTWARE: a utilização de padrões tem alguma influência nas estimativas? Ricardo Alexsandro de Medeiros Valentim 1

Leia mais

Técnicas de Programação Avançada TCC-00175 Profs.: Anselmo Montenegro www.ic.uff.br/~anselmo

Técnicas de Programação Avançada TCC-00175 Profs.: Anselmo Montenegro www.ic.uff.br/~anselmo Técnicas de Programação Avançada TCC-00175 Profs.: Anselmo Montenegro www.ic.uff.br/~anselmo Conteúdo:Introdução a Frameworks para Aplicações Baseado em Building Application Frameworks Mohamed E. Fayad

Leia mais

Modelos de Sistema. 2007 by Pearson Education. Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 8 Slide 1.

Modelos de Sistema. 2007 by Pearson Education. Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 8 Slide 1. Modelos de Sistema Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 8 Slide 1 Objetivos Explicar por que o contexto de um sistema deve ser modelado como parte do processo de RE Descrever

Leia mais

Table 1. Dados do trabalho

Table 1. Dados do trabalho Título: Desenvolvimento de geradores de aplicação configuráveis por linguagens de padrões Aluno: Edison Kicho Shimabukuro Junior Orientador: Prof. Dr. Paulo Cesar Masiero Co-Orientadora: Prof a. Dr. Rosana

Leia mais

SCE 186- Engenharia de Software

SCE 186- Engenharia de Software Reuso de Software SCE 186- Engenharia de Software Profa Rosana T. Vaccare Braga (parte do material elaborado com base no tutorial sobre reuso da Profa. Claudia Werner) 1 Sumário Introdução Benefícios X

Leia mais

MedEl: Uma solução de E-Learning utilizando tecnologia Microsoft ASP.NET

MedEl: Uma solução de E-Learning utilizando tecnologia Microsoft ASP.NET MedEl: Uma solução de E-Learning utilizando tecnologia Microsoft ASP.NET Átila Correia Cunha 1, 2, Glaucon Henrique Mauricio Maia 1, 2, Waner Ferreira Tavares 1, 2, Jorge Bergson¹, Rui Gomes Patrício 3

Leia mais

Projeto de Arquitetura

Projeto de Arquitetura Projeto de Arquitetura Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 11 Slide 1 Objetivos Apresentar projeto de arquitetura e discutir sua importância Explicar as decisões de projeto

Leia mais

Padrões de Desenho. ---------Engenharia de Software---------

Padrões de Desenho. ---------Engenharia de Software--------- Padrões de Desenho Objectivos: Compreender o que são os padrões de desenho? Vantagens e desvantagens em usar os padrões de desenho? Qual o formato de um padrão de desenho? Conhecer as varias secções de

Leia mais

Flávio Pernes de Medeiros

Flávio Pernes de Medeiros Flávio Pernes de Medeiros METODOLOGIA DA PESQUISA II Rio de Janeiro Flávio Pernes de Medeiros Março de 2011 Agradecimentos A minha família em especial minha esposa Newli Maura e filhos Bruno e Nicole.

Leia mais

Padrões. Identificando padrões

Padrões. Identificando padrões Padrões Padrões são soluções para problemas específicos que ocorrem de forma recorrente em um determinado contexto que foram identificados a partir da experiência coletiva de desenvolvedores de software.

Leia mais

Refatoração de sistemas Java utilizando padrões de projeto: um estudo de caso

Refatoração de sistemas Java utilizando padrões de projeto: um estudo de caso UNIVERSIDADE FEDERAL DE SÃO CARLOS CENTRO DE CIÊNCIAS EXATAS E DE TECNOLOGIA PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO Refatoração de sistemas Java utilizando padrões de projeto: um estudo de

Leia mais

Padrões Comportamentais

Padrões Comportamentais Padrões Comportamentais Formulário para Descrição de Padrões Nome e Classificação Intenção Também Conhecido Como Motivação Aplicabilidade Estrutura Participantes Colaboradores Conseqüências Implementação

Leia mais

Padrões de Design. Jair C Leite

Padrões de Design. Jair C Leite Padrões de Design Jair C Leite Padrões Padrões são soluções para problemas específicos que ocorrem de forma recorrente em um determinado contexto que foram identificados a partir da experiência coletiva

Leia mais

Padrões Arquiteturais e de Integração - Parte 1

Padrões Arquiteturais e de Integração - Parte 1 1 / 58 - Parte 1 Erick Nilsen Pereira de Souza T017 - Arquitetura e Design de Aplicações Análise e Desenvolvimento de Sistemas Universidade de Fortaleza - UNIFOR 11 de fevereiro de 2015 2 / 58 Agenda Tópicos

Leia mais

Programa do Módulo 2. Processo Unificado: Visão Geral

Programa do Módulo 2. Processo Unificado: Visão Geral 9.1 Programa do Módulo 2 Orientação a Objetos Conceitos Básicos Análise Orientada a Objetos (UML) O Processo Unificado (RUP) Processo Unificado: Visão Geral 9.2 Encaixa-se na definição geral de processo:

Leia mais

PRD Tecnologia de Gestão Ltda. Julho/2008

PRD Tecnologia de Gestão Ltda. Julho/2008 O Processo de Desenvolvimento Telescope Julho/2008 Página 1 Sumário Introdução...3 O desenvolvimento de software tradicional...3 O problema da produtividade...3 O problema da portabilidade...6 O problema

Leia mais

SOFTWARE PATTERNS: FUNDAMENTOS, TIPOS E DESCRIÇÃO Sérgio Teixeira de Carvalho

SOFTWARE PATTERNS: FUNDAMENTOS, TIPOS E DESCRIÇÃO Sérgio Teixeira de Carvalho SOFTWARE PATTERNS: FUNDAMENTOS, TIPOS E DESCRIÇÃO Sérgio Teixeira de Carvalho Sérgio Teixeira de Carvalho SOFTWARE PATTERNS: FUNDAMENTOS, TIPOS E DESCRIÇÃO Sérgio Teixeira de Carvalho 1 Resumo Especialistas,

Leia mais

Framework para jogos de cartas

Framework para jogos de cartas Framework para jogos de cartas por André Luís Knabben e Thiago Robert Professor Doutor Ricardo Pereira e Silva Orientador Resumo Projetar artefatos de software visando a reusabilidade é uma tarefa complexa.

Leia mais

Padrões de Projeto. Bibliografia. Nomenclatura

Padrões de Projeto. Bibliografia. Nomenclatura Padrões de Projeto Prof. Maria Augusta Vieira Nelson PUC Minas Prof. Torsten Paul Nelson 1 Bibliografia LARMAN, Graig. Utilizando UML e Padroes:Uma introdução a análise e ao projeto orientados a objetos.

Leia mais

Especialização em web com interfaces ricas

Especialização em web com interfaces ricas Especialização em web com interfaces ricas Padrões de Projeto - Comportamentais Prof. Fabrízzio Alphonsus A. M. N. Soares fabrizzio@inf.ufg.br professor.fabrizzio@gmail.com Instituto de Informática Universidade

Leia mais

Conteúdo. Disciplina: INF 02810 Engenharia de Software. Monalessa Perini Barcellos. Centro Tecnológico. Universidade Federal do Espírito Santo

Conteúdo. Disciplina: INF 02810 Engenharia de Software. Monalessa Perini Barcellos. Centro Tecnológico. Universidade Federal do Espírito Santo Universidade Federal do Espírito Santo Centro Tecnológico Departamento de Informática Disciplina: INF 02810 Prof.: (monalessa@inf.ufes.br) Conteúdo 1. Introdução 2. Processo de Software 3. Gerência de

Leia mais

Eduardo Bezerra. Editora Campus/Elsevier

Eduardo Bezerra. Editora Campus/Elsevier Princípios de Análise e Projeto de Sistemas com UML 2ª edição Eduardo Bezerra Editora Campus/Elsevier Capítulo 8 Modelagem de classes de projeto A perfeição (no projeto) é alcançada, não quando não há

Leia mais

DISCIPLINA: INGLÊS TÉCNICO E INSTRUMENTAL II CARGA HORÁRIA: 33 HORAS PERÍODO: 3º SEMESTRE LETIVO: 2012.2 CRÉDITOS: 02

DISCIPLINA: INGLÊS TÉCNICO E INSTRUMENTAL II CARGA HORÁRIA: 33 HORAS PERÍODO: 3º SEMESTRE LETIVO: 2012.2 CRÉDITOS: 02 DISCIPLINA: INGLÊS TÉCNICO E INSTRUMENTAL II CARGA HORÁRIA: 33 HORAS PERÍODO: 3º SEMESTRE LETIVO: 2012.2 CRÉDITOS: 02 OBJETIVOS Ler e compreender textos de gêneros diversos utilizando as estratégias/técnicas

Leia mais

Padrões de Projeto em Desenvolvimento Web SCC 266. Prof. Renata Pontin M. Fortes renata@icmc.usp.br PAE: Willian Watanabe (watinha@gmail.

Padrões de Projeto em Desenvolvimento Web SCC 266. Prof. Renata Pontin M. Fortes renata@icmc.usp.br PAE: Willian Watanabe (watinha@gmail. Padrões de Projeto em Desenvolvimento Web SCC 266 Prof. Renata Pontin M. Fortes renata@icmc.usp.br PAE: Willian Watanabe (watinha@gmail.com) 2.semestre 2010 Instituto de Ciências Matemáticas e de Computação

Leia mais

Notas da Aula 15 - Fundamentos de Sistemas Operacionais

Notas da Aula 15 - Fundamentos de Sistemas Operacionais Notas da Aula 15 - Fundamentos de Sistemas Operacionais 1. Software de Entrada e Saída: Visão Geral Uma das tarefas do Sistema Operacional é simplificar o acesso aos dispositivos de hardware pelos processos

Leia mais

Banco de Dados Aula 1 Introdução a Banco de Dados Introdução Sistema Gerenciador de Banco de Dados

Banco de Dados Aula 1 Introdução a Banco de Dados Introdução Sistema Gerenciador de Banco de Dados Banco de Dados Aula 1 Introdução a Banco de Dados Introdução Um Sistema Gerenciador de Banco de Dados (SGBD) é constituído por um conjunto de dados associados a um conjunto de programas para acesso a esses

Leia mais

Profa. Thienne Johnson

Profa. Thienne Johnson Profa. Thienne Johnson E. Gamma and R. Helm and R. Johnson and J. Vlissides. Design Patterns - Elements of Reusable Object-Oriented Software. Addison- Wesley, 1995. Conhecido como GoF (Gang of Four) Versão

Leia mais

Garbage Collection. Automatic Garbage Collection. Introdução. Fontes

Garbage Collection. Automatic Garbage Collection. Introdução. Fontes Fontes Garbage Collection Compiladores II 1 Modern Compiler Implementation in java: capítulo 13 Artigos : Garbage Collection in an Uncooperative Environment de Boehm e Weiser (Software Practice and Experience

Leia mais

Flexibilidade e Reusabilidade em Sistemas Orientados a Objetos - Uma Proposta para Implementação no EB

Flexibilidade e Reusabilidade em Sistemas Orientados a Objetos - Uma Proposta para Implementação no EB Flexibilidade e Reusabilidade em Sistemas Orientados a Objetos - Uma Proposta para Implementação no EB GLAUBER VOLKMER SILVIO DANILO DE OLIVEIRA MARÇAL DE LIMA HOKAMA Resumo. Os padrões de projetos tratam

Leia mais

Algumas propriedades dos objetos:

Algumas propriedades dos objetos: Orientação a Objetos Vivemos num mundo de objetos. Esses objetos existem na natureza, nas entidades feitas pelo homem, nos negócios e nos produtos que usamos. Eles podem ser categorizados, descritos, organizados,

Leia mais

Um Arcabouço open source em Python para DBC com

Um Arcabouço open source em Python para DBC com Um Arcabouço open source em Python para DBC com Suporte à Evolução Dinâmica não Antecipada Yguaratã C. Cavacanti 1, Hyggo Oliveira de Almeida 1, Evandro Costa 2 1 Instituto de Computação Universidade Federal

Leia mais

Teste de software. Definição

Teste de software. Definição Definição O teste é destinado a mostrar que um programa faz o que é proposto a fazer e para descobrir os defeitos do programa antes do uso. Quando se testa o software, o programa é executado usando dados

Leia mais

Estilos Arquiteturais. Estilos Arquiteturais. Exemplos de Estilos Arquiteturais. Estilo: Pipe e Filtros

Estilos Arquiteturais. Estilos Arquiteturais. Exemplos de Estilos Arquiteturais. Estilo: Pipe e Filtros Em geral sistemas seguem um estilo, ou padrão, de organização estrutural Os estilos diferem: nos tipos de componentes que usa na maneira como os componentes interagem com os outros (regras de interação)

Leia mais

Com relação às áreas de conhecimento de projetos conforme o. PMBoK, julgue os itens subseqüentes.

Com relação às áreas de conhecimento de projetos conforme o. PMBoK, julgue os itens subseqüentes. De acordo com o comando a que cada um dos itens de 1 a 70 se refira, marque, na folha de respostas, para cada item: o campo designado com o código C, caso julgue o item CERTO; ou o campo designado com

Leia mais

1 UML (UNIFIED MODELING LANGUAGE)

1 UML (UNIFIED MODELING LANGUAGE) 1 UML (UNIFIED MODELING LANGUAGE) Segundo Tonsig (2003), para conseguir desenvolver um software capaz de satisfazer as necessidades de seus usuários, com qualidade, por intermédio de uma arquitetura sólida

Leia mais

Programação Orientada a Objetos Prof. Rone Ilídio UFSJ/CAP

Programação Orientada a Objetos Prof. Rone Ilídio UFSJ/CAP Programação Orientada a Objetos Prof. Rone Ilídio UFSJ/CAP 1) Introdução Programação Orientada a Objetos é um paradigma de programação bastante antigo. Entretanto somente nos últimos anos foi aceito realmente

Leia mais

Orientação a Objetos

Orientação a Objetos Orientação a Objetos Daniel Destro do Carmo Softech Network Informática daniel@danieldestro.com.br Histórico A orientação a objetos (OO) foi concebida na década de 70. Origem na linguagem SIMULA-67 (década

Leia mais

Organização e Arquitetura de Computadores I. de Computadores

Organização e Arquitetura de Computadores I. de Computadores Universidade Federal de Campina Grande Unidade Acadêmica de Sistemas e Computação Curso de Bacharelado em Ciência da Computação Organização e Arquitetura de Computadores I Organização Básica B de Computadores

Leia mais

Programação Orientada a Objetos

Programação Orientada a Objetos Programação Orientada a Objetos Universidade Católica de Pernambuco Ciência da Computação Prof. Márcio Bueno poonoite@marciobueno.com Fonte: Material da Profª Karina Oliveira Introdução ao Paradigma OO

Leia mais

ILUSTRANDO PADRÕES DE IMPLEMENTAÇÃO DE PROJETOS BASEADOS EM OBJETOS

ILUSTRANDO PADRÕES DE IMPLEMENTAÇÃO DE PROJETOS BASEADOS EM OBJETOS ILUSTRANDO PADRÕES DE IMPLEMENTAÇÃO DE PROJETOS BASEADOS EM OBJETOS ANDREIA TRAVAGLIA Uberlândia, Dezembro/2001. ILUSTRANDO PADRÕES DE IMPLEMENTAÇÃO DE PROJETOS BASEADOS EM OBJETOS ANDREIA TRAVAGLIA Monografia

Leia mais

Padrões de Projeto Implementados em Infraestrturas de Componentes

Padrões de Projeto Implementados em Infraestrturas de Componentes Padrões de Projeto Implementados em Infraestrturas de Componentes Paulo Pires paulopires@nce.ufrj.br http//genesis.nce.ufrj.br/dataware/hp/pires 1 distribuídas baseadas em componentes Comunicação transparente,

Leia mais

Análise e Projeto Orientados por Objetos

Análise e Projeto Orientados por Objetos Análise e Projeto Orientados por Objetos Aula 07 Padrões GoF (Command e Template Method) Edirlei Soares de Lima Padrões GoF Criação: Abstract Factory Builder Factory Method Prototype

Leia mais

FERRAMENTAS NECESSÁRIAS PARA O DESENVOLVIMENTO EM C#

FERRAMENTAS NECESSÁRIAS PARA O DESENVOLVIMENTO EM C# FERRAMENTAS NECESSÁRIAS PARA O DESENVOLVIMENTO EM C# Camila Sanches Navarro 1,2, Willian Magalhães 2 ¹Universidade paranaense (Unipar) Paranavaí PR Brasil sanchesnavarro@gmail.com wmagalhaes@unipar.br

Leia mais

Orientação a Objeto e UML Questões 2014 Prof. Felipe Leite

Orientação a Objeto e UML Questões 2014 Prof. Felipe Leite Orientação a Objeto e UML Questões 2014 Prof. Felipe Leite Pessoal, fiz uma coletânea das questões mais recentes de concursos públicos de TODO o Brasil de várias bancas diferentes sobre os assuntos Orientação

Leia mais

PROVA DE NÍVEL SUPERIOR. CARGO: Técnico de Nível Superior Júnior II - TECNOLOGIA DA INFORMAÇÃO

PROVA DE NÍVEL SUPERIOR. CARGO: Técnico de Nível Superior Júnior II - TECNOLOGIA DA INFORMAÇÃO PROVA DE NÍVEL SUPERIOR CARGO: Técnico de Nível Superior Júnior II - TECNOLOGIA DA INFORMAÇÃO 1. O ambiente Delphi suporta o desenvolvimento de aplicações orientadas a objetos por meio da linguagem Object

Leia mais

ESTUDO COMPARATIVO DE BIBLIOTECAS GRÁFICAS I TEGRADAS COM OPE GL

ESTUDO COMPARATIVO DE BIBLIOTECAS GRÁFICAS I TEGRADAS COM OPE GL ESTUDO COMPARATIVO DE BIBLIOTECAS GRÁFICAS I TEGRADAS COM OPE GL Francisco Tiago Avelar, Vitor Conrado F. Gomes, Cesar Tadeu Pozzer Universidade Federal de Santa Maria UFSM Curso de Ciência da Computação

Leia mais

Frameworks. Pasteur Ottoni de Miranda Junior

Frameworks. Pasteur Ottoni de Miranda Junior Frameworks Pasteur Ottoni de Miranda Junior 1-Definição Apesar do avanço das técnicas de desenvolvimento de software, a construção de software ainda é um processo extremamente complexo.a reutilização tem

Leia mais

BANCO DE DADOS. Introdução a Banco de Dados. Conceitos BásicosB. Engenharia da Computação UNIVASF. Aula 1. Breve Histórico

BANCO DE DADOS. Introdução a Banco de Dados. Conceitos BásicosB. Engenharia da Computação UNIVASF. Aula 1. Breve Histórico Banco de Dados // 1 Banco de Dados // 2 Conceitos BásicosB Engenharia da Computação UNIVASF BANCO DE DADOS Aula 1 Introdução a Banco de Dados Campo representação informatizada de um dado real / menor unidade

Leia mais

Programação com Objectos. Programação Centrada em Objectos. Home Page. Ano Lectivo 2008/2009 1º Semestre. Objectivos Programa Bibliografia Avaliação

Programação com Objectos. Programação Centrada em Objectos. Home Page. Ano Lectivo 2008/2009 1º Semestre. Objectivos Programa Bibliografia Avaliação Última actualização: 25 de Outubro de 2008 Ano Lectivo 2008/2009 1º Semestre ção com Objectos ção Centrada em Objectos Docente: Paulo Leocádio Web: www.uac.pt/~pleocadio E-mail: pleocadio@uac.pt : Competências:

Leia mais

Padrões de Projeto WEB e o MVC

Padrões de Projeto WEB e o MVC Padrões de Projeto WEB e o MVC Padrões de Projeto WEB e o MVC O que são padrões? "Cada padrão descreve um problema que ocorre freqüentemente em seu ambiente, e então descreve o cerne da solução para aquele

Leia mais

Suporte à Engenharia Reversa para o ambiente SEA

Suporte à Engenharia Reversa para o ambiente SEA Otavio Pereira Suporte à Engenharia Reversa para o ambiente SEA Orientador: Ricardo Pereira e Silva Universidade Federal de Santa Catarina - UFSC Departamento de Informática e Estatística - INE Florianópolis

Leia mais

Visão do Usuário da DSM

Visão do Usuário da DSM Memória Compartilhada Distribuída Visão Geral Implementação Produtos 1 Memória Compartilhada Distribuída Mecanismos tradicionais de comunicação via RPC/RMI ou mensagens deixam explícitas as interações

Leia mais

Um sistema é constituído de um conjunto de processos que executam seus respectivos códigos do sistema operacional e processos e códigos de usuários.

Um sistema é constituído de um conjunto de processos que executam seus respectivos códigos do sistema operacional e processos e códigos de usuários. Os sistemas computacionais atuais permitem que diversos programas sejam carregados na memória e executados simultaneamente. Essa evolução tornou necessário um controle maior na divisão de tarefas entre

Leia mais

PROJETO DE REDES www.projetoderedes.com.br

PROJETO DE REDES www.projetoderedes.com.br PROJETO DE REDES www.projetoderedes.com.br Centro Universitário de Volta Redonda - UniFOA Curso Tecnológico de Redes de Computadores 5º período Disciplina: Tecnologia WEB Professor: José Maurício S. Pinheiro

Leia mais

PADRÕES DE PROJETO EM OOERLANG UNIVERSIDADE DO ESTADO DO AMAZONAS - UEA. Manaus ESCOLA SUPERIOR DE TECNOLOGIA ENGENHARIA DE COMPUTAÇÃO

PADRÕES DE PROJETO EM OOERLANG UNIVERSIDADE DO ESTADO DO AMAZONAS - UEA. Manaus ESCOLA SUPERIOR DE TECNOLOGIA ENGENHARIA DE COMPUTAÇÃO UNIVERSIDADE DO ESTADO DO AMAZONAS - UEA ESCOLA SUPERIOR DE TECNOLOGIA ENGENHARIA DE COMPUTAÇÃO WILLIAM BREMGARTNER BELLEZA PADRÕES DE PROJETO EM OOERLANG Manaus 2013 WILLIAM BREMGARTNER BELLEZA PADRÕES

Leia mais

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação SOFT DISCIPLINA: Engenharia de Software AULA NÚMERO: 10 DATA: / / PROFESSOR: Andrey APRESENTAÇÃO O objetivo desta aula é apresentar e discutir os conceitos de coesão e acoplamento. DESENVOLVIMENTO Projetar

Leia mais

a) O Sprint deve ser realizado num período máximo de 40 dias e ter uma equipe de trabalho não superior a 10 pessoas.

a) O Sprint deve ser realizado num período máximo de 40 dias e ter uma equipe de trabalho não superior a 10 pessoas. Modelos de Ciclo de Vida e Metodologias de Software 54. Um dos principais conceitos do Scrum para atacar a complexidade do desenvolvimento e gerenciamento de software é a implantação de um controle descentralizado,

Leia mais

Capítulo 1. Introdução. 1.1 Linguagens. OBJETIVOS DO CAPÍTULO Ao final deste capítulo você deverá ser capaz de:

Capítulo 1. Introdução. 1.1 Linguagens. OBJETIVOS DO CAPÍTULO Ao final deste capítulo você deverá ser capaz de: i Sumário 1 Introdução 1 1.1 Linguagens....................................... 1 1.2 O que é um Compilador?................................ 2 1.3 Processadores de Programas: Compiladores, Interpretadores

Leia mais

Orientação a Objetos

Orientação a Objetos 1. Domínio e Aplicação Orientação a Objetos Um domínio é composto pelas entidades, informações e processos relacionados a um determinado contexto. Uma aplicação pode ser desenvolvida para automatizar ou

Leia mais

C++ Instituto de Matemática Universidade Federal da Bahia Campus de Ondina Av. Ademar de Barros, Ondina 40170-110 Salvador, BA

C++ Instituto de Matemática Universidade Federal da Bahia Campus de Ondina Av. Ademar de Barros, Ondina 40170-110 Salvador, BA T++, um Mecanismo de Execução para Aplicações Web em C++ Antonio Soares de Azevedo Terceiro 1, Christina von Flach Garcia Chavez 1 1 Departamento de Ciência da Computação, Instituto de Matemática Universidade

Leia mais

PROGRAMAÇÃO AVANÇADA -CONCEITOS DE ORIENTAÇÃO A OBJETOS. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

PROGRAMAÇÃO AVANÇADA -CONCEITOS DE ORIENTAÇÃO A OBJETOS. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br PROGRAMAÇÃO AVANÇADA -CONCEITOS DE ORIENTAÇÃO A OBJETOS Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br ROTEIRO 1. Conceitos de Orientação a Objetos Introdução O paradigma da POO Classes

Leia mais

Ferramentas Web para controle e supervisão: o que está por vir

Ferramentas Web para controle e supervisão: o que está por vir Artigos Técnicos Ferramentas Web para controle e supervisão: o que está por vir Marcelo Salvador, Diretor de Negócios da Elipse Software Ltda. Já faz algum tempo que ouvimos falar do controle e supervisão

Leia mais

Engenharia de Requisitos

Engenharia de Requisitos Engenharia de Requisitos Introdução a Engenharia de Requisitos Professor: Ricardo Argenton Ramos Aula 08 Slide 1 Objetivos Introduzir a noção de requisitos do sistema e o processo da engenharia de requisitos.

Leia mais

PictureFrame: Um padrão para criação de imagens reutilizáveis

PictureFrame: Um padrão para criação de imagens reutilizáveis PictureFrame: Um padrão para criação de imagens reutilizáveis Paulo A. S. Costa 1,2,3, Ismayle S. Santos 1,2,3, Rossana M. C. Andrade 1,2,4 1 Grupo de Redes, Engenharia de Software e Sistemas - GREaT 2

Leia mais