780 likes | 935 Views
Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO. Carlos Alberto de Freitas Pereira Júnior Orientadora : Rosana Teresinha Vaccare Braga Universidade de São Paulo Instituto de Ciências Matemáticas e Computação - ICMC. Roteiro.
E N D
Geração de aplicações para linhas de produtos orientadas a aspectos com apoio da ferramenta Captor-AO Carlos Alberto de Freitas Pereira Júnior Orientadora: RosanaTeresinhaVaccare Braga Universidade de São Paulo Instituto de CiênciasMatemáticas e Computação - ICMC
Roteiro • Introdução • Revisão Bibliográfica • Gerador Captor • Desenvolvimento de LPS apoiado por geradores e aspectos • Gerador Estendido Captor-AO • Conclusão
Introdução • O crescimento da demanda e da complexidade dos sistemas de software nas últimas décadas contribuiu para o surgimento de vários problemas inerentes ao desenvolvimento de software (Pressman, 2002). • A utilização de técnicas de reúso de software permite o desenvolvimento de aplicações mais confiáveis, flexíveis, de fácil manutenção e com custo e prazos de entrega viáveis.
Introdução • O grupo de engenharia de software do ICMC tem desenvolvido diversos trabalhos relacionados à área de reúso de software. • Dentre essas técnicas pode-se citar orientação a objetos, componentes, frameworks, linguagens de padrões, geradores de aplicação, linhas de produtos e aspectos.
Introdução • Com o advento da separação avançada de interesses (Kiczales et al., 1997) surgiu a idéia de modularizar características (features) transversais. • Features transversais são as features comuns que ficam espalhadas pelas divisões ou módulos de diferentes domínios. • Notou-se que determinadas features transversais de uma linha de produtos têm potencial de reúso em diferentes domínios.
Introdução • Nesse trabalho é proposto um processo para o desenvolvimento de LPS e geração automatizada de produtos levando em consideração os interesses transversais existentes em cada domínio de aplicação. • Esse processo tem a finalidade de aumentar o reúso de características por meio da POA, permitindo que as LPS's sejam projetadas de forma mais coesa, facilitando assim, sua manutenção e evolução
Introdução • Também é apresentado um gerador de aplicações que possibilita a geração de produtos sobre combinações entre features de diferentes domínios.
Revisão Bibliográfica • A seguir são detalhados os conceitos que formam parte do embasamento necessário para a proposta apresentada: • Linhas de Produto de Software; • Geradores de Aplicações; • Programação Orientada a Aspectos. • LPS versus POA
Linhas de Produto de Software • Uma linha de produtos é um conjunto de produtos que compartilham conjuntos de requisitos em comum, mas ao mesmo tempo exibem variabilidade significativa nos requisitos (Griss, 2000). • Vários artefatos são disponibilizados para implementação das possíveis funcionalidades de um produto da linha. Um determinado produto é composto utilizando-se artefatos com diversos tipos de funcionalidades.
Linhas de Produto de Software • Segundo Griss (2001) as principais vantagens relacionadas ao uso de linhas de produto são: • Redução no custo de desenvolvimento de um produto; • Redução da mão de obra de desenvolvimento de software (dos projetos de uma família); • Redução no tempo de entrega; • Aumento na qualidade dos sistemas desenvolvidos.
Linhas de Produto de Software • Uma LMA é uma linguagem de alto nível de abstração utilizada para representar aplicações (Weiss e Lai, 1999). • O ambiente da engenharia de aplicação deve permitir a análise de especificações LMA e gerar código a partir dessas especificações.
Geradores de Aplicações • Geradores de Aplicações são sistemas de software que transformam especificações em uma aplicação (Cleaveland, 1988). • As especificações descrevem o problema ou a tarefa que deve ser realizada pelo gerador. • Geradores por composição e por compilação.
Geradores de Aplicações • Segundo Masiero e Meira (1993), pode-se classificar diferentes arquiteturas de geradores de aplicações de acordo com a capacidade de adaptação de um gerador para múltiplos domínios e/ou múltiplas aplicações. • Neste trabalho são abordados geradores capazes de gerar múltiplas aplicações em múltiplos domínios.
Programação Orientada a Aspectos • Interesses (concerns) podem ser pensados como requisitos funcionais ou não funcionais que são úteis ou precisam estar presentes nos sistemas (Dijkstra, 1976). • Interesses transversais (crosscutting concerns) são interesses cujo código espalha-se pelas divisões ou módulos do programa.
Programação Orientada a Aspectos • Na Programação Orientada a Aspectos (POA), interesses transversais podem ser modularizados por meio de uma nova unidade de encapsulamento, denominada aspecto (Kiczales et al., 1997).
Programação Orientada a Aspectos • Classes: encapsulam requisitos modulares. • Aspectos:encapsulam requisitos transversais.
Linhas de Produtos e Aspectos • Durante a condução desta pesquisa foi realizada uma uma revisão da literatura sobre trabalhos que relacionam linhas de produtos e aspectos. • Essas pesquisas foram agrupadas em quatro categorias principais: • Abordagens ad-hoc; • Abordagens sistemáticas; • Abordagens baseadas no desenvolvimento incremental; • Ferramentas.
Gerador de Aplicações Configurável Captor
Gerador Captor • O Captor é um gerador de aplicações configurável (MDMA) desenvolvido no trabalho de mestrado de Shimabukuro (2006). • Utiliza a abordagem de geração por composição.
Gerador Captor • O Captor pode ser configurado para diversos domínios diferentes, por meio de um processo que inclui: • Criar uma linguagem de modelagem de aplicações (LMA) para o domínio; • Criar os artefatos reutilizáveis desse domínio; • Criar gabaritos em XML para cada um dos artefatos reutilizáveis; • Criar um arquivo de mapeamento da LMA para os gabaritos.
Gerador Captor • A interação do Captor com o engenheiro de aplicações é realizada por meio de um conjunto de formulários organizados hierarquicamente em forma de árvore. • O engenheiro de aplicações utiliza os campos desses formulários para preencher as variabilidades do produto que está sendo gerado.
Desenvolvimento de LPS apoiado por geradores e aspectos
Desenvolvimento de LPS apoiado por geradores e aspectos • Este trabalho aborda a separação de interesses de LPS utilizando a Programação Orientada a Aspectos (POA). • O processo apresentado tem a finalidade de aumentar o reúso em linhas de produtos por meio da POA.
Desenvolvimento de LPS apoiado por geradores e aspectos Propõe-se que as features transversais implementadas em um determinado domínio sejam reusadas em diversas linhas de produtos. 29
Desenvolvimento de LPS apoiado por geradores e aspectos São utilizados como base os processos de engenharia de domínio e de engenharia de aplicações apresentados no trabalho de Shimabukuro (2006). Esses processos foram estendidos para apoiar os conceitos da nova abordagem proposta. 30
Conceitos Domínios-base, também denominados domínios específicos, representam a parte central do produto gerado e agrupam as features (obrigatórias ou não) que definem o negócio propriamente dito. Exemplo: Sistemas Hospitalares ou de Contabilidade. 31
Conceitos • Domínios-transversais agrupam features que encapsulam comportamentos genéricos (funcionais ou não-funcionais) de um interesse transversal referentes a vários domínios-base. • As features de um domínio transversal devem ser mais genéricas e possuir um alto grau de reúso em diferentes domínios-base. • Propõe-se que a combinação entre as features transversais e os domínios-base seja feita por meio de aspectos. • Exemplo: Persistência e Segurança.
Domínios-Base e Transversais Domínio Transversal T Produto T1 Produto T2 Domínio-base A Domínio-base B Produto A1 Produto A2 Produto B1
Conceitos • Ponto de junção abstrato (PJA) • São os elementos responsáveis pelo acoplamento entre as features transversais de um domínio transversal com os produtos de um domínio-base. • Ponto de junção pré-definido (PJP) • É um valor fixo para um PJA que pode ser definido pelo engenheiro de domínio de acordo com o domínio-base que é afetado pelo PJA.
Conceitos Instanciação do produto T1 Instanciação do produto A1 Combinação de T1 e A1 Produto T1 Produto T1 Produto T1 Ponto de Junção Concreto Ponto de JunçãoGenérico Ponto de JunçãoGenérico Produto A1 Produto A1 PJA de T1 35
Conceitos • Variabilidades funcionais • São variabilidades inerentes às regras de negócios do domínio e ditam as características que variam de um produto para outro da LPS. • Variabilidades de junção • São as variabilidades existentes nos domínios transversais que permitirão a combinação desse domínio com um ou mais domínios-base.
Conjuntos de Extensão • De acordo com o princípio da inconsciência (Filman e Friedman, 2000), a dependência entre um aspecto e o código-base deveria garantir que a aplicação desconheça a existência do código transversal. • No contexto deste trabalho, considera-se que o código-base pode ter consciência dos aspectos que atuam sobre ele
Conjuntos de Extensão • Existem situações em que se torna necessário realizar pequenos ajustes em um domínio-base para suportar a combinação com determinados domínios transversais. • O conceito de conjunto de extensão (CE) representa um grupo de adaptações na implementação de um domínio-base de acordo com os domínios transversais aplicados no momento da instanciação.
Desenvolvimento de LPS para Domínios-Base e Domínios Transversais • A seguir são apresentados processos de engenharia de domínio e engenharia de aplicações adaptados para a modelagem de LPS para domínios-base e domínios transversais. • Esses processos têm o foco voltado para a instanciação automatizada de produtos utilizando geradores de aplicações e especificações LMA.
Engenharia de Domínio • Foi utilizado como referência o processo proposto no trabalho de Shimabukuro (2006).
Engenharia de Domínio-Base • Deve-se indicar quais domínios transversais podem ser combinados (domínios compatíveis). • Pode ser necessário definir conjuntos de extensão e pontos de junção pré-definidos.
Engenharia de Domínio Transversal • Definição das variabilidades de junção na LMA do domínio. • Deve-se indicar os domínios-base compatíveis. • Pode ser necessário inserir CE’s e PJP’s no domínios-base compatíveis.
Engenharia de Aplicação Processo de engenharia de aplicação (Shimabukuro, 2006). 45
Engenharia de Aplicação • Novos produtos são definidos por meio da instanciação das LMA’s de seus respectivos domínios (Weiss e Lai, 1999). • Um produto específico pode ser composto a partir da combinação de mais de um domínio. Sendo um deles um domínio-base (domínio de aplicação) e os demais, domínios transversais.
Gerador de Aplicações Estendido Captor-AO
Gerador Captor-AO • O gerador de aplicações Captor-AO é uma extensão do gerador Captor que permite a composição de aplicações baseadas em vários domínios. • Torna possível a geração de aplicações formadas por features de um domínio-base e features de diferentes domínios transversais, desde que a união dessas features não produza conflitos no produto resultante.