Uma visão geral Grupo: Alexandre Henrique Vieira Soares

Slides:



Advertisements
Apresentações semelhantes
Orientação a objetos identidade abstração classificação encapsulamento
Advertisements

Análise e Projeto Orientado a Objetos
Desenvolvimento de aplicativos Orientados a Objetos: Definição e Características THIAGO IDEALI.
Controles Gerais Prof.: Cheila Bombana. Controles Gerais Prof.: Cheila Bombana.
Como planejar a equipe e criar casos de testes OO
Engenharia de Software
Desenvolvimento de Software Orientado por Aspectos Autores: 4033 – Daniel Grilo 4223 – Nelson Rodgrigues Autores: 4033 – Daniel Grilo 4223 – Nelson Rodgrigues.
BANCO DE DADOS Transparências baseadas no capítulo 1 do livro de KORTH e SILBERCHATZ e 1 e 2 do livro de ELMASRI e NAVATHE. Juliana Amaral e Rodrigo Baroni.
Identificando requisitos
Engenharia de Software
Processos de Software Introdução
Implementação de um Sistema de Informações Georeferenciado (Geoufes) Utilizando Bibliotecas de Software Livres em Java Aluno: Geraldo Angelo Vassoler Orientador:
Centrado na arquitetura
Projeto de Sistemas de Software
Simulador de uma "Coke Machine" utilizando Coke Machine Simulator
Projeto Arquitetural de Software Orientado a Aspectos
Metodologias Orientadas a Agentes
Processo de Reengenharia Prático Pós- Graduação Pós- Graduação Karolyne Almeida Siqueira Michael Caldas da Silva.
Introdução ao paradigma de programação: Orientado a Objetos
Introdução a diagrama de classes e UML
Conceitos Básicos Dado: fato do mundo real que está registrado e possui um significado implícito no contexto de um domínio de aplicação Exemplos: endereço,
Professor: Rogério Lopes Disciplina: Engenharia de Software II Fortium Sistemas da Informação Engenharia de Software II.
Análise Estruturada O mais amplamente usado dos métodos de modelagem de requisitos Modelos que retratam fluxo e o conteúdo da informação (dados e controle)
Tecnologia da Informação Orientação a Aspectos
TIPOS DE TESTES APLICÁVEIS E NÃO APLICÁVEIS AO PROJETO
PROGRAMAÇÃO ORIENTADA A ASPECTOS EM JAVA Introdução a conceitos teóricos e práticos Adriano G. do Prado José Eduardo M. Lemos José Fernando da S. Cruz.
Princípios e Conceitos de Software(v2)
Separation of Concerns (SoC)
Aluno: Mário Monteiro Orientador: Sérgio Soares 1.
A NÁLISE Q UANTITATIVA DA I MPLEMENTAÇÃO DE T RATAMENTO DE E XCEÇÕES NA L INGUAGEM P TOLEMY Aluno: Cleivson Arruda Orientador: Fernando Castor T RABALHO.
Supporting Use Case Based Requirements Engineering David Marques Filipe Garcês Ricardo Cruz.
C&L: Um Ambiente para Edição e Visualização de Cenários e Léxicos
Projeto de Sistemas de Software
Conceitos.
Fase de Elaboração: Fluxo de Requisitos
Desenvolvimento de Sistemas Orientados a Aspectos
. Smalltalk HISTÓRICO . Década de 60 – POO . Dynabook (Alan Kay)
Análise e Projeto de Sistemas
IEEE Std IEEE Melhores Práticas para Especificações de Requisitos de Software (ERS)
Métodos de Construção de Software: Orientação a Objetos
Caracterização e Objetivos das LP
Prof. Dr. Celso Socorro Oliveira (ORIENTADOR)
Middleware Orientado a Aspectos - MOA
Aspect Oriented Programming (AOP)
Programação Orientada à Objetos
Paradigmas de Linguagens de Programação Aula 2
SISTEMAS DISTRIBUIDOS Aula 4
Arquitetura de Desenvolvimento Web MVC vs. Three Tiers
UTFPR – Campus Curitiba - DAELN Cursos de Eng. Eletrônica/Eng
Documentação de Software
Endeavour Apresentação da Ferramenta. Observações a respeito da escolha da ferramenta o foco do trabalho não são as ferramentas em si, mas sim a integração.
Laboratório de Programação
Requisitos de Software
Ferramentas de Suporte a MDD: Um Quadro Comparativo
Desenvolvimento de Software Dirigido a Modelos
Introdução a Programação Orientada a Objetos
Discussing Aspects of AOP Alunos: Ezequiel Jonacir Mazza João Andrei Cetenareski Curso: Mestrado em Informática Aplicada Disciplina: Orientação a Objetos.
Equipe Equipe: Ana Carolina M. Pilatti Igor de Souza Paiva Igor de Souza Paiva Rafael Stubs Parpinelli Rafael Stubs Parpinelli Vera Lúcia Marchiori Vera.
Padrões de projeto M.Sc. Sílvio Bacalá Jr..
Mestrando: Pedro Barbosa Cordeiro Orientador: Bernardo Lula Júnior
Análise e Projeto de Sistemas Unified Modeling Language Renata Araujo Ricardo Storino Núcleo de Computação Eletrônica Curso de Programação de Computadores.
1 Linguagens de Programação Pedro Lopes 2010/2011.
TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ANÁLISE E PROJETO DE SISTEMAS Aula /08/2012 Professor Leomir J. Borba-
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA TOCANTINS Campus Araguaína XP (EXTREME PROGRAMMING) Pós-Graduação em Engenharia de Software Metodologias.
Módulo II Capítulo 1: Orientação a Objetos
UML (Unified Modeling Language) Linguagem Unificada de Modelagem
PADROES DE PROJETO PROF. OSIEL MARLON. PADRÕES DE PROJETO INTRODUÇÃO Padrões de projeto têm emergido como uma das mais promissoras abordagens para a melhoria.
Programação orientada a Aspectos Radio Manager System.
Desenvolvendo sotfware com UML1 Visão Geral de Orientação a Objetos.
18/09/ /12/20082 Testes Baseados Em Modelo Diana Rúbia Paulo César Qualidade, Processos e Gestão de Software Alexandre Vasconcelos {drrr, pco,
Transcrição da apresentação:

Uma comparação entre a Programação Orientada a Aspectos e a Programação Orientada a Componentes. Uma visão geral Grupo: Alexandre Henrique Vieira Soares Anderson de Rezende Rocha Flávio Luis Alves Júlio César Alves

Estrutura da apresentação a) Introdução b) Contexto c) Motivação d) Justificativa do tema e) Desenvolvimento do tema f) Ferramentas de desenvolvimento g) Conclusão h) Referência

Introdução -> A engenharia de software e as linguagens de programação coexistem em um relacionamento de suporte mútuo. -> A maioria dos processos de desenvolvimento de software da atualidade considera um sistema com unidades cada vez menores de desenvolvimento.

Introdução -> Uma propriedade de um sistema que deve ser implementada pode ser vista como um componente ou como um aspecto. -> A propriedade pode ser vista como um componente se puder ser encapsulada em um procedimento generalizado.

Introdução -> Aspectos são normalmente propriedades que envolvem diversas unidades de um sistema, afetando a semântica dos componentes funcionais sistematicamente. Tais como: controle de concorrência em operações em uma mesma conta bancária, registro das transações de uma determinada conta.

Introdução

Introdução -> Existem propriedades que não se enquadram em componentes da decomposição funcional. -> Seus códigos encontram-se espalhados através do código da aplicação. Isto dificulta a separação da funcionalidade básica do sistema dessas propriedades. -> Como resolver estes problemas? Programação Orientada a Aspectos (POA). Alternativa para resolver problemas que nem as técnicas de programação Orientada à Objetos e nem as técnicas de programação Estruturada resolvem facilmente.

Introdução Exemplo de um aspecto: -> O campo "Movimento" representa um Aspecto.

Contexto -> Visando a maior integração dos softwares produzidos desenvolveu-se a POA. -> Diante deste contexto a Orientação a Aspectos objetiva oferecer suporte ao programador na tarefa de separar: i) componentes dos aspectos ii) componentes entre si iii) aspectos entre si

Motivação: -> A POA complementa a POO por facilitar um outro tipo de modularidade que expande a implementação espalhada de uma responsabilidade dentro de uma simples unidade.

Por que usar a POA? -> Por que diminui a complexidade dos componentes, visto que uma parte do código fica na definição dos aspectos. -> Por estar centralizado em uma única unidade, alterações são muito mais simples, não é preciso reescrever inúmeras classes.

Por que usar a POA? -> Com a diminuição do tamanho do código dos componentes a complexidade é diminuída. -> Por ser uma forma melhor de gerenciar a complexidade dos componentes. -> Por ter menos código e ser menos complexo, está sujeito a menos erros.

Por que ninguém usa POA? -> Mesmo tendo evoluído muito a POA ainda deixa a desejar em alguns pontos: a) Como definimos o que é ou não um aspecto no nosso projeto? b) Existem metodologias para definir isso?

Justificativa do tema -> Por que o tema foi escolhido? a) Para conhecer uma nova abordagem de como montar projetos de software b) Alguém já conhecia POA? c) Alguém pretende usar POA?

Desenvolvimento do tema -> Como funciona a POA? Uma implementação básica de POA, consiste em:

Crosscutting -> A POA permite ao programador separar os interesses comuns do sistema (que fogem a típica divisão de classes). -> O comportamento que não se encaixa naturalmente dentro de um módulo de um programa é chamado comportamento que atravessa (crosscutting) o sistema, ou seja, está espalhado em várias classes. -> A POA ajuda a manter a consistência do projeto, apresentando um novo nível de modularidade: os aspectos.

Ferramentas de desenvolvimento: O Aspect-J -> AspectJ é uma linguagem de aspecto. Ela é uma extensão da linguagem Java. -> Conta com um montador (Weaver) . -> É suportado por várias IDEs . -> A maior vantagem de AspectJ é a possibilidade de implementar funcionalidades em separado da parte funcional do sistema, e automaticamente inserir ou remover tais aspectos do mesmo.

Ferramentas de desenvolvimento: O Aspect-J (exemplo)

Ferramentas de desenvolvimento: O Aspect-J (exemplo)

Ferramentas de desenvolvimento: O Aspect-J (exemplo)

Ferramentas de desenvolvimento: O Aspect-J (exemplo)

Ferramentas de desenvolvimento: O Aspect-J (exemplo)

Ferramentas de desenvolvimento: O Aspect-J (exemplo) Com POA:

Ferramentas de desenvolvimento: O Aspect-J (exemplo) Sem POA:

Conclusões -> A programação orientada a aspecto passa a fazer parte do dia-a-dia dos desenvolvedores. -> Existem detalhes que precisam ser melhor estudados. -> Falta uma metodologia.

Referências -> Pressman, Software Engeneering -> Deitel & Deitel, Java, How to Program -> www.aspectj.org -> Dissertaçao de mestrado de Eduardo Laureano, UFPE - "Persistence implementation with Aspect-J" -> Artigo de William Grosso em DrDobbs.com (DDJ.com) - "Aspect-Oriented Programming & AspectJ“