dc.description | 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. | |