Áreas de Pesquisa e Projetos

(English, Please!)

Programação Orientada a Aspectos, Separação de Preocupações, Refactoring

Estamos definindo um método de implementação que separa as preocupações de gerenciamento de dados, distribuição e controle de concorrência usando Programação Orientada à Aspectos. Em particular, estamos usando AspectJ para implementar essas preocupações em um sistema implementado em Java. O método deverá ajudar a conseguir melhor software com alto nível de produtividade. Estamos também investigando como a implementação da definição do método afeta a análise, design, e as atividades de teste. Experimentos estão sendo feitos para analisar os benefícios e desvantagens de AspectJ, o método de implementação e algumas estratégias para aplicar o método. Por exemplo, podemos usar uma estratégia progressiva, onde persistência, distribuição e controle de concorrência não são inicialmente considerados nas atividades de implementação, mas são gradualmente introduzidos, preservando os requisitos funcionais do sistema. Essa estratégia progressiva ajuda a diminuir o impacto causado pelas mudanças de requisitos durante o desenvolvimento e também permite um gradual teste dos preocupações

Estamos trabalhando também em padrões, guidelines e técnicas para a aplicação de Programação Orientada a Aspectos para prover adaptabilidade para sistemas já existentes ou novos. Nessa área estamos desenvolvendo experimentos para comparar soluções puramente orientadas a objetos com soluções em AspectJ em relação à capacidade de adaptação, tamanho do código e do bytecode, número de classes, modularidade, etc.

Refactorings para AspectJ também estão sendo considerados aqui.

Programação Orientada a Aspectos e Linhas de Produção de Software

Estamos investigando como modelar variação (variedade) em uma arquitetura de linha de produção usando técnicas de Programação Orientada a Aspectos. O modelo endereça tanto requisitos funcionais quanto não-funcionais e obedece a padrões de qualidade. Em particular, nossa estratégia tem como objetivo prover um método para instanciar um produto particular da linha com técnicas de POA. O suporte de ferramentas também será provido para automatizar o processo.

Refactoring e Generative Programming

Neste projeto estamos desenvolvendo JaTS, um sistema de transformação para Java, que permite a definição de novas transformações usando uma linguagem simples e declarativa. Com esta linguagem, pode-se definir novos refactorings e padrões para geração de código baseada em informações fornecidas pelo usuário. Por automatizar várias tarefas repetitivas e facilitar o uso de padrões de projeto em um sistema, o JaTS contribui para aumentar tanto a produtividade do desenvolvimento quanto a qualidade do sistema.

Refactoring e Métodos Formais

Alloy é uma linguagem declarativa de modelagem orientada a objetos similar a UML, ainda mais simples e clara. Ela é baseada em lógica de primeira ordem e na teoria relacional, e disciplinada para análise totalmente automática. Nossos objetivos são definir e prover leis de transformação para modelos Alloy, aplicando para modelos de transformação altamente adotados como os usados em Refactorings e MDA (Model-Driven Architecture). Em adição, estamos investigando o mapeamento desse modelo de transformação para transformações de programas Java, afirmando a correspondencia adequada entre modelos abstratos e código.

Como parte do projeto COOP , estamos definindo também leis algébricas para uma linguagem similar a Java e formalmente derivando refactorings dessas leis.

-- LeonardoCole - 29 Jan 2004

Topic revision: r1 - 2004-01-29 - TWikiGuest
 
This site is powered by the TWiki collaboration platformCopyright © 2008-2019 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback

mersin escort bayan adana escort bayan izmit escort ankara escort bursa escort