LA-WASP.07 I Latin-American Workshop on Aspect-Oriented Software Development MARISA – Uma Ferramenta para Mapeamento bidirecional de Modelos Orientados a Aspectos: Requisitos e Arquitetura de Software Ana Luisa Medeiros1, Thais Batista1, Lyrene Silva2, Leonardo Minora3 1 Departamento de Informática e Matemática Aplicada – Universidade Federal do Rio Grande do Norte (UFRN) 2 3 Universidade Estadual do Rio Grande do Norte (UERN) Centro Federal de Educação Tecnológica do Rio Grande do Norte (CEFET-RN) {analuisafdm,lyrene}@gmail.com, [email protected], [email protected] Resumo. Esse artigo apresenta MaRiSa (Mapping Requirements to Software Architecture) – uma ferramenta que realiza o mapeamento bidirecional automático entre AOV-graph e AspectualACME, e vice-versa. AOV-graph e AspectualACME são, respectivamente, modelos de requisitos orientados a aspectos, e especificações arquiteturais orientadas a aspectos. Essa ferramenta recebe um arquivo XML AOV-graph e gera um arquivo com a especificação correspondente em AspectualACME. Da mesma forma, recebe um arquivo contendo especificação AspectualACME e gera um arquivo com o código respondente em AOV-graph. Esse mapeamento é garantido devido a regras de mapeamento definidas, encapsuladas e processadas pela ferramenta. Abstract. This paper presents MaRiSa (Mapping Requirements to Software Architecture) – a tool that performs the bidirectional automatic mapping between AOV-graph and AspectualACME, and vice-versa. AOV-graph and AspectualACME are, respectively, aspect-oriented requirement models and aspect-oriented architectural specifications. This tool receives an AOV-graph XML file and generates a corresponding AspectualACME specification file. Similarly, it receives an AspectualACME specification and generates a correspondent AOV-graph specification file. This mapping is supported by the mapping rules defined and applied by the tool. 1. Introdução O desenvolvimento de software orientado a aspectos – DSOA (Filman, 2005)surgiu como uma alternativa para a modularização e composição de características transversais. Essa nova abordagem vem demonstrando benefícios no que se refere à análise, modularidade, reusabilidade e evolução do software. Contudo, maiores benefícios são obtidos quando os modelos construídos em cada etapa do desenvolvimento estão alinhados de maneira a garantir o mapeamento e rastreabilidade entre eles. AOV-graph (Silva, 2006) e AspectualACME (Batista, 2006) são estratégias orientadas a aspectos representativas de requisitos e arquitetura, respectivamente. V- 43 LA-WASP.07 I Latin-American Workshop on Aspect-Oriented Software Development graph (Yu, 2004) é um tipo de modelo de metas que provê representações para requisitos funcionais (goals e tasks) e não funcionais (softgoals) bem como captura múltiplas formas de relacionamentos entre eles. Modelos de metas explicitam a complexidade inerente desses relacionamentos e como alguns conceitos entrecortam outros. ACME (Garlan, 1997) é uma ADL de propósito geral que fornece um conjunto de elementos básicos e representativos de ADLs e um flexível mecanismo de anotação usado para incluir descrição adicional que os elementos básicos não conseguem expressar. O mapeamento de AOV-graph para AspectualACME, e vice-versa, justifica-se pois estas linguagens: (i) focam na modelagem de características transversais em diferentes etapas do desenvolvimento de software, sendo complementares; (ii) utilizam modelos de propósitos geral e baseiam-se em alguns fundamentos comuns . O objetivo desse trabalho é apresentar MaRiSa (Mapping Requirements to Software Architecture) uma ferramenta que operacionaliza o mapeamento de AOVgraph e AspectualACME, e de AspectualACME para AOV-graph. Tais mapeamentos são baseados em regras de mapeamento definidas entre as linguagens. A ferramenta oferece duas opções: (i) recebe como entrada um arquivo XML AOV-graph e gera um arquivo com a especificação correspondente em AspectualACME, ou (ii) recebe como entrada um arquivo AspectualACME e gera um arquivo XML AOV-graph. As regras de mapeamento, discutidas detalhadamente em (Silva 2007), (Medeiros 2007) são resumidamente apresentadas nesse artigo. Esse artigo está estruturado da seguinte forma. A seção 2 descreve, brevemente, AOV-Graph e AspectualACME. A seção 3 apresenta, de forma sucinta, as regras de mapeamento de AOV-graph para AspectualACME e de AspectualACME para AOVgraph, respectivamente. A seção 4 mostra a arquitetura, tecnologias utilizadas e implementação da ferramenta MaRiSA. A seção 5 contém uma comparação com trabalhos relacionados. A seção 6 apresenta os comentários finais e trabalhos futuros. 2. AOV-graph e AspectualACME Visando tratar a separação de características transversais e tratamento dos problemas de espalhamento e entrelaçamento em requisitos foi definido em (Silva, 2005) uma linguagem de modelagem que é uma extensão do modelo de metas V-graph (Yu, 2004). Essa extensão foi definida no contexto de uma estratégia orientada a aspectos para modelagem de requisitos. AOV-graph consiste de metas (goals), softmetas (softgoals) e tarefas (tasks). Metas representam objetivos ou estados concretos a serem atingidos pelo sistema; softmetas representam objetivos abstratos, freqüentemente associados a requisitos nãofuncionais; e tarefas representam ações (ou requisitos funcionais) a serem realizadas para atingir metas e softmetas. A linguagem AOV-graph também contém os seguintes relacionamentos: contribuições (contributions) que representam decomposição e correlações (correlations) que representam associações positivas ou negativas entre metas e softmetas. O relacionamento transversal foi criado com base em elementos tradicionais de DSOA por AspectJ (pointcut, advice e intertype declaration). Tais elementos possuem 44 LA-WASP.07 I Latin-American Workshop on Aspect-Oriented Software Development uma semântica diferenciada e apropriada para modularizar características transversais no nível de requisitos. Como mostrado na Figura 1, o relacionamento transversal é descrito por: (i) source - indica o ponto de origem do relacionamento; (ii) pointcut – indica os pontos de destino do relacionamento, os pontos a serem afetados por uma característica transversal; (iii) advice - indica elementos pertencentes ao ponto de origem que estão transversais aos pontos de destino, i.e., a característica transversal em si. Os tipos before, around e after podem indicar, respectivamente, pré-condição, decomposição e pós-condição no AOV-graph; e (iv) intertype declaration – define novos tipos de elementos, também transversais, que surgem com a integração das características indicadas nos pontos de origem e destino do relacionamento transversal. Há dois tipos de intertype declaration: element – quando os novos tipos referem-se a instâncias de elementos de tipos existentes no modelo de requisitos, no caso de AOVgraph referem-se a metas, softmetas e tarefas; e attribute – quando os novos tipos referem-se a atributos inexistentes no modelo de requisitos, tais como os atributos ator e custo no modelo AOV-graph. Figura 1. (a) Relacionamentos entre metas, softmetas e tarefas e (b) exemplo de relacionamento transversal em AOV-graph Na Figura 1, exemplificamos o uso do relacionamento transversal. O ponto de origem do relacionamento transversal é Persistence in (DB) e os pontos afetados são Configurability e Register.*. Através do advice e intertype declaration, indicamos que Register of operation e (DB) setting afetam todas as tarefas iniciadas pela string Register e Configurability, respectivamente. O uso do intertype declaration indica que DB setting é um elemento criado devido a junção dos conceitos persistência e configurabilidade. AspectualACME (Batista, 2006) é uma extensão da linguagem de descrição arquitetural ACME (Garlan, 1997) incluindo o conector aspectual e um mecanismo de quantificação que simplifica, sintaticamente, a referência a conjunto de pontos de junção em uma descrição arquitetural. Além disso, AspectualACME consiste de: componentes (components), conectores (connectors) e configurações (attachments). Componentes e conectores possuem interfaces associadas. A interface de um componente é o conjunto de pontos de interação entre o componente e o mundo externo. Tal interface especifica os serviços (mensagens, operações e variáveis) que um componente fornece e também os serviços requisitados de outros componentes e são comumente chamadas de portas. Conectores especificam regras que governam a interação entre componentes. A interface do conector, chamadas de papéis (roles) especifica os pontos de interação entre o conector e os componentes ligados a ele. Configurações definem a conexão de componentes com conectores. 45 LA-WASP.07 I Latin-American Workshop on Aspect-Oriented Software Development O conector aspectual define uma nova interface que distingue os papéis dos elementos internos do conector na interação transversal. Uma das partes está ligada ao componente afetado (denominado componente base) por outro componente (denominado componente aspectual). A interface do conector aspectual contém: (i) uma base role, (ii) uma crosscutting role, e (iii) uma cláusula glue. A Figura 2 contém a especificação textual e gráfica do conector aspectual. C1 C om ponent 1 A s p e c tu a l C om p on e nt C 2 C om ponent 2 K e y: P ro v id e d P o rt R e q u ire d P o r t C r o s s c u tt i n g r o l e B a s e r o le A s p e c tu a l C o n n e c to r (a) Notação Textual (b) Notação Gráfica Figura 2. Conector aspectual A Figura 2(b) mostra um exemplo de composição entre um componente (aspectual) com dois outros componentes. C1 e C2 são exemplos de conectores aspectuais. É importante ressaltar que não há uma abstração distinta para representar “aspectos” arquiteturais. Estes são representados por componentes. As cores diferentes na Figura 2 são usadas apenas para diferenciar qual componente está fazendo o papel de componente aspectual na interação transversal. Uma base role deve ser conectada a porta do componente afetado pela interação transversal – componente base - e uma crosscutting role deve ser conectada a porta do componente aspectual. O par base-crosscutting roles não impõe a restrição, comum em ADLs, de conectar portas de entrada (provided ports) e portas de saída (required ports). A crosscutting role define o local no qual o componente aspectual conecta-se ao conector. Na Figura 2(b), o conector aspectual C1 conecta a porta de entrada do componente aspectual com a porta de entrada do componente 1. A cláusula glue especifica os detalhes da conexão aspectual como, por exemplo, em que momento a interação aspectual acontece – after, before, around. O conector aspectual provê um mecanismo de quantificação que simplifica, sintaticamente, a referência a conjuntos de pontos de junção em uma descrição arquitetural. O mecanismo de quantificação é usado na configuração através do uso de wildcards (*) que representam parte do nome de componentes ou portas. A Figura 2(a) ilustra um exemplo em AspectualACME onde o componente aspectualComponent é conectado, via o conector aspectual aConnector, a todos os componentes que contenham uma porta com nome começando com prefix. Dessa forma, AOV-graph e AspectualACME tem seus elementos associados de forma que é possível propagar mudanças entre eles rapidamente e navegar do modelo de requisitos para a arquitetura, e vice-versa. 46 LA-WASP.07 I Latin-American Workshop on Aspect-Oriented Software Development 3. Regras de Mapeamento 3.1 Mapeamento AOV-Graph para AspectualACME O processo de mapeamento de AOV-graph para AspectualACME definido em (Silva, 2007), ocorre em três etapas: (i). Mapeamento da hierarquia de metas, softmetas e tarefas de AOV-graph para componentes, portas e representações (representations) de AspectualACME - Cada elemento (meta/softmeta/tarefa) de AOV-graph é mapeado para um componente ou porta de AspectualACME. Essa decisão é baseada na posição em que cada meta/softmeta/tarefa está na hieraquia: elementos que são raízes da árvore de metas são mapeados para componentes; subelementos que não são folhas (na árvore AOV-graph) são mapeados para componentes em representações, e subelementos que são folhas são mapeados para portas e são inseridos no componente pai correspondente. Para complementar, quando um componente e uma porta são gerados algumas propriedades (properties) também são inseridas para registrar a origem de cada um deles. Essas propriedades registram algumas informações sobre requisitos no modelo arquitetural e possibilitam o mapeamento inverso – de AspectualACME para AOV-graph. (ii). Mapeamento de pointcuts e intertype-declarations (element) de AOV-graph para portas e ligações (bindings) de AspectualACME - Alguns conceitos nos relacionamentos tranversais também podem ser mapeados para portas: (i) cada elemento do corpo de uma intertype declaration; (ii) cada elemento do corpo de um advice; e (iii) cada elemento de um pointcut. Semanticamente, relacionamentos transversais agrupam diversos relacionamentos entre metas, tarefas e softmetas, ou seja, eles representam as interações que, na arquitetura, são representadas por conectores ligando portas. (iii). Mapeamento de relacionamentos transversais para conectores e configurações (attachments) - Conectores e configurações também são gerados a partir do relacionamento transversal: (i) intertype declarations e advice são mapeados para conectores aspectuais, sendo que o tipo da cláusula glue é determinado pelo tipo do advice (podendo ser around, after ou before), ou pelo tipo de intertype declaration (sendo around se a intertype for do tipo element e caso contrário assumirá o valor definido pelo atributo criado); (ii) cada relação intertype declaration pointcut e advice pointcut é mapeada para uma associação de configuração de elementos, do intertype declaration para uma crosscutting role, e uma outra associação, de base role para elementos dos pointcuts. A Tabela 1 resume como os elementos de AOV-graph são transformados nos elementos de AspectualACME. Com essas regras de mapeamento é possível gerar especificações em AspectualACME a partir de descrições em AOV-graph (veja (Silva, 2007) para informações mais detalhadas. Tabela 1. Mapeamento de AOV-graph para AspectualACME AOV-graph Goal, sofgoal, task Contribution Correlation Topic Advice Intertype declaration AspectualACME Component ou port + property elementType Representation + property contributions Property correlation Property topic Aspectual connector + properties comesFrom e crossRelSource Aspectual connector + properties comesFrom e 47 LA-WASP.07 I Latin-American Workshop on Aspect-Oriented Software Development Advice type Intertype declaration do tipo element Intertype declaration do tipo attribute Source (crosscutting relationship) Pointcut Property (elemento criado para registrar informações da arquitetura) crossRelSource glueType glueType = around glueType = valor do atributo Attachment Attachment, port self + binding Property 3.2. Mapeamento AspectualACME para AOV-graph O processo que mapeia especificações em AspectualACME para modelos em AOVgraph foi definido em (Medeiros, 2007), e consiste das seguintes etapas: (i). Mapeamento de conectores aspectuais e attachments para relacionamentos transversais - cada conector aspectual é mapeado para uma relacionamento transversal com uma intertype declaration ou advice em AOV-graph. O tipo da cláusula glue é verificado e mapeado para especificar o tipo deste advice e intertype declaration, enquanto seus pointcuts e corpo são determinados pelos attachments. Para cada attachment que possui o mesmo conector ligando portas e papéis: (i) portas relacionadas com o crosscuttingRole, são mapeadas para o corpo do intertype declaration ou advice (dependendo do tipo da cláusula glue); (ii) o componente que possui esta porta é mapeado para a origem do relacionamento transversal no AOV-graph; (iii) enquanto portas ligadas ao BaseRole são mapeadas para pointcuts. No final do mapeamento é necessário reunir todos os relacionamentos transversais que possuem a mesma origem, bem como todos os pontos que são atingidos pelo mesmo intertype declaration ou advice. (ii). Mapeamento de componentes, portas, representações (representations) e propriedades para metas, tarefas ou softmetas de AOV-graph – (i) A partir das propriedades é possível identificar precisamente qual o tipo do elemento derivado de componentes ou portas, através da propriedade elementType e através da propriedade topics identificamos quais strings do nome da meta, softmeta ou tarefa deve ser posta entre colchetes. (ii) Quando informações sobre o AOV-graph não estão disponíveis – a hierarquia de componentes e portas gera uma hierarquia de softmetas e tarefas, sendo as tarefas derivadas de portas e as softmetas derivadas de componentes. Entretanto, é necessário analisar se cada um destes componentes e portas faz ou não parte do corpo de alguma intertype declaration, pois se eles fizerem, então eles não são mapeados para softmeats e tarefas, eles existirão apenas no corpo da intertype declaration. (iii). Mapeamento da propriedade correlation de AspectualACME para correlations de AOV-graph – Em AspectualACME as correlações da modelagem em AOV-graph são especificadas em propriedades. (iv). Mapeamento de conectores de AspectualACME para contribuições de AOVgraph – conectores não-aspectuais de AspectualACME representam relacionamentos entre portas que requerem serviços e portas que provêem serviços. Em AOV-graph tais relacionamentos são representados por contribuições, assim um serviço provido contribui para duas ou mais softmetas, metas e tarefas. Tendo em vista a maneira como AOV-graph foi implementado a tarefa derivada da porta provedora é distinta da tarefa derivada da porta requeredora, porque a primeira é mapeada para uma tarefa de fato, enquanto a segunda é derivada para uma referência à primeira. 48 LA-WASP.07 I Latin-American Workshop on Aspect-Oriented Software Development A Tabela 2 resume o mapeamento de AspectualACME para AOV-graph. Com estas regras é possível gerar modelos em AOV-graph a partir de especificações em AspectualACME. Tabela 2. Mapeamento AspectualACME para AOV-graph AspectualACME Component, port Representation Aspectual connector glueType Attachment Connector Property topic Property elementType Property correlations Property comesFrom Property crossRelSource Property AOV-graph Goal ou sofgoal ou task + property Contributions Advice, intertype declaration + property AdviceType, intertypeDeclarationType Pointcut, source, contribution (se não está associado a um conector aspectual) Contribution + Property Topic Determina se o elemento é uma meta, softmeta ou tarefa Correlations Determina se os conceitos transversais devem ser descritos em advice ou intertype declaration Auxilia na identificação da origem do relacionamento transversal Property 4. MaRiSA – Arquitetura e Implementação 4.1 Funcionamento MaRiSA é uma ferramenta de mapeamento e transformação entre modelos. Este processo é resumido na Figura 3 por duas entradas, o processamento de transformação e duas saídas. Uma das possibilidades de entrada é um arquivo XML AOV-graph. Nesse caso a saída é um arquivo em AspectualACME. A outra possibilidade de entrada é um arquivo contendo especificação AspectualACME, e a saída obtida é um arquivo XML AOV-graph. (a) (b) Figura 3. (a) Representação das entradas e saídas da ferramenta; (b) Processo de Funcionamento de MaRiSA. O início do funcionamento de MaRiSA acontece com o usuário selecionando a opção de mapeamento AOV-graph para AspectualACME, ou AspectualACME para AOV-graph. O usuário, após escolher a primeira opção, deve selecionar um arquivo XML AOV-graph. Em seguida a ferramenta carrega o arquivo escolhido. Essa carga é o início do mapeamento. Após esse passo as seguintes tarefas são realizadas: (i) leitura de um arquivo XML com especificações AOV-Graph e transformação em uma árvore DOM (Document Object Model); (ii) transformação da árvore DOM em um modelo de objetos AOV-graph; (iii) conversão do modelo de objetos AOV-Graph, utilizando as regras de mapeamento, para o ,modelo de objetos AspectualACME; (iv) Por fim, a transformação do Modelo de Objetos AspectualACME para arquivo .aacme. No caso do 49 LA-WASP.07 I Latin-American Workshop on Aspect-Oriented Software Development mapeamento de AspectualACME para AOV-graph os procedimentos são similares. A Figura 1(b) ilustra essas tarefas e funcionamento de MaRiSA. 4.2. Arquitetura MaRiSa está organizada em 2 (dois) principais componentes: (i) interface com o usuário; (ii) núcleo de processamento, como mostrado na Figura 4 (a). (a) (b) Figura 4. (a) Diagrama de Componentes da Macro-Arquitetura de MaRiSA; (b) Diagrama de Componentes do núcleo de MaRisa A Figura 4(b) mostra os componentes do núcleo de MaRiSA, e as dependências entre suas interfaces. O componente Leitor, caracterizado com o estereótipo equivalente as linguagens, no caso AOV-graph. Esse leitor contém as classes Java responsáveis pela leitura do XML e estruturação da árvore DOM – formando uma hierarquia dos elementos desse XML em memória – e ainda realiza a passagem dos elementos estruturados em memória para um Modelo de Objetos de AOV-graph. O componente Transformador contém as classes responsáveis pela transformação de objetos das linguagens envolvidas, AOV-graph para AspectualACME e vice-versa. Ambas transformações são baseadas nas regras de mapeamento. O componente Escritor, também especificado com os estereótipos equivalentes as linguagens, contém as classes responsáveis pela escrita do arquivo que será gerado, contendo a especificação da linguagem que está sendo mapeada. 4.3. Implementação MaRiSa foi desenvolvida em Java (Sun Microsystems, 2007), JSE 6 (Java Standard Edition), utilizando os recursos da sua API JSE 6 para manipulação com o XML, em específico os recursos do DOM (uma especificação da World Wide Web Consortium – W3C), a biblioteca Commons Collections (Commons Collections, 2007) da Apache e a IDE (Integrated Development Environment) Eclipse em sua versão 3.2. A Figura 5(a) ilustra a tela inicial de MaRiSA relativa as opções disponíveis para mapeamento. Já na Figura5(b) está ilustrado a tela referente ao Mapeamento AOV- 50 LA-WASP.07 I Latin-American Workshop on Aspect-Oriented Software Development graph para AspectualACME. Ela é composta por quatro abas. A aba Principal representa a função de escolha e carregamento do arquivo XML AOV-graph. A aba XML representa a visualização do arquivo XML AOV-graph carregado. A aba Árvore DOM representa a estrutura do arquivo XML AOV-graph carregado e a aba AspectualACME mostra a especificação do arquivo AspectualACME gerado. (a) (b) (c) Figura 5. (a) Tela inicial do Mapeamento AOV-graph para AspectualACME; (b) Tela inicial do Mapeamento AOV-graph para AspectualACME. A Figura 5(c) representa a tela inicial de MaRisa relativa ao Mapeamento AspectualACME. Nessa tela existem três abas. A aba Principal ilustra a opção de escolha e carregamento do Arquivo AspectualACME. A aba AspectualACME representa a visualização do arquivo AspectualACME carregado e a aba XML AOV-graph mostra o código AOV-graph gerado. A Figura 6(a) mostra um trecho de código do XML AOV-graph escolhido pelo usuário e carregado pela ferramenta. Nesse caso, a ferramenta encapsula as regras de mapeamento, mencionadas resumidamente na seção 3, processa essas regras e gera um arquivo contendo especificação AspectualACME. Na Figura 6(b) está representado o trecho de código correspondente em AspectualACME ao trecho inicial do AOV-graph. A Figura 6(c) mostra um trecho de código do arquivo AspectualACME carregado, e na Figura 6(d) está sua correspondência e mapeamento em XML AOV-graph (ver seção 4). (a) (b) (c) (d) Figura 6. (a) Tela com código AOV-graph ; (b) Tela com código gerado em AspectualACME; (c) Tela com código AspectualACME; (c) Tela com código gerado em AOV-graph 51 LA-WASP.07 I Latin-American Workshop on Aspect-Oriented Software Development 5. Trabalhos Relacionados O mapeamento de requisitos para arquitetura e a rastreabilidade de artefatos desenvolvidos nestas etapas são tópicos de grande importância. (Rashid, 2003) e (Sousa, 2003) definem o mapeamento de candidatos a aspectos para funções, decisões arquiteturais ou aspectos na arquitetura. Este mapeamento é baseado somente na experiência do desenvolvedor. Em (Sousa, 2004) casos de uso aspectuais são mapeados para modelos de interação da UML. Em (Baniassad, 2004) é descrito como mapear Theme/Doc para Theme/UML. Em (Silva, 2006b) é descrito como gerar diagramas de classe a partir de modelos V-graph, como uma abordagem automática de gerar visões de modelos de requisitos. No entanto, esses trabalhos não oferecem ferramentas que implementem tais funcionalidades. Alguns trabalhos relacionados à construção de ferramentas foram observados (Maia, 2005), (Cóbe, 2006). A maioria dessas abordagens mapeia de requisitos para um modelo de projeto detalhado como, por exemplo, diagramas de classes e interações UML (Unified Modelling Language). A desvantagem dessa estratégia é que o arquiteto tem que lidar com muitos detalhes, às vezes desnecessários para alguns tipos de análise arquitetural. Por sua vez, a ferramenta MaRiSA automatiza o mapeamento bidirecional entre fases diferentes do ciclo de desenvolvimento de software, requisitos e arquitetura, e vice-versa. Assim como, trabalhos relacionados às especificações de transformaçções entre modelos que o MDD (Model Driven Development) dá suporte foram observados (Simmonds, 2005), (Sánchez, 2007). No primeiro trabalho é apresentado o Aspect Oriented Model driven Framework (AOMDF) que auxilia na separação de características pervasivas, além disso dá suporte as suas transformações em diferentes níveis de abstração usando a abordagem do MDD, e o segundo trabalho, mostra o MDD e suas transformações, inseridas e aplicadas na área de Engenharia de Requisitos Orientada a Aspectos (Early Aspects). Todavia, nossa abordagem inicial apesar de realizar transformações entre modelos, ainda não enfoca essas transformações sobre a ótica do MDD, e sim sobre mapeamento entre modelos, com especificação de regras de mapeamento de propósito geral, com intuito de mostrar a importância e possibilidade de integração entre diferentes fases do ciclo de desenvolvimento de software, apresentando uma ferramenta que dá suporte a automatização dessa integração e mapeamento. 6. Conclusões O mapeamento entre AOV-graph e AspectualACME, e vice-versa, possibilita: (i) a geração automática da arquitetura de software a partir dos requisitos e vice-versa; (ii) a correspondência entre as informações modeladas em ambos os modelos; (iii) a possibilidade de propagar mudanças realizadas nos requisitos para arquitetura e a possibilidade de realizar alguns tipos de verificação na especificação arquitetural por meio das ferramentas já existentes; (iv) o mapeamento e rastreabilidade de características transversais. Com a construção de MaRiSA houve a operacionalização e validação das regras de mapeamento.Em termos de contribuições, não há ferramenta similar para 52 LA-WASP.07 I Latin-American Workshop on Aspect-Oriented Software Development mapeamento automático entre modelos orientados a aspectos das fases iniciais de desenvolvimento. Por usar AOV-graph e AspectualACME, que são linguagens-modelos representativos da sua categoria, a ferramenta pode ser facilmente adaptada para linguagens-modelos similares. As funcionalidades de MaRiSA foram validadas em um estudo de caso tradicionalmente usado em sistemas orientados a aspectos, o sistema HealthWatcher (HW) (Soares, 2002), um sistema de informações disponibilizado via WEB que oferece ao usuário serviços relacionados ao sistema público de saúde, como o suporte a registro de reclamações, e guia de saúde para o usuário. A ferramenta MaRiSa, e seu manual de utilização, estão disponíveis em http://www.ppgsc.ufrn.br/~analuisa/marisa. Trabalhos futuros incluem a construção de ferramentas que operacionalizem regras de mapeamento definidas para outras fases do ciclo de desenvolvimento de software e utilizem os modelos de requisitos e arquitetura gerados pela ferramenta MaRiSa, assim como, o relacionamento das transformações entre modelos realizadas entre as fases do ciclo de desenvolvimento de software, sobre a ótica do MDD.. 7. Referências Baniassad, E., Clarke, S. (2004) “Theme: An approach for aspect-oriented analysis and design”. Proc. of The 7th International Conference on Software Engineering (ICSE'04), Scotland, 2004. p. 158-167. Batista, T. et al. (2006). Reflections on Architectural Connection: Seven Issues on Aspects and ADLs. Workshop on Early Aspects – Aspect-Oriented Requirements, ICSE'06, May 2006, Shanghai, China. Cóbe, R. M (2006). Janaína: Proposta de Ferramenta MDA para Obtenção de PSM’S Baseado em Diagrama de Seqüência. Trabalho de Conclusão de Curso – CEFET-RN, Natal, RN. Commons Collections (2007), http://jakarta.apache.org/commons/collections/. Filman, R.et al. (2005). Aspect-Oriented Software Development. Addison-Wesley. Garlan, D. et al (1997). “ACME: An Architecture Description Interchange Language”. Proc. CASCON’97, Nov. Maia, N. E. N. et. al (2005). Odyssey-MDA: Uma Ferramenta para transformações de modelos UML. XIX Simpósio Brasileiro de Engenharia de Software, Uberlândia, MG. Medeiros, A. L, et. al. (2007). Requisitos e Arquitetura de Software Orientada a Aspectos: Uma Integração Sinérgica. Anais do XXI Simpósio Brasileiro de Engenharia de Software, João Pessoa, Paraíba, Brazil. (accepted). Rashid, A., et al. (2003) “Modularization and composition of aspectual requirements”, Proc. of the 2nd International Conference on Aspect-Oriented Software Development, ACM, 2003. p. 11-20. Sanchéz, P., et al. (2007). “Model-Driven Development for Early Aspects”. Journal of Systems and Software. (accepted). Silva, L. (2006). Uma Estratégia Orientada a Aspectos em Modelagem de Requisitos. Tese (Doutorado) – PUC-Rio, Rio de Janeiro. Silva, L., Leite, J. (2006b) “Generating Requirements Views: A Transformation-Driven Approach”. In: Proc. of 3rd Workshop on Software Evolution through Transformations, Natal-RN, Setembro, 2006. Silva, L. et. al. (2007). On the Symbiosis of Aspect-Oriented Requirements and Architectural Descriptions. Proc. of the EarlyAspects co-located with AOSD 2007, Vancouver, Canada, March 2007. Simmonds, D., et al. (2005). "An Aspect Oriented Model Driven Framework," EDOC, vol. 151(4), p. 119-130. Soares, S. et al. (2002).: Implementing Distribution and Persistence Aspects with AspectJ. Proc. of the OOPSLA’02, (2002). pp. 174-190. Sousa, G.; SILVA, G.; Castro, J. (2003) “Adapting the NFR framework to aspect-oriented requirements engineering” Proc. of the 17th Brazilian Symposium on Software Engineering (SBES), Brasil, 2003. 53 LA-WASP.07 I Latin-American Workshop on Aspect-Oriented Software Development Sousa, G. et al. (2004) “Separation of crosscutting concerns from requirements to design: Adapting the use case driven approach”. Proc. of the Early Aspects Workshop at AOSD, England, 2004. Sun Microsystems (2007) , http://java.sun.com. Yu, Y., Leite, J., Mylopolous, J. (2004). From goals to aspects: discovering aspects from requirements goal models, Proc. of IEEE Int. Symp. on Requirements Engineering (RE'04), Japan, pp. 38-47. 54