Spelling suggestions: "subject:"programação orientada a aspectos"" "subject:"programação orientada a spectos""
1 |
Aspecth: uma extensão de Haskell orientada a aspectosANDRADE, Carlos Andreazza Rego January 2005 (has links)
Made available in DSpace on 2014-06-12T16:01:06Z (GMT). No. of bitstreams: 2
arquivo7160_1.pdf: 1101431 bytes, checksum: 69c90a543a0c30de3b872aae2a3bb5a2 (MD5)
license.txt: 1748 bytes, checksum: 8a4605be74aa9ea9d79846c1fba20a33 (MD5)
Previous issue date: 2005 / Uma das principais técnicas de abstração oferecida pelas linguagens de programação atuais é a possibilidade de dividir um sistema em unidades de código que capturam suas funcionalidades. Esta abstração permite que mudanças em uma unidade em particular não se propaguem por todo sistema. No entanto, isto é apenas aplicável quando tais funcionalidades ou preocupações podem de fato ser classificadas como unidades separadas. Algumas funcionalidades ou preocupações - conhecidas como preocupações entrelaçadas (crosscutting concerns) - repercutem por todo o sistema e não podem ser definidas em módulos tradicionais. Assim, todo o código que as implementa fica espalhado e misturado por diversos módulos. O paradigma de programação orientado a aspectos (AOP) tem sido apresentado na literatura como uma maneira alternativa de implementar os crosscutting concerns de um sistema, disponibilizando construções que permitem separá-los em unidades adequadamente. Um conceito central neste paradigma é o de aspecto, que é sua unidade modular. Uma linguagem de programação orientada a aspectos é usualmente estabelecida como uma extensão de uma linguagem de programação existente, provendo ao programador tanto as unidades modulares desta linguagem (conhecida como linguagem base) quanto os aspectos. Este trabalho apresenta a linguagem AspectH, uma extensão orientada a aspectos de Haskell. AspectH implementa o mecanismo AOP de pointcuts e advice como em AspectJ e foi projetada para atuar em programas Haskell que utilizam mônadas. Por meio de AspectH, investigamos os benefícios que uma abordagem AOP pode oferecer no contexto de uma linguagem puramente funcional. Em outras palavras, pretendemos demonstrar que AOP pode fazer por Haskell e linguagens funcionais o que já faz, como exemplo, por linguagens orientadas a objetos. AspectH oferece ao programador a possibilidade de implementar os crosscutting concerns de programas monádicos em aspectos, ajudando-o a criar programas mais modulares e conseqüentemente mais legíveis, mais fáceis de manter e reusar
|
2 |
Uma abordagem para migração de aplicações monolíticas para microservices baseada em programação orientada a aspectos / An Approach for Migrating Monolithic Applications to Microservices based on Aspect-Oriented Programming (Inglês)Medeiros, Otavio Soares Cavalcante de 14 December 2018 (has links)
Made available in DSpace on 2019-03-30T00:23:41Z (GMT). No. of bitstreams: 0
Previous issue date: 2018-12-14 / Recently, organizations are facing difficulties related to the migration of their systems in production from a traditional monolithic architecture to a distributed, decoupled solution based on a set of services developed, deployed and scaled independently, called microservices. An example of success of implementation of this pattern is the Netflix software whose migration process took 10 years due to the complexity involved in migrating a solution that was already in production with a vast customer base. This work proposes an approach for migrating monolithic systems to microservices based on the concept of aspect-oriented programming that enables a simple way to implement the migration in a gradual fashion with few code changes. This enables not only to change the monolithic code gradually, but also to switch back to the monolithic easily by switching off the aspects based on configuration properties. A case study conducted demonstrates the efficiency of the approach for migrating a real monolithic application with low effort and few code changes.
Keywords: Software Engineering. Architecture. Monolithic. Microservices, Migration Process. Production. Distributed Computing / Recentemente, organizações estão enfrentando dificuldades na migração de seus sistemas em produção de um modelo arquitetural tradicional monolítico para uma arquitetura de solução distribuída e mais desacoplada baseada em um conjunto de serviços desenvolvidos, implantados e escalados de forma independente, chamados microservices. Um exemplo de sucesso de implementação deste padrão é o software Netflix cujo processo de migração levou 10 anos devido à complexidade envolvida em migrar uma solução já em produção e com uma vasta base de clientes. Este trabalho propõe uma abordagem para a migração de sistemas monolíticos para microservices baseado no conceito de programação orientada a aspectos, que permite uma maneira simples de realizar a migração de forma gradual e com poucas modificações no código do monolítico. Isso permite não apenas migrar a aplicação aos poucos, mas também voltar para o monolítico facilmente apenas através da desativação dos aspectos baseado em propriedades de configuração. Um Estudo de caso realizado demonstra a eficácia da abordagem na migração de uma aplicação real monolítica com pouco esforço e poucas modificações no código.
Palavras-Chave: Engenharia de Software. Arquitetura. Monolítico. Microservice. Processo de Migração. Produção. Computação Distribuída
|
3 |
Specifying design rules in aspect-oriented systemsCosta Neto, Alberto 05 March 2010 (has links)
Programação Orientada a Aspectos é conhecida como uma técnica para modularização
de interesses transversais. Entretanto, construções que visam apoiar a modularidade
transversal podem quebrar a modularidade de classe. Como consequência, os desenvolvedores
de classes enfrentam problemas de modificabilidade, desenvolvimento em
paralelo e entendimento, porque precisam estar conscientes da implementação dos aspectos sempre que forem desenvolver ou dar manutenção em uma classe. Ao mesmo
tempo, aspectos são vulneráveis a mudanças nas classes, já que não existe um contrato
especificando os pontos de interação entre estes elementos. Estes problemas podem ser
mitigados através de Regras de Projeto entre classes e aspectos. Nós apresentamos uma
linguagem para especificação de Regras de Projeto (LSD) e exploramos seus benefícios
desde as fases iniciais do processo de desenvolvimento, especialmente com o objetivo
de dar apoio ao desenvolvimento modular de classes e aspectos. Nós discutimos como
nossa linguagem melhora a modularidade transversal sem quebrar a modularidade de
classe. Além disso, especificamos a semântica da linguagem em Alloy. A linguagem é implementada através de uma extensão do abc (AspectBench Compiler), tornando mais
fácil expressar e checar muitas das Regras de Projeto encontradas em sistemas Orientados
a Aspectos. Nós avaliamos LSD usando o sistema Health Watcher como estudo de
caso e comparamos com abordagens existentes._________________________________________________________________________________________ ABSTRACT: Aspect-Oriented Programming is known as a technique for modularizing crosscutting concerns. However, constructs aimed to support crosscutting modularity might actually break class modularity. As a consequence, class developers face changeability, parallel
development and comprehensibility problems, because they must be aware of aspects
whenever they develop or maintain a class. At the same time, aspects are vulnerable to
changes in classes, since there is no contract specifying the points of interaction amongst these elements. These problems can be mitigated by using adequate Design Rules between classes and aspects. We present a Design Rule specification language (LSD) and explore its benefits since the initial phases of the development process, specially with the aim of supporting modular development of classes and aspects. We discuss how our language improves crosscutting modularity without breaking class modularity. Besides, we specify the language semantics in Alloy. The language is implemented through an extension of abc (AspectBench Compiler), making it easy to express and check most of the Design Rules found in Aspect-Oriented systems. We evaluate the language using the Health Watcher system as case study and compare it with existent approaches.
|
4 |
Catalogue of unexpected interactions between aspectsAguiar, Mário Rui Cabral January 2009 (has links)
Tese de mestrado integrado. Engenharia Informática e Computação. Faculdade de Engenharia. Universidade do Porto. 2009
|
5 |
"Uma ferramenta baseada em aspectos para apoio ao teste funcional de programas Java"André Dantas Rocha 22 March 2005 (has links)
A disponibilidade de ferramentas de teste de software propicia maior qualidade e produtividade para as atividades de teste. Diversas ferramentas têm sido propostas para o apoio ao teste estrutural, mas nota-se a falta de ferramentas que ofereçam suporte ao teste funcional e implementem os diversos critérios dessa técnica. Visando a preencher essa lacuna, uma ferramenta para apoio ao teste funcional de programas Java foi desenvolvida e é apresentada. A ferramenta apóia os principais critérios funcionais, tais como o Particionamento de Equivalência e Análise de Valor-limite, e oferece análise de cobertura baseada nos critérios da técnica funcional. A análise de cobertura é uma característica normalmente encontrada nas ferramentas que apóiam o teste estrutural, mas raramente disponível nas ferramentas que oferecem suporte ao teste funcional. O projeto da ferramenta é apresentado, no qual o conceito de separação de interesses é utilizado. A Programação Orientada a Aspectos é utilizada nas etapas de instrumentação e execução dos critérios de teste. O uso dessa técnica permite a separação clara entre o código de teste e o código do programa, assim como torna mais fácil a adição e remoção dos aspectos que implementam o teste, além de ser uma solução eficaz para o projeto da ferramenta. Um exemplo de uso da ferramenta é apresentado.
|
6 |
Uma abordagem genérica para gridificação de aplicações concorrentes utilizando programação orientada a aspectos / Uma Abordagem Genérica para Gridificação de Aplicações Concorrentes Utilizando Programação Orientada a Aspectos (Inglês)Barros, Marcelo Bedê 10 December 2010 (has links)
Made available in DSpace on 2019-03-29T23:27:30Z (GMT). No. of bitstreams: 0
Previous issue date: 2010-12-10 / This work presents a model for semi-automatic transformation of multi-thread applications into grid-enabled applications, focusing on algorithms that present communication and synchronization. The model uses Java threads and aspect-oriented programming to convert threads into grid tasks, maintaining the state of shared objects during the execution. In this work we also present performance and ease of use evaluation results. Keywords: Software Engineering, Distributed Systems, Grid Computing, Aspect Oriented Programming / Este trabalho apresenta um modelo para transformação semi-automática de aplicações multi-thread em aplicações para grades computacionais, focando em algoritmos com comunicação e sincronização entre tarefas. O modelo utiliza Java threads e programação orientada a aspectos para converter threads em tarefas para a grade, mantendo o estado de objetos compartilhados durante a execução. Neste trabalho apresentamos ainda resultados de avaliações de desempenho e facilidade de uso do modelo.
Palavras-chave: Engenharia de Software, Sistemas Distribuídos, Computação em Grade, Programação Orientada a Aspectos
|
7 |
"Uma ferramenta baseada em aspectos para apoio ao teste funcional de programas Java"Rocha, André Dantas 22 March 2005 (has links)
A disponibilidade de ferramentas de teste de software propicia maior qualidade e produtividade para as atividades de teste. Diversas ferramentas têm sido propostas para o apoio ao teste estrutural, mas nota-se a falta de ferramentas que ofereçam suporte ao teste funcional e implementem os diversos critérios dessa técnica. Visando a preencher essa lacuna, uma ferramenta para apoio ao teste funcional de programas Java foi desenvolvida e é apresentada. A ferramenta apóia os principais critérios funcionais, tais como o Particionamento de Equivalência e Análise de Valor-limite, e oferece análise de cobertura baseada nos critérios da técnica funcional. A análise de cobertura é uma característica normalmente encontrada nas ferramentas que apóiam o teste estrutural, mas raramente disponível nas ferramentas que oferecem suporte ao teste funcional. O projeto da ferramenta é apresentado, no qual o conceito de separação de interesses é utilizado. A Programação Orientada a Aspectos é utilizada nas etapas de instrumentação e execução dos critérios de teste. O uso dessa técnica permite a separação clara entre o código de teste e o código do programa, assim como torna mais fácil a adição e remoção dos aspectos que implementam o teste, além de ser uma solução eficaz para o projeto da ferramenta. Um exemplo de uso da ferramenta é apresentado.
|
8 |
Abordagem Aspecting: Migração de Sistemas OO para Sistemas OA.Ramos, Ricardo Argenton 21 May 2004 (has links)
Made available in DSpace on 2016-06-02T19:06:05Z (GMT). No. of bitstreams: 1
DissRAR.pdf: 964879 bytes, checksum: f99870bf861c3fdf768f6f369bb6fe13 (MD5)
Previous issue date: 2004-05-21 / Universidade Federal de Sao Carlos / An approach, named Aspecting, is proposed for eliciting aspects in Object Oriented
systems and subsequently re-factoring these systems as aspect oriented systems. The approach
has three phases: Understand the System Functionality, Treat the Interests and Compare the
Object Oriented System with the Aspect Oriented System. Each phase is presented with the
details to be observed by the software engineer for the migration of the systems to be made
safely and to obtain a quality product. Techniques of separation of concerns and aspect
oriented programming are used in three prospective study cases, in order to induce
formulating the approach. Guidelines are established to model the concerns identified, using
class diagrams in UML notation. Other guidelines govern the implementation of concerns as
aspects, using the Aspect J language. The use of regression tests in the system after the system
code reorganization now implemented with aspects, for checking if the original functionality
has been preserved in the migration, completes the approach. A fourth study case, for
illustrating the approach application, is also presented. / Uma abordagem denominada Aspecting é proposta para a elicitação de aspectos em
sistemas Orientados a Objetos e posterior implementação desses sistemas no paradigma
Orientado a Aspectos. A Abordagem tem três etapas distintas: Entender a Funcionalidade do
Sistema, Tratar Interesses e Comparar o Sistema Orientado a Aspectos com o Orientado a
Objetos. Cada etapa é desenvolvida apresentando os detalhes que devem ser cuidados pelo
engenheiro de software para que a migração dos sistemas seja realizada de forma segura e
obtenha-se um produto de qualidade. Técnicas de separação de interesses e de programação
Orientada a Aspectos são utilizadas em três estudos de caso para elaborar a Abordagem.
Diretrizes auxiliam a modelagem dos interesses identificados, utilizando diagrama de classes
com a notação UML. Outras Diretrizes auxiliam a implementação desses interesses em
aspectos, utilizando a linguagem AspectJ. A utilização de testes de regressão no sistema após
a reorganização do código do sistema agora implementado com aspectos, verificando que a
funcionalidade original foi preservada, completa a abordagem. Um quarto estudo de caso,
para demonstrar a aplicação da abordagem, é também realizado.
|
9 |
Design rules for increasing modularity with CaesarJEduardo Pontual de Lemos Castro, Carlos 31 January 2011 (has links)
Made available in DSpace on 2014-06-12T15:55:28Z (GMT). No. of bitstreams: 2
arquivo2238_1.pdf: 2132040 bytes, checksum: 7403ada2f7f20b6592ef20ce13dad893 (MD5)
license.txt: 1748 bytes, checksum: 8a4605be74aa9ea9d79846c1fba20a33 (MD5)
Previous issue date: 2011 / Conselho Nacional de Desenvolvimento Científico e Tecnológico / Programação Orientada a Aspectos (POA) é um mecanismo de programação proposto
para modularizar os requisitos transversais, visando um aumento na modularidade de
software. Entretanto, recentemente alguns autores tem alegado que o uso de POA quebra
a modularidade das classes. Isso acontece pois, sem o uso de interfaces apropriadas entre
classes e aspectos, diversas propriedades de um design modular, como compreensibilidade,
manutenabilidade e desenvolvimento em paralelo, são comprometidas na presença de
aspectos.
Diversas interfaces especializadas (design rules) para desacoplar classes e aspectos
foram propostas visando atenuar esse problema, como XPIs e LSD. Entretanto, tais
interfaces são específicas para a linguagem AspectJ, que possui problemas de reúso e
modularidade de aspectos. CaesarJ, por outro lado, é uma linguagem de programação
orientada a aspectos com forte suporte para reúso e modularidade de aspectos. Essa
linguagem combina as construções OA pointcut e advice com avan¸cados mecanismos de
modularização OO.
Nesse trabalho nós exploramos algumas construções de CaesarJ com o intuito de verificar
se elas podem ser utilizadas para definir Design Rules que permitam um desenvolvimento
modular de código OO e OA. Além disso, nós propomos CaesarJ+, uma extensão
de CaesarJ que foca no aumento de modularidade. Essa extensão introduz construções
que permitem impor restrições estruturais sobre os códigos OO e OA. Um compilador
para CaesarJ+, que verifica se as restrições especificadas nas Design Rules estão sendo
seguidas, e transforma o código CaesarJ+ em código CaesarJ também foi desenvolvido
nesse trabalho.
Para avaliar CaesarJ+, nós comparamos as implementações de três estudos de caso
em CaesarJ+ e CaesarJ. Nossos resultados revelam que o uso de CaesarJ+ proporciona
ganho de expressividade.
|
10 |
Structuring Adaptive Applications using AspectJDébora Dantas de Souza, Ayla January 2004 (has links)
Made available in DSpace on 2014-06-12T15:58:29Z (GMT). No. of bitstreams: 2
arquivo4584_1.pdf: 1969312 bytes, checksum: ebc699427e4ae5f379c7d0e4b5d9b28f (MD5)
license.txt: 1748 bytes, checksum: 8a4605be74aa9ea9d79846c1fba20a33 (MD5)
Previous issue date: 2004 / Os dispositivos computacionais estão se tornando ubíquos. Com um celular, atualmente,
podemos acessar e manipular informação praticamente em qualquer lugar e a qualquer
instante. Neste cenário de computação ubíqua, tem-se exigido que tais sistemas sejam
adaptativos, ou seja, tenham a capacidade de se adaptar em decorrência de mudanças
no contexto em que estão inseridos.
É importante destacar, porém, que a adaptabilidade adiciona certa complexidade ao
desenvolvimento de aplicações. Um dos problemas é que a implementação de comportamentos
adaptativos em muitos casos se entrelaça com outras preocupações da aplicação,
como apresentação, negócio e dados, levando a problemas de legibilidade que podem
prejudicar a manutenabilidade do código.
A programação orientada a aspectos pode ser usada para facilitar a resolução de
problemas relacionados a código entrela¸cado, e dar suporte ao desenvolvimento de programas
adaptativos, e ao mesmo tempo adaptáveis (fáceis de modificar) com bons níveis
de qualidade e produtividade. Essa dissertação mostra como podemos usar aspectos, em
especial em AspectJ, para estruturar aplicações adaptativas, minimizando dessa forma o
entrelaçamento de código. AspectJ é uma linguagem orientada a aspectos, de propósito
geral, e que estende a linguagem Java. Ela é voltada `a separação de preocupações. Em
nosso trabalho ela é utilizada para promover a separação da preocupação adaptabilidade ,
obtendo-se assim uma implementação modular.
Através do uso dessa linguagem, identificamos boas práticas para a estruturação de
aplicações adaptativas, as quais foram resumidas em um padrão denominado Adaptability
Aspects. Escolhemos a plataforma Java 2 Micro Edition para implementar várias
preocupações relativas a adaptabilidade, principalmente pelo fato de ser uma tecnologia
destinada a dispositivos ubíquos e com recursos limitados.
Al´em de AspectJ, analisamos também uma outra abordagem para a estruturação
de aplicações adaptativas: o uso do estilo arquitetural denominado Adaptive Object-
Models . Verificamos a partir dessa análise que ele poderia ser combinado com o nosso
padrão, e portanto, beneficiar-se com o uso de aspectos. Dessa forma, poderia-se oferecer
suporte a um conjunto maior de adaptações e ao mesmo tempo obter-se uma estrutura
ção no código mais fácil de compreender.
Por fim, avaliamos o impacto de AspectJ, através do uso do padrão Adaptability
Aspects, para implementar alguns requisitos de adaptabilidade em aplicações J2ME.
Comparamos nossa implementação com uma solução em que a implementação destes
requisitos não é tão modular e com uma outra solução utilizando padrões de projeto
puramente orientados a objeto na qual se buscava tal modularidade. Alguns dos aspectos
comparados foram tempo de execução, memória utilizada, tamanho da aplicação e de
seu código. Além de medir tais fatores, descrevemos os ganhos que a programação
orientada a aspectos pode trazer para a estruturação de aplicações adaptativas visando
obter qualidade em termos de reuso e facilidade de manutenção
|
Page generated in 0.1143 seconds